@chromvoid/uikit 0.1.0 → 0.2.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.
Files changed (192) hide show
  1. package/LICENSE +19 -6
  2. package/README.md +1 -0
  3. package/dist/components/cv-accordion-item.d.ts +1 -1
  4. package/dist/components/cv-accordion.d.ts +1 -1
  5. package/dist/components/cv-accordion.js +2 -1
  6. package/dist/components/cv-alert-dialog.d.ts +1 -1
  7. package/dist/components/cv-alert-dialog.js +17 -2
  8. package/dist/components/cv-alert.d.ts +1 -1
  9. package/dist/components/cv-alert.js +2 -1
  10. package/dist/components/cv-badge.d.ts +1 -1
  11. package/dist/components/cv-badge.js +2 -1
  12. package/dist/components/cv-bottom-sheet.d.ts +127 -0
  13. package/dist/components/cv-bottom-sheet.js +513 -0
  14. package/dist/components/cv-breadcrumb-item.d.ts +1 -1
  15. package/dist/components/cv-breadcrumb-item.js +1 -1
  16. package/dist/components/cv-breadcrumb.d.ts +1 -1
  17. package/dist/components/cv-breadcrumb.js +2 -1
  18. package/dist/components/cv-button.d.ts +23 -1
  19. package/dist/components/cv-button.js +194 -37
  20. package/dist/components/cv-callout.d.ts +8 -1
  21. package/dist/components/cv-callout.js +18 -1
  22. package/dist/components/cv-card.d.ts +1 -1
  23. package/dist/components/cv-card.js +2 -2
  24. package/dist/components/cv-carousel-slide.d.ts +1 -1
  25. package/dist/components/cv-carousel.d.ts +1 -1
  26. package/dist/components/cv-carousel.js +2 -1
  27. package/dist/components/cv-checkbox.d.ts +1 -1
  28. package/dist/components/cv-combobox-group.d.ts +1 -1
  29. package/dist/components/cv-combobox-option.d.ts +1 -1
  30. package/dist/components/cv-combobox-option.js +2 -2
  31. package/dist/components/cv-combobox.d.ts +3 -1
  32. package/dist/components/cv-combobox.js +49 -8
  33. package/dist/components/cv-command-item.d.ts +1 -1
  34. package/dist/components/cv-command-item.js +2 -2
  35. package/dist/components/cv-command-palette.d.ts +1 -1
  36. package/dist/components/cv-command-palette.js +21 -1
  37. package/dist/components/cv-context-menu.d.ts +1 -1
  38. package/dist/components/cv-context-menu.js +2 -1
  39. package/dist/components/cv-copy-button.d.ts +37 -9
  40. package/dist/components/cv-copy-button.js +129 -41
  41. package/dist/components/cv-date-picker.d.ts +1 -1
  42. package/dist/components/cv-date-picker.js +20 -1
  43. package/dist/components/cv-dialog.d.ts +44 -2
  44. package/dist/components/cv-dialog.js +686 -74
  45. package/dist/components/cv-disclosure.d.ts +1 -1
  46. package/dist/components/cv-disclosure.js +2 -1
  47. package/dist/components/cv-drawer.d.ts +29 -1
  48. package/dist/components/cv-drawer.js +229 -4
  49. package/dist/components/cv-feed-article.d.ts +1 -1
  50. package/dist/components/cv-feed-article.js +2 -1
  51. package/dist/components/cv-feed.d.ts +1 -1
  52. package/dist/components/cv-feed.js +2 -1
  53. package/dist/components/cv-grid-cell.d.ts +1 -1
  54. package/dist/components/cv-grid-cell.js +3 -3
  55. package/dist/components/cv-grid-column.d.ts +1 -1
  56. package/dist/components/cv-grid-column.js +1 -1
  57. package/dist/components/cv-grid-row.d.ts +1 -1
  58. package/dist/components/cv-grid.d.ts +1 -1
  59. package/dist/components/cv-grid.js +2 -1
  60. package/dist/components/cv-guidance-anchor.d.ts +47 -0
  61. package/dist/components/cv-guidance-anchor.js +113 -0
  62. package/dist/components/cv-guidance-panel.d.ts +29 -0
  63. package/dist/components/cv-guidance-panel.js +245 -0
  64. package/dist/components/cv-icon.d.ts +2 -1
  65. package/dist/components/cv-icon.js +28 -3
  66. package/dist/components/cv-input.d.ts +7 -1
  67. package/dist/components/cv-input.js +33 -1
  68. package/dist/components/cv-landmark.d.ts +1 -1
  69. package/dist/components/cv-landmark.js +2 -1
  70. package/dist/components/cv-link.d.ts +1 -1
  71. package/dist/components/cv-link.js +2 -1
  72. package/dist/components/cv-listbox-group.d.ts +1 -1
  73. package/dist/components/cv-listbox.d.ts +1 -1
  74. package/dist/components/cv-listbox.js +2 -1
  75. package/dist/components/cv-menu-button.d.ts +24 -1
  76. package/dist/components/cv-menu-button.js +226 -18
  77. package/dist/components/cv-menu-group.d.ts +1 -1
  78. package/dist/components/cv-menu-item.d.ts +1 -1
  79. package/dist/components/cv-menu-item.js +6 -2
  80. package/dist/components/cv-menu.d.ts +1 -1
  81. package/dist/components/cv-menu.js +21 -1
  82. package/dist/components/cv-meter.d.ts +1 -1
  83. package/dist/components/cv-meter.js +6 -22
  84. package/dist/components/cv-number.d.ts +1 -1
  85. package/dist/components/cv-option.d.ts +1 -1
  86. package/dist/components/cv-option.js +3 -9
  87. package/dist/components/cv-popover-positioning.d.ts +22 -0
  88. package/dist/components/cv-popover-positioning.js +112 -0
  89. package/dist/components/cv-popover.d.ts +45 -8
  90. package/dist/components/cv-popover.js +395 -113
  91. package/dist/components/cv-progress-ring.d.ts +1 -1
  92. package/dist/components/cv-progress-ring.js +2 -1
  93. package/dist/components/cv-progress.d.ts +8 -1
  94. package/dist/components/cv-progress.js +41 -10
  95. package/dist/components/cv-radio-group.d.ts +1 -1
  96. package/dist/components/cv-radio.d.ts +1 -1
  97. package/dist/components/cv-radio.js +1 -1
  98. package/dist/components/cv-select-group.d.ts +1 -1
  99. package/dist/components/cv-select-option.d.ts +1 -1
  100. package/dist/components/cv-select-option.js +2 -2
  101. package/dist/components/cv-select.d.ts +1 -1
  102. package/dist/components/cv-select.js +28 -1
  103. package/dist/components/cv-sidebar-item.d.ts +1 -1
  104. package/dist/components/cv-sidebar.d.ts +1 -1
  105. package/dist/components/cv-sidebar.js +3 -2
  106. package/dist/components/cv-slider-multi-thumb.d.ts +1 -1
  107. package/dist/components/cv-slider-multi-thumb.js +2 -1
  108. package/dist/components/cv-slider.d.ts +17 -4
  109. package/dist/components/cv-slider.js +63 -21
  110. package/dist/components/cv-spinbutton.d.ts +1 -1
  111. package/dist/components/cv-spinner.d.ts +1 -1
  112. package/dist/components/cv-spinner.js +2 -1
  113. package/dist/components/cv-switch.d.ts +1 -1
  114. package/dist/components/cv-tab-panel.d.ts +1 -1
  115. package/dist/components/cv-tab.d.ts +1 -1
  116. package/dist/components/cv-table-cell.d.ts +1 -1
  117. package/dist/components/cv-table-cell.js +1 -1
  118. package/dist/components/cv-table-column.d.ts +1 -1
  119. package/dist/components/cv-table-column.js +1 -1
  120. package/dist/components/cv-table-row.d.ts +1 -1
  121. package/dist/components/cv-table-row.js +1 -4
  122. package/dist/components/cv-table.d.ts +1 -3
  123. package/dist/components/cv-table.js +4 -11
  124. package/dist/components/cv-tabs.d.ts +1 -1
  125. package/dist/components/cv-tabs.js +3 -2
  126. package/dist/components/cv-textarea.d.ts +11 -1
  127. package/dist/components/cv-textarea.js +33 -0
  128. package/dist/components/cv-toast-region.d.ts +1 -1
  129. package/dist/components/cv-toast-region.js +2 -1
  130. package/dist/components/cv-toast.d.ts +1 -1
  131. package/dist/components/cv-toast.js +20 -27
  132. package/dist/components/cv-toolbar-item.d.ts +1 -1
  133. package/dist/components/cv-toolbar-separator.d.ts +1 -1
  134. package/dist/components/cv-toolbar.d.ts +1 -1
  135. package/dist/components/cv-toolbar.js +2 -1
  136. package/dist/components/cv-tooltip.d.ts +1 -1
  137. package/dist/components/cv-tooltip.js +2 -1
  138. package/dist/components/cv-treegrid-cell.d.ts +1 -1
  139. package/dist/components/cv-treegrid-cell.js +1 -1
  140. package/dist/components/cv-treegrid-column.d.ts +1 -1
  141. package/dist/components/cv-treegrid-column.js +1 -1
  142. package/dist/components/cv-treegrid-row.d.ts +1 -1
  143. package/dist/components/cv-treegrid-row.js +1 -1
  144. package/dist/components/cv-treegrid.d.ts +1 -1
  145. package/dist/components/cv-treegrid.js +4 -3
  146. package/dist/components/cv-treeitem.d.ts +1 -1
  147. package/dist/components/cv-treeitem.js +2 -2
  148. package/dist/components/cv-treeview.d.ts +1 -1
  149. package/dist/components/cv-treeview.js +2 -1
  150. package/dist/components/cv-window-splitter.d.ts +1 -1
  151. package/dist/components/cv-window-splitter.js +2 -1
  152. package/dist/components/index.d.ts +7 -0
  153. package/dist/components/index.js +3 -0
  154. package/dist/dialog/create-dialog-controller.d.ts +12 -4
  155. package/dist/dialog/create-dialog-controller.js +84 -22
  156. package/dist/dialog/index.d.ts +1 -1
  157. package/dist/index.d.ts +1 -1
  158. package/dist/reatom-lit/ReatomLitElement.d.ts +6 -3
  159. package/dist/reatom-lit/ReatomLitElement.js +18 -8
  160. package/dist/reatom-lit/createAfterRenderScheduler.d.ts +10 -0
  161. package/dist/reatom-lit/createAfterRenderScheduler.js +33 -0
  162. package/dist/reatom-lit/index.d.ts +2 -0
  163. package/dist/reatom-lit/index.js +1 -0
  164. package/dist/reatom-lit/watch.d.ts +1 -1
  165. package/dist/reatom-lit/withReatomElement.js +16 -2
  166. package/dist/register.js +4 -1
  167. package/dist/styles/component-styles.js +4 -0
  168. package/dist/styles/uno-generated.d.ts +2 -0
  169. package/dist/styles/uno-generated.js +1 -0
  170. package/dist/styles/uno-utilities.d.ts +5 -0
  171. package/dist/styles/uno-utilities.js +7 -0
  172. package/dist/theme/cv-theme-provider.d.ts +1 -1
  173. package/dist/theme/cv-theme-provider.js +2 -2
  174. package/dist/theme/tokens.css +619 -162
  175. package/package.json +9 -5
  176. package/specs/components/bottom-sheet.md +93 -0
  177. package/specs/components/button.md +8 -0
  178. package/specs/components/callout.md +8 -0
  179. package/specs/components/copy-button.md +54 -17
  180. package/specs/components/dialog.md +72 -43
  181. package/specs/components/drawer.md +18 -13
  182. package/specs/components/guidance-anchor.md +64 -0
  183. package/specs/components/guidance-panel.md +92 -0
  184. package/specs/components/input.md +7 -0
  185. package/specs/components/menu.md +8 -0
  186. package/specs/components/option.md +9 -9
  187. package/specs/components/progress.md +11 -0
  188. package/specs/components/sidebar.md +12 -12
  189. package/specs/components/table.md +13 -13
  190. package/specs/components/theme.md +13 -13
  191. package/specs/components/treegrid.md +15 -15
  192. package/specs/components/treeview.md +10 -10
