166 lines
3.2 KiB
CSS
166 lines
3.2 KiB
CSS
@layer components {
|
|
.popup {
|
|
--panel-border-radius: 0.5em;
|
|
--panel-padding: var(--block-space);
|
|
--panel-size: auto;
|
|
|
|
inline-size: auto;
|
|
inset: 0 auto auto 50%;
|
|
min-inline-size: min(25ch, 90vw);
|
|
max-inline-size: min(50ch, 90vw);
|
|
position: absolute;
|
|
transform: translateX(-50%);
|
|
z-index: var(--z-popup);
|
|
|
|
&[open] {
|
|
display: flex;
|
|
}
|
|
|
|
#header:has(&) {
|
|
max-inline-size: 100vw;
|
|
position: relative;
|
|
z-index: 5;
|
|
|
|
.popup {
|
|
min-inline-size: 40ch;
|
|
max-inline-size: 40ch;
|
|
}
|
|
}
|
|
|
|
.card & {
|
|
min-inline-size: 25ch;
|
|
max-inline-size: 25ch;
|
|
}
|
|
}
|
|
|
|
.popup__group {
|
|
background: var(--color-ink-lightest);
|
|
max-inline-size: 100%;
|
|
padding-inline: var(--inline-space);
|
|
|
|
.btn {
|
|
--btn-background: transparent;
|
|
}
|
|
|
|
@media (any-hover: hover) {
|
|
&:hover {
|
|
background: var(--color-selected);
|
|
}
|
|
}
|
|
|
|
&:has(:focus-visible) {
|
|
background: var(--color-selected-dark);
|
|
|
|
.popup__item {
|
|
--outline-size: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
.popup__item {
|
|
--btn-background: var(--color-ink-lightest);
|
|
--btn-border-radius: 0.3em;
|
|
--btn-border-size: 0;
|
|
--btn-font-weight: 500;
|
|
--btn-padding: var(--inline-space-half) 0 var(--inline-space-half) var(--inline-space);
|
|
--hover-size: 0;
|
|
--outline-color: transparent;
|
|
|
|
flex: 1 1 auto;
|
|
justify-content: start;
|
|
max-inline-size: 100%;
|
|
text-align: start;
|
|
|
|
@media (any-hover: hover) {
|
|
&:where(:not(:active):hover) {
|
|
--btn-background: var(--color-selected);
|
|
}
|
|
}
|
|
|
|
&:has(input:checked) {
|
|
--btn-background: var(--color-ink-lightest);
|
|
--btn-color: var(--color-ink);
|
|
|
|
.icon {
|
|
&.checked {
|
|
block-size: 1em;
|
|
display: block;
|
|
inline-size: 1em;
|
|
margin-inline-end: var(--inline-space);
|
|
}
|
|
}
|
|
|
|
@media (any-hover: hover) {
|
|
&:where(:not(:active):hover) {
|
|
--btn-background: var(--color-selected);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.popup__list {
|
|
max-block-size: 40dvh;
|
|
overflow: auto;
|
|
row-gap: 2px;
|
|
}
|
|
|
|
.popup__new {
|
|
--btn-icon-size: 1em;
|
|
|
|
.icon {
|
|
margin-inline-end: 0.5em;
|
|
}
|
|
|
|
padding-inline-start: var(--inline-space-half);
|
|
}
|
|
|
|
.popup__title {
|
|
font-weight: 800;
|
|
}
|
|
}
|
|
|
|
.popup--animated {
|
|
--backdrop-speed: 150ms;
|
|
--panel-size: max-content;
|
|
--speed: 150ms;
|
|
|
|
opacity: 0;
|
|
transform: scale(0.2) translateX(-50%);
|
|
transform-origin: top left;
|
|
transition:
|
|
display var(--speed) allow-discrete,
|
|
opacity var(--speed),
|
|
overlay var(--speed) allow-discrete,
|
|
transform var(--speed);
|
|
|
|
&::backdrop {
|
|
background-color: var(--color-always-black);
|
|
opacity: 0;
|
|
transform: scale(1);
|
|
transition:
|
|
display var(--backdrop-speed) allow-discrete,
|
|
opacity var(--backdrop-speed),
|
|
overlay var(--backdrop-speed) allow-discrete;
|
|
}
|
|
|
|
&[open] {
|
|
opacity: 1;
|
|
transform: scale(1) translateX(-50%);
|
|
|
|
&::backdrop {
|
|
opacity: 0.5;
|
|
}
|
|
}
|
|
|
|
@starting-style {
|
|
&[open] {
|
|
opacity: 0;
|
|
transform: scale(0.2) translateX(-50%);
|
|
}
|
|
|
|
&[open]::backdrop {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
}
|