@omkarux/vela 0.3.0 → 0.4.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,44 @@
3
3
  All notable changes to this project are documented here.
4
4
  This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5
5
 
6
+ ## [0.4.0] — 2026-09-10
7
+
8
+ ### Added
9
+ - **Guidance for using the system on a stack that isn't React.** `guidelines/setup.md` and the
10
+ README now state plainly which layers travel and which don't: the tokens and the specs port
11
+ unchanged, the components do not. `npm i @omkarux/vela` followed by importing only
12
+ `tokens.css` gives an Angular, Vue, Svelte or server-rendered app the full palette, both
13
+ themes and the whole scale with no React in its dependency tree.
14
+ - `llms.txt` now tells a coding agent the specs are implementation-independent, so an agent
15
+ generating Angular follows every rule here and translates only the syntax.
16
+
17
+ ### Changed
18
+ - Stopped describing this as a "React component kit" in the README, the npm description and
19
+ `llms.txt`. It was accurate about the package and misleading about the method — React is the
20
+ boundary of *this implementation*, not of the approach, and conflating the two undersells the
21
+ contract, which is the part that actually ports.
22
+
23
+ ## [0.3.1] — 2026-09-10
24
+
25
+ ### Fixed
26
+ - **The release workflow could never publish.** It triggered only on pushes to `main` and on pull
27
+ requests, while the publish job gated on `refs/tags/v*` — so a tag push matched no trigger and
28
+ the job never ran. Tags are now listed explicitly.
29
+ - Trusted publishing requires npm >= 11.5.1; Node 22 ships npm 10.x. The publish job now upgrades
30
+ npm first. Without it npm falls back to looking for a token and fails with `ENEEDAUTH`, which
31
+ reads like a credentials problem rather than a version one.
32
+
33
+ - **`scripts/verify-pack.mjs` crashed on `npm pack --json`.** It assumed an array and indexed
34
+ `[0].filename` directly, which threw a bare `TypeError` when npm returned a different shape from
35
+ inside a lifecycle script. It now parses defensively and reports the actual output.
36
+ - The publish job no longer re-runs the full gate. `prepublishOnly` fired inside `npm publish`,
37
+ repeating work the `verify` job had already done and putting a second failure surface inside the
38
+ publish step — which is what broke the first tagged release. The gate runs once, in `verify`.
39
+
40
+ This release exists to prove the pipeline end to end. The tarball contents are unchanged from
41
+ 0.3.0 — but this one was built and published by CI from a git tag, with a provenance attestation
42
+ tying it to the commit, rather than by hand from a laptop.
43
+
6
44
  ## [0.3.0] — 2026-09-10
7
45
 
8
46
  ### Added
package/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # Vela
2
2
 
3
- A token-first React component kit. Six components, two themes, zero runtime dependencies
4
- and every design rule in the documentation is enforced by the TypeScript compiler.
3
+ A token-first design system. The tokens and the component specs are framework-agnostic;
4
+ this repository is a **React implementation** of them. Six components, two themes, zero runtime
5
+ dependencies — and every design rule in the documentation is enforced by the TypeScript compiler.
5
6
 
6
7
  ```bash
7
8
  npm install @omkarux/vela
@@ -100,6 +101,26 @@ npm run contrast # WCAG report for both themes
100
101
  npm run verify # typecheck + tests + build + pack-and-consume gate
101
102
  ```
102
103
 
