@inui/design-system 0.0.0-stage → 1.22.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 (312) hide show
  1. package/README.md +360 -2
  2. package/dist/components/ui/accordion.d.ts +44 -0
  3. package/dist/components/ui/accordion.d.ts.map +1 -0
  4. package/dist/components/ui/accordion.js +86 -0
  5. package/dist/components/ui/accordion.js.map +1 -0
  6. package/dist/components/ui/ai-avatar.d.ts +46 -0
  7. package/dist/components/ui/ai-avatar.d.ts.map +1 -0
  8. package/dist/components/ui/ai-avatar.js +43 -0
  9. package/dist/components/ui/ai-avatar.js.map +1 -0
  10. package/dist/components/ui/ai-label.d.ts +118 -0
  11. package/dist/components/ui/ai-label.d.ts.map +1 -0
  12. package/dist/components/ui/ai-label.js +184 -0
  13. package/dist/components/ui/ai-label.js.map +1 -0
  14. package/dist/components/ui/ai-sparkle.d.ts +91 -0
  15. package/dist/components/ui/ai-sparkle.d.ts.map +1 -0
  16. package/dist/components/ui/ai-sparkle.js +200 -0
  17. package/dist/components/ui/ai-sparkle.js.map +1 -0
  18. package/dist/components/ui/alert-dialog.d.ts +79 -0
  19. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  20. package/dist/components/ui/alert-dialog.js +147 -0
  21. package/dist/components/ui/alert-dialog.js.map +1 -0
  22. package/dist/components/ui/alert.d.ts +71 -0
  23. package/dist/components/ui/alert.d.ts.map +1 -0
  24. package/dist/components/ui/alert.js +108 -0
  25. package/dist/components/ui/alert.js.map +1 -0
  26. package/dist/components/ui/aspect-ratio.d.ts +30 -0
  27. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  28. package/dist/components/ui/aspect-ratio.js +40 -0
  29. package/dist/components/ui/aspect-ratio.js.map +1 -0
  30. package/dist/components/ui/attachment.d.ts +74 -0
  31. package/dist/components/ui/attachment.d.ts.map +1 -0
  32. package/dist/components/ui/attachment.js +142 -0
  33. package/dist/components/ui/attachment.js.map +1 -0
  34. package/dist/components/ui/avatar.d.ts +82 -0
  35. package/dist/components/ui/avatar.d.ts.map +1 -0
  36. package/dist/components/ui/avatar.js +123 -0
  37. package/dist/components/ui/avatar.js.map +1 -0
  38. package/dist/components/ui/badge.d.ts +130 -0
  39. package/dist/components/ui/badge.d.ts.map +1 -0
  40. package/dist/components/ui/badge.js +226 -0
  41. package/dist/components/ui/badge.js.map +1 -0
  42. package/dist/components/ui/breadcrumb.d.ts +43 -0
  43. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  44. package/dist/components/ui/breadcrumb.js +98 -0
  45. package/dist/components/ui/breadcrumb.js.map +1 -0
  46. package/dist/components/ui/browser-tabs.d.ts +218 -0
  47. package/dist/components/ui/browser-tabs.d.ts.map +1 -0
  48. package/dist/components/ui/browser-tabs.js +528 -0
  49. package/dist/components/ui/browser-tabs.js.map +1 -0
  50. package/dist/components/ui/bubble.d.ts +80 -0
  51. package/dist/components/ui/bubble.d.ts.map +1 -0
  52. package/dist/components/ui/bubble.js +235 -0
  53. package/dist/components/ui/bubble.js.map +1 -0
  54. package/dist/components/ui/button-group.d.ts +60 -0
  55. package/dist/components/ui/button-group.d.ts.map +1 -0
  56. package/dist/components/ui/button-group.js +89 -0
  57. package/dist/components/ui/button-group.js.map +1 -0
  58. package/dist/components/ui/button.d.ts +157 -0
  59. package/dist/components/ui/button.d.ts.map +1 -0
  60. package/dist/components/ui/button.js +144 -0
  61. package/dist/components/ui/button.js.map +1 -0
  62. package/dist/components/ui/calendar.d.ts +57 -0
  63. package/dist/components/ui/calendar.d.ts.map +1 -0
  64. package/dist/components/ui/calendar.js +163 -0
  65. package/dist/components/ui/calendar.js.map +1 -0
  66. package/dist/components/ui/card.d.ts +96 -0
  67. package/dist/components/ui/card.d.ts.map +1 -0
  68. package/dist/components/ui/card.js +131 -0
  69. package/dist/components/ui/card.js.map +1 -0
  70. package/dist/components/ui/carousel.d.ts +86 -0
  71. package/dist/components/ui/carousel.d.ts.map +1 -0
  72. package/dist/components/ui/carousel.js +207 -0
  73. package/dist/components/ui/carousel.js.map +1 -0
  74. package/dist/components/ui/checkbox.d.ts +54 -0
  75. package/dist/components/ui/checkbox.d.ts.map +1 -0
  76. package/dist/components/ui/checkbox.js +78 -0
  77. package/dist/components/ui/checkbox.js.map +1 -0
  78. package/dist/components/ui/collapsible.d.ts +45 -0
  79. package/dist/components/ui/collapsible.d.ts.map +1 -0
  80. package/dist/components/ui/collapsible.js +65 -0
  81. package/dist/components/ui/collapsible.js.map +1 -0
  82. package/dist/components/ui/combobox.d.ts +111 -0
  83. package/dist/components/ui/combobox.d.ts.map +1 -0
  84. package/dist/components/ui/combobox.js +264 -0
  85. package/dist/components/ui/combobox.js.map +1 -0
  86. package/dist/components/ui/command.d.ts +71 -0
  87. package/dist/components/ui/command.d.ts.map +1 -0
  88. package/dist/components/ui/command.js +133 -0
  89. package/dist/components/ui/command.js.map +1 -0
  90. package/dist/components/ui/context-menu.d.ts +70 -0
  91. package/dist/components/ui/context-menu.d.ts.map +1 -0
  92. package/dist/components/ui/context-menu.js +163 -0
  93. package/dist/components/ui/context-menu.js.map +1 -0
  94. package/dist/components/ui/count-badge.d.ts +40 -0
  95. package/dist/components/ui/count-badge.d.ts.map +1 -0
  96. package/dist/components/ui/count-badge.js +43 -0
  97. package/dist/components/ui/count-badge.js.map +1 -0
  98. package/dist/components/ui/data-table.d.ts +1026 -0
  99. package/dist/components/ui/data-table.d.ts.map +1 -0
  100. package/dist/components/ui/data-table.js +3423 -0
  101. package/dist/components/ui/data-table.js.map +1 -0
  102. package/dist/components/ui/dialog.d.ts +73 -0
  103. package/dist/components/ui/dialog.d.ts.map +1 -0
  104. package/dist/components/ui/dialog.js +145 -0
  105. package/dist/components/ui/dialog.js.map +1 -0
  106. package/dist/components/ui/direction.d.ts +35 -0
  107. package/dist/components/ui/direction.d.ts.map +1 -0
  108. package/dist/components/ui/direction.js +35 -0
  109. package/dist/components/ui/direction.js.map +1 -0
  110. package/dist/components/ui/drawer.d.ts +53 -0
  111. package/dist/components/ui/drawer.d.ts.map +1 -0
  112. package/dist/components/ui/drawer.js +115 -0
  113. package/dist/components/ui/drawer.js.map +1 -0
  114. package/dist/components/ui/dropdown-menu.d.ts +75 -0
  115. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  116. package/dist/components/ui/dropdown-menu.js +173 -0
  117. package/dist/components/ui/dropdown-menu.js.map +1 -0
  118. package/dist/components/ui/dropzone.d.ts +141 -0
  119. package/dist/components/ui/dropzone.d.ts.map +1 -0
  120. package/dist/components/ui/dropzone.js +257 -0
  121. package/dist/components/ui/dropzone.js.map +1 -0
  122. package/dist/components/ui/empty.d.ts +94 -0
  123. package/dist/components/ui/empty.d.ts.map +1 -0
  124. package/dist/components/ui/empty.js +149 -0
  125. package/dist/components/ui/empty.js.map +1 -0
  126. package/dist/components/ui/field.d.ts +122 -0
  127. package/dist/components/ui/field.d.ts.map +1 -0
  128. package/dist/components/ui/field.js +254 -0
  129. package/dist/components/ui/field.js.map +1 -0
  130. package/dist/components/ui/hover-card.d.ts +51 -0
  131. package/dist/components/ui/hover-card.d.ts.map +1 -0
  132. package/dist/components/ui/hover-card.js +101 -0
  133. package/dist/components/ui/hover-card.js.map +1 -0
  134. package/dist/components/ui/input-group.d.ts +62 -0
  135. package/dist/components/ui/input-group.d.ts.map +1 -0
  136. package/dist/components/ui/input-group.js +115 -0
  137. package/dist/components/ui/input-group.js.map +1 -0
  138. package/dist/components/ui/input-otp.d.ts +52 -0
  139. package/dist/components/ui/input-otp.d.ts.map +1 -0
  140. package/dist/components/ui/input-otp.js +89 -0
  141. package/dist/components/ui/input-otp.js.map +1 -0
  142. package/dist/components/ui/input.d.ts +47 -0
  143. package/dist/components/ui/input.d.ts.map +1 -0
  144. package/dist/components/ui/input.js +47 -0
  145. package/dist/components/ui/input.js.map +1 -0
  146. package/dist/components/ui/item.d.ts +74 -0
  147. package/dist/components/ui/item.d.ts.map +1 -0
  148. package/dist/components/ui/item.js +176 -0
  149. package/dist/components/ui/item.js.map +1 -0
  150. package/dist/components/ui/kbd.d.ts +41 -0
  151. package/dist/components/ui/kbd.d.ts.map +1 -0
  152. package/dist/components/ui/kbd.js +58 -0
  153. package/dist/components/ui/kbd.js.map +1 -0
  154. package/dist/components/ui/key-value-pair.d.ts +56 -0
  155. package/dist/components/ui/key-value-pair.d.ts.map +1 -0
  156. package/dist/components/ui/key-value-pair.js +110 -0
  157. package/dist/components/ui/key-value-pair.js.map +1 -0
  158. package/dist/components/ui/label.d.ts +83 -0
  159. package/dist/components/ui/label.d.ts.map +1 -0
  160. package/dist/components/ui/label.js +85 -0
  161. package/dist/components/ui/label.js.map +1 -0
  162. package/dist/components/ui/marker.d.ts +54 -0
  163. package/dist/components/ui/marker.d.ts.map +1 -0
  164. package/dist/components/ui/marker.js +79 -0
  165. package/dist/components/ui/marker.js.map +1 -0
  166. package/dist/components/ui/menubar.d.ts +72 -0
  167. package/dist/components/ui/menubar.d.ts.map +1 -0
  168. package/dist/components/ui/menubar.js +174 -0
  169. package/dist/components/ui/menubar.js.map +1 -0
  170. package/dist/components/ui/message-scroller.d.ts +53 -0
  171. package/dist/components/ui/message-scroller.d.ts.map +1 -0
  172. package/dist/components/ui/message-scroller.js +95 -0
  173. package/dist/components/ui/message-scroller.js.map +1 -0
  174. package/dist/components/ui/message.d.ts +63 -0
  175. package/dist/components/ui/message.d.ts.map +1 -0
  176. package/dist/components/ui/message.js +92 -0
  177. package/dist/components/ui/message.js.map +1 -0
  178. package/dist/components/ui/meta-list.d.ts +55 -0
  179. package/dist/components/ui/meta-list.d.ts.map +1 -0
  180. package/dist/components/ui/meta-list.js +75 -0
  181. package/dist/components/ui/meta-list.js.map +1 -0
  182. package/dist/components/ui/native-select.d.ts +51 -0
  183. package/dist/components/ui/native-select.d.ts.map +1 -0
  184. package/dist/components/ui/native-select.js +75 -0
  185. package/dist/components/ui/native-select.js.map +1 -0
  186. package/dist/components/ui/navigation-menu.d.ts +56 -0
  187. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  188. package/dist/components/ui/navigation-menu.js +116 -0
  189. package/dist/components/ui/navigation-menu.js.map +1 -0
  190. package/dist/components/ui/page-header.d.ts +223 -0
  191. package/dist/components/ui/page-header.d.ts.map +1 -0
  192. package/dist/components/ui/page-header.js +233 -0
  193. package/dist/components/ui/page-header.js.map +1 -0
  194. package/dist/components/ui/pagination.d.ts +68 -0
  195. package/dist/components/ui/pagination.d.ts.map +1 -0
  196. package/dist/components/ui/pagination.js +145 -0
  197. package/dist/components/ui/pagination.js.map +1 -0
  198. package/dist/components/ui/popover.d.ts +61 -0
  199. package/dist/components/ui/popover.d.ts.map +1 -0
  200. package/dist/components/ui/popover.js +144 -0
  201. package/dist/components/ui/popover.js.map +1 -0
  202. package/dist/components/ui/progress.d.ts +35 -0
  203. package/dist/components/ui/progress.d.ts.map +1 -0
  204. package/dist/components/ui/progress.js +46 -0
  205. package/dist/components/ui/progress.js.map +1 -0
  206. package/dist/components/ui/questionnaire.d.ts +92 -0
  207. package/dist/components/ui/questionnaire.d.ts.map +1 -0
  208. package/dist/components/ui/questionnaire.js +277 -0
  209. package/dist/components/ui/questionnaire.js.map +1 -0
  210. package/dist/components/ui/radio-group.d.ts +50 -0
  211. package/dist/components/ui/radio-group.d.ts.map +1 -0
  212. package/dist/components/ui/radio-group.js +65 -0
  213. package/dist/components/ui/radio-group.js.map +1 -0
  214. package/dist/components/ui/resizable.d.ts +44 -0
  215. package/dist/components/ui/resizable.d.ts.map +1 -0
  216. package/dist/components/ui/resizable.js +73 -0
  217. package/dist/components/ui/resizable.js.map +1 -0
  218. package/dist/components/ui/scroll-area.d.ts +55 -0
  219. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  220. package/dist/components/ui/scroll-area.js +72 -0
  221. package/dist/components/ui/scroll-area.js.map +1 -0
  222. package/dist/components/ui/select.d.ts +274 -0
  223. package/dist/components/ui/select.d.ts.map +1 -0
  224. package/dist/components/ui/select.js +609 -0
  225. package/dist/components/ui/select.js.map +1 -0
  226. package/dist/components/ui/separator.d.ts +31 -0
  227. package/dist/components/ui/separator.d.ts.map +1 -0
  228. package/dist/components/ui/separator.js +38 -0
  229. package/dist/components/ui/separator.js.map +1 -0
  230. package/dist/components/ui/sheet.d.ts +59 -0
  231. package/dist/components/ui/sheet.d.ts.map +1 -0
  232. package/dist/components/ui/sheet.js +128 -0
  233. package/dist/components/ui/sheet.js.map +1 -0
  234. package/dist/components/ui/sidebar.d.ts +166 -0
  235. package/dist/components/ui/sidebar.d.ts.map +1 -0
  236. package/dist/components/ui/sidebar.js +512 -0
  237. package/dist/components/ui/sidebar.js.map +1 -0
  238. package/dist/components/ui/skeleton.d.ts +35 -0
  239. package/dist/components/ui/skeleton.d.ts.map +1 -0
  240. package/dist/components/ui/skeleton.js +46 -0
  241. package/dist/components/ui/skeleton.js.map +1 -0
  242. package/dist/components/ui/slider.d.ts +39 -0
  243. package/dist/components/ui/slider.d.ts.map +1 -0
  244. package/dist/components/ui/slider.js +75 -0
  245. package/dist/components/ui/slider.js.map +1 -0
  246. package/dist/components/ui/sonner.d.ts +56 -0
  247. package/dist/components/ui/sonner.d.ts.map +1 -0
  248. package/dist/components/ui/sonner.js +96 -0
  249. package/dist/components/ui/sonner.js.map +1 -0
  250. package/dist/components/ui/spinner.d.ts +37 -0
  251. package/dist/components/ui/spinner.d.ts.map +1 -0
  252. package/dist/components/ui/spinner.js +51 -0
  253. package/dist/components/ui/spinner.js.map +1 -0
  254. package/dist/components/ui/stepper.d.ts +84 -0
  255. package/dist/components/ui/stepper.d.ts.map +1 -0
  256. package/dist/components/ui/stepper.js +145 -0
  257. package/dist/components/ui/stepper.js.map +1 -0
  258. package/dist/components/ui/switch.d.ts +36 -0
  259. package/dist/components/ui/switch.d.ts.map +1 -0
  260. package/dist/components/ui/switch.js +44 -0
  261. package/dist/components/ui/switch.js.map +1 -0
  262. package/dist/components/ui/table.d.ts +80 -0
  263. package/dist/components/ui/table.d.ts.map +1 -0
  264. package/dist/components/ui/table.js +130 -0
  265. package/dist/components/ui/table.js.map +1 -0
  266. package/dist/components/ui/tabs.d.ts +87 -0
  267. package/dist/components/ui/tabs.d.ts.map +1 -0
  268. package/dist/components/ui/tabs.js +128 -0
  269. package/dist/components/ui/tabs.js.map +1 -0
  270. package/dist/components/ui/textarea.d.ts +35 -0
  271. package/dist/components/ui/textarea.d.ts.map +1 -0
  272. package/dist/components/ui/textarea.js +38 -0
  273. package/dist/components/ui/textarea.js.map +1 -0
  274. package/dist/components/ui/time-picker.d.ts +58 -0
  275. package/dist/components/ui/time-picker.d.ts.map +1 -0
  276. package/dist/components/ui/time-picker.js +188 -0
  277. package/dist/components/ui/time-picker.js.map +1 -0
  278. package/dist/components/ui/toggle-group.d.ts +52 -0
  279. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  280. package/dist/components/ui/toggle-group.js +94 -0
  281. package/dist/components/ui/toggle-group.js.map +1 -0
  282. package/dist/components/ui/toggle.d.ts +50 -0
  283. package/dist/components/ui/toggle.d.ts.map +1 -0
  284. package/dist/components/ui/toggle.js +70 -0
  285. package/dist/components/ui/toggle.js.map +1 -0
  286. package/dist/components/ui/tooltip.d.ts +51 -0
  287. package/dist/components/ui/tooltip.d.ts.map +1 -0
  288. package/dist/components/ui/tooltip.js +78 -0
  289. package/dist/components/ui/tooltip.js.map +1 -0
  290. package/dist/hooks/use-dark-mode.d.ts +2 -0
  291. package/dist/hooks/use-dark-mode.d.ts.map +1 -0
  292. package/dist/hooks/use-dark-mode.js +36 -0
  293. package/dist/hooks/use-dark-mode.js.map +1 -0
  294. package/dist/hooks/use-mobile.d.ts +2 -0
  295. package/dist/hooks/use-mobile.d.ts.map +1 -0
  296. package/dist/hooks/use-mobile.js +20 -0
  297. package/dist/hooks/use-mobile.js.map +1 -0
  298. package/dist/index.d.ts +88 -0
  299. package/dist/index.d.ts.map +1 -0
  300. package/dist/index.js +77 -0
  301. package/dist/lib/scope.d.ts +64 -0
  302. package/dist/lib/scope.d.ts.map +1 -0
  303. package/dist/lib/scope.js +74 -0
  304. package/dist/lib/scope.js.map +1 -0
  305. package/dist/lib/utils.d.ts +3 -0
  306. package/dist/lib/utils.d.ts.map +1 -0
  307. package/dist/lib/utils.js +11 -0
  308. package/dist/lib/utils.js.map +1 -0
  309. package/dist/styles.css +2 -0
  310. package/dist/theme-tokens.css +537 -0
  311. package/dist/theme.css +417 -0
  312. package/package.json +103 -3
