Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,332 @@
/**
* FIXME/bug 1060293: This is entirely copied and pasted from
* shared/style/buttons.css because the selectors in there are overly broad and
* had to be made more specific. We should remove this file and use that one
* instead.
*/
/* ----------------------------------
* Buttons
* ---------------------------------- */
.activity::-moz-focus-inner {
border: none;
outline: none;
}
.activity {
font-family: sans-serif;
font-style: italic;
width: 100%;
height: 4rem;
margin: 0 0 1rem;
padding: 0 1.2rem;
box-sizing: border-box;
/*display: inline-block;*/
vertical-align: middle;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
background: #d8d8d8;
border: none;
border-radius: 2rem;
font-weight: normal;
font-size: 1.6rem;
line-height: 4rem;
color: #333;
text-align: center;
text-decoration: none;
outline: none;
}
/* Recommend */
.activity.recommend {
background-color: #00caf2;
color: #fff;
}
/* Danger */
.danger.activity {
background-color: #e51e1e;
color: #fff;
}
/* Pressed */
.activity:active {
background-color: #b2f2ff;
color: #fff;
}
/* Icons */
.activity[data-icon] {
position: relative;
}
.activity[data-icon]:before {
position: absolute;
top: 50%;
margin-top: -1.5rem;
offset-inline-end: 1.5rem;
line-height: 3rem;
}
.activity[data-icon]:active:before {
color: #fff;
}
/* Pressed with dark skin */
.skin-dark .activity:active {
background-color: #00aacc;
}
/* Disabled */
.activity[aria-disabled="true"] {
background-color: rgba(0,0,0,0.05);
color: #c7c7c7;
pointer-events: none;
}
.activity[aria-disabled="true"].recommend {
background-color: #97cbd5;
color: rgba(255,255,255,0.5);
}
.activity[aria-disabled="true"].danger {
background-color: #eb7474;
color: rgba(255,255,255,0.5);
}
/* Disabled with dark background */
.skin-dark .activity[aria-disabled="true"] {
background-color: #565656;
color: rgba(255,255,255,0.4);
}
.skin-dark .activity[aria-disabled="true"].recommend {
background-color: #006579;
}
.skin-dark .activity[aria-disabled="true"].danger {
background-color: #730f0f;
}
.activity[aria-disabled="true"]::-moz-selection {
-moz-user-select: none;
}
/* ----------------------------------
* Buttons inside lists
* ---------------------------------- */
li .activity {
position: relative;
text-align: start;
border: 0.1rem solid #c7c7c7;
background: rgba(0,0,0,0.05);
margin: 0 0 1rem;
overflow: hidden;
border-radius: 0;
/*display: flex;*/
height: auto;
min-height: 4rem;
text-overflow: initial;
white-space: normal;
line-height: 2rem;
padding: 1rem 1.2rem;
}
/* Press */
li .activity:active:after {
opacity: 0;
}
/* Disabled */
li .activity[aria-disabled="true"] {
opacity: 0.5;
}
/* Icons */
li .activity.icon {
padding-inline-end: 4rem;
}
li .activity.icon:before {
content: "";
width: 3rem;
height: 3rem;
position: absolute;
top: 50%;
offset-inline-end: 0.5rem;
margin-top: -1.5rem;
background: transparent no-repeat center center / 100% auto;
pointer-events: none;
}
li .activity.icon-view:active {
background-color: #b2f2ff;
}
li .activity.icon-view:before {
background-size: 3rem;
offset-inline-end: 0;
}
li .activity[data-icon]:before {
offset-inline-end: 1rem;
}
li .activity[data-icon="expand"]:before {
color: #00aac5;
top: unset;
bottom: 0;
}
li .activity[data-icon="expand"][aria-disabled="true"]:before {
color: #A9A9A9;
}
li .activity[data-icon="forward"]:before {
color: #686f72;
}
/* Getting more space for text, as icon is shorter */
li .activity.icon-dialog {
padding-inline-end: 3rem;
}
li .activity.icon-dialog:before {
width: 0;
height: 0;
top: auto;
offset-inline-end: 0.8rem;
bottom: 0.5rem;
border-top: 0.7rem solid transparent;
border-bottom: 0.7rem solid transparent;
border-inline-start: 0.7rem solid #00aac5;
transform: rotate(45deg);
z-index: 1;
}
li .activity[aria-disabled="true"].icon-dialog:before {
border-inline-start: 0.7rem solid #a9a9a9;
}
/* ----------------------------------
* Theme: Dark
* ---------------------------------- */
.skin-dark li .activity {
background-color: #454545;
border: none;
color: #fff;
font-weight: normal;
}
.skin-dark li .activity:active {
background-color: #00aacc;
}
.skin-dark li .activity.icon-view:active {
background-color: #00aacc;
}
.skin-dark li .activity.icon-dialog:active:before {
border-inline-start: 0.7rem solid #b2f2ff;
}
.skin-dark li .activity[aria-disabled="true"] {
background-color: #454545;
opacity: 0.5;
}
/* Inputs inside of .button */
body[role="application"] .activity input {
border: 0;
background: none;
}
/* select */
select {
width: 100%;
box-sizing: border-box;
font-family: sans-serif;
font-style: italic;
font-size: 1.6rem;
color: #333;
margin: 0 0 1rem;
padding: 0;
padding-inline-start: 1.1rem;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
height: 4rem;
border: 0.1rem solid #c7c7c7;
background: rgba(0,0,0,0.05);
}
.skin-dark select {
background-color: rgba(87, 87, 87, 0.8);
border: none;
color: #fff;
}
/* remove dotted outline */
select:-moz-focusring {
color: transparent;
text-shadow: 0 0 0 #333;
}
.skin-dark select:-moz-focusring {
text-shadow: 0 0 0 #fff;
}
/* Hides dropdown arrow until bug #649849 is fixed */
.activity.icon select,
.activity[data-icon] select {
position: absolute;
top: -0.6rem;
offset-inline-start: 0;
width: calc(100% + 3rem);
height: 100%;
margin: 0;
padding: 0;
padding-inline-end: 5rem;
text-indent: 0;
font-weight: 400;
font-size: 1.7rem;
/*
The select element uses the text color to determine the color of the outline.
We put a text shadow with needed offset and no blur, so that replaces the text.
*/
color: rgba(0,0,0,0);
border: none;
background: none;
}
html[dir="ltr"] .activity.icon select,
html[dir="ltr"] .activity[data-icon] select {
text-shadow: 1rem 0.5rem 0 #333;
}
html[dir="rtl"] .activity.icon select,
html[dir="rtl"] .activity[data-icon] select {
text-shadow: -1rem 0.5rem 0 #333;
}
.activity.icon select option,
.activity[data-icon] select option {
color: #000;
border: 0;
padding: 0.6rem 1.3rem;
text-shadow: 0 0 0 rgba(0,0,0,0);
}
.activity.icon-dialog {
overflow: hidden;
}
html[dir="ltr"] .skin-dark .activity.icon select,
html[dir="ltr"] .skin-dark .activity[data-icon] select {
text-shadow: 1rem 0.5rem 0 #fff;
}
html[dir="rtl"] .skin-dark .activity.icon select,
html[dir="rtl"] .skin-dark .activity[data-icon] select {
text-shadow: -1rem 0.5rem 0 #fff;
}

