@ecopages/radiant-ui 0.1.0-beta.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 (254) hide show
  1. package/README.md +70 -0
  2. package/dist/components/ui/alert/alert.css +27 -0
  3. package/dist/components/ui/alert/alert.d.ts +4 -0
  4. package/dist/components/ui/alert/alert.script.d.ts +25 -0
  5. package/dist/components/ui/alert/index.d.ts +2 -0
  6. package/dist/components/ui/alert/index.js +2 -0
  7. package/dist/components/ui/alert/index.js.map +7 -0
  8. package/dist/components/ui/breadcrumb/breadcrumb.css +41 -0
  9. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +59 -0
  10. package/dist/components/ui/breadcrumb/breadcrumb.script.d.ts +40 -0
  11. package/dist/components/ui/breadcrumb/index.d.ts +2 -0
  12. package/dist/components/ui/breadcrumb/index.js +2 -0
  13. package/dist/components/ui/breadcrumb/index.js.map +7 -0
  14. package/dist/components/ui/button/button.d.ts +37 -0
  15. package/dist/components/ui/button/index.d.ts +1 -0
  16. package/dist/components/ui/button/index.js +2 -0
  17. package/dist/components/ui/button/index.js.map +7 -0
  18. package/dist/components/ui/carousel/carousel.css +170 -0
  19. package/dist/components/ui/carousel/carousel.d.ts +39 -0
  20. package/dist/components/ui/carousel/carousel.script.d.ts +113 -0
  21. package/dist/components/ui/carousel/index.d.ts +2 -0
  22. package/dist/components/ui/carousel/index.js +2 -0
  23. package/dist/components/ui/carousel/index.js.map +7 -0
  24. package/dist/components/ui/checkbox/checkbox.css +55 -0
  25. package/dist/components/ui/checkbox/checkbox.d.ts +4 -0
  26. package/dist/components/ui/checkbox/checkbox.script.d.ts +58 -0
  27. package/dist/components/ui/checkbox/index.d.ts +2 -0
  28. package/dist/components/ui/checkbox/index.js +2 -0
  29. package/dist/components/ui/checkbox/index.js.map +7 -0
  30. package/dist/components/ui/combobox/combobox.css +65 -0
  31. package/dist/components/ui/combobox/combobox.d.ts +53 -0
  32. package/dist/components/ui/combobox/combobox.script.d.ts +89 -0
  33. package/dist/components/ui/combobox/index.d.ts +2 -0
  34. package/dist/components/ui/combobox/index.js +2 -0
  35. package/dist/components/ui/combobox/index.js.map +7 -0
  36. package/dist/components/ui/dialog/dialog-registry.d.ts +34 -0
  37. package/dist/components/ui/dialog/dialog-registry.test.d.ts +1 -0
  38. package/dist/components/ui/dialog/dialog-types.d.ts +55 -0
  39. package/dist/components/ui/dialog/dialog.css +53 -0
  40. package/dist/components/ui/dialog/dialog.d.ts +36 -0
  41. package/dist/components/ui/dialog/dialog.script.d.ts +61 -0
  42. package/dist/components/ui/dialog/index.d.ts +4 -0
  43. package/dist/components/ui/dialog/index.js +2 -0
  44. package/dist/components/ui/dialog/index.js.map +7 -0
  45. package/dist/components/ui/disclosure/disclosure-group.script.d.ts +31 -0
  46. package/dist/components/ui/disclosure/disclosure.css +105 -0
  47. package/dist/components/ui/disclosure/disclosure.d.ts +35 -0
  48. package/dist/components/ui/disclosure/disclosure.script.d.ts +38 -0
  49. package/dist/components/ui/disclosure/index.d.ts +3 -0
  50. package/dist/components/ui/disclosure/index.js +2 -0
  51. package/dist/components/ui/disclosure/index.js.map +7 -0
  52. package/dist/components/ui/feed/feed.css +14 -0
  53. package/dist/components/ui/feed/feed.d.ts +12 -0
  54. package/dist/components/ui/feed/feed.script.d.ts +22 -0
  55. package/dist/components/ui/feed/index.d.ts +2 -0
  56. package/dist/components/ui/feed/index.js +2 -0
  57. package/dist/components/ui/feed/index.js.map +7 -0
  58. package/dist/components/ui/field/field-context.d.ts +20 -0
  59. package/dist/components/ui/field/field-description.d.ts +8 -0
  60. package/dist/components/ui/field/field-error.d.ts +9 -0
  61. package/dist/components/ui/field/field-ssr-hydration.test.d.ts +1 -0
  62. package/dist/components/ui/field/field.css +26 -0
  63. package/dist/components/ui/field/field.d.ts +4 -0
  64. package/dist/components/ui/field/field.script.d.ts +68 -0
  65. package/dist/components/ui/field/index.d.ts +5 -0
  66. package/dist/components/ui/field/index.js +2 -0
  67. package/dist/components/ui/field/index.js.map +7 -0
  68. package/dist/components/ui/form/control-protocol.d.ts +19 -0
  69. package/dist/components/ui/form/form-context.d.ts +27 -0
  70. package/dist/components/ui/form/form-field.test.d.ts +3 -0
  71. package/dist/components/ui/form/form-store.d.ts +53 -0
  72. package/dist/components/ui/form/form-store.test.d.ts +1 -0
  73. package/dist/components/ui/form/form.css +12 -0
  74. package/dist/components/ui/form/form.d.ts +5 -0
  75. package/dist/components/ui/form/form.script.d.ts +67 -0
  76. package/dist/components/ui/form/index.d.ts +7 -0
  77. package/dist/components/ui/form/index.js +2 -0
  78. package/dist/components/ui/form/index.js.map +7 -0
  79. package/dist/components/ui/form/resolvers.d.ts +3 -0
  80. package/dist/components/ui/form/types.d.ts +72 -0
  81. package/dist/components/ui/grid/grid.css +47 -0
  82. package/dist/components/ui/grid/grid.d.ts +7 -0
  83. package/dist/components/ui/grid/grid.script.d.ts +26 -0
  84. package/dist/components/ui/grid/index.d.ts +2 -0
  85. package/dist/components/ui/grid/index.js +2 -0
  86. package/dist/components/ui/grid/index.js.map +7 -0
  87. package/dist/components/ui/input/index.d.ts +1 -0
  88. package/dist/components/ui/input/index.js +2 -0
  89. package/dist/components/ui/input/index.js.map +7 -0
  90. package/dist/components/ui/input/input.css +32 -0
  91. package/dist/components/ui/input/input.d.ts +23 -0
  92. package/dist/components/ui/label/index.d.ts +1 -0
  93. package/dist/components/ui/label/index.js +2 -0
  94. package/dist/components/ui/label/index.js.map +7 -0
  95. package/dist/components/ui/label/label.css +8 -0
  96. package/dist/components/ui/label/label.d.ts +9 -0
  97. package/dist/components/ui/listbox/index.d.ts +2 -0
  98. package/dist/components/ui/listbox/index.js +2 -0
  99. package/dist/components/ui/listbox/index.js.map +7 -0
  100. package/dist/components/ui/listbox/listbox.css +23 -0
  101. package/dist/components/ui/listbox/listbox.d.ts +12 -0
  102. package/dist/components/ui/listbox/listbox.script.d.ts +40 -0
  103. package/dist/components/ui/menu-button/index.d.ts +2 -0
  104. package/dist/components/ui/menu-button/index.js +2 -0
  105. package/dist/components/ui/menu-button/index.js.map +7 -0
  106. package/dist/components/ui/menu-button/menu-button.css +43 -0
  107. package/dist/components/ui/menu-button/menu-button.d.ts +13 -0
  108. package/dist/components/ui/menu-button/menu-button.script.d.ts +64 -0
  109. package/dist/components/ui/menubar/index.d.ts +2 -0
  110. package/dist/components/ui/menubar/index.js +2 -0
  111. package/dist/components/ui/menubar/index.js.map +7 -0
  112. package/dist/components/ui/menubar/menubar.css +45 -0
  113. package/dist/components/ui/menubar/menubar.d.ts +16 -0
  114. package/dist/components/ui/menubar/menubar.script.d.ts +52 -0
  115. package/dist/components/ui/meter/index.d.ts +2 -0
  116. package/dist/components/ui/meter/index.js +2 -0
  117. package/dist/components/ui/meter/index.js.map +7 -0
  118. package/dist/components/ui/meter/meter.css +17 -0
  119. package/dist/components/ui/meter/meter.d.ts +4 -0
  120. package/dist/components/ui/meter/meter.script.d.ts +33 -0
  121. package/dist/components/ui/navigation-menu/index.d.ts +2 -0
  122. package/dist/components/ui/navigation-menu/index.js +2 -0
  123. package/dist/components/ui/navigation-menu/index.js.map +7 -0
  124. package/dist/components/ui/navigation-menu/navigation-menu.css +90 -0
  125. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +28 -0
  126. package/dist/components/ui/navigation-menu/navigation-menu.script.d.ts +49 -0
  127. package/dist/components/ui/radio-group/index.d.ts +2 -0
  128. package/dist/components/ui/radio-group/index.js +2 -0
  129. package/dist/components/ui/radio-group/index.js.map +7 -0
  130. package/dist/components/ui/radio-group/radio-group.css +44 -0
  131. package/dist/components/ui/radio-group/radio-group.d.ts +12 -0
  132. package/dist/components/ui/radio-group/radio-group.script.d.ts +52 -0
  133. package/dist/components/ui/sidebar/index.d.ts +3 -0
  134. package/dist/components/ui/sidebar/index.js +2 -0
  135. package/dist/components/ui/sidebar/index.js.map +7 -0
  136. package/dist/components/ui/sidebar/sidebar-trigger.script.d.ts +53 -0
  137. package/dist/components/ui/sidebar/sidebar.css +362 -0
  138. package/dist/components/ui/sidebar/sidebar.d.ts +141 -0
  139. package/dist/components/ui/sidebar/sidebar.script.d.ts +140 -0
  140. package/dist/components/ui/sidebar/sidebar.test.d.ts +1 -0
  141. package/dist/components/ui/slider/index.d.ts +2 -0
  142. package/dist/components/ui/slider/index.js +2 -0
  143. package/dist/components/ui/slider/index.js.map +7 -0
  144. package/dist/components/ui/slider/slider.css +51 -0
  145. package/dist/components/ui/slider/slider.d.ts +7 -0
  146. package/dist/components/ui/slider/slider.script.d.ts +102 -0
  147. package/dist/components/ui/spinbutton/index.d.ts +2 -0
  148. package/dist/components/ui/spinbutton/index.js +2 -0
  149. package/dist/components/ui/spinbutton/index.js.map +7 -0
  150. package/dist/components/ui/spinbutton/spinbutton.css +19 -0
  151. package/dist/components/ui/spinbutton/spinbutton.d.ts +4 -0
  152. package/dist/components/ui/spinbutton/spinbutton.script.d.ts +64 -0
  153. package/dist/components/ui/switch/index.d.ts +2 -0
  154. package/dist/components/ui/switch/index.js +2 -0
  155. package/dist/components/ui/switch/index.js.map +7 -0
  156. package/dist/components/ui/switch/switch.css +47 -0
  157. package/dist/components/ui/switch/switch.d.ts +4 -0
  158. package/dist/components/ui/switch/switch.script.d.ts +51 -0
  159. package/dist/components/ui/tabs/index.d.ts +2 -0
  160. package/dist/components/ui/tabs/index.js +2 -0
  161. package/dist/components/ui/tabs/index.js.map +7 -0
  162. package/dist/components/ui/tabs/tabs.css +28 -0
  163. package/dist/components/ui/tabs/tabs.d.ts +12 -0
  164. package/dist/components/ui/tabs/tabs.script.d.ts +54 -0
  165. package/dist/components/ui/textarea/index.d.ts +1 -0
  166. package/dist/components/ui/textarea/index.js +2 -0
  167. package/dist/components/ui/textarea/index.js.map +7 -0
  168. package/dist/components/ui/textarea/textarea.css +33 -0
  169. package/dist/components/ui/textarea/textarea.d.ts +23 -0
  170. package/dist/components/ui/toast/index.d.ts +5 -0
  171. package/dist/components/ui/toast/index.js +2 -0
  172. package/dist/components/ui/toast/index.js.map +7 -0
  173. package/dist/components/ui/toast/toast-api.d.ts +29 -0
  174. package/dist/components/ui/toast/toast-context.d.ts +59 -0
  175. package/dist/components/ui/toast/toast-state.d.ts +25 -0
  176. package/dist/components/ui/toast/toast.css +315 -0
  177. package/dist/components/ui/toast/toast.d.ts +8 -0
  178. package/dist/components/ui/toast/toast.script.d.ts +91 -0
  179. package/dist/components/ui/toast/toast.test.d.ts +2 -0
  180. package/dist/components/ui/toast/toaster.script.d.ts +79 -0
  181. package/dist/components/ui/toolbar/index.d.ts +2 -0
  182. package/dist/components/ui/toolbar/index.js +2 -0
  183. package/dist/components/ui/toolbar/index.js.map +7 -0
  184. package/dist/components/ui/toolbar/toolbar.css +16 -0
  185. package/dist/components/ui/toolbar/toolbar.d.ts +4 -0
  186. package/dist/components/ui/toolbar/toolbar.script.d.ts +30 -0
  187. package/dist/components/ui/tooltip/index.d.ts +2 -0
  188. package/dist/components/ui/tooltip/index.js +2 -0
  189. package/dist/components/ui/tooltip/index.js.map +7 -0
  190. package/dist/components/ui/tooltip/tooltip.css +25 -0
  191. package/dist/components/ui/tooltip/tooltip.d.ts +4 -0
  192. package/dist/components/ui/tooltip/tooltip.script.d.ts +70 -0
  193. package/dist/components/ui/tree/index.d.ts +2 -0
  194. package/dist/components/ui/tree/index.js +2 -0
  195. package/dist/components/ui/tree/index.js.map +7 -0
  196. package/dist/components/ui/tree/tree.css +54 -0
  197. package/dist/components/ui/tree/tree.d.ts +13 -0
  198. package/dist/components/ui/tree/tree.script.d.ts +45 -0
  199. package/dist/components/ui/treegrid/index.d.ts +2 -0
  200. package/dist/components/ui/treegrid/index.js +2 -0
  201. package/dist/components/ui/treegrid/index.js.map +7 -0
  202. package/dist/components/ui/treegrid/treegrid.css +77 -0
  203. package/dist/components/ui/treegrid/treegrid.d.ts +14 -0
  204. package/dist/components/ui/treegrid/treegrid.script.d.ts +49 -0
  205. package/dist/components/ui/window-splitter/index.d.ts +2 -0
  206. package/dist/components/ui/window-splitter/index.js +2 -0
  207. package/dist/components/ui/window-splitter/index.js.map +7 -0
  208. package/dist/components/ui/window-splitter/window-splitter.css +35 -0
  209. package/dist/components/ui/window-splitter/window-splitter.d.ts +8 -0
  210. package/dist/components/ui/window-splitter/window-splitter.script.d.ts +49 -0
  211. package/dist/index.d.ts +36 -0
  212. package/dist/index.js +2 -0
  213. package/dist/index.js.map +7 -0
  214. package/dist/lib/focusable-elements.d.ts +2 -0
  215. package/dist/lib/radiant-view.d.ts +17 -0
  216. package/dist/lib/roving-tabindex.d.ts +27 -0
  217. package/dist/styles/components/button.css +115 -0
  218. package/dist/styles/radiant-ui-core.css +7 -0
  219. package/dist/styles/radiant-ui.css +10 -0
  220. package/dist/styles/styles.css +36 -0
  221. package/dist/styles/tailwind.css +41 -0
  222. package/dist/styles/themes/aurora.css +19 -0
  223. package/dist/styles/themes/default-compact-soft.css +19 -0
  224. package/dist/styles/themes/default.css +2 -0
  225. package/dist/styles/themes/glacier.css +19 -0
  226. package/dist/styles/tokens/colors/aurora.css +73 -0
  227. package/dist/styles/tokens/colors/basalt.css +36 -0
  228. package/dist/styles/tokens/colors/glacier.css +45 -0
  229. package/dist/styles/tokens/colors/palettes.css +3 -0
  230. package/dist/styles/tokens/elevation/default.css +22 -0
  231. package/dist/styles/tokens/elevation/flat.css +22 -0
  232. package/dist/styles/tokens/motion/default.css +19 -0
  233. package/dist/styles/tokens/motion/snappy.css +19 -0
  234. package/dist/styles/tokens/presets/colors/aurora.css +126 -0
  235. package/dist/styles/tokens/presets/colors/basalt.css +126 -0
  236. package/dist/styles/tokens/presets/colors/ember.css +134 -0
  237. package/dist/styles/tokens/presets/colors/glacier.css +130 -0
  238. package/dist/styles/tokens/presets/colors/index.css +4 -0
  239. package/dist/styles/tokens/presets/radius.css +45 -0
  240. package/dist/styles/tokens/presets/spacing.css +57 -0
  241. package/dist/styles/tokens/radius/default.css +34 -0
  242. package/dist/styles/tokens/radius/edgy.css +35 -0
  243. package/dist/styles/tokens/radius/sharp.css +2 -0
  244. package/dist/styles/tokens/radius/soft.css +34 -0
  245. package/dist/styles/tokens/semantic.css +80 -0
  246. package/dist/styles/tokens/spacing/compact.css +23 -0
  247. package/dist/styles/tokens/spacing/default.css +23 -0
  248. package/dist/styles/tokens/spacing/scale-bridge.css +17 -0
  249. package/dist/styles/tokens/spacing/wide.css +23 -0
  250. package/dist/styles/tokens/system.css +36 -0
  251. package/dist/styles/tokens/typography/default.css +37 -0
  252. package/dist/styles/utilities/sheen.css +7 -0
  253. package/dist/types.d.ts +14 -0
  254. package/package.json +371 -0
