@devalok/shilp-sutra 0.36.0 → 0.37.0-next.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 (530) hide show
  1. package/MIGRATION.md +346 -0
  2. package/README.md +26 -29
  3. package/dist/_chunks/badge-group.js +42 -42
  4. package/dist/_chunks/badge-group.js.map +1 -1
  5. package/dist/_chunks/chat.js +324 -327
  6. package/dist/_chunks/chat.js.map +1 -1
  7. package/dist/_chunks/date-picker.js +245 -245
  8. package/dist/_chunks/date-picker.js.map +1 -1
  9. package/dist/_chunks/document-preview.js +33 -33
  10. package/dist/_chunks/document-preview.js.map +1 -1
  11. package/dist/_chunks/file-preview.js +264 -264
  12. package/dist/_chunks/file-preview.js.map +1 -1
  13. package/dist/_chunks/image-preview.js +45 -45
  14. package/dist/_chunks/image-preview.js.map +1 -1
  15. package/dist/_chunks/mention-suggestion.js +85 -85
  16. package/dist/_chunks/mention-suggestion.js.map +1 -1
  17. package/dist/_chunks/motion-provider.js +13 -13
  18. package/dist/_chunks/motion-provider.js.map +1 -1
  19. package/dist/_chunks/popover.js +36 -36
  20. package/dist/_chunks/popover.js.map +1 -1
  21. package/dist/_chunks/primitives.js +489 -489
  22. package/dist/_chunks/primitives.js.map +1 -1
  23. package/dist/_chunks/rich-chat-input.js +1066 -1066
  24. package/dist/_chunks/rich-chat-input.js.map +1 -1
  25. package/dist/_chunks/shared.js +43 -43
  26. package/dist/_chunks/shared.js.map +1 -1
  27. package/dist/_chunks/text.js +432 -0
  28. package/dist/_chunks/text.js.map +1 -0
  29. package/dist/_chunks/tiptap.js +6053 -6187
  30. package/dist/_chunks/tiptap.js.map +1 -1
  31. package/dist/_chunks/tree-view.js +97 -97
  32. package/dist/_chunks/tree-view.js.map +1 -1
  33. package/dist/_chunks/use-calendar.js.map +1 -1
  34. package/dist/ai/ai-command-provider.d.ts.map +1 -1
  35. package/dist/ai/ai-command-provider.js.map +1 -1
  36. package/dist/ai/block-renderer.d.ts.map +1 -1
  37. package/dist/ai/block-renderer.js +43 -43
  38. package/dist/ai/block-renderer.js.map +1 -1
  39. package/dist/ai/blocks/block-table.d.ts.map +1 -1
  40. package/dist/ai/blocks/confirm.d.ts.map +1 -1
  41. package/dist/ai/blocks/divider.d.ts.map +1 -1
  42. package/dist/ai/blocks/error.d.ts.map +1 -1
  43. package/dist/ai/blocks/index.d.ts +5 -5
  44. package/dist/ai/blocks/index.d.ts.map +1 -1
  45. package/dist/ai/blocks/index.js +2 -2
  46. package/dist/ai/blocks/info.d.ts.map +1 -1
  47. package/dist/ai/blocks/loading.d.ts.map +1 -1
  48. package/dist/ai/blocks/stat-row.d.ts.map +1 -1
  49. package/dist/ai/blocks/success.d.ts.map +1 -1
  50. package/dist/ai/blocks/text.d.ts.map +1 -1
  51. package/dist/ai/command-bar.d.ts +0 -11
  52. package/dist/ai/command-bar.d.ts.map +1 -1
  53. package/dist/ai/command-bar.js +128 -128
  54. package/dist/ai/command-bar.js.map +1 -1
  55. package/dist/ai/conversation.d.ts +1 -1
  56. package/dist/ai/conversation.d.ts.map +1 -1
  57. package/dist/ai/conversation.js +76 -76
  58. package/dist/ai/conversation.js.map +1 -1
  59. package/dist/ai/devadoot-icon.d.ts +0 -12
  60. package/dist/ai/devadoot-icon.d.ts.map +1 -1
  61. package/dist/ai/index.d.ts +11 -11
  62. package/dist/ai/index.d.ts.map +1 -1
  63. package/dist/ai/index.js +44 -44
  64. package/dist/ai/index.js.map +1 -1
  65. package/dist/composed/activity-feed.d.ts.map +1 -1
  66. package/dist/composed/activity-feed.js +93 -93
  67. package/dist/composed/activity-feed.js.map +1 -1
  68. package/dist/composed/avatar-group.d.ts.map +1 -1
  69. package/dist/composed/avatar-group.js +50 -50
  70. package/dist/composed/avatar-group.js.map +1 -1
  71. package/dist/composed/bulk-action-bar.d.ts.map +1 -1
  72. package/dist/composed/bulk-action-bar.js +40 -40
  73. package/dist/composed/bulk-action-bar.js.map +1 -1
  74. package/dist/composed/command-palette.d.ts +0 -6
  75. package/dist/composed/command-palette.d.ts.map +1 -1
  76. package/dist/composed/command-palette.js +131 -131
  77. package/dist/composed/command-palette.js.map +1 -1
  78. package/dist/composed/confirm-dialog.d.ts.map +1 -1
  79. package/dist/composed/confirm-dialog.js.map +1 -1
  80. package/dist/composed/content-card.d.ts.map +1 -1
  81. package/dist/composed/content-card.js.map +1 -1
  82. package/dist/composed/date-picker/calendar-grid.d.ts.map +1 -1
  83. package/dist/composed/date-picker/date-picker.d.ts.map +1 -1
  84. package/dist/composed/date-picker/date-range-picker.d.ts.map +1 -1
  85. package/dist/composed/date-picker/date-time-picker.d.ts.map +1 -1
  86. package/dist/composed/date-picker/index.d.ts +11 -11
  87. package/dist/composed/date-picker/index.d.ts.map +1 -1
  88. package/dist/composed/date-picker/index.js +1 -1
  89. package/dist/composed/date-picker/month-picker.d.ts.map +1 -1
  90. package/dist/composed/date-picker/presets.d.ts.map +1 -1
  91. package/dist/composed/date-picker/time-picker.d.ts.map +1 -1
  92. package/dist/composed/date-picker/year-picker.d.ts.map +1 -1
  93. package/dist/composed/deadline-indicator.d.ts.map +1 -1
  94. package/dist/composed/deadline-indicator.js +25 -25
  95. package/dist/composed/deadline-indicator.js.map +1 -1
  96. package/dist/composed/emoji-picker.d.ts.map +1 -1
  97. package/dist/composed/emoji-picker.js +37 -37
  98. package/dist/composed/emoji-picker.js.map +1 -1
  99. package/dist/composed/empty-state.d.ts.map +1 -1
  100. package/dist/composed/empty-state.js +21 -21
  101. package/dist/composed/empty-state.js.map +1 -1
  102. package/dist/composed/error-boundary.d.ts +1 -1
  103. package/dist/composed/error-boundary.d.ts.map +1 -1
  104. package/dist/composed/error-boundary.js.map +1 -1
  105. package/dist/composed/extensions/emoji-node.d.ts.map +1 -1
  106. package/dist/composed/extensions/emoji-suggestion.d.ts.map +1 -1
  107. package/dist/composed/extensions/file-attachment.d.ts.map +1 -1
  108. package/dist/composed/extensions/mention-suggestion.d.ts +1 -1
  109. package/dist/composed/extensions/mention-suggestion.d.ts.map +1 -1
  110. package/dist/composed/extensions/slash-command.d.ts +1 -1
  111. package/dist/composed/extensions/slash-command.d.ts.map +1 -1
  112. package/dist/composed/file-preview/audio-preview.d.ts.map +1 -1
  113. package/dist/composed/file-preview/document-preview.d.ts.map +1 -1
  114. package/dist/composed/file-preview/embed-preview.d.ts.map +1 -1
  115. package/dist/composed/file-preview/image-preview.d.ts.map +1 -1
  116. package/dist/composed/file-preview/shared.d.ts.map +1 -1
  117. package/dist/composed/file-preview/video-preview.d.ts.map +1 -1
  118. package/dist/composed/file-preview.d.ts.map +1 -1
  119. package/dist/composed/filter-bar.d.ts +1 -1
  120. package/dist/composed/filter-bar.d.ts.map +1 -1
  121. package/dist/composed/filter-bar.js +54 -54
  122. package/dist/composed/filter-bar.js.map +1 -1
  123. package/dist/composed/form-section.d.ts.map +1 -1
  124. package/dist/composed/form-section.js +26 -26
  125. package/dist/composed/form-section.js.map +1 -1
  126. package/dist/composed/global-loading.d.ts.map +1 -1
  127. package/dist/composed/global-loading.js.map +1 -1
  128. package/dist/composed/index.d.ts +55 -55
  129. package/dist/composed/index.d.ts.map +1 -1
  130. package/dist/composed/index.js +17 -17
  131. package/dist/composed/inline-edit.d.ts.map +1 -1
  132. package/dist/composed/inline-edit.js.map +1 -1
  133. package/dist/composed/loading-skeleton.d.ts +1 -1
  134. package/dist/composed/loading-skeleton.d.ts.map +1 -1
  135. package/dist/composed/loading-skeleton.js.map +1 -1
  136. package/dist/composed/markdown-viewer.d.ts.map +1 -1
  137. package/dist/composed/markdown-viewer.js +3 -3
  138. package/dist/composed/markdown-viewer.js.map +1 -1
  139. package/dist/composed/master-detail.d.ts.map +1 -1
  140. package/dist/composed/master-detail.js +42 -42
  141. package/dist/composed/master-detail.js.map +1 -1
  142. package/dist/composed/member-picker.d.ts.map +1 -1
  143. package/dist/composed/member-picker.js.map +1 -1
  144. package/dist/composed/multi-select-popover.d.ts.map +1 -1
  145. package/dist/composed/multi-select-popover.js +55 -55
  146. package/dist/composed/multi-select-popover.js.map +1 -1
  147. package/dist/composed/page-header.d.ts.map +1 -1
  148. package/dist/composed/page-header.js.map +1 -1
  149. package/dist/composed/page-skeletons.d.ts.map +1 -1
  150. package/dist/composed/page-skeletons.js.map +1 -1
  151. package/dist/composed/priority-indicator.d.ts.map +1 -1
  152. package/dist/composed/priority-indicator.js +34 -34
  153. package/dist/composed/priority-indicator.js.map +1 -1
  154. package/dist/composed/responsive-overlay.d.ts.map +1 -1
  155. package/dist/composed/responsive-overlay.js.map +1 -1
  156. package/dist/composed/rich-chat-input/attachment-strip.d.ts.map +1 -1
  157. package/dist/composed/rich-chat-input/audio-player.d.ts.map +1 -1
  158. package/dist/composed/rich-chat-input/audio-waveform.d.ts.map +1 -1
  159. package/dist/composed/rich-chat-input/chat-toolbar.d.ts.map +1 -1
  160. package/dist/composed/rich-chat-input/recording-overlay.d.ts.map +1 -1
  161. package/dist/composed/rich-chat-input/reply-banner.d.ts.map +1 -1
  162. package/dist/composed/rich-chat-input/schedule-send.d.ts.map +1 -1
  163. package/dist/composed/rich-chat-input.d.ts +6 -6
  164. package/dist/composed/rich-chat-input.d.ts.map +1 -1
  165. package/dist/composed/rich-chat-input.js +1 -1
  166. package/dist/composed/rich-text-editor.d.ts.map +1 -1
  167. package/dist/composed/rich-text-editor.js +25 -25
  168. package/dist/composed/rich-text-editor.js.map +1 -1
  169. package/dist/composed/schedule-view.d.ts.map +1 -1
  170. package/dist/composed/schedule-view.js +53 -53
  171. package/dist/composed/schedule-view.js.map +1 -1
  172. package/dist/composed/simple-tooltip.d.ts.map +1 -1
  173. package/dist/composed/simple-tooltip.js.map +1 -1
  174. package/dist/composed/status-badge.d.ts +1 -1
  175. package/dist/composed/status-badge.d.ts.map +1 -1
  176. package/dist/composed/status-badge.js +30 -30
  177. package/dist/composed/status-badge.js.map +1 -1
  178. package/dist/hooks/index.d.ts +3 -3
  179. package/dist/hooks/index.d.ts.map +1 -1
  180. package/dist/hooks/index.js +1 -1
  181. package/dist/hooks/use-color-mode.js.map +1 -1
  182. package/dist/hooks/use-toast.d.ts +1 -1
  183. package/dist/hooks/use-toast.d.ts.map +1 -1
  184. package/dist/motion/index.d.ts +2 -2
  185. package/dist/motion/index.d.ts.map +1 -1
  186. package/dist/motion/index.js.map +1 -1
  187. package/dist/motion/motion-provider.d.ts +1 -1
  188. package/dist/motion/motion-provider.d.ts.map +1 -1
  189. package/dist/motion/primitives-index.d.ts +1 -1
  190. package/dist/motion/primitives-index.d.ts.map +1 -1
  191. package/dist/motion/primitives-index.js +40 -40
  192. package/dist/motion/primitives-index.js.map +1 -1
  193. package/dist/motion/primitives.d.ts +1 -1
  194. package/dist/motion/primitives.d.ts.map +1 -1
  195. package/dist/shell/app-command-palette.d.ts +0 -8
  196. package/dist/shell/app-command-palette.d.ts.map +1 -1
  197. package/dist/shell/app-command-palette.js.map +1 -1
  198. package/dist/shell/bottom-navbar.d.ts +0 -6
  199. package/dist/shell/bottom-navbar.d.ts.map +1 -1
  200. package/dist/shell/bottom-navbar.js +62 -62
  201. package/dist/shell/bottom-navbar.js.map +1 -1
  202. package/dist/shell/index.d.ts +8 -8
  203. package/dist/shell/index.d.ts.map +1 -1
  204. package/dist/shell/index.js +5 -5
  205. package/dist/shell/link-context.d.ts +1 -1
  206. package/dist/shell/link-context.d.ts.map +1 -1
  207. package/dist/shell/notification-center.d.ts +0 -6
  208. package/dist/shell/notification-center.d.ts.map +1 -1
  209. package/dist/shell/notification-center.js +54 -54
  210. package/dist/shell/notification-center.js.map +1 -1
  211. package/dist/shell/notification-preferences.d.ts +0 -6
  212. package/dist/shell/notification-preferences.d.ts.map +1 -1
  213. package/dist/shell/notification-preferences.js +22 -22
  214. package/dist/shell/notification-preferences.js.map +1 -1
  215. package/dist/shell/sidebar.d.ts.map +1 -1
  216. package/dist/shell/sidebar.js.map +1 -1
  217. package/dist/shell/top-bar.d.ts +0 -6
  218. package/dist/shell/top-bar.d.ts.map +1 -1
  219. package/dist/shell/top-bar.js.map +1 -1
  220. package/dist/tailwind/index.cjs +15 -499
  221. package/dist/tailwind/preset.d.ts +21 -0
  222. package/dist/tailwind/preset.d.ts.map +1 -1
  223. package/dist/tailwind/preset.js +14 -489
  224. package/dist/tailwind/preset.js.map +1 -1
  225. package/dist/tokens/animations.css +17 -0
  226. package/dist/tokens/base.css +26 -0
  227. package/dist/tokens/index.css +22 -0
  228. package/dist/tokens/semantic.css +436 -464
  229. package/dist/tokens/shilp-sutra.css +41 -0
  230. package/dist/tokens/typography-semantic.css +48 -41
  231. package/dist/tokens/utilities.css +276 -0
  232. package/dist/tokens/variants.css +14 -0
  233. package/dist/ui/accordion.d.ts +2 -2
  234. package/dist/ui/accordion.d.ts.map +1 -1
  235. package/dist/ui/accordion.js +23 -23
  236. package/dist/ui/accordion.js.map +1 -1
  237. package/dist/ui/alert-dialog.d.ts +2 -2
  238. package/dist/ui/alert-dialog.d.ts.map +1 -1
  239. package/dist/ui/alert-dialog.js +37 -37
  240. package/dist/ui/alert-dialog.js.map +1 -1
  241. package/dist/ui/alert.d.ts.map +1 -1
  242. package/dist/ui/alert.js +36 -36
  243. package/dist/ui/alert.js.map +1 -1
  244. package/dist/ui/aspect-ratio.d.ts +1 -1
  245. package/dist/ui/aspect-ratio.d.ts.map +1 -1
  246. package/dist/ui/aspect-ratio.js.map +1 -1
  247. package/dist/ui/autocomplete.d.ts +1 -1
  248. package/dist/ui/autocomplete.d.ts.map +1 -1
  249. package/dist/ui/autocomplete.js +27 -27
  250. package/dist/ui/autocomplete.js.map +1 -1
  251. package/dist/ui/avatar.d.ts +2 -2
  252. package/dist/ui/avatar.d.ts.map +1 -1
  253. package/dist/ui/avatar.js +41 -41
  254. package/dist/ui/avatar.js.map +1 -1
  255. package/dist/ui/badge-group.d.ts.map +1 -1
  256. package/dist/ui/badge-indicator.d.ts.map +1 -1
  257. package/dist/ui/badge-indicator.js +10 -10
  258. package/dist/ui/badge-indicator.js.map +1 -1
  259. package/dist/ui/badge.d.ts +2 -2
  260. package/dist/ui/badge.d.ts.map +1 -1
  261. package/dist/ui/banner.d.ts.map +1 -1
  262. package/dist/ui/banner.js +28 -28
  263. package/dist/ui/banner.js.map +1 -1
  264. package/dist/ui/breadcrumb.d.ts +1 -1
  265. package/dist/ui/breadcrumb.d.ts.map +1 -1
  266. package/dist/ui/breadcrumb.js.map +1 -1
  267. package/dist/ui/button-group.d.ts.map +1 -1
  268. package/dist/ui/button-group.js.map +1 -1
  269. package/dist/ui/button-processing.d.ts.map +1 -1
  270. package/dist/ui/button-processing.js +15 -15
  271. package/dist/ui/button-processing.js.map +1 -1
  272. package/dist/ui/button.d.ts.map +1 -1
  273. package/dist/ui/button.js +84 -84
  274. package/dist/ui/button.js.map +1 -1
  275. package/dist/ui/card.d.ts +1 -1
  276. package/dist/ui/card.d.ts.map +1 -1
  277. package/dist/ui/card.js +28 -28
  278. package/dist/ui/card.js.map +1 -1
  279. package/dist/ui/charts/_internal/axes.d.ts +1 -1
  280. package/dist/ui/charts/_internal/axes.d.ts.map +1 -1
  281. package/dist/ui/charts/_internal/grid-lines.d.ts.map +1 -1
  282. package/dist/ui/charts/_internal/legend.d.ts.map +1 -1
  283. package/dist/ui/charts/_internal/tooltip.d.ts +1 -1
  284. package/dist/ui/charts/_internal/tooltip.d.ts.map +1 -1
  285. package/dist/ui/charts/area-chart.d.ts.map +1 -1
  286. package/dist/ui/charts/bar-chart.d.ts +1 -1
  287. package/dist/ui/charts/bar-chart.d.ts.map +1 -1
  288. package/dist/ui/charts/chart-container.d.ts.map +1 -1
  289. package/dist/ui/charts/gauge-chart.d.ts.map +1 -1
  290. package/dist/ui/charts/index.d.ts +5 -5
  291. package/dist/ui/charts/index.d.ts.map +1 -1
  292. package/dist/ui/charts/index.js +618 -618
  293. package/dist/ui/charts/index.js.map +1 -1
  294. package/dist/ui/charts/line-chart.d.ts.map +1 -1
  295. package/dist/ui/charts/pie-chart.d.ts.map +1 -1
  296. package/dist/ui/charts/radar-chart.d.ts.map +1 -1
  297. package/dist/ui/charts/sparkline.d.ts.map +1 -1
  298. package/dist/ui/chat/date-separator.d.ts.map +1 -1
  299. package/dist/ui/chat/index.d.ts +4 -4
  300. package/dist/ui/chat/index.d.ts.map +1 -1
  301. package/dist/ui/chat/index.js +1 -1
  302. package/dist/ui/chat/message-input.d.ts.map +1 -1
  303. package/dist/ui/chat/message-list.d.ts.map +1 -1
  304. package/dist/ui/chat/message.d.ts +1 -1
  305. package/dist/ui/chat/message.d.ts.map +1 -1
  306. package/dist/ui/chat/system-message.d.ts.map +1 -1
  307. package/dist/ui/chat/typing-indicator.d.ts.map +1 -1
  308. package/dist/ui/chat/unread-separator.d.ts.map +1 -1
  309. package/dist/ui/checkbox.d.ts.map +1 -1
  310. package/dist/ui/checkbox.js +18 -18
  311. package/dist/ui/checkbox.js.map +1 -1
  312. package/dist/ui/code.d.ts.map +1 -1
  313. package/dist/ui/code.js.map +1 -1
  314. package/dist/ui/collapsible.d.ts +2 -2
  315. package/dist/ui/collapsible.d.ts.map +1 -1
  316. package/dist/ui/collapsible.js +10 -10
  317. package/dist/ui/collapsible.js.map +1 -1
  318. package/dist/ui/color-input.d.ts.map +1 -1
  319. package/dist/ui/color-input.js +85 -85
  320. package/dist/ui/color-input.js.map +1 -1
  321. package/dist/ui/color-swatch.d.ts.map +1 -1
  322. package/dist/ui/color-swatch.js.map +1 -1
  323. package/dist/ui/combobox.d.ts.map +1 -1
  324. package/dist/ui/combobox.js +58 -58
  325. package/dist/ui/combobox.js.map +1 -1
  326. package/dist/ui/container.d.ts.map +1 -1
  327. package/dist/ui/container.js.map +1 -1
  328. package/dist/ui/context-menu.d.ts +2 -2
  329. package/dist/ui/context-menu.d.ts.map +1 -1
  330. package/dist/ui/context-menu.js +47 -47
  331. package/dist/ui/context-menu.js.map +1 -1
  332. package/dist/ui/data-table-body.d.ts +1 -1
  333. package/dist/ui/data-table-body.d.ts.map +1 -1
  334. package/dist/ui/data-table-body.js +43 -43
  335. package/dist/ui/data-table-body.js.map +1 -1
  336. package/dist/ui/data-table-bulk-actions.js.map +1 -1
  337. package/dist/ui/data-table-card.d.ts.map +1 -1
  338. package/dist/ui/data-table-card.js +7 -7
  339. package/dist/ui/data-table-card.js.map +1 -1
  340. package/dist/ui/data-table-context.d.ts +1 -1
  341. package/dist/ui/data-table-context.d.ts.map +1 -1
  342. package/dist/ui/data-table-context.js.map +1 -1
  343. package/dist/ui/data-table-header.js +38 -38
  344. package/dist/ui/data-table-header.js.map +1 -1
  345. package/dist/ui/data-table-pagination.js.map +1 -1
  346. package/dist/ui/data-table-toolbar.d.ts.map +1 -1
  347. package/dist/ui/data-table-toolbar.js.map +1 -1
  348. package/dist/ui/data-table.d.ts +2 -2
  349. package/dist/ui/data-table.d.ts.map +1 -1
  350. package/dist/ui/data-table.js +5 -5
  351. package/dist/ui/data-table.js.map +1 -1
  352. package/dist/ui/devalok-grain.js +8 -8
  353. package/dist/ui/devalok-grain.js.map +1 -1
  354. package/dist/ui/dialog.d.ts +2 -2
  355. package/dist/ui/dialog.d.ts.map +1 -1
  356. package/dist/ui/dialog.js +41 -41
  357. package/dist/ui/dialog.js.map +1 -1
  358. package/dist/ui/dropdown-menu.d.ts +2 -2
  359. package/dist/ui/dropdown-menu.d.ts.map +1 -1
  360. package/dist/ui/dropdown-menu.js +46 -46
  361. package/dist/ui/dropdown-menu.js.map +1 -1
  362. package/dist/ui/file-upload.d.ts.map +1 -1
  363. package/dist/ui/file-upload.js +54 -54
  364. package/dist/ui/file-upload.js.map +1 -1
  365. package/dist/ui/form.d.ts.map +1 -1
  366. package/dist/ui/form.js +17 -17
  367. package/dist/ui/form.js.map +1 -1
  368. package/dist/ui/hover-card.d.ts +2 -2
  369. package/dist/ui/hover-card.d.ts.map +1 -1
  370. package/dist/ui/hover-card.js +19 -19
  371. package/dist/ui/hover-card.js.map +1 -1
  372. package/dist/ui/icon-button.d.ts.map +1 -1
  373. package/dist/ui/icon-button.js.map +1 -1
  374. package/dist/ui/icon-group.d.ts.map +1 -1
  375. package/dist/ui/icon-group.js +4 -4
  376. package/dist/ui/icon-group.js.map +1 -1
  377. package/dist/ui/icon.d.ts.map +1 -1
  378. package/dist/ui/icon.js +32 -32
  379. package/dist/ui/icon.js.map +1 -1
  380. package/dist/ui/index.d.ts +57 -57
  381. package/dist/ui/index.d.ts.map +1 -1
  382. package/dist/ui/index.js +27 -27
  383. package/dist/ui/index.js.map +1 -1
  384. package/dist/ui/input-otp.d.ts +1 -1
  385. package/dist/ui/input-otp.d.ts.map +1 -1
  386. package/dist/ui/input-otp.js.map +1 -1
  387. package/dist/ui/input.d.ts.map +1 -1
  388. package/dist/ui/input.js +14 -14
  389. package/dist/ui/input.js.map +1 -1
  390. package/dist/ui/label.d.ts +1 -1
  391. package/dist/ui/label.d.ts.map +1 -1
  392. package/dist/ui/label.js.map +1 -1
  393. package/dist/ui/lib/bottom-sheet.d.ts.map +1 -1
  394. package/dist/ui/lib/index.d.ts +4 -4
  395. package/dist/ui/lib/index.d.ts.map +1 -1
  396. package/dist/ui/lib/slot.d.ts +1 -1
  397. package/dist/ui/lib/slot.d.ts.map +1 -1
  398. package/dist/ui/lib/utils.d.ts.map +1 -1
  399. package/dist/ui/lib/utils.js.map +1 -1
  400. package/dist/ui/link.d.ts.map +1 -1
  401. package/dist/ui/link.js.map +1 -1
  402. package/dist/ui/menubar.d.ts +2 -2
  403. package/dist/ui/menubar.d.ts.map +1 -1
  404. package/dist/ui/menubar.js +64 -64
  405. package/dist/ui/menubar.js.map +1 -1
  406. package/dist/ui/navigation-menu.d.ts +2 -2
  407. package/dist/ui/navigation-menu.d.ts.map +1 -1
  408. package/dist/ui/navigation-menu.js +72 -72
  409. package/dist/ui/navigation-menu.js.map +1 -1
  410. package/dist/ui/number-input.d.ts.map +1 -1
  411. package/dist/ui/number-input.js.map +1 -1
  412. package/dist/ui/pagination.d.ts +1 -1
  413. package/dist/ui/pagination.d.ts.map +1 -1
  414. package/dist/ui/pagination.js.map +1 -1
  415. package/dist/ui/popover.d.ts +2 -2
  416. package/dist/ui/popover.d.ts.map +1 -1
  417. package/dist/ui/progress-ring.d.ts +1 -1
  418. package/dist/ui/progress-ring.d.ts.map +1 -1
  419. package/dist/ui/progress-ring.js +33 -33
  420. package/dist/ui/progress-ring.js.map +1 -1
  421. package/dist/ui/progress.d.ts +2 -2
  422. package/dist/ui/progress.d.ts.map +1 -1
  423. package/dist/ui/progress.js +23 -23
  424. package/dist/ui/progress.js.map +1 -1
  425. package/dist/ui/radio.d.ts.map +1 -1
  426. package/dist/ui/radio.js +19 -19
  427. package/dist/ui/radio.js.map +1 -1
  428. package/dist/ui/search-input.d.ts.map +1 -1
  429. package/dist/ui/search-input.js +17 -17
  430. package/dist/ui/search-input.js.map +1 -1
  431. package/dist/ui/segmented-control.d.ts.map +1 -1
  432. package/dist/ui/segmented-control.js +19 -19
  433. package/dist/ui/segmented-control.js.map +1 -1
  434. package/dist/ui/select.d.ts +2 -2
  435. package/dist/ui/select.d.ts.map +1 -1
  436. package/dist/ui/select.js +68 -68
  437. package/dist/ui/select.js.map +1 -1
  438. package/dist/ui/separator.d.ts +1 -1
  439. package/dist/ui/separator.d.ts.map +1 -1
  440. package/dist/ui/separator.js.map +1 -1
  441. package/dist/ui/sheet.d.ts +2 -2
  442. package/dist/ui/sheet.d.ts.map +1 -1
  443. package/dist/ui/sheet.js +44 -44
  444. package/dist/ui/sheet.js.map +1 -1
  445. package/dist/ui/sidebar.d.ts +1 -1
  446. package/dist/ui/sidebar.d.ts.map +1 -1
  447. package/dist/ui/sidebar.js +156 -156
  448. package/dist/ui/sidebar.js.map +1 -1
  449. package/dist/ui/skeleton.d.ts +1 -1
  450. package/dist/ui/skeleton.d.ts.map +1 -1
  451. package/dist/ui/skeleton.js +2 -2
  452. package/dist/ui/skeleton.js.map +1 -1
  453. package/dist/ui/slider.d.ts +2 -2
  454. package/dist/ui/slider.d.ts.map +1 -1
  455. package/dist/ui/slider.js +5 -5
  456. package/dist/ui/slider.js.map +1 -1
  457. package/dist/ui/spinner.d.ts.map +1 -1
  458. package/dist/ui/spinner.js +21 -21
  459. package/dist/ui/spinner.js.map +1 -1
  460. package/dist/ui/split-button.d.ts +1 -1
  461. package/dist/ui/split-button.d.ts.map +1 -1
  462. package/dist/ui/split-button.js +28 -28
  463. package/dist/ui/split-button.js.map +1 -1
  464. package/dist/ui/stack.d.ts +1 -1
  465. package/dist/ui/stack.d.ts.map +1 -1
  466. package/dist/ui/stack.js.map +1 -1
  467. package/dist/ui/stat-card.d.ts.map +1 -1
  468. package/dist/ui/stat-card.js +73 -73
  469. package/dist/ui/stat-card.js.map +1 -1
  470. package/dist/ui/status-dot.d.ts.map +1 -1
  471. package/dist/ui/status-dot.js.map +1 -1
  472. package/dist/ui/stepper.d.ts +1 -1
  473. package/dist/ui/stepper.d.ts.map +1 -1
  474. package/dist/ui/stepper.js +48 -48
  475. package/dist/ui/stepper.js.map +1 -1
  476. package/dist/ui/switch.d.ts +1 -1
  477. package/dist/ui/switch.d.ts.map +1 -1
  478. package/dist/ui/switch.js +15 -15
  479. package/dist/ui/switch.js.map +1 -1
  480. package/dist/ui/table.d.ts +1 -1
  481. package/dist/ui/table.d.ts.map +1 -1
  482. package/dist/ui/table.js.map +1 -1
  483. package/dist/ui/tabs.d.ts +2 -2
  484. package/dist/ui/tabs.d.ts.map +1 -1
  485. package/dist/ui/tabs.js +52 -52
  486. package/dist/ui/tabs.js.map +1 -1
  487. package/dist/ui/text.d.ts +1 -1
  488. package/dist/ui/text.d.ts.map +1 -1
  489. package/dist/ui/text.js.map +1 -1
  490. package/dist/ui/textarea.d.ts.map +1 -1
  491. package/dist/ui/textarea.js +13 -13
  492. package/dist/ui/textarea.js.map +1 -1
  493. package/dist/ui/toast-registry.js.map +1 -1
  494. package/dist/ui/toast.d.ts +3 -3
  495. package/dist/ui/toast.d.ts.map +1 -1
  496. package/dist/ui/toast.js +164 -164
  497. package/dist/ui/toast.js.map +1 -1
  498. package/dist/ui/toaster.d.ts.map +1 -1
  499. package/dist/ui/toaster.js +6 -6
  500. package/dist/ui/toaster.js.map +1 -1
  501. package/dist/ui/toggle-group.d.ts +1 -1
  502. package/dist/ui/toggle-group.d.ts.map +1 -1
  503. package/dist/ui/toggle-group.js.map +1 -1
  504. package/dist/ui/toggle.d.ts +1 -1
  505. package/dist/ui/toggle.d.ts.map +1 -1
  506. package/dist/ui/toggle.js +14 -14
  507. package/dist/ui/toggle.js.map +1 -1
  508. package/dist/ui/tooltip.d.ts +2 -2
  509. package/dist/ui/tooltip.d.ts.map +1 -1
  510. package/dist/ui/tooltip.js +26 -26
  511. package/dist/ui/tooltip.js.map +1 -1
  512. package/dist/ui/tree-view/index.d.ts +2 -2
  513. package/dist/ui/tree-view/index.d.ts.map +1 -1
  514. package/dist/ui/tree-view/index.js +1 -1
  515. package/dist/ui/tree-view/tree-view.d.ts +1 -1
  516. package/dist/ui/tree-view/tree-view.d.ts.map +1 -1
  517. package/dist/ui/visually-hidden.d.ts.map +1 -1
  518. package/dist/ui/visually-hidden.js.map +1 -1
  519. package/docs/components/_header.md +96 -0
  520. package/docs/rollback.md +179 -0
  521. package/llms-full.txt +97 -1
  522. package/llms.txt +24 -2
  523. package/package.json +296 -277
  524. package/dist/_chunks/framer.js +0 -5604
  525. package/dist/_chunks/framer.js.map +0 -1
  526. package/dist/_chunks/rolldown-runtime.js +0 -21
  527. package/dist/_chunks/sonner.js +0 -616
  528. package/dist/_chunks/sonner.js.map +0 -1
  529. package/dist/_chunks/stat-row.js +0 -432
  530. package/dist/_chunks/stat-row.js.map +0 -1
