|
|
|
|
[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;
|
feat(uix): cropper, image-picker, image-adjustments + reusable zoom-pan layer
Three new components across all 4 layers (morfo/soma/sema/eidos) + demos + langs + READMEs:
- ImageAdjustments — reusable image-filter sliders subcomponent.
- ImagePicker — composes file-upload + image + image-adjustments (fill modes, rotation).
- Cropper — Ark image-cropper anatomy: normalized 0-1 crop rect, rect + round shapes,
8 resize handles, fixedSize move-only (avatar), canvas Blob output (5-arg drawImage
for SVG safety), wheel/pan zoom, two-zone gesture (selection moves the area, the
background pans to set focus; img draggable=false guards native DnD per zag).
New reusable soma/layers/zoom-pan: cursor-centered zoom, clamped pan, transform +
viewport-frac-to-content-frac mapping. Image-viewer / diagram-pan / map can reuse it.
sema: add 'zoom' verb to the handle family (direct manipulation, documented extension).
slider: track visible at zero (gray, not white), thumb lifts on drag.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
|
|
|
/* `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),
|
feat(uix): cropper, image-picker, image-adjustments + reusable zoom-pan layer
Three new components across all 4 layers (morfo/soma/sema/eidos) + demos + langs + READMEs:
- ImageAdjustments — reusable image-filter sliders subcomponent.
- ImagePicker — composes file-upload + image + image-adjustments (fill modes, rotation).
- Cropper — Ark image-cropper anatomy: normalized 0-1 crop rect, rect + round shapes,
8 resize handles, fixedSize move-only (avatar), canvas Blob output (5-arg drawImage
for SVG safety), wheel/pan zoom, two-zone gesture (selection moves the area, the
background pans to set focus; img draggable=false guards native DnD per zag).
New reusable soma/layers/zoom-pan: cursor-centered zoom, clamped pan, transform +
viewport-frac-to-content-frac mapping. Image-viewer / diagram-pan / map can reuse it.
sema: add 'zoom' verb to the handle family (direct manipulation, documented extension).
slider: track visible at zero (gray, not white), thumb lifts on drag.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
|
|
|
scale var(--slider-transition-duration) var(--slider-transition-ease),
|
|
|
|
|
box-shadow var(--slider-transition-duration) var(--slider-transition-ease);
|
|
|
|
|
}
|
|
|
|
|
|
feat(uix): cropper, image-picker, image-adjustments + reusable zoom-pan layer
Three new components across all 4 layers (morfo/soma/sema/eidos) + demos + langs + READMEs:
- ImageAdjustments — reusable image-filter sliders subcomponent.
- ImagePicker — composes file-upload + image + image-adjustments (fill modes, rotation).
- Cropper — Ark image-cropper anatomy: normalized 0-1 crop rect, rect + round shapes,
8 resize handles, fixedSize move-only (avatar), canvas Blob output (5-arg drawImage
for SVG safety), wheel/pan zoom, two-zone gesture (selection moves the area, the
background pans to set focus; img draggable=false guards native DnD per zag).
New reusable soma/layers/zoom-pan: cursor-centered zoom, clamped pan, transform +
viewport-frac-to-content-frac mapping. Image-viewer / diagram-pan / map can reuse it.
sema: add 'zoom' verb to the handle family (direct manipulation, documented extension).
slider: track visible at zero (gray, not white), thumb lifts on drag.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
|
|
|
/* Pickup lift on grab: scale toward the viewer + a higher shadow. */
|
|
|
|
|
[data-slider-thumb]:active {
|
|
|
|
|
cursor: grabbing;
|
feat(uix): cropper, image-picker, image-adjustments + reusable zoom-pan layer
Three new components across all 4 layers (morfo/soma/sema/eidos) + demos + langs + READMEs:
- ImageAdjustments — reusable image-filter sliders subcomponent.
- ImagePicker — composes file-upload + image + image-adjustments (fill modes, rotation).
- Cropper — Ark image-cropper anatomy: normalized 0-1 crop rect, rect + round shapes,
8 resize handles, fixedSize move-only (avatar), canvas Blob output (5-arg drawImage
for SVG safety), wheel/pan zoom, two-zone gesture (selection moves the area, the
background pans to set focus; img draggable=false guards native DnD per zag).
New reusable soma/layers/zoom-pan: cursor-centered zoom, clamped pan, transform +
viewport-frac-to-content-frac mapping. Image-viewer / diagram-pan / map can reuse it.
sema: add 'zoom' verb to the handle family (direct manipulation, documented extension).
slider: track visible at zero (gray, not white), thumb lifts on drag.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
|
|
|
scale: var(--slider-thumb-scale-active);
|
|
|
|
|
box-shadow: var(--slider-thumb-shadow-active);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[data-slider-thumb]:focus-visible {
|
|
|
|
|
/* 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;
|
|
|
|
|
}
|
feat(uix): cropper, image-picker, image-adjustments + reusable zoom-pan layer
Three new components across all 4 layers (morfo/soma/sema/eidos) + demos + langs + READMEs:
- ImageAdjustments — reusable image-filter sliders subcomponent.
- ImagePicker — composes file-upload + image + image-adjustments (fill modes, rotation).
- Cropper — Ark image-cropper anatomy: normalized 0-1 crop rect, rect + round shapes,
8 resize handles, fixedSize move-only (avatar), canvas Blob output (5-arg drawImage
for SVG safety), wheel/pan zoom, two-zone gesture (selection moves the area, the
background pans to set focus; img draggable=false guards native DnD per zag).
New reusable soma/layers/zoom-pan: cursor-centered zoom, clamped pan, transform +
viewport-frac-to-content-frac mapping. Image-viewer / diagram-pan / map can reuse it.
sema: add 'zoom' verb to the handle family (direct manipulation, documented extension).
slider: track visible at zero (gray, not white), thumb lifts on drag.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
|
|
|
/* No pickup zoom under reduced motion — the raised shadow still conveys grab. */
|
|
|
|
|
[data-slider-thumb]:active {
|
|
|
|
|
scale: 1;
|
|
|
|
|
}
|
|
|
|
|
}
|