@@ -0,0 +1,92 @@
1
+ # cv-guidance-panel
2
+
3
+ Product-agnostic guidance body layout for coach marks, inline hints, warnings, and blocked-action explanations. It owns only visual structure and styling; app-layer guidance state, overlay semantics, progress, dismiss, snooze, and completion live outside UIKit.
4
+
5
+ ## Anatomy
6
+
7
+ ```
8
+ <cv-guidance-panel> (host)
9
+ └── <section part="base" role="note">
10
+ ├── <header part="header">
11
+ │ ├── <span part="icon">
12
+ │ │ └── <slot name="icon">
13
+ │ ├── <div part="title">
14
+ │ │ └── <slot name="title">
15
+ │ └── <div part="progress">
16
+ │ └── <slot name="progress">
17
+ ├── <div part="body">
18
+ │ └── <slot>
19
+ └── <div part="actions">
20
+ └── <slot name="actions">
21
+ ```
22
+
23
+ ## Attributes
24
+
25
+ | Attribute | Type | Default | Description |
26
+ | --------- | ------ | --------------- | ------------------------------------------------------------------------ |
27
+ | `variant` | String | `"coach-mark"` | Visual variant: `"coach-mark"` \| `"hint"` \| `"warning"` \| `"blocked"` |
28
+ | `density` | String | `"comfortable"` | Spacing density: `"comfortable"` \| `"compact"` |
29
+
30
+ ## Slots
31
+
32
+ | Slot | Description |
33
+ | ----------- | -------------------------------------------------------------------- |
34
+ | `icon` | Optional leading visual. |
35
+ | `title` | Guidance title exposed through the stable `title` part. |
36
+ | `(default)` | Main body content. |
37
+ | `actions` | Optional action controls supplied by the app host or owning surface. |
38
+ | `progress` | Optional progress text or indicator, such as `1 / 4`. |
39
+
40
+ ## CSS Parts
41
+
42
+ | Part | Element | Description |
43
+ | ---------- | ----------- | ----------------------------------------- |
44
+ | `base` | `<section>` | Outer neutral content container. |
45
+ | `header` | `<header>` | Layout row for icon, title, and progress. |
46
+ | `icon` | `<span>` | Wrapper around the `icon` slot. |
47
+ | `title` | `<div>` | Wrapper around the `title` slot. |
48
+ | `progress` | `<div>` | Wrapper around the `progress` slot. |
49
+ | `body` | `<div>` | Wrapper around the default slot. |
50
+ | `actions` | `<div>` | Wrapper around the `actions` slot. |
51
+
52
+ ## CSS Custom Properties
53
+
54
+ | Property | Default | Description |
55
+ | -------------------------------------------- | ------------------------------------------- | ------------------------------------ |
56
+ | `--cv-guidance-panel-background` | `var(--cv-color-surface-elevated, #1d2432)` | Base background. |
57
+ | `--cv-guidance-panel-border-color` | `var(--cv-color-border, #2a3245)` | Base border color. |
58
+ | `--cv-guidance-panel-border-radius` | `var(--cv-radius-md, 8px)` | Base border radius. |
59
+ | `--cv-guidance-panel-color` | `var(--cv-color-text, #e8ecf6)` | Host text color. |
60
+ | `--cv-guidance-panel-body-color` | `var(--cv-color-text-muted, #bac4d8)` | Body text color. |
61
+ | `--cv-guidance-panel-title-color` | `var(--cv-color-text-strong, currentColor)` | Title text color. |
62
+ | `--cv-guidance-panel-icon-color` | `currentColor` | Icon color before variant overrides. |
63
+ | `--cv-guidance-panel-padding-inline` | `var(--cv-space-4, 16px)` | Horizontal padding. |
64
+ | `--cv-guidance-panel-padding-block` | `var(--cv-space-4, 16px)` | Vertical padding. |
65
+ | `--cv-guidance-panel-gap` | `var(--cv-space-3, 12px)` | Main layout gap. |
66
+ | `--cv-guidance-panel-actions-gap` | `var(--cv-space-2, 8px)` | Gap between action controls. |
67
+ | `--cv-guidance-panel-compact-padding-inline` | `var(--cv-space-3, 12px)` | Compact horizontal padding. |
68
+ | `--cv-guidance-panel-compact-padding-block` | `var(--cv-space-3, 12px)` | Compact vertical padding. |
69
+ | `--cv-guidance-panel-compact-gap` | `var(--cv-space-2, 8px)` | Compact main layout gap. |
70
+
71
+ ## Accessibility
72
+
73
+ `cv-guidance-panel` renders neutral supplementary content with `role="note"` on `part="base"`. It does not set dialog, popover, modal, live-region, focus-trap, dismiss, snooze, or completion semantics. `app-guidance-host` or the owning surface decides whether the panel appears inside a popover, bottom sheet, inline region, or another accessible container.
74
+
75
+ ## Usage
76
+
77
+ ```html
78
+ <cv-guidance-panel variant="coach-mark" density="comfortable">
79
+ <cv-icon slot="icon" name="sparkles"></cv-icon>
80
+ <span slot="title">Create your first item</span>
81
+ <p>Start with a password, note, file, or passkey.</p>
82
+ <span slot="progress">1 / 4</span>
83
+ <div slot="actions">
84
+ <cv-button>Start</cv-button>
85
+ <cv-button variant="ghost">Later</cv-button>
86
+ </div>
87
+ </cv-guidance-panel>
88
+ ```
89
+
90
+ ## Boundaries
91
+
92
+ The component must not import WebView app state, navigation, module access, i18n data, guidance registry, or guidance model modules. It is a dumb visual primitive that renders slots and reflected presentation attributes.
@@ -38,6 +38,7 @@ Single-line text input control supporting text-like types, clearable behavior, a
38
38
  | `password-toggle` | Boolean | `false` | yes | Shows a password visibility toggle (only effective when `type="password"`) |