@@ -0,0 +1,2 @@
1
+ /** Returns focusable descendants in DOM order, skipping hidden nodes. */
2
+ export declare function getFocusableElements(root: ParentNode): HTMLElement[];
@@ -0,0 +1,17 @@
1
+ import type { JsxRenderable } from '@ecopages/jsx';
2
+ declare const RADIANT_VIEW_ELEMENT: unique symbol;
3
+ declare const RADIANT_SCRIPT_MODULE: unique symbol;
4
+ declare const RADIANT_SCRIPT_EXPORT: unique symbol;
5
+ export type RadiantViewComponent<TArgs = unknown> = ((args: TArgs) => JsxRenderable) & {
6
+ [RADIANT_VIEW_ELEMENT]?: CustomElementConstructor;
7
+ [RADIANT_SCRIPT_MODULE]?: string;
8
+ [RADIANT_SCRIPT_EXPORT]?: string;
9
+ };
10
+ /** Link a JSX view export to its RadiantElement class (same symbols as the Storybook framework). */
11
+ export declare function defineRadiantView<TArgs>(element: CustomElementConstructor & {
12
+ [RADIANT_SCRIPT_MODULE]?: string;
13
+ [RADIANT_SCRIPT_EXPORT]?: string;
14
+ }, render: (args: TArgs) => JsxRenderable): RadiantViewComponent<TArgs>;
15
+ /** Re-copy SSR metadata from the linked element (e.g. after HMR). */
16
+ export declare function syncRadiantViewMetadata(view: RadiantViewComponent): void;
17
+ export {};
@@ -0,0 +1,27 @@
1
+ export type RovingOrientation = 'horizontal' | 'vertical';
2
+ export type RovingNavResult = {
3
+ handled: false;
4
+ } | {
5
+ handled: true;
6
+ index: number;
7
+ item: HTMLElement;
8
+ };
9
+ /**
10
+ * Apply the APG roving-tabindex pattern: one item is tabbable, the rest are `-1`.
11
+ */
12
+ export declare function applyRovingTabindex(items: HTMLElement[], activeIndex: number): void;
13
+ /**
14
+ * Focus `items[index]` and update tabindexes. Returns the focused item, or null.
15
+ */
16
+ export declare function focusRovingItem(items: HTMLElement[], index: number): HTMLElement | null;
17
+ /**
18
+ * Handle arrow / Home / End navigation for a flat roving-tabindex collection.
19
+ * Does not activate the item — callers decide whether to select on move.
20
+ */
21
+ export declare function navigateRovingTabindex(options: {
22
+ items: HTMLElement[];
23
+ current: HTMLElement | null;
24
+ key: string;
25
+ orientation?: RovingOrientation;
26
+ wrap?: boolean;
27
+ }): RovingNavResult;
@@ -0,0 +1,115 @@
1
+ @reference 'tailwindcss';
2
+ @reference '../themes/default.css';
3
+
4
+ @layer components {
5
+ .rui-button {
6
+ @apply inline-flex items-center justify-center h-fit w-fit gap-2;
7
+ @apply font-medium text-sm rounded-button border border-transparent;
8
+ @apply transition-[background-color,color,box-shadow] duration-300 ease-out;
9
+ @apply cursor-pointer;
10
+ @apply whitespace-nowrap;
11
+ }
12
+
13
+ .rui-button > svg {
14
+ @apply pointer-events-none;
15
+ }
16
+
17
+ .rui-button:focus-visible {
18
+ @apply ring-2 ring-focus-ring outline-hidden;
19
+ }
20
+
21
+ .rui-button:disabled {
22
+ @apply opacity-50 cursor-not-allowed;
23
+ }
24
+
25
+ /* Variants */
26
+ .rui-button--filled {
27
+ @apply bg-primary text-on-primary rui-sheen;
28
+ }
29
+
30
+ .rui-button--filled:hover:not(:disabled) {
31
+ @apply bg-primary/90;
32
+ }
33
+
34
+ .rui-button--filled:active:not(:disabled) {
35
+ @apply bg-primary-dark;
36
+ }
37
+
38
+ .rui-button--filled[aria-pressed='true'] {
39
+ @apply bg-primary-dark ring-2 ring-focus-ring;
40
+ }
41
+
42
+ .rui-button--outline {
43
+ @apply bg-transparent text-on-background border-border;
44
+ }
45
+
46
+ .rui-button--outline:hover:not(:disabled) {
47
+ @apply bg-surface rui-sheen;
48
+ }
49
+
50
+ .rui-button--outline:active:not(:disabled) {
51
+ @apply bg-surface/80 rui-sheen;
52
+ }
53
+
54
+ .rui-button--outline[aria-pressed='true'] {
55
+ @apply bg-background font-medium text-on-background shadow-sm ring-2 ring-focus-ring rui-sheen;
56
+ }
57
+
58
+ .rui-button--ghost {
59
+ @apply bg-transparent text-on-surface;
60
+ }
61
+
62
+ .rui-button--ghost:hover:not(:disabled) {
63
+ @apply bg-surface-container-low rui-sheen;
64
+ }
65
+
66
+ .rui-button--ghost:active:not(:disabled) {
67
+ @apply bg-surface-container;
68
+ }
69
+
70
+ .rui-button--ghost[aria-pressed='true'] {
71
+ @apply bg-background font-medium text-on-background shadow-sm ring-2 ring-inset ring-border;
72
+ }
73
+
74
+ .rui-button--destructive {
75
+ @apply bg-error text-on-error rui-sheen;
76
+ }
77
+
78
+ .rui-button--destructive:hover:not(:disabled) {
79
+ @apply bg-error/90;
80
+ }
81
+
82
+ .rui-button--destructive:active:not(:disabled) {
83
+ @apply bg-error-dark;
84
+ }
85
+
86
+ /* Sizes */
87
+ .rui-button--sm {
88
+ @apply text-xs py-1 px-2;
89
+ }
90
+
91
+ .rui-button--md {
92
+ @apply text-sm py-2 px-4;
93
+ }
94
+
95
+ .rui-button--lg {
96
+ @apply text-base py-3 px-6;
97
+ }
98
+
99
+ .rui-button--icon {
100
+ @apply text-sm p-2;
101
+ }
102
+
103
+ /* Back-compat aliases used by earlier stories */
104
+ .rui-button--primary {
105
+ @apply bg-primary text-on-primary rui-sheen;
106
+ }
107
+
108
+ .rui-button--secondary {
109
+ @apply bg-secondary text-on-secondary rui-sheen;
110
+ }
111
+
112
+ .rui-button--error {
113
+ @apply bg-error text-on-error rui-sheen;
114
+ }
115
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tailwind + shared component primitives (no theme).
3
+ * Pair with a theme file, or use `radiant-ui.css` for the default bundle.
4
+ */
5
+ @import 'tailwindcss';
6
+ @import './utilities/sheen.css';
7
+ @import './components/button.css';
@@ -0,0 +1,10 @@
1
+ /**
2
+ * radiant-ui base stylesheet (Tailwind + default theme + button).
3
+ * Published as `@ecopages/radiant-ui/radiant-ui.css`.
4
+ */
5
+ @import './radiant-ui-core.css';
6
+ @import './themes/default.css';
7
+
8
+ :root {
9
+ color-scheme: light;
10
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * All component styles (no theme). Import `@ecopages/radiant-ui/themes/default` separately.
3
+ * Generated by scripts/generate-exports.ts — do not edit by hand.
4
+ */
5
+ @import './components/button.css';
6
+ @import '../components/ui/alert/alert.css';
7
+ @import '../components/ui/breadcrumb/breadcrumb.css';
8
+ @import '../components/ui/carousel/carousel.css';
9
+ @import '../components/ui/checkbox/checkbox.css';
10
+ @import '../components/ui/combobox/combobox.css';
11
+ @import '../components/ui/dialog/dialog.css';
12
+ @import '../components/ui/disclosure/disclosure.css';
13
+ @import '../components/ui/feed/feed.css';
14
+ @import '../components/ui/field/field.css';
15
+ @import '../components/ui/form/form.css';
16
+ @import '../components/ui/grid/grid.css';
17
+ @import '../components/ui/input/input.css';
18
+ @import '../components/ui/label/label.css';
19
+ @import '../components/ui/listbox/listbox.css';
20
+ @import '../components/ui/menu-button/menu-button.css';
21
+ @import '../components/ui/menubar/menubar.css';
22
+ @import '../components/ui/meter/meter.css';
23
+ @import '../components/ui/navigation-menu/navigation-menu.css';
24
+ @import '../components/ui/radio-group/radio-group.css';
25
+ @import '../components/ui/sidebar/sidebar.css';
26
+ @import '../components/ui/slider/slider.css';
27
+ @import '../components/ui/spinbutton/spinbutton.css';
28
+ @import '../components/ui/switch/switch.css';
29
+ @import '../components/ui/tabs/tabs.css';
30
+ @import '../components/ui/textarea/textarea.css';
31
+ @import '../components/ui/toast/toast.css';
32
+ @import '../components/ui/toolbar/toolbar.css';
33
+ @import '../components/ui/tooltip/tooltip.css';
34
+ @import '../components/ui/tree/tree.css';
35
+ @import '../components/ui/treegrid/treegrid.css';
36
+ @import '../components/ui/window-splitter/window-splitter.css';
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Storybook preview stylesheet.
3
+ * Keep canvas chrome here — do not put app layout (`container`, body padding, `main` gaps).
4
+ * Those fight Storybook's `layout: 'fullscreen' | 'padded'` and break `h-full` / `h-svh` stories.
5
+ */
6
+ @import './radiant-ui.css';
7
+ @import './tokens/presets/spacing.css';
8
+ @import './tokens/presets/radius.css';
9
+
10
+ html,
11
+ body,
12
+ #storybook-root {
13
+ height: 100%;
14
+ margin: 0;
15
+ }
16
+
17
+ body {
18
+ @apply bg-background text-on-background;
19
+ font-family: var(--font-sans);
20
+ -webkit-font-smoothing: antialiased;
21
+ -moz-osx-font-smoothing: grayscale;
22
+ }
23
+
24
+ /* Mount wrappers from @ecopages/storybook-radiant-vite — pass height through to stories. */
25
+ #storybook-root,
26
+ #root-inner,
27
+ .radiant-ssr-mount {
28
+ min-height: 100%;
29
+ height: 100%;
30
+ }
31
+
32
+ a,
33
+ button,
34
+ input,
35
+ select,
36
+ textarea {
37
+ &:focus,
38
+ &:focus-visible {
39
+ @apply outline-2 outline-focus-ring;
40
+ }
41
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Aurora — vivid palette (formerly the default color pack).
3
+ */
4
+ @import '../tokens/colors/palettes.css';
5
+ @import '../tokens/spacing/default.css';
6
+ @import '../tokens/radius/default.css';
7
+ @import '../tokens/elevation/default.css';
8
+ @import '../tokens/typography/default.css';
9
+ @import '../tokens/motion/default.css';
10
+ @import '../tokens/system.css';
11
+ @import '../tokens/semantic.css';
12
+
13
+ :root {
14
+ color-scheme: light;
15
+ }
16
+
17
+ .dark {
18
+ color-scheme: dark;
19
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Composed theme: default colors + compact spacing + soft radius.
3
+ */
4
+ @import '../tokens/colors/aurora.css';
5
+ @import '../tokens/spacing/compact.css';
6
+ @import '../tokens/radius/soft.css';
7
+ @import '../tokens/elevation/default.css';
8
+ @import '../tokens/typography/default.css';
9
+ @import '../tokens/motion/default.css';
10
+ @import '../tokens/system.css';
11
+ @import '../tokens/semantic.css';
12
+
13
+ :root {
14
+ color-scheme: light;
15
+ }
16
+
17
+ .dark {
18
+ color-scheme: dark;
19
+ }
@@ -0,0 +1,2 @@
1
+ /** Default theme alias — glacier (docs brand). */
2
+ @import './glacier.css';
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Glacier — default brand (aligned with apps/docs).
3
+ */
4
+ @import '../tokens/colors/palettes.css';
5
+ @import '../tokens/spacing/default.css';
6
+ @import '../tokens/radius/default.css';
7
+ @import '../tokens/elevation/default.css';
8
+ @import '../tokens/typography/default.css';
9
+ @import '../tokens/motion/default.css';
10
+ @import '../tokens/system.css';
11
+ @import '../tokens/semantic.css';
12
+
13
+ :root {
14
+ color-scheme: light;
15
+ }
16
+
17
+ .dark {
18
+ color-scheme: dark;
19
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Default color pack — raw OKLCH scales only (mode-agnostic).
3
+ * Semantic roles live in semantic.css.
4
+ */
5
+ @theme {
6
+ --color-black: oklch(0% 0 0);
7
+ --color-white: oklch(100% 0 0);
8
+
9
+ --color-havelock-blue-50: oklch(97.6% 0.013 233.68);
10
+ --color-havelock-blue-100: oklch(94.6% 0.031 234.4);
11
+ --color-havelock-blue-200: oklch(88.9% 0.061 238.79);
12
+ --color-havelock-blue-300: oklch(83.3% 0.093 239.72);
13
+ --color-havelock-blue-400: oklch(77.1% 0.129 241.58);
14
+ --color-havelock-blue-500: oklch(70% 0.17 243.34);
15
+ --color-havelock-blue-600: oklch(60.7% 0.156 249.36);
16
+ --color-havelock-blue-700: oklch(49.4% 0.14 256.99);
17
+ --color-havelock-blue-800: oklch(36.7% 0.121 265.27);
18
+ --color-havelock-blue-900: oklch(24% 0.104 273.88);
19
+ --color-havelock-blue-950: oklch(17.9% 0.097 278.01);
20
+ --color-havelock-blue-975: oklch(15.1% 0.091 280.16);
21
+
22
+ --color-hit-pink-50: oklch(97.4% 0.015 54.97);
23
+ --color-hit-pink-100: oklch(95.7% 0.026 58.31);
24
+ --color-hit-pink-200: oklch(92.4% 0.045 57.5);
25
+ --color-hit-pink-300: oklch(89.2% 0.065 55.42);
26
+ --color-hit-pink-400: oklch(85.2% 0.088 52.7);
27
+ --color-hit-pink-500: oklch(80.1% 0.118 50.17);
28
+ --color-hit-pink-600: oklch(71.2% 0.109 47.02);
29
+ --color-hit-pink-700: oklch(57.8% 0.095 42.51);
30
+ --color-hit-pink-800: oklch(42.1% 0.078 38.8);
31
+ --color-hit-pink-900: oklch(26.1% 0.062 33.39);
32
+ --color-hit-pink-950: oklch(18.5% 0.054 30.65);
33
+ --color-hit-pink-975: oklch(15.2% 0.049 32.96);
34
+
35
+ --color-fruit-salad-50: oklch(97.6% 0.009 150.47);
36
+ --color-fruit-salad-100: oklch(93.9% 0.02 154.79);
37
+ --color-fruit-salad-200: oklch(87.1% 0.046 152.04);
38
+ --color-fruit-salad-300: oklch(79.9% 0.071 150.42);
39
+ --color-fruit-salad-400: oklch(72.7% 0.098 149.08);
40
+ --color-fruit-salad-500: oklch(64.7% 0.127 147.75);
41
+ --color-fruit-salad-600: oklch(55.4% 0.111 147.11);
42
+ --color-fruit-salad-700: oklch(45.1% 0.092 146.25);
43
+ --color-fruit-salad-800: oklch(33.9% 0.071 144.89);
44
+ --color-fruit-salad-900: oklch(23.3% 0.054 144.32);
45
+ --color-fruit-salad-950: oklch(17.4% 0.044 143.42);
46
+ --color-fruit-salad-975: oklch(14.9% 0.04 143.25);
47
+
48
+ --color-pale-sky-50: oklch(97.5% 0.002 228.43);
49
+ --color-pale-sky-100: oklch(93% 0.003 247.81);
50
+ --color-pale-sky-200: oklch(84% 0.009 247.91);
51
+ --color-pale-sky-300: oklch(74.9% 0.013 255.53);
52
+ --color-pale-sky-400: oklch(66% 0.016 251.22);
53
+ --color-pale-sky-500: oklch(56.9% 0.021 255.6);
54
+ --color-pale-sky-600: oklch(48.2% 0.022 255.62);
55
+ --color-pale-sky-700: oklch(39.2% 0.023 258.37);
56
+ --color-pale-sky-800: oklch(30.4% 0.024 261.16);
57
+ --color-pale-sky-900: oklch(21.6% 0.024 259.28);
58
+ --color-pale-sky-950: oklch(17.2% 0.026 259.11);
59
+ --color-pale-sky-975: oklch(15% 0.026 263.06);
60
+
61
+ --color-cardinal-50: oklch(97.4% 0.01 17.5);
62
+ --color-cardinal-100: oklch(92.2% 0.03 20.31);
63
+ --color-cardinal-200: oklch(81.3% 0.072 19.84);
64
+ --color-cardinal-300: oklch(70.4% 0.115 19.71);
65
+ --color-cardinal-400: oklch(59.9% 0.155 20.64);
66
+ --color-cardinal-500: oklch(50.6% 0.19 21.41);
67
+ --color-cardinal-600: oklch(42.2% 0.16 23.24);
68
+ --color-cardinal-700: oklch(34.8% 0.132 24.75);
69
+ --color-cardinal-800: oklch(27.5% 0.106 26.2);
70
+ --color-cardinal-900: oklch(20.4% 0.081 26.95);
71
+ --color-cardinal-950: oklch(16.9% 0.069 26.47);
72
+ --color-cardinal-975: oklch(15% 0.062 29.23);
73
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Basalt color pack — cool neutrals + Carbon-like blue accent (IBM Carbon inspired).
3
+ */
4
+ @theme {
5
+ --color-basalt-50: oklch(98.2% 0.004 265);
6
+ --color-basalt-100: oklch(96% 0.006 265);
7
+ --color-basalt-200: oklch(91.5% 0.008 265);
8
+ --color-basalt-300: oklch(85% 0.01 265);
9
+ --color-basalt-400: oklch(74% 0.012 265);
10
+ --color-basalt-500: oklch(62% 0.014 265);
11
+ --color-basalt-600: oklch(50% 0.014 265);
12
+ --color-basalt-700: oklch(40% 0.012 265);
13
+ --color-basalt-800: oklch(30% 0.01 265);
14
+ --color-basalt-900: oklch(22% 0.008 265);
15
+ --color-basalt-950: oklch(16% 0.006 265);
16
+ --color-basalt-975: oklch(13% 0.005 265);
17
+
18
+ --color-carbon-blue-50: oklch(97% 0.02 264);
19
+ --color-carbon-blue-100: oklch(93% 0.04 264);
20
+ --color-carbon-blue-200: oklch(86% 0.08 264);
21
+ --color-carbon-blue-300: oklch(76% 0.12 264);
22
+ --color-carbon-blue-400: oklch(64% 0.16 264);
23
+ --color-carbon-blue-500: oklch(52% 0.19 264);
24
+ --color-carbon-blue-600: oklch(45% 0.17 264);
25
+ --color-carbon-blue-700: oklch(38% 0.14 264);
26
+ --color-carbon-blue-800: oklch(30% 0.11 264);
27
+ --color-carbon-blue-900: oklch(22% 0.08 264);
28
+
29
+ --color-carbon-teal-400: oklch(72% 0.1 195);
30
+ --color-carbon-teal-600: oklch(55% 0.09 195);
31
+
32
+ --color-carbon-red-500: oklch(52% 0.2 25);
33
+ --color-carbon-red-600: oklch(45% 0.18 25);
34
+ --color-carbon-red-100: oklch(92% 0.04 25);
35
+ --color-carbon-red-800: oklch(32% 0.12 25);
36
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Glacier color pack — matches apps/docs `theme.css` scales.
3
+ */
4
+ @theme {
5
+ --color-night-sky-50: hsl(225 100% 98%);
6
+ --color-night-sky-100: hsl(225 100% 95%);
7
+ --color-night-sky-200: hsl(225 100% 90%);
8
+ --color-night-sky-300: hsl(225 90% 80%);
9
+ --color-night-sky-400: hsl(225 90% 70%);
10
+ --color-night-sky-500: hsl(225 85% 55%);
11
+ --color-night-sky-600: hsl(225 85% 45%);
12
+ --color-night-sky-700: hsl(225 90% 35%);
13
+ --color-night-sky-800: hsl(225 90% 25%);
14
+ --color-night-sky-900: hsl(225 80% 15%);
15
+ --color-night-sky-950: hsl(225 80% 10%);
16
+
17
+ --color-scarlet-100: hsl(353 100% 89%);
18
+ --color-scarlet-200: hsl(351 100% 81%);
19
+ --color-scarlet-300: hsl(350 100% 72%);
20
+ --color-scarlet-400: hsl(350 100% 63%);
21
+ --color-scarlet-500: hsl(350 100% 54%);
22
+ --color-scarlet-600: hsl(350 84% 44%);
23
+ --color-scarlet-700: hsl(351 83% 35%);
24
+ --color-scarlet-800: hsl(351 81% 25%);
25
+ --color-scarlet-900: hsl(353 76% 15%);
26
+ --color-scarlet-950: hsl(8 60% 5%);
27
+
28
+ --color-glacier-white-50: hsl(220 20% 99%);
29
+ --color-glacier-white-100: hsl(220 20% 97%);
30
+ --color-glacier-white-200: hsl(220 20% 94%);
31
+ --color-glacier-white-300: hsl(220 15% 90%);
32
+ --color-glacier-white-400: hsl(220 12% 80%);
33
+ --color-glacier-white-500: hsl(220 10% 72%);
34
+ --color-glacier-white-600: hsl(220 8% 58%);
35
+ --color-glacier-white-700: hsl(220 10% 35%);
36
+ --color-glacier-white-800: hsl(220 12% 25%);
37
+ --color-glacier-white-900: hsl(225 15% 5%);
38
+ --color-glacier-white-950: hsl(225 20% 2%);
39
+
40
+ --color-laser-lemon-300: hsl(60 100% 69%);
41
+ --color-laser-lemon-800: hsl(59 93% 23%);
42
+
43
+ --color-navy-blue-400: hsl(212 67% 58%);
44
+ --color-navy-blue-700: hsl(212 71% 30%);
45
+ }
@@ -0,0 +1,3 @@
1
+ @import './glacier.css';
2
+ @import './aurora.css';
3
+ @import './basalt.css';
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Default elevation pack.
3
+ */
4
+ :root {
5
+ --shadow-control: 0 1px 2px 0 rgb(0 0 0 / 0.05);
6
+ --shadow-overlay: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
7
+ --shadow-modal: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
8
+
9
+ --sheen-highlight: color-mix(in oklab, white 8%, transparent);
10
+ --sheen-shade: color-mix(in oklab, black 7%, transparent);
11
+ --sheen-image: linear-gradient(to bottom, var(--sheen-highlight), transparent 55%, var(--sheen-shade));
12
+ }
13
+
14
+ @theme {
15
+ --shadow-control: var(--shadow-control);
16
+ --shadow-overlay: var(--shadow-overlay);
17
+ --shadow-modal: var(--shadow-modal);
18
+ --shadow-sm: var(--shadow-control);
19
+ --shadow-md: var(--shadow-overlay);
20
+ --shadow-lg: var(--shadow-overlay);
21
+ --shadow-xl: var(--shadow-modal);
22
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Flat elevation pack — no drop shadows.
3
+ */
4
+ :root {
5
+ --shadow-control: none;
6
+ --shadow-overlay: none;
7
+ --shadow-modal: none;
8
+
9
+ --sheen-highlight: color-mix(in oklab, white 14%, transparent);
10
+ --sheen-shade: color-mix(in oklab, black 7%, transparent);
11
+ --sheen-image: linear-gradient(to bottom, var(--sheen-highlight), transparent 55%, var(--sheen-shade));
12
+ }
13
+
14
+ @theme {
15
+ --shadow-control: var(--shadow-control);
16
+ --shadow-overlay: var(--shadow-overlay);
17
+ --shadow-modal: var(--shadow-modal);
18
+ --shadow-sm: var(--shadow-control);
19
+ --shadow-md: var(--shadow-overlay);
20
+ --shadow-lg: var(--shadow-overlay);
21
+ --shadow-xl: var(--shadow-modal);
22
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Default motion pack.
3
+ */
4
+ :root {
5
+ --duration-fast: 150ms;
6
+ --duration-normal: 200ms;
7
+ --duration-slow: 300ms;
8
+ --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
9
+ --ease-out: cubic-bezier(0, 0, 0.2, 1);
10
+ }
11
+
12
+ @theme {
13
+ --transition-duration-fast: var(--duration-fast);
14
+ --transition-duration-normal: var(--duration-normal);
15
+ --transition-duration-slow: var(--duration-slow);
16
+ --duration-150: var(--duration-fast);
17
+ --duration-200: var(--duration-normal);
18
+ --duration-300: var(--duration-slow);
19
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Snappy motion pack.
3
+ */
4
+ :root {
5
+ --duration-fast: 100ms;
6
+ --duration-normal: 150ms;
7
+ --duration-slow: 200ms;
8
+ --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
9
+ --ease-out: cubic-bezier(0, 0, 0.2, 1);
10
+ }
11
+
12
+ @theme {
13
+ --transition-duration-fast: var(--duration-fast);
14
+ --transition-duration-normal: var(--duration-normal);
15
+ --transition-duration-slow: var(--duration-slow);
16
+ --duration-150: var(--duration-fast);
17
+ --duration-200: var(--duration-normal);
18
+ --duration-300: var(--duration-slow);
19
+ }