View file

@ -0,0 +1,78 @@
#call-info-view {
position: absolute;
top: 0;
background: white;
width: 100vw;
height: calc(100vh - 4.5rem);
color: #333;
}
#call-info-view p {
margin: 0;
}
.ci__wrapper {
padding: 1.4rem 1.5rem 0;
}
.ci__calls-wrapper {
padding: 0 0.9rem 1.4rem;
padding-inline-start: 1.5rem;
margin-bottom: 1.6rem;
border-bottom: 1px solid #e7e7e7;
}
.ci__group-info {
display: flex;
font-size: 1.6rem;
font-weight: 500;
}
.ci__grow {
flex-grow: 1;
}
.call-duration {
display: flex;
margin-top: 1rem;
font-size: 1.4rem;
}
.cd__duration {
text-align: end;
}
.ci__direction-icon {
width: 2rem;
height: 2rem;
background-size: cover;
}
.icon-outgoing {
background-image: url(images/call_info/callinfo_ic_outgoing.png);
}
.icon-incoming {
background-image: url(images/call_info/callinfo_ic_incoming.png);
}
.icon-missed {
background-image: url(images/call_info/callinfo_ic_missed.png);
}
/**
* As <gaia-header> does not support <h1 dir="auto"> children, a <bdi> element
* must be nested and specific ellipsis rules must be applied.
*
* Horizontal padding must be applied in order to:
* - not overlap the [action="back"] button
* - keep the title centered
* (the magic 50px value corresponds to the size of the "back" button).
*/
#call-info-title {
display: block;
text-overflow: ellipsis;
overflow: hidden;
padding-left: 50px;
padding-right: 50px;
}

View file

