@devalok/shilp-sutra 0.34.0 → 0.36.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 (541) hide show
  1. package/LICENSE +21 -21
  2. package/dist/_chunks/badge-group.js +306 -246
  3. package/dist/_chunks/badge-group.js.map +1 -0
  4. package/dist/_chunks/chat.js +518 -0
  5. package/dist/_chunks/chat.js.map +1 -0
  6. package/dist/_chunks/date-picker.js +748 -0
  7. package/dist/_chunks/date-picker.js.map +1 -0
  8. package/dist/_chunks/document-preview.js +109 -90
  9. package/dist/_chunks/document-preview.js.map +1 -0
  10. package/dist/_chunks/file-preview.js +492 -504
  11. package/dist/_chunks/file-preview.js.map +1 -0
  12. package/dist/_chunks/framer.js +5564 -5613
  13. package/dist/_chunks/framer.js.map +1 -0
  14. package/dist/_chunks/image-preview.js +127 -88
  15. package/dist/_chunks/image-preview.js.map +1 -0
  16. package/dist/_chunks/keybinding.js +12 -14
  17. package/dist/_chunks/keybinding.js.map +1 -0
  18. package/dist/_chunks/link-context.js +19 -16
  19. package/dist/_chunks/link-context.js.map +1 -0
  20. package/dist/_chunks/mention-suggestion.js +353 -350
  21. package/dist/_chunks/mention-suggestion.js.map +1 -0
  22. package/dist/_chunks/motion-provider.js +26 -20
  23. package/dist/_chunks/motion-provider.js.map +1 -0
  24. package/dist/_chunks/popover.js +123 -0
  25. package/dist/_chunks/popover.js.map +1 -0
  26. package/dist/_chunks/primitives.js +7585 -6426
  27. package/dist/_chunks/primitives.js.map +1 -0
  28. package/dist/_chunks/rich-chat-input.js +2071 -0
  29. package/dist/_chunks/rich-chat-input.js.map +1 -0
  30. package/dist/_chunks/rolldown-runtime.js +21 -0
  31. package/dist/_chunks/shared.js +126 -0
  32. package/dist/_chunks/shared.js.map +1 -0
  33. package/dist/_chunks/sonner.js +605 -734
  34. package/dist/_chunks/sonner.js.map +1 -0
  35. package/dist/_chunks/stat-row.js +418 -440
  36. package/dist/_chunks/stat-row.js.map +1 -0
  37. package/dist/_chunks/tiptap.js +15850 -19964
  38. package/dist/_chunks/tiptap.js.map +1 -0
  39. package/dist/_chunks/tree-view.js +231 -290
  40. package/dist/_chunks/tree-view.js.map +1 -0
  41. package/dist/_chunks/use-calendar.js +161 -208
  42. package/dist/_chunks/use-calendar.js.map +1 -0
  43. package/dist/_chunks/vendor-client.js +314 -2199
  44. package/dist/_chunks/vendor-client.js.map +1 -0
  45. package/dist/_chunks/vendor-utils.js +1721 -2978
  46. package/dist/_chunks/vendor-utils.js.map +1 -0
  47. package/dist/ai/ai-command-provider.js +23 -17
  48. package/dist/ai/ai-command-provider.js.map +1 -0
  49. package/dist/ai/block-renderer.js +68 -51
  50. package/dist/ai/block-renderer.js.map +1 -0
  51. package/dist/ai/blocks/index.js +2 -12
  52. package/dist/ai/blocks/loading.d.ts.map +1 -1
  53. package/dist/ai/command-bar.js +470 -519
  54. package/dist/ai/command-bar.js.map +1 -0
  55. package/dist/ai/conversation.js +241 -227
  56. package/dist/ai/conversation.js.map +1 -0
  57. package/dist/ai/devadoot-icon.d.ts.map +1 -1
  58. package/dist/ai/index.js +181 -167
  59. package/dist/ai/index.js.map +1 -0
  60. package/dist/ai/types.js +0 -1
  61. package/dist/composed/activity-feed.js +232 -202
  62. package/dist/composed/activity-feed.js.map +1 -0
  63. package/dist/composed/avatar-group.js +164 -222
  64. package/dist/composed/avatar-group.js.map +1 -0
  65. package/dist/composed/bulk-action-bar.js +166 -165
  66. package/dist/composed/bulk-action-bar.js.map +1 -0
  67. package/dist/composed/command-palette.js +290 -308
  68. package/dist/composed/command-palette.js.map +1 -0
  69. package/dist/composed/confirm-dialog.js +28 -48
  70. package/dist/composed/confirm-dialog.js.map +1 -0
  71. package/dist/composed/content-card.js +69 -108
  72. package/dist/composed/content-card.js.map +1 -0
  73. package/dist/composed/date-picker/index.js +3 -13
  74. package/dist/composed/deadline-indicator.js +68 -74
  75. package/dist/composed/deadline-indicator.js.map +1 -0
  76. package/dist/composed/emoji-picker.js +83 -110
  77. package/dist/composed/emoji-picker.js.map +1 -0
  78. package/dist/composed/empty-state.d.ts.map +1 -1
  79. package/dist/composed/empty-state.js +64 -103
  80. package/dist/composed/empty-state.js.map +1 -0
  81. package/dist/composed/error-boundary.js +129 -127
  82. package/dist/composed/error-boundary.js.map +1 -0
  83. package/dist/composed/file-preview.js +2 -12
  84. package/dist/composed/filter-bar.js +98 -130
  85. package/dist/composed/filter-bar.js.map +1 -0
  86. package/dist/composed/form-section.js +61 -45
  87. package/dist/composed/form-section.js.map +1 -0
  88. package/dist/composed/global-loading.js +34 -47
  89. package/dist/composed/global-loading.js.map +1 -0
  90. package/dist/composed/index.js +34 -92
  91. package/dist/composed/inline-edit.js +92 -107
  92. package/dist/composed/inline-edit.js.map +1 -0
  93. package/dist/composed/lib/string-utils.js +8 -8
  94. package/dist/composed/lib/string-utils.js.map +1 -0
  95. package/dist/composed/loading-skeleton.js +103 -171
  96. package/dist/composed/loading-skeleton.js.map +1 -0
  97. package/dist/composed/markdown-viewer.js +187 -139
  98. package/dist/composed/markdown-viewer.js.map +1 -0
  99. package/dist/composed/master-detail.js +147 -156
  100. package/dist/composed/master-detail.js.map +1 -0
  101. package/dist/composed/member-picker.js +46 -49
  102. package/dist/composed/member-picker.js.map +1 -0
  103. package/dist/composed/multi-select-popover.d.ts.map +1 -1
  104. package/dist/composed/multi-select-popover.js +185 -179
  105. package/dist/composed/multi-select-popover.js.map +1 -0
  106. package/dist/composed/page-header.js +54 -76
  107. package/dist/composed/page-header.js.map +1 -0
  108. package/dist/composed/page-skeletons.js +143 -127
  109. package/dist/composed/page-skeletons.js.map +1 -0
  110. package/dist/composed/priority-indicator.js +105 -111
  111. package/dist/composed/priority-indicator.js.map +1 -0
  112. package/dist/composed/responsive-overlay.js +36 -41
  113. package/dist/composed/responsive-overlay.js.map +1 -0
  114. package/dist/composed/rich-chat-input/attachment-strip.d.ts.map +1 -1
  115. package/dist/composed/rich-chat-input/reply-banner.d.ts.map +1 -1
  116. package/dist/composed/rich-chat-input/schedule-send.d.ts.map +1 -1
  117. package/dist/composed/rich-chat-input.d.ts.map +1 -1
  118. package/dist/composed/rich-chat-input.js +2 -1860
  119. package/dist/composed/rich-text-editor.js +561 -424
  120. package/dist/composed/rich-text-editor.js.map +1 -0
  121. package/dist/composed/schedule-view.js +134 -185
  122. package/dist/composed/schedule-view.js.map +1 -0
  123. package/dist/composed/simple-tooltip.js +21 -21
  124. package/dist/composed/simple-tooltip.js.map +1 -0
  125. package/dist/composed/status-badge.d.ts.map +1 -1
  126. package/dist/composed/status-badge.js +133 -137
  127. package/dist/composed/status-badge.js.map +1 -0
  128. package/dist/hooks/index.js +7 -12
  129. package/dist/hooks/use-color-mode.js +28 -25
  130. package/dist/hooks/use-color-mode.js.map +1 -0
  131. package/dist/hooks/use-mobile.js +13 -13
  132. package/dist/hooks/use-mobile.js.map +1 -0
  133. package/dist/hooks/use-toast.js +2 -4
  134. package/dist/hooks/use-touch-device.js +9 -11
  135. package/dist/hooks/use-touch-device.js.map +1 -0
  136. package/dist/hooks/use-viewport-height.js +14 -14
  137. package/dist/hooks/use-viewport-height.js.map +1 -0
  138. package/dist/motion/check-motion-provider.d.ts +3 -0
  139. package/dist/motion/check-motion-provider.d.ts.map +1 -0
  140. package/dist/motion/index.js +17 -11
  141. package/dist/motion/index.js.map +1 -0
  142. package/dist/motion/primitives-index.js +226 -186
  143. package/dist/motion/primitives-index.js.map +1 -0
  144. package/dist/primitives/react-accordion.d.ts +114 -114
  145. package/dist/primitives/react-alert-dialog.d.ts +51 -51
  146. package/dist/primitives/react-aspect-ratio.d.ts +11 -11
  147. package/dist/primitives/react-avatar.d.ts +24 -24
  148. package/dist/primitives/react-checkbox.d.ts +50 -50
  149. package/dist/primitives/react-collapsible.d.ts +33 -33
  150. package/dist/primitives/react-context-menu.d.ts +96 -96
  151. package/dist/primitives/react-dialog.d.ts +103 -103
  152. package/dist/primitives/react-dropdown-menu.d.ts +97 -97
  153. package/dist/primitives/react-hover-card.d.ts +79 -79
  154. package/dist/primitives/react-label.d.ts +10 -10
  155. package/dist/primitives/react-menu.d.ts +169 -169
  156. package/dist/primitives/react-menubar.d.ts +115 -115
  157. package/dist/primitives/react-navigation-menu.d.ts +126 -126
  158. package/dist/primitives/react-popover.d.ts +85 -85
  159. package/dist/primitives/react-progress.d.ts +19 -19
  160. package/dist/primitives/react-radio-group.d.ts +58 -58
  161. package/dist/primitives/react-roving-focus.d.ts +49 -49
  162. package/dist/primitives/react-select.d.ts +137 -137
  163. package/dist/primitives/react-separator.d.ts +21 -21
  164. package/dist/primitives/react-slider.d.ts +75 -75
  165. package/dist/primitives/react-switch.d.ts +21 -21
  166. package/dist/primitives/react-tabs.d.ts +56 -56
  167. package/dist/primitives/react-toast.d.ts +120 -120
  168. package/dist/primitives/react-toggle-group.d.ts +75 -75
  169. package/dist/primitives/react-toggle.d.ts +24 -24
  170. package/dist/primitives/react-tooltip.d.ts +101 -101
  171. package/dist/primitives/react-visually-hidden.d.ts +22 -22
  172. package/dist/shell/app-command-palette.d.ts +2 -0
  173. package/dist/shell/app-command-palette.d.ts.map +1 -1
  174. package/dist/shell/app-command-palette.js +94 -238
  175. package/dist/shell/app-command-palette.js.map +1 -0
  176. package/dist/shell/bottom-navbar.js +150 -190
  177. package/dist/shell/bottom-navbar.js.map +1 -0
  178. package/dist/shell/command-registry.js +13 -14
  179. package/dist/shell/command-registry.js.map +1 -0
  180. package/dist/shell/index.js +10 -20
  181. package/dist/shell/link-context.js +2 -5
  182. package/dist/shell/notification-center.d.ts.map +1 -1
  183. package/dist/shell/notification-center.js +263 -259
  184. package/dist/shell/notification-center.js.map +1 -0
  185. package/dist/shell/notification-preferences.js +241 -184
  186. package/dist/shell/notification-preferences.js.map +1 -0
  187. package/dist/shell/sidebar.js +251 -281
  188. package/dist/shell/sidebar.js.map +1 -0
  189. package/dist/shell/top-bar.js +203 -237
  190. package/dist/shell/top-bar.js.map +1 -0
  191. package/dist/tailwind/index.cjs +473 -442
  192. package/dist/tailwind/index.js +2 -4
  193. package/dist/tailwind/preset.d.ts.map +1 -1
  194. package/dist/tailwind/preset.js +490 -459
  195. package/dist/tailwind/preset.js.map +1 -0
  196. package/dist/tokens/index.css +4 -4
  197. package/dist/tokens/primitives.css +442 -442
  198. package/dist/tokens/semantic.css +742 -547
  199. package/dist/tokens/typography-semantic.css +123 -100
  200. package/dist/tokens/typography.css +422 -422
  201. package/dist/ui/accordion.js +52 -60
  202. package/dist/ui/accordion.js.map +1 -0
  203. package/dist/ui/alert-dialog.d.ts +6 -2
  204. package/dist/ui/alert-dialog.d.ts.map +1 -1
  205. package/dist/ui/alert-dialog.js +112 -156
  206. package/dist/ui/alert-dialog.js.map +1 -0
  207. package/dist/ui/alert.d.ts +3 -2
  208. package/dist/ui/alert.d.ts.map +1 -1
  209. package/dist/ui/alert.js +203 -99
  210. package/dist/ui/alert.js.map +1 -0
  211. package/dist/ui/aspect-ratio.js +13 -16
  212. package/dist/ui/aspect-ratio.js.map +1 -0
  213. package/dist/ui/autocomplete.d.ts.map +1 -1
  214. package/dist/ui/autocomplete.js +137 -148
  215. package/dist/ui/autocomplete.js.map +1 -0
  216. package/dist/ui/avatar.js +196 -169
  217. package/dist/ui/avatar.js.map +1 -0
  218. package/dist/ui/badge-group.js +2 -7
  219. package/dist/ui/badge-indicator.js +42 -51
  220. package/dist/ui/badge-indicator.js.map +1 -0
  221. package/dist/ui/badge.js +2 -15
  222. package/dist/ui/banner.js +76 -68
  223. package/dist/ui/banner.js.map +1 -0
  224. package/dist/ui/breadcrumb.js +65 -84
  225. package/dist/ui/breadcrumb.js.map +1 -0
  226. package/dist/ui/button-group.js +109 -102
  227. package/dist/ui/button-group.js.map +1 -0
  228. package/dist/ui/button-processing.d.ts.map +1 -1
  229. package/dist/ui/button-processing.js +89 -72
  230. package/dist/ui/button-processing.js.map +1 -0
  231. package/dist/ui/button.js +393 -279
  232. package/dist/ui/button.js.map +1 -0
  233. package/dist/ui/card.js +151 -157
  234. package/dist/ui/card.js.map +1 -0
  235. package/dist/ui/charts/bar-chart.d.ts.map +1 -1
  236. package/dist/ui/charts/chart-container.d.ts +2 -0
  237. package/dist/ui/charts/chart-container.d.ts.map +1 -1
  238. package/dist/ui/charts/index.js +1025 -1319
  239. package/dist/ui/charts/index.js.map +1 -0
  240. package/dist/ui/charts/line-chart.d.ts.map +1 -1
  241. package/dist/ui/chat/index.js +2 -11
  242. package/dist/ui/chat/message-input.d.ts.map +1 -1
  243. package/dist/ui/chat/message-list.d.ts +1 -1
  244. package/dist/ui/chat/message-list.d.ts.map +1 -1
  245. package/dist/ui/chat/message.d.ts.map +1 -1
  246. package/dist/ui/chat/system-message.d.ts.map +1 -1
  247. package/dist/ui/checkbox.d.ts.map +1 -1
  248. package/dist/ui/checkbox.js +82 -100
  249. package/dist/ui/checkbox.js.map +1 -0
  250. package/dist/ui/code.js +18 -32
  251. package/dist/ui/code.js.map +1 -0
  252. package/dist/ui/collapsible.js +21 -29
  253. package/dist/ui/collapsible.js.map +1 -0
  254. package/dist/ui/color-input.d.ts.map +1 -1
  255. package/dist/ui/color-input.js +455 -372
  256. package/dist/ui/color-input.js.map +1 -0
  257. package/dist/ui/color-swatch.js +60 -90
  258. package/dist/ui/color-swatch.js.map +1 -0
  259. package/dist/ui/combobox.d.ts +7 -0
  260. package/dist/ui/combobox.d.ts.map +1 -1
  261. package/dist/ui/combobox.js +278 -293
  262. package/dist/ui/combobox.js.map +1 -0
  263. package/dist/ui/container.js +18 -24
  264. package/dist/ui/container.js.map +1 -0
  265. package/dist/ui/context-menu.js +154 -203
  266. package/dist/ui/context-menu.js.map +1 -0
  267. package/dist/ui/data-table-body.js +116 -213
  268. package/dist/ui/data-table-body.js.map +1 -0
  269. package/dist/ui/data-table-bulk-actions.js +43 -59
  270. package/dist/ui/data-table-bulk-actions.js.map +1 -0
  271. package/dist/ui/data-table-card.js +84 -71
  272. package/dist/ui/data-table-card.js.map +1 -0
  273. package/dist/ui/data-table-context.js +39 -42
  274. package/dist/ui/data-table-context.js.map +1 -0
  275. package/dist/ui/data-table-header.js +98 -139
  276. package/dist/ui/data-table-header.js.map +1 -0
  277. package/dist/ui/data-table-pagination.js +69 -82
  278. package/dist/ui/data-table-pagination.js.map +1 -0
  279. package/dist/ui/data-table-toolbar.js +104 -130
  280. package/dist/ui/data-table-toolbar.js.map +1 -0
  281. package/dist/ui/data-table.js +281 -354
  282. package/dist/ui/data-table.js.map +1 -0
  283. package/dist/ui/devalok-grain.js +77 -66
  284. package/dist/ui/devalok-grain.js.map +1 -0
  285. package/dist/ui/dialog.js +118 -151
  286. package/dist/ui/dialog.js.map +1 -0
  287. package/dist/ui/dropdown-menu.js +152 -203
  288. package/dist/ui/dropdown-menu.js.map +1 -0
  289. package/dist/ui/file-upload.js +242 -266
  290. package/dist/ui/file-upload.js.map +1 -0
  291. package/dist/ui/form.d.ts +8 -0
  292. package/dist/ui/form.d.ts.map +1 -1
  293. package/dist/ui/form.js +62 -56
  294. package/dist/ui/form.js.map +1 -0
  295. package/dist/ui/hover-card.js +54 -54
  296. package/dist/ui/hover-card.js.map +1 -0
  297. package/dist/ui/icon-button.js +21 -26
  298. package/dist/ui/icon-button.js.map +1 -0
  299. package/dist/ui/icon-context.js +17 -17
  300. package/dist/ui/icon-context.js.map +1 -0
  301. package/dist/ui/icon-group.js +22 -29
  302. package/dist/ui/icon-group.js.map +1 -0
  303. package/dist/ui/icon.js +201 -121
  304. package/dist/ui/icon.js.map +1 -0
  305. package/dist/ui/index.d.ts +4 -4
  306. package/dist/ui/index.d.ts.map +1 -1
  307. package/dist/ui/index.js +90 -350
  308. package/dist/ui/index.js.map +1 -0
  309. package/dist/ui/input-otp.d.ts +12 -3
  310. package/dist/ui/input-otp.d.ts.map +1 -1
  311. package/dist/ui/input-otp.js +58 -48
  312. package/dist/ui/input-otp.js.map +1 -0
  313. package/dist/ui/input.d.ts.map +1 -1
  314. package/dist/ui/input.js +93 -169
  315. package/dist/ui/input.js.map +1 -0
  316. package/dist/ui/label.d.ts.map +1 -1
  317. package/dist/ui/label.js +23 -23
  318. package/dist/ui/label.js.map +1 -0
  319. package/dist/ui/lib/check-tokens.d.ts +3 -0
  320. package/dist/ui/lib/check-tokens.d.ts.map +1 -0
  321. package/dist/ui/lib/date-utils.js +14 -11
  322. package/dist/ui/lib/date-utils.js.map +1 -0
  323. package/dist/ui/lib/motion.d.ts +15 -4
  324. package/dist/ui/lib/motion.d.ts.map +1 -1
  325. package/dist/ui/lib/motion.js +83 -33
  326. package/dist/ui/lib/motion.js.map +1 -0
  327. package/dist/ui/lib/utils.js +39 -16
  328. package/dist/ui/lib/utils.js.map +1 -0
  329. package/dist/ui/link.js +13 -24
  330. package/dist/ui/link.js.map +1 -0
  331. package/dist/ui/menubar.js +132 -210
  332. package/dist/ui/menubar.js.map +1 -0
  333. package/dist/ui/navigation-menu.js +163 -193
  334. package/dist/ui/navigation-menu.js.map +1 -0
  335. package/dist/ui/number-input.d.ts +16 -1
  336. package/dist/ui/number-input.d.ts.map +1 -1
  337. package/dist/ui/number-input.js +102 -95
  338. package/dist/ui/number-input.js.map +1 -0
  339. package/dist/ui/pagination.js +122 -159
  340. package/dist/ui/pagination.js.map +1 -0
  341. package/dist/ui/popover.js +2 -131
  342. package/dist/ui/progress-ring.d.ts.map +1 -1
  343. package/dist/ui/progress-ring.js +133 -143
  344. package/dist/ui/progress-ring.js.map +1 -0
  345. package/dist/ui/progress.js +51 -95
  346. package/dist/ui/progress.js.map +1 -0
  347. package/dist/ui/radio.d.ts.map +1 -1
  348. package/dist/ui/radio.js +47 -49
  349. package/dist/ui/radio.js.map +1 -0
  350. package/dist/ui/search-input.js +51 -53
  351. package/dist/ui/search-input.js.map +1 -0
  352. package/dist/ui/segmented-control.d.ts +1 -1
  353. package/dist/ui/segmented-control.d.ts.map +1 -1
  354. package/dist/ui/segmented-control.js +95 -114
  355. package/dist/ui/segmented-control.js.map +1 -0
  356. package/dist/ui/select.d.ts.map +1 -1
  357. package/dist/ui/select.js +137 -157
  358. package/dist/ui/select.js.map +1 -0
  359. package/dist/ui/separator.d.ts.map +1 -1
  360. package/dist/ui/separator.js +18 -25
  361. package/dist/ui/separator.js.map +1 -0
  362. package/dist/ui/sheet.js +135 -163
  363. package/dist/ui/sheet.js.map +1 -0
  364. package/dist/ui/sidebar.js +357 -600
  365. package/dist/ui/sidebar.js.map +1 -0
  366. package/dist/ui/skeleton.js +179 -231
  367. package/dist/ui/skeleton.js.map +1 -0
  368. package/dist/ui/slider.d.ts +22 -3
  369. package/dist/ui/slider.d.ts.map +1 -1
  370. package/dist/ui/slider.js +62 -34
  371. package/dist/ui/slider.js.map +1 -0
  372. package/dist/ui/spinner.js +226 -205
  373. package/dist/ui/spinner.js.map +1 -0
  374. package/dist/ui/split-button.d.ts.map +1 -1
  375. package/dist/ui/split-button.js +228 -276
  376. package/dist/ui/split-button.js.map +1 -0
  377. package/dist/ui/stack.js +56 -70
  378. package/dist/ui/stack.js.map +1 -0
  379. package/dist/ui/stat-card.js +259 -251
  380. package/dist/ui/stat-card.js.map +1 -0
  381. package/dist/ui/status-dot.js +67 -63
  382. package/dist/ui/status-dot.js.map +1 -0
  383. package/dist/ui/stepper.d.ts +10 -0
  384. package/dist/ui/stepper.d.ts.map +1 -1
  385. package/dist/ui/stepper.js +124 -168
  386. package/dist/ui/stepper.js.map +1 -0
  387. package/dist/ui/switch.d.ts.map +1 -1
  388. package/dist/ui/switch.js +56 -55
  389. package/dist/ui/switch.js.map +1 -0
  390. package/dist/ui/table.js +57 -90
  391. package/dist/ui/table.js.map +1 -0
  392. package/dist/ui/tabs.d.ts +3 -1
  393. package/dist/ui/tabs.d.ts.map +1 -1
  394. package/dist/ui/tabs.js +159 -156
  395. package/dist/ui/tabs.js.map +1 -0
  396. package/dist/ui/text.d.ts +1 -1
  397. package/dist/ui/text.d.ts.map +1 -1
  398. package/dist/ui/text.js +60 -59
  399. package/dist/ui/text.js.map +1 -0
  400. package/dist/ui/textarea.js +40 -57
  401. package/dist/ui/textarea.js.map +1 -0
  402. package/dist/ui/toast-registry.d.ts +8 -0
  403. package/dist/ui/toast-registry.d.ts.map +1 -0
  404. package/dist/ui/toast-registry.js +13 -0
  405. package/dist/ui/toast-registry.js.map +1 -0
  406. package/dist/ui/toast-types.js +0 -1
  407. package/dist/ui/toast.d.ts.map +1 -1
  408. package/dist/ui/toast.js +559 -536
  409. package/dist/ui/toast.js.map +1 -0
  410. package/dist/ui/toaster.d.ts.map +1 -1
  411. package/dist/ui/toaster.js +24 -33
  412. package/dist/ui/toaster.js.map +1 -0
  413. package/dist/ui/toggle-group.d.ts +2 -0
  414. package/dist/ui/toggle-group.d.ts.map +1 -1
  415. package/dist/ui/toggle-group.js +44 -41
  416. package/dist/ui/toggle-group.js.map +1 -0
  417. package/dist/ui/toggle.d.ts +2 -0
  418. package/dist/ui/toggle.d.ts.map +1 -1
  419. package/dist/ui/toggle.js +44 -40
  420. package/dist/ui/toggle.js.map +1 -0
  421. package/dist/ui/tooltip.js +80 -65
  422. package/dist/ui/tooltip.js.map +1 -0
  423. package/dist/ui/tree-view/index.js +2 -6
  424. package/dist/ui/visually-hidden.js +12 -10
  425. package/dist/ui/visually-hidden.js.map +1 -0
  426. package/docs/components/_header.md +85 -85
  427. package/docs/components/composed/activity-feed.md +62 -62
  428. package/docs/components/composed/avatar-group.md +65 -65
  429. package/docs/components/composed/bulk-action-bar.md +40 -40
  430. package/docs/components/composed/command-palette.md +40 -40
  431. package/docs/components/composed/confirm-dialog.md +46 -46
  432. package/docs/components/composed/content-card.md +36 -36
  433. package/docs/components/composed/date-picker.md +130 -130
  434. package/docs/components/composed/deadline-indicator.md +27 -27
  435. package/docs/components/composed/emoji-picker.md +52 -52
  436. package/docs/components/composed/empty-state.md +53 -53
  437. package/docs/components/composed/error-boundary.md +29 -29
  438. package/docs/components/composed/file-preview.md +40 -40
  439. package/docs/components/composed/filter-bar.md +57 -57
  440. package/docs/components/composed/form-section.md +31 -31
  441. package/docs/components/composed/global-loading.md +27 -27
  442. package/docs/components/composed/inline-edit.md +35 -35
  443. package/docs/components/composed/loading-skeleton.md +51 -51
  444. package/docs/components/composed/markdown-viewer.md +27 -27
  445. package/docs/components/composed/master-detail.md +48 -48
  446. package/docs/components/composed/member-picker.md +35 -35
  447. package/docs/components/composed/multi-select-popover.md +62 -62
  448. package/docs/components/composed/page-header.md +41 -41
  449. package/docs/components/composed/page-skeletons.md +32 -32
  450. package/docs/components/composed/priority-indicator.md +32 -32
  451. package/docs/components/composed/responsive-overlay.md +34 -34
  452. package/docs/components/composed/rich-text-editor.md +82 -82
  453. package/docs/components/composed/schedule-view.md +39 -39
  454. package/docs/components/composed/simple-tooltip.md +33 -33
  455. package/docs/components/composed/status-badge.md +55 -55
  456. package/docs/components/shell/app-command-palette.md +44 -44
  457. package/docs/components/shell/bottom-navbar.md +52 -52
  458. package/docs/components/shell/command-registry.md +48 -48
  459. package/docs/components/shell/link-context.md +41 -41
  460. package/docs/components/shell/notification-center.md +63 -63
  461. package/docs/components/shell/notification-preferences.md +42 -42
  462. package/docs/components/shell/sidebar.md +92 -92
  463. package/docs/components/shell/top-bar.md +143 -143
  464. package/docs/components/ui/accordion.md +51 -51
  465. package/docs/components/ui/alert-dialog.md +61 -61
  466. package/docs/components/ui/alert.md +46 -46
  467. package/docs/components/ui/aspect-ratio.md +25 -25
  468. package/docs/components/ui/autocomplete.md +48 -48
  469. package/docs/components/ui/avatar.md +56 -56
  470. package/docs/components/ui/badge.md +83 -82
  471. package/docs/components/ui/banner.md +42 -42
  472. package/docs/components/ui/breadcrumb.md +37 -37
  473. package/docs/components/ui/button-group.md +41 -41
  474. package/docs/components/ui/button.md +94 -93
  475. package/docs/components/ui/card.md +52 -52
  476. package/docs/components/ui/charts.md +43 -43
  477. package/docs/components/ui/checkbox.md +36 -36
  478. package/docs/components/ui/chip.md +47 -47
  479. package/docs/components/ui/code.md +28 -28
  480. package/docs/components/ui/collapsible.md +40 -40
  481. package/docs/components/ui/color-input.md +91 -91
  482. package/docs/components/ui/color-swatch.md +25 -25
  483. package/docs/components/ui/combobox.md +54 -54
  484. package/docs/components/ui/container.md +26 -26
  485. package/docs/components/ui/context-menu.md +43 -43
  486. package/docs/components/ui/data-table-body.md +1 -1
  487. package/docs/components/ui/data-table-bulk-actions.md +1 -1
  488. package/docs/components/ui/data-table-card.md +1 -1
  489. package/docs/components/ui/data-table-context.md +1 -1
  490. package/docs/components/ui/data-table-header.md +1 -1
  491. package/docs/components/ui/data-table-pagination.md +1 -1
  492. package/docs/components/ui/data-table-toolbar.md +44 -44
  493. package/docs/components/ui/data-table.md +94 -94
  494. package/docs/components/ui/dialog.md +54 -54
  495. package/docs/components/ui/dropdown-menu.md +48 -48
  496. package/docs/components/ui/file-upload.md +41 -41
  497. package/docs/components/ui/form.md +51 -51
  498. package/docs/components/ui/hover-card.md +32 -32
  499. package/docs/components/ui/icon-button.md +40 -40
  500. package/docs/components/ui/input-otp.md +44 -44
  501. package/docs/components/ui/input.md +74 -74
  502. package/docs/components/ui/label.md +25 -25
  503. package/docs/components/ui/link.md +29 -29
  504. package/docs/components/ui/menubar.md +44 -44
  505. package/docs/components/ui/navigation-menu.md +46 -46
  506. package/docs/components/ui/number-input.md +44 -44
  507. package/docs/components/ui/pagination.md +48 -48
  508. package/docs/components/ui/popover.md +30 -30
  509. package/docs/components/ui/progress-ring.md +41 -41
  510. package/docs/components/ui/progress.md +34 -34
  511. package/docs/components/ui/radio.md +34 -34
  512. package/docs/components/ui/search-input.md +43 -43
  513. package/docs/components/ui/segmented-control.md +50 -50
  514. package/docs/components/ui/select.md +53 -53
  515. package/docs/components/ui/separator.md +32 -32
  516. package/docs/components/ui/sheet.md +47 -47
  517. package/docs/components/ui/sidebar.md +72 -72
  518. package/docs/components/ui/skeleton.md +77 -77
  519. package/docs/components/ui/slider.md +29 -29
  520. package/docs/components/ui/spinner.md +54 -54
  521. package/docs/components/ui/stack.md +39 -39
  522. package/docs/components/ui/stat-card.md +61 -61
  523. package/docs/components/ui/status-dot.md +26 -26
  524. package/docs/components/ui/stepper.md +49 -49
  525. package/docs/components/ui/switch.md +47 -47
  526. package/docs/components/ui/table.md +47 -47
  527. package/docs/components/ui/tabs.md +60 -60
  528. package/docs/components/ui/text.md +37 -37
  529. package/docs/components/ui/textarea.md +39 -39
  530. package/docs/components/ui/toast.md +65 -65
  531. package/docs/components/ui/toaster.md +47 -47
  532. package/docs/components/ui/toggle-group.md +43 -43
  533. package/docs/components/ui/toggle.md +37 -37
  534. package/docs/components/ui/tooltip.md +38 -38
  535. package/docs/components/ui/tree-view.md +65 -65
  536. package/docs/components/ui/visually-hidden.md +21 -21
  537. package/llms-full.txt +5266 -5264
  538. package/llms.txt +624 -580
  539. package/package.json +7 -8
  540. package/dist/_chunks/date-time-picker.js +0 -851
  541. package/dist/_chunks/typing-indicator.js +0 -565
