@vegastack/design-tokens 0.7.0 → 0.7.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/base.css +44 -9
  2. package/package.json +1 -1
package/dist/base.css CHANGED
@@ -4,7 +4,8 @@
4
4
  REBUILT BY THE SHADCN RESET (Batch 1, 2026-09-18). This file is now upstream's own base layer
5
5
  plus exactly the decisions `docs/plans/2026-09-18-shadcn-reset/decisions.md` marks **ours**:
6
6
 
7
- FOC-1 one global :focus-visible outline; components restate nothing
7
+ FOC-1 one global :focus-visible cue; components restate nothing
8
+ FOC-13 no focus rings except Tabs: the cue is a background tint (MK 2026-09-25)
8
9
  FOC-7 the forced-colours fallback for text entry
9
10
  MOT-5 the reduced-motion reset (and the one sanctioned !important)
10
11
  INT-1 the hand cursor, on a wider selector list than shadcn's --pointer rule
@@ -59,12 +60,41 @@
59
60
  @apply font-sans;
60
61
  }
61
62
 
62
- /* FOC-1 — the SINGLE focus affordance in the system. 2px solid, offset 1, in `ring`, which
63
- FOC-2 binds to the near-black / near-white ink rather than shadcn's mid-grey. Components carry
64
- no focus ring of their own: upstream's `focus-visible:ring-3 focus-visible:ring-ring/50` glow
65
- is stripped from every migrated component (FOC-6), and `design-lint`'s `no-focus-ring-glow`
66
- rule is what stops it coming back through a later upstream pull. */
63
+ /* FOC-1 + FOC-13 — the SINGLE focus affordance in the system, and it is NOT a ring.
64
+ No focus ring anywhere except Tabs (MK 2026-09-25): a keyboard user sees a subtle background
65
+ TINT — `accent` at 50%, laid over whatever fill the control already has as a background IMAGE,
66
+ so a primary button, a chip, a row and a menu item all show it without any component
67
+ restating it. Text entry (text inputs, textarea, contenteditable) keeps its border tint
68
+ (FOC-3) and takes no fill. Tabs — the triggers and the panel — keep the 2px `ring` outline,
69
+ which FOC-2 binds to the near-black / near-white ink. Components carry no focus ring of their
70
+ own (FOC-6), and `design-lint`'s `no-focus-ring-glow` rule rejects any focus ring or outline
71
+ class, so one cannot creep back through a later upstream pull. */
67
72
  :focus-visible {
73
+ outline: none;
74
+ }
75
+ :focus-visible:not(
76
+ textarea,
77
+ [contenteditable="true"],
78
+ [role="tab"],
79
+ [role="tabpanel"],
80
+ input:not(
81
+ [type="range"],
82
+ [type="radio"],
83
+ [type="checkbox"],
84
+ [type="button"],
85
+ [type="submit"],
86
+ [type="reset"],
87
+ [type="color"],
88
+ [type="file"]
89
+ )
90
+ ) {
91
+ background-image: linear-gradient(
92
+ color-mix(in oklch, var(--accent) 50%, transparent),
93
+ color-mix(in oklch, var(--accent) 50%, transparent)
94
+ );
95
+ }
96
+ [role="tab"]:focus-visible,
97
+ [role="tabpanel"]:focus-visible {
68
98
  @apply outline-2 outline-offset-1 outline-ring;
69
99
  }
70
100
 
@@ -99,8 +129,10 @@
99
129
  /* FOC-7 — preserve the focus contract when authored colours are replaced by a forced-colours
100
130
  palette. */
101
131
  @media (forced-colors: active) {
132
+ /* Forced colours drop the background tint, so the outline comes back here — and only here. */
102
133
  :focus-visible {
103
- outline-color: Highlight;
134
+ outline: 2px solid Highlight;
135
+ outline-offset: 1px;
104
136
  }
105
137
 
106
138
  /* Text-entry focus (FOC-3). Every text-entry control signals focus with a border TINT and strips
@@ -140,9 +172,12 @@
140
172
  * Users who set `prefers-reduced-motion: reduce` MUST have animations and transitions neutralised
141
173
  * even over component-authored durations; `!important` is the standard, intentional mechanism for
142
174
  * this reset (it has to win against any animated rule, including ones defined later or with higher
143
- * specificity). This is the SOLE place `!important` is permitted in shipped VegaStack CSS, and
175
+ * specificity). This is the SOLE hand-written `!important` in the token CSS, and
144
176
  * `design-lint --token-css` FAILS on any `!important` outside this block. Do not add `!important`
145
- * to win a specificity fight elsewhere; restructure the selector or token instead.
177
+ * to win a specificity fight elsewhere; restructure the selector or token instead. (Component
178
+ * class strings are a separate ledger: Tailwind's `!` modifier compiles to `!important` too, and
179
+ * `design-lint`'s `important` rule allows it only in the counted, upstream-verbatim cases listed
180
+ * in its `IMPORTANT_MODIFIER_EXEMPTIONS`.)
146
181
  * ──────────────────────────────────────────────────────────────────────────────────────────────*/
147
182
  @media (prefers-reduced-motion: reduce) {
148
183
  *,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vegastack/design-tokens",
3
- "version": "0.7.0",
3
+ "version": "0.7.18",
4
4
  "description": "VegaStack design tokens (DTCG → Tailwind v4 theme + TS)",
5
5
  "license": "MIT",
6
6
  "repository": {