@adukiorg/anza 0.4.0 → 0.4.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.
Files changed (41) hide show
  1. package/bin/anza/anza-linux-arm64 +0 -0
  2. package/bin/anza/anza-linux-x64 +0 -0
  3. package/bin/anza/anza-macos-arm64 +0 -0
  4. package/bin/anza/anza-macos-x64 +0 -0
  5. package/bin/anza/anza-windows-x64.exe +0 -0
  6. package/package.json +1 -1
  7. package/src/core/api/index.js +2 -2
  8. package/src/core/offline/sync.js +2 -2
  9. package/src/core/router/cascade.js +15 -20
  10. package/src/core/router/container.js +4 -0
  11. package/src/core/router/graph.js +40 -12
  12. package/src/core/router/index.js +7 -1
  13. package/src/core/router/intercept.js +400 -100
  14. package/src/core/router/match.js +30 -0
  15. package/src/core/ui/define/element.js +64 -11
  16. package/src/core/ui/define/orchestrator.js +8 -4
  17. package/src/core/ui/define/utils.js +13 -7
  18. package/src/core/ui/defs/dock.js +18 -1
  19. package/src/core/ui/defs/page.js +75 -29
  20. package/src/core/ui/defs/spec.js +81 -11
  21. package/src/elements/data/list/style.css +1 -1
  22. package/src/elements/data/table/index.js +2 -1
  23. package/src/elements/data/table/style.css +1 -1
  24. package/src/elements/feedback/alert/style.css +1 -1
  25. package/src/styles/base.css +22 -21
  26. package/src/tokens/index.css +1 -4
  27. package/src/tokens/primitives/colors.css +9 -64
  28. package/src/tokens/primitives/motion.css +6 -18
  29. package/src/tokens/primitives/spacing.css +7 -12
  30. package/src/tokens/primitives/typography.css +12 -42
  31. package/src/tokens/registered/colors.css +5 -96
  32. package/src/tokens/registered/dimensions.css +6 -19
  33. package/src/tokens/semantic/contrast.css +8 -36
  34. package/src/tokens/semantic/dark.css +13 -48
  35. package/src/tokens/semantic/light.css +13 -44
  36. package/src/tokens/semantic/transitions.css +22 -12
  37. package/CHANGELOG.md +0 -352
  38. package/src/tokens/primitives/radius.css +0 -16
  39. package/src/tokens/primitives/shadow.css +0 -34
  40. package/src/tokens/primitives/zindex.css +0 -18
  41. package/src/tokens/semantic/components.css +0 -123