@@ -1,147 +1,182 @@
1
+ /* ═══════════════════════════════════════════════════════════════════
2
+ SEMANTIC TOKENS (TW4 native)
3
+
4
+ This file expresses the design system's PUBLIC token surface as
5
+ Tailwind 4 `@theme` variables. Every `@theme` variable below maps
6
+ to an auto-generated utility class:
7
+
8
+ --color-accent-9 → bg-accent-9, text-accent-9, border-accent-9, ...
9
+ --spacing-ds-03 → p-ds-03, m-ds-03, gap-ds-03, w-ds-03, ...
10
+ --text-ds-md → text-ds-md
11
+ --leading-ds-relaxed → leading-ds-relaxed
12
+ --radius-ds-md → rounded-ds-md
13
+ --shadow-raised → shadow-raised
14
+ --ease-productive-standard → ease-productive-standard
15
+ --breakpoint-md → md:* variant
16
+ --animate-skeleton-shimmer → animate-skeleton-shimmer
17
+
18
+ Declared in @theme but utilities generated by explicit @utility blocks
19
+ in tokens/utilities.css (TW4 has no auto-namespace for these):
20
+ --z-popover → z-popover (via @utility)
21
+ --duration-moderate-01 → duration-moderate-01 (via @utility)
22
+
23
+ INTERNAL tokens (not utility-generating) stay in plain `:root { }`:
24
+ - --action-*-opacity (consumed by `opacity-action-*` via preset — moving
25
+ these to theme would pollute the `opacity-*` namespace)
26
+ - --shadow-color, --shadow-strength, --shadow-xs/sm/md/lg internals
27
+ - --size-*, --icon-*, --border-width-*, --border-focus-*
28
+ - --max-width*, --shadow-transition, --shadow-kbd
29
+ - --chart-* (consumed via var() in chart components, not utility)
30
+ - --gradient-brand-* (consumed via var() in DevalokGrain)
31
+ - --color-inset-glow*, --color-text-shadow, --color-overlay*
32
+ (consumed via var() in internal effect layers)
33
+
34
+ The `.dark { }` block below overrides theme variables for dark mode.
35
+ TW4 supports this cascade: an `@theme` variable re-declared under a
36
+ scoped selector is honored at runtime.
37
+ ═══════════════════════════════════════════════════════════════════ */
38
+
1
39
  :root {
2
40
  color-scheme: light;
41
+ }
3
42
 