package/dist/theme.css ADDED
@@ -0,0 +1,417 @@
1
+ /*
2
+ * Design token registration, plus document-wide emission for direct
3
+ * importers. index.css pulls this in via `@reference` (registers, emits
4
+ * nothing); a direct `theme.css` import emits unscoped on `:root`.
5
+ */
6
+
7
+ /* Dark mode is class-driven (.dark on <html>), not prefers-color-scheme. */
8
+ @custom-variant dark (&:where(.dark, .dark *));
9
+
10
+ /*
11
+ * Registration only (`reference` emits nothing — avoids the `:root, :host`
12
+ * leak a plain `@theme` would cause). `static` keeps every token registered
13
+ * even if unused. EDIT VALUES IN theme-tokens.css, then mirror them here —
14
+ * values here are only `var()` fallbacks, never what actually renders.
15
+ */
16
+ @theme static reference {
17
+ /* "DM Sans Variable" first — fontsource's variable build registers under
18
+ that name, not "DM Sans" (see .storybook/preview.tsx). */
19
+ --font-sans:
20
+ "DM Sans Variable", "DM Sans", -apple-system, BlinkMacSystemFont,
21
+ "Segoe UI", ui-sans-serif, system-ui, sans-serif;
22
+ --font-mono:
23
+ "DM Mono", ui-monospace, "SF Mono", Consolas, "Courier New", monospace;
24
+
25
+ /* Level 1 primitives — see theme-tokens.css for the full rationale, including
26
+ the Tailwind-convention shade renumbering (50…950 + 1000/1100/1200 extension).
27
+ Every semantic token below is Level 2, referencing these via var(). */
28
+ --color-indigo-50: #f5f6ff;
29
+ --color-indigo-100: #e5e8ff;
30
+ --color-indigo-200: #d6daff;
31
+ --color-indigo-300: #c7ccff;
32
+ --color-indigo-400: #b3baff;
33
+ --color-indigo-500: #9faafe;
34
+ --color-indigo-600: #8993fa;
35
+ --color-indigo-700: #7380f7;
36
+ --color-indigo-800: #5a67f6;
37
+ --color-indigo-900: #4256d7;
38
+ --color-indigo-950: #2f4aac;
39
+ --color-indigo-1000: #223987;
40
+ --color-indigo-1100: #192b66;
41
+ --color-indigo-1200: #101c46;
42
+ --color-red-50: #fff7f5;
43
+ --color-red-100: #ffe1db;
44
+ --color-red-200: #ffd4cc;
45
+ --color-red-300: #fec0b4;
46
+ --color-red-400: #fcac9c;
47
+ --color-red-500: #f49480;
48
+ --color-red-600: #ed765e;
49
+ --color-red-700: #e45b3f;
50
+ --color-red-800: #df3011;
51
+ --color-red-900: #bd1c00;
52
+ --color-red-950: #9e200a;
53
+ --color-red-1000: #791a06;
54
+ --color-red-1100: #5c1305;
55
+ --color-red-1200: #3f0e03;
56
+ --color-cyan-50: #eefafc;
57
+ --color-cyan-100: #cff1f7;
58
+ --color-cyan-200: #b6e8f2;
59
+ --color-cyan-300: #96dfee;
60
+ --color-cyan-400: #6ed3e7;
61
+ --color-cyan-500: #33c4e1;
62
+ --color-cyan-600: #00b2d6;
63
+ --color-cyan-700: #009fc7;
64
+ --color-cyan-800: #008cb3;
65
+ --color-cyan-900: #007599;
66
+ --color-cyan-950: #006080;
67
+ --color-cyan-1000: #004766;
68
+ --color-cyan-1100: #003952;
69
+ --color-cyan-1200: #002738;
70
+ --color-violet-50: #faf6fe;
71
+ --color-violet-100: #f0e7fd;
72
+ --color-violet-200: #e4d5fb;
73
+ --color-violet-300: #dcc7fa;
74
+ --color-violet-400: #cfb4f8;
75
+ --color-violet-500: #c0a0f3;
76
+ --color-violet-600: #ac87ee;
77
+ --color-violet-700: #9e72e9;
78
+ --color-violet-800: #8854e8;
79
+ --color-violet-900: #6f47cd;
80
+ --color-violet-950: #5b3ba5;
81
+ --color-violet-1000: #462d80;
82
+ --color-violet-1100: #322361;
83
+ --color-violet-1200: #211844;
84
+ --color-yellow-50: #fff9e5;
85
+ --color-yellow-100: #fff5d6;
86
+ --color-yellow-200: #fff0c2;
87
+ --color-yellow-300: #ffe9a8;
88
+ --color-yellow-400: #fee18b;
89
+ --color-yellow-500: #fbd86f;
90
+ --color-yellow-600: #f8cd4f;
91
+ --color-yellow-700: #f5c32e;
92
+ --color-yellow-800: #f5ba0a;
93
+ --color-yellow-900: #d6a100;
94
+ --color-yellow-950: #ad8200;
95
+ --color-yellow-1000: #856300;
96
+ --color-yellow-1100: #664d00;
97
+ --color-yellow-1200: #473600;
98
+ --color-green-50: #f1f9f0;
99
+ --color-green-100: #dcf0db;
100
+ --color-green-200: #cbe8c9;
101
+ --color-green-300: #b6dfb3;
102
+ --color-green-400: #9dd49b;
103
+ --color-green-500: #7ec57d;
104
+ --color-green-600: #5eb55e;
105
+ --color-green-700: #3aa63c;
106
+ --color-green-800: #009900;
107
+ --color-green-900: #008000;
108
+ --color-green-950: #006b00;
109
+ --color-green-1000: #005200;
110
+ --color-green-1100: #003d04;
111
+ --color-green-1200: #002904;
112
+ --color-orange-50: #ffeed1;
113
+ --color-orange-100: #ffe8c2;
114
+ --color-orange-200: #ffdca3;
115
+ --color-orange-300: #ffca7a;
116
+ --color-orange-400: #ffb657;
117
+ --color-orange-500: #ffa333;
118
+ --color-orange-600: #ff9114;
119
+ --color-orange-700: #eb7900;
120
+ --color-orange-800: #d66c00;
121
+ --color-orange-900: #bd5b00;
122
+ --color-orange-950: #a34c00;
123
+ --color-orange-1000: #8a3b00;
124
+ --color-orange-1100: #6b2900;
125
+ --color-orange-1200: #4d1c00;
126
+ --color-pink-50: #fff5f9;
127
+ --color-pink-100: #fee1eb;
128
+ --color-pink-200: #fccfdf;
129
+ --color-pink-300: #fabdd2;
130
+ --color-pink-400: #f6a7c4;
131
+ --color-pink-500: #ef8fb2;
132
+ --color-pink-600: #e7739e;
133
+ --color-pink-700: #de5487;
134
+ --color-pink-800: #d62974;
135
+ --color-pink-900: #bb165b;
136
+ --color-pink-950: #991a44;
137
+ --color-pink-1000: #751538;
138
+ --color-pink-1100: #5a112d;
139
+ --color-pink-1200: #3d0b20;
140
+ --color-teal-50: #effaf9;
141
+ --color-teal-100: #cff2ef;
142
+ --color-teal-200: #b8eae5;
143
+ --color-teal-300: #98e2dc;
144
+ --color-teal-400: #6fd8d2;
145
+ --color-teal-500: #2fcac0;
146
+ --color-teal-600: #00b8ae;
147
+ --color-teal-700: #00a89d;
148
+ --color-teal-800: #008f88;
149
+ --color-teal-900: #007a74;
150
+ --color-teal-950: #00665f;
151
+ --color-teal-1000: #004d47;
152
+ --color-teal-1100: #003d3a;
153
+ --color-teal-1200: #002926;
154
+ --color-fuchsia-50: #fdf6fc;
155
+ --color-fuchsia-100: #f8e2f5;
156
+ --color-fuchsia-200: #f3d3ef;
157
+ --color-fuchsia-300: #efc2e9;
158
+ --color-fuchsia-400: #e7ace1;
159
+ --color-fuchsia-500: #dd92d5;
160
+ --color-fuchsia-600: #d17acd;
161
+ --color-fuchsia-700: #c55ec1;
162
+ --color-fuchsia-800: #b83db8;
163
+ --color-fuchsia-900: #9d2d9f;
164
+ --color-fuchsia-950: #842a82;
165
+ --color-fuchsia-1000: #651f64;
166
+ --color-fuchsia-1100: #4e184d;
167
+ --color-fuchsia-1200: #371036;
168
+ --color-lime-50: #f5faed;
169
+ --color-lime-100: #e4efd3;
170
+ --color-lime-200: #d5e6bb;
171
+ --color-lime-300: #c5dc9e;
172
+ --color-lime-400: #b2d07d;
173
+ --color-lime-500: #9dc057;
174
+ --color-lime-600: #87b018;
175
+ --color-lime-700: #779d00;
176
+ --color-lime-800: #688900;
177
+ --color-lime-900: #577400;
178
+ --color-lime-950: #476000;
179
+ --color-lime-1000: #364900;
180
+ --color-lime-1100: #283800;
181
+ --color-lime-1200: #1a2700;
182
+ --color-blue-50: #f0f9ff;
183
+ --color-blue-100: #d6eeff;
184
+ --color-blue-200: #c2e4ff;
185
+ --color-blue-300: #a8d8ff;
186
+ --color-blue-400: #8bcafe;
187
+ --color-blue-500: #6fb7fb;
188
+ --color-blue-600: #4fa3f8;
189
+ --color-blue-700: #2e8ef5;
190
+ --color-blue-800: #0a74f5;
191
+ --color-blue-900: #0060d6;
192
+ --color-blue-950: #0051ad;
193
+ --color-blue-1000: #003e85;
194
+ --color-blue-1100: #003066;
195
+ --color-blue-1200: #002147;
196
+ --color-neutral-50: #f7f7f7;
197
+ --color-neutral-100: #ebebeb;
198
+ --color-neutral-200: #e0e0e0;
199
+ --color-neutral-300: #d4d4d4;
200
+ --color-neutral-400: #c4c4c4;
201
+ --color-neutral-500: #b5b5b5;
202
+ --color-neutral-600: #a3a3a3;
203
+ --color-neutral-700: #858585;
204
+ --color-neutral-800: #636363;
205
+ --color-neutral-900: #575757;
206
+ --color-neutral-950: #424242;
207
+ --color-neutral-1000: #333333;
208
+ --color-neutral-1100: #242424;
209
+ --color-neutral-1200: #1a1a1a;
210
+ --color-white: #ffffff;
211
+
212
+ --color-background: var(--color-neutral-50);
213
+ --color-foreground: var(--color-neutral-1200);
214
+ --color-card: var(--color-white);
215
+ --color-card-foreground: var(--color-neutral-1200);
216
+ --color-popover: var(--color-white);
217
+ --color-popover-foreground: var(--color-neutral-1200);
218
+ --color-primary: var(--color-blue-900);
219
+ --color-primary-foreground: var(--color-white);
220
+ --color-primary-hover: var(--color-blue-1000);
221
+ --color-primary-active: var(--color-blue-1100);
222
+ --color-secondary: var(--color-neutral-50);
223
+ --color-secondary-foreground: var(--color-neutral-1200);
224
+ --color-muted: var(--color-neutral-100);
225
+ --color-muted-foreground: var(--color-neutral-900);
226
+ --color-muted-hover: var(--color-neutral-200);
227
+ --color-muted-active: var(--color-neutral-300);
228
+ /* Lighter than muted-foreground on purpose — see theme-tokens.css. */
229
+ --color-disabled-foreground: var(--color-neutral-800);
230
+ /* Matches --color-muted, not border/input — accent is a hover wash, not an outline. */
231
+ --color-accent: var(--color-neutral-100);
232
+ --color-accent-foreground: var(--color-neutral-1200);
233
+ --color-destructive: var(--color-red-900);
234
+ --color-destructive-foreground: var(--color-white);
235
+ --color-destructive-hover: var(--color-red-950);
236
+ --color-destructive-active: var(--color-red-1100);
237
+ --color-destructive-light: var(--color-red-100);
238
+ --color-destructive-ultra-light: var(--color-red-50);
239
+ --color-destructive-text: var(--color-red-950);
240
+ --color-success: var(--color-green-800);
241
+ --color-success-foreground: var(--color-neutral-1200);
242
+ --color-success-light: var(--color-green-100);
243
+ --color-success-ultra-light: var(--color-green-50);
244
+ --color-success-text: var(--color-green-1000);
245
+ --color-warning: var(--color-yellow-950);
246
+ --color-warning-foreground: var(--color-neutral-1200);
247
+ --color-warning-light: var(--color-yellow-100);
248
+ --color-warning-ultra-light: var(--color-yellow-50);
249
+ --color-warning-text: var(--color-yellow-1100);
250
+ --color-warning-solid-text: var(--color-neutral-1200);
251
+ --color-alert: var(--color-orange-800);
252
+ --color-alert-foreground: var(--color-neutral-1200);
253
+ --color-alert-light: var(--color-orange-100);
254
+ --color-alert-ultra-light: var(--color-orange-50);
255
+ --color-alert-text: var(--color-orange-1000);
256
+ --color-info: var(--color-blue-950);
257
+ --color-info-foreground: var(--color-white);
258
+ --color-info-light: var(--color-blue-100);
259
+ --color-info-ultra-light: var(--color-blue-50);
260
+ --color-info-text: var(--color-blue-1100);
261
+ --color-surface: var(--color-white);
262
+ --color-surface-foreground: var(--color-neutral-1200);
263
+ --color-surface-chat: var(--color-white);
264
+ --color-surface-chat-foreground: var(--color-neutral-1200);
265
+ --color-surface-canvas: var(--color-neutral-50);
266
+ --color-surface-canvas-foreground: var(--color-neutral-1200);
267
+ /* Matches Neutral-200 / shadcn's actual subtlety — see theme-tokens.css
268
+ for the full rationale (traded the WCAG 1.4.11 3:1 floor on purpose). */
269
+ --color-border: var(--color-neutral-200);
270
+ --color-border-subtle: var(--color-neutral-100);
271
+ --color-input: var(--color-neutral-200);
272
+ /* Darker step of Primary (Blue-950), not neutral gray — see
273
+ theme-tokens.css for the full rationale. */
274
+ --color-ring: var(--color-blue-950);
275
+ --color-ring-destructive: var(--color-red-400);
276
+ --color-overlay: rgb(26 26 26 / 0.35);
277
+
278
+ /* AI identity gradient */
279
+ --color-ai-grad-from: #e81f76;
280
+ --color-ai-grad-to: #eb5324;
281
+ --color-ai-grad-from-alpha: 0.8;
282
+ --color-ai-wash: #ffc208;
283
+ --color-ai-wash-alpha: 0.24;
284
+ /* pre-baked for linear-gradient() */
285
+ --color-ai-grad-from-fade: color-mix(in srgb, #e81f76 80%, transparent);
286
+ --color-ai-wash-fade: color-mix(in srgb, #ffc208 24%, transparent);
287
+
288
+ /* Sidebar — matches --color-background, not --color-card, so a card sits
289
+ visibly raised against it. */
290
+ --color-sidebar: var(--color-neutral-50);
291
+ --color-sidebar-foreground: var(--color-neutral-1200);
292
+ --color-sidebar-primary: var(--color-blue-900);
293
+ --color-sidebar-primary-foreground: var(--color-white);
294
+ --color-sidebar-accent: var(--color-neutral-100);
295
+ --color-sidebar-accent-foreground: var(--color-neutral-1200);
296
+ --color-sidebar-border: var(--color-neutral-200);
297
+ --color-sidebar-ring: var(--color-blue-950);
298
+
299
+ /* Chart ramp — Accent 1-8 primitives at their -900 step, independent from
300
+ status colors/primary. See theme-tokens.css for the full rationale. */
301
+ --color-chart-1: var(--color-orange-900);
302
+ --color-chart-2: var(--color-violet-900);
303
+ --color-chart-3: var(--color-indigo-900);
304
+ --color-chart-4: var(--color-lime-900);
305
+ --color-chart-5: var(--color-cyan-900);
306
+ --color-chart-6: var(--color-pink-900);
307
+ --color-chart-7: var(--color-teal-900);
308
+ --color-chart-8: var(--color-fuchsia-900);
309
+
310
+ /* Shadows — neutral gray-1200 base (Night), not pure black */
311
+ --shadow-md:
312
+ 0 4px 6px -1px rgb(26 26 26 / 0.1), 0 2px 4px -2px rgb(26 26 26 / 0.1);
313
+ --shadow-lg:
314
+ 0 10px 15px -3px rgb(26 26 26 / 0.1), 0 4px 6px -4px rgb(26 26 26 / 0.1);
315
+ --shadow-popover: 0 0 20px -4px rgb(26 26 26 / 0.18);
316
+ /* AI glow, outward, blur layer only — the crisp ring is a separate
317
+ `@utility shadow-ai-glow` below (box-shadow can't paint the ring's
318
+ gradient). See theme-tokens.css for the full rationale. */
319
+ --shadow-ai-glow-blur: 0 0 16px 4px var(--color-ai-wash-fade);
320
+ /* AI glow, inward — a background-image glow (not a ring/border) for
321
+ row/column-scale AI marking, and a bottom-edge variant for whole-table
322
+ AI presence. See theme-tokens.css for the full rationale. */
323
+ --background-image-ai-glow: linear-gradient(
324
+ to right,
325
+ var(--color-ai-wash-fade),
326
+ transparent 20%
327
+ );
328
+ --background-image-ai-glow-bottom: linear-gradient(
329
+ to top,
330
+ var(--color-ai-wash-fade),
331
+ transparent 15%
332
+ );
333
+
334
+ /* Animation */
335
+ --animate-step-in: mmds-step-in 180ms ease-out both;
336
+ }
337
+
338
+ /* AI glow, outward, ring layer — a plain CSS variable can't hold a
339
+ gradient-shaped box-shadow ring, so this is an explicit `@utility`, not a
340
+ theme value: box-shadow only paints the soft blur (--shadow-ai-glow-blur
341
+ above); the crisp 1px ring is a `::before` painted with the SAME
342
+ two-stop gradient (ai-wash → ai-grad-from) the AI Card recipe's gradient
343
+ outline uses, so both read as the same colour family instead of a flat
344
+ approximation. `mask-composite: exclude` (the standard gradient-border
345
+ trick) keeps the gradient visible only in the 1px padding ring and fully
346
+ transparent everywhere else, so it never covers content and needs no
347
+ wrapper div — that's the whole point of this variant over the outline. */
348
+ @utility shadow-ai-glow {
349
+ position: relative;
350
+ box-shadow: var(--shadow-ai-glow-blur);
351
+
352
+ &::before {
353
+ content: "";
354
+ position: absolute;
355
+ inset: 0;
356
+ border-radius: inherit;
357
+ padding: 1px;
358
+ background: linear-gradient(
359
+ to right,
360
+ var(--color-ai-wash),
361
+ var(--color-ai-grad-from)
362
+ );
363
+ -webkit-mask:
364
+ linear-gradient(#fff 0 0) content-box,
365
+ linear-gradient(#fff 0 0);
366
+ -webkit-mask-composite: xor;
367
+ mask-composite: exclude;
368
+ pointer-events: none;
369
+ }
370
+ }
371
+
372
+ /* Authoritative values, for direct importers only — `@reference` means index.css
373
+ never reaches this rule. theme-tokens.css carries dark mode too. */
374
+ :root {
375
+ @import "./theme-tokens.css";
376
+ }
377
+
378
+ /* Tailwind v4 dropped the old v3 default of resolving an unsuffixed border
379
+ utility (bare `border`/`border-b`/`border-t`/etc., no color class) to
380
+ gray-200 — it now resolves to `currentColor` instead, a documented
381
+ breaking change. MMDS's own components (Table's TableRow, Card's
382
+ CardFooter, Dialog's DialogFooter, Sidebar's rail edge, and others) rely
383
+ on that old default and never write `border-border` explicitly on every
384
+ one of them — same as shadcn/ui's own source, which this is forked from.
385
+ Path A (index.css, the prebuilt scoped stylesheet) already restores it
386
+ via this exact rule inside its own preflight. A direct `theme.css`
387
+ import has no preflight of its own, so a consuming Tailwind v4 build
388
+ never gets it — every one of those dividers silently renders in
389
+ `currentColor` (usually near-black body text) instead of the intended
390
+ `--color-border`. This is Tailwind's own documented v3→v4 compatibility
391
+ snippet (also what shadcn's CLI now scaffolds into new v4 projects'
392
+ `globals.css`), just pointed at the design token instead of a hardcoded
393
+ gray — not an MMDS-specific patch, so it stays correct across future
394
+ Tailwind/shadcn versions instead of drifting from them. */
395
+ @layer base {
396
+ *,
397
+ ::after,
398
+ ::before,
399
+ ::backdrop,
400
+ ::file-selector-button {
401
+ border-color: var(--color-border, currentColor);
402
+ }
403
+ }
404
+
405
+ /* Prefixed because `@keyframes` names resolve document-wide and can't be scoped.
406
+ Also duplicated in index.css, which `@reference` stops from inheriting it. */
407
+ @keyframes mmds-step-in {
408
+ from {
409
+ opacity: 0;
410
+ transform: translateY(6px);
411
+ }
412
+
413
+ to {
414
+ opacity: 1;
415
+ transform: translateY(0);
416
+ }
417
+ }
package/package.json CHANGED
@@ -1,6 +1,106 @@
1
1
  {
2
2
  "name": "@inui/design-system",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "1.22.0",
4
+ "description": "Magic Masala design system — the full shadcn/ui component set on Tailwind CSS v4 with a customisable token layer.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "sideEffects": [
8
+ "**/*.css"
9
+ ],
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js"
17
+ },
18
+ "./styles.css": "./dist/styles.css",
19
+ "./theme.css": "./dist/theme.css",
20
+ "./package.json": "./package.json"
21
+ },
22
+ "main": "./dist/index.js",
23
+ "module": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "peerDependencies": {
26
+ "lucide-react": ">=1.0.0",
27
+ "react": "^19.0.0",
28
+ "react-dom": "^19.0.0"
29
+ },
30
+ "dependencies": {
31
+ "@base-ui/react": "^1.7.0",
32
+ "@shadcn/react": "^0.3.0",
33
+ "@tanstack/react-table": "^8.21.3",
34
+ "class-variance-authority": "^0.7.1",
35
+ "clsx": "^2.1.1",
36
+ "cmdk": "^1.1.1",
37
+ "date-fns": "^4.4.0",
38
+ "embla-carousel-react": "^8.6.0",
39
+ "input-otp": "^1.4.2",
40
+ "radix-ui": "^1.6.7",
41
+ "react-day-picker": "^10.0.1",
42
+ "react-resizable-panels": "^4.12.2",
43
+ "sonner": "^2.0.8",
44
+ "tailwind-merge": "^3.6.0",
45
+ "vaul": "^1.1.2"
46
+ },
47
+ "devDependencies": {
48
+ "@eslint/js": "^10.0.0",
49
+ "@fontsource-variable/dm-sans": "^5.3.0",
50
+ "@fontsource/dm-mono": "^5.3.0",
51
+ "@storybook/addon-a11y": "^10.5.10",
52
+ "@storybook/addon-docs": "^10.5.10",
53
+ "@storybook/addon-themes": "^10.5.10",
54
+ "@storybook/react-vite": "^10.5.10",
55
+ "@tailwindcss/cli": "^4.3.3",
56
+ "@tailwindcss/vite": "^4.3.3",
57
+ "@types/node": "^24.0.0",
58
+ "@types/react": "^19.2.0",
59
+ "@types/react-dom": "^19.2.0",
60
+ "@vitejs/plugin-react": "^6.0.5",
61
+ "eslint": "^10.0.0",
62
+ "eslint-plugin-react-hooks": "^7.1.1",
63
+ "eslint-plugin-storybook": "^10.5.10",
64
+ "fast-glob": "^3.3.3",
65
+ "globals": "^17.0.0",
66
+ "lucide-react": "^1.31.0",
67
+ "playwright": "^1.62.1",
68
+ "prettier": "^3.8.3",
69
+ "prettier-plugin-tailwindcss": "^0.8.0",
70
+ "react": "^19.2.8",
71
+ "react-docgen-typescript": "^2.4.0",
72
+ "react-dom": "^19.2.8",
73
+ "shadcn": "^4.17.0",
74
+ "storybook": "^10.5.10",
75
+ "tailwindcss": "^4.3.3",
76
+ "tsc-alias": "^1.9.1",
77
+ "tw-animate-css": "^1.4.0",
78
+ "typescript": "~6.0.3",
79
+ "typescript-eslint": "^8.0.0",
80
+ "vite": "^8.2.1"
81
+ },
82
+ "engines": {
83
+ "node": ">=20"
84
+ },
85
+ "scripts": {
86
+ "dev": "pnpm run docgen && storybook dev -p 6006",
87
+ "storybook": "pnpm run docgen && storybook dev -p 6006",
88
+ "build": "pnpm run build:js && pnpm run build:types && pnpm run build:css",
89
+ "build:js": "vite build -c vite.lib.config.ts",
90
+ "build:types": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
91
+ "build:css": "tailwindcss -i src/styles/index.css -o dist/styles.css --minify && cp src/styles/theme.css src/styles/theme-tokens.css dist/",
92
+ "build:storybook": "pnpm run build:types && pnpm run docgen && storybook build -o storybook-static",
93
+ "typecheck": "tsc --noEmit",
94
+ "lint": "eslint .",
95
+ "lint:fix": "eslint . --fix",
96
+ "format": "prettier --write \"**/*.{ts,tsx,css,md,json}\"",
97
+ "format:check": "prettier --check \"**/*.{ts,tsx,css,md,json}\"",
98
+ "release": "test -n \"$PACKAGE_VERSION\" && npm pkg set version=\"$PACKAGE_VERSION\" && pnpm publish --no-git-checks --access public --tag \"${DIST_TAG:-latest}\"",
99
+ "docgen": "node scripts/gen-docgen.mjs",
100
+ "usage-guidelines": "node scripts/gen-usage-guidelines.mjs",
101
+ "check-contrast": "node scripts/check-foreground-contrast.mjs",
102
+ "check-clinical-contrast": "node scripts/check-clinical-contrast.mjs",
103
+ "check-colorblind-distinction": "node scripts/check-colorblind-distinction.mjs",
104
+ "test-a11y": "node scripts/axe-scan.mjs"
105
+ }
6
106
  }