package/CHANGELOG.md DELETED
@@ -1,352 +0,0 @@
1
- <!-- markdownlint-disable MD024 -->
2
- # Changelog
3
-
4
- All notable changes to `@adukiorg/anza` will be documented here.
5
-
6
- Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
7
- Versioning follows [Semantic Versioning](https://semver.org/).
8
-
9
- ---
10
-
11
- ## [Unreleased]
12
-
13
- ### Planned
14
-
15
- - Full element library documentation (`src/elements/`)
16
- - Integration with external bundlers/compilers
17
-
18
- ---
19
-
20
- ## [0.4.0] — 2026-06-14
21
-
22
- ### Added
23
-
24
- - Natively support arrays of multiple CSS imports in component definitions (`template: { html, css: ['./a.css', './b.css'] }`) across both the JavaScript library runtime and the Rust compiler.
25
-
26
- ### Changed
27
-
28
- - Replaced CSS Custom Highlight API implementation with PrismJS for `view-code` syntax highlighting.
29
-
30
- ---
31
-
32
- ## [0.3.9] — 2026-06-13
33
-
34
- ### Changed
35
-
36
- - Updated core component rendering to correctly process nested syntax logic and perform full syntax highlighting.
37
-
38
- ---
39
-
40
- ## [0.3.7] — 2026-06-13
41
-
42
- ### Changed
43
-
44
- - Updated README and package descriptions to clarify the "instant" build step.
45
-
46
- ---
47
-
48
- ## [0.3.6] — 2026-06-13
49
-
50
- ### Fixed
51
-
52
- - Resolved NPM publish collision for the watcher hotfix.
53
-
54
- ---
55
-
56
- ## [0.3.5] — 2026-06-13
57
-
58
- ### Changed
59
-
60
- - Prevent native browser tab loading spinner during client-side navigation.
61
- - Removed unnecessary console logs in `boot.js`, `orchestrator.js`, and `element.js`.
62
-
63
- ---
64
-
65
- ## [0.3.3] — 2026-06-13
66
-
67
- ### Changed
68
-
69
- - Removed `<main>` to `<dock-main>` compiler auto-alignment. Apps now use `<dock-main id="main">` natively in HTML templates.
70
- - Update `boot.js` router error messages to correctly refer to `<dock-main id="main">`.
71
-
72
- ---
73
-
74
- ## [0.3.2] — 2026-06-13
75
-
76
- ### Fixed
77
-
78
- - Update scaffolding templates to use `<dock-main>` and ES module Service Worker registration (`{ type: 'module' }`)
79
- - Fix CLI watcher to properly resolve Linux `inotify` absolute paths for CSS and JS Hot Module Reloading (HMR)
80
- - Improve HMR client script with SSE auto-reconnect back-off
81
-
82
- ---
83
-
84
- ## [0.3.1] — 2026-06-13
85
-
86
- ### Changed
87
-
88
- - Soften library README tone — remove sarcastic framework comparisons
89
- - Update dock() example to use simplified API (no parent parameter)
90
-
91
- ---
92
-
93
- ## [0.3.0] — 2026-06-13
94
-
95
- ### Fixed
96
-
97
- - Sync `tools/Cargo.toml` version with npm package version (0.2.1 → 0.3.0)
98
-
99
- ---
100
-
101
- ## [0.2.8] — 2026-06-09
102
-
103
- ### Fixed
104
-
105
- - Remove empty `importmap.json` from scaffold — HTML now points to `/dist/importmap.json`
106
- - Category barrel files for generated doc pages (`docs/*/index.js`)
107
- - Docs root route (`/docs`) uses `entry/` folder like other pages
108
-
109
- ---
110
-
111
- ## [0.2.7] — 2026-06-09
112
-
113
- ### Fixed
114
-
115
- - Scaffold structure: landing page moved to `src/pages/entry/` instead of `src/pages/index/`
116
- - Node.js and Rust create commands generate consistent `src/pages/index.js` barrel file
117
- - Docs conversion task (`tasks/docs.js`) for markdown-to-anza-page generation
118
-
119
- ---
120
-
121
- ## [0.2.6] — 2026-06-09
122
-
123
- ### Fixed
124
-
125
- - `bin/anza/index.js` wrapper now uses `realpathSync` to correctly detect CLI entry through npm bin symlinks
126
- - `npm run dev` and `npx anza` now work from installed packages
127
-
128
- ---
129
-
130
- ## [0.2.5] — 2026-06-09
131
-
132
- ### Fixed
133
-
134
- - Add `./package.json` export to `@adukiorg/anza` so `npm create` resolver works
135
- - Fix `@adukiorg/create-anza` fallback resolution for local development
136
-
137
- ---
138
-
139
- ## [0.2.4] — 2026-06-09
140
-
141
- ### Added
142
-
143
- - **`@adukiorg/create-anza`** package for `npm create @adukiorg/anza <name>`
144
- - `./bin/create` export added to `@adukiorg/anza` for programmatic scaffold access
145
-
146
- ---
147
-
148
- ## [0.2.3] — 2026-06-09
149
-
150
- ### Fixed
151
-
152
- - CI release workflow artifact naming to prevent binary overwrites
153
- - Windows runner shell compatibility (`shell: bash`)
154
-
155
- ---
156
-
157
- ## [0.2.2] — 2026-06-09
158
-
159
- ### Added
160
-
161
- - CI/CD workflows for GitHub Actions (build, typecheck, verify scaffolding, cross-platform release)
162
- - Comprehensive documentation for all modules (animations, api, events, platform, router, security, state, storage, sw, ui, workers)
163
- - `library/bin/` CLI wrappers for Node.js distribution
164
-
165
- ---
166
-
167
- ## [0.2.1] — 2026-06-09
168
-
169
- ### Added
170
-
171
- #### Service Worker Toolkit — `@adukiorg/anza/sw`
172
-
173
- - **New subpath export** `@adukiorg/anza/sw` — caching strategies, route interception, background sync, and push notifications
174
- - **Seven caching strategies**: CacheFirst, NetworkFirst, StaleRevalidate, CacheThenNetwork, NetworkOnly, CacheOnly, OfflineFallback
175
- - **URLPattern routing** inside the Service Worker via `router()` and `Router`
176
- - **Install/activate helpers**: `precache()`, `pruneStale()`, `claim()`, `enableNavPreload()`
177
- - **TTL expiry**: `pruneExpired()`, `setupAutoPrune()` with `x-expires-at` headers
178
- - **Background sync**: `replayQueue()`, `requeueFailed()` with dead-letter queue
179
- - **Request serialization**: `serializeRequest()`, `deserializeRequest()` for IndexedDB storage
180
- - **Push notifications**: `subscribe()`, `notify()` with VAPID support
181
- - **Scaffolded `src/sw.js`** generated by both `anza create` and `anza-create`
182
-
183
- #### Theme Switching — `@adukiorg/anza/theme`
184
-
185
- - **New subpath export** `@adukiorg/anza/theme`
186
- - **Auto-init on import** — reads saved preference from `localStorage` or respects `prefers-color-scheme`
187
- - **Attaches to `window.theme`** via `Object.defineProperty` (non-enumerable, non-configurable)
188
- - **API**: `theme.get()`, `theme.set()`, `theme.toggle()` — all update the same global instance
189
- - **No manual init required** — importing `@adukiorg/anza/ui` triggers it automatically
190
-
191
- #### View Transition Tokens — `tokens/semantic/transitions.css`
192
-
193
- - **New semantic token layer** connecting the CSS View Transitions API to the design token system
194
- - **Tokens**: `--transition-bg`, `--transition-duration`, `--transition-easing`, `--transition-push`, `--transition-pop`, `--transition-replace`
195
- - **Router `transitions.run()`** injects a token-aware stylesheet on first use
196
- - **Dock `swap()`** reads directional easing from tokens (`--transition-push` vs `--transition-pop`) for physically different forward/back feel
197
- - **High-contrast theme morphing** — `contrast.css` now declares `transition:` for smooth token interpolation
198
-
199
- #### Documentation
200
-
201
- - **Comprehensive `docs/index.md`** — master docs entry with all modules listed by usefulness
202
- - **`docs/sw/`** — complete SW documentation: `index.md`, `start.md`, `strategies.md`, `routes.md`, `sync.md`, `api.md`
203
- - **Updated `docs/intro/`** — SW toolkit in feature list, build output includes `dist/sw.js`
204
- - **View Transition token docs** added to `docs/ui/transitions.md`, `docs/router/transitions.md`, `docs/animations/tokens.md`
205
-
206
- #### Tooling
207
-
208
- - **`tools/src/build/graph.rs` split** into focused modules:
209
- - `cache.rs` — incremental build cache (`.anzacache.json`)
210
- - `parse.rs` — ESM AST parsing with swc
211
- - `entries.rs` — entry point discovery from HTML and `src/sw.js`
212
- - `resolve.rs` — import map and filesystem resolution
213
- - `html.rs` — HTML injection (importmap link, HMR script)
214
- - `sw.rs` — Service Worker bare-specifier rewriting
215
- - **Auto-discovery of `src/sw.js`** as a build entry point
216
- - **Bare specifier rewriting in `dist/sw.js`** — `@adukiorg/anza/sw` → `./sw/index.js` (SW does not support import maps)
217
-
218
- ### Changed
219
-
220
- - **Cache file renamed** from `.anza-build-cache.json` to `.anzacache.json`
221
- - **Scaffolded `src/app.js`** now imports and auto-registers the Service Worker
222
- - **Scaffolded `src/sw.js`** included in both Node.js and Rust `create` commands
223
-
224
- ### Fixed
225
-
226
- - High-contrast theme (`contrast.css`) now animates token changes instead of snapping instantly
227
-
228
- ---
229
-
230
- ## [0.2.0] — 2026-06-07
231
-
232
- ### Added
233
-
234
- #### Compiler — `anza`
235
-
236
- - **Dependency Graph Walking**: Automated dependency resolution of ESM imports/exports.
237
- - **Tree-Shaking**: Outputs only referenced files to `dist/`, excluding unused code.
238
- - **Automatic Inline Importmaps**: Optimal `<script type="importmap">` generated and injected inline into HTML entry points.
239
- - **Relative Component Styles & Templates**: Parses relative template and stylesheet file paths referenced in `ui.element` relative to `import.meta.url`.
240
- - **Concurrent File Watcher**: Recompiles output on file modifications.
241
- - **SSE HMR Dev Server**: CSS hot-swapping and HTML/JS auto-reloading via Server-Sent Events (SSE).
242
- - **Nested /dist Routing**: Added router nested service mapping in Axum dev server for development path parity.
243
-
244
- #### Structure
245
-
246
- - **Monorepo Split**: Reorganized files into `/library` (NPM package), `/sample` (demo application), and `/tools` (Rust compiler).
247
-
248
- #### Sample
249
-
250
- - **Cyberpunk Blog SPA**: Features reactive store, category filters, instant search, likes count persistence, details page with lightweight custom markdown renderer, post publishing, and post deletion.
251
-
252
- ---
253
-
254
- ## [0.1.0] — 2026-05-27
255
-
256
- ### Added
257
-
258
- #### Package
259
-
260
- - Published as `@adukiorg/anza` — pure browser ESM, zero build step
261
- - Scoped subpath exports for every core module (`/api`, `/state`, `/storage`, etc.)
262
- - `"type": "module"` — fully native ESM, no CommonJS wrapper
263
- - `npm test` via `@web/test-runner` (real Chromium, no jsdom)
264
- - `npm run serve` via `@web/dev-server` on port 8080
265
-
266
- #### Core — `@adukiorg/anza/api`
267
-
268
- - `execute()` — fetch wrapper with AbortSignal, timeout, and `scheduler.postTask` integration
269
- - `PlatformError` — unified error shape across all network failures
270
- - `retry()` — exponential backoff with jitter and AbortSignal support
271
- - `stream()` — async generator streaming over NDJSON responses
272
- - `createNDJSONTransform()` — reusable `TransformStream` for NDJSON parsing
273
- - `upload()` — multipart file upload with progress events
274
- - `pipeline` — composable request/response middleware pipeline
275
- - Cache strategies: `cache-first`, `network-first`, `stale-while-revalidate`
276
-
277
- #### Core — `@adukiorg/anza/state`
278
-
279
- - `ReactiveStore` — Proxy-based reactive state with microtask-batched notifications
280
- - `setActiveSubscriber` / `getActiveSubscriber` — dependency tracking context
281
- - `derived()` — auto-tracked computed values that re-evaluate on dependency changes
282
- - `sync()` — BroadcastChannel cross-tab state synchronization
283
-
284
- #### Core — `@adukiorg/anza/events`
285
-
286
- - `EventBus` — typed pub/sub with wildcard patterns and AbortSignal cleanup
287
- - `events` — singleton global event bus instance
288
-
289
- #### Core — `@adukiorg/anza/router`
290
-
291
- - `register()` / `match()` — URL pattern registration and matching
292
- - `clear()` / `getRoutes()` — route registry management
293
- - `addGuard()` — async navigation guard hooks
294
- - `setNotFound()` — 404 handler
295
- - `setup()` — bootstraps native Navigation API interception
296
- - Full programmatic history API: `navigate`, `replace`, `back`, `forward`, `go`, `current`, `entries`
297
- - `renderOutlet()` — declarative route outlet rendering
298
-
299
- #### Core — `@adukiorg/anza/storage`
300
-
301
- - `Database` — Promise-wrapped IndexedDB with sequential migrations
302
- - `LRUCache` / `WeakLRUCache` — in-memory LRU caches with optional TTL
303
- - `storage` — unified tiered facade: memory → IndexedDB → Cache API → OPFS
304
- - `quota` — storage estimate and persistence request helpers
305
-
306
- #### Core — `@adukiorg/anza/offline`
307
-
308
- - `queue` — IndexedDB-backed offline operation queue with FIFO dequeue
309
- - `check()` / `subscribe()` — connectivity detection and change subscriptions
310
-
311
- #### Core — `@adukiorg/anza/animations`
312
-
313
- - `animate()` — WAAPI wrapper with AbortSignal and easing controls
314
- - `stagger()` — staggered multi-element animation groups with `finished` promise
315
-
316
- #### Core — `@adukiorg/anza/workers`
317
-
318
- - `lock()` — Web Locks API facade with timeout and AbortSignal support
319
- - `WorkerPool` — managed pool of Web Workers with task queue and concurrency limits
320
-
321
- #### Core — `@adukiorg/anza/security`
322
-
323
- - `sanitize()` — XSS-safe HTML sanitizer using `DOMParser`
324
- - `uuid()` — `crypto.randomUUID()` wrapper
325
- - `hash()` — SHA-256/384/512 via Web Crypto API
326
- - `generateKey()` / `deriveKey()` — AES-GCM key generation and PBKDF2 derivation
327
- - `encrypt()` / `decrypt()` — AES-GCM symmetric encryption/decryption
328
-
329
- #### Core — `@adukiorg/anza/platform`
330
-
331
- - `supports` — feature detection registry for 30+ browser APIs
332
- - `reset()` — cache reset utility (used in tests)
333
-
334
- #### Core — `@adukiorg/anza/ui`
335
-
336
- - `BaseElement` — Shadow DOM base class for all custom elements
337
- - Design token cascade: primitive → semantic → component token layers
338
-
339
- #### Tests
340
-
341
- - 26 test suites, 70 assertions — all running in real Chromium via `@web/test-runner`
342
- - Browser-native import maps injected per test run — no Node.js module resolution
343
-
344
- #### Blog Demo
345
-
346
- - `blog/` — sample SPA demonstrating state, storage, offline queue, and animations
347
- - Import map mirrors the published `@adukiorg/anza/*` subpath exports exactly
348
-
349
- [Unreleased]: https://github.com/aduki-org/anza/compare/v0.2.1...HEAD
350
- [0.2.1]: https://github.com/aduki-org/anza/compare/v0.2.0...v0.2.1
351
- [0.2.0]: https://github.com/aduki-org/anza/compare/v0.1.0...v0.2.0
352
- [0.1.0]: https://github.com/aduki-org/anza/releases/tag/v0.1.0
@@ -1,16 +0,0 @@
1
- /**
2
- * tokens/primitives/radius.css
3
- *
4
- * Border radius scale from none to full pill/circle shapes.
5
- * Source: doc 26 §4
6
- */
7
-
8
- :root {
9
- --radius-none: 0px;
10
- --radius-sm: 0.125rem; /* 2px */
11
- --radius-md: 0.375rem; /* 6px */
12
- --radius-lg: 0.5rem; /* 8px */
13
- --radius-xl: 0.75rem; /* 12px */
14
- --radius-2xl: 1rem; /* 16px */
15
- --radius-full: 9999px; /* Pill / Circle */
16
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * tokens/primitives/shadow.css
3
- *
4
- * Elevation shadows using modern ambient + key light OKLCH alpha models.
5
- * Dark mode shadows automatically increase opacity to counteract low contrast.
6
- * Source: doc 26 §4
7
- */
8
-
9
- :root {
10
- --shadow-xs: 0 1px 2px 0 oklch(0% 0 0 / 0.05);
11
- --shadow-sm: 0 1px 3px 0 oklch(0% 0 0 / 0.1), 0 1px 2px -1px oklch(0% 0 0 / 0.1);
12
- --shadow-md: 0 4px 6px -1px oklch(0% 0 0 / 0.1), 0 2px 4px -2px oklch(0% 0 0 / 0.1);
13
- --shadow-lg: 0 10px 15px -3px oklch(0% 0 0 / 0.1), 0 4px 6px -4px oklch(0% 0 0 / 0.1);
14
- --shadow-xl: 0 20px 25px -5px oklch(0% 0 0 / 0.1), 0 8px 10px -6px oklch(0% 0 0 / 0.1);
15
- --shadow-none: 0 0 #0000;
16
- }
17
-
18
- [data-theme="dark"] {
19
- --shadow-xs: 0 1px 2px 0 oklch(0% 0 0 / 0.15);
20
- --shadow-sm: 0 1px 3px 0 oklch(0% 0 0 / 0.3), 0 1px 2px -1px oklch(0% 0 0 / 0.3);
21
- --shadow-md: 0 4px 6px -1px oklch(0% 0 0 / 0.3), 0 2px 4px -2px oklch(0% 0 0 / 0.3);
22
- --shadow-lg: 0 10px 15px -3px oklch(0% 0 0 / 0.3), 0 4px 6px -4px oklch(0% 0 0 / 0.3);
23
- --shadow-xl: 0 20px 25px -5px oklch(0% 0 0 / 0.3), 0 8px 10px -6px oklch(0% 0 0 / 0.3);
24
- }
25
-
26
- @media (prefers-color-scheme: dark) {
27
- :root:not([data-theme="light"]) {
28
- --shadow-xs: 0 1px 2px 0 oklch(0% 0 0 / 0.15);
29
- --shadow-sm: 0 1px 3px 0 oklch(0% 0 0 / 0.3), 0 1px 2px -1px oklch(0% 0 0 / 0.3);
30
- --shadow-md: 0 4px 6px -1px oklch(0% 0 0 / 0.3), 0 2px 4px -2px oklch(0% 0 0 / 0.3);
31
- --shadow-lg: 0 10px 15px -3px oklch(0% 0 0 / 0.3), 0 4px 6px -4px oklch(0% 0 0 / 0.3);
32
- --shadow-xl: 0 20px 25px -5px oklch(0% 0 0 / 0.3), 0 8px 10px -6px oklch(0% 0 0 / 0.3);
33
- }
34
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * tokens/primitives/zindex.css
3
- *
4
- * Explicit layer indices to eliminate z-index escalation bugs.
5
- * Source: doc 26 §4
6
- */
7
-
8
- :root {
9
- --z-index-base: 0;
10
- --z-index-raised: 10;
11
- --z-index-dropdown: 100;
12
- --z-index-sticky: 200;
13
- --z-index-overlay: 300;
14
- --z-index-modal: 400;
15
- --z-index-popover: 500;
16
- --z-index-toast: 600;
17
- --z-index-tooltip: 700;
18
- }
@@ -1,123 +0,0 @@
1
- /**
2
- * tokens/semantic/components.css
3
- *
4
- * Semantic component-level design tokens.
5
- */
6
-
7
- :root {
8
- /* Form Controls */
9
- --input-bg: var(--background);
10
- --input-border: var(--border);
11
- --input-border-focus: var(--border-focus);
12
- --input-radius: var(--radius-md);
13
- --input-font-size: var(--text-md);
14
- --input-padding-y: var(--space-sm);
15
- --input-padding-x: var(--space-md);
16
- --input-text-color: var(--foreground);
17
-
18
- --textarea-bg: var(--background);
19
- --textarea-border: var(--border);
20
- --textarea-border-focus: var(--border-focus);
21
- --textarea-radius: var(--radius-md);
22
- --textarea-font-size: var(--text-md);
23
- --textarea-padding-y: var(--space-sm);
24
- --textarea-padding-x: var(--space-md);
25
- --textarea-text-color: var(--foreground);
26
-
27
- --check-bg: var(--background);
28
- --check-bg-checked: var(--primary);
29
- --check-border: var(--border);
30
- --check-border-focus: var(--border-focus);
31
- --check-radius: var(--radius-sm);
32
- --check-size: var(--space-lg);
33
- --check-color: var(--primary-foreground);
34
-
35
- --radio-bg: var(--background);
36
- --radio-bg-checked: var(--primary);
37
- --radio-border: var(--border);
38
- --radio-border-focus: var(--border-focus);
39
- --radio-radius: var(--radius-full);
40
- --radio-size: var(--space-lg);
41
- --radio-color: var(--primary-foreground);
42
-
43
- --switch-bg: var(--border-strong);
44
- --switch-bg-on: var(--primary);
45
- --switch-thumb-color: var(--primary-foreground);
46
- --switch-width: var(--space-xl);
47
- --switch-height: var(--space-lg);
48
- --switch-thumb-size: calc(var(--switch-height) - var(--space-xs));
49
-
50
- --select-bg: var(--background);
51
- --select-border: var(--border);
52
- --select-border-focus: var(--border-focus);
53
- --select-radius: var(--radius-md);
54
- --select-font-size: var(--text-md);
55
- --select-padding-y: var(--space-sm);
56
- --select-padding-x: var(--space-md);
57
- --select-text-color: var(--foreground);
58
-
59
- --upload-bg: var(--background);
60
- --upload-border: var(--border);
61
- --upload-border-focus: var(--border-focus);
62
- --upload-radius: var(--radius-lg);
63
- --upload-padding: var(--space-xl);
64
- --upload-color: var(--foreground-muted);
65
-
66
- /* Feedback */
67
- --alert-radius: var(--radius-md);
68
- --alert-bg: var(--background-elevated);
69
- --alert-color: var(--foreground);
70
- --alert-border: var(--border);
71
-
72
- --skeleton-bg: var(--foreground-disabled);
73
- --skeleton-radius: var(--radius-md);
74
- --skeleton-width: 100%;
75
- --skeleton-height: var(--space-md);
76
-
77
- /* Data Display */
78
- --card-radius: var(--radius-lg);
79
-
80
- --stat-label: var(--text-xs);
81
- --stat-value: var(--text-3xl);
82
-
83
- /* Navigation */
84
- --link-color: var(--foreground-link);
85
- --link-color-hover: var(--primary-hover);
86
- --link-color-active: var(--primary-active);
87
-
88
- /* Layout */
89
- --stack-gap: var(--space-md);
90
-
91
- --grid-gap: var(--space-md);
92
- --grid-cols: repeat(auto-fit, minmax(250px, 1fr));
93
-
94
- --surface-bg: var(--background);
95
- --surface-border: transparent;
96
- --surface-shadow: none;
97
- --surface-radius: var(--radius-none);
98
-
99
- /* Overlay */
100
- --dialog-radius: var(--radius-lg);
101
- --dialog-shadow: var(--shadow-xl);
102
-
103
- --popover-bg: var(--background-elevated);
104
- --popover-border: var(--border);
105
- --popover-shadow: var(--shadow-lg);
106
- --popover-radius: var(--radius-md);
107
-
108
- --tooltip-bg: var(--background-inverse);
109
- --tooltip-color: var(--foreground-inverse);
110
- --tooltip-radius: var(--radius-sm);
111
-
112
- --menu-bg: var(--background-elevated);
113
- --menu-border: var(--border);
114
- --menu-shadow: var(--shadow-lg);
115
- --menu-radius: var(--radius-md);
116
-
117
- --drawer-shadow: var(--shadow-xl);
118
- --drawer-width: min(calc(var(--space-5xl) * 3), 85vw);
119
-
120
- --sheet-radius: var(--radius-lg);
121
- --sheet-shadow: var(--shadow-xl);
122
- --sheet-max-width: min(calc(var(--space-5xl) * 6), 100vw);
123
- }