201 lines
4.7 KiB
CSS
201 lines
4.7 KiB
CSS
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
@import url("chrome://global/skin/in-content/common.css");
|
|
|
|
:host {
|
|
display: block;
|
|
--shopping-card-border-color: light-dark(#f0f0f4, #52525e);
|
|
--shopping-card-border-radius: 8px;
|
|
--shopping-card-border-width: 1px;
|
|
--shopping-card-summary-border-radius: calc(var(--shopping-card-border-radius) - var(--shopping-card-border-width));
|
|
--shopping-card-padding: 12px;
|
|
border-radius: var(--shopping-card-border-radius);
|
|
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.shopping-card {
|
|
display: flex;
|
|
border: var(--shopping-card-border-width) solid var(--shopping-card-border-color);
|
|
border-radius: var(--shopping-card-border-radius);
|
|
background-color: var(--in-content-page-background);
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
gap: 8px;
|
|
padding: var(--shopping-card-padding);
|
|
position: relative;
|
|
}
|
|
|
|
/* For accordions, adjust padding and border so that focus outlines wrap around the summary. */
|
|
:host([type="accordion"]) > .shopping-card {
|
|
padding: 0;
|
|
|
|
summary {
|
|
padding: var(--shopping-card-padding);
|
|
border-radius: var(--shopping-card-summary-border-radius);
|
|
}
|
|
|
|
#content {
|
|
padding: 0 var(--shopping-card-padding) var(--shopping-card-padding);
|
|
}
|
|
|
|
> details[open] > summary {
|
|
border-radius: var(--shopping-card-summary-border-radius) var(--shopping-card-summary-border-radius) 0 0;
|
|
}
|
|
}
|
|
|
|
button {
|
|
margin: 0;
|
|
}
|
|
|
|
#shopping-details {
|
|
width: 100%;
|
|
}
|
|
|
|
#label-wrapper {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
width: 100%;
|
|
}
|
|
|
|
:host([type="accordion"]) #label-wrapper {
|
|
cursor: pointer;
|
|
position: relative;
|
|
|
|
& > #header {
|
|
/* 24px for the ghost button, 12px gap between
|
|
* text and button. */
|
|
margin-inline-end: 36px;
|
|
}
|
|
}
|
|
|
|
#header {
|
|
color: var(--in-content-text-color);
|
|
font-size: 1em;
|
|
margin: 0;
|
|
}
|
|
|
|
#content {
|
|
align-self: stretch;
|
|
}
|
|
|
|
details > summary {
|
|
list-style: none;
|
|
}
|
|
|
|
details > summary:focus-visible {
|
|
outline: var(--in-content-focus-outline);
|
|
}
|
|
|
|
.chevron-icon {
|
|
background-image: url("chrome://global/skin/icons/arrow-down.svg");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
color: var(--icon-color);
|
|
-moz-context-properties: fill;
|
|
fill: currentColor;
|
|
width: 24px;
|
|
height: 24px;
|
|
/* override some default button sizing styles */
|
|
min-width: 24px;
|
|
min-height: 24px;
|
|
padding: 0;
|
|
/* Abspos rather than flexbox so we don't influence the padding
|
|
* around the title.
|
|
*/
|
|
position: absolute;
|
|
top: calc(50% - var(--shopping-card-padding));
|
|
/* This approximates the top/bottom 'padding' gap created by the abspos
|
|
* above. It won't always be perfectly accurate, and that's OK. */
|
|
inset-inline-end: -2px;
|
|
}
|
|
|
|
details[open] .chevron-icon {
|
|
background-image: url("chrome://global/skin/icons/arrow-up.svg");
|
|
}
|
|
|
|
.show-more footer {
|
|
width: 100%;
|
|
background-color: var(--in-content-page-background);
|
|
box-shadow: 2px -10px 11px var(--in-content-page-background);
|
|
border-top: var(--shopping-card-border-width) solid var(--shopping-card-border-color);
|
|
border-radius: 0 0 var(--shopping-card-border-radius) var(--shopping-card-border-radius);
|
|
position: absolute;
|
|
bottom: 0;
|
|
text-align: center;
|
|
padding-block: 8px;
|
|
left: 0;
|
|
right: 0;
|
|
}
|
|
|
|
.show-more[expanded="false"] {
|
|
overflow: clip;
|
|
height: 200px;
|
|
}
|
|
|
|
:host(:not([showMoreButtonDisabled])) .show-more ::slotted(div) {
|
|
margin-block-end: 4rem;
|
|
}
|
|
|
|
:host([showMoreButtonDisabled]) footer {
|
|
display: none;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:host > .shopping-card {
|
|
background-color: #42414d;
|
|
}
|
|
|
|
.show-more footer {
|
|
background-color: #42414d;
|
|
box-shadow: 2px -10px 11px #42414d;
|
|
}
|
|
}
|
|
|
|
@media (prefers-contrast) {
|
|
/* Style accordion card like a dropdown button. */
|
|
:host([type="accordion"]) > .shopping-card {
|
|
border: var(--shopping-card-border-width) solid ButtonText;
|
|
|
|
summary {
|
|
background-color: var(--button-background-color);
|
|
color: ButtonText;
|
|
|
|
#label-wrapper {
|
|
color: inherit;
|
|
|
|
> :is(#header, .chevron-icon) {
|
|
color: inherit;
|
|
}
|
|
}
|
|
|
|
.chevron-icon {
|
|
background-color: transparent;
|
|
border: none;
|
|
}
|
|
|
|
&:hover {
|
|
background-color: SelectedItemText;
|
|
border-color: SelectedItem;
|
|
color: SelectedItem;
|
|
}
|
|
|
|
&:hover:active {
|
|
border-color: ButtonText;
|
|
}
|
|
}
|
|
|
|
details[open] {
|
|
border-color: var(--shopping-card-border-color);
|
|
|
|
summary {
|
|
border-block-end: var(--shopping-card-border-width) solid ButtonText;
|
|
}
|
|
}
|
|
}
|
|
}
|