@redspartanlabs/spartacss 0.0.0-stage → 1.0.3

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 (59) hide show
  1. package/CHANGELOG.md +499 -0
  2. package/LICENSE +201 -0
  3. package/NOTICE +123 -0
  4. package/README.md +287 -2
  5. package/RELEASING.md +302 -0
  6. package/dist/sparta-all.css +5566 -0
  7. package/dist/sparta-all.min.css +1 -0
  8. package/dist/sparta-icons.css +953 -0
  9. package/dist/sparta-icons.min.css +1 -0
  10. package/dist/sparta-notifications.css +607 -0
  11. package/dist/sparta-notifications.min.css +1 -0
  12. package/dist/sparta.css +851 -0
  13. package/dist/sparta.min.css +1 -0
  14. package/dist/spartacss.css +4325 -0
  15. package/dist/spartacss.min.css +1 -0
  16. package/docs/README.md +123 -0
  17. package/docs/accessibility.md +125 -0
  18. package/docs/accordion.md +79 -0
  19. package/docs/adr/0001-package-architecture.md +56 -0
  20. package/docs/adr/0002-versioning-and-stability-policy.md +104 -0
  21. package/docs/adr/0003-independent-iconography-system.md +154 -0
  22. package/docs/adr/0004-git-tag-artifact-distribution.md +146 -0
  23. package/docs/adr/0005-canonical-ui-component-standard.md +306 -0
  24. package/docs/adr/0006-npm-registry-distribution.md +112 -0
  25. package/docs/alert.md +75 -0
  26. package/docs/app-shell.md +97 -0
  27. package/docs/avatar.md +105 -0
  28. package/docs/badge.md +120 -0
  29. package/docs/breadcrumbs.md +69 -0
  30. package/docs/button.md +92 -0
  31. package/docs/card.md +79 -0
  32. package/docs/code.md +88 -0
  33. package/docs/design/component-standard.md +787 -0
  34. package/docs/design/icon-provenance-inventory.md +171 -0
  35. package/docs/design/icon-standard.md +365 -0
  36. package/docs/divider.md +78 -0
  37. package/docs/drawer.md +114 -0
  38. package/docs/dropdown.md +93 -0
  39. package/docs/empty-state.md +64 -0
  40. package/docs/extraction-plan.md +116 -0
  41. package/docs/forms.md +207 -0
  42. package/docs/icons.md +94 -0
  43. package/docs/kbd.md +52 -0
  44. package/docs/layout.md +102 -0
  45. package/docs/link.md +93 -0
  46. package/docs/list.md +68 -0
  47. package/docs/modal.md +94 -0
  48. package/docs/motion.md +98 -0
  49. package/docs/notifications.md +188 -0
  50. package/docs/page-header.md +88 -0
  51. package/docs/pagination.md +71 -0
  52. package/docs/progress.md +136 -0
  53. package/docs/stat.md +92 -0
  54. package/docs/table.md +80 -0
  55. package/docs/tabs.md +71 -0
  56. package/docs/theming.md +55 -0
  57. package/docs/tokens.md +167 -0
  58. package/docs/tooltip.md +58 -0
  59. package/package.json +52 -4