39
39
  | `size` | String | `"medium"` | yes | Component size: `small` \| `medium` \| `large` |
40
40
  | `variant` | String | `"outlined"` | yes | Visual variant: `outlined` \| `filled` |
41
+ | `preset` | String | — | yes | Semantic preset: `search-mobile` |
41
42
  | `name` | String | `""` | no | Name for form association |
42
43
 
43
44
  ## Variants
@@ -55,6 +56,12 @@ Single-line text input control supporting text-like types, clearable behavior, a
55
56
  | `medium` | `36px` | `var(--cv-space-3, 12px)` | `var(--cv-font-size-base, 14px)` |
56
57
  | `large` | `42px` | `var(--cv-space-4, 16px)` | `var(--cv-font-size-md, 16px)` |
57
58
 
59
+ ## Presets
60
+
61
+ | Preset | Description |
62
+ | --------------- | ---------------------------------------------------------------------------- |
63
+ | `search-mobile` | Mobile search/input density with 42px height, 14px radius, and search tokens |
64
+
58
65
  ## Slots
59
66
 
60
67
  | Slot | Description |
@@ -337,6 +337,7 @@ Split-button mode (`[split]`):
337
337
  | `split` | Boolean | `false` | Enables split-button mode with separate action and dropdown areas |
338
338
  | `size` | String | `"medium"` | Size: `small` \| `medium` \| `large` |