4
- /* ═══════════════════════════════════════════════════════════
5
- TYPOGRAPHY
6
- ═══════════════════════════════════════════════════════════ */
43
+ /* ═══════════════════════════════════════════════════════════════════
44
+ PUBLIC TOKENS (utility-generating)
45
+ ═══════════════════════════════════════════════════════════════════ */
46
+ @theme {
47
+ /* ───────────────────────────────────────────────────────────
48
+ TYPOGRAPHY — font families, weights, sizes, leading, tracking
49
+ ─────────────────────────────────────────────────────────── */
7
50
 
8
- /* Font families — override these with next/font CSS variables */
51
+ /* Font families — consumers override with next/font CSS variables.
52
+ TW4 namespace: --font-* → font-* utility */
9
53
  --font-sans: "Inter", system-ui, sans-serif;
10
54
  --font-display: "Inter", system-ui, sans-serif;
11
55
  --font-body: "Inter", system-ui, sans-serif;
12
56
  --font-accent: Ranade, sans-serif;
13
57
  --font-mono: "SF Mono", "Fira Code", monospace;
14
58
 
15
- /* ── Font Weights ──────────────────────────── */
59
+ /* Font weights TW4 namespace: --font-weight-* → font-* (semibold, bold, etc.) */
16
60
  --font-weight-light: 300;
17
61
  --font-weight-regular: 400;
18
62
  --font-weight-medium: 500;
19
63
  --font-weight-semibold: 600;
20
64
  --font-weight-bold: 700;
21
65
 
22
- /* ── Type Scale (rem) ──────────────────────── */
23
- /* Base: 16px = 1rem (browser default) */
24
- --font-size-xs: 0.625rem;
25
- /* 10px */
26
- --font-size-sm: 0.75rem;
27
- /* 12px */
28
- --font-size-md: 0.875rem;
29
- /* 14px */
30
- --font-size-base: 1rem;
31
- /* 16px */
32
- --font-size-lg: 1.125rem;
33
- /* 18px */
34
- --font-size-xl: 1.25rem;
35
- /* 20px */
36
- --font-size-2xl: 1.5rem;
37
- /* 24px */
38
- --font-size-3xl: clamp(1.5rem, 1.125rem + 1.25vw, 2rem);
39
- /* 24px 32px fluid */
40
- --font-size-4xl: clamp(1.75rem, 1.25rem + 1.5vw, 2.25rem);
41
- /* 28px → 36px fluid */
42
- --font-size-5xl: clamp(2rem, 1.25rem + 2.5vw, 3rem);
43
- /* 32px → 48px fluid */
44
- --font-size-6xl: clamp(2.25rem, 1.5rem + 3vw, 3.75rem);
45
- /* 36px → 60px fluid */
46
-
47
- /* ── Line Heights ──────────────────────────── */
48
- --line-height-none: 1;
49
- --line-height-tight: 1.15;
50
- --line-height-snug: 1.25;
51
- --line-height-normal: 1.4;
52
- --line-height-relaxed: 1.5;
53
- --line-height-loose: 1.6;
54
-
55
- /* ── Letter Spacing ────────────────────────── */
56
- --tracking-tighter: -0.05em;
57
- --tracking-tight: -0.025em;
58
- --tracking-normal: 0;
59
- --tracking-wide: 0.025em;
60
- --tracking-wider: 0.05em;
61
- --tracking-widest: 0.1em;
62
-
63
- /* ═══════════════════════════════════════════════════════════
66
+ /* Type scale (rem). Base: 16px = 1rem.
67
+ TW4 namespace: --text-* text-* utility.
68
+ We use the `ds-` prefix to avoid collision with consumer's own
69
+ text sizes (TW4 default supplies text-xs, text-sm, etc.). */
70
+ --text-ds-xs: 0.625rem; /* 10px */
71
+ --text-ds-sm: 0.75rem; /* 12px */
72
+ --text-ds-md: 0.875rem; /* 14px */
73
+ --text-ds-base: 1rem; /* 16px */
74
+ --text-ds-lg: 1.125rem; /* 18px */
75
+ --text-ds-xl: 1.25rem; /* 20px */
76
+ --text-ds-2xl: 1.5rem; /* 24px */
77
+ --text-ds-3xl: clamp(1.5rem, 1.125rem + 1.25vw, 2rem); /* 24→32 fluid */
78
+ --text-ds-4xl: clamp(1.75rem, 1.25rem + 1.5vw, 2.25rem); /* 28→36 fluid */
79
+ --text-ds-5xl: clamp(2rem, 1.25rem + 2.5vw, 3rem); /* 32→48 fluid */
80
+ --text-ds-6xl: clamp(2.25rem, 1.5rem + 3vw, 3.75rem); /* 36→60 fluid */
81
+
82
+ /* Line heights — TW4 namespace: --leading-* leading-* utility.
83
+ `ds-` prefix to namespace our scale, not collide with TW4 defaults. */
84
+ --leading-ds-none: 1;
85
+ --leading-ds-tight: 1.15;
86
+ --leading-ds-snug: 1.25;
87
+ --leading-ds-normal: 1.4;
88
+ --leading-ds-relaxed: 1.5;
89
+ --leading-ds-loose: 1.6;
90
+
91
+ /* Letter spacing TW4 namespace: --tracking-* → tracking-* utility.
92
+ `ds-` prefix preserves TW4 defaults (tracking-tight, tracking-wide, etc.) */
93
+ --tracking-ds-tighter: -0.05em;
94
+ --tracking-ds-tight: -0.025em;
95
+ --tracking-ds-normal: 0;
96
+ --tracking-ds-wide: 0.025em;
97
+ --tracking-ds-wider: 0.05em;
98
+ --tracking-ds-widest: 0.1em;
99
+
100
+ /* ───────────────────────────────────────────────────────────
64
101
  ACCENT (swappable — consumers override these to rebrand)
65
- ═══════════════════════════════════════════════════════════ */
66
- --color-accent-1: var(--pink-1);
67
- --color-accent-2: var(--pink-2);
68
- --color-accent-3: var(--pink-3);
69
- --color-accent-4: var(--pink-4);
70
- --color-accent-5: var(--pink-5);
71
- --color-accent-6: var(--pink-6);
72
- --color-accent-7: var(--pink-7);
73
- --color-accent-8: var(--pink-8);
74
- --color-accent-9: var(--pink-9);
102
+ ─────────────────────────────────────────────────────────── */
103
+ --color-accent-1: var(--pink-1);
104
+ --color-accent-2: var(--pink-2);
105
+ --color-accent-3: var(--pink-3);
106
+ --color-accent-4: var(--pink-4);
107
+ --color-accent-5: var(--pink-5);
108
+ --color-accent-6: var(--pink-6);
109
+ --color-accent-7: var(--pink-7);
110
+ --color-accent-8: var(--pink-8);
111
+ --color-accent-9: var(--pink-9);
75
112
  --color-accent-10: var(--pink-10);
76
113
  --color-accent-11: var(--pink-11);
77
114
  --color-accent-12: var(--pink-12);
78
115
  --color-accent-fg: var(--neutral-1);
79
116
 
80
- /* ═══════════════════════════════════════════════════════════
117
+ /* ───────────────────────────────────────────────────────────
81
118
  SECONDARY ACCENT
82
- ═══════════════════════════════════════════════════════════ */
83
- --color-secondary-1: var(--purple-1);
84
- --color-secondary-2: var(--purple-2);
85
- --color-secondary-3: var(--purple-3);
86
- --color-secondary-4: var(--purple-4);
87
- --color-secondary-5: var(--purple-5);
88
- --color-secondary-6: var(--purple-6);
89
- --color-secondary-7: var(--purple-7);
90
- --color-secondary-8: var(--purple-8);
91
- --color-secondary-9: var(--purple-9);
119
+ ─────────────────────────────────────────────────────────── */
120
+ --color-secondary-1: var(--purple-1);
121
+ --color-secondary-2: var(--purple-2);
122
+ --color-secondary-3: var(--purple-3);
123
+ --color-secondary-4: var(--purple-4);
124
+ --color-secondary-5: var(--purple-5);
125
+ --color-secondary-6: var(--purple-6);
126
+ --color-secondary-7: var(--purple-7);
127
+ --color-secondary-8: var(--purple-8);
128
+ --color-secondary-9: var(--purple-9);
92
129
  --color-secondary-10: var(--purple-10);
93
130
  --color-secondary-11: var(--purple-11);
94
131
  --color-secondary-12: var(--purple-12);
95
132
  --color-secondary-fg: var(--neutral-1);
96
133
 
97
- /* ═══════════════════════════════════════════════════════════
134
+ /* ───────────────────────────────────────────────────────────
98
135
  SURFACE
99
- ═══════════════════════════════════════════════════════════ */
100
- /* Semantic surface tokens */
101
- --color-surface-base: var(--neutral-2); /* 0.97L — slightly grey page (Stripe/Linear pattern) */
102
- --color-surface-sunken: var(--color-surface-0);
103
- --color-surface-raised: var(--neutral-1); /* 0.99L — white cards float above the page */
104
- --color-surface-overlay: var(--neutral-1); /* same as raised — floating elements are white */
105
- --color-surface-raised-hover: var(--neutral-3);
136
+ ─────────────────────────────────────────────────────────── */
137
+ --color-surface-base: var(--neutral-2);
138
+ --color-surface-sunken: var(--color-surface-0);
139
+ --color-surface-raised: var(--neutral-1);
140
+ --color-surface-overlay: var(--neutral-1);
141
+ --color-surface-raised-hover: var(--neutral-3);
106
142
  --color-surface-raised-active: var(--neutral-4);
107
- --color-surface-inverted: var(--neutral-12);
108
- --color-surface-inverted-fg: var(--neutral-1);
109
- --color-surface-disabled: var(--neutral-2);
110
- --color-surface-fg-disabled: var(--neutral-8);
111
-
112
- --color-surface-fg: var(--neutral-12);
113
- --color-surface-fg-muted: var(--neutral-11);
114
- --color-surface-fg-subtle: var(--neutral-9); /* was neutral-8; darkened for WCAG AA 4.5:1 contrast */
115
- --color-surface-border: var(--neutral-6); /* was neutral-5; bumped for WCAG 1.4.11 non-text contrast */
116
- --color-surface-border-strong: var(--neutral-7); /* was neutral-6 */
117
- --color-surface-border-subtle: var(--neutral-5); /* was neutral-4 */
118
- --color-backdrop: oklch(0 0 0 / 0.4);
119
-
120
- /* ═══════════════════════════════════════════════════════════
143
+ --color-surface-inverted: var(--neutral-12);
144
+ --color-surface-inverted-fg: var(--neutral-1);
145
+ --color-surface-disabled: var(--neutral-2);
146
+ --color-surface-fg-disabled: var(--neutral-8);
147
+ --color-surface-fg: var(--neutral-12);
148
+ --color-surface-fg-muted: var(--neutral-11);
149
+ --color-surface-fg-subtle: var(--neutral-9); /* darkened for WCAG AA 4.5:1 */
150
+ --color-surface-border: var(--neutral-6); /* bumped for WCAG 1.4.11 */
151
+ --color-surface-border-strong: var(--neutral-7);
152
+ --color-surface-border-subtle: var(--neutral-5);
153
+ --color-backdrop: oklch(0 0 0 / 0.4);
154
+
155
+ /* ───────────────────────────────────────────────────────────
121
156
  STATUS — Error
122
- ═══════════════════════════════════════════════════════════ */
123
- --color-error-2: var(--red-2);
124
- --color-error-3: var(--red-3);
125
- --color-error-4: var(--red-4);
126
- --color-error-5: var(--red-5);
127
- --color-error-7: var(--red-7);
128
- --color-error-9: var(--red-9);
157
+ ─────────────────────────────────────────────────────────── */
158
+ --color-error-2: var(--red-2);
159
+ --color-error-3: var(--red-3);
160
+ --color-error-4: var(--red-4);
161
+ --color-error-5: var(--red-5);
162
+ --color-error-7: var(--red-7);
163
+ --color-error-9: var(--red-9);
129
164
  --color-error-10: var(--red-10);
130
165
  --color-error-11: var(--red-11);
131
166
  --color-error-fg: var(--neutral-1);
132
167
 
133
- /* ═══ Status — Success ═══ */
134
- --color-success-2: var(--green-2);
135
- --color-success-3: var(--green-3);
136
- --color-success-4: var(--green-4);
137
- --color-success-5: var(--green-5);
138
- --color-success-7: var(--green-7);
139
- --color-success-9: var(--green-9);
168
+ /* ─── Status — Success ─── */
169
+ --color-success-2: var(--green-2);
170
+ --color-success-3: var(--green-3);
171
+ --color-success-4: var(--green-4);
172
+ --color-success-5: var(--green-5);
173
+ --color-success-7: var(--green-7);
174
+ --color-success-9: var(--green-9);
140
175
  --color-success-10: var(--green-10);
141
176
  --color-success-11: var(--green-11);
142
177
  --color-success-fg: var(--neutral-1);
143
178
 
144
- /* ═══ Status — Warning (amber-bright lightness-corrected) ═══ */
179
+ /* ─── Status — Warning (amber-bright, lightness-corrected) ─── */
145
180
  --color-warning-2: var(--amber-bright-2);
146
181
  --color-warning-3: var(--amber-bright-3);
147
182
  --color-warning-4: var(--amber-bright-4);
@@ -152,186 +187,226 @@
152
187
  --color-warning-11: var(--amber-bright-11);
153
188
  --color-warning-fg: oklch(0.25 0.01 55);
154
189
 
155
- /* ═══ Status — Info ═══ */
156
- --color-info-2: var(--blue-2);
157
- --color-info-3: var(--blue-3);
158
- --color-info-4: var(--blue-4);
159
- --color-info-5: var(--blue-5);
160
- --color-info-7: var(--blue-7);
161
- --color-info-9: var(--blue-9);
190
+ /* ─── Status — Info ─── */
191
+ --color-info-2: var(--blue-2);
192
+ --color-info-3: var(--blue-3);
193
+ --color-info-4: var(--blue-4);
194
+ --color-info-5: var(--blue-5);
195
+ --color-info-7: var(--blue-7);
196
+ --color-info-9: var(--blue-9);
162
197
  --color-info-10: var(--blue-10);
163
198
  --color-info-11: var(--blue-11);
164
199
  --color-info-fg: var(--neutral-1);
165
200
 
166
- /* ═══════════════════════════════════════════════════════════
201
+ /* ───────────────────────────────────────────────────────────
167
202
  LINK COLORS
168
- ═══════════════════════════════════════════════════════════ */
169
- --color-link: var(--color-accent-11); /* default link text — high-contrast accent */
170
- --color-link-hover: var(--color-accent-12); /* hover — darker for clear feedback */
171
- --color-link-visited: var(--purple-11); /* visited — distinct from unvisited, uses secondary hue */
203
+ ─────────────────────────────────────────────────────────── */
204
+ --color-link: var(--color-accent-11);
205
+ --color-link-hover: var(--color-accent-12);
206
+ --color-link-visited: var(--purple-11);
172
207
 
173
- /* ═══════════════════════════════════════════════════════════
208
+ /* ───────────────────────────────────────────────────────────
174
209
  CATEGORY COLORS (Sapta Varna — step subsets)
175
- ═══════════════════════════════════════════════════════════ */
176
- --color-category-teal-3: var(--teal-3);
177
- --color-category-teal-7: var(--teal-7);
178
- --color-category-teal-9: var(--teal-9);
179
- --color-category-teal-11: var(--teal-11);
180
-
181
- --color-category-amber-3: var(--amber-3);
182
- --color-category-amber-7: var(--amber-7);
183
- --color-category-amber-9: var(--amber-9);
184
- --color-category-amber-11: var(--amber-11);
185
-
186
- --color-category-slate-3: var(--slate-3);
187
- --color-category-slate-7: var(--slate-7);
188
- --color-category-slate-9: var(--slate-9);
189
- --color-category-slate-11: var(--slate-11);
190
-
191
- --color-category-indigo-3: var(--indigo-3);
192
- --color-category-indigo-7: var(--indigo-7);
193
- --color-category-indigo-9: var(--indigo-9);
194
- --color-category-indigo-11: var(--indigo-11);
195
-
196
- --color-category-cyan-3: var(--cyan-3);
197
- --color-category-cyan-7: var(--cyan-7);
198
- --color-category-cyan-9: var(--cyan-9);
199
- --color-category-cyan-11: var(--cyan-11);
200
-
201
- --color-category-orange-3: var(--orange-3);
202
- --color-category-orange-7: var(--orange-7);
203
- --color-category-orange-9: var(--orange-9);
204
- --color-category-orange-11: var(--orange-11);
205
-
206
- --color-category-emerald-3: var(--emerald-3);
207
- --color-category-emerald-7: var(--emerald-7);
208
- --color-category-emerald-9: var(--emerald-9);
210
+ ─────────────────────────────────────────────────────────── */
211
+ --color-category-teal-3: var(--teal-3);
212
+ --color-category-teal-7: var(--teal-7);
213
+ --color-category-teal-9: var(--teal-9);
214
+ --color-category-teal-11: var(--teal-11);
215
+
216
+ --color-category-amber-3: var(--amber-3);
217
+ --color-category-amber-7: var(--amber-7);
218
+ --color-category-amber-9: var(--amber-9);
219
+ --color-category-amber-11: var(--amber-11);
220
+
221
+ --color-category-slate-3: var(--slate-3);
222
+ --color-category-slate-7: var(--slate-7);
223
+ --color-category-slate-9: var(--slate-9);
224
+ --color-category-slate-11: var(--slate-11);
225
+
226
+ --color-category-indigo-3: var(--indigo-3);
227
+ --color-category-indigo-7: var(--indigo-7);
228
+ --color-category-indigo-9: var(--indigo-9);
229
+ --color-category-indigo-11: var(--indigo-11);
230
+
231
+ --color-category-cyan-3: var(--cyan-3);
232
+ --color-category-cyan-7: var(--cyan-7);
233
+ --color-category-cyan-9: var(--cyan-9);
234
+ --color-category-cyan-11: var(--cyan-11);
235
+
236
+ --color-category-orange-3: var(--orange-3);
237
+ --color-category-orange-7: var(--orange-7);
238
+ --color-category-orange-9: var(--orange-9);
239
+ --color-category-orange-11: var(--orange-11);
240
+
241
+ --color-category-emerald-3: var(--emerald-3);
242
+ --color-category-emerald-7: var(--emerald-7);
243
+ --color-category-emerald-9: var(--emerald-9);
209
244
  --color-category-emerald-11: var(--emerald-11);
210
245
 
211
- /* ═══════════════════════════════════════════════════════════
246
+ /* ───────────────────────────────────────────────────────────
212
247
  SKELETON
213
- ═══════════════════════════════════════════════════════════ */
214
- --color-skeleton-base: var(--neutral-3);
248
+ ─────────────────────────────────────────────────────────── */
249
+ --color-skeleton-base: var(--neutral-3);
215
250
  --color-skeleton-shimmer: var(--neutral-2);
216
251
 
217
- /* ═══════════════════════════════════════════════════════════
218
- UTILITY TOKENS (not step-based, but semantically needed)
219
- ═══════════════════════════════════════════════════════════ */
220
- --color-overlay: oklch(0 0 0 / 0.50);
221
- --color-disabled: var(--neutral-5);
222
-
223
- /* ═══════════════════════════════════════════════════════════
224
- ACTION STATE OPACITIES
225
- ═══════════════════════════════════════════════════════════ */
226
- --action-hover-opacity: 0.04;
227
- --action-selected-opacity: 0.08;
228
- --action-disabled-opacity: 0.38;
229
- --action-focus-opacity: 0.12;
230
- --action-active-opacity: 0.12;
231
-
232
- /* ═══════════════════════════════════════════════════════════
252
+ /* ───────────────────────────────────────────────────────────
233
253
  SPACING
234
- ═══════════════════════════════════════════════════════════ */
235
- --spacing-01: 2px;
236
- --spacing-02: 4px;
237
- --spacing-02b: 6px;
238
- --spacing-03: 8px;
239
- --spacing-04: 12px;
240
- --spacing-05: 16px;
241
- --spacing-05b: 20px;
242
- --spacing-06: 24px;
243
- --spacing-06b: 28px;
244
- --spacing-07: 32px;
245
- --spacing-08: 40px;
246
- --spacing-09: 48px;
247
- --spacing-10: 64px;
248
- --spacing-11: 80px;
249
- --spacing-12: 96px;
250
- --spacing-13: 160px;
251
-
252
- /* ── Layout Spacing (semantic page/section-level) ──
253
- These reference the base spacing scale but provide responsive overrides
254
- via @media queries below. Components like Container use these instead
255
- of hardcoding a single spacing token. */
256
- --spacing-page-x: var(--spacing-05); /* 16px — horizontal page padding */
257
- --spacing-page-y: var(--spacing-07); /* 32px — vertical page padding */
258
- --spacing-section-gap: var(--spacing-08); /* 40px — between major page sections */
259
- --spacing-card-gap: var(--spacing-05); /* 16px — between cards in a grid */
260
- --spacing-stack-gap: var(--spacing-06); /* 24px — between stacked content blocks */
261
-
262
- /* ═══════════════════════════════════════════════════════════
254
+ ─────────────────────────────────────────────────────────── */
255
+ --spacing-ds-01: 2px;
256
+ --spacing-ds-02: 4px;
257
+ --spacing-ds-02b: 6px;
258
+ --spacing-ds-03: 8px;
259
+ --spacing-ds-04: 12px;
260
+ --spacing-ds-05: 16px;
261
+ --spacing-ds-05b: 20px;
262
+ --spacing-ds-06: 24px;
263
+ --spacing-ds-06b: 28px;
264
+ --spacing-ds-07: 32px;
265
+ --spacing-ds-08: 40px;
266
+ --spacing-ds-09: 48px;
267
+ --spacing-ds-10: 64px;
268
+ --spacing-ds-11: 80px;
269
+ --spacing-ds-12: 96px;
270
+ --spacing-ds-13: 160px;
271
+
272
+ /* Layout spacing (responsive via @media in :root below) */
273
+ --spacing-ds-page-x: var(--spacing-ds-05);
274
+ --spacing-ds-page-y: var(--spacing-ds-07);
275
+ --spacing-ds-section-gap: var(--spacing-ds-08);
276
+ --spacing-ds-card-gap: var(--spacing-ds-05);
277
+ --spacing-ds-stack-gap: var(--spacing-ds-06);
278
+
279
+ /* ───────────────────────────────────────────────────────────
263
280
  RADIUS
264
- ═══════════════════════════════════════════════════════════ */
265
- --radius-none: 0;
266
- --radius-sm: 2px;
267
- --radius-default: 4px;
268
- --radius-md: 6px;
269
- --radius-lg: 10px;
270
- --radius-xl: 16px;
271
- --radius-2xl: 24px;
272
- --radius-full: 9999px;
273
-
274
- /* ═══════════════════════════════════════════════════════════
275
- MOTION
276
- ═══════════════════════════════════════════════════════════ */
277
-
278
- /* ── Motion: Durations (Carbon-inspired scale) ── */
279
- --duration-instant: 0ms;
280
- --duration-fast-01: 70ms;
281
- --duration-fast-02: 110ms;
282
- --duration-moderate-01: 150ms;
283
- --duration-moderate-01b: 200ms; /* accordion, collapsible, layout transitions — most-used gap */
284
- --duration-moderate-02: 240ms;
285
- --duration-slow-01: 400ms;
286
- --duration-slow-02: 700ms;
287
-
288
- /* ── Motion: Easing — Productive (task-focused, utilitarian) ── */
281
+ ─────────────────────────────────────────────────────────── */
282
+ --radius: 4px; /* bare `rounded` class — TW4 default namespace */
283
+ --radius-ds-none: 0;
284
+ --radius-ds-sm: 2px;
285
+ --radius-ds-md: 6px;
286
+ --radius-ds-lg: 10px;
287
+ --radius-ds-xl: 16px;
288
+ --radius-ds-2xl: 24px;
289
+ --radius-ds-full: 9999px;
290
+
291
+ /* ───────────────────────────────────────────────────────────
292
+ DURATION (Carbon-inspired scale)
293
+ ─────────────────────────────────────────────────────────── */
294
+ --duration-instant: 0ms;
295
+ --duration-fast-01: 70ms;
296
+ --duration-fast-02: 110ms;
297
+ --duration-moderate-01: 150ms;
298
+ --duration-moderate-01b: 200ms;
299
+ --duration-moderate-02: 240ms;
300
+ --duration-slow-01: 400ms;
301
+ --duration-slow-02: 700ms;
302
+
303
+ /* ───────────────────────────────────────────────────────────
304
+ EASING
305
+ ─────────────────────────────────────────────────────────── */
306
+ /* Productive (task-focused, utilitarian) */
289
307
  --ease-productive-standard: cubic-bezier(0.2, 0, 0.38, 0.9);
290
308
  --ease-productive-entrance: cubic-bezier(0, 0, 0.38, 0.9);
291
- --ease-productive-exit: cubic-bezier(0.2, 0, 1, 0.9);
292
-
293
- /* ── Motion: Easing — Expressive (attention-grabbing, dramatic) ── */
309
+ --ease-productive-exit: cubic-bezier(0.2, 0, 1, 0.9);
310
+ /* Expressive (attention-grabbing, dramatic) */
294
311
  --ease-expressive-standard: cubic-bezier(0.4, 0.14, 0.3, 1);
295
312
  --ease-expressive-entrance: cubic-bezier(0, 0, 0.3, 1);
296
- --ease-expressive-exit: cubic-bezier(0.4, 0.14, 1, 1);
297
-
298
- /* ── Motion: Easing — Utility ── */
313
+ --ease-expressive-exit: cubic-bezier(0.4, 0.14, 1, 1);
314
+ /* Utility */
299
315
  --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
300
316
  --ease-linear: linear;
301
317
 
302
- /* ═══════════════════════════════════════════════════════════
303
- SHADOWS
304
- ═══════════════════════════════════════════════════════════ */
318
+ /* ───────────────────────────────────────────────────────────
319
+ SHADOW (semantic elevation — public API)
320
+ ─────────────────────────────────────────────────────────── */
321
+ --shadow-raised: var(--shadow-xs-internal);
322
+ --shadow-raised-hover: var(--shadow-sm-internal);
323
+ --shadow-floating: var(--shadow-md-internal);
324
+ --shadow-overlay: var(--shadow-lg-internal);
305
325
 
306
- /* Shadow color: cool blue tint for natural depth */
307
- --shadow-color: 0.15 0.015 260;
308
- --shadow-strength: 1;
326
+ /* Effect shadows */
327
+ --shadow-brand: 0 2px 8px oklch(0.55 0.19 360 / 0.20), 0 6px 20px oklch(0.55 0.19 360 / 0.15);
328
+ --shadow-glow: 0 0 0 1.5px oklch(0.55 0.19 360 / 0.20), 0 0 7px oklch(0.55 0.19 360 / 0.12);
329
+ --shadow-inset: inset 0 1px 2px oklch(var(--shadow-color) / calc(0.08 * var(--shadow-strength))), inset 0 2px 5px oklch(var(--shadow-color) / calc(0.06 * var(--shadow-strength)));
330
+ --shadow-ring-sm: 0 0 0 1px var(--color-surface-border);
331
+ --shadow-ring: 0 0 0 2px oklch(0.55 0.19 360 / 0.30);
309
332
 
310
- /* Shadow transition */
311
- --shadow-transition: box-shadow var(--duration-fast-02) var(--ease-productive-standard);
333
+ --shadow-raised-inner: inset 0 1px 0 oklch(1 0 0 / 0.10), inset 0 -1px 0 oklch(0 0 0 / 0.06);
334
+ --shadow-pressed: 0 0 0 1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength)));
335
+ --shadow-success: 0 2px 8px oklch(0.55 0.14 145 / 0.20), 0 6px 20px oklch(0.55 0.14 145 / 0.15);
336
+ --shadow-error: 0 2px 8px oklch(0.55 0.18 25 / 0.20), 0 6px 20px oklch(0.55 0.18 25 / 0.15);
337
+ --shadow-warning: 0 2px 8px oklch(0.78 0.16 65 / 0.22), 0 6px 20px oklch(0.78 0.16 65 / 0.15);
312
338
 
