@qovira/theme 1.0.0 → 1.0.2

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/README.md CHANGED
@@ -2,16 +2,17 @@
2
2
 
3
3
  Qovira's visual foundation as a distributable package: **Tailwind v4 tokens**,
4
4
  **self-hosted fonts**, and a small **framework-agnostic theming runtime**. It is
5
- the single source of color, type, spacing, radius, elevation, motion, and the two
6
- themes — **Daylight** and **Evening** — shared by every Qovira surface (the
7
- product web app and the [qovira.ai](http://qovira.ai) marketing site), so the
8
- brand stays identical across them without copy-paste.
5
+ the single source of color, type, radius, elevation, and motion plus spacing on
6
+ Tailwind's stock 4px grid and the two themes, **Daylight** and **Evening**,
7
+ shared by every Qovira surface (the product web app and the
8
+ [qovira.ai](https://qovira.ai) marketing site), so the brand stays identical
9
+ across them without copy-paste.
9
10
 
10
11
  The package is the _foundation_ a component library is built on — it ships only
11
12
  tokens, fonts, and a tiny runtime, and has **no framework dependency**.
12
13
 
13
- > Status: early development. Tokens, fonts, runtime, and utilities are being
14
- > filled in; some entry points still resolve to placeholders.
14
+ > Status: stable (1.0). Tokens, fonts, runtime, and utilities are shipped; all
15
+ > four entry points resolve to real assets.
15
16
 
16
17
  ## Install
17
18
 
@@ -56,12 +57,7 @@ import { boot } from "@qovira/theme/boot"; // the raw snippet, as a string
56
57
  ### 3. Toggle / persist — `@qovira/theme/runtime`
57
58
 
58
59
  ```ts
59
- import {
60
- getTheme,
61
- setTheme,
62
- toggleTheme,
63
- subscribe,
64
- } from "@qovira/theme/runtime";
60
+ import { getTheme, setTheme, toggleTheme, subscribe } from "@qovira/theme/runtime";
65
61
  ```
66
62
 
67
63
  Framework-agnostic get/set/persist with cross-tab sync. A Svelte store/rune
@@ -235,12 +231,52 @@ Use `rounded-full` only for true pills, toggles, and avatars.
235
231
 
236
232
  ```sh
237
233
  pnpm install
238
- pnpm build # tsup → dist/{runtime,boot}.js + copy CSS/fonts → dist/
234
+ pnpm build # tsup → dist/{runtime,boot}.js (+ .d.ts) + copy CSS/fonts → dist/
239
235
  pnpm typecheck # tsc --noEmit
240
236
  pnpm lint # eslint + prettier --check
241
237
  pnpm test # vitest run
242
238
  ```
243
239
 
240
+ ## Versioning & releases
241
+
242
+ `@qovira/theme` follows **[semantic versioning](https://semver.org)**. It's the
243
+ upstream of the Qovira stack: a breaking change here (a removed token, a changed
244
+ runtime API) ripples to every consumer, so the version is a real contract.
245
+
246
+ | Bump | What changed |
247
+ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
248
+ | **major** | A breaking change: a token/utility/entry-point removed or renamed, a breaking runtime-API or storage-key change, a dropped theme/font, or a raised `tailwindcss` peer range. |
249
+ | **minor** | A backward-compatible addition: a new token, utility, font, or additive runtime API. |
250
+ | **patch** | A backward-compatible fix: a corrected token value, an accessibility/contrast fix, or a runtime edge-case fix. |
251
+
252
+ ### Cutting a release
253
+
254
+ Versioning and the changelog are driven by
255
+ [Changesets](https://github.com/changesets/changesets). The flow:
256
+
257
+ 1. **As you work**, record each consumer-visible change with a changeset —
258
+ `pnpm changeset` prompts for the bump level (per the table above) and a
259
+ summary, writing a file under `.changeset/`. (See `.changeset/README.md`.)
260
+ 2. **To release**, run `pnpm version-packages` (`changeset version`) on `main`:
261
+ it consumes the pending changesets, bumps `package.json`, and updates
262
+ `CHANGELOG.md`. Commit that, then create and push a matching `vX.Y.Z` tag.
263
+ 3. **The tag triggers** [`.github/workflows/release.yml`](.github/workflows/release.yml):
264
+ the full gate (tag-vs-`package.json`, build, lint, typecheck, test) runs on
265
+ Blacksmith, then a single GitHub-hosted job publishes to npm via **Trusted
266
+ Publishing** (tokenless OIDC) with a **provenance attestation**. Only `dist/`
267
+ is in the published tarball (`files: ["dist"]`).
268
+
269
+ > **One-time npm setup** (outside this repo): on npmjs.com, configure
270
+ > `@qovira/theme`'s **Trusted Publisher** to point at this repository and the
271
+ > release workflow. No `NPM_TOKEN` secret is used — Trusted Publishing replaces
272
+ > long-lived tokens entirely.
273
+
274
+ ## Contributing
275
+
276
+ Contributions are welcome — read [CONTRIBUTING.md](./CONTRIBUTING.md) first, and
277
+ please follow the [Code of Conduct](./CODE_OF_CONDUCT.md). Open an issue before
278
+ sending a PR that adds or changes a token, color, or entry point.
279
+
244
280
  ## License
245
281
 
246
282
  [Apache-2.0](./LICENSE) © OMNILIUM ADVANCED CYBERNETICS SRL
package/dist/theme.css CHANGED
@@ -55,7 +55,7 @@
55
55
  * Per-theme tint/text aliases live in the semantic layer. */
56
56
  --color-success: #2f9e6b;
57
57
  --color-warning: #e08a1e;
58
- --color-error: #d6452e;
58
+ --color-error: #cc4029; /* darkened from #d6452e so white text clears WCAG AA (4.5:1) on bg-error fills */
59
59
  --color-info: #3b72c0;
60
60
 
61
61
  /* Font families. font-family is intentionally NOT carried by the --text-*
@@ -179,12 +179,9 @@
179
179
 
180
180
  --focus-ring: #e0a458; /* honey, both themes */
181
181
 
182
- --shadow-sm:
183
- 0 1px 2px rgba(30, 24, 18, 0.1), 0 1px 1px rgba(30, 24, 18, 0.06);
184
- --shadow-md:
185
- 0 2px 4px rgba(30, 24, 18, 0.08), 0 8px 20px rgba(30, 24, 18, 0.18);
186
- --shadow-lg:
187
- 0 4px 8px rgba(30, 24, 18, 0.1), 0 20px 48px rgba(30, 24, 18, 0.26);
182
+ --shadow-sm: 0 1px 2px rgba(30, 24, 18, 0.1), 0 1px 1px rgba(30, 24, 18, 0.06);
183
+ --shadow-md: 0 2px 4px rgba(30, 24, 18, 0.08), 0 8px 20px rgba(30, 24, 18, 0.18);
184
+ --shadow-lg: 0 4px 8px rgba(30, 24, 18, 0.1), 0 20px 48px rgba(30, 24, 18, 0.26);
188
185
  --lamp-glow: 0 0 22px rgba(224, 164, 88, 0.5);
189
186
 
190
187
  /* Status tint/text — meaning only, never decoration. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qovira/theme",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Qovira's visual foundation — Tailwind v4 tokens, self-hosted fonts, and a framework-agnostic theming runtime.",
5
5
  "keywords": [
6
6
  "qovira",
@@ -39,6 +39,7 @@
39
39
  "tailwindcss": "^4.0.0"
40
40
  },
41
41
  "devDependencies": {
42
+ "@changesets/cli": "^2.31.0",
42
43
  "@eslint/js": "^10.0.1",
43
44
  "@fontsource-variable/figtree": "^5.2.10",
44
45
  "@fontsource-variable/fraunces": "^5.2.9",
@@ -63,6 +64,8 @@
63
64
  "typecheck": "tsc --noEmit",
64
65
  "lint": "eslint . && prettier --check .",
65
66
  "format": "prettier --write .",
66
- "test": "vitest run"
67
+ "test": "vitest run",
68
+ "changeset": "changeset",
69
+ "version-packages": "changeset version"
67
70
  }
68
71
  }