@ -0,0 +1,298 @@
/* Overriding BB styles for headers */
section[role="region"] > header:first-child .icon {
pointer-events: auto;
}
/* Overriding BB styles for edit mode */
form[role="dialog"][data-type="edit"] gaia-header {
pointer-events: auto;
}
#call-log-container[data-type="list"] section {
background: #fff;
}
#sticky {
position: absolute;
/* The sticky element is positioned at the beginning of the list. */
top: 0;
/* The width is not 100% so the scrollbar is visible. */
width: calc(100% - 1.5rem);
/* The height needs to be kept in sync with the header height. */
height: 3.1rem;
/* Those style will affect the bagroundImage: -moz-element. */
background-repeat: no-repeat;
}
html[dir="ltr"] #sticky { background-position: left 1.5rem top 0; }
html[dir="rtl"] #sticky { background-position: right 1.5rem top 0; }
#call-log-container[data-type="list"] header {
background: #fff;
}
/* Override Building Block styles for lists */
#call-log-container[data-type="list"] {
padding: 0;
}
#call-log-container[data-type="list"] header {
margin: 0 1.5rem;
}
#call-log-container[data-type="list"] ol {
padding: 0 1.5rem;
/* Bug 967880 - [Call Log] Background doesn't scroll with the logs causing
* expensive over-invalidation.
*/
background-color: white;
}
#call-log-container[data-type="list"] li {
height: 6rem;
box-sizing: border-box;
}
/* For preventig active status with withheld number */
#call-log-container[data-type="list"] li[data-phone-number=""]:after,
#call-log-container[data-type="list"] li[data-phone-number=""]:active:after {
background-color: transparent;
}
#call-log-container[data-type="list"] li a p {
line-height: 2.4rem;
}
#call-log-container[data-type="list"] li a p:nth-last-of-type(3) {
padding: 0;
}
button[disabled],
input[type="text"][disabled],
a.bb-button[disabled],
a.bb-button[disabled] * {
pointer-events: none;
}
input[type="text"][disabled],
a.bb-button[disabled] {
opacity: 0.3;
}
li, ol, ul {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
ol, ul {
list-style: none;
}
.hide {
display: none;
}
.view-body {
color: black;
height: calc(100% - 9.1rem);
position: absolute;
overflow: hidden;
width: 100%;
}
.view-body-inner {
height: 100%;
overflow: auto;
}
.view-body-inner ol {
overflow: hidden;
}
.icon-container {
height: 100%;
width: 5rem;
}
html[dir="ltr"] .icon-container { float: left; }
html[dir="rtl"] .icon-container { float: right; }
.icon-incoming,
.icon-outgoing,
.icon-missed {
background-size: 3rem;
}
/* .first-sim and .second-sim classes should only affect the style
* if the .dual-sim class is set on the container */
[data-type="list"] aside.icon.icon-incoming {
background-image: url('images/CallLog_30x30_incoming.png');
}
[data-type="list"].dual-sim aside.icon.icon-incoming.first-sim {
background-image: url('images/CallLog_30x30_incoming-first-sim.png');
}
[data-type="list"].dual-sim aside.icon.icon-incoming.second-sim {
background-image: url('images/CallLog_30x30_incoming-second-sim.png');
}
[data-type="list"] aside.icon.icon-outgoing {
background-image: url('images/CallLog_30x30_outgoing.png');
}
[data-type="list"].dual-sim aside.icon.icon-outgoing.first-sim {
background-image: url('images/CallLog_30x30_outgoing-first-sim.png');
}
[data-type="list"].dual-sim aside.icon.icon-outgoing.second-sim {
background-image: url('images/CallLog_30x30_outgoing-second-sim.png');
}
[data-type="list"] aside.icon.icon-missed {
background-image: url('images/CallLog_30x30_missed.png');
}
[data-type="list"].dual-sim aside.icon.icon-missed.first-sim {
background-image: url('images/CallLog_30x30_missed-first-sim.png');
}
[data-type="list"].dual-sim aside.icon.icon-missed.second-sim {
background-image: url('images/CallLog_30x30_missed-second-sim.png');
}
.log-item * {
pointer-events: none;
}
.log-item .primary-info {
display: flex;
}
/* Decrease padding defined by BB styles to compensate increased line-height */
.log-item .primary-info:first-of-type {
padding-top: 0.8rem;
}
.log-item a > p {
width: calc(100% - 4rem);
}
.log-item.missed-call .primary-info {
color: #bc1515;
}
.log-item .primary-info-main {
min-width: 0;
}
.log-item .primary-info-main bdi {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.log-item .retry-count {
margin-inline-start: 0.5rem;
}
.log-item .additional-info {
display: inline-flex;
justify-content: space-between;
margin-top: -0.4rem;
}
.log-item .type-carrier {
overflow: hidden;
text-overflow: ellipsis;
}
.log-item .call-time {
margin-inline-start: 0.5rem;
}
.log-item .pack-checkbox {
visibility: hidden;
}
/* Edit mode state */
.recents-edit form[role="dialog"][data-type="edit"] header,
.recents-edit form[role="dialog"][data-type="edit"] > menu {
transform: translateY(0);
}
html[dir="ltr"] .recents-edit .pack-checkbox.call-log-selection {
transform: translateX(4rem);
}
html[dir="rtl"] .recents-edit .pack-checkbox.call-log-selection {
transform: translateX(-4rem);
}
.recents-edit .log-item a {
visibility: hidden;
}
html[dir="ltr"] .recents-edit .log-item a { transform: translateX(3rem); }
html[dir="rtl"] .recents-edit .log-item a { transform: translateX(-3rem); }
.recents-edit .log-item a > aside,
.recents-edit .log-item a > p {
visibility: visible;
}
.recents-edit .log-item a > p {
width: calc(100% - 6.5rem);
}
.recents-edit .log-item .pack-checkbox {
pointer-events: auto;
visibility: visible;
}
/*
No result container
*/
#no-result-container {
background: url('images/ComLog_200x200_clock.png') fixed no-repeat center / 20rem;
height: 100%;
margin: 0 1.5rem;
}
#no-result-message {
position: relative;
top: 11.5rem;
border-top: .1rem solid rgba(96,96,96,.5);
padding: 1rem 1.5rem;
}
#no-result-message > p {
text-align: start;
line-height: 3rem;
font-size: 2.2rem;
font-weight: 300;
color: #606060;
margin: 0;
}
.recents-edit #edit-mode {
display: block;
}
.recents-edit .recents-filter-container {
display: none;
}
.recents-edit .view-body {
height: calc(100% - 7.6rem);
}
.filter .log-item:not(.missed-call) {
display: none;
}
.filter .groupFiltered {
display: none;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 752 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 972 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 998 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,009 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 939 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 943 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,004 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,015 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 615 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

View file

@ -0,0 +1,49 @@
#mmi-screen {
position: absolute;
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
background: white;
color: black;
z-index: 2;
}
#mmi-screen[hidden] {
display: none;
}
#mmi-container {
flex: 1;
padding: 0 3rem;
overflow: auto;
}
#message {
font-size: 2rem;
padding: 2rem 0;
white-space: pre-line;
word-wrap: break-word;
}
#response {
display: none;
padding: 1.5rem 1.5rem 0.5rem;
border-top: 0.1rem solid #E7E7E7;
}
.responseForm #response {
display: block;
}
#response-text[disabled] {
opacity: 0.8;
}
/*
Loading screen
*/
.hide {
display: none;
}