313
339
  /* Keyboard shortcut badge shadow */
314
340
  --shadow-kbd: inset 0 -1px 0 oklch(0 0 0 / 0.1);
315
341
 
316
- /* Shadow primitives (internal) */
317
- --shadow-xs:
342
+ /* ───────────────────────────────────────────────────────────
343
+ Z-INDEX
344
+ TW4 does NOT auto-generate utilities from --z-*. These vars
345
+ exist as named CSS custom properties; the z-base/z-raised/etc.
346
+ utilities are declared explicitly in tokens/utilities.css via
347
+ @utility blocks that reference these names.
348
+ ─────────────────────────────────────────────────────────── */
349
+ --z-base: 0;
350
+ --z-raised: 10;
351
+ --z-dropdown: 1000;
352
+ --z-sticky: 1100;
353
+ --z-overlay: 1200;
354
+ --z-modal: 1300;
355
+ --z-popover: 1400;
356
+ --z-toast: 1500;
357
+ --z-tooltip: 1600;
358
+
359
+ /* ───────────────────────────────────────────────────────────
360
+ BREAKPOINTS (TW4 namespace: --breakpoint-* → variant)
361
+ ─────────────────────────────────────────────────────────── */
362
+ --breakpoint-sm: 640px;
363
+ --breakpoint-md: 768px;
364
+ --breakpoint-lg: 1024px;
365
+ --breakpoint-xl: 1280px;
366
+ --breakpoint-2xl: 1536px;
367
+ }
368
+
369
+ /* ═══════════════════════════════════════════════════════════════════
370
+ INTERNAL / META TOKENS (not utility-generating, consumed via var())
371
+ ═══════════════════════════════════════════════════════════════════ */
372
+ :root {
373
+ /* Action state opacities (reflected by preset `opacity-action-*` util) */
374
+ --action-hover-opacity: 0.04;
375
+ --action-selected-opacity: 0.08;
376
+ --action-disabled-opacity: 0.38;
377
+ --action-focus-opacity: 0.12;
378
+ --action-active-opacity: 0.12;
379
+
380
+ /* Overlay / disabled */
381
+ --color-overlay: oklch(0 0 0 / 0.50);
382
+ --color-disabled: var(--neutral-5);
383
+
384
+ /* Shadow internals — the `--shadow-xs-internal` etc. are composed into
385
+ the public `--shadow-raised`/`--shadow-floating` @theme values above.
386
+ They depend on `--shadow-color` (a runtime var) so they cannot live
387
+ in @theme (TW4 may statically-inline theme values). */
388
+ --shadow-color: 0.15 0.015 260; /* cool blue tint */
389
+ --shadow-strength: 1;
390
+ --shadow-transition: box-shadow var(--duration-fast-02) var(--ease-productive-standard);
391
+
392
+ --shadow-xs-internal:
318
393
  0 0 0 1px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
319
394
  0 0.5px 1px -0.5px oklch(var(--shadow-color) / calc(0.045 * var(--shadow-strength))),
320
395
  0 1.5px 3px -1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
321
396
  0 3px 7px -2px oklch(var(--shadow-color) / calc(0.03 * var(--shadow-strength)));
322
- --shadow-sm:
397
+ --shadow-sm-internal:
323
398
  0 0 0 1px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
324
399
  0 0.5px 1px -0.5px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
325
400
  0 2px 4px -1.5px oklch(var(--shadow-color) / calc(0.045 * var(--shadow-strength))),
326
401
  0 6px 12px -3px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
327
402
  0 14px 28px -8px oklch(var(--shadow-color) / calc(0.025 * var(--shadow-strength)));
328
- --shadow-md:
403
+ --shadow-md-internal:
329
404
  0 0 0 1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
330
405
  0 1px 2px -1px oklch(var(--shadow-color) / calc(0.05 * var(--shadow-strength))),
331
406
  0 4px 8px -2px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
332
407
  0 10px 20px -5px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
333
408
  0 24px 44px -12px oklch(var(--shadow-color) / calc(0.025 * var(--shadow-strength)));
334
- --shadow-lg:
409
+ --shadow-lg-internal:
335
410
  0 0 0 1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
336
411
  0 1px 2px -1px oklch(var(--shadow-color) / calc(0.05 * var(--shadow-strength))),
337
412
  0 3px 6px -2px oklch(var(--shadow-color) / calc(0.045 * var(--shadow-strength))),
@@ -339,36 +414,14 @@
339
414
  0 18px 34px -8px oklch(var(--shadow-color) / calc(0.03 * var(--shadow-strength))),
340
415
  0 40px 64px -16px oklch(var(--shadow-color) / calc(0.025 * var(--shadow-strength)));
341
416
 
342
- /* Semantic elevation shadows (public API) */
343
- --shadow-raised: var(--shadow-xs);
344
- --shadow-raised-hover: var(--shadow-sm);
345
- --shadow-floating: var(--shadow-md);
346
- --shadow-overlay: var(--shadow-lg);
347
-
348
- /* Effect shadows */
349
- --shadow-brand: 0 2px 8px oklch(0.55 0.19 360 / 0.20), 0 6px 20px oklch(0.55 0.19 360 / 0.15);
350
- --shadow-glow: 0 0 0 1.5px oklch(0.55 0.19 360 / 0.20), 0 0 7px oklch(0.55 0.19 360 / 0.12);
351
- --shadow-inset: inset 0 1px 2px oklch(var(--shadow-color) / calc(0.08 * var(--shadow-strength))), inset 0 2px 5px oklch(var(--shadow-color) / calc(0.06 * var(--shadow-strength)));
352
- --shadow-ring-sm: 0 0 0 1px var(--color-surface-border);
353
- --shadow-ring: 0 0 0 2px oklch(0.55 0.19 360 / 0.30);
354
-
355
- /* Status & state effect shadows */
356
- --shadow-raised-inner: inset 0 1px 0 oklch(1 0 0 / 0.10), inset 0 -1px 0 oklch(0 0 0 / 0.06);
357
- --shadow-pressed: 0 0 0 1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength)));
358
- --shadow-success: 0 2px 8px oklch(0.55 0.14 145 / 0.20), 0 6px 20px oklch(0.55 0.14 145 / 0.15);
359
- --shadow-error: 0 2px 8px oklch(0.55 0.18 25 / 0.20), 0 6px 20px oklch(0.55 0.18 25 / 0.15);
360
- --shadow-warning: 0 2px 8px oklch(0.78 0.16 65 / 0.22), 0 6px 20px oklch(0.78 0.16 65 / 0.15);
361
-
362
- /* ═══════════════════════════════════════════════════════════
363
- SIZES
364
- ═══════════════════════════════════════════════════════════ */
365
- --size-xs: 24px;
417
+ /* Component sizes (consumed via w-ds-/h-ds- manual preset mappings) */
418
+ --size-xs: 24px;
366
419
  --size-xs-plus: 28px;
