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/slider/slider.css

195 lines
5.5 KiB

[data-slider] {
--_slider-track-size: var(--slider-track-size-md);
--_slider-thumb-size: var(--slider-thumb-size-md);
--_slider-hit-size: var(--slider-hit-size-md);
--_slider-tick-size: var(--slider-tick-size-md);
cursor: pointer;
}
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
[data-slider][data-size='xs'] {
--_slider-track-size: var(--slider-track-size-xs);
--_slider-thumb-size: var(--slider-thumb-size-xs);
--_slider-hit-size: var(--slider-hit-size-xs);
--_slider-tick-size: var(--slider-tick-size-xs);
}
[data-slider][data-size='sm'] {
--_slider-track-size: var(--slider-track-size-sm);
--_slider-thumb-size: var(--slider-thumb-size-sm);
--_slider-hit-size: var(--slider-hit-size-sm);
--_slider-tick-size: var(--slider-tick-size-sm);
}
[data-slider][data-size='lg'] {
--_slider-track-size: var(--slider-track-size-lg);
--_slider-thumb-size: var(--slider-thumb-size-lg);
--_slider-hit-size: var(--slider-hit-size-lg);
--_slider-tick-size: var(--slider-tick-size-lg);
}
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
[data-slider][data-size='xl'] {
--_slider-track-size: var(--slider-track-size-xl);
--_slider-thumb-size: var(--slider-thumb-size-xl);
--_slider-hit-size: var(--slider-hit-size-xl);
--_slider-tick-size: var(--slider-tick-size-xl);
}
[data-slider][data-disabled] {
cursor: not-allowed;
opacity: var(--slider-disabled-opacity);
}
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
/* Readonly — value visible, thumb stays focusable, NOT dimmed (distinct from
disabled). Just drops the grab/edit cursor; the value lock lives in soma. */
[data-slider][data-readonly] {
cursor: default;
}
[data-slider-thumb][data-readonly],
[data-slider-thumb][data-readonly]:active {
cursor: default;
scale: 1;
}
[data-slider][data-orientation='horizontal'] {
inline-size: 100%;
block-size: var(--_slider-hit-size);
min-inline-size: var(--slider-min-inline-size);
}
[data-slider][data-orientation='vertical'] {
inline-size: var(--_slider-hit-size);
block-size: var(--slider-min-block-size);
min-block-size: var(--slider-min-block-size);
}
[data-slider]::before {
content: '';
position: absolute;
border-radius: var(--slider-track-radius);
background: var(--slider-track-bg);
}
[data-slider][data-orientation='horizontal']::before {
inset-inline: 0;
inset-block-start: 50%;
block-size: var(--_slider-track-size);
transform: translateY(-50%);
}
[data-slider][data-orientation='vertical']::before {
inset-block: 0;
inset-inline-start: 50%;
inline-size: var(--_slider-track-size);
transform: translateX(-50%);
}
[data-slider-range] {
border-radius: var(--slider-track-radius);
background: var(--slider-range-bg);
pointer-events: none;
}
[data-slider-range][data-orientation='horizontal'] {
inset-block-start: 50%;
block-size: var(--_slider-track-size);
transform: translateY(-50%);
}
[data-slider-range][data-orientation='vertical'] {
inset-inline-start: 50%;
inline-size: var(--_slider-track-size);
transform: translateX(-50%);
}
feat(sound): $sound orquestador (buses+voces+media) y player v2 F1-F3 sobre el servicio Rediseno clean-room del sonido (gate D-SR.1-12 firmado; la doctrina "la voz es del art" de PLAN-sound-engine s16.1 queda revocada): - Mezcla: master -> buses ui/content (gain/mute/duck refcount, gana la mas fuerte; politica pre-contexto). prefs de UI jamas tocan la obra. - Voces registradas: la calibracion es DATO del consumidor (sema registra 'sema'; el default conserva la calibracion historica - cero cambio audible, A/B del usuario: "suena igual"). - Ciudadania de media: sound.media(el) PROVEE el transporte (la forma exacta del puerto MediaProvider) + foco mixed/exclusive/duck PERSISTENTE (estado derivado; el ducker mas reciente retiene la palabra) + duckUiWhileContent + MediaSession de la fuente activa (play/pause/seekto + posicion, liberacion y promocion) + visibilidad content-aware + attach() opt-in (irreversible, CORS declarado). Re-registro idempotente por elemento. - diagnostics.ts con catalogo tipado (contrato de arts) y guards post-dispose (ningun camino abre un contexto huerfano). Auditoria AU-1..9 resuelta; bundle medido: 16,2 KB min / 5,6 KB gz. Player v2 (gate D-AP2.1-13 firmado) F1-F3: - F1 gaps de framework: aria-valuetext en Slider (valueText por thumb) + parte SecondaryRange con token --slider-secondary-bg (buffer/clip/capitulos) + formatDuration en $libs/days + fix del selector del pack (H-1: la regla de play/pause construia sobre provider y el stamp aterriza en play-button). - F2 morfo: 6 partes audio-only (artwork/artist/identity/transport/ rate-button/live-indicator), commit-set-rate, commit-set-time RETIRADO (D-AP2.13: el scrubber delega en el commit-set del Slider compuesto), sustain-loading cableado (H-9), teclado j/l, </> y 0-9 (con guard de modificadores para no pisar atajos del navegador). - F3 la migracion: el transporte default es uix.sound.media(el, {metadata}) (pineado con el motor real); nativeMediaProvider RETIRADO (media-provider.ts queda como contrato puro del puerto, sin shim); G-5: los commits de play/mute/rate cabalgan el evento de RESULTADO (play/pause saltando el pause de ended, volumechange con transicion de muted, ratechange); formatTime -> formatDuration; sub-providers + wrappers + exports de las 6 partes; prop metadata publica (captura al registrar, documentado). Verificacion: 45 suites / 458 tests verdes en el alcance (sound, sema, active-uix, active-app, morfo, slider, media-player, days) - check 74 = baseline de la rama, 0 propios - docs:check 0 - invariante de UN AudioContext intacta (e2e sin tocar). Planes de proceso y handoff al dia (PLAN-sound-redesign, PLAN-audio-player-v2, CONTINUE-sound-engine). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2 months ago
/* Secondary track (buffer / preloaded region) — same geometry as the range,
layered UNDER it (source order: the range is painted after and on top). */
[data-slider-secondary-range] {
border-radius: var(--slider-track-radius);
background: var(--slider-secondary-bg);
pointer-events: none;
}
[data-slider-secondary-range][data-orientation='horizontal'] {
inset-block-start: 50%;
block-size: var(--_slider-track-size);
transform: translateY(-50%);
}
[data-slider-secondary-range][data-orientation='vertical'] {
inset-inline-start: 50%;
inline-size: var(--_slider-track-size);
transform: translateX(-50%);
}
[data-slider-thumb] {
inline-size: var(--_slider-thumb-size);
block-size: var(--_slider-thumb-size);
border: var(--slider-thumb-border-width) solid var(--slider-thumb-border);
border-radius: var(--slider-thumb-radius);
background: var(--slider-thumb-bg);
box-shadow: var(--slider-thumb-shadow);
cursor: grab;
outline: none;
/* `scale` is its own property, independent of the `transform: translate()`
the soma uses to centre the thumb — they compose, so the lift scales the
thumb in place. */
transition:
background var(--slider-transition-duration) var(--slider-transition-ease),
border-color var(--slider-transition-duration) var(--slider-transition-ease),
scale var(--slider-transition-duration) var(--slider-transition-ease),
box-shadow var(--slider-transition-duration) var(--slider-transition-ease);
}
/* Pickup lift on grab: scale toward the viewer + a higher shadow. */
[data-slider-thumb]:active {
cursor: grabbing;
scale: var(--slider-thumb-scale-active);
box-shadow: var(--slider-thumb-shadow-active);
}
[data-slider-thumb]: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
/* Keep the thumb's own drop shadow; the focus ring is a flush outline (no gap)
so it survives forced-colors. */
box-shadow: var(--slider-thumb-shadow);
outline: var(--focus-ring-width) solid var(--focus-ring-color);
outline-offset: 0;
}
[data-slider-thumb][data-disabled] {
cursor: not-allowed;
}
[data-slider-tick] {
inline-size: var(--_slider-tick-size);
block-size: var(--_slider-tick-size);
border-radius: var(--slider-tick-radius);
background: var(--slider-tick-bg);
pointer-events: none;
}
[data-slider-tick][data-orientation='horizontal'] {
inset-block-start: 50%;
margin-block-start: calc(var(--_slider-tick-size) / -2);
}
[data-slider-tick][data-orientation='vertical'] {
inset-inline-start: 50%;
margin-inline-start: calc(var(--_slider-tick-size) / -2);
}
[data-slider-tick][data-active] {
background: var(--slider-tick-bg-active);
}
@media (prefers-reduced-motion: reduce) {
[data-slider-thumb] {
transition: none;
}
/* No pickup zoom under reduced motion — the raised shadow still conveys grab. */
[data-slider-thumb]:active {
scale: 1;
}
}

Powered by TurnKey Linux.