package/CHANGELOG.md ADDED
@@ -0,0 +1,499 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
7
+ per ADR-0001.
8
+
9
+ ## [1.0.3] - 2026-10-09
10
+
11
+ ### Added
12
+
13
+ - [ADR-0006](docs/adr/0006-npm-registry-distribution.md), which records npm
14
+ (the public registry) as SpartaCSS's intended registry under the name
15
+ `@redspartanlabs/spartacss`, GitHub as the canonical home for source, tags
16
+ and releases, publication as a manual and irreversible step, and `1.0.2` as
17
+ a GitHub-only release. Git-tag installation remains supported.
18
+ - A "Publishing to npm" procedure in `RELEASING.md`: preflight checks for the
19
+ release tag and commit, name and version, rebuild and verification, package
20
+ inventory and integrity, registry target, authentication and access, and
21
+ version availability; publication of the verified tarball with
22
+ `--access public`; and verification of the published metadata, contents and
23
+ a clean consumer install.
24
+
25
+ ### Changed
26
+
27
+ - The README now names npm as the intended distribution channel and no longer
28
+ says registry selection is pending. It does not claim that any version is
29
+ available on npm.
30
+ - [ADR-0001](docs/adr/0001-package-architecture.md) and
31
+ [ADR-0004](docs/adr/0004-git-tag-artifact-distribution.md) gained
32
+ cross-references to ADR-0006. Their decisions are unchanged.
33
+
34
+ This release changes documentation and the release procedure only. No public
35
+ class selector, modifier, design token, markup contract or `exports` entry
36
+ point changed, no shipped CSS output changed, and the package whitelist is
37
+ unchanged — a non-breaking, patch-level change per ADR-0002. The package gains
38
+ ADR-0006 under `docs/adr/`.
39
+
40
+ ## [1.0.2] - 2026-10-09
41
+
42
+ ### Changed
43
+
44
+ - The package now includes its documentation. `package.json`'s `files` list
45
+ adds `docs/`, `CHANGELOG.md` and `RELEASING.md`, so the documentation
46
+ index, the component and foundation pages, the `docs/adr/` and
47
+ `docs/design/` material, and the files that the README and the
48
+ documentation link to are present in an installed package. No shipped CSS,
49
+ `exports` entry or package behavior changes. The `files` change was checked
50
+ against [ADR-0004](docs/adr/0004-git-tag-artifact-distribution.md)
51
+ Decisions 2 and 8: Decision 2 names the release contents as sitting
52
+ "alongside" the whitelisted files and does not make that list exclusive, and
53
+ Decision 8's `exports` map is unchanged.
54
+ - Reworded the sentence in
55
+ [ADR-0005](docs/adr/0005-canonical-ui-component-standard.md) that describes
56
+ how RedSpartan HQ presents SpartaCSS. The record remains `Proposed`.
57
+
58
+ ## [1.0.1] - 2026-08-13
59
+
60
+ ### Fixed
61
+
62
+ - Corrected the Git-tag distribution architecture: removed the `prepare`
63
+ lifecycle script so `npm install github:redspartanlabs/spartacss#<tag>`
64
+ no longer executes SpartaCSS's build on the consumer's machine. Release
65
+ tags now carry the prebuilt `dist/` artifacts directly (see
66
+ [ADR-0004](docs/adr/0004-git-tag-artifact-distribution.md)).
67
+ - Replaced POSIX-only build/clean scripts (`rm -rf`, `mkdir -p`, `cp`) with
68
+ cross-platform Node equivalents, and replaced the Bash-only
69
+ `verify-legacy-bundle.sh` with `scripts/verify-legacy-bundle.mjs`, so the
70
+ maintainer build works under Windows `cmd.exe`, not only POSIX shells.
71
+ - Added `.gitattributes` (`*.css text eol=lf`) so committed CSS artifacts
72
+ have stable line endings independent of the checkout platform's
73
+ `core.autocrlf` setting.
74
+
75
+ ### Added
76
+
77
+ - `npm run verify:artifact` (`scripts/verify-release-artifact.mjs`), which
78
+ checks that every `package.json` `exports` entry resolves to a built,
79
+ non-empty `dist/` file — the mechanical release-artifact check
80
+ referenced by `RELEASING.md` and
81
+ [ADR-0004](docs/adr/0004-git-tag-artifact-distribution.md).
82
+ - `allowScripts` in `package.json`, explicitly approving
83
+ `lightningcss-cli@1.33.0`'s install script under npm 12's
84
+ script-approval policy, so the maintainer build's Lightning CSS binary
85
+ stages correctly.
86
+
87
+ This release changes SpartaCSS's build tooling and Git-tag distribution
88
+ mechanism only. No public class selector, modifier, design token,
89
+ markup contract, or `exports` entry point changed, and no shipped CSS
90
+ output changed — a non-breaking, patch-level change per ADR-0002.
91
+
92
+ ## [1.0.0] - 2026-08-12
93
+
94
+ ### Changed
95
+
96
+ - Replaced inherited Feather/Lucide geometry with original RedSpartan
97
+ construction, per [ADR-0003](docs/adr/0003-independent-iconography-system.md)
98
+ and [`docs/design/icon-standard.md`](docs/design/icon-standard.md), for
99
+ the 11 frozen foundational icons: `check`, `chevron-down`, `arrow-right`,
100
+ `sort-asc`, `sort-desc`, `x`, `plus`, `minus`, `search`, `settings`,
101
+ `user`. This includes the two consumers that source shared foundational
102
+ geometry outside the `.sp-icon-*` class system —
103
+ `--sp-icon-bg-check-white` (checkbox/list checkmark) and the local
104
+ `.sp-select` chevron in `sparta-form.css` — both now match their
105
+ respective frozen constructions.
106
+ - **Visible identity change:** `settings` changed from a gear glyph to a
107
+ sliders glyph (three horizontal tracks with filled thumbs) as part of
108
+ the frozen-geometry replacement above. Consumers styling or measuring
109
+ the `.sp-icon-settings` shape specifically, rather than treating it as
110
+ an opaque icon, should verify their usage against the new construction.
111
+
112
+ ## [0.9.2] - 2026-08-07
113
+
114
+ ### Fixed
115
+
116
+ - Restored `@layer components` placement for `src/core/sparta-utilities.css`,
117
+ the same correction applied to the icons and notifications modules in
118
+ `0.9.1`. This file was unlayered with no documented rationale; two of
119
+ its selectors (`.sp-navbar__toggle`, `.sp-alert__icon`) are the sole
120
+ source of that property for their component, making this the same
121
+ category of undocumented cascade-precedence gap ADR-0002 was written
122
+ to close. No selector, declaration, value, or ordering changed — only
123
+ cascade-layer membership was corrected.
124
+ - `package.json` `version` corrected to `0.9.2`. The `0.9.1` release was
125
+ published with `package.json` still reading `"version": "0.9.0"` — a
126
+ release-process metadata error (see the `0.9.1` entry below). This
127
+ release restores agreement between the package version, the CHANGELOG,
128
+ the git tag, and the GitHub release, per `RELEASING.md`.
129
+
130
+ ### Added
131
+
132
+ - `RELEASING.md` — the operational release checklist, kept separate from
133
+ `docs/adr/0002-versioning-and-stability-policy.md` (which defines what
134
+ counts as a breaking change, not how to execute a release).
135
+
136
+ ## [0.9.1] - 2026-08-07
137
+
138
+ ### Fixed
139
+
140
+ - Restored `@layer components` placement for `sparta-icons.css` and
141
+ `sparta-notifications.css`. Both modules were unlayered from
142
+ extraction through `0.9.0` — an undocumented oversight, not a
143
+ deliberate design choice (the pre-extraction monolith's rules
144
+ originated inside `@layer components`; see `docs/extraction-plan.md`).
145
+ No selector, declaration, value, or ordering changed — only
146
+ cascade-layer membership was corrected.
147
+ - Added the missing `--sp-shadow-xl` design token. It was referenced by
148
+ the Confirm/Dialog component's `box-shadow` but never defined, which
149
+ silently dropped the shadow entirely. The token now resolves correctly
150
+ across the default, light, and dark themes.
151
+
152
+ ### Added
153
+
154
+ - `Source:` footers to `docs/app-shell.md`, `docs/layout.md`, and
155
+ `docs/theming.md`, bringing them in line with the documentation
156
+ convention established in `0.8.0`/`0.9.0`.
157
+ - `docs/adr/0002-versioning-and-stability-policy.md` — defines what
158
+ constitutes a breaking change for SpartaCSS ahead of `1.0.0`, using
159
+ the `@layer` correction above as its founding precedent.
160
+
161
+ ### Known issue
162
+
163
+ - This release was published with `package.json` still reading
164
+ `"version": "0.9.0"` instead of `0.9.1` — a release-process metadata
165
+ error, not a CSS API change. The published `v0.9.1` git tag and GitHub
166
+ release are unaffected and remain the authoritative historical
167
+ artifacts for this version; they have not been modified. The version
168
+ field was corrected in `0.9.2`.
169
+
170
+ ## [0.9.0] - 2026-08-07
171
+
172
+ ### Added
173
+
174
+ - Component and module documentation completing the coverage started in
175
+ `0.8.0`, using the established consumer-facing template and the
176
+ combine-when-shared-source-file convention:
177
+ - `docs/drawer.md` — including the `.sp-backdrop` relationship and the
178
+ consumer responsibility around toggling it alongside `--open`.
179
+ - `docs/dropdown.md`
180
+ - `docs/table.md`
181
+ - `docs/tabs.md`
182
+ - `docs/pagination.md`
183
+ - `docs/breadcrumbs.md`
184
+ - `docs/stat.md`
185
+ - `docs/avatar.md` (`.sp-avatar` + `.sp-avatar-group`)
186
+ - `docs/progress.md` (Spinner, Progress Bar, and Skeleton)
187
+ - `docs/list.md`
188
+ - `docs/link.md`
189
+ - `docs/divider.md`
190
+ - `docs/kbd.md`
191
+ - `docs/empty-state.md`
192
+ - `docs/code.md` (inline code, code blocks, and syntax tokens)
193
+ - `docs/page-header.md`
194
+ - `docs/icons.md`
195
+ - `docs/notifications.md` (Toast, Alert Banner, and Confirm/Dialog)
196
+ - `--sp-ease-in` and `--sp-ease-back` in `sparta-tokens.css` — previously
197
+ referenced by the notifications module's Toast exit, Dialog overlay
198
+ exit, and Dialog entrance animations but never defined, which silently
199
+ dropped all three animations. Purely additive; no existing token
200
+ changed.
201
+ - `.sp-modal--closing` support for the supported Modal API
202
+ (`.sp-modal__overlay` / `.sp-modal__content`), mirroring the exit
203
+ transition the frozen legacy API (`.sp-modal-backdrop` /
204
+ `.sp-modal__dialog`) already had — closing a parity gap named at
205
+ `0.6.0`. Legacy behavior is unchanged.
206
+
207
+ ### Changed
208
+
209
+ - `docs/tooltip.md`, `docs/accordion.md`, `docs/modal.md` now link to
210
+ `docs/motion.md` and `docs/accessibility.md` for reduced-motion and
211
+ CSS-vs-JavaScript responsibility guidance instead of only stating it
212
+ inline.
213
+ - `docs/modal.md` updated to reflect that `.sp-modal--closing` is now
214
+ supported by both the current and legacy Modal APIs.
215
+
216
+ ## [0.8.0] - 2026-08-06
217
+
218
+ ### Added
219
+
220
+ - Foundation documentation:
221
+ - `docs/tokens.md` — token naming conventions, the color system,
222
+ typography tokens, the spacing scale, and reference-vs-override
223
+ guidance.
224
+ - `docs/motion.md` — transition tokens, the animation layer, and the
225
+ `prefers-reduced-motion` contract.
226
+ - `docs/accessibility.md` — CSS vs. JavaScript responsibility, keyboard
227
+ and focus expectations, ARIA responsibility boundaries, and semantic
228
+ HTML expectations.
229
+ - Component documentation, using the established consumer-facing template
230
+ (Purpose, Usage, Class API, Variants, State modifiers, Accessibility,
231
+ Source reference):
232
+ - `docs/button.md`
233
+ - `docs/forms.md`
234
+ - `docs/card.md`
235
+ - `docs/badge.md`
236
+ - `docs/alert.md`
237
+
238
+ ### Changed
239
+
240
+ - Documentation is now organized around a clear separation of concerns:
241
+ repository Markdown as the source of truth, foundation guidance (tokens,
242
+ motion, accessibility) separated from component API usage, and
243
+ accessibility responsibilities documented centrally rather than repeated
244
+ per component.
245
+
246
+ ## [0.7.0] - 2026-08-04
247
+
248
+ ### Changed
249
+
250
+ - Package maturity work: `package.json` `version` bumped `0.2.0` → `0.7.0`.
251
+ - `package.json` `description` replaced with a framework-agnostic tagline:
252
+ "A framework-agnostic CSS design system built for systems that must
253
+ last."
254
+ - Removed `"private": true` from `package.json` — SpartaCSS is now intended
255
+ for public npm distribution rather than being flagged as an internal
256
+ package.
257
+
258
+ ### Added
259
+
260
+ - `homepage` field in `package.json`, pointing at the repository's README.
261
+ - `keywords` field in `package.json` (`css`, `design-system`,
262
+ `framework-agnostic`, `frontend`, `web-development`) for registry
263
+ discoverability.
264
+
265
+ ## [0.6.0] - 2026-08-02
266
+
267
+ ### Added
268
+
269
+ - `--sp-bg-inverse` in `sparta-tokens.css` — a theme-invariant surface
270
+ token (`:root` only, not overridden per theme), mirroring the existing
271
+ theme-invariant `--sp-text-inverse`. Needed because every other
272
+ `--sp-bg-*` token flips per theme, but inverse-context UI (Tooltip's
273
+ surface) needs a background that stays dark regardless of the active
274
+ theme so its `--sp-text-inverse` text stays legible. Verified no
275
+ existing token already covered this before adding it.
276
+ - `docs/tooltip.md`, `docs/accordion.md`, `docs/modal.md` — the first
277
+ usage documentation for these three components, each naming the
278
+ supported and documented selector set and pointing at its frozen
279
+ legacy counterpart.
280
+
281
+ ### Changed
282
+
283
+ - `.sp-tooltip__text` (`sparta-tooltip.css`) now sources its background
284
+ from `--sp-bg-inverse` instead of a hardcoded `#111111` literal.
285
+ Value-for-value substitution only — no visual change in either theme,
286
+ since the supported tooltip API never varied by theme to begin with.
287
+ - `.sp-tooltip__text` now respects `prefers-reduced-motion: reduce`,
288
+ disabling its show/hide transition — ported from the legacy
289
+ `[data-tooltip]` implementation, which already had this and the
290
+ supported one didn't.
291
+ - `.sp-tooltip`/`.sp-tooltip__text`, `.sp-accordion__header`/
292
+ `.sp-accordion__icon`, and `.sp-modal__overlay`/`.sp-modal__content`
293
+ are now explicitly designated the supported, documented API for
294
+ Tooltip, Accordion, and Modal respectively. Their legacy counterparts
295
+ (`[data-tooltip]`/`.sp-tooltip--visible`, `.sp-accordion__trigger`/
296
+ `.sp-accordion__content--animated`, `.sp-modal-backdrop`/
297
+ `.sp-modal__dialog`) are now explicitly marked frozen in source
298
+ comments — same convention as `.sp-flex`/atomic utilities since
299
+ `0.4.0`. This closes debt named at extraction (see `0.2.0`'s
300
+ "Unchanged (verified)" section and ADR-0001) but never resolved.
301
+
302
+ ### Unchanged (verified)
303
+
304
+ - No legacy selector was removed, renamed, or had its computed output
305
+ changed. `[data-tooltip]`, `.sp-tooltip--visible`,
306
+ `.sp-accordion__trigger`, `.sp-accordion__content--animated`,
307
+ `.sp-modal-backdrop`, and `.sp-modal__dialog` render identically to
308
+ `0.5.0` — confirmed via baseline diff showing zero lines touched in
309
+ any of their rules.
310
+ - No new components. No `.sp-sidebar` work — still deferred per `0.5.0`.
311
+ - Modal's legacy-only `--closing` exit-transition state was not ported
312
+ to the supported and documented API — a real feature gap, but out of
313
+ scope for this consolidation release; tracked as future work.
314
+ - Accordion's legacy `::after`-mask chevron approach was not ported to
315
+ the supported and documented API — a design choice (DOM child vs.
316
+ pseudo-element icon), not a bug.
317
+ - No JavaScript shipped.
318
+
319
+ ## [0.5.0] - 2026-07-30
320
+
321
+ ### Added
322
+
323
+ - `.sp-navbar` component (`src/components/sparta-navbar.css`) —
324
+ `__brand`/`__links`/`__link`/`__actions`/`__toggle` slots, `--open` state
325
+ modifier for a mobile-collapsed menu below the existing `768px`
326
+ breakpoint. Resolves the dangling `.sp-navbar__toggle` icon-color rules
327
+ (`sparta-utilities.css`, `sparta-icons.css`) and the `.sp-navbar` print
328
+ rule (`sparta-accessibility.css`) that have existed with no component
329
+ behind them since before the modular architecture split.
330
+ - `.sp-app-shell` pattern (`src/patterns/sparta-app-shell.css`) — a thin
331
+ page-level wrapper composing Navbar with the existing `.sp-container`/
332
+ `.sp-stack` primitives. Two rules only (`.sp-app-shell`,
333
+ `.sp-app-shell__main`); the composition itself is documented, not
334
+ reimplemented as new layout CSS.
335
+ - `docs/app-shell.md` — Navbar API reference, the `--open` state contract
336
+ (no JS shipped, consumer-toggled, same convention as `.sp-modal--open`/
337
+ `.sp-accordion__item--open`), and the App Shell composition guide with
338
+ starter markup.
339
+
340
+ ### Unchanged (verified)
341
+
342
+ - No Sidebar component or sidebar-based shell was added. The `.sp-sidebar`
343
+ reference in `sparta-accessibility.css`'s print rule remains
344
+ unimplemented — deferred, not resolved by this release.
345
+ - No new utility classes; `.sp-container`/`.sp-stack`/`.sp-cluster`/
346
+ `.sp-grid` and the frozen `.sp-flex`/atomic utility layer are unchanged.
347
+ - No JavaScript shipped.
348
+
349
+ ## [0.4.0] - 2026-07-29
350
+
351
+ ### Added
352
+
353
+ - `.sp-cluster` in `sparta-layout.css` — a wrapping horizontal composition
354
+ primitive (`--center`, `--sm`/`--lg`/`--xl` gap, `--justify-between`/
355
+ `--justify-end`). No default cross-axis alignment: centering is opt-in via
356
+ `--center` rather than assumed.
357
+ - `.sp-grid--auto` — an intrinsically responsive grid mode
358
+ (`repeat(auto-fit, minmax(15rem, 1fr))`) requiring no breakpoint, alongside
359
+ the existing explicit `--cols-N` variants.
360
+ - `--sp-container-base`/`--sp-container-sm`/`--sp-container-md`/
361
+ `--sp-container-lg` tokens in `sparta-tokens.css`, plus a comment
362
+ documenting the two canonical breakpoints (`640px`, `768px`) already in
363
+ use across `sparta-layout.css`'s media queries.
364
+ - `docs/layout.md` — documents the four supported layout primitives
365
+ (`.sp-container`, `.sp-stack`, `.sp-cluster`, `.sp-grid`), the breakpoint
366
+ scale, and the legacy status of `.sp-flex`/atomic utilities.
367
+
368
+ ### Changed
369
+
370
+ - `.sp-container` and its `--sm`/`--md`/`--lg` modifiers now source their
371
+ max-width from the new container tokens instead of inline pixel literals.
372
+ Value-for-value substitution only — no visual change.
373
+ - `.sp-flex` and the atomic spacing/sizing/display utility classes
374
+ (`.sp-p-*`, `.sp-m-*`, `.sp-w-*`, `.sp-h-*`, display helpers, etc.) are now
375
+ explicitly documented as frozen/legacy in both `sparta-layout.css` and
376
+ `docs/layout.md`. Not removed, not modified — retained for backward
377
+ compatibility, but will not receive new variants going forward.
378
+
379
+ ### Unchanged (verified)
380
+
381
+ - `.sp-container`, `.sp-stack`, `.sp-flex`, and every atomic utility class
382
+ render identically to `0.3.0`. This release is additive curation, not a
383
+ rewrite — no existing selector was renamed or removed.
384
+
385
+ ## [0.3.0] - 2026-07-29
386
+
387
+ ### Added
388
+
389
+ - `data-theme="dark"` / `.sp-dark` — explicit dark-mode override in
390
+ `sparta-tokens.css`, for consumers who want to state their theme choice
391
+ explicitly rather than relying on the implicit default. Functionally
392
+ equivalent to the default; added purely for API symmetry with the existing
393
+ `data-theme="light"` / `.sp-light` opt-in.
394
+ - `.sp-field--warning` (and `.sp-field__warning`) in `sparta-form.css` — a
395
+ third field-validation state alongside the existing `--error`/`--success`
396
+ modifiers, giving forms a complete error/warning/success trio. Modeled
397
+ structurally on `.sp-field--error`.
398
+ - `docs/theming.md` — documents the theming precedence contract (default,
399
+ explicit dark, explicit light) and which tokens are theme-dependent.
400
+
401
+ ### Unchanged (verified)
402
+
403
+ - Dark remains the unconditional default theme when no explicit override is
404
+ set. SpartaCSS does not read `prefers-color-scheme` and will not switch
405
+ themes based on OS/browser preference — this was evaluated during
406
+ development and deliberately rejected to preserve SpartaCSS's dark-first
407
+ product direction. Existing consumers see no behavior change.
408
+
409
+ ## [0.2.0] - 2026-07-28
410
+
411
+ ### Added
412
+
413
+ - Modular `src/` architecture: the single-file `spartacss.css` source has
414
+ been split into `core/` (tokens, reset, base, layout, utilities,
415
+ animations, accessibility), `components/`, `modules/` (`overlay/`,
416
+ `data/`, `docs/`, `feedback/`, `icons/`), and `patterns/` directories.
417
+ - New `sparta.css` entry point — core only (tokens, reset, base, layout,
418
+ utilities), for consumers who only want the foundation without any
419
+ components.
420
+ - New `sparta-all.css` entry point — the full framework in one file,
421
+ including the icon and notifications modules that were previously only
422
+ available as separate imports.
423
+ - Corresponding new `package.json` exports: `./sparta.css`,
424
+ `./sparta.min.css`, `./sparta-all.css`, `./sparta-all.min.css`.
425
+ - `.github/workflows/ci.yml` — GitHub Actions workflow that runs on pushes
426
+ and pull requests targeting `main`, installing dependencies and running
427
+ `npm run build`. Node version is loaded from `.nvmrc` (via
428
+ `node-version-file`) rather than hardcoded, so CI and local development
429
+ can't drift apart.
430
+ - `.nvmrc` pinning local/CI Node version to 22.
431
+ - Legacy bundle regression verification: `npm run verify`
432
+ (`scripts/verify-legacy-bundle.sh`) diffs the freshly built
433
+ `dist/spartacss.css` against a committed baseline snapshot
434
+ (`test/baseline/spartacss.css`) and fails the build if the legacy default
435
+ bundle's output has drifted. Wired into CI as a step that runs after
436
+ `npm run build`, so any unintentional change to the legacy bundle's
437
+ contents fails CI rather than shipping silently.
438
+
439
+ ### Changed
440
+
441
+ - Build pipeline now bundles each entry point (`sparta.css`, `spartacss.css`,
442
+ `sparta-all.css`) independently via Lightning CSS's `--bundle` mode,
443
+ resolving each file's own `@import` graph, rather than copying a single
444
+ source file directly into `dist/`.
445
+ - `spartacss.css` is now an explicit source entry point in `src/` (importing
446
+ `sparta.css` plus components/modules/patterns, excluding icons and
447
+ notifications) rather than the single monolithic source file it was
448
+ before.
449
+
450
+ ### Unchanged (verified)
451
+
452
+ - `dist/spartacss.css` — the existing default (`.` / `./spartacss.css`)
453
+ export — was verified content-equivalent (identical normalized rule set)
454
+ to its pre-refactor output. No public class was renamed, no component
455
+ behavior changed, and the legacy bundle's scope (core + components +
456
+ modules excluding icons/notifications + patterns) is unchanged.
457
+ - `dist/sparta-icons.css` and `dist/sparta-notifications.css` remain
458
+ byte-identical plain copies of their source files.
459
+ - All existing duplicate implementations preserved as-is (e.g. two tooltip
460
+ APIs, two accordion-trigger APIs) — consolidating them is deliberately
461
+ out of scope for this release; tracked as future work.
462
+
463
+ ## [0.1.0] - 2026-07-23
464
+
465
+ ### Added
466
+
467
+ - Initial extraction of SpartaCSS as an independent package: core stylesheet
468
+ (tokens, reset, layout, components), icon system (`sparta-icons.css`), and
469
+ notifications module (`sparta-notifications.css`).
470
+ - `package.json` with Lightning CSS build pipeline (`npm run build`
471
+ producing unminified and minified variants of each file into `dist/`).
472
+ - Public package exports for core, icon, and notifications stylesheets
473
+ (unminified and minified).
474
+
475
+ ### Fixed
476
+
477
+ - Resolved Toast implementation duplication between core and the
478
+ notifications module; the notifications module's Toast is the canonical
479
+ implementation, with no public class renamed and no behavior changed.
480
+ - Resolved `.sp-icon` "ICON SLOTS" duplication between core and the icon
481
+ system; ownership confirmed as belonging to the icon system, duplicate
482
+ block removed from core.
483
+
484
+ [Unreleased]: https://github.com/redspartanlabs/spartacss/compare/v1.0.3...HEAD
485
+ [1.0.3]: https://github.com/redspartanlabs/spartacss/compare/v1.0.2...v1.0.3
486
+ [1.0.2]: https://github.com/redspartanlabs/spartacss/compare/v1.0.1...v1.0.2
487
+ [1.0.1]: https://github.com/redspartanlabs/spartacss/compare/v1.0.0...v1.0.1
488
+ [1.0.0]: https://github.com/redspartanlabs/spartacss/compare/v0.9.2...v1.0.0
489
+ [0.9.2]: https://github.com/redspartanlabs/spartacss/compare/v0.9.1...v0.9.2
490
+ [0.9.1]: https://github.com/redspartanlabs/spartacss/compare/v0.9.0...v0.9.1
491
+ [0.9.0]: https://github.com/redspartanlabs/spartacss/compare/v0.8.0...v0.9.0
492
+ [0.8.0]: https://github.com/redspartanlabs/spartacss/compare/v0.7.0...v0.8.0
493
+ [0.7.0]: https://github.com/redspartanlabs/spartacss/compare/v0.6.0...v0.7.0
494
+ [0.6.0]: https://github.com/redspartanlabs/spartacss/compare/v0.5.0...v0.6.0
495
+ [0.5.0]: https://github.com/redspartanlabs/spartacss/compare/v0.4.0...v0.5.0
496
+ [0.4.0]: https://github.com/redspartanlabs/spartacss/compare/v0.3.0...v0.4.0
497
+ [0.3.0]: https://github.com/redspartanlabs/spartacss/compare/v0.2.0...v0.3.0
498
+ [0.2.0]: https://github.com/redspartanlabs/spartacss/compare/v0.1.0...v0.2.0
499
+ [0.1.0]: https://github.com/redspartanlabs/spartacss/releases/tag/v0.1.0