339
339
  | `variant` | String | `"default"` | Visual variant: `default` \| `primary` \| `danger` \| `ghost` |
340
+ | `preset` | String | — | Semantic preset: `icon-overflow` |
340
341
  | `close-on-select` | Boolean | `true` | Close the menu after an item is selected |
341
342
  | `aria-label` | String | `""` | Accessible label for the trigger/dropdown |
342
343
 
@@ -357,6 +358,12 @@ Split-button mode (`[split]`):
357
358
  | `danger` | Danger-tinted background and border |
358
359
  | `ghost` | Transparent background and border |
359
360
 
361
+ #### Presets
362
+
363
+ | Preset | Description |
364
+ | --------------- | ---------------------------------------------------------------------- |
365
+ | `icon-overflow` | Zero-gap icon overflow trigger with standardized menu offset and width |
366
+
360
367
  #### Slots
361
368
 
362
369
  | Slot | Description |
@@ -392,6 +399,7 @@ Split-button mode (`[split]`):
392
399
  | `--cv-menu-button-font-size` | `inherit` | Font size of button content |
393
400
  | `--cv-menu-button-menu-offset` | `var(--cv-space-1, 4px)` | Gap between trigger and menu popup |
394
401
  | `--cv-menu-button-menu-min-inline-size` | `max(180px, 100%)` | Minimum inline size of the menu popup |
