You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(tokens): unify status -subtle alpha to 0.12; drop dev-notes from manual
- core/tokens.css: --sf-color-info-subtle and --sf-color-danger-subtle were
0.10 alpha while success/warning were 0.12, so danger/info alert backgrounds
rendered slightly fainter than success/warning at the same content. Unify all
four status -subtle washes to 0.12 (the finding documented while writing the
colour manual). Regenerated value-bearing docs.
- user-manual/system-kolorow.md: remove the "Znalezione nieścisłości we
frameworku" section (§9) — maintainer-facing findings don't belong in a user
manual (PR #627 review); renumber the cheatsheet §10 → §9. Also refresh one
stale §8 rationale ("ramp computed for a specific background") to the new
solid-colour-doesn't-blend wording.
- CHANGELOG: note the status -subtle alpha fix.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012X2fkd5DbmNJywKcNy6NjF
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
7
7
## [0.7.19] - 2026-07-16
8
8
9
9
### Bug Fixes
10
+
-**tokens:**`--sf-color-info-subtle` and `--sf-color-danger-subtle` were `0.10` alpha while `--sf-color-success-subtle` / `--sf-color-warning-subtle` were `0.12`, so a `danger`/`info` alert-box background rendered slightly fainter than a `success`/`warning` one at the same content. Unified all four status `-subtle` washes to `0.12` (the `-muted``0.3` and `-tint``0.05` rungs were already consistent).
10
11
- **tokens:** the numeric brand ramps (`--sf-color-{primary,secondary,tertiary,action,neutral}-50…950`) no longer fold into a "U". The previous model generated each step with `color-mix()` toward the theme's `--sf-color-surface` (tints) / `--sf-color-text` (shades) — so when a chosen source colour fell outside the band between those two anchors (e.g. a brand darker than the text colour, or a project that lightened `--sf-color-neutral`), the shade half inverted and climbed back up: steps 600–950 came out *lighter* than 500, and 50 ≈ 950. The ramp is now generated in OKLCH by pulling the family colour's own lightness a fixed fraction toward an **absolute** target — `--sf-palette-tint-l` (tints) / `--sf-palette-shade-l` (shades) — clamped with `max()`/`min()` so a tint can never end darker than the base nor a shade lighter. The ladder is therefore monotonic light→dark for **any** source colour and any anchor configuration. Chroma is tapered toward the extremes to avoid oversaturation. For default-palette colours (which already sat inside the safe band) the output is visually unchanged; only out-of-band / moved-anchor cases are corrected. `base` is unchanged (it already used absolute lightness steps). New parametric test `tests/ramp-monotonic.spec.js` sweeps the lightness axis for all five families and asserts the ramp never folds and no step is transparent.
11
12
-**configurator:** the Colors panel's "Palette ramp" section now edits the two lightness anchors (`--sf-palette-tint-l` / `--sf-palette-shade-l`) with two `0–1` sliders instead of the ten removed `--sf-palette-mix-*` percentage sliders; the Softer/Default/Punchy presets and the live palette preview were rewired to the absolute-anchor model so the preview matches the framework and stays monotonic.
12
13
-**layout:**`@container` breakpoints for `.sf-grid-cols-*`, `.sf-bento` and `.sf-alternate` now use `rem` instead of `em`. Inside a container query an `em` resolves against the query container's own font-size, which under the default fluid type scale is inherited from `body` (a `clamp()` over `100vw`, ~16–20px) — so the same fixed-width container rendered a different column count depending on the *viewport*: an 800px container showed `.sf-grid-cols-3` as 3 columns at a 500px viewport but 1 column at 1200px+. `rem` resolves against the fixed root (`html` stays 16px; fluid type is applied to `body`), restoring the documented "responds to its own container width, not the viewport" contract. Thresholds are unchanged numerically (30rem = 480px, 48rem = 768px) and still honour user zoom / root-font-size. Also corrects `docs/architecture.md`, which wrongly listed `.sf-grid` / `.sf-sidebar` as `@container` primitives (both are intrinsic and carry no container query).
"description": "Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.",
3729
3729
"note": "Light danger tint for error row backgrounds and alert container fills.",
3730
-
"value": "oklch(from var(--sf-color-danger) l c h / 0.1)",
3730
+
"value": "oklch(from var(--sf-color-danger) l c h / 0.12)",
3731
3731
"aliasOf": null,
3732
3732
"registered": false,
3733
3733
"syntax": null,
@@ -3916,7 +3916,7 @@
3916
3916
"group": "Status triplets",
3917
3917
"description": "Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.",
3918
3918
"note": "Light info tint for informational note backgrounds.",
3919
-
"value": "oklch(from var(--sf-color-info) l c h / 0.1)",
3919
+
"value": "oklch(from var(--sf-color-info) l c h / 0.12)",
Copy file name to clipboardExpand all lines: docs/api-index.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -188,7 +188,7 @@ and a short description. The machine-readable companion (with all columns) is
188
188
|`--sf-color-danger-source-dark`| PUBLIC | knob | color |`oklch(0.71 0.198 12)`| Registered <color> dark counterpart of --sf-color-danger. |
189
189
|`--sf-color-danger-source-light`| PUBLIC | knob | color |`oklch(0.48 0.22 12)`| OKLCH lightness source for the danger status color (covers destructive actions and form validation errors). |
190
190
|`--sf-color-danger-strong`| PUBLIC | consumption | color |`light-dark( oklch(from var(--sf-color-danger-source-light) calc(l - 0.1) c h), oklch(from var(--sf-color-danger) clamp(0.70, calc(l + 0.15), 1) c h) )`| High-contrast danger color for alert body text and icons. |
191
-
|`--sf-color-danger-subtle`| PUBLIC | consumption | color |`oklch(from var(--sf-color-danger) l c h / 0.1)`| Light danger tint for error row backgrounds and alert container fills. |
191
+
|`--sf-color-danger-subtle`| PUBLIC | consumption | color |`oklch(from var(--sf-color-danger) l c h / 0.12)`| Light danger tint for error row backgrounds and alert container fills. |
192
192
|`--sf-color-danger-tint`| PUBLIC | consumption | color |`oklch(from var(--sf-color-danger) l c h / 0.05)`| Near-transparent danger tint (5% alpha) for hover-state washes and the most subtle backgrounds. |
193
193
|`--sf-color-dim`| PUBLIC | knob | color |`oklch(0 0 0 / 0.5)`| Backdrop overlay color for modals, drawers, and lightboxes. |
194
194
|`--sf-color-heading`| PUBLIC | consumption | color |`light-dark( oklch(from var(--sf-color-neutral-source-light) clamp(0.05, calc(l - 0.4 - var(--sf-contrast-bias)), 0.35) c h), oklch(from var(--sf-color-neutral) clamp(0.70, calc(l + 0.25 + var(--sf-contrast-bias)), 1) c h) )`| Heading text color. Slightly stronger contrast than body text for visual hierarchy. |
@@ -197,7 +197,7 @@ and a short description. The machine-readable companion (with all columns) is
197
197
|`--sf-color-info-source-dark`| PUBLIC | knob | color |`oklch(0.71 0.162 235)`| Registered <color> dark counterpart of --sf-color-info. |
198
198
|`--sf-color-info-source-light`| PUBLIC | knob | color |`oklch(0.48 0.18 235)`| OKLCH lightness source for the info status color. |
199
199
|`--sf-color-info-strong`| PUBLIC | consumption | color |`light-dark( oklch(from var(--sf-color-info-source-light) calc(l - 0.1) c h), oklch(from var(--sf-color-info) clamp(0.70, calc(l + 0.15), 1) c h) )`| High-contrast info color for hint body text. |
200
-
|`--sf-color-info-subtle`| PUBLIC | consumption | color |`oklch(from var(--sf-color-info) l c h / 0.1)`| Light info tint for informational note backgrounds. |
200
+
|`--sf-color-info-subtle`| PUBLIC | consumption | color |`oklch(from var(--sf-color-info) l c h / 0.12)`| Light info tint for informational note backgrounds. |
201
201
|`--sf-color-info-tint`| PUBLIC | consumption | color |`oklch(from var(--sf-color-info) l c h / 0.05)`| Near-transparent info tint (5% alpha) for hover-state washes and the most subtle backgrounds. |
202
202
|`--sf-color-inset`| PUBLIC | consumption | color |`oklch(from var(--sf-color-base) calc(l - 0.02) c h)`| Slightly inset surface for nested areas — inputs, code blocks, sidebar panels. |
203
203
|`--sf-color-inverse`| PUBLIC | consumption | color |`oklch(from var(--sf-color-base) calc(1 - l) c h)`| Inverted (dark-on-light / light-on-dark) surface for high-contrast banners or tooltips. |
0 commit comments