dev
152d2ad960
Theming: Radix-parity palette + intent auto-derivation + color-model docs
...
Two-level color model settled (THEMING.md section 25), replacing the anchor RFC:
the palette is the source (scales, directly usable, designable); hierarchy roles
alias scales explicitly; intents auto-derive from the palette by the book's
canonical convention.
- Palette library expanded 12 -> 31 scales at Radix Colors parity (exact values):
radix-scales.ts (19 added: mauve/sage/olive/sand/tomato/ruby/crimson/plum/
violet/iris/indigo/jade/grass/brown/sky/mint/lime/gold/bronze) spread into
base.ts. Each directly usable as --scale-{name}-{step}.
- Intent auto-derivation: CANONICAL_INTENT_SCALES (neutral->gray, affirm->teal,
fulfill->green, risk->amber, threat->red, loss->plum) + completeColorRoleMap.
Intents omitted from a theme role map fill from the convention (identity =
step 9); slots derive normally; override optional. ColorRoleMap: hierarchy
required, intents optional.
- Validation: hierarchy roles required; omitted intents validate the canonical
scale exists in the palette.
- index: export ScalingKey / SCALING_KEYS.
- docs: THEMING.md section 25 (full color model + decisions), section 21 marked
resolved, COLOR_MODEL_RFC resolved (anchor rejected).
- test: base library asserts 31 scales x 12 steps.
Verified: npm run check (0 new errors), vitest eidos (0 new regressions),
browser (intents auto-derive: affirm=teal #0E9384, risk=amber #DC6803,
loss=plum #7A3AAD at step 9).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
dev
bceaef41e0
Theming: add `scaling` zoom axis (Radix parity), separate from density
...
Introduce a global zoom axis independent of density, in parity with Radix
Themes' `scaling` (90/95/100/105/110%). Scaling zooms px metrics INCLUDING
typography (font-size, icon-size, space, control-height); density only moves
layout rhythm + control height and leaves text fixed. The two axes compose
multiplicatively.
- config-types: SCALING_KEYS / ScalingKey / DEFAULT_SCALING; DensityPrimitiveSet
drops the dead `scale` + `contentScale` (kept spaceScale, controlScale).
- primitives/static: STATIC_SCALING (0.9..1.1).
- render-css: appendScaledMetricDeclarations wraps metrics in
calc(<raw>[ * var(--density-x-scale)] * var(--scaling)); appendScalingDeclarations
emits --scaling-{key} + --scaling default; renderScalingBlocks emits
[data-scaling] blocks. line-height/radius/border/shadow excluded.
- config + contract: prune the removed density scalars.
- active-eidos: `scaling` / `scalingSource` options, getScaling() on the
preference source, data-scaling projection + dispose cleanup.
- docs: THEMING.md section 23 + 20.1 reconcile; README density/scaling; SCALING_RFC.md.
Verified: npm run check (0 new errors), vitest eidos (0 new regressions),
browser cascade at 90/100/110 scales font/space/control x0.9/x1.1 and leaves
radius/border fixed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
dev
98d6799ad0
Theming: generate alpha scales via compositing inverse (P1-1)
...
Replace the synthetic step-9-at-opacity alpha ramp with a real compositing inverse: each --scale-X-aN is the translucent color that, painted over the scale's background (white for light scales, black for dark, by step-1 luminance), reproduces the opaque solid step N (Radix model). Computed in render-css.ts for ANY theme (base + custom), so alpha is consistent-by-construction with the solid scale and cannot drift. alphaScales opt-in still wins verbatim; non-hex solids fall back to the legacy color-mix ramp. Verified: --scale-purple-a9 = rgb(92 0 173 / 0.6941) over white = #8e4ec6.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
dev
218ccfcc5e
Theming: untitled-ui demo theme, engine fixes, audit + P0/P1 fixes
...
- New untitled-ui demo theme + theming showcase route (web/routes/temas)
- Engine: density tokens scale via calc(var(--density-*-scale)); contrast slot defaults to on-solid
- Eidos theming audit (THEMING_AUDIT_2026-06-01.md) + two-tier color-model RFC (COLOR_MODEL_RFC.md)
- P0: replace phantom foundation tokens in recipes + component CSS — shadows -> semantic scale (subtle/raised/overlay), add --space-7, --border-width-strong -> thick; neutral solid contrast -> step 12 (AA in light + dark)
- P1: validate hex color values + per-theme semantic completeness; regression tests for contrast, density, dark output, and TSC multi-part/composition emission
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4 months ago
dev
c939de90c8
Harden Eidos config and wrappers
5 months ago
dev
eba7b4522d
Guard persisted Eidos config shapes
5 months ago
dev
b2c832b47a
Reject unsafe Eidos CSS config values
5 months ago
dev
546ad40251
Validate Eidos color role slots
5 months ago
dev
b48a6c48bf
Validate Eidos semantic color groups
5 months ago
dev
cfee72bfc8
Validate Eidos static primitives
5 months ago
dev
110c5026b9
Validate Eidos motion and icon primitives
5 months ago
dev
45d266b1c6
Validate Eidos typography token keys
5 months ago
dev
56e173f7e2
Validate Eidos CSS-facing keys
5 months ago
dev
8e17e64d13
Harden Eidos runtime config validation
5 months ago
dev
bfd3b4020e
Validate persisted Eidos configs
5 months ago
dev
659585381f
Expose Eidos recipe token queries
5 months ago
dev
d822597ffe
Generate Eidos recipe tokens from config
5 months ago
dev
31399d80b2
Add Eidos density scalars
5 months ago
dev
d5ab8e9d99
Add Eidos layout primitives
5 months ago
dev
c12b1c48c8
Refactor active uix architecture
5 months ago