367
- --size-sm: 32px;
420
+ --size-sm: 32px;
368
421
  --size-sm-plus: 36px;
369
- --size-md: 40px;
370
- --size-lg: 48px;
371
- --size-xl: 56px;
422
+ --size-md: 40px;
423
+ --size-lg: 48px;
424
+ --size-xl: 56px;
372
425
  --icon-sm: 16px;
373
426
  --icon-md: 20px;
374
427
  --icon-lg: 24px;
@@ -376,42 +429,18 @@
376
429
  --border-width-sm: 1px;
377
430
  --border-width-md: 2px;
378
431
  --border-width-lg: 3px;
379
- --border-focus-width: 2px;
432
+ --border-focus-width: 2px;
380
433
  --border-focus-offset: 2px;
381
434
 
382
- /* ═══════════════════════════════════════════════════════════
383
- Z-INDEX
384
- ═══════════════════════════════════════════════════════════ */
385
- --z-base: 0;
386
- --z-raised: 10;
387
- --z-dropdown: 1000;
388
- --z-sticky: 1100;
389
- --z-overlay: 1200;
390
- --z-modal: 1300;
391
- --z-popover: 1400;
392
- --z-toast: 1500;
393
- --z-tooltip: 1600;
394
-
395
- /* ── Layout ─────────────────────────────────── */
396
- --max-width: 1280px;
435
+ /* Layout */
436
+ --max-width: 1280px;
397
437
  --max-width-body: 960px;