View file

@ -0,0 +1,33 @@
.suggestion-bar {
display: flex;
margin-top: -4.5rem;
height: 4.5rem;
font-size: 1.7rem;
position: absolute;
width: 100%;
color: #033B37;
}
.suggestion-count {
width: 5.5rem;
box-sizing: border-box;
border-inline-start: 1px solid rgba(255,255,255,0.2);
padding-inline-end: 2rem;
padding-inline-start: 1rem;
line-height: 4.5rem;
text-align: center;
}
.suggestion-count.more {
background-image: url(/dialer/style/images/suggestion/actionicon_dialer_more.png);
background-repeat: no-repeat;
background-size: 3rem;
}
html[dir="ltr"] .suggestion-count.more { background-position: right 0 bottom 0.8rem; }
html[dir="rtl"] .suggestion-count.more { background-position: left 0 bottom 0.8rem; }
.suggestion-bar .contact-item:active,
.suggestion-bar .suggestion-count:active {
background-color: #94eee9;
transition: background-color 0.2s ease;
}

View file

@ -0,0 +1,83 @@
/* Structure for toolbar*/
.icon-recents {
background-image: url("images/recents.png");
}
.icon-contacts {
background-image: url("images/contacts.png");
}
.icon-keypad {
background-image: url("images/dialpad.png");
}
/* Making lazy loading look nice */
#contacts-view .bb-tabpanel,
#recents-view.hidden .bb-tabpanel {
background-color: white;
}
#contacts-view .bb-tabpanel:before,
#recents-view.hidden .bb-tabpanel:before {
position: absolute;
left: 0;
right: 0;
height: 5rem;
background-color: var(--header-background);
content: "";
}
#iframe-contacts-container {
overflow: hidden;
}
#iframe-contacts {
position: absolute;
}
#recents-view.hidden .bb-tabpanel section {
display: none;
}
.no-opacity {
opacity: 0 !important;
}
/* For showing/hiding navbar */
#views:before {
transform: translateX(0);
}
#views.hide-toolbar:before {
transform: translateX(100%);
}
#views > li > .icon {
z-index: 2;
}
#views.hide-toolbar > li {
background: none;
pointer-events: none;
}
#views.hide-toolbar > li:before,
#views.hide-toolbar > li > .icon {
transform: translateY(100%);
visibility: hidden;
}
#views.hide-toolbar #iframe-contacts-container {
height: 100%;
}
#views .bb-tabpanel {
pointer-events: all;
}
#contacts-view .bb-tabpanel {
height: calc(100% - 4.5rem);
z-index: 1;
}