104
+ ## Using it on another stack
105
+
106
+ Worth being precise about what travels and what doesn't:
107
+
108
+ | Layer | Ports? |
109
+ |---|---|
110
+ | **Tokens** (`dist/tokens.css`) | **Entirely.** Plain CSS custom properties — Angular, Vue, Svelte, Rails, plain HTML. From the same source you could emit Swift, Kotlin or XML for native. |
111
+ | **The contract** (`guidelines/`) | **Entirely.** Intent, closed prop sets, token bindings, accessibility, anti-patterns. Only the code samples are React-shaped. |
112
+ | **Components** (`dist/index.js`) | **No.** One implementation per framework, by definition. |
113
+ | **The contrast audit** (`npm run contrast`) | **Entirely.** It parses CSS and knows nothing about React. |
114
+
115
+ So on Angular you would take `tokens.css` and `guidelines/` unchanged, and write the components
116
+ against your own idioms — standalone components, signals, `ControlValueAccessor` for form controls.
117
+ The closed prop sets become union input types with `strictTemplates` enabled, which buys most of
118
+ what the discriminated unions buy here.
119
+
120
+ This is not a limitation to work around. If an organisation runs more than one framework, no
121
+ framework's components can be the source of truth for the others — **the only thing that can be
122
+ shared is the contract**, which is the argument this repository exists to make.
123
+
103
124
  ## Scope
104
125
 
105
126
  Six components, chosen to exercise every foundation and both status taxonomies. Not yet
@@ -1,8 +1,13 @@
1
1
  # Vela Design System
2
2
 
3
- > A token-first React component kit. Two-layer colour architecture (primitives -> semantics),
4
- > three deliberately separate status taxonomies, full light and dark theming, zero runtime
5
- > dependencies. Every design constraint below is enforced by the TypeScript types, not by review.
3
+ > A token-first design system. Two-layer colour architecture (primitives -> semantics), three
4
+ > deliberately separate status taxonomies, full light and dark theming, zero runtime dependencies.
5
+ > Every design constraint below is enforced by the TypeScript types, not by review.
6
+ >
7
+ > THESE SPECS ARE FRAMEWORK-AGNOSTIC. The published package is a React implementation of them, and
8
+ > the code samples below are React — but the tokens, the closed prop sets, the taxonomies and the
9
+ > accessibility rules hold for any implementation. If you are generating for Angular, Vue or
10
+ > Svelte, follow every rule here and translate only the syntax.
6
11
 
7
12
  Read `overview.md` first: it maps a user need to a component and lists the choices agents
8
13
  most often get wrong. Then read the per-component file before generating any markup.
@@ -59,6 +59,20 @@ fallbacks in the font stack, so the kit degrades rather than breaks if you do no
59
59
 
60
60
  ## Framework
61
61
 
62
- React 18.3+ / 19. Components are plain functional components consuming `--vela-*` tokens.
63
- There is no CSS-in-JS runtime, no Tailwind requirement, and no icon-library dependency
64
- the token layer is plain CSS custom properties and works in any framework.
62
+ **This package:** React 18.3+ / 19. Plain functional components consuming `--vela-*` tokens.
63
+ No CSS-in-JS runtime, no Tailwind requirement, no icon-library dependency.
64
+
65
+ **Any other framework:** the token layer and the specs port unchanged; the components do not.
66
+
67
+ ```bash
68
+ npm install @omkarux/vela # then import only the tokens
69
+ ```
70
+ ```ts
71
+ import '@omkarux/vela/tokens.css'
72
+ ```
73
+
74
+ That gives an Angular, Vue, Svelte or server-rendered app the full two-layer palette, both themes,
75
+ the spacing and sizing scales and the type ramp — with no React in the dependency tree. Build the
76
+ components against your own framework's idioms and hold them to `guidelines/`, which is written to
77
+ be implementation-independent. On Angular, the closed prop sets become union input types with
78
+ `strictTemplates` enabled; that buys most of what the discriminated unions buy in React.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@omkarux/vela",
3
- "version": "0.3.0",
4
- "description": "A token-first React component kit: two-layer color architecture, separate severity and risk taxonomies, full light and dark theming, zero runtime dependencies.",
3
+ "version": "0.4.0",
4
+ "description": "A token-first design system: framework-agnostic tokens and component specs with a React implementation. Two-layer color architecture, separate severity and risk taxonomies, light and dark theming, WCAG AA asserted in CI, zero runtime dependencies.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "author": "Omkar Khadamkar",