@neuravision/construct 2.0.3 → 2.1.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/CHANGELOG.md +318 -0
- package/README.md +158 -149
- package/behaviors/combobox.js +486 -0
- package/behaviors/drawer.js +18 -0
- package/behaviors/dropdown.js +310 -0
- package/behaviors/index.d.ts +335 -0
- package/behaviors/index.js +9 -0
- package/behaviors/internal/dialog-controller.js +421 -0
- package/behaviors/internal/dom.js +408 -0
- package/behaviors/internal/overlay.js +241 -0
- package/behaviors/internal/popup-layer.js +190 -0
- package/behaviors/modal.js +17 -0
- package/behaviors/popover.js +278 -0
- package/behaviors/select-menu.js +344 -0
- package/behaviors/tabs.js +241 -0
- package/behaviors/toggle-group.js +266 -0
- package/behaviors/tooltip.js +257 -0
- package/components/README.md +319 -83
- package/components/_shared.css +22 -10
- package/components/_shell-shared.css +20 -4
- package/components/accordion.css +8 -0
- package/components/app-shell-v2.css +28 -14
- package/components/app-shell.css +30 -14
- package/components/badge.css +15 -0
- package/components/banner.css +32 -1
- package/components/button.css +103 -15
- package/components/card.css +67 -8
- package/components/chart.css +26 -0
- package/components/checkbox.css +35 -2
- package/components/chip.css +30 -2
- package/components/combobox.css +21 -0
- package/components/datepicker.css +58 -9
- package/components/datum.css +277 -0
- package/components/dropdown.css +23 -3
- package/components/field.css +6 -4
- package/components/file-upload.css +1 -1
- package/components/index.css +5 -0
- package/components/list.css +28 -2
- package/components/meter.css +182 -0
- package/components/navbar.css +102 -4
- package/components/pagination.css +18 -0
- package/components/progress-bar.css +22 -1
- package/components/select-menu.css +8 -0
- package/components/select.css +8 -0
- package/components/sidebar.css +15 -2
- package/components/skip-link.css +6 -2
- package/components/slider.css +7 -1
- package/components/status.css +107 -0
- package/components/switch.css +66 -5
- package/components/table.css +53 -4
- package/components/tabs.css +55 -3
- package/components/toast.css +10 -1
- package/components/toggle-group.css +16 -5
- package/components/toolbar.css +17 -1
- package/components/tooltip.css +4 -0
- package/components/tree.css +30 -0
- package/docs/architecture.md +79 -0
- package/docs/behaviors.md +122 -0
- package/docs/fonts.md +70 -0
- package/docs/governance.md +85 -0
- package/docs/guidelines.md +72 -25
- package/examples/react/README.md +20 -0
- package/examples/react/SettingsModal.jsx +66 -0
- package/examples/react/construct.css +5 -0
- package/fonts.css +10 -0
- package/foundations.css +14 -1
- package/package.json +76 -21
- package/schemas/components.schema.json +122 -0
- package/schemas/examples/theme.example.json +27 -0
- package/schemas/primitives.schema.json +135 -0
- package/schemas/semantic.schema.json +224 -0
- package/schemas/theme.schema.json +63 -0
- package/scripts/build-tokens.mjs +1499 -0
- package/scripts/construct-theme.mjs +43 -0
- package/scripts/validate-tokens.mjs +25 -0
- package/standalone/accordion.css +3 -0
- package/standalone/alert.css +3 -0
- package/standalone/app-shell-v2.css +4 -0
- package/standalone/app-shell.css +4 -0
- package/standalone/avatar.css +3 -0
- package/standalone/badge.css +3 -0
- package/standalone/banner.css +3 -0
- package/standalone/breadcrumbs.css +3 -0
- package/standalone/button.css +3 -0
- package/standalone/card.css +3 -0
- package/standalone/chart.css +3 -0
- package/standalone/checkbox.css +3 -0
- package/standalone/chip.css +3 -0
- package/standalone/combobox.css +3 -0
- package/standalone/core.css +4 -0
- package/standalone/data-table.css +3 -0
- package/standalone/datepicker.css +3 -0
- package/standalone/datum.css +3 -0
- package/standalone/divider.css +3 -0
- package/standalone/drawer.css +3 -0
- package/standalone/dropdown.css +3 -0
- package/standalone/empty-state.css +3 -0
- package/standalone/field.css +3 -0
- package/standalone/file-upload.css +3 -0
- package/standalone/icon.css +3 -0
- package/standalone/input.css +3 -0
- package/standalone/list.css +3 -0
- package/standalone/meter.css +3 -0
- package/standalone/modal.css +3 -0
- package/standalone/navbar.css +3 -0
- package/standalone/pagination.css +3 -0
- package/standalone/popover.css +3 -0
- package/standalone/progress-bar.css +3 -0
- package/standalone/select-menu.css +3 -0
- package/standalone/select.css +3 -0
- package/standalone/sidebar.css +3 -0
- package/standalone/skeleton.css +3 -0
- package/standalone/skip-link.css +3 -0
- package/standalone/slider.css +3 -0
- package/standalone/spinner.css +3 -0
- package/standalone/status.css +3 -0
- package/standalone/switch.css +3 -0
- package/standalone/table.css +3 -0
- package/standalone/tabs.css +3 -0
- package/standalone/textarea.css +3 -0
- package/standalone/toast.css +3 -0
- package/standalone/toggle-group.css +3 -0
- package/standalone/toolbar.css +3 -0
- package/standalone/tooltip.css +3 -0
- package/standalone/tree.css +3 -0
- package/themes/README.md +37 -0
- package/themes/walnut.theme.json +106 -0
- package/tokens/README.md +135 -123
- package/tokens/components.json +64 -0
- package/tokens/primitives.json +268 -0
- package/tokens/semantic.dark.json +94 -0
- package/tokens/semantic.high-contrast-dark.json +94 -0
- package/tokens/semantic.high-contrast.json +94 -0
- package/tokens/semantic.light.json +179 -0
- package/tokens/tokens.css +960 -58
- package/tokens/tokens.js +729 -120
- package/tokens/tokens.json +1158 -116
- package/tokens/tokens.ts +729 -120
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@neuravision/construct` will be 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
|
+
|
|
8
|
+
## [2.1.2] - 2026-07-16
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Datum grammar, extended from signature to system-wide vocabulary:
|
|
13
|
+
- `component.datum.*` tokens (edge width, tick, origin, mark, scale steps) — the grammar's
|
|
14
|
+
dimensions are now part of the published token contract and themable per product.
|
|
15
|
+
- `ct-eyebrow--numbered` (+ `ct-eyebrow-set` scope): auto-incremented, zero-padded sheet
|
|
16
|
+
numbers in the eyebrow, like an engineering drawing set.
|
|
17
|
+
- `ct-datum-scale--progress`: the scale's origin segment becomes meaning-bearing and reports
|
|
18
|
+
progress via `--ct-datum-scale-progress`; fill uses `brand-accent-strong` (≥3:1 per theme).
|
|
19
|
+
- `ct-datum-frame`: the corner registration mark generalised beyond cards for figures, code
|
|
20
|
+
samples, and media exhibits.
|
|
21
|
+
- Chart datum reference line (`ct-chart__datum-line` + `ct-chart__datum-label`) for threshold,
|
|
22
|
+
target, and "today" markers — dashed so the reference is shape-encoded, with a forced-colors
|
|
23
|
+
`CanvasText` fallback.
|
|
24
|
+
- Tables speak the grammar: `tr[aria-current]`/`[aria-selected]`/`[data-state="selected"]` rows
|
|
25
|
+
carry the orange leading edge (with forced-colors border fallback), and the actively sorted
|
|
26
|
+
column header (`aria-sort`) carries the datum underline.
|
|
27
|
+
- A "The Datum" section in `docs/guidelines.md` documenting the dosage rule (one datum per
|
|
28
|
+
surface), the text/edge/fill color contract, and the motion rule.
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- The datum now enters instead of popping: tab indicators draw in from their origin
|
|
33
|
+
(`transform`-based), and active leading edges on list items, sidebar nav items, and cards
|
|
34
|
+
slide in via a `box-shadow` transition (`--duration-fast`, disabled by
|
|
35
|
+
`prefers-reduced-motion`). The active card's shadow list is reordered
|
|
36
|
+
(`ambient, inset edge`) so it interpolates; consumers overriding `box-shadow` on active
|
|
37
|
+
states should re-check their overrides.
|
|
38
|
+
- The datum scale's origin now anchors to the inline start in RTL writing modes.
|
|
39
|
+
- Table rows using `aria-selected`/`aria-current` markup, previously unstyled, now receive the
|
|
40
|
+
selected-row treatment (muted background + leading edge).
|
|
41
|
+
|
|
42
|
+
- Preset themes: a new `themes/` package entry for validated, opt-in brand skins that compile
|
|
43
|
+
through the `construct-theme` CLI instead of being baked into `tokens.css`. First preset:
|
|
44
|
+
`walnut` — a warm ivory light theme with walnut-brown brand color, AAA body-text contrast
|
|
45
|
+
(≥ 7:1) enforced by `contrast` gates, validated in `npm run check` via `themes:validate`.
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
|
|
49
|
+
- Tabs: anchor-based triggers (router-driven tabs rendering `<a class="ct-tabs__trigger">`)
|
|
50
|
+
no longer inherit the global link underline and link `:active` color from `foundations.css`.
|
|
51
|
+
The trigger label showed a text underline stacked above the orange active indicator; the
|
|
52
|
+
indicator is the only active-tab signal now.
|
|
53
|
+
|
|
54
|
+
## [2.1.1] - 2026-07-16
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
## [2.1.0] - 2026-07-15
|
|
59
|
+
|
|
60
|
+
### Added
|
|
61
|
+
|
|
62
|
+
- A validated three-layer token contract (primitive → semantic → component) with 40 component tokens, published JSON Schemas, typed JS/TS exports, and complete nested theme scopes.
|
|
63
|
+
- The `construct-theme` CLI for external theme inputs, including unknown-path, reference, shape, selector, and contrast validation. Built-in themes now verify 57 contrast pairs each.
|
|
64
|
+
- Optional, dependency-free, typed headless controllers for modal, drawer, tabs, toggle group, dropdown, select menu, combobox, tooltip, and popover.
|
|
65
|
+
- Generic live/connection status, metric, and segmented meter contracts; loading-button behavior; a compact responsive navbar; and shared App Shell sizing/motion hooks.
|
|
66
|
+
- Generated standalone package entry points for all 49 component styles plus a public component core entry.
|
|
67
|
+
- Automated CSS-variable closure, package-export, version, token negative-case, real coarse-pointer, and forced-colors contracts.
|
|
68
|
+
- Architecture, behavior, font/self-hosting, governance/Definition-of-Done documentation and a React lifecycle example.
|
|
69
|
+
|
|
70
|
+
### Changed
|
|
71
|
+
|
|
72
|
+
- `foundations.css` is network-free. Hosted Lato and JetBrains Mono loading moved to the explicit opt-in `fonts.css` entry.
|
|
73
|
+
- Explicit light, dark, high-contrast, and custom theme scopes emit complete semantic and component contracts, making arbitrary nested container themes deterministic.
|
|
74
|
+
- Light accent interaction colors, light solid success/warning colors, dark muted text, and high-contrast active accent were adjusted to satisfy the expanded contrast matrix.
|
|
75
|
+
- App Shell V2 is the recommended shell; V1 remains supported through compatibility aliases instead of a divergent public token vocabulary.
|
|
76
|
+
- The verified development baseline is Node.js 22.12+ (or 24+) with Storybook 10.5, Vitest 4.1, and Playwright 1.61; the unused coverage package and vulnerable legacy test-tool chain were removed, and CI/publish preflights now reject high or critical dependency advisories.
|
|
77
|
+
|
|
78
|
+
### Fixed
|
|
79
|
+
|
|
80
|
+
- Added the missing `--font-size-2xs`, `--color-bg-subtle`, and `--color-border-muted` contracts and removed the Datepicker's undeclared global pseudo-token.
|
|
81
|
+
- Prevented light component aliases and inherited semantic values from leaking into nested dark, high-contrast, light, or custom theme containers.
|
|
82
|
+
- Expanded the small Switch coarse-pointer hit area on both axes and enforced the 44×44 Construct target policy for default/small actions and compact controls.
|
|
83
|
+
- Preserved meaningful borders, state indicators, and focus visibility in forced-colors mode.
|
|
84
|
+
- Raised the default light/dark boundary colors and added compiler gates for control borders against canvas, surface, elevated, and control backgrounds.
|
|
85
|
+
- Rejected negative component dimensions, radii, font metrics, and shadow blur radii while preserving valid negative letter spacing, shadow offsets, and spread values.
|
|
86
|
+
- Preserved the existing `_keyframes.css`, `_shared.css`, and `_shell-shared.css` package subpaths while public component imports move to generated standalone adapters.
|
|
87
|
+
|
|
88
|
+
### Accessibility
|
|
89
|
+
|
|
90
|
+
- Composite-widget behavior now has tested keyboard, focus, dismissal, typeahead, nested-overlay, cleanup, and ARIA synchronization contracts instead of relying on CSS documentation alone.
|
|
91
|
+
- Status meaning is conveyed with visible text plus a non-text indicator; semantic state color is no longer used as small text on an unrelated surface.
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
## [2.0.4] - 2026-06-28
|
|
95
|
+
|
|
96
|
+
### Added
|
|
97
|
+
|
|
98
|
+
- **Datum grammar — the signature, now spoken by components.** The orange "datum"
|
|
99
|
+
(Construct's reference line for focus / active / current state) was promoted from focus
|
|
100
|
+
rings and bespoke docs CSS into reusable, opt-in component vocabulary in a new
|
|
101
|
+
`components/datum.css`:
|
|
102
|
+
- `.ct-eyebrow` — a mono kicker with a leading datum tick, for labelling sections.
|
|
103
|
+
- `.ct-datum-scale` — a measured reference line (a ruler with minor/major ticks and an
|
|
104
|
+
orange "origin" segment) for section headers.
|
|
105
|
+
- `.ct-specs` / `.ct-spec` (+ `.ct-spec--origin`) — an engineering datasheet for key figures.
|
|
106
|
+
- Card modifiers in `card.css`: `.ct-card--datum` (a corner registration mark) and an
|
|
107
|
+
active state (`.ct-card--active` / `[data-state="active"]`) that carries the same orange
|
|
108
|
+
leading edge as `.ct-list__item` and `.ct-sidebar`, so every active surface reads as one system.
|
|
109
|
+
|
|
110
|
+
### Accessibility
|
|
111
|
+
|
|
112
|
+
- Eyebrow and spec labels use `--color-text-secondary` (≥7:1 on every surface across light,
|
|
113
|
+
dark and high-contrast); orange is reserved for non-text edges/ticks (`--color-brand-accent`,
|
|
114
|
+
≥3:1 as a graphic object). Default cards and existing `aria-selected` card behaviour are unchanged.
|
|
115
|
+
|
|
116
|
+
## [2.0.3] - 2026-06-28
|
|
117
|
+
|
|
118
|
+
### Fixed
|
|
119
|
+
|
|
120
|
+
- **Lato typeface was declared but never loaded.** The 2.0.2 switch updated the font-family
|
|
121
|
+
tokens to Lato but left the Google Fonts `@import` in `foundations.css` pointing at Manrope,
|
|
122
|
+
so consumers loaded Manrope (unused) while Lato fell back to a system sans-serif. The
|
|
123
|
+
`@import` now loads `Lato:wght@400;700;900` (JetBrains Mono unchanged). Documentation
|
|
124
|
+
(`DesignTokens`, `Accessibility`, `Introduction`) updated from Manrope to Lato.
|
|
125
|
+
|
|
126
|
+
### Notes
|
|
127
|
+
|
|
128
|
+
- Lato ships only in 400/700/900 — it has no 500/600/800. The `medium` (500) and `semibold`
|
|
129
|
+
(600) weight tokens therefore resolve to the nearest available face (400 and 700), and
|
|
130
|
+
`extrabold` (800) to 900. This is inherent to Lato; `font-synthesis: none` keeps these as
|
|
131
|
+
real faces (no faux weights).
|
|
132
|
+
|
|
133
|
+
## [2.0.2] - 2026-06-28
|
|
134
|
+
|
|
135
|
+
### Changed
|
|
136
|
+
|
|
137
|
+
- Switch primary typeface from Manrope to Lato (400/700/900)
|
|
138
|
+
|
|
139
|
+
## [2.0.1] - 2026-06-27
|
|
140
|
+
|
|
141
|
+
### Fixed
|
|
142
|
+
|
|
143
|
+
- **Navbar height token.** The navbar referenced a non-existent `--control-height-xl` primitive (the control-height scale ends at `lg`), so the navbar fell back to an undefined height. Introduced a dedicated `layout.navbar.height` primitive (`--navbar-height`, 56px) and pointed `.ct-navbar` at it. The control-height scale stays reserved for form controls.
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
## [2.0.0] - 2026-06-27
|
|
147
|
+
|
|
148
|
+
A new visual identity — *"engineered for everyone."* Construct moves from a generic tech-blue/slate look to a distinctive system: warm concrete neutrals, an ink-steel primary, and a safety-orange accent that acts as a single recurring **"datum"** marking what is focused / active / selected / current. Verified WCAG AA across light, dark, and high-contrast themes.
|
|
149
|
+
|
|
150
|
+
**BREAKING CHANGES:**
|
|
151
|
+
|
|
152
|
+
- **Neutral primitive ramp renamed `slate` → `stone`.** Consumers referencing `color.slate.*` or `--color-slate-*` must migrate to `stone.*`. The neutral palette is now warm concrete/graphite instead of cool blue-grey.
|
|
153
|
+
- **Default typefaces changed** from Sora + Source Sans 3 to **Manrope** (display + body). The Google Fonts import in `foundations.css` was updated accordingly; self-hosting consumers must update their font files.
|
|
154
|
+
|
|
155
|
+
### Added
|
|
156
|
+
|
|
157
|
+
- **The "datum" signature** — the orange accent now marks focus rings, active tab underlines, checked selection controls, slider fills, selected chips, the current pagination page, and active navigation (leading edge) across all components.
|
|
158
|
+
- New semantic tokens: `color.brand.onAccent`, `color.text.onPrimary`, `color.state.onSolid` (theme-aware foregrounds for solid fills), and the `font.weight.extrabold` (800) display weight.
|
|
159
|
+
- New `orange` primitive ramp (structural safety orange).
|
|
160
|
+
|
|
161
|
+
### Changed
|
|
162
|
+
|
|
163
|
+
- State ramps retuned to widen hue separation from the brand orange: `ocean` → blueprint blue (info), `amber` → gold (warning), `red` → crimson (danger).
|
|
164
|
+
- Shadows warmed (warm-ink instead of cool blue); display headings now use weight 800.
|
|
165
|
+
- Solid chips and solid banners now use a theme-aware foreground (`state.onSolid`) so their labels meet AA contrast in dark and high-contrast themes.
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
## [1.4.0] - 2026-06-27
|
|
169
|
+
|
|
170
|
+
### Added
|
|
171
|
+
|
|
172
|
+
- **Tooling — design-sync for [claude.ai/design](https://claude.ai/design):** Construct can now be synced to a Claude Design project so Claude's design agent builds with the real Construct components. Because Construct is a pure CSS/token system, an off-script generator (`.design-sync/build.mjs`) flattens the authored CSS into one bundle and builds one preview card per component from the true Storybook-rendered HTML, plus per-component usage docs and a class-vocabulary README header. Sync state lives under `.design-sync/`; no change to the published package surface.
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
## [1.3.1] - 2026-06-17
|
|
176
|
+
|
|
177
|
+
### Fixed
|
|
178
|
+
|
|
179
|
+
- **a11y / focus:** Raised the `--color-focus-ring` contrast so the focus indicator meets the WCAG 2.2 ≥ 3:1 non-text-contrast minimum against the canvas and surface backgrounds. The `light` ring (`teal.400`, 2.59:1 on canvas) → `teal.600` (5.09:1) and the `high-contrast` ring (`amber.400`, 2.07:1) → `amber.700` (6.68:1); the `dark` ring already passed and is unchanged. Affects every component that uses the shared focus token (24 files).
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
## [1.3.0] - 2026-06-17
|
|
183
|
+
|
|
184
|
+
### Added
|
|
185
|
+
|
|
186
|
+
- Chart styling skin (`ct-chart`) — a framework-agnostic theme layer for SVG data-visualisation primitives (line/area, bar, donut, sparkline, gauge). Provides series colour mapping (`.ct-chart__series--{1..8}` via `currentColor`), grid/axis, legend, donut/gauge text, and a visually-hidden **accessible data-table fallback** (`.ct-chart__table`, revealed with `.ct-chart--show-table`). Geometry is supplied by the consuming layer; this file only themes the result. `prefers-reduced-motion` and `forced-colors` supported.
|
|
187
|
+
- New categorical chart palette tokens `--color-chart-series-{1..8}`, defined for `light`, `dark`, and `high-contrast` themes. Every series colour meets the WCAG 1.4.11 non-text contrast minimum (≥ 3:1) against both the canvas and surface backgrounds.
|
|
188
|
+
- Storybook coverage for `ct-chart` (`Chart.stories.js`): line/area, bar, donut, gauge, sparkline, empty state, the interactive data-table toggle (documenting the `aria-expanded`/`aria-controls` contract), and an optional keyboard-focusable-marks example. All stories pass the a11y addon in `error` mode.
|
|
189
|
+
|
|
190
|
+
### Fixed
|
|
191
|
+
|
|
192
|
+
- `ct-chart`: interactive marks (`.ct-chart__bar`, `.ct-chart__slice`, `.ct-chart__dot`) now have `:focus-visible` parity with their `:hover` affordance, so consumer-focusable data points show a visible focus ring.
|
|
193
|
+
- `ct-chart`: hoisted `--ct-chart-gauge-width` into the `.ct-chart` config block (was an inline `var()` fallback duplicated across two rules), making it discoverable and overridable like the other `--ct-chart-*` properties.
|
|
194
|
+
- `ct-chart`: consistent `forced-colors` behaviour — data marks (line, area, dots, bars, slices, legend marker, gauge) now uniformly preserve their series/state colour via `forced-color-adjust: none`, so a coloured legend no longer describes monochrome lines in Windows High Contrast. Grid and axes still follow the user's forced palette, and the data-table fallback remains the fully compliant path.
|
|
195
|
+
|
|
196
|
+
## [1.2.0] - 2026-05-07
|
|
197
|
+
|
|
198
|
+
### Added
|
|
199
|
+
|
|
200
|
+
- Tree component (`ct-tree`) implementing the WAI-ARIA Tree View pattern: n-level nesting, roving tabindex, full keyboard navigation (↑/↓/→/←/Home/End/`*`/type-ahead), single & multi selection, async loading state (`aria-busy`), and an orphan-node modifier (`.ct-tree__node--orphan`) for hierarchies with missing parents. Modifiers: `--guides`, `--dense`, `--bordered`. Forced-colors and `prefers-reduced-motion` supported. (#86)
|
|
201
|
+
|
|
202
|
+
## [1.1.6] - 2026-04-09
|
|
203
|
+
|
|
204
|
+
### Changed
|
|
205
|
+
|
|
206
|
+
### Added
|
|
207
|
+
|
|
208
|
+
- Avatar seeded color palette: `.ct-avatar[data-seed-color="N"]` (N = 1–8) selects a deterministic background/foreground pair from the palette, letting consumers give each user a stable color. Avatars without the attribute keep the existing default — fully backwards compatible. (#85)
|
|
209
|
+
- New semantic tokens `--color-avatar-seed-{1..8}-{bg,fg}` and component-level `--ct-avatar-seed-{1..8}-{bg,fg}` aliases, defined for `light`, `dark`, and `high-contrast` themes. Every pair meets WCAG AA (≥ 4.5:1, lowest measured 6.48:1).
|
|
210
|
+
- New color primitives `purple` and `pink` (50–900 scales) feeding the seed palette.
|
|
211
|
+
- Storybook story `Data Display/Avatar/Seeded Colors` showcasing the palette and confirming the unseeded fallback.
|
|
212
|
+
|
|
213
|
+
## [1.1.5] - 2026-04-03
|
|
214
|
+
|
|
215
|
+
### Changed
|
|
216
|
+
|
|
217
|
+
## [1.1.4] - 2026-03-27
|
|
218
|
+
|
|
219
|
+
### Changed
|
|
220
|
+
|
|
221
|
+
## [1.1.3] - 2026-03-27
|
|
222
|
+
|
|
223
|
+
### Changed
|
|
224
|
+
|
|
225
|
+
## [1.1.2] - 2026-03-21
|
|
226
|
+
|
|
227
|
+
### Changed
|
|
228
|
+
|
|
229
|
+
## [1.1.1] - 2026-03-21
|
|
230
|
+
|
|
231
|
+
### Changed
|
|
232
|
+
|
|
233
|
+
## [1.1.0] - 2026-03-21
|
|
234
|
+
|
|
235
|
+
### Added
|
|
236
|
+
|
|
237
|
+
-
|
|
238
|
+
|
|
239
|
+
## [0.2.0] - 2026-03-12
|
|
240
|
+
|
|
241
|
+
### Added
|
|
242
|
+
|
|
243
|
+
- Toolbar component (`ct-toolbar`) with brand, navigation, and action slots
|
|
244
|
+
- Sidebar component (`ct-sidebar`) with side, over, and push modes
|
|
245
|
+
- Progress bar component (`ct-progress-bar`) with determinate, indeterminate, and size/variant modifiers
|
|
246
|
+
- Toggle group component (`ct-toggle-group`) with single/multiple selection and size variants
|
|
247
|
+
- Nav list component (`ct-nav-list`, `ct-nav-item`) for sidebar navigation
|
|
248
|
+
- Icon component (`ct-icon`) with sm, md, lg, xl sizes
|
|
249
|
+
- `prefers-reduced-motion` support in components layer for self-contained usage
|
|
250
|
+
- Explicit `:focus-visible` styles for all interactive components (button, form controls, checkbox, radio, switch, tabs, dropdown items, pagination, datepicker, table sort, nav items, toolbar links)
|
|
251
|
+
|
|
252
|
+
### Fixed
|
|
253
|
+
|
|
254
|
+
- Inconsistent focus indicators across components (standardized to `outline: 2px solid` with appropriate offsets)
|
|
255
|
+
- Missing focus styles on `.ct-button`, `.ct-check__input`, `.ct-radio__input`, `.ct-switch__input`, `.ct-tabs__trigger`
|
|
256
|
+
- Form controls now show both border-color change and outline ring on focus for WCAG 2.1 AA compliance
|
|
257
|
+
|
|
258
|
+
## [0.1.1] - 2026-03-12
|
|
259
|
+
|
|
260
|
+
### Changed
|
|
261
|
+
|
|
262
|
+
- Updated `.gitignore` to exclude internal documentation and mock data
|
|
263
|
+
- Project configuration and metadata cleanup
|
|
264
|
+
|
|
265
|
+
## [0.1.0] - 2026-01-31
|
|
266
|
+
|
|
267
|
+
### Added
|
|
268
|
+
|
|
269
|
+
- Initial release of the Construct Design System
|
|
270
|
+
- Two-tier token pipeline (primitives + semantic) with CSS, JSON, and TypeScript outputs
|
|
271
|
+
- Three theme modes: light (default), dark, high-contrast
|
|
272
|
+
- System preference fallback via `prefers-color-scheme` and `prefers-contrast`
|
|
273
|
+
- Foundation styles: CSS reset, typography scale, layout utilities
|
|
274
|
+
- Component library with `ct-` prefix and BEM naming:
|
|
275
|
+
- Button (primary, secondary, outline, ghost, accent, danger, link variants; sm/md/lg sizes)
|
|
276
|
+
- Form controls: input, select, textarea with field wrapper, hints, and error states
|
|
277
|
+
- Selection controls: checkbox, radio, switch
|
|
278
|
+
- Card with header, body, footer, and interactive variant
|
|
279
|
+
- Table with striped, compact, sortable, and numeric cell variants
|
|
280
|
+
- Data table with header, toolbar, filters, search, pagination, and footer
|
|
281
|
+
- Modal and confirmation dialog
|
|
282
|
+
- Toast notifications with info, success, warning, danger variants
|
|
283
|
+
- Tooltip with top, bottom, left, right positioning
|
|
284
|
+
- Tabs with trigger and panel
|
|
285
|
+
- Dropdown menu with items, labels, separators
|
|
286
|
+
- Pagination with navigation links
|
|
287
|
+
- Breadcrumbs
|
|
288
|
+
- Datepicker with calendar grid
|
|
289
|
+
- Badge and chip with variant and interactive modifiers
|
|
290
|
+
- File upload with drag-and-drop dropzone and file list
|
|
291
|
+
- Spinner, skeleton loader, and loading overlay
|
|
292
|
+
- Accessibility: ARIA attribute-driven states, semantic HTML patterns
|
|
293
|
+
- Storybook with HTML Vite, a11y addon (error-level), theme switching, autodocs
|
|
294
|
+
- Story-driven testing via Vitest + Playwright
|
|
295
|
+
- GitHub Actions workflow for Storybook deployment to GitHub Pages
|
|
296
|
+
- Token build script with `--check` mode for CI validation
|
|
297
|
+
|
|
298
|
+
[2.1.1]: https://github.com/Samyssmile/construct/compare/v2.1.0...v2.1.1
|
|
299
|
+
[2.1.0]: https://github.com/Samyssmile/construct/compare/v2.0.4...v2.1.0
|
|
300
|
+
[2.0.4]: https://github.com/Samyssmile/construct/compare/v2.0.3...v2.0.4
|
|
301
|
+
[2.0.3]: https://github.com/Samyssmile/construct/compare/v2.0.2...v2.0.3
|
|
302
|
+
[2.0.2]: https://github.com/Samyssmile/construct/compare/v2.0.1...v2.0.2
|
|
303
|
+
[2.0.1]: https://github.com/Samyssmile/construct/compare/v2.0.0...v2.0.1
|
|
304
|
+
[2.0.0]: https://github.com/Samyssmile/construct/compare/v1.4.0...v2.0.0
|
|
305
|
+
[1.4.0]: https://github.com/Samyssmile/construct/compare/v1.3.1...v1.4.0
|
|
306
|
+
[1.3.1]: https://github.com/Samyssmile/construct/compare/v1.3.0...v1.3.1
|
|
307
|
+
[1.3.0]: https://github.com/Samyssmile/construct/compare/v1.2.0...v1.3.0
|
|
308
|
+
[1.2.0]: https://github.com/Samyssmile/construct/compare/v1.1.6...v1.2.0
|
|
309
|
+
[1.1.6]: https://github.com/Samyssmile/construct/compare/v1.1.5...v1.1.6
|
|
310
|
+
[1.1.5]: https://github.com/Samyssmile/construct/compare/v1.1.4...v1.1.5
|
|
311
|
+
[1.1.4]: https://github.com/Samyssmile/construct/compare/v1.1.3...v1.1.4
|
|
312
|
+
[1.1.3]: https://github.com/Samyssmile/construct/compare/v1.1.2...v1.1.3
|
|
313
|
+
[1.1.2]: https://github.com/Samyssmile/construct/compare/v1.1.1...v1.1.2
|
|
314
|
+
[1.1.1]: https://github.com/Samyssmile/construct/compare/v1.1.0...v1.1.1
|
|
315
|
+
[1.1.0]: https://github.com/Samyssmile/construct/compare/v1.0.0...v1.1.0
|
|
316
|
+
[0.2.0]: https://github.com/Samyssmile/construct/compare/v0.1.1...v0.2.0
|
|
317
|
+
[0.1.1]: https://github.com/Samyssmile/construct/compare/v0.1.0...v0.1.1
|
|
318
|
+
[0.1.0]: https://github.com/Samyssmile/construct/releases/tag/v0.1.0
|