@@ -1,547 +1,742 @@
1
- :root {
2
- color-scheme: light;
3
-
4
- /* ═══════════════════════════════════════════════════════════
5
- TYPOGRAPHY
6
- ═══════════════════════════════════════════════════════════ */
7
-
8
- /* Font families — override these with next/font CSS variables */
9
- --font-sans: "Inter", system-ui, sans-serif;
10
- --font-display: "Inter", system-ui, sans-serif;
11
- --font-body: "Inter", system-ui, sans-serif;
12
- --font-accent: Ranade, sans-serif;
13
- --font-mono: "SF Mono", "Fira Code", monospace;
14
-
15
- /* ── Font Weights ──────────────────────────── */
16
- --font-weight-light: 300;
17
- --font-weight-regular: 400;
18
- --font-weight-medium: 500;
19
- --font-weight-semibold: 600;
20
- --font-weight-bold: 700;
21
-
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: 2rem;
39
- /* 32px */
40
- --font-size-4xl: 2.25rem;
41
- /* 36px */
42
- --font-size-5xl: 3rem;
43
- /* 48px */
44
- --font-size-6xl: 3.75rem;
45
- /* 60px */
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
- /* ═══════════════════════════════════════════════════════════
64
- 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);
75
- --color-accent-10: var(--pink-10);
76
- --color-accent-11: var(--pink-11);
77
- --color-accent-12: var(--pink-12);
78
- --color-accent-fg: var(--neutral-1);
79
-
80
- /* ═══════════════════════════════════════════════════════════
81
- 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);
92
- --color-secondary-10: var(--purple-10);
93
- --color-secondary-11: var(--purple-11);
94
- --color-secondary-12: var(--purple-12);
95
- --color-secondary-fg: var(--neutral-1);
96
-
97
- /* ═══════════════════════════════════════════════════════════
98
- 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);
106
- --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-8);
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
- /* ═══════════════════════════════════════════════════════════
121
- 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);
129
- --color-error-10: var(--red-10);
130
- --color-error-11: var(--red-11);
131
- --color-error-fg: var(--neutral-1);
132
-
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);
140
- --color-success-10: var(--green-10);
141
- --color-success-11: var(--green-11);
142
- --color-success-fg: var(--neutral-1);
143
-
144
- /* ═══ Status — Warning (amber-bright — lightness-corrected) ═══ */
145
- --color-warning-2: var(--amber-bright-2);
146
- --color-warning-3: var(--amber-bright-3);
147
- --color-warning-4: var(--amber-bright-4);
148
- --color-warning-5: var(--amber-bright-5);
149
- --color-warning-7: var(--amber-bright-7);
150
- --color-warning-9: var(--amber-bright-9);
151
- --color-warning-10: var(--amber-bright-10);
152
- --color-warning-11: var(--amber-bright-11);
153
- --color-warning-fg: oklch(0.25 0.01 55);
154
-
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);
162
- --color-info-10: var(--blue-10);
163
- --color-info-11: var(--blue-11);
164
- --color-info-fg: var(--neutral-1);
165
-
166
- /* ═══════════════════════════════════════════════════════════
167
- CATEGORY COLORS (Sapta Varna — step subsets)
168
- ═══════════════════════════════════════════════════════════ */
169
- --color-category-teal-3: var(--teal-3);
170
- --color-category-teal-7: var(--teal-7);
171
- --color-category-teal-9: var(--teal-9);
172
- --color-category-teal-11: var(--teal-11);
173
-
174
- --color-category-amber-3: var(--amber-3);
175
- --color-category-amber-7: var(--amber-7);
176
- --color-category-amber-9: var(--amber-9);
177
- --color-category-amber-11: var(--amber-11);
178
-
179
- --color-category-slate-3: var(--slate-3);
180
- --color-category-slate-7: var(--slate-7);
181
- --color-category-slate-9: var(--slate-9);
182
- --color-category-slate-11: var(--slate-11);
183
-
184
- --color-category-indigo-3: var(--indigo-3);
185
- --color-category-indigo-7: var(--indigo-7);
186
- --color-category-indigo-9: var(--indigo-9);
187
- --color-category-indigo-11: var(--indigo-11);
188
-
189
- --color-category-cyan-3: var(--cyan-3);
190
- --color-category-cyan-7: var(--cyan-7);
191
- --color-category-cyan-9: var(--cyan-9);
192
- --color-category-cyan-11: var(--cyan-11);
193
-
194
- --color-category-orange-3: var(--orange-3);
195
- --color-category-orange-7: var(--orange-7);
196
- --color-category-orange-9: var(--orange-9);
197
- --color-category-orange-11: var(--orange-11);
198
-
199
- --color-category-emerald-3: var(--emerald-3);
200
- --color-category-emerald-7: var(--emerald-7);
201
- --color-category-emerald-9: var(--emerald-9);
202
- --color-category-emerald-11: var(--emerald-11);
203
-
204
- /* ═══════════════════════════════════════════════════════════
205
- SKELETON
206
- ═══════════════════════════════════════════════════════════ */
207
- --color-skeleton-base: var(--neutral-3);
208
- --color-skeleton-shimmer: var(--neutral-2);
209
-
210
- /* ═══════════════════════════════════════════════════════════
211
- UTILITY TOKENS (not step-based, but semantically needed)
212
- ═══════════════════════════════════════════════════════════ */
213
- --color-overlay: oklch(0 0 0 / 0.50);
214
- --color-disabled: var(--neutral-5);
215
-
216
- /* ═══════════════════════════════════════════════════════════
217
- ACTION STATE OPACITIES
218
- ═══════════════════════════════════════════════════════════ */
219
- --action-hover-opacity: 0.04;
220
- --action-selected-opacity: 0.08;
221
- --action-disabled-opacity: 0.38;
222
- --action-focus-opacity: 0.12;
223
- --action-active-opacity: 0.12;
224
-
225
- /* ═══════════════════════════════════════════════════════════
226
- SPACING
227
- ═══════════════════════════════════════════════════════════ */
228
- --spacing-01: 2px;
229
- --spacing-02: 4px;
230
- --spacing-02b: 6px;
231
- --spacing-03: 8px;
232
- --spacing-04: 12px;
233
- --spacing-05: 16px;
234
- --spacing-05b: 20px;
235
- --spacing-06: 24px;
236
- --spacing-06b: 28px;
237
- --spacing-07: 32px;
238
- --spacing-08: 40px;
239
- --spacing-09: 48px;
240
- --spacing-10: 64px;
241
- --spacing-11: 80px;
242
- --spacing-12: 96px;
243
- --spacing-13: 160px;
244
-
245
- /* ═══════════════════════════════════════════════════════════
246
- RADIUS
247
- ═══════════════════════════════════════════════════════════ */
248
- --radius-none: 0;
249
- --radius-sm: 2px;
250
- --radius-default: 4px;
251
- --radius-md: 6px;
252
- --radius-lg: 10px;
253
- --radius-xl: 16px;
254
- --radius-2xl: 24px;
255
- --radius-full: 9999px;
256
-
257
- /* ═══════════════════════════════════════════════════════════
258
- MOTION
259
- ═══════════════════════════════════════════════════════════ */
260
-
261
- /* ── Motion: Durations (Carbon-inspired scale) ── */
262
- --duration-instant: 0ms;
263
- --duration-fast-01: 70ms;
264
- --duration-fast-02: 110ms;
265
- --duration-moderate-01: 150ms;
266
- --duration-moderate-02: 240ms;
267
- --duration-slow-01: 400ms;
268
- --duration-slow-02: 700ms;
269
-
270
- /* ── Motion: Easing — Productive (task-focused, utilitarian) ── */
271
- --ease-productive-standard: cubic-bezier(0.2, 0, 0.38, 0.9);
272
- --ease-productive-entrance: cubic-bezier(0, 0, 0.38, 0.9);
273
- --ease-productive-exit: cubic-bezier(0.2, 0, 1, 0.9);
274
-
275
- /* ── Motion: Easing — Expressive (attention-grabbing, dramatic) ── */
276
- --ease-expressive-standard: cubic-bezier(0.4, 0.14, 0.3, 1);
277
- --ease-expressive-entrance: cubic-bezier(0, 0, 0.3, 1);
278
- --ease-expressive-exit: cubic-bezier(0.4, 0.14, 1, 1);
279
-
280
- /* ── Motion: Easing — Utility ── */
281
- --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
282
- --ease-linear: linear;
283
-
284
- /* ═══════════════════════════════════════════════════════════
285
- SHADOWS
286
- ═══════════════════════════════════════════════════════════ */
287
-
288
- /* Shadow color: cool blue tint for natural depth */
289
- --shadow-color: 0.15 0.015 260;
290
- --shadow-strength: 1;
291
-
292
- /* Shadow transition */
293
- --shadow-transition: box-shadow var(--duration-fast-02) var(--ease-productive-standard);
294
-
295
- /* Keyboard shortcut badge shadow */
296
- --shadow-kbd: inset 0 -1px 0 oklch(0 0 0 / 0.1);
297
-
298
- /* Shadow primitives (internal) */
299
- --shadow-xs:
300
- 0 0 0 1px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
301
- 0 0.5px 1px -0.5px oklch(var(--shadow-color) / calc(0.045 * var(--shadow-strength))),
302
- 0 1.5px 3px -1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
303
- 0 3px 7px -2px oklch(var(--shadow-color) / calc(0.03 * var(--shadow-strength)));
304
- --shadow-sm:
305
- 0 0 0 1px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
306
- 0 0.5px 1px -0.5px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
307
- 0 2px 4px -1.5px oklch(var(--shadow-color) / calc(0.045 * var(--shadow-strength))),
308
- 0 6px 12px -3px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
309
- 0 14px 28px -8px oklch(var(--shadow-color) / calc(0.025 * var(--shadow-strength)));
310
- --shadow-md:
311
- 0 0 0 1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
312
- 0 1px 2px -1px oklch(var(--shadow-color) / calc(0.05 * var(--shadow-strength))),
313
- 0 4px 8px -2px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
314
- 0 10px 20px -5px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
315
- 0 24px 44px -12px oklch(var(--shadow-color) / calc(0.025 * var(--shadow-strength)));
316
- --shadow-lg:
317
- 0 0 0 1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
318
- 0 1px 2px -1px oklch(var(--shadow-color) / calc(0.05 * var(--shadow-strength))),
319
- 0 3px 6px -2px oklch(var(--shadow-color) / calc(0.045 * var(--shadow-strength))),
320
- 0 8px 16px -4px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
321
- 0 18px 34px -8px oklch(var(--shadow-color) / calc(0.03 * var(--shadow-strength))),
322
- 0 40px 64px -16px oklch(var(--shadow-color) / calc(0.025 * var(--shadow-strength)));
323
-
324
- /* Semantic elevation shadows (public API) */
325
- --shadow-raised: var(--shadow-xs);
326
- --shadow-raised-hover: var(--shadow-sm);
327
- --shadow-floating: var(--shadow-md);
328
- --shadow-overlay: var(--shadow-lg);
329
-
330
- /* Effect shadows */
331
- --shadow-brand: 0 2px 8px oklch(0.55 0.19 360 / 0.20), 0 6px 20px oklch(0.55 0.19 360 / 0.15);
332
- --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);
333
- --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)));
334
- --shadow-ring-sm: 0 0 0 1px var(--color-surface-border);
335
- --shadow-ring: 0 0 0 2px oklch(0.55 0.19 360 / 0.30);
336
-
337
- /* Status & state effect shadows */
338
- --shadow-raised-inner: inset 0 1px 0 oklch(1 0 0 / 0.10), inset 0 -1px 0 oklch(0 0 0 / 0.06);
339
- --shadow-pressed: 0 0 0 1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength)));
340
- --shadow-success: 0 2px 8px oklch(0.55 0.14 145 / 0.20), 0 6px 20px oklch(0.55 0.14 145 / 0.15);
341
- --shadow-error: 0 2px 8px oklch(0.55 0.18 25 / 0.20), 0 6px 20px oklch(0.55 0.18 25 / 0.15);
342
- --shadow-warning: 0 2px 8px oklch(0.78 0.16 65 / 0.22), 0 6px 20px oklch(0.78 0.16 65 / 0.15);
343
-
344
- /* ═══════════════════════════════════════════════════════════
345
- SIZES
346
- ═══════════════════════════════════════════════════════════ */
347
- --size-xs: 24px;
348
- --size-xs-plus: 28px;
349
- --size-sm: 32px;
350
- --size-sm-plus: 36px;
351
- --size-md: 40px;
352
- --size-lg: 48px;
353
- --size-xl: 56px;
354
- --icon-sm: 16px;
355
- --icon-md: 20px;
356
- --icon-lg: 24px;
357
- --icon-xl: 32px;
358
- --border-width-sm: 1px;
359
- --border-width-md: 2px;
360
- --border-width-lg: 3px;
361
- --border-focus-width: 2px;
362
- --border-focus-offset: 2px;
363
-
364
- /* ═══════════════════════════════════════════════════════════
365
- Z-INDEX
366
- ═══════════════════════════════════════════════════════════ */
367
- --z-base: 0;
368
- --z-raised: 10;
369
- --z-dropdown: 1000;
370
- --z-sticky: 1100;
371
- --z-overlay: 1200;
372
- --z-modal: 1300;
373
- --z-popover: 1400;
374
- --z-toast: 1500;
375
- --z-tooltip: 1600;
376
-
377
- /* ── Layout ─────────────────────────────────── */
378
- --max-width: 1280px;
379
- --max-width-body: 960px;
380
-
381
- /* ── Breakpoints ───────────────────────────── */
382
- --breakpoint-sm: 640px;
383
- --breakpoint-md: 768px;
384
- --breakpoint-lg: 1024px;
385
- --breakpoint-xl: 1280px;
386
- --breakpoint-2xl: 1536px;
387
-
388
- /* ═══════════════════════════════════════════════════════════
389
- GRADIENTS
390
- ═══════════════════════════════════════════════════════════ */
391
- --gradient-brand-light: linear-gradient(135deg, var(--pink-7), var(--purple-9));
392
- --gradient-brand-dark: linear-gradient(135deg, var(--pink-8), var(--purple-10));
393
-
394
- /* ═══════════════════════════════════════════════════════════
395
- CHART PALETTE
396
- ═══════════════════════════════════════════════════════════ */
397
- --chart-1: var(--pink-9);
398
- --chart-2: var(--purple-9);
399
- --chart-3: var(--blue-9);
400
- --chart-4: var(--green-9);
401
- --chart-5: var(--yellow-9);
402
- --chart-6: var(--red-9);
403
- --chart-7: var(--cyan-9);
404
- --chart-8: var(--orange-9);
405
-
406
- /* ═══════════════════════════════════════════════════════════
407
- INSET GLOW & OVERLAY
408
- ═══════════════════════════════════════════════════════════ */
409
- --color-inset-glow: oklch(1 0 0 / 0.25);
410
- --color-inset-glow-strong: oklch(1 0 0 / 0.16);
411
- --color-inset-glow-subtle: oklch(1 0 0 / 0.10);
412
- --color-surface-overlay-light: oklch(1 0 0 / 0.20);
413
- --color-surface-overlay-dark: oklch(0 0 0 / 0.12);
414
- --color-text-shadow: oklch(0 0 0 / 0.15);
415
- }
416
-
417
- /* ═══════════════════════════════════════════════════════════
418
- DARK MODE
419
- ═══════════════════════════════════════════════════════════ */
420
- .dark {
421
- color-scheme: dark;
422
-
423
- /* Foreground on solid accent/status backgrounds — pure white on brand colors */
424
- --color-accent-fg: var(--neutral-0);
425
- --color-secondary-fg: var(--neutral-0);
426
- --color-error-fg: var(--neutral-0);
427
- --color-success-fg: var(--neutral-0);
428
- --color-info-fg: var(--neutral-0);
429
-
430
- /* Warning: amber-bright dark ramp for dark mode */
431
- --color-warning-2: var(--amber-bright-2);
432
- --color-warning-3: var(--amber-bright-3);
433
- --color-warning-4: var(--amber-bright-4);
434
- --color-warning-5: var(--amber-bright-5);
435
- --color-warning-7: var(--amber-bright-7);
436
- --color-warning-9: var(--amber-bright-9);
437
- --color-warning-10: var(--amber-bright-10);
438
- --color-warning-11: var(--amber-bright-11);
439
- --color-warning-fg: var(--neutral-0);
440
-
441
- /* Dark mode borders need lower contrast bright borders look harsh.
442
- Drop to step 3/4 for subtle resting borders that don't overpower surfaces */
443
- /* Dark mode: restore base/raised to original direction (raised = lighter than base) */
444
- --color-surface-base: var(--neutral-1); /* 0.11L — dark page */
445
- --color-surface-raised: var(--neutral-2); /* 0.17L — lighter cards */
446
-
447
- --color-surface-border: var(--neutral-4); /* was neutral-3; bumped for contrast */
448
- --color-surface-border-strong: var(--neutral-5); /* was neutral-4 */
449
- --color-surface-overlay: oklch(0.13 0.0002 350);
450
- --color-surface-border-subtle: var(--neutral-3); /* was neutral-2 = same as raised = invisible (1:1) */
451
- --color-backdrop: oklch(0 0 0 / 0.6);
452
-
453
- /* Overlay */
454
- --color-overlay: oklch(0 0 0 / 0.70);
455
-
456
- /* Action State Opacities (higher in dark mode) */
457
- --action-hover-opacity: 0.08;
458
- --action-selected-opacity: 0.12;
459
- --action-disabled-opacity: 0.38;
460
- --action-focus-opacity: 0.12;
461
- --action-active-opacity: 0.16;
462
-
463
- /* Skeleton */
464
- --color-skeleton-base: var(--neutral-4);
465
- --color-skeleton-shimmer: var(--neutral-3);
466
-
467
- /* Shadows (heavier in dark mode) */
468
- --shadow-strength: 2.5;
469
- --shadow-brand: 0 2px 8px oklch(0.55 0.19 360 / 0.30), 0 6px 20px oklch(0.55 0.19 360 / 0.20);
470
- --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);
471
- --shadow-ring: 0 0 0 2px oklch(0.55 0.19 360 / 0.45);
472
- --shadow-raised-inner: inset 0 1px 0 oklch(1 0 0 / 0.06), inset 0 -1px 0 oklch(0 0 0 / 0.12);
473
- --shadow-success: 0 2px 8px oklch(0.6 0.14 145 / 0.30), 0 6px 20px oklch(0.6 0.14 145 / 0.20);
474
- --shadow-error: 0 2px 8px oklch(0.6 0.18 25 / 0.30), 0 6px 20px oklch(0.6 0.18 25 / 0.20);
475
- --shadow-warning: 0 2px 8px oklch(0.78 0.16 65 / 0.30), 0 6px 20px oklch(0.78 0.16 65 / 0.20);
476
-
477
- /* Gradients */
478
- --gradient-brand-light: linear-gradient(135deg, var(--pink-9), var(--purple-9));
479
- --gradient-brand-dark: linear-gradient(135deg, var(--pink-10), var(--purple-10));
480
-
481
- /* Chart Palette (dark — use step 9 which is brighter in dark) */
482
- --chart-1: var(--pink-9);
483
- --chart-2: var(--purple-9);
484
- --chart-3: var(--blue-9);
485
- --chart-4: var(--green-9);
486
- --chart-5: var(--yellow-9);
487
- --chart-6: var(--red-9);
488
- --chart-7: var(--cyan-9);
489
- --chart-8: var(--orange-9);
490
-
491
- /* Inset Glow & Overlay */
492
- --color-inset-glow: oklch(1 0 0 / 0.10);
493
- --color-inset-glow-strong: oklch(1 0 0 / 0.08);
494
- --color-inset-glow-subtle: oklch(1 0 0 / 0.05);
495
- --color-surface-overlay-light: oklch(1 0 0 / 0.08);
496
- --color-surface-overlay-dark: oklch(0 0 0 / 0.25);
497
- --color-text-shadow: oklch(0 0 0 / 0.40);
498
- }
499
-
500
- /* Ensure Radix popper content (Select, Combobox, Popover, etc.)
501
- renders above Sheet/Dialog overlays */
502
- [data-radix-popper-content-wrapper] {
503
- z-index: var(--z-popover) !important;
504
- }
505
-
506
- /* ── Reduced Motion ──────────────────────────────────── */
507
- /* ═══════════════════════════════════════════════════════════
508
- PROCESSING ANIMATIONS
509
- ═══════════════════════════════════════════════════════════ */
510
-
511
- @property --border-angle {
512
- syntax: "<angle>";
513
- initial-value: 0deg;
514
- inherits: false;
515
- }
516
-
517
- @keyframes processing-ants-rotate {
518
- to {
519
- --border-angle: 360deg;
520
- }
521
- }
522
-
523
- @keyframes processing-ants-march {
524
- to {
525
- background-position: 16px 0, 100% 16px, calc(100% - 16px) 100%, 0 calc(100% - 16px);
526
- }
527
- }
528
-
529
- @keyframes processing-ants-svg {
530
- to {
531
- stroke-dashoffset: -10;
532
- }
533
- }
534
-
535
- /* ═══════════════════════════════════════════════════════════ */
536
-
537
- @media (prefers-reduced-motion: reduce) {
538
-
539
- *,
540
- *::before,
541
- *::after {
542
- animation-duration: 0.01ms !important;
543
- animation-iteration-count: 1 !important;
544
- transition-duration: 0.01ms !important;
545
- scroll-behavior: auto !important;
546
- }
547
- }
1
+ :root {
2
+ color-scheme: light;
3
+
4
+ /* ═══════════════════════════════════════════════════════════
5
+ TYPOGRAPHY
6
+ ═══════════════════════════════════════════════════════════ */
7
+
8
+ /* Font families — override these with next/font CSS variables */
9
+ --font-sans: "Inter", system-ui, sans-serif;
10
+ --font-display: "Inter", system-ui, sans-serif;
11
+ --font-body: "Inter", system-ui, sans-serif;
12
+ --font-accent: Ranade, sans-serif;
13
+ --font-mono: "SF Mono", "Fira Code", monospace;
14
+
15
+ /* ── Font Weights ──────────────────────────── */
16
+ --font-weight-light: 300;
17
+ --font-weight-regular: 400;
18
+ --font-weight-medium: 500;
19
+ --font-weight-semibold: 600;
20
+ --font-weight-bold: 700;
21
+
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
+ /* ═══════════════════════════════════════════════════════════
64
+ 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);
75
+ --color-accent-10: var(--pink-10);
76
+ --color-accent-11: var(--pink-11);
77
+ --color-accent-12: var(--pink-12);
78
+ --color-accent-fg: var(--neutral-1);
79
+
80
+ /* ═══════════════════════════════════════════════════════════
81
+ 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);
92
+ --color-secondary-10: var(--purple-10);
93
+ --color-secondary-11: var(--purple-11);
94
+ --color-secondary-12: var(--purple-12);
95
+ --color-secondary-fg: var(--neutral-1);
96
+
97
+ /* ═══════════════════════════════════════════════════════════
98
+ 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);
106
+ --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
+ /* ═══════════════════════════════════════════════════════════
121
+ 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);
129
+ --color-error-10: var(--red-10);
130
+ --color-error-11: var(--red-11);
131
+ --color-error-fg: var(--neutral-1);
132
+
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);
140
+ --color-success-10: var(--green-10);
141
+ --color-success-11: var(--green-11);
142
+ --color-success-fg: var(--neutral-1);
143
+
144
+ /* ═══ Status — Warning (amber-bright — lightness-corrected) ═══ */
145
+ --color-warning-2: var(--amber-bright-2);
146
+ --color-warning-3: var(--amber-bright-3);
147
+ --color-warning-4: var(--amber-bright-4);
148
+ --color-warning-5: var(--amber-bright-5);
149
+ --color-warning-7: var(--amber-bright-7);
150
+ --color-warning-9: var(--amber-bright-9);
151
+ --color-warning-10: var(--amber-bright-10);
152
+ --color-warning-11: var(--amber-bright-11);
153
+ --color-warning-fg: oklch(0.25 0.01 55);
154
+
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);
162
+ --color-info-10: var(--blue-10);
163
+ --color-info-11: var(--blue-11);
164
+ --color-info-fg: var(--neutral-1);
165
+
166
+ /* ═══════════════════════════════════════════════════════════
167
+ 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 */
172
+
173
+ /* ═══════════════════════════════════════════════════════════
174
+ 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);
209
+ --color-category-emerald-11: var(--emerald-11);
210
+
211
+ /* ═══════════════════════════════════════════════════════════
212
+ SKELETON
213
+ ═══════════════════════════════════════════════════════════ */
214
+ --color-skeleton-base: var(--neutral-3);
215
+ --color-skeleton-shimmer: var(--neutral-2);
216
+
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
+ /* ═══════════════════════════════════════════════════════════
233
+ 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
+ /* ═══════════════════════════════════════════════════════════
263
+ 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) ── */
289
+ --ease-productive-standard: cubic-bezier(0.2, 0, 0.38, 0.9);
290
+ --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) ── */
294
+ --ease-expressive-standard: cubic-bezier(0.4, 0.14, 0.3, 1);
295
+ --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 ── */
299
+ --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
300
+ --ease-linear: linear;
301
+
302
+ /* ═══════════════════════════════════════════════════════════
303
+ SHADOWS
304
+ ═══════════════════════════════════════════════════════════ */
305
+
306
+ /* Shadow color: cool blue tint for natural depth */
307
+ --shadow-color: 0.15 0.015 260;
308
+ --shadow-strength: 1;
309
+
310
+ /* Shadow transition */
311
+ --shadow-transition: box-shadow var(--duration-fast-02) var(--ease-productive-standard);
312
+
313
+ /* Keyboard shortcut badge shadow */
314
+ --shadow-kbd: inset 0 -1px 0 oklch(0 0 0 / 0.1);
315
+
316
+ /* Shadow primitives (internal) */
317
+ --shadow-xs:
318
+ 0 0 0 1px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
319
+ 0 0.5px 1px -0.5px oklch(var(--shadow-color) / calc(0.045 * var(--shadow-strength))),
320
+ 0 1.5px 3px -1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
321
+ 0 3px 7px -2px oklch(var(--shadow-color) / calc(0.03 * var(--shadow-strength)));
322
+ --shadow-sm:
323
+ 0 0 0 1px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
324
+ 0 0.5px 1px -0.5px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
325
+ 0 2px 4px -1.5px oklch(var(--shadow-color) / calc(0.045 * var(--shadow-strength))),
326
+ 0 6px 12px -3px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
327
+ 0 14px 28px -8px oklch(var(--shadow-color) / calc(0.025 * var(--shadow-strength)));
328
+ --shadow-md:
329
+ 0 0 0 1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
330
+ 0 1px 2px -1px oklch(var(--shadow-color) / calc(0.05 * var(--shadow-strength))),
331
+ 0 4px 8px -2px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
332
+ 0 10px 20px -5px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
333
+ 0 24px 44px -12px oklch(var(--shadow-color) / calc(0.025 * var(--shadow-strength)));
334
+ --shadow-lg:
335
+ 0 0 0 1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
336
+ 0 1px 2px -1px oklch(var(--shadow-color) / calc(0.05 * var(--shadow-strength))),
337
+ 0 3px 6px -2px oklch(var(--shadow-color) / calc(0.045 * var(--shadow-strength))),
338
+ 0 8px 16px -4px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
339
+ 0 18px 34px -8px oklch(var(--shadow-color) / calc(0.03 * var(--shadow-strength))),
340
+ 0 40px 64px -16px oklch(var(--shadow-color) / calc(0.025 * var(--shadow-strength)));
341
+
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;
366
+ --size-xs-plus: 28px;
367
+ --size-sm: 32px;
368
+ --size-sm-plus: 36px;
369
+ --size-md: 40px;
370
+ --size-lg: 48px;
371
+ --size-xl: 56px;
372
+ --icon-sm: 16px;
373
+ --icon-md: 20px;
374
+ --icon-lg: 24px;
375
+ --icon-xl: 32px;
376
+ --border-width-sm: 1px;
377
+ --border-width-md: 2px;
378
+ --border-width-lg: 3px;
379
+ --border-focus-width: 2px;
380
+ --border-focus-offset: 2px;
381
+
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;
397
+ --max-width-body: 960px;
398
+
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
+ ═══════════════════════════════════════════════════════════ */
409
+ --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));
411
+
412
+ /* ═══════════════════════════════════════════════════════════
413
+ CHART PALETTE
414
+ ═══════════════════════════════════════════════════════════ */
415
+ --chart-1: var(--pink-9);
416
+ --chart-2: var(--purple-9);
417
+ --chart-3: var(--blue-9);
418
+ --chart-4: var(--green-9);
419
+ --chart-5: var(--yellow-9);
420
+ --chart-6: var(--red-9);
421
+ --chart-7: var(--cyan-9);
422
+ --chart-8: var(--orange-9);
423
+
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);
430
+ --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);
433
+ }
434
+
435
+ /* ═══════════════════════════════════════════════════════════
436
+ DARK MODE
437
+ ═══════════════════════════════════════════════════════════ */
438
+ .dark {
439
+ color-scheme: dark;
440
+
441
+ /* Foreground on solid accent/status backgroundspure white on brand colors */
442
+ --color-accent-fg: var(--neutral-0);
443
+ --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);
447
+
448
+ /* Warning: amber-bright dark ramp for dark mode */
449
+ --color-warning-2: var(--amber-bright-2);
450
+ --color-warning-3: var(--amber-bright-3);
451
+ --color-warning-4: var(--amber-bright-4);
452
+ --color-warning-5: var(--amber-bright-5);
453
+ --color-warning-7: var(--amber-bright-7);
454
+ --color-warning-9: var(--amber-bright-9);
455
+ --color-warning-10: var(--amber-bright-10);
456
+ --color-warning-11: var(--amber-bright-11);
457
+ --color-warning-fg: var(--neutral-0);
458
+
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);
473
+
474
+ /* Overlay */
475
+ --color-overlay: oklch(0 0 0 / 0.70);
476
+
477
+ /* Action State Opacities (higher in dark mode) */
478
+ --action-hover-opacity: 0.08;
479
+ --action-selected-opacity: 0.12;
480
+ --action-disabled-opacity: 0.38;
481
+ --action-focus-opacity: 0.12;
482
+ --action-active-opacity: 0.16;
483
+
484
+ /* Skeleton */
485
+ --color-skeleton-base: var(--neutral-4);
486
+ --color-skeleton-shimmer: var(--neutral-3);
487
+
488
+ /* Shadows (heavier in dark mode) */
489
+ --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);
493
+ --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);
497
+
498
+ /* Gradients */
499
+ --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));
501
+
502
+ /* Chart Palette (dark — use step 9 which is brighter in dark) */
503
+ --chart-1: var(--pink-9);
504
+ --chart-2: var(--purple-9);
505
+ --chart-3: var(--blue-9);
506
+ --chart-4: var(--green-9);
507
+ --chart-5: var(--yellow-9);
508
+ --chart-6: var(--red-9);
509
+ --chart-7: var(--cyan-9);
510
+ --chart-8: var(--orange-9);
511
+
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);
516
+ --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);
519
+ }
520
+
521
+ /* Ensure Radix popper content (Select, Combobox, Popover, etc.)
522
+ renders above Sheet/Dialog overlays */
523
+ [data-radix-popper-content-wrapper] {
524
+ z-index: var(--z-popover) !important;
525
+ }
526
+
527
+ /* ── Responsive Layout Spacing ──────────────────────── */
528
+ @media (min-width: 768px) {
529
+ :root {
530
+ --spacing-page-x: var(--spacing-06); /* 24px on tablet+ */
531
+ --spacing-section-gap: var(--spacing-10); /* 64px on tablet+ */
532
+ }
533
+ }
534
+
535
+ @media (min-width: 1280px) {
536
+ :root {
537
+ --spacing-page-x: var(--spacing-08); /* 40px on desktop+ */
538
+ }
539
+ }
540
+
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
+ /* ═══════════════════════════════════════════════════════════ */
571
+
572
+ @media (prefers-reduced-motion: reduce) {
573
+
574
+ *,
575
+ *::before,
576
+ *::after {
577
+ animation-duration: 0.01ms !important;
578
+ animation-iteration-count: 1 !important;
579
+ transition-duration: 0.01ms !important;
580
+ scroll-behavior: auto !important;
581
+ }
582
+ }
583
+
584
+ /* ═══════════════════════════════════════════════════════════
585
+ FORCED COLORS (Windows High Contrast, etc.)
586
+ ───────────────────────────────────────────────────────────
587
+ 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
+ ═══════════════════════════════════════════════════════════ */
601
+ @media (forced-colors: active) {
602
+ :root,
603
+ .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 */
613
+ --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;
621
+ --color-backdrop: Canvas;
622
+ --color-overlay: Canvas;
623
+ --color-disabled: GrayText;
624
+
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. */
630
+ --color-accent-1: Canvas;
631
+ --color-accent-2: Canvas;
632
+ --color-accent-3: Canvas;
633
+ --color-accent-4: Canvas;
634
+ --color-accent-5: Canvas;
635
+ --color-accent-6: Canvas;
636
+ --color-accent-7: Highlight;
637
+ --color-accent-8: Highlight;
638
+ --color-accent-9: Highlight;
639
+ --color-accent-10: Highlight;
640
+ --color-accent-11: LinkText;
641
+ --color-accent-12: LinkText;
642
+ --color-accent-fg: HighlightText;
643
+
644
+ /* ── Secondary accent ── (same pattern) */
645
+ --color-secondary-9: Highlight;
646
+ --color-secondary-10: Highlight;
647
+ --color-secondary-11: LinkText;
648
+ --color-secondary-12: LinkText;
649
+ --color-secondary-fg: HighlightText;
650
+
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. */
658
+ --color-error-3: Canvas;
659
+ --color-error-4: Canvas;
660
+ --color-error-5: Canvas;
661
+ --color-error-7: CanvasText;
662
+ --color-error-9: Mark;
663
+ --color-error-10: Mark;
664
+ --color-error-11: CanvasText;
665
+ --color-error-fg: CanvasText;
666
+
667
+ --color-success-3: Canvas;
668
+ --color-success-4: Canvas;
669
+ --color-success-5: Canvas;
670
+ --color-success-7: CanvasText;
671
+ --color-success-9: Highlight;
672
+ --color-success-10: Highlight;
673
+ --color-success-11: CanvasText;
674
+ --color-success-fg: HighlightText;
675
+
676
+ --color-warning-3: Canvas;
677
+ --color-warning-4: Canvas;
678
+ --color-warning-5: Canvas;
679
+ --color-warning-7: CanvasText;
680
+ --color-warning-9: Highlight;
681
+ --color-warning-10: Highlight;
682
+ --color-warning-11: CanvasText;
683
+ --color-warning-fg: HighlightText;
684
+
685
+ --color-info-3: Canvas;
686
+ --color-info-4: Canvas;
687
+ --color-info-5: Canvas;
688
+ --color-info-7: CanvasText;
689
+ --color-info-9: Highlight;
690
+ --color-info-10: Highlight;
691
+ --color-info-11: CanvasText;
692
+ --color-info-fg: HighlightText;
693
+
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;
699
+ --color-link-visited: VisitedText;
700
+
701
+ /* ── Skeleton ── collapse to Canvas; shimmer animation still runs */
702
+ --color-skeleton-base: GrayText;
703
+ --color-skeleton-shimmer: Canvas;
704
+ }
705
+
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. */
709
+ *:focus-visible {
710
+ outline: 2px solid Highlight !important;
711
+ outline-offset: 2px !important;
712
+ }
713
+
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. */
719
+ button,
720
+ [role="button"],
721
+ [role="menuitem"],
722
+ [role="option"],
723
+ [role="tab"] {
724
+ border: 1px solid ButtonText;
725
+ }
726
+
727
+ input,
728
+ select,
729
+ textarea {
730
+ border: 1px solid CanvasText;
731
+ }
732
+
733
+ /* Decorative texture layers are pure noise in high-contrast mode. */
734
+ [data-grain] {
735
+ display: none;
736
+ }
737
+
738
+ /* Skeleton shimmer can feel alarming in high-contrast; keep static. */
739
+ [data-skeleton] {
740
+ animation: none !important;
741
+ }
742
+ }