398
438
 
399
- /* ── Breakpoints ───────────────────────────── */
400
- --breakpoint-sm: 640px;
401
- --breakpoint-md: 768px;
402
- --breakpoint-lg: 1024px;
403
- --breakpoint-xl: 1280px;
404
- --breakpoint-2xl: 1536px;
405
-
406
- /* ═══════════════════════════════════════════════════════════
407
- GRADIENTS
408
- ═══════════════════════════════════════════════════════════ */
439
+ /* Gradients (consumed via var() in DevalokGrain, not as utilities) */
409
440
  --gradient-brand-light: linear-gradient(135deg, var(--pink-7), var(--purple-9));
410
- --gradient-brand-dark: linear-gradient(135deg, var(--pink-8), var(--purple-10));
441
+ --gradient-brand-dark: linear-gradient(135deg, var(--pink-8), var(--purple-10));
411
442
 
412
- /* ═══════════════════════════════════════════════════════════
413
- CHART PALETTE
414
- ═══════════════════════════════════════════════════════════ */
443
+ /* Chart palette (consumed via var() in chart components) */
415
444
  --chart-1: var(--pink-9);
416
445
  --chart-2: var(--purple-9);
417
446
  --chart-3: var(--blue-9);
@@ -421,31 +450,30 @@
421
450
  --chart-7: var(--cyan-9);