402
+ | `--cv-menu-button-menu-max-inline-size` | `calc(100vw - 16px)` | Maximum inline size of the menu popup |
395
403
  | `--cv-menu-button-menu-z-index` | `20` | Z-index of the menu popup |
396
404
 
397
405
  #### Events
@@ -45,15 +45,15 @@ Individual selectable option for use as a direct child of `cv-listbox` or `cv-li
45
45
 
46
46
  ## CSS Custom Properties
47
47
 
48
- | Property | Default | Description |
49
- | --------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------- |
50
- | `--cv-option-padding-block` | `var(--cv-space-2, 8px)` | Vertical padding inside `[part="base"]`. |
51
- | `--cv-option-padding-inline` | `var(--cv-space-3, 12px)` | Horizontal padding inside `[part="base"]`. |
52
- | `--cv-option-border-radius` | `var(--cv-radius-sm, 6px)` | Border radius of `[part="base"]`. |
53
- | `--cv-option-active-background` | `color-mix(in oklab, var(--cv-color-primary, #65d7ff) 22%, transparent)` | Background applied when the option is active (highlighted). |
54
- | `--cv-option-selected-background` | `color-mix(in oklab, var(--cv-color-primary, #65d7ff) 34%, transparent)` | Background applied when the option is selected. |
55
- | `--cv-option-disabled-opacity` | `0.55` | Opacity applied when the option is disabled. |
56
- | `--cv-option-focus-outline-color` | `var(--cv-color-primary, #65d7ff)` | Outline color for `:focus-visible` (roving-tabindex focus strategy). |
48
+ | Property | Default | Description |
49
+ | --------------------------------- | ---------------------------------- | -------------------------------------------------------------------- |
50
+ | `--cv-option-padding-block` | `var(--cv-space-2, 8px)` | Vertical padding inside `[part="base"]`. |
51
+ | `--cv-option-padding-inline` | `var(--cv-space-3, 12px)` | Horizontal padding inside `[part="base"]`. |
52
+ | `--cv-option-border-radius` | `var(--cv-radius-sm, 6px)` | Border radius of `[part="base"]`. |
53
+ | `--cv-option-active-background` | `var(--cv-color-primary-ring)` | Background applied when the option is active (highlighted). |
54
+ | `--cv-option-selected-background` | `var(--cv-color-primary-border)` | Background applied when the option is selected. |
55
+ | `--cv-option-disabled-opacity` | `0.55` | Opacity applied when the option is disabled. |
56
+ | `--cv-option-focus-outline-color` | `var(--cv-color-primary, #65d7ff)` | Outline color for `:focus-visible` (roving-tabindex focus strategy). |
57
57
 
58
58
  Additionally, component styles depend on theme tokens through fallback values:
59
59
 
@@ -22,6 +22,7 @@ A read-only indicator that communicates determinate or indeterminate loading/com
22
22
  | `min` | Number | `0` | Minimum boundary |
23
23
  | `max` | Number | `100` | Maximum boundary |
24
24
  | `indeterminate` | Boolean | `false` | Switches to indeterminate (animated) mode |
25
+ | `tone` | String | — | Semantic tone: `upload` \| `queued` \| `success` \| `danger` \| `warning` |
25
26
  | `value-text` | String | — | Static override for `aria-valuetext`; takes precedence over the percentage fallback |
26
27
  | `aria-label` | String | — | Accessible label passed through to headless |
27
28
 
@@ -39,6 +40,16 @@ A read-only indicator that communicates determinate or indeterminate loading/com
39
40
  | `indicator` | `<div>` | Filled portion representing current progress |
40
41
  | `label` | `<span>` | Content overlay inside indicator; wraps the default slot |
41
42
 
43
+ ## Tones
44
+
45
+ | Tone | Description |
46
+ | --------- | -------------------------------- |
47
+ | `upload` | Primary upload/transfer progress |
48
+ | `queued` | Muted queued progress |
49
+ | `success` | Success/completed progress |
50
+ | `danger` | Failed/error progress |
51
+ | `warning` | Paused/warning progress |
52
+
42
53
  ## CSS Custom Properties
43
54
 
44
55
  | Property | Default | Description |
@@ -70,18 +70,18 @@ When `scrollspyRoot` is `null`, `cv-sidebar` resolves section targets in the hos
70
70
 
71
71
  ## CSS Custom Properties
72
72
 
73
- | Property | Default |
74
- | ---------------------------------- | --------------------------------------------- |
75
- | `--cv-sidebar-inline-size` | `280px` |
76
- | `--cv-sidebar-rail-inline-size` | `56px` |
77
- | `--cv-sidebar-z-index` | `30` |
78
- | `--cv-sidebar-background` | `var(--cv-color-surface, #141923)` |
79
- | `--cv-sidebar-border-color` | `var(--cv-color-border, #2a3245)` |
80
- | `--cv-sidebar-padding-block` | `var(--cv-space-3, 12px)` |
81
- | `--cv-sidebar-padding-inline` | `var(--cv-space-3, 12px)` |
82
- | `--cv-sidebar-overlay-color` | `color-mix(in oklab, black 56%, transparent)` |
83
- | `--cv-sidebar-transition-duration` | `var(--cv-duration-normal, 200ms)` |
84
- | `--cv-sidebar-transition-easing` | `var(--cv-easing-standard, ease)` |
73
+ | Property | Default |
74
+ | ---------------------------------- | ---------------------------------- |
75
+ | `--cv-sidebar-inline-size` | `280px` |
76
+ | `--cv-sidebar-rail-inline-size` | `56px` |
77
+ | `--cv-sidebar-z-index` | `30` |
78
+ | `--cv-sidebar-background` | `var(--cv-color-surface, #141923)` |
79
+ | `--cv-sidebar-border-color` | `var(--cv-color-border, #2a3245)` |
80
+ | `--cv-sidebar-padding-block` | `var(--cv-space-3, 12px)` |
81
+ | `--cv-sidebar-padding-inline` | `var(--cv-space-3, 12px)` |
82
+ | `--cv-sidebar-overlay-color` | `var(--cv-color-overlay)` |
83
+ | `--cv-sidebar-transition-duration` | `var(--cv-duration-normal, 200ms)` |
84
+ | `--cv-sidebar-transition-easing` | `var(--cv-easing-standard, ease)` |
85
85
 
86
86
  ## Events
87
87
 
@@ -52,19 +52,19 @@ Data table for displaying structured tabular content with optional sorting, row
52
52
 
53
53
  ## CSS Custom Properties
54
54
 
55
- | Property | Default | Description |
56
- | ---------------------------------------- | ------------------------------------------------------------------------ | ---------------------------------------------- |
57
- | `--cv-table-border-radius` | `var(--cv-radius-md, 10px)` | Border radius of the table container |
58
- | `--cv-table-border-color` | `var(--cv-color-border, #2a3245)` | Border color of the table and cells |
59
- | `--cv-table-background` | `var(--cv-color-surface, #141923)` | Table background color |
60
- | `--cv-table-header-background` | `color-mix(in oklab, var(--cv-color-surface, #141923) 82%, transparent)` | Header row background |
61
- | `--cv-table-stripe-background` | `color-mix(in oklab, var(--cv-color-surface, #141923) 90%, transparent)` | Background for alternating rows when `striped` |
62
- | `--cv-table-row-selected-background` | `color-mix(in oklab, var(--cv-color-primary, #65d7ff) 12%, transparent)` | Background for selected rows |
63
- | `--cv-table-cell-padding-block` | `var(--cv-space-2, 8px)` | Vertical cell padding |
64
- | `--cv-table-cell-padding-inline` | `var(--cv-space-3, 12px)` | Horizontal cell padding |
65
- | `--cv-table-compact-cell-padding-block` | `var(--cv-space-1, 4px)` | Vertical cell padding in compact mode |
66
- | `--cv-table-compact-cell-padding-inline` | `var(--cv-space-2, 8px)` | Horizontal cell padding in compact mode |
67
- | `--cv-table-focus-outline-color` | `var(--cv-color-primary, #65d7ff)` | Focus ring color for grid navigation |
55
+ | Property | Default | Description |
56
+ | ---------------------------------------- | ------------------------------------------------ | ---------------------------------------------- |
57
+ | `--cv-table-border-radius` | `var(--cv-radius-md, 10px)` | Border radius of the table container |
58
+ | `--cv-table-border-color` | `var(--cv-color-border, #2a3245)` | Border color of the table and cells |
59
+ | `--cv-table-background` | `var(--cv-color-surface, #141923)` | Table background color |
60
+ | `--cv-table-header-background` | `var(--cv-color-surface-glass-strong)` | Header row background |
61
+ | `--cv-table-stripe-background` | `var(--cv-color-surface-secondary-glass-strong)` | Background for alternating rows when `striped` |
62
+ | `--cv-table-row-selected-background` | `var(--cv-color-primary-surface)` | Background for selected rows |
63
+ | `--cv-table-cell-padding-block` | `var(--cv-space-2, 8px)` | Vertical cell padding |
64
+ | `--cv-table-cell-padding-inline` | `var(--cv-space-3, 12px)` | Horizontal cell padding |
65
+ | `--cv-table-compact-cell-padding-block` | `var(--cv-space-1, 4px)` | Vertical cell padding in compact mode |
66
+ | `--cv-table-compact-cell-padding-inline` | `var(--cv-space-2, 8px)` | Horizontal cell padding in compact mode |
67
+ | `--cv-table-focus-outline-color` | `var(--cv-color-primary, #65d7ff)` | Focus ring color for grid navigation |
68
68
 
69
69
  Additionally, component styles depend on theme tokens through fallback values:
70
70
 
@@ -69,7 +69,7 @@ The provider defines the full design token surface. All tokens use the `--cv-` p
69
69
  | `--cv-color-text-strong` | `#f5f7fc` | `#0e1219` | Emphasized text |
70
70
  | `--cv-color-text-strongest` | `#ffffff` | `#000000` | Maximum contrast text |
71
71
  | `--cv-color-border` | `#2a3245` | `#d0d5de` | Default border color |
72
- | `--cv-color-border-muted` | `color-mix(in oklab, var(--cv-color-border) 55%, transparent)` | `color-mix(in oklab, var(--cv-color-border) 55%, transparent)` | Subtle border |
72
+ | `--cv-color-border-muted` | `hwb(214 17.3% 63.5% / 0.52)` | `hwb(216 9.8% 72.5% / 0.08)` | Subtle border |
73
73
  | `--cv-color-border-strong` | `color-mix(in oklab, var(--cv-color-border) 82%, white 18%)` | `color-mix(in oklab, var(--cv-color-border) 82%, black 18%)` | Strong border |
74
74
  | `--cv-color-border-accent` | `color-mix(in oklab, var(--cv-color-primary) 35%, var(--cv-color-border))` | `color-mix(in oklab, var(--cv-color-primary) 35%, var(--cv-color-border))` | Accent-tinted border |
75
75
  | `--cv-color-brand` | `var(--cv-color-primary)` | _(inherits)_ | Alias: brand color |
@@ -101,7 +101,7 @@ The provider defines the full design token surface. All tokens use the `--cv-` p
101
101
  | `--cv-color-focus` | `var(--cv-color-primary)` | _(inherits)_ | Focus indicator color |
102
102
  | `--cv-color-focus-ring` | `var(--cv-color-primary)` | _(inherits)_ | Focus ring color |
103
103
  | `--cv-color-hover` | `color-mix(in oklab, var(--cv-color-primary) 10%, var(--cv-color-surface))` | `color-mix(in oklab, var(--cv-color-primary) 8%, var(--cv-color-surface))` | General hover state |
104
- | `--cv-color-active` | `color-mix(in oklab, var(--cv-color-primary) 18%, transparent)` | `color-mix(in oklab, var(--cv-color-primary) 14%, transparent)` | General active / pressed state |
104
+ | `--cv-color-active` | `hwb(186 0% 0% / 0.18)` | `hwb(186 0% 20% / 0.14)` | General active / pressed state |
105
105
  | `--cv-color-selected` | `color-mix(in oklab, var(--cv-color-primary) 16%, var(--cv-color-surface))` | `color-mix(in oklab, var(--cv-color-primary) 12%, var(--cv-color-surface))` | Selected item background |
106
106
  | `--cv-color-overlay` | `rgba(4, 7, 13, 0.72)` | `rgba(15, 20, 30, 0.38)` | Modal / overlay backdrop |
107
107
 
@@ -167,17 +167,17 @@ The provider defines the full design token surface. All tokens use the `--cv-` p
167
167
 
168
168
  ### Shadow tokens
169
169
 
170
- | Property | Dark value | Light value | Description |
171
- | ------------------ | --------------------------------------------------------------------- | --------------------------------------------------------------------- | ------------------ |
172
- | `--cv-shadow-sm` | `0 2px 8px rgba(0, 0, 0, 0.24)` | `0 2px 8px rgba(0, 0, 0, 0.08)` | Small shadow |
173
- | `--cv-shadow-md` | `0 8px 28px rgba(0, 0, 0, 0.32)` | `0 8px 28px rgba(0, 0, 0, 0.12)` | Medium shadow |
174
- | `--cv-shadow-lg` | `0 16px 48px rgba(0, 0, 0, 0.38)` | `0 16px 48px rgba(0, 0, 0, 0.14)` | Large shadow |
175
- | `--cv-shadow-xl` | `0 24px 64px rgba(0, 0, 0, 0.42)` | `0 24px 64px rgba(0, 0, 0, 0.16)` | Extra-large shadow |
176
- | `--cv-shadow-glow` | `0 0 40px color-mix(in oklab, var(--cv-color-cyan) 15%, transparent)` | `0 0 40px color-mix(in oklab, var(--cv-color-cyan) 10%, transparent)` | Glow effect |
177
- | `--cv-shadow-1` | `var(--cv-shadow-sm)` | `var(--cv-shadow-sm)` | Alias: level 1 |
178
- | `--cv-shadow-2` | `var(--cv-shadow-md)` | `var(--cv-shadow-md)` | Alias: level 2 |
179
- | `--cv-shadow-3` | `var(--cv-shadow-lg)` | `var(--cv-shadow-lg)` | Alias: level 3 |
180
- | `--cv-shadow-4` | `var(--cv-shadow-xl)` | `var(--cv-shadow-xl)` | Alias: level 4 |
170
+ | Property | Dark value | Light value | Description |
171
+ | ------------------ | --------------------------------------- | --------------------------------------- | ------------------ |
172
+ | `--cv-shadow-sm` | `0 2px 8px rgba(0, 0, 0, 0.24)` | `0 2px 8px rgba(0, 0, 0, 0.08)` | Small shadow |
173
+ | `--cv-shadow-md` | `0 8px 28px rgba(0, 0, 0, 0.32)` | `0 8px 28px rgba(0, 0, 0, 0.12)` | Medium shadow |
174
+ | `--cv-shadow-lg` | `0 16px 48px rgba(0, 0, 0, 0.38)` | `0 16px 48px rgba(0, 0, 0, 0.14)` | Large shadow |
175
+ | `--cv-shadow-xl` | `0 24px 64px rgba(0, 0, 0, 0.42)` | `0 24px 64px rgba(0, 0, 0, 0.16)` | Extra-large shadow |
176
+ | `--cv-shadow-glow` | `0 0 40px var(--cv-color-primary-ring)` | `0 0 40px var(--cv-color-primary-ring)` | Glow effect |
177
+ | `--cv-shadow-1` | `var(--cv-shadow-sm)` | `var(--cv-shadow-sm)` | Alias: level 1 |
178
+ | `--cv-shadow-2` | `var(--cv-shadow-md)` | `var(--cv-shadow-md)` | Alias: level 2 |
179
+ | `--cv-shadow-3` | `var(--cv-shadow-lg)` | `var(--cv-shadow-lg)` | Alias: level 3 |
180
+ | `--cv-shadow-4` | `var(--cv-shadow-xl)` | `var(--cv-shadow-xl)` | Alias: level 4 |
181
181
 
182
182
  ### Motion tokens
183
183
 
@@ -223,14 +223,14 @@ Additionally, component styles depend on theme tokens:
223
223
 
224
224
  #### Visual States
225
225
 
226
- | Host selector | Description |
227
- | ------------------------------------- | --------------------------------------------------------------------------- |
228
- | `:host([hidden])` | `display: none` |
229
- | `:host(:focus-visible) [part="row"]` | `outline: 2px solid var(--cv-color-primary)` at `outline-offset: -2px` |
230
- | `:host([active]) [part="row"]` | Primary-tinted background (`color-mix(in oklab, primary 18%, transparent)`) |
231
- | `:host([selected]) [part="row"]` | Same primary-tinted background as `[active]` |
232
- | `:host([disabled]) [part="row"]` | `opacity: 0.55` |
233
- | `:host([disabled]) [part="children"]` | `opacity: 0.55` |
226
+ | Host selector | Description |
227
+ | ------------------------------------- | ---------------------------------------------------------------------- |
228
+ | `:host([hidden])` | `display: none` |
229
+ | `:host(:focus-visible) [part="row"]` | `outline: 2px solid var(--cv-color-primary)` at `outline-offset: -2px` |
230
+ | `:host([active]) [part="row"]` | Primary-tinted background (`var(--cv-color-active)`) |
231
+ | `:host([selected]) [part="row"]` | Same primary-tinted background as `[active]` |
232
+ | `:host([disabled]) [part="row"]` | `opacity: 0.55` |
233
+ | `:host([disabled]) [part="children"]` | `opacity: 0.55` |
234
234
 
235
235
  ---
236
236
 
@@ -343,13 +343,13 @@ Additionally, component styles depend on theme tokens:
343
343
 
344
344
  #### Visual States
345
345
 
346
- | Host selector | Description |
347
- | ----------------------- | --------------------------------------------------------------------------- |
348
- | `:host` | `display: block` |
349
- | `:host([active])` | `background: color-mix(in oklab, var(--cv-color-primary) 16%, transparent)` |
350
- | `:host([selected])` | `font-weight: 600` |
351
- | `:host([disabled])` | `opacity: 0.55` |
352
- | `:host(:focus-visible)` | `outline: 2px solid var(--cv-color-primary)` at `outline-offset: -2px` |
346
+ | Host selector | Description |
347
+ | ----------------------- | ---------------------------------------------------------------------- |
348
+ | `:host` | `display: block` |
349
+ | `:host([active])` | `background: var(--cv-color-selected)` |
350
+ | `:host([selected])` | `font-weight: 600` |
351
+ | `:host([disabled])` | `opacity: 0.55` |
352
+ | `:host(:focus-visible)` | `outline: 2px solid var(--cv-color-primary)` at `outline-offset: -2px` |
353
353
 
354
354
  ## Out of Scope
355
355
 
@@ -237,16 +237,16 @@ Additionally, component styles depend on theme tokens:
237
237
 
238
238
  #### Visual States
239
239
 
240
- | Host selector | Description |
241
- | ------------------------------------- | --------------------------------------------------------------------------- |
242
- | `:host` | `display: block`, `outline: none` |
243
- | `:host([hidden])` | `display: none` |
244
- | `:host([active]) [part="row"]` | `background: color-mix(in oklab, var(--cv-color-primary) 22%, transparent)` |
245
- | `:host([selected]) [part="row"]` | `background: color-mix(in oklab, var(--cv-color-primary) 30%, transparent)` |
246
- | `:host([disabled]) [part="row"]` | `opacity: 0.55` |
247
- | `:host([expanded]) [part="children"]` | Visible (default); children hidden only when `[expanded]` is absent |
248
- | `:host([branch]) [part="toggle"]` | Toggle button rendered and visible |
249
- | `:host(:focus-visible) [part="row"]` | `outline: 2px solid var(--cv-color-primary)` at `outline-offset: 1px` |
240
+ | Host selector | Description |
241
+ | ------------------------------------- | --------------------------------------------------------------------- |
242
+ | `:host` | `display: block`, `outline: none` |
243
+ | `:host([hidden])` | `display: none` |
244
+ | `:host([active]) [part="row"]` | `background: var(--cv-color-primary-ring)` |
245
+ | `:host([selected]) [part="row"]` | `background: var(--cv-color-primary-border)` |
246
+ | `:host([disabled]) [part="row"]` | `opacity: 0.55` |
247
+ | `:host([expanded]) [part="children"]` | Visible (default); children hidden only when `[expanded]` is absent |
248
+ | `:host([branch]) [part="toggle"]` | Toggle button rendered and visible |
249
+ | `:host(:focus-visible) [part="row"]` | `outline: 2px solid var(--cv-color-primary)` at `outline-offset: 1px` |
250
250
 
251
251
  #### Events
252
252