You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/src/uix/eidos/components/stepper/stepper.css

222 lines
6.8 KiB

[data-stepper] {
--_stepper-gap: var(--stepper-gap-md);
--_stepper-indicator-size: var(--stepper-indicator-size-md);
--_stepper-font-size: var(--stepper-font-size-md);
feat(theming+soma): media-player Batch-4 (SOM-4) + THM-2 shared-palette rollout to 14 surfaces media-player Batch-4 (closes SOM-4): the 10 sub-parts migrate to renderProps() (35 attr-dup hits -> 0). Register the sources the morfo reads (label propRef, on stateRef, direction/type) so renderProps emits type/role/aria-*/data-state; keep only contract-only soma-owned attrs. Pin the soma-attr-audit ceiling to 0. THM-2 rollout - collapse each per-component palette cascade into the shared per-instance layer (size win, behavior-preserving for roles, adds the 33 scales): - Rename palette tokens to canonical _palette-{slot} + route via the presence-guarded forward: tags-input, stepper, badge, card, select (parts-aware trigger+content), file-upload, editable, tag-group. - Extend the shared vocabulary with alpha surface(a2)/surface-hover(a3) slots (soft variant of variant-aware recipes) and hover(4) - the latter also fixes Toggle's latent scale-hover. - tag-group: variant-aware migration (solid/outline -> canonical, soft -> alpha surface; merge outline-fg into text, prune orphans). - toggle-group: replace the 4-role cross-recipe composition with a hand-authored presence-scoped route to the shared layer (the composition DSL can't presence-scope); covers roles + 33 scales. - Widen color to ComponentColor (roles + 33 scales) where arbitrary color is meaningful: badge, tag-group, tags-input, toggle-group, and add the scale picker to their demos. Semantic controls stay restricted. Verified end-to-end with the REAL components (drive the demo color control -> the component emits data-color -> the shared layer resolves the exact scale). Gates: recipe-css-contract/config/contracts/ soma-attr-audit/media-player suites green; 0 orphan tokens. avatar remains for a focused pass: its variant-resolved matrix and badge sub-part don't fit a mechanical migration. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
/* `--_stepper-palette-*` private tokens are TSC-emitted from
* `lib/recipes/base.ts > stepper._palette-*` with the per-color cascade;
* the THM-2 shared-layer forward routes them to `color="teal"` + 33 scales. */
display: grid;
gap: var(--_stepper-gap);
min-inline-size: 0;
font-family: var(--stepper-font-family);
font-size: var(--_stepper-font-size);
line-height: var(--stepper-line-height);
color: var(--stepper-color);
}
[data-stepper][data-size='sm'] {
--_stepper-gap: var(--stepper-gap-sm);
--_stepper-indicator-size: var(--stepper-indicator-size-sm);
--_stepper-font-size: var(--stepper-font-size-sm);
}
[data-stepper][data-size='lg'] {
--_stepper-gap: var(--stepper-gap-lg);
--_stepper-indicator-size: var(--stepper-indicator-size-lg);
--_stepper-font-size: var(--stepper-font-size-lg);
}
[data-stepper-list] {
display: flex;
align-items: stretch;
gap: var(--stepper-list-gap);
padding: 0;
margin: 0;
list-style: none;
}
[data-stepper-list][data-orientation='vertical'] {
flex-direction: column;
}
[data-stepper-item] {
display: grid;
grid-template-columns: auto minmax(var(--stepper-separator-min-size), 1fr);
align-items: center;
gap: var(--stepper-item-gap);
min-inline-size: 0;
}
[data-stepper-item][data-orientation='vertical'] {
grid-template-columns: auto minmax(0, 1fr);
grid-template-rows: auto minmax(var(--stepper-separator-min-size), 1fr);
align-items: start;
}
[data-stepper-trigger] {
display: inline-flex;
align-items: center;
gap: var(--stepper-trigger-gap);
min-inline-size: 0;
feat(audit): component re-audit + fixes P0–P5 (P4 complete, P5 in progress) Re-audit of the whole component catalog at pilot depth (91 fichas + the checkpoint verdicts in docs/audit/components/) and the executed fix packages. - P0–P3: doctrine (sema participation, CANON §3 intent, component-guide §5 + API naming, §32 outline), guards (morfo-vocabulary-check S10/S11d, component-audit A-3.1/A-1.4/S9, eidos-lint classHooks), morfo contracts (role=application removed ×4, aria-selected off the Day, drp translationRef, field data-state prune, pin-input commit-set, media-player renames), 13 new sema packs + 12 morfos family-default → pack. - P4 (N1–N10) COMPLETE: selectionMode (select/combobox/toggle-group/calendar); onValueCommit terminal-callback norm (pin-input/search/password/textarea + date/time/color-field add); typed validation reason + onInvalid (tags-input, css-field); index/onIndexChange (carousel); deselectable; openDelay/ groupSkipDelay; allowCustomValue; defaultValue prune. - P5 (in progress): S1 class-hooks codemod (22 hooks → data-attrs across cropper/button/image-picker/toggle/image-adjustments); S5 outline remnant in field.css; depth pass (data-depth=overlay on tooltip/toast/float-panel); touch-rows (--touch-target token, decoupled ::before hit-slop, area-not-visual, 44 AAA). S6 (Field composition) + S8 (calendar-surface) pending. Verification: errors-outside-(alpha|words|palabras|chronos) == 59 (baseline); morfo-vocabulary-check exit 0; eidos-lint class-hooks/invalid 0 on touched components; per-component vitest suites green. Handoff + remaining plan: docs/process/continue-audit-fixes-2026-07.md Excluded (broken by the N1 rename, left broken per user decision, not staged): words/**, palabras/**, chronos, web/routes/alpha/**. Reconciliation pending: the touch-rows ::before for checkbox/switch reverses changelog §37's earlier pseudo-element rejection (WCAG-overlap) that had routed markers to a labeled-row/Field task — flagged for the user in the handoff. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
padding-block: var(--stepper-trigger-padding-block);
padding-inline: var(--stepper-trigger-padding-inline);
border: var(--stepper-trigger-border-width) solid transparent;
border-radius: var(--stepper-trigger-radius);
background: transparent;
color: var(--stepper-trigger-color);
font: inherit;
text-align: start;
cursor: pointer;
outline: none;
transition:
background var(--stepper-transition-duration) var(--stepper-transition-ease),
border-color var(--stepper-transition-duration) var(--stepper-transition-ease),
color var(--stepper-transition-duration) var(--stepper-transition-ease),
box-shadow var(--stepper-transition-duration) var(--stepper-transition-ease);
}
[data-stepper-trigger]:hover:not([data-disabled]) {
background-image: linear-gradient(var(--state-hover), var(--state-hover));
color: var(--stepper-trigger-color-hover);
}
[data-stepper-trigger]:focus-visible {
fix(eidos): component-coherence audit FASE 2 — focus-ring, fields, segments, langs, API nits Bundles the uncommitted audit work on this branch (active-uix): - DIM 5A: focus-ring unified to `outline` across the control/field set (kills ~18 box-shadow rings; closes forced-colors a11y). NOTE: spin-field + drawer-close orphan-token loose ends from this migration still trip the eidos contract test — to clean when that migration settles. - DIM 5D: field/input backgrounds homogenized to surface-default; list-surface padding recalibrated 2/4/6/8/10; menu-dial internal vars privatized. - DIM 5E: date/time/color-field + date-range-picker segments delegate the active state to the shared field-segment-state layer; the input transition is reduced to `background` only so the focus border no longer flickers on keyboard increment (border-color is now instant; the ring is an outline). - Langs (cero-hardcodes): IconButton-cascade wrappers (carousel/combobox/ tree-grid/table/search-field/banner) + onion-menu + cropper + time-picker day-period now route aria-labels through morfo langs instead of hardcoded English (the hardcode was overriding soma's already-resolved label). Fixes 2 contract divergences (combobox Clear->Clear value, table toggle label). - DIM 5B: code-block/kbd variants aliased to ControlVariant (no duplicate literals); image-picker default size sm->md. Excludes words/palabras/chronos and the metrics/demos tracks (separate work). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
outline: var(--focus-ring-width) solid var(--focus-ring-color);
outline-offset: 0;
}
[data-stepper-indicator] {
display: inline-flex;
align-items: center;
justify-content: center;
flex: 0 0 auto;
inline-size: var(--_stepper-indicator-size);
block-size: var(--_stepper-indicator-size);
border: var(--stepper-indicator-border-width) solid var(--stepper-indicator-border);
border-radius: var(--stepper-indicator-radius);
background: var(--stepper-indicator-bg);
color: var(--stepper-indicator-color);
font-weight: var(--stepper-indicator-font-weight);
}
[data-stepper-trigger][data-state='current'] [data-stepper-indicator],
[data-stepper-indicator][data-state='current'] {
feat(theming+soma): media-player Batch-4 (SOM-4) + THM-2 shared-palette rollout to 14 surfaces media-player Batch-4 (closes SOM-4): the 10 sub-parts migrate to renderProps() (35 attr-dup hits -> 0). Register the sources the morfo reads (label propRef, on stateRef, direction/type) so renderProps emits type/role/aria-*/data-state; keep only contract-only soma-owned attrs. Pin the soma-attr-audit ceiling to 0. THM-2 rollout - collapse each per-component palette cascade into the shared per-instance layer (size win, behavior-preserving for roles, adds the 33 scales): - Rename palette tokens to canonical _palette-{slot} + route via the presence-guarded forward: tags-input, stepper, badge, card, select (parts-aware trigger+content), file-upload, editable, tag-group. - Extend the shared vocabulary with alpha surface(a2)/surface-hover(a3) slots (soft variant of variant-aware recipes) and hover(4) - the latter also fixes Toggle's latent scale-hover. - tag-group: variant-aware migration (solid/outline -> canonical, soft -> alpha surface; merge outline-fg into text, prune orphans). - toggle-group: replace the 4-role cross-recipe composition with a hand-authored presence-scoped route to the shared layer (the composition DSL can't presence-scope); covers roles + 33 scales. - Widen color to ComponentColor (roles + 33 scales) where arbitrary color is meaningful: badge, tag-group, tags-input, toggle-group, and add the scale picker to their demos. Semantic controls stay restricted. Verified end-to-end with the REAL components (drive the demo color control -> the component emits data-color -> the shared layer resolves the exact scale). Gates: recipe-css-contract/config/contracts/ soma-attr-audit/media-player suites green; 0 orphan tokens. avatar remains for a focused pass: its variant-resolved matrix and badge sub-part don't fit a mechanical migration. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
border-color: var(--_stepper-palette-border);
background: var(--_stepper-palette-track);
color: var(--_stepper-palette-text);
}
[data-stepper-trigger][data-state='complete'] [data-stepper-indicator],
[data-stepper-indicator][data-state='complete'] {
feat(theming+soma): media-player Batch-4 (SOM-4) + THM-2 shared-palette rollout to 14 surfaces media-player Batch-4 (closes SOM-4): the 10 sub-parts migrate to renderProps() (35 attr-dup hits -> 0). Register the sources the morfo reads (label propRef, on stateRef, direction/type) so renderProps emits type/role/aria-*/data-state; keep only contract-only soma-owned attrs. Pin the soma-attr-audit ceiling to 0. THM-2 rollout - collapse each per-component palette cascade into the shared per-instance layer (size win, behavior-preserving for roles, adds the 33 scales): - Rename palette tokens to canonical _palette-{slot} + route via the presence-guarded forward: tags-input, stepper, badge, card, select (parts-aware trigger+content), file-upload, editable, tag-group. - Extend the shared vocabulary with alpha surface(a2)/surface-hover(a3) slots (soft variant of variant-aware recipes) and hover(4) - the latter also fixes Toggle's latent scale-hover. - tag-group: variant-aware migration (solid/outline -> canonical, soft -> alpha surface; merge outline-fg into text, prune orphans). - toggle-group: replace the 4-role cross-recipe composition with a hand-authored presence-scoped route to the shared layer (the composition DSL can't presence-scope); covers roles + 33 scales. - Widen color to ComponentColor (roles + 33 scales) where arbitrary color is meaningful: badge, tag-group, tags-input, toggle-group, and add the scale picker to their demos. Semantic controls stay restricted. Verified end-to-end with the REAL components (drive the demo color control -> the component emits data-color -> the shared layer resolves the exact scale). Gates: recipe-css-contract/config/contracts/ soma-attr-audit/media-player suites green; 0 orphan tokens. avatar remains for a focused pass: its variant-resolved matrix and badge sub-part don't fit a mechanical migration. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
border-color: var(--_stepper-palette-solid);
background: var(--_stepper-palette-solid);
color: var(--stepper-complete-color);
}
[data-stepper][data-variant='outline'] [data-stepper-indicator][data-state='current'],
[data-stepper][data-variant='outline']
[data-stepper-trigger][data-state='current']
[data-stepper-indicator] {
background: transparent;
feat(theming+soma): media-player Batch-4 (SOM-4) + THM-2 shared-palette rollout to 14 surfaces media-player Batch-4 (closes SOM-4): the 10 sub-parts migrate to renderProps() (35 attr-dup hits -> 0). Register the sources the morfo reads (label propRef, on stateRef, direction/type) so renderProps emits type/role/aria-*/data-state; keep only contract-only soma-owned attrs. Pin the soma-attr-audit ceiling to 0. THM-2 rollout - collapse each per-component palette cascade into the shared per-instance layer (size win, behavior-preserving for roles, adds the 33 scales): - Rename palette tokens to canonical _palette-{slot} + route via the presence-guarded forward: tags-input, stepper, badge, card, select (parts-aware trigger+content), file-upload, editable, tag-group. - Extend the shared vocabulary with alpha surface(a2)/surface-hover(a3) slots (soft variant of variant-aware recipes) and hover(4) - the latter also fixes Toggle's latent scale-hover. - tag-group: variant-aware migration (solid/outline -> canonical, soft -> alpha surface; merge outline-fg into text, prune orphans). - toggle-group: replace the 4-role cross-recipe composition with a hand-authored presence-scoped route to the shared layer (the composition DSL can't presence-scope); covers roles + 33 scales. - Widen color to ComponentColor (roles + 33 scales) where arbitrary color is meaningful: badge, tag-group, tags-input, toggle-group, and add the scale picker to their demos. Semantic controls stay restricted. Verified end-to-end with the REAL components (drive the demo color control -> the component emits data-color -> the shared layer resolves the exact scale). Gates: recipe-css-contract/config/contracts/ soma-attr-audit/media-player suites green; 0 orphan tokens. avatar remains for a focused pass: its variant-resolved matrix and badge sub-part don't fit a mechanical migration. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
color: var(--_stepper-palette-text);
}
[data-stepper][data-variant='solid'] [data-stepper-indicator][data-state='current'],
[data-stepper][data-variant='solid']
[data-stepper-trigger][data-state='current']
[data-stepper-indicator] {
feat(theming+soma): media-player Batch-4 (SOM-4) + THM-2 shared-palette rollout to 14 surfaces media-player Batch-4 (closes SOM-4): the 10 sub-parts migrate to renderProps() (35 attr-dup hits -> 0). Register the sources the morfo reads (label propRef, on stateRef, direction/type) so renderProps emits type/role/aria-*/data-state; keep only contract-only soma-owned attrs. Pin the soma-attr-audit ceiling to 0. THM-2 rollout - collapse each per-component palette cascade into the shared per-instance layer (size win, behavior-preserving for roles, adds the 33 scales): - Rename palette tokens to canonical _palette-{slot} + route via the presence-guarded forward: tags-input, stepper, badge, card, select (parts-aware trigger+content), file-upload, editable, tag-group. - Extend the shared vocabulary with alpha surface(a2)/surface-hover(a3) slots (soft variant of variant-aware recipes) and hover(4) - the latter also fixes Toggle's latent scale-hover. - tag-group: variant-aware migration (solid/outline -> canonical, soft -> alpha surface; merge outline-fg into text, prune orphans). - toggle-group: replace the 4-role cross-recipe composition with a hand-authored presence-scoped route to the shared layer (the composition DSL can't presence-scope); covers roles + 33 scales. - Widen color to ComponentColor (roles + 33 scales) where arbitrary color is meaningful: badge, tag-group, tags-input, toggle-group, and add the scale picker to their demos. Semantic controls stay restricted. Verified end-to-end with the REAL components (drive the demo color control -> the component emits data-color -> the shared layer resolves the exact scale). Gates: recipe-css-contract/config/contracts/ soma-attr-audit/media-player suites green; 0 orphan tokens. avatar remains for a focused pass: its variant-resolved matrix and badge sub-part don't fit a mechanical migration. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
border-color: var(--_stepper-palette-solid);
background: var(--_stepper-palette-solid);
color: var(--stepper-complete-color);
}
[data-stepper-separator] {
align-self: center;
min-inline-size: var(--stepper-separator-min-size);
block-size: var(--stepper-separator-thickness);
border-radius: var(--stepper-separator-radius);
background: var(--stepper-separator-bg);
}
[data-stepper-separator][data-orientation='vertical'] {
justify-self: center;
inline-size: var(--stepper-separator-thickness);
block-size: 100%;
min-block-size: var(--stepper-separator-min-size);
}
[data-stepper-separator][data-state='complete'] {
feat(theming+soma): media-player Batch-4 (SOM-4) + THM-2 shared-palette rollout to 14 surfaces media-player Batch-4 (closes SOM-4): the 10 sub-parts migrate to renderProps() (35 attr-dup hits -> 0). Register the sources the morfo reads (label propRef, on stateRef, direction/type) so renderProps emits type/role/aria-*/data-state; keep only contract-only soma-owned attrs. Pin the soma-attr-audit ceiling to 0. THM-2 rollout - collapse each per-component palette cascade into the shared per-instance layer (size win, behavior-preserving for roles, adds the 33 scales): - Rename palette tokens to canonical _palette-{slot} + route via the presence-guarded forward: tags-input, stepper, badge, card, select (parts-aware trigger+content), file-upload, editable, tag-group. - Extend the shared vocabulary with alpha surface(a2)/surface-hover(a3) slots (soft variant of variant-aware recipes) and hover(4) - the latter also fixes Toggle's latent scale-hover. - tag-group: variant-aware migration (solid/outline -> canonical, soft -> alpha surface; merge outline-fg into text, prune orphans). - toggle-group: replace the 4-role cross-recipe composition with a hand-authored presence-scoped route to the shared layer (the composition DSL can't presence-scope); covers roles + 33 scales. - Widen color to ComponentColor (roles + 33 scales) where arbitrary color is meaningful: badge, tag-group, tags-input, toggle-group, and add the scale picker to their demos. Semantic controls stay restricted. Verified end-to-end with the REAL components (drive the demo color control -> the component emits data-color -> the shared layer resolves the exact scale). Gates: recipe-css-contract/config/contracts/ soma-attr-audit/media-player suites green; 0 orphan tokens. avatar remains for a focused pass: its variant-resolved matrix and badge sub-part don't fit a mechanical migration. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
background: var(--_stepper-palette-solid);
}
[data-stepper-content],
[data-stepper-completed-content] {
padding: var(--stepper-content-padding);
border: var(--stepper-content-border-width) solid var(--stepper-content-border);
border-radius: var(--stepper-content-radius);
background: var(--stepper-content-bg);
color: var(--stepper-color);
box-shadow: var(--stepper-content-shadow);
outline: none;
}
[data-stepper-content]:focus-visible,
[data-stepper-completed-content]:focus-visible {
fix(eidos): component-coherence audit FASE 2 — focus-ring, fields, segments, langs, API nits Bundles the uncommitted audit work on this branch (active-uix): - DIM 5A: focus-ring unified to `outline` across the control/field set (kills ~18 box-shadow rings; closes forced-colors a11y). NOTE: spin-field + drawer-close orphan-token loose ends from this migration still trip the eidos contract test — to clean when that migration settles. - DIM 5D: field/input backgrounds homogenized to surface-default; list-surface padding recalibrated 2/4/6/8/10; menu-dial internal vars privatized. - DIM 5E: date/time/color-field + date-range-picker segments delegate the active state to the shared field-segment-state layer; the input transition is reduced to `background` only so the focus border no longer flickers on keyboard increment (border-color is now instant; the ring is an outline). - Langs (cero-hardcodes): IconButton-cascade wrappers (carousel/combobox/ tree-grid/table/search-field/banner) + onion-menu + cropper + time-picker day-period now route aria-labels through morfo langs instead of hardcoded English (the hardcode was overriding soma's already-resolved label). Fixes 2 contract divergences (combobox Clear->Clear value, table toggle label). - DIM 5B: code-block/kbd variants aliased to ControlVariant (no duplicate literals); image-picker default size sm->md. Excludes words/palabras/chronos and the metrics/demos tracks (separate work). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
outline: var(--focus-ring-width) solid var(--focus-ring-color);
outline-offset: 0;
}
[data-stepper-prev-trigger],
[data-stepper-next-trigger] {
display: inline-flex;
align-items: center;
justify-content: center;
block-size: var(--stepper-nav-height);
feat(audit): component re-audit + fixes P0–P5 (P4 complete, P5 in progress) Re-audit of the whole component catalog at pilot depth (91 fichas + the checkpoint verdicts in docs/audit/components/) and the executed fix packages. - P0–P3: doctrine (sema participation, CANON §3 intent, component-guide §5 + API naming, §32 outline), guards (morfo-vocabulary-check S10/S11d, component-audit A-3.1/A-1.4/S9, eidos-lint classHooks), morfo contracts (role=application removed ×4, aria-selected off the Day, drp translationRef, field data-state prune, pin-input commit-set, media-player renames), 13 new sema packs + 12 morfos family-default → pack. - P4 (N1–N10) COMPLETE: selectionMode (select/combobox/toggle-group/calendar); onValueCommit terminal-callback norm (pin-input/search/password/textarea + date/time/color-field add); typed validation reason + onInvalid (tags-input, css-field); index/onIndexChange (carousel); deselectable; openDelay/ groupSkipDelay; allowCustomValue; defaultValue prune. - P5 (in progress): S1 class-hooks codemod (22 hooks → data-attrs across cropper/button/image-picker/toggle/image-adjustments); S5 outline remnant in field.css; depth pass (data-depth=overlay on tooltip/toast/float-panel); touch-rows (--touch-target token, decoupled ::before hit-slop, area-not-visual, 44 AAA). S6 (Field composition) + S8 (calendar-surface) pending. Verification: errors-outside-(alpha|words|palabras|chronos) == 59 (baseline); morfo-vocabulary-check exit 0; eidos-lint class-hooks/invalid 0 on touched components; per-component vitest suites green. Handoff + remaining plan: docs/process/continue-audit-fixes-2026-07.md Excluded (broken by the N1 rename, left broken per user decision, not staged): words/**, palabras/**, chronos, web/routes/alpha/**. Reconciliation pending: the touch-rows ::before for checkbox/switch reverses changelog §37's earlier pseudo-element rejection (WCAG-overlap) that had routed markers to a labeled-row/Field task — flagged for the user in the handoff. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
padding-inline: var(--stepper-nav-padding-inline);
border: var(--stepper-nav-border-width) solid var(--stepper-nav-border);
border-radius: var(--stepper-nav-radius);
background: var(--stepper-nav-bg);
color: var(--stepper-nav-color);
font: inherit;
cursor: pointer;
outline: none;
transition:
background var(--stepper-transition-duration) var(--stepper-transition-ease),
border-color var(--stepper-transition-duration) var(--stepper-transition-ease),
color var(--stepper-transition-duration) var(--stepper-transition-ease),
box-shadow var(--stepper-transition-duration) var(--stepper-transition-ease);
}
[data-stepper-next-trigger] {
feat(theming+soma): media-player Batch-4 (SOM-4) + THM-2 shared-palette rollout to 14 surfaces media-player Batch-4 (closes SOM-4): the 10 sub-parts migrate to renderProps() (35 attr-dup hits -> 0). Register the sources the morfo reads (label propRef, on stateRef, direction/type) so renderProps emits type/role/aria-*/data-state; keep only contract-only soma-owned attrs. Pin the soma-attr-audit ceiling to 0. THM-2 rollout - collapse each per-component palette cascade into the shared per-instance layer (size win, behavior-preserving for roles, adds the 33 scales): - Rename palette tokens to canonical _palette-{slot} + route via the presence-guarded forward: tags-input, stepper, badge, card, select (parts-aware trigger+content), file-upload, editable, tag-group. - Extend the shared vocabulary with alpha surface(a2)/surface-hover(a3) slots (soft variant of variant-aware recipes) and hover(4) - the latter also fixes Toggle's latent scale-hover. - tag-group: variant-aware migration (solid/outline -> canonical, soft -> alpha surface; merge outline-fg into text, prune orphans). - toggle-group: replace the 4-role cross-recipe composition with a hand-authored presence-scoped route to the shared layer (the composition DSL can't presence-scope); covers roles + 33 scales. - Widen color to ComponentColor (roles + 33 scales) where arbitrary color is meaningful: badge, tag-group, tags-input, toggle-group, and add the scale picker to their demos. Semantic controls stay restricted. Verified end-to-end with the REAL components (drive the demo color control -> the component emits data-color -> the shared layer resolves the exact scale). Gates: recipe-css-contract/config/contracts/ soma-attr-audit/media-player suites green; 0 orphan tokens. avatar remains for a focused pass: its variant-resolved matrix and badge sub-part don't fit a mechanical migration. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 months ago
border-color: var(--_stepper-palette-border);
background: var(--_stepper-palette-solid);
color: var(--stepper-complete-color);
}
[data-stepper-prev-trigger]:hover:not(:disabled),
[data-stepper-next-trigger]:hover:not(:disabled) {
filter: brightness(var(--stepper-nav-hover-brightness));
}
[data-stepper-prev-trigger]:focus-visible,
[data-stepper-next-trigger]:focus-visible {
fix(eidos): component-coherence audit FASE 2 — focus-ring, fields, segments, langs, API nits Bundles the uncommitted audit work on this branch (active-uix): - DIM 5A: focus-ring unified to `outline` across the control/field set (kills ~18 box-shadow rings; closes forced-colors a11y). NOTE: spin-field + drawer-close orphan-token loose ends from this migration still trip the eidos contract test — to clean when that migration settles. - DIM 5D: field/input backgrounds homogenized to surface-default; list-surface padding recalibrated 2/4/6/8/10; menu-dial internal vars privatized. - DIM 5E: date/time/color-field + date-range-picker segments delegate the active state to the shared field-segment-state layer; the input transition is reduced to `background` only so the focus border no longer flickers on keyboard increment (border-color is now instant; the ring is an outline). - Langs (cero-hardcodes): IconButton-cascade wrappers (carousel/combobox/ tree-grid/table/search-field/banner) + onion-menu + cropper + time-picker day-period now route aria-labels through morfo langs instead of hardcoded English (the hardcode was overriding soma's already-resolved label). Fixes 2 contract divergences (combobox Clear->Clear value, table toggle label). - DIM 5B: code-block/kbd variants aliased to ControlVariant (no duplicate literals); image-picker default size sm->md. Excludes words/palabras/chronos and the metrics/demos tracks (separate work). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
outline: var(--focus-ring-width) solid var(--focus-ring-color);
outline-offset: 0;
}
[data-stepper-trigger][data-disabled],
[data-stepper-prev-trigger][data-disabled],
[data-stepper-next-trigger][data-disabled] {
cursor: default;
opacity: var(--stepper-disabled-opacity);
}
@media (prefers-reduced-motion: reduce) {
[data-stepper-trigger],
[data-stepper-prev-trigger],
[data-stepper-next-trigger] {
transition: none;
}
}

Powered by TurnKey Linux.