@vegastack/design 0.7.45 → 0.7.46

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vegastack/design",
3
- "version": "0.7.45",
3
+ "version": "0.7.46",
4
4
  "description": "VegaStack design system — cn utility, icon runtime, Tailwind v4 preset, and the vegastack-design CLI (tokens ship separately as @vegastack/design-tokens)",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -70,7 +70,7 @@
70
70
  "test": "node test/compare.test.mjs && node test/check-updates.test.mjs && node test/skills-install.test.mjs && node test/doctor.test.mjs"
71
71
  },
72
72
  "dependencies": {
73
- "@vegastack/design-tokens": "^0.7.45",
73
+ "@vegastack/design-tokens": "^0.7.46",
74
74
  "clsx": "^2.1.1",
75
75
  "tailwind-merge": "^3.6.0",
76
76
  "tsconfig-paths": "^4.2.0",
@@ -72,13 +72,18 @@ rg -n 'style=\{\{' --glob '!components/ui/**'
72
72
  ```bash
73
73
  rg -n '#[0-9a-fA-F]{3,8}\b|\b(bg|text|border|ring|fill|stroke)-(slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-[0-9]{2,3}\b' --glob '!components/ui/**'
74
74
  rg -n 'ring-3\b|ring-\[3px\]|ring-ring/[0-9]+|focus-visible:ring-|shadow-\[0_0_0_' --glob '!components/ui/**'
75
+ rg -n '(focus|focus-visible|focus-within|data-focused|popup-open)[^ "]*:border-(ring|primary|input|destructive|foreground)' --glob '!components/ui/**'
75
76
  ```
76
77
 
77
78
  - a hex literal or a numbered Tailwind palette utility — use a semantic token. **error**
78
79
  - **a focus-ring glow** — `ring-3`, `ring-[3px]`, `ring-ring/NN`, `focus-visible:ring-*` or a
79
- `0 0 0` box-shadow ring. The system has ONE focus affordance, the global `:focus-visible` outline;
80
- text entry tints its border instead. A glow usually means a component was pasted from upstream's
80
+ `0 0 0` box-shadow ring. The system has ONE focus affordance, `base.css`'s global background
81
+ tint, text entry included. A glow usually means a component was pasted from upstream's
81
82
  docs without the patch. **error**
83
+ - **a focus border** — a border colour under a focus or open-popup variant (`focus:border-ring/70`,
84
+ `focus-within:border-ring`, `data-popup-open:border-input`, `not-focus:aria-invalid:…`). A border
85
+ never changes colour on focus or while active (FOC-14); only an invalid field's destructive border
86
+ shows, in every state. **error**
82
87
  - a status FILL used as a text ink on that family's own tint — `bg-destructive/10 text-destructive`
83
88
  measures 3.98:1. The readable half is `text-destructive-text`. **error**
84
89
  - `text-brand` used as a label — `brand` is a 3:1 marker; labels take `text-brand-text`. **error**
@@ -374,9 +374,11 @@ contract.
374
374
  **Don't**
375
375
 
376
376
  - Hardcode a hex, a px value, or a raw Tailwind palette class (`bg-neutral-900`, `text-red-500`).
377
- - Add a focus ring, outline or glow. No focus rings anywhere, Tabs included: `base.css` paints a subtle
378
- background tint on `:focus-visible` and text entry tints its border instead; `ring-3`,
379
- `ring-ring/50`, `focus-visible:ring-*` and `focus-visible:outline-*` are rejected by lint.
377
+ - Add a focus ring, outline, glow or focus border. No focus rings anywhere, Tabs included: `base.css`
378
+ paints a subtle background tint on focus, text entry included, and no border changes colour on
379
+ focus or while a popup is open (FOC-14) — only an invalid field's destructive border, which holds
380
+ in every state. `ring-3`, `ring-ring/50`, `focus-visible:ring-*`, `focus-visible:outline-*` and
381
+ any `focus:`/`focus-within:`/`data-popup-open:` border colour are rejected by lint.
380
382
  - Leave a neutral hover on a button inside a tinted container — a status `Alert` already gives its
381
383
  buttons the family's own hover; don't override it back to `hover:bg-muted`.
382
384
  - Set `outline-none` without providing another focus affordance.
@@ -31,7 +31,7 @@ starts with `icon-` is a component and never an icon.
31
31
  - **`editable-cell`** — Inline-editable value whose edit mode looks like view — same box, inherited type, no border — with optimistic saves, a delayed spinner, rollback plus a Retry toast on failure, required, multiline, table-cell and heading variants, and a typed text/select/custom editor registry.
32
32
  - **`emoji-picker`** — A popover with a quick row, search, a category bar, recents and a category-grouped grid of emoji that returns the selected character via onValueChange (curated set, loaded lazily).
33
33
  - **`field`** — The form-field scaffold — label, description, error, legend, separator and choice-card layouts.
34
- - **`input`** — A styled Base UI input for every text-entry type: a bordered default with the focus border tint (FOC-3), or a borderless ghost title field tinted on hover and focus; sm, default and lg sizes.
34
+ - **`input`** — A styled Base UI input for every text-entry type: a bordered default whose border never moves on focus (FOC-14), or a borderless ghost title field tinted on hover and focus; sm, default and lg sizes.
35
35
  - **`input-group`** — An input or textarea with addons — icons, text, buttons, kbd hints and spinners on one surface.
36
36
  - **`input-otp`** — A one-time-password field with per-character slots, driven by one hidden input.
37
37
  - **`label`** — A styled native label for form controls.
@@ -46,7 +46,7 @@ starts with `icon-` is a component and never an icon.
46
46
  - **`select`** — A dropdown for one value — trigger, grouped scrollable popup and item-aligned positioning.
47
47
  - **`slider`** — A number or range over a continuous track — horizontal or vertical, any number of thumbs.
48
48
  - **`switch`** — An on/off toggle for instant settings — two sizes and a 24px invisible hit area (A11Y-2).
49
- - **`textarea`** — A styled native textarea that grows with its content, with the text-entry focus border tint (FOC-3).
49
+ - **`textarea`** — A styled native textarea that grows with its content, with the background focus tint and a border that never moves (FOC-14).
50
50
 
51
51
  ## Display
52
52