blob: 86a441a98dce59c98fd6aff847cfec96f1f1d18f [file]
/* Settings → unified SettingsSelect chrome. Relocated from settings-select.css — issue #546 PR1. */
/* PR round-AB-shared-select (yuejing 2026-06-25): the Plan Reminder
delivery select and the 5 Settings selects used to ship two slightly
different wrappers — different option shapes, different selected
trigger renderers, different CSS recipes. They are now one
`SettingsSelect` primitive in `@maka/ui` (see kenji styles inventory
the original CSS inventory). These
`.settingsSelect*` rules pin the unified chrome. */
.settingsSelectTrigger {
min-width: 0;
height: var(--h-control-lg);
justify-content: space-between;
border-radius: var(--radius-control);
font-size: var(--font-size-ui);
font-weight: var(--font-weight-semibold);
}
.settingsSelectPositioner {
z-index: var(--z-overlay);
outline: none;
}
.settingsSelectPopup {
min-width: var(--anchor-width);
}
/* The icon slot lines up with the text via inline-flex; the icon tile
is a fixed 16x16 to absorb Iconify's size: '100%' rendering of the
simple-icons svg without pushing option row height around. */
.settingsSelectOption {
display: inline-flex;
align-items: center;
gap: var(--space-2);
min-width: 0;
}
.settingsSelectOptionIcon {
flex: 0 0 auto;
width: 16px;
height: 16px;
display: inline-flex;
align-items: center;
justify-content: center;
}
/* Grouped menu form of the settings-select family (`SettingsSelectGroups`):
provider groups, each heading carrying a brand mark, over the shared
checkmark rows. The chat model pickers render this body inside their own
pill trigger; any future grouped select reuses it. Geometry traces to the
former bespoke model-switcher menu (max-content hug, 32px rows), now folded
into this one family instead of a parallel `.maka-model-switcher-*` recipe. */
.settingsSelectMenuPopup {
width: max-content;
min-width: 200px;
max-width: min(320px, calc(100vw - 32px));
max-height: min(420px, var(--available-height));
/* The popup itself is the scroll container: the row list can exceed the cap
when a provider exposes many models, and the inner SelectList's
`--available-height` ceiling is too tall to engage here, so without this
the overflow rows spill out below the rounded box. */
overflow-y: auto;
overscroll-behavior: contain;
padding: var(--space-2);
border-radius: var(--radius-modal);
background: var(--background);
box-shadow: var(--shadow-maka-panel);
}
.settingsSelectMenuPopup [role="option"] {
min-height: var(--h-control-lg);
align-items: center;
border-radius: var(--radius-surface);
padding: var(--space-1-5) var(--space-3);
}
.settingsSelectMenuOption {
display: block;
color: var(--foreground);
font-size: var(--font-size-ui); /* text-sm on the 15px root — same scale as headings */
font-weight: var(--font-weight-medium);
line-height: var(--leading-snug);
}
/* #1362: inside the TRIGGER only (popup options keep their full label), a
selected label longer than the squeezed trigger ellipsizes instead of
bleeding past the button box. */
.settingsSelectTrigger .settingsSelectMenuOption {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* Heading: same 13px as the rows; hierarchy comes from weight 500 + muted ink
+ the brand mark, not a different size or an uppercase eyebrow. The mark sits
in the 1rem leading column so it lines up under each row's selected check. */
.settingsSelectMenuPopup .settingsSelectMenuGroupLabel {
display: grid;
grid-template-columns: 1rem 1fr;
align-items: center;
gap: var(--space-2);
padding: var(--space-1-5) var(--space-3) var(--space-1);
font-size: var(--font-size-ui);
font-weight: var(--font-weight-medium);
line-height: var(--leading-snug);
color: var(--muted-foreground);
}
.settingsSelectMenuGroupLogo {
justify-self: center;
display: inline-flex;
align-items: center;
justify-content: center;
width: 1.1em;
height: 1.1em;
color: var(--foreground); /* monochrome marks read full-ink, not muted */
}
.settingsSelectMenuGroupLogo svg {
width: 100%;
height: 100%;
}
/* Callers share one renderProviderMark between the trigger (where the 32px
plated avatar is right) and this popup's 1rem label slot (where that plate
gets squeezed by the grid column into a tall pill that overlaps the
heading). The slot normalizes whatever mark it is handed: fill the slot,
no plate chrome. Fixes today's ProviderLogo callers and any future ones. */
.settingsSelectMenuPopup .settingsSelectMenuGroupLogo .providerLogo {
width: 100%;
height: 100%;
background: none;
box-shadow: none;
border-radius: 0;
}
.settingsSelectMenuPopup .settingsSelectMenuGroupLogo .providerLogo svg,
.settingsSelectMenuPopup .settingsSelectMenuGroupLogo .providerLogo img,
.settingsSelectMenuPopup .settingsSelectMenuGroupLogo .providerLogo .providerAssetMask {
width: 100%;
height: 100%;
}