422
451
  --chart-8: var(--orange-9);
423
452
 
424
- /* ═══════════════════════════════════════════════════════════
425
- INSET GLOW & OVERLAY
426
- ═══════════════════════════════════════════════════════════ */
427
- --color-inset-glow: oklch(1 0 0 / 0.25);
428
- --color-inset-glow-strong: oklch(1 0 0 / 0.16);
429
- --color-inset-glow-subtle: oklch(1 0 0 / 0.10);
453
+ /* Inset glow & overlay (internal effect layers) */
454
+ --color-inset-glow: oklch(1 0 0 / 0.25);
455
+ --color-inset-glow-strong: oklch(1 0 0 / 0.16);
456
+ --color-inset-glow-subtle: oklch(1 0 0 / 0.10);
430
457
  --color-surface-overlay-light: oklch(1 0 0 / 0.20);
431
- --color-surface-overlay-dark: oklch(0 0 0 / 0.12);
432
- --color-text-shadow: oklch(0 0 0 / 0.15);
458
+ --color-surface-overlay-dark: oklch(0 0 0 / 0.12);
459
+ --color-text-shadow: oklch(0 0 0 / 0.15);
433
460
  }
434
461
 
435
- /* ═══════════════════════════════════════════════════════════
462
+ /* ═══════════════════════════════════════════════════════════════════
436
463
  DARK MODE
437
- ═══════════════════════════════════════════════════════════ */
464
+ TW4 supports overriding @theme variables in scoped selectors.
465
+ ═══════════════════════════════════════════════════════════════════ */
438
466
  .dark {
439
467
  color-scheme: dark;
440
468
 
441
- /* Foreground on solid accent/status backgrounds — pure white on brand colors */
442
- --color-accent-fg: var(--neutral-0);
469
+ /* Foreground on solid accent/status backgrounds — pure white in dark mode */
470
+ --color-accent-fg: var(--neutral-0);
443
471
  --color-secondary-fg: var(--neutral-0);
444
- --color-error-fg: var(--neutral-0);
445
- --color-success-fg: var(--neutral-0);
446
- --color-info-fg: var(--neutral-0);
472
+ --color-error-fg: var(--neutral-0);
473
+ --color-success-fg: var(--neutral-0);
474
+ --color-info-fg: var(--neutral-0);
447
475
 
448
- /* Warning: amber-bright dark ramp for dark mode */
476
+ /* Warning: amber-bright dark ramp */
449
477
  --color-warning-2: var(--amber-bright-2);
450
478
  --color-warning-3: var(--amber-bright-3);
451
479
  --color-warning-4: var(--amber-bright-4);
@@ -456,50 +484,44 @@
456
484
  --color-warning-11: var(--amber-bright-11);
457
485
  --color-warning-fg: var(--neutral-0);
458
486
 
459
- /* Link colors accent-11/12 already flip via semantic layer;
460
- visited uses purple-11 which also flips via primitives dark block */
461
-
462
- /* Dark mode borders need lower contrast — bright borders look harsh.
463
- Drop to step 3/4 for subtle resting borders that don't overpower surfaces */
464
- /* Dark mode: restore base/raised to original direction (raised = lighter than base) */
465
- --color-surface-base: var(--neutral-1); /* 0.11L — dark page */
466
- --color-surface-raised: var(--neutral-2); /* 0.17L lighter cards */
467
-
468
- --color-surface-border: var(--neutral-4); /* was neutral-3; bumped for contrast */
469
- --color-surface-border-strong: var(--neutral-5); /* was neutral-4 */
470
- --color-surface-overlay: oklch(0.13 0.0002 350);
471
- --color-surface-border-subtle: var(--neutral-3); /* was neutral-2 = same as raised = invisible (1:1) */
472
- --color-backdrop: oklch(0 0 0 / 0.6);
487
+ /* Surfacedark page, lighter cards */
488
+ --color-surface-base: var(--neutral-1); /* 0.11L */
489
+ --color-surface-raised: var(--neutral-2); /* 0.17L */
490
+ --color-surface-border: var(--neutral-4);
491
+ --color-surface-border-strong: var(--neutral-5);
492
+ --color-surface-overlay: oklch(0.13 0.0002 350);
493
+ --color-surface-border-subtle: var(--neutral-3);
494
+ --color-backdrop: oklch(0 0 0 / 0.6);
473
495
 
474
496
  /* Overlay */
475
497
  --color-overlay: oklch(0 0 0 / 0.70);
476
498
 
477
- /* Action State Opacities (higher in dark mode) */
478
- --action-hover-opacity: 0.08;
499
+ /* Action state opacities (higher in dark mode) */
500
+ --action-hover-opacity: 0.08;
479
501
  --action-selected-opacity: 0.12;
480
502
  --action-disabled-opacity: 0.38;
481
- --action-focus-opacity: 0.12;
482
- --action-active-opacity: 0.16;
503
+ --action-focus-opacity: 0.12;
504
+ --action-active-opacity: 0.16;
483
505
 
484
506
  /* Skeleton */
485
- --color-skeleton-base: var(--neutral-4);
507
+ --color-skeleton-base: var(--neutral-4);
486
508
  --color-skeleton-shimmer: var(--neutral-3);
487
509
 
488
510
  /* Shadows (heavier in dark mode) */
489
511
  --shadow-strength: 2.5;
490
- --shadow-brand: 0 2px 8px oklch(0.55 0.19 360 / 0.30), 0 6px 20px oklch(0.55 0.19 360 / 0.20);
491
- --shadow-glow: 0 0 0 1.5px oklch(0.55 0.19 360 / 0.35), 0 0 10px oklch(0.55 0.19 360 / 0.20);
492
- --shadow-ring: 0 0 0 2px oklch(0.55 0.19 360 / 0.45);
512
+ --shadow-brand: 0 2px 8px oklch(0.55 0.19 360 / 0.30), 0 6px 20px oklch(0.55 0.19 360 / 0.20);
513
+ --shadow-glow: 0 0 0 1.5px oklch(0.55 0.19 360 / 0.35), 0 0 10px oklch(0.55 0.19 360 / 0.20);
514
+ --shadow-ring: 0 0 0 2px oklch(0.55 0.19 360 / 0.45);
493
515
  --shadow-raised-inner: inset 0 1px 0 oklch(1 0 0 / 0.06), inset 0 -1px 0 oklch(0 0 0 / 0.12);
494
- --shadow-success: 0 2px 8px oklch(0.6 0.14 145 / 0.30), 0 6px 20px oklch(0.6 0.14 145 / 0.20);
495
- --shadow-error: 0 2px 8px oklch(0.6 0.18 25 / 0.30), 0 6px 20px oklch(0.6 0.18 25 / 0.20);
496
- --shadow-warning: 0 2px 8px oklch(0.78 0.16 65 / 0.30), 0 6px 20px oklch(0.78 0.16 65 / 0.20);
516
+ --shadow-success: 0 2px 8px oklch(0.6 0.14 145 / 0.30), 0 6px 20px oklch(0.6 0.14 145 / 0.20);
517
+ --shadow-error: 0 2px 8px oklch(0.6 0.18 25 / 0.30), 0 6px 20px oklch(0.6 0.18 25 / 0.20);
518
+ --shadow-warning: 0 2px 8px oklch(0.78 0.16 65 / 0.30), 0 6px 20px oklch(0.78 0.16 65 / 0.20);
497
519
 
498
520
  /* Gradients */
499
521
  --gradient-brand-light: linear-gradient(135deg, var(--pink-9), var(--purple-9));
500
- --gradient-brand-dark: linear-gradient(135deg, var(--pink-10), var(--purple-10));
522
+ --gradient-brand-dark: linear-gradient(135deg, var(--pink-10), var(--purple-10));
501
523
 
502
- /* Chart Palette (dark — use step 9 which is brighter in dark) */
524
+ /* Chart palette (dark — step 9 brighter) */
503
525
  --chart-1: var(--pink-9);
504
526
  --chart-2: var(--purple-9);
505
527
  --chart-3: var(--blue-9);
@@ -509,68 +531,47 @@
509
531
  --chart-7: var(--cyan-9);
510
532
  --chart-8: var(--orange-9);
511
533
 
512
- /* Inset Glow & Overlay */
513
- --color-inset-glow: oklch(1 0 0 / 0.10);
514
- --color-inset-glow-strong: oklch(1 0 0 / 0.08);
515
- --color-inset-glow-subtle: oklch(1 0 0 / 0.05);
534
+ /* Inset glow & overlay */
535
+ --color-inset-glow: oklch(1 0 0 / 0.10);
536
+ --color-inset-glow-strong: oklch(1 0 0 / 0.08);
537
+ --color-inset-glow-subtle: oklch(1 0 0 / 0.05);
516
538
  --color-surface-overlay-light: oklch(1 0 0 / 0.08);
517
- --color-surface-overlay-dark: oklch(0 0 0 / 0.25);
518
- --color-text-shadow: oklch(0 0 0 / 0.40);
539
+ --color-surface-overlay-dark: oklch(0 0 0 / 0.25);
540
+ --color-text-shadow: oklch(0 0 0 / 0.40);
519
541
  }
520
542
 
521
- /* Ensure Radix popper content (Select, Combobox, Popover, etc.)
522
- renders above Sheet/Dialog overlays */
543
+ /* ═══════════════════════════════════════════════════════════════════
544
+ Ensure Radix popper content (Select, Combobox, Popover, etc.)
545
+ renders above Sheet/Dialog overlays.
546
+ ═══════════════════════════════════════════════════════════════════ */
523
547
  [data-radix-popper-content-wrapper] {
524
548
  z-index: var(--z-popover) !important;
525
549
  }
526
550
 
527
- /* ── Responsive Layout Spacing ──────────────────────── */
551
+ /* ═══════════════════════════════════════════════════════════════════
552
+ Responsive layout spacing — overrides @theme values at breakpoints.
553
+ TW4 permits re-declaring @theme vars under @media scope.
554
+ ═══════════════════════════════════════════════════════════════════ */
528
555
  @media (min-width: 768px) {
529
556
  :root {
530
- --spacing-page-x: var(--spacing-06); /* 24px on tablet+ */
531
- --spacing-section-gap: var(--spacing-10); /* 64px on tablet+ */
557
+ --spacing-ds-page-x: var(--spacing-ds-06);
558
+ --spacing-ds-section-gap: var(--spacing-ds-10);
532
559
  }
533
560
  }
534
561
 
535
562
  @media (min-width: 1280px) {
536
563
  :root {
537
- --spacing-page-x: var(--spacing-08); /* 40px on desktop+ */
564
+ --spacing-ds-page-x: var(--spacing-ds-08);
538
565
  }
539
566
  }
540
567
 
541
- /* ── Reduced Motion ──────────────────────────────────── */
542
- /* ═══════════════════════════════════════════════════════════
543
- PROCESSING ANIMATIONS
544
- ═══════════════════════════════════════════════════════════ */
545
-
546
- @property --border-angle {
547
- syntax: "<angle>";
548
- initial-value: 0deg;
549
- inherits: false;
550
- }
551
-
552
- @keyframes processing-ants-rotate {
553
- to {
554
- --border-angle: 360deg;
555
- }
556
- }
557
-
558
- @keyframes processing-ants-march {
559
- to {
560
- background-position: 16px 0, 100% 16px, calc(100% - 16px) 100%, 0 calc(100% - 16px);
561
- }
562
- }
563
-
564
- @keyframes processing-ants-svg {
565
- to {
566
- stroke-dashoffset: -10;
567
- }
568
- }
569
-
570
- /* ═══════════════════════════════════════════════════════════ */
568
+ /* ═══════════════════════════════════════════════════════════════════
569
+ REDUCED MOTION
571
570
 
571
+ @property --border-angle and @keyframes definitions moved to
572
+ base.css and animations.css respectively (Phase 2 of 0.37 migration).
573
+ ═══════════════════════════════════════════════════════════════════ */
572
574
  @media (prefers-reduced-motion: reduce) {
573
-
574
575
  *,
575
576
  *::before,
576
577
  *::after {
@@ -581,85 +582,68 @@
581
582
  }
582
583
  }
583
584
 
584
- /* ═══════════════════════════════════════════════════════════
585
+ /* ═══════════════════════════════════════════════════════════════════
585
586
  FORCED COLORS (Windows High Contrast, etc.)
586
- ───────────────────────────────────────────────────────────
587
+
587
588
  When the OS forces a color scheme, browsers strip our custom
588
- palette and remap to a small set of system keywords. We opt
589
- into this by default (forced-color-adjust: auto is the
590
- default) and only *explicitly map* our semantic tokens to
591
- system colors where the remapping would otherwise be lossy
592
- or ambiguous.
593
-
594
- Applies to BOTH light and dark themes — forced-colors is
595
- orthogonal to theme. We override both :root and .dark.
596
-
597
- Testing: Chrome DevTools → Rendering → "Emulate CSS media
598
- feature forced-colors: active". Or Windows Settings → High
599
- Contrast.
600
- ═══════════════════════════════════════════════════════════ */
589
+ palette and remap to a small set of system keywords. Opt in
590
+ explicitly so the DS degrades legibly.
591
+ Applies to BOTH light and dark themes.
592
+ Test: Chrome DevTools Rendering "Emulate CSS media feature
593
+ forced-colors: active".
594
+ ═══════════════════════════════════════════════════════════════════ */
601
595
  @media (forced-colors: active) {
602
596
  :root,
603
597
  .dark {
604
- /* ── Surface ── */
605
- --color-surface-fg: CanvasText;
606
- --color-surface-fg-muted: CanvasText; /* Muted merges with fg; rely on weight/position for hierarchy */
607
- --color-surface-fg-subtle: GrayText;
608
- --color-surface-fg-disabled: GrayText;
609
- --color-surface-base: Canvas;
610
- --color-surface-sunken: Canvas;
611
- --color-surface-raised: Canvas;
612
- --color-surface-raised-hover: Canvas; /* System handles hover via :hover + Highlight */
598
+ /* Surface */
599
+ --color-surface-fg: CanvasText;
600
+ --color-surface-fg-muted: CanvasText;
601
+ --color-surface-fg-subtle: GrayText;
602
+ --color-surface-fg-disabled: GrayText;
603
+ --color-surface-base: Canvas;
604
+ --color-surface-sunken: Canvas;
605
+ --color-surface-raised: Canvas;
606
+ --color-surface-raised-hover: Canvas;
613
607
  --color-surface-raised-active: Canvas;
614
- --color-surface-overlay: Canvas;
615
- --color-surface-disabled: Canvas;
616
- --color-surface-inverted: CanvasText;
617
- --color-surface-inverted-fg: Canvas;
618
- --color-surface-border: CanvasText;
619
- --color-surface-border-strong: CanvasText;
620
- --color-surface-border-subtle: GrayText;
608
+ --color-surface-overlay: Canvas;
609
+ --color-surface-disabled: Canvas;
610
+ --color-surface-inverted: CanvasText;
611
+ --color-surface-inverted-fg: Canvas;
612
+ --color-surface-border: CanvasText;
613
+ --color-surface-border-strong: CanvasText;
614
+ --color-surface-border-subtle: GrayText;
621
615
  --color-backdrop: Canvas;
622
- --color-overlay: Canvas;
616
+ --color-overlay: Canvas;
623
617
  --color-disabled: GrayText;
624
618
 
625
- /* ── Accent ──
626
- Step 9/10 (solid backgrounds) → Highlight (system selected color).
627
- Step 11 (text) → LinkText for emphasis / interactive text runs.
628
- Step 3-5 (hover/subtle bg) collapse to Canvas — hover is expressed
629
- by system Highlight on :hover automatically. */
619
+ /* Accent */
630
620
  --color-accent-1: Canvas;
631
621
  --color-accent-2: Canvas;
632
622
  --color-accent-3: Canvas;
633
623
  --color-accent-4: Canvas;
634
624
  --color-accent-5: Canvas;
635
625
  --color-accent-6: Canvas;
636
- --color-accent-7: Highlight;
637
- --color-accent-8: Highlight;
638
- --color-accent-9: Highlight;
626
+ --color-accent-7: Highlight;
627
+ --color-accent-8: Highlight;
628
+ --color-accent-9: Highlight;
639
629
  --color-accent-10: Highlight;
640
630
  --color-accent-11: LinkText;
641
631
  --color-accent-12: LinkText;
642
632
  --color-accent-fg: HighlightText;
643
633
 
644
- /* ── Secondary accent ── (same pattern) */
645
- --color-secondary-9: Highlight;
634
+ /* Secondary */
635
+ --color-secondary-9: Highlight;
646
636
  --color-secondary-10: Highlight;
647
637
  --color-secondary-11: LinkText;
648
638
  --color-secondary-12: LinkText;
649
639
  --color-secondary-fg: HighlightText;
650
640
 
651
- /* ── Status colors ──
652
- Forced-colors has no distinct error/success/warning/info slots.
653
- Step-11 text → CanvasText (still readable). Step-9 solid → Mark
654
- (often highlighted/annotated color in system themes) for error
655
- since errors are the most distinguishable need; others use
656
- Highlight to stay legible. Meaning MUST be carried by iconography
657
- + text, not color, under forced-colors. */
641
+ /* Status (meaning carried by iconography + text, not color) */
658
642
  --color-error-3: Canvas;
659
643
  --color-error-4: Canvas;
660
644
  --color-error-5: Canvas;
661
645
  --color-error-7: CanvasText;
662
- --color-error-9: Mark;
646
+ --color-error-9: Mark;
663
647
  --color-error-10: Mark;
664
648
  --color-error-11: CanvasText;
665
649
  --color-error-fg: CanvasText;
@@ -668,7 +652,7 @@
668
652
  --color-success-4: Canvas;
669
653
  --color-success-5: Canvas;
670
654
  --color-success-7: CanvasText;
671
- --color-success-9: Highlight;
655
+ --color-success-9: Highlight;
672
656
  --color-success-10: Highlight;
673
657
  --color-success-11: CanvasText;
674
658
  --color-success-fg: HighlightText;
@@ -677,7 +661,7 @@
677
661
  --color-warning-4: Canvas;
678
662
  --color-warning-5: Canvas;
679
663
  --color-warning-7: CanvasText;
680
- --color-warning-9: Highlight;
664
+ --color-warning-9: Highlight;
681
665
  --color-warning-10: Highlight;
682
666
  --color-warning-11: CanvasText;
683
667
  --color-warning-fg: HighlightText;
@@ -686,36 +670,28 @@
686
670
  --color-info-4: Canvas;
687
671
  --color-info-5: Canvas;
688
672
  --color-info-7: CanvasText;
689
- --color-info-9: Highlight;
673
+ --color-info-9: Highlight;
690
674
  --color-info-10: Highlight;
691
675
  --color-info-11: CanvasText;
692
676
  --color-info-fg: HighlightText;
693
677
 
694
- /* ── Links ──
695
- VisitedText falls back to LinkText on browsers that don't
696
- implement it; both render visibly. */
697
- --color-link: LinkText;
698
- --color-link-hover: LinkText;
678
+ /* Links */
679
+ --color-link: LinkText;
680
+ --color-link-hover: LinkText;
699
681
  --color-link-visited: VisitedText;
700
682
 
701
- /* ── Skeleton ── collapse to Canvas; shimmer animation still runs */
702
- --color-skeleton-base: GrayText;
683
+ /* Skeleton collapses */
684
+ --color-skeleton-base: GrayText;
703
685
  --color-skeleton-shimmer: Canvas;
704
686
  }
705
687
 
706
- /* Focus ring — Tailwind's `ring-*` utility compiles to box-shadow, which
707
- CAN be stripped by some UAs under forced-colors. Belt-and-suspenders:
708
- enforce an `outline` too so focus is *always* visible. */
688
+ /* Focus ring — enforce via outline so it's never stripped */
709
689
  *:focus-visible {
710
690
  outline: 2px solid Highlight !important;
711
691
  outline-offset: 2px !important;
712
692
  }
713
693
 
714
- /* Interactive elements need a visible border even when their resting
715
- background is transparent (ghost/link buttons, bare inputs). Canvas +
716
- no background = invisible interactive area. Use ButtonText for
717
- buttons, CanvasText for inputs — the system keywords closest in
718
- intent. */
694
+ /* Interactive elements need a visible border even when bg collapses */
719
695
  button,
720
696
  [role="button"],
721
697
  [role="menuitem"],
@@ -730,13 +706,9 @@
730
706
  border: 1px solid CanvasText;
731
707
  }
732
708
 
733
- /* Decorative texture layers are pure noise in high-contrast mode. */
734
- [data-grain] {
735
- display: none;
736
- }
709
+ /* Decorative grain is pure noise in high-contrast */
710
+ [data-grain] { display: none; }
737
711
 
738
- /* Skeleton shimmer can feel alarming in high-contrast; keep static. */
739
- [data-skeleton] {
740
- animation: none !important;
741
- }
712
+ /* Skeleton shimmer can feel alarming in HC; keep static */
713
+ [data-skeleton] { animation: none !important; }
742
714
  }