@cellarnode/ui 0.1.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 (378) hide show
  1. package/dist/chat/chat-api.d.ts +14 -0
  2. package/dist/chat/chat-api.d.ts.map +1 -0
  3. package/dist/chat/chat-api.js +36 -0
  4. package/dist/chat/chat-api.js.map +1 -0
  5. package/dist/chat/chat-toggle-button.d.ts +8 -0
  6. package/dist/chat/chat-toggle-button.d.ts.map +1 -0
  7. package/dist/chat/chat-toggle-button.js +8 -0
  8. package/dist/chat/chat-toggle-button.js.map +1 -0
  9. package/dist/chat/chat-ws.d.ts +61 -0
  10. package/dist/chat/chat-ws.d.ts.map +1 -0
  11. package/dist/chat/chat-ws.js +217 -0
  12. package/dist/chat/chat-ws.js.map +1 -0
  13. package/dist/chat/communication-hub-widget.d.ts +21 -0
  14. package/dist/chat/communication-hub-widget.d.ts.map +1 -0
  15. package/dist/chat/communication-hub-widget.js +49 -0
  16. package/dist/chat/communication-hub-widget.js.map +1 -0
  17. package/dist/chat/communication-panel.d.ts +3 -0
  18. package/dist/chat/communication-panel.d.ts.map +1 -0
  19. package/dist/chat/communication-panel.js +34 -0
  20. package/dist/chat/communication-panel.js.map +1 -0
  21. package/dist/chat/index.d.ts +17 -0
  22. package/dist/chat/index.d.ts.map +1 -0
  23. package/dist/chat/index.js +11 -0
  24. package/dist/chat/index.js.map +1 -0
  25. package/dist/chat/messenger-layout.d.ts +25 -0
  26. package/dist/chat/messenger-layout.d.ts.map +1 -0
  27. package/dist/chat/messenger-layout.js +70 -0
  28. package/dist/chat/messenger-layout.js.map +1 -0
  29. package/dist/chat/negotiation-event-card.d.ts +9 -0
  30. package/dist/chat/negotiation-event-card.d.ts.map +1 -0
  31. package/dist/chat/negotiation-event-card.js +39 -0
  32. package/dist/chat/negotiation-event-card.js.map +1 -0
  33. package/dist/chat/timeline-utils.d.ts +7 -0
  34. package/dist/chat/timeline-utils.d.ts.map +1 -0
  35. package/dist/chat/timeline-utils.js +40 -0
  36. package/dist/chat/timeline-utils.js.map +1 -0
  37. package/dist/chat/types.d.ts +132 -0
  38. package/dist/chat/types.d.ts.map +1 -0
  39. package/dist/chat/types.js +3 -0
  40. package/dist/chat/types.js.map +1 -0
  41. package/dist/chat/unified-timeline.d.ts +13 -0
  42. package/dist/chat/unified-timeline.d.ts.map +1 -0
  43. package/dist/chat/unified-timeline.js +97 -0
  44. package/dist/chat/unified-timeline.js.map +1 -0
  45. package/dist/chat/use-chat.d.ts +10 -0
  46. package/dist/chat/use-chat.d.ts.map +1 -0
  47. package/dist/chat/use-chat.js +280 -0
  48. package/dist/chat/use-chat.js.map +1 -0
  49. package/dist/components/accordion.d.ts +8 -0
  50. package/dist/components/accordion.d.ts.map +1 -0
  51. package/dist/components/accordion.js +19 -0
  52. package/dist/components/accordion.js.map +1 -0
  53. package/dist/components/alert.d.ts +29 -0
  54. package/dist/components/alert.d.ts.map +1 -0
  55. package/dist/components/alert.js +31 -0
  56. package/dist/components/alert.js.map +1 -0
  57. package/dist/components/animated-list.d.ts +20 -0
  58. package/dist/components/animated-list.d.ts.map +1 -0
  59. package/dist/components/animated-list.js +50 -0
  60. package/dist/components/animated-list.js.map +1 -0
  61. package/dist/components/avatar.d.ts +19 -0
  62. package/dist/components/avatar.d.ts.map +1 -0
  63. package/dist/components/avatar.js +18 -0
  64. package/dist/components/avatar.js.map +1 -0
  65. package/dist/components/badge.d.ts +39 -0
  66. package/dist/components/badge.d.ts.map +1 -0
  67. package/dist/components/badge.js +35 -0
  68. package/dist/components/badge.js.map +1 -0
  69. package/dist/components/button.d.ts +64 -0
  70. package/dist/components/button.d.ts.map +1 -0
  71. package/dist/components/button.js +174 -0
  72. package/dist/components/button.js.map +1 -0
  73. package/dist/components/button.stories.d.ts +13 -0
  74. package/dist/components/button.stories.d.ts.map +1 -0
  75. package/dist/components/button.stories.js +48 -0
  76. package/dist/components/button.stories.js.map +1 -0
  77. package/dist/components/card.d.ts +9 -0
  78. package/dist/components/card.d.ts.map +1 -0
  79. package/dist/components/card.js +17 -0
  80. package/dist/components/card.js.map +1 -0
  81. package/dist/components/checkbox.d.ts +37 -0
  82. package/dist/components/checkbox.d.ts.map +1 -0
  83. package/dist/components/checkbox.js +84 -0
  84. package/dist/components/checkbox.js.map +1 -0
  85. package/dist/components/combobox.d.ts +20 -0
  86. package/dist/components/combobox.d.ts.map +1 -0
  87. package/dist/components/combobox.js +87 -0
  88. package/dist/components/combobox.js.map +1 -0
  89. package/dist/components/command.d.ts +12 -0
  90. package/dist/components/command.d.ts.map +1 -0
  91. package/dist/components/command.js +31 -0
  92. package/dist/components/command.js.map +1 -0
  93. package/dist/components/description-list.d.ts +4 -0
  94. package/dist/components/description-list.d.ts.map +1 -0
  95. package/dist/components/description-list.js +12 -0
  96. package/dist/components/description-list.js.map +1 -0
  97. package/dist/components/dialog.d.ts +30 -0
  98. package/dist/components/dialog.d.ts.map +1 -0
  99. package/dist/components/dialog.js +32 -0
  100. package/dist/components/dialog.js.map +1 -0
  101. package/dist/components/divider.d.ts +4 -0
  102. package/dist/components/divider.d.ts.map +1 -0
  103. package/dist/components/divider.js +6 -0
  104. package/dist/components/divider.js.map +1 -0
  105. package/dist/components/drawer.d.ts +23 -0
  106. package/dist/components/drawer.d.ts.map +1 -0
  107. package/dist/components/drawer.js +23 -0
  108. package/dist/components/drawer.js.map +1 -0
  109. package/dist/components/dropdown-menu.d.ts +26 -0
  110. package/dist/components/dropdown-menu.d.ts.map +1 -0
  111. package/dist/components/dropdown-menu.js +52 -0
  112. package/dist/components/dropdown-menu.js.map +1 -0
  113. package/dist/components/dropdown.d.ts +37 -0
  114. package/dist/components/dropdown.d.ts.map +1 -0
  115. package/dist/components/dropdown.js +79 -0
  116. package/dist/components/dropdown.js.map +1 -0
  117. package/dist/components/fieldset.d.ts +22 -0
  118. package/dist/components/fieldset.d.ts.map +1 -0
  119. package/dist/components/fieldset.js +25 -0
  120. package/dist/components/fieldset.js.map +1 -0
  121. package/dist/components/form.d.ts +25 -0
  122. package/dist/components/form.d.ts.map +1 -0
  123. package/dist/components/form.js +60 -0
  124. package/dist/components/form.js.map +1 -0
  125. package/dist/components/heading.d.ts +7 -0
  126. package/dist/components/heading.d.ts.map +1 -0
  127. package/dist/components/heading.js +11 -0
  128. package/dist/components/heading.js.map +1 -0
  129. package/dist/components/input.d.ts +11 -0
  130. package/dist/components/input.d.ts.map +1 -0
  131. package/dist/components/input.js +57 -0
  132. package/dist/components/input.js.map +1 -0
  133. package/dist/components/kanban-board.d.ts +78 -0
  134. package/dist/components/kanban-board.d.ts.map +1 -0
  135. package/dist/components/kanban-board.js +18 -0
  136. package/dist/components/kanban-board.js.map +1 -0
  137. package/dist/components/kanban-board.stories.d.ts +10 -0
  138. package/dist/components/kanban-board.stories.d.ts.map +1 -0
  139. package/dist/components/kanban-board.stories.js +125 -0
  140. package/dist/components/kanban-board.stories.js.map +1 -0
  141. package/dist/components/kanban-card.d.ts +8 -0
  142. package/dist/components/kanban-card.d.ts.map +1 -0
  143. package/dist/components/kanban-card.js +13 -0
  144. package/dist/components/kanban-card.js.map +1 -0
  145. package/dist/components/kanban-dnd-board.d.ts +8 -0
  146. package/dist/components/kanban-dnd-board.d.ts.map +1 -0
  147. package/dist/components/kanban-dnd-board.js +104 -0
  148. package/dist/components/kanban-dnd-board.js.map +1 -0
  149. package/dist/components/label.d.ts +5 -0
  150. package/dist/components/label.d.ts.map +1 -0
  151. package/dist/components/label.js +9 -0
  152. package/dist/components/label.js.map +1 -0
  153. package/dist/components/link.d.ts +12 -0
  154. package/dist/components/link.d.ts.map +1 -0
  155. package/dist/components/link.js +14 -0
  156. package/dist/components/link.js.map +1 -0
  157. package/dist/components/listbox.d.ts +16 -0
  158. package/dist/components/listbox.d.ts.map +1 -0
  159. package/dist/components/listbox.js +88 -0
  160. package/dist/components/listbox.js.map +1 -0
  161. package/dist/components/pagination.d.ts +18 -0
  162. package/dist/components/pagination.d.ts.map +1 -0
  163. package/dist/components/pagination.js +22 -0
  164. package/dist/components/pagination.js.map +1 -0
  165. package/dist/components/popover.d.ts +11 -0
  166. package/dist/components/popover.d.ts.map +1 -0
  167. package/dist/components/popover.js +27 -0
  168. package/dist/components/popover.js.map +1 -0
  169. package/dist/components/radio.d.ts +38 -0
  170. package/dist/components/radio.d.ts.map +1 -0
  171. package/dist/components/radio.js +87 -0
  172. package/dist/components/radio.js.map +1 -0
  173. package/dist/components/scroll-area.d.ts +6 -0
  174. package/dist/components/scroll-area.d.ts.map +1 -0
  175. package/dist/components/scroll-area.js +14 -0
  176. package/dist/components/scroll-area.js.map +1 -0
  177. package/dist/components/select.d.ts +6 -0
  178. package/dist/components/select.d.ts.map +1 -0
  179. package/dist/components/select.js +41 -0
  180. package/dist/components/select.js.map +1 -0
  181. package/dist/components/separator.d.ts +5 -0
  182. package/dist/components/separator.d.ts.map +1 -0
  183. package/dist/components/separator.js +9 -0
  184. package/dist/components/separator.js.map +1 -0
  185. package/dist/components/shadcn-badge.d.ts +10 -0
  186. package/dist/components/shadcn-badge.d.ts.map +1 -0
  187. package/dist/components/shadcn-badge.js +25 -0
  188. package/dist/components/shadcn-badge.js.map +1 -0
  189. package/dist/components/shadcn-button.d.ts +11 -0
  190. package/dist/components/shadcn-button.d.ts.map +1 -0
  191. package/dist/components/shadcn-button.js +36 -0
  192. package/dist/components/shadcn-button.js.map +1 -0
  193. package/dist/components/shadcn-dialog.d.ts +18 -0
  194. package/dist/components/shadcn-dialog.d.ts.map +1 -0
  195. package/dist/components/shadcn-dialog.js +37 -0
  196. package/dist/components/shadcn-dialog.js.map +1 -0
  197. package/dist/components/shadcn-input.d.ts +4 -0
  198. package/dist/components/shadcn-input.d.ts.map +1 -0
  199. package/dist/components/shadcn-input.js +7 -0
  200. package/dist/components/shadcn-input.js.map +1 -0
  201. package/dist/components/shadcn-select.d.ts +14 -0
  202. package/dist/components/shadcn-select.d.ts.map +1 -0
  203. package/dist/components/shadcn-select.js +32 -0
  204. package/dist/components/shadcn-select.js.map +1 -0
  205. package/dist/components/shadcn-textarea.d.ts +4 -0
  206. package/dist/components/shadcn-textarea.d.ts.map +1 -0
  207. package/dist/components/shadcn-textarea.js +7 -0
  208. package/dist/components/shadcn-textarea.js.map +1 -0
  209. package/dist/components/sheet.d.ts +26 -0
  210. package/dist/components/sheet.d.ts.map +1 -0
  211. package/dist/components/sheet.js +37 -0
  212. package/dist/components/sheet.js.map +1 -0
  213. package/dist/components/sidebar.d.ts +68 -0
  214. package/dist/components/sidebar.d.ts.map +1 -0
  215. package/dist/components/sidebar.js +208 -0
  216. package/dist/components/sidebar.js.map +1 -0
  217. package/dist/components/skeleton.d.ts +3 -0
  218. package/dist/components/skeleton.d.ts.map +1 -0
  219. package/dist/components/skeleton.js +7 -0
  220. package/dist/components/skeleton.js.map +1 -0
  221. package/dist/components/slider.d.ts +5 -0
  222. package/dist/components/slider.d.ts.map +1 -0
  223. package/dist/components/slider.js +8 -0
  224. package/dist/components/slider.js.map +1 -0
  225. package/dist/components/sonner.d.ts +11 -0
  226. package/dist/components/sonner.d.ts.map +1 -0
  227. package/dist/components/sonner.js +14 -0
  228. package/dist/components/sonner.js.map +1 -0
  229. package/dist/components/switch.d.ts +30 -0
  230. package/dist/components/switch.d.ts.map +1 -0
  231. package/dist/components/switch.js +68 -0
  232. package/dist/components/switch.js.map +1 -0
  233. package/dist/components/table.d.ts +17 -0
  234. package/dist/components/table.d.ts.map +1 -0
  235. package/dist/components/table.js +41 -0
  236. package/dist/components/table.js.map +1 -0
  237. package/dist/components/tabs.d.ts +12 -0
  238. package/dist/components/tabs.d.ts.map +1 -0
  239. package/dist/components/tabs.js +30 -0
  240. package/dist/components/tabs.js.map +1 -0
  241. package/dist/components/text.d.ts +6 -0
  242. package/dist/components/text.d.ts.map +1 -0
  243. package/dist/components/text.js +16 -0
  244. package/dist/components/text.js.map +1 -0
  245. package/dist/components/textarea.d.ts +8 -0
  246. package/dist/components/textarea.d.ts.map +1 -0
  247. package/dist/components/textarea.js +38 -0
  248. package/dist/components/textarea.js.map +1 -0
  249. package/dist/components/toast.d.ts +16 -0
  250. package/dist/components/toast.d.ts.map +1 -0
  251. package/dist/components/toast.js +34 -0
  252. package/dist/components/toast.js.map +1 -0
  253. package/dist/components/toaster.d.ts +2 -0
  254. package/dist/components/toaster.d.ts.map +1 -0
  255. package/dist/components/toaster.js +10 -0
  256. package/dist/components/toaster.js.map +1 -0
  257. package/dist/components/tooltip.d.ts +8 -0
  258. package/dist/components/tooltip.d.ts.map +1 -0
  259. package/dist/components/tooltip.js +11 -0
  260. package/dist/components/tooltip.js.map +1 -0
  261. package/dist/components/use-toast.d.ts +3 -0
  262. package/dist/components/use-toast.d.ts.map +1 -0
  263. package/dist/components/use-toast.js +3 -0
  264. package/dist/components/use-toast.js.map +1 -0
  265. package/dist/globe/data/country-geo.d.ts +15 -0
  266. package/dist/globe/data/country-geo.d.ts.map +1 -0
  267. package/dist/globe/data/country-geo.js +81 -0
  268. package/dist/globe/data/country-geo.js.map +1 -0
  269. package/dist/globe/electron-arc.d.ts +30 -0
  270. package/dist/globe/electron-arc.d.ts.map +1 -0
  271. package/dist/globe/electron-arc.js +119 -0
  272. package/dist/globe/electron-arc.js.map +1 -0
  273. package/dist/globe/globe-theme.d.ts +34 -0
  274. package/dist/globe/globe-theme.d.ts.map +1 -0
  275. package/dist/globe/globe-theme.js +118 -0
  276. package/dist/globe/globe-theme.js.map +1 -0
  277. package/dist/globe/globe-types.d.ts +42 -0
  278. package/dist/globe/globe-types.d.ts.map +1 -0
  279. package/dist/globe/globe-types.js +5 -0
  280. package/dist/globe/globe-types.js.map +1 -0
  281. package/dist/globe/globe-view.d.ts +27 -0
  282. package/dist/globe/globe-view.d.ts.map +1 -0
  283. package/dist/globe/globe-view.js +601 -0
  284. package/dist/globe/globe-view.js.map +1 -0
  285. package/dist/globe/globe-view.stories.d.ts +42 -0
  286. package/dist/globe/globe-view.stories.d.ts.map +1 -0
  287. package/dist/globe/globe-view.stories.js +319 -0
  288. package/dist/globe/globe-view.stories.js.map +1 -0
  289. package/dist/globe/index.d.ts +12 -0
  290. package/dist/globe/index.d.ts.map +1 -0
  291. package/dist/globe/index.js +7 -0
  292. package/dist/globe/index.js.map +1 -0
  293. package/dist/globe/map/country-code-map.d.ts +10 -0
  294. package/dist/globe/map/country-code-map.d.ts.map +1 -0
  295. package/dist/globe/map/country-code-map.js +15 -0
  296. package/dist/globe/map/country-code-map.js.map +1 -0
  297. package/dist/globe/map/map-geometry.d.ts +10 -0
  298. package/dist/globe/map/map-geometry.d.ts.map +1 -0
  299. package/dist/globe/map/map-geometry.js +57 -0
  300. package/dist/globe/map/map-geometry.js.map +1 -0
  301. package/dist/globe/map/map-materials.d.ts +8 -0
  302. package/dist/globe/map/map-materials.d.ts.map +1 -0
  303. package/dist/globe/map/map-materials.js +32 -0
  304. package/dist/globe/map/map-materials.js.map +1 -0
  305. package/dist/globe/map/map-projection.d.ts +11 -0
  306. package/dist/globe/map/map-projection.d.ts.map +1 -0
  307. package/dist/globe/map/map-projection.js +17 -0
  308. package/dist/globe/map/map-projection.js.map +1 -0
  309. package/dist/globe/scene-extras.d.ts +10 -0
  310. package/dist/globe/scene-extras.d.ts.map +1 -0
  311. package/dist/globe/scene-extras.js +69 -0
  312. package/dist/globe/scene-extras.js.map +1 -0
  313. package/dist/hooks/use-kanban-dnd.d.ts +23 -0
  314. package/dist/hooks/use-kanban-dnd.d.ts.map +1 -0
  315. package/dist/hooks/use-kanban-dnd.js +22 -0
  316. package/dist/hooks/use-kanban-dnd.js.map +1 -0
  317. package/dist/hooks/use-mobile.d.ts +2 -0
  318. package/dist/hooks/use-mobile.d.ts.map +1 -0
  319. package/dist/hooks/use-mobile.js +16 -0
  320. package/dist/hooks/use-mobile.js.map +1 -0
  321. package/dist/hooks/use-toast.d.ts +45 -0
  322. package/dist/hooks/use-toast.d.ts.map +1 -0
  323. package/dist/hooks/use-toast.js +125 -0
  324. package/dist/hooks/use-toast.js.map +1 -0
  325. package/dist/index.d.ts +58 -0
  326. package/dist/index.d.ts.map +1 -0
  327. package/dist/index.js +68 -0
  328. package/dist/index.js.map +1 -0
  329. package/dist/lib/currencies.d.ts +33 -0
  330. package/dist/lib/currencies.d.ts.map +1 -0
  331. package/dist/lib/currencies.js +13 -0
  332. package/dist/lib/currencies.js.map +1 -0
  333. package/dist/lib/kanban-transitions.d.ts +12 -0
  334. package/dist/lib/kanban-transitions.d.ts.map +1 -0
  335. package/dist/lib/kanban-transitions.js +13 -0
  336. package/dist/lib/kanban-transitions.js.map +1 -0
  337. package/dist/lib/semantic-tones.d.ts +4 -0
  338. package/dist/lib/semantic-tones.d.ts.map +1 -0
  339. package/dist/lib/semantic-tones.js +35 -0
  340. package/dist/lib/semantic-tones.js.map +1 -0
  341. package/dist/lib/utils.d.ts +3 -0
  342. package/dist/lib/utils.d.ts.map +1 -0
  343. package/dist/lib/utils.js +6 -0
  344. package/dist/lib/utils.js.map +1 -0
  345. package/dist/offer/attachments-folder.d.ts +13 -0
  346. package/dist/offer/attachments-folder.d.ts.map +1 -0
  347. package/dist/offer/attachments-folder.js +20 -0
  348. package/dist/offer/attachments-folder.js.map +1 -0
  349. package/dist/offer/confirm-action-dialog.d.ts +18 -0
  350. package/dist/offer/confirm-action-dialog.d.ts.map +1 -0
  351. package/dist/offer/confirm-action-dialog.js +57 -0
  352. package/dist/offer/confirm-action-dialog.js.map +1 -0
  353. package/dist/offer/index.d.ts +11 -0
  354. package/dist/offer/index.d.ts.map +1 -0
  355. package/dist/offer/index.js +6 -0
  356. package/dist/offer/index.js.map +1 -0
  357. package/dist/offer/inline-counter-form.d.ts +19 -0
  358. package/dist/offer/inline-counter-form.d.ts.map +1 -0
  359. package/dist/offer/inline-counter-form.js +59 -0
  360. package/dist/offer/inline-counter-form.js.map +1 -0
  361. package/dist/offer/negotiation-event-card.d.ts +9 -0
  362. package/dist/offer/negotiation-event-card.d.ts.map +1 -0
  363. package/dist/offer/negotiation-event-card.js +39 -0
  364. package/dist/offer/negotiation-event-card.js.map +1 -0
  365. package/dist/offer/offer-status-badge.d.ts +8 -0
  366. package/dist/offer/offer-status-badge.d.ts.map +1 -0
  367. package/dist/offer/offer-status-badge.js +35 -0
  368. package/dist/offer/offer-status-badge.js.map +1 -0
  369. package/dist/offer/types.d.ts +43 -0
  370. package/dist/offer/types.d.ts.map +1 -0
  371. package/dist/offer/types.js +2 -0
  372. package/dist/offer/types.js.map +1 -0
  373. package/dist/theme/index.d.ts +2 -0
  374. package/dist/theme/index.d.ts.map +1 -0
  375. package/dist/theme/index.js +2 -0
  376. package/dist/theme/index.js.map +1 -0
  377. package/package.json +166 -0
  378. package/src/theme/tokens.css +475 -0
package/package.json ADDED
@@ -0,0 +1,166 @@
1
+ {
2
+ "name": "@cellarnode/ui",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "private": false,
6
+ "description": "Shared UI components, theme tokens, and chat/offer primitives for CellarNode dashboards.",
7
+ "license": "UNLICENSED",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/CellarNode/CellarNode.git",
11
+ "directory": "ui"
12
+ },
13
+ "publishConfig": {
14
+ "registry": "https://registry.npmjs.org/",
15
+ "access": "restricted"
16
+ },
17
+ "main": "./dist/index.js",
18
+ "types": "./dist/index.d.ts",
19
+ "sideEffects": false,
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "default": "./dist/index.js"
24
+ },
25
+ "./theme/tokens.css": "./src/theme/tokens.css",
26
+ "./chat": {
27
+ "types": "./dist/chat/index.d.ts",
28
+ "default": "./dist/chat/index.js"
29
+ },
30
+ "./offer": {
31
+ "types": "./dist/offer/index.d.ts",
32
+ "default": "./dist/offer/index.js"
33
+ },
34
+ "./kanban-dnd": {
35
+ "types": "./dist/components/kanban-dnd-board.d.ts",
36
+ "default": "./dist/components/kanban-dnd-board.js"
37
+ },
38
+ "./kanban-dnd-hooks": {
39
+ "types": "./dist/hooks/use-kanban-dnd.d.ts",
40
+ "default": "./dist/hooks/use-kanban-dnd.js"
41
+ },
42
+ "./globe": {
43
+ "types": "./dist/globe/index.d.ts",
44
+ "default": "./dist/globe/index.js"
45
+ },
46
+ "./animated-list": {
47
+ "types": "./dist/components/animated-list.d.ts",
48
+ "default": "./dist/components/animated-list.js"
49
+ }
50
+ },
51
+ "files": [
52
+ "dist",
53
+ "src/theme/tokens.css"
54
+ ],
55
+ "scripts": {
56
+ "build": "tsc",
57
+ "dev": "tsc --watch",
58
+ "clean": "rm -rf dist",
59
+ "prepublishOnly": "npm run build",
60
+ "storybook": "storybook dev -p 6006",
61
+ "build-storybook": "storybook build"
62
+ },
63
+ "peerDependencies": {
64
+ "@dnd-kit/dom": "^0.3.2",
65
+ "@dnd-kit/react": "^0.3.2",
66
+ "@tanstack/react-query": "^5.0.0",
67
+ "i18n-iso-countries": ">=7.0.0",
68
+ "motion": "^12.0.0",
69
+ "react": "^19.0.0",
70
+ "react-dom": "^19.0.0",
71
+ "react-globe.gl": ">=2.37.0",
72
+ "three": ">=0.170.0",
73
+ "topojson-client": ">=3.0.0",
74
+ "world-atlas": ">=2.0.0"
75
+ },
76
+ "peerDependenciesMeta": {
77
+ "@dnd-kit/dom": {
78
+ "optional": true
79
+ },
80
+ "@dnd-kit/react": {
81
+ "optional": true
82
+ },
83
+ "@tanstack/react-query": {
84
+ "optional": true
85
+ },
86
+ "motion": {
87
+ "optional": true
88
+ },
89
+ "react-globe.gl": {
90
+ "optional": true
91
+ },
92
+ "three": {
93
+ "optional": true
94
+ },
95
+ "topojson-client": {
96
+ "optional": true
97
+ },
98
+ "world-atlas": {
99
+ "optional": true
100
+ },
101
+ "i18n-iso-countries": {
102
+ "optional": true
103
+ }
104
+ },
105
+ "dependencies": {
106
+ "@headlessui/react": "^2.2.9",
107
+ "@heroicons/react": "^2.2.0",
108
+ "@radix-ui/react-accordion": "^1.2.12",
109
+ "@radix-ui/react-avatar": "^1.1.11",
110
+ "@radix-ui/react-checkbox": "^1.3.3",
111
+ "@radix-ui/react-dialog": "^1.1.15",
112
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
113
+ "@radix-ui/react-label": "^2.1.8",
114
+ "@radix-ui/react-popover": "^1.1.15",
115
+ "@radix-ui/react-scroll-area": "^1.2.10",
116
+ "@radix-ui/react-select": "^2.2.6",
117
+ "@radix-ui/react-separator": "^1.1.8",
118
+ "@radix-ui/react-slider": "^1.3.6",
119
+ "@radix-ui/react-slot": "^1.2.4",
120
+ "@radix-ui/react-switch": "^1.2.6",
121
+ "@radix-ui/react-tabs": "^1.1.13",
122
+ "@radix-ui/react-toast": "^1.2.15",
123
+ "@radix-ui/react-tooltip": "^1.2.8",
124
+ "class-variance-authority": "^0.7.1",
125
+ "clsx": "^2.1.1",
126
+ "cmdk": "^1.1.1",
127
+ "date-fns": "^4.1.0",
128
+ "lucide-react": "^1.7.0",
129
+ "radix-ui": "^1.4.3",
130
+ "react-hook-form": "^7.72.0",
131
+ "sonner": "^1.7.4",
132
+ "tailwind-merge": "^2.6.1",
133
+ "vaul": "^1.1.2"
134
+ },
135
+ "devDependencies": {
136
+ "@dnd-kit/dom": "^0.3.2",
137
+ "@dnd-kit/react": "^0.3.2",
138
+ "@storybook/addon-a11y": "^10.3.3",
139
+ "@storybook/addon-docs": "^10.3.3",
140
+ "@storybook/addon-mcp": "^0.4.2",
141
+ "@storybook/addon-themes": "^10.3.3",
142
+ "@storybook/addon-vitest": "^10.3.3",
143
+ "@storybook/react-vite": "^10.3.3",
144
+ "@tailwindcss/vite": "^4.2.2",
145
+ "@tanstack/react-query": "^5.95.2",
146
+ "@types/geojson": "^7946.0.16",
147
+ "@types/react": "^19.2.14",
148
+ "@types/react-dom": "^19.2.3",
149
+ "@types/three": "^0.183.1",
150
+ "@types/topojson-client": "^3.1.5",
151
+ "@types/topojson-specification": "^1.0.5",
152
+ "@vitest/browser-playwright": "^4.1.2",
153
+ "@vitest/coverage-v8": "^4.1.2",
154
+ "i18n-iso-countries": "^7.14.0",
155
+ "motion": "^12.38.0",
156
+ "playwright": "^1.58.2",
157
+ "react-globe.gl": "^2.37.0",
158
+ "storybook": "^10.3.3",
159
+ "tailwindcss": "^4.2.2",
160
+ "three": "^0.182.0",
161
+ "topojson-client": "^3.1.0",
162
+ "typescript": "^5.9.3",
163
+ "vitest": "^4.1.2",
164
+ "world-atlas": "^2.0.2"
165
+ }
166
+ }
@@ -0,0 +1,475 @@
1
+ /* @cellarnode/ui — Canonical Design Tokens
2
+ * Import in your app: @import "@cellarnode/ui/theme/tokens.css";
3
+ * Then import tailwindcss after it.
4
+ */
5
+
6
+ @theme inline {
7
+ --font-sans: var(--font-inter), ui-sans-serif, system-ui, sans-serif;
8
+ --font-display: var(--font-sora), ui-sans-serif, system-ui, sans-serif;
9
+
10
+ --color-background: var(--background);
11
+ --color-foreground: var(--foreground);
12
+ --color-card: var(--card);
13
+ --color-card-foreground: var(--card-foreground);
14
+ --color-card-feature: var(--card-feature);
15
+ --color-popover: var(--popover);
16
+ --color-popover-foreground: var(--popover-foreground);
17
+ --color-primary: var(--primary);
18
+ --color-primary-foreground: var(--primary-foreground);
19
+ --color-secondary: var(--secondary);
20
+ --color-secondary-foreground: var(--secondary-foreground);
21
+ --color-muted: var(--muted);
22
+ --color-muted-foreground: var(--muted-foreground);
23
+ --color-accent: var(--accent);
24
+ --color-accent-foreground: var(--accent-foreground);
25
+ --color-accent-secondary: var(--accent-secondary);
26
+ --color-accent-secondary-foreground: var(--accent-secondary-foreground);
27
+ --color-success: var(--success);
28
+ --color-success-foreground: var(--success-foreground);
29
+ --color-warning: var(--warning);
30
+ --color-warning-foreground: var(--warning-foreground);
31
+ --color-destructive: var(--destructive);
32
+ --color-destructive-foreground: var(--destructive-foreground);
33
+ --color-border: var(--border);
34
+ --color-input: var(--input);
35
+ --color-ring: var(--ring);
36
+ --color-chart-1: var(--chart-1);
37
+ --color-chart-2: var(--chart-2);
38
+ --color-chart-3: var(--chart-3);
39
+ --color-chart-4: var(--chart-4);
40
+ --color-chart-5: var(--chart-5);
41
+
42
+ /* Brand color aliases */
43
+ --color-brand-primary: var(--primary);
44
+ --color-brand-primary-foreground: var(--primary-foreground);
45
+ --color-brand-secondary: var(--accent-secondary);
46
+ --color-brand-secondary-foreground: var(--accent-secondary-foreground);
47
+ --color-link: var(--accent-secondary);
48
+ --color-link-foreground: var(--accent-secondary-foreground);
49
+ --color-subtitle-accent: var(--accent-secondary);
50
+ --color-button-teal: var(--primary);
51
+ --color-button-teal-hover: var(--primary);
52
+ --color-button-teal-foreground: var(--primary-foreground);
53
+ --color-switch-unchecked: oklch(0.68 0.08 58);
54
+
55
+ --color-sidebar: var(--sidebar-background);
56
+ --color-sidebar-foreground: var(--sidebar-foreground);
57
+ --color-sidebar-primary: var(--sidebar-primary);
58
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
59
+ --color-sidebar-accent: var(--sidebar-accent);
60
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
61
+ --color-sidebar-border: var(--sidebar-border);
62
+ --color-sidebar-ring: var(--sidebar-ring);
63
+
64
+ --radius-sm: calc(var(--radius) - 6px);
65
+ --radius-md: calc(var(--radius) - 3px);
66
+ --radius-lg: var(--radius);
67
+ --radius-xl: calc(var(--radius) + 0.35rem);
68
+ --radius-2xl: calc(var(--radius) + 0.8rem);
69
+
70
+ --shadow-glass: 0 12px 36px -28px oklch(0.2 0.005 230 / 0.14);
71
+ --shadow-glass-elevated: 0 28px 70px -36px oklch(0.2 0.005 230 / 0.22);
72
+ --shadow-kanban-column: 0 1px 3px oklch(0.2 0.005 230 / 0.04), 0 8px 24px -12px oklch(0.2 0.005 230 / 0.06);
73
+
74
+ --animate-accordion-down: accordion-down 0.22s ease-out;
75
+ --animate-accordion-up: accordion-up 0.22s ease-out;
76
+ --animate-fade-in: fade-in 0.24s ease-out forwards;
77
+ --animate-fade-in-up: fade-in-up 0.48s ease-out forwards;
78
+ --animate-slide-up: slide-up 0.24s ease-out forwards;
79
+ }
80
+
81
+ @keyframes accordion-down {
82
+ from {
83
+ height: 0;
84
+ }
85
+
86
+ to {
87
+ height: var(--radix-accordion-content-height);
88
+ }
89
+ }
90
+
91
+ @keyframes accordion-up {
92
+ from {
93
+ height: var(--radix-accordion-content-height);
94
+ }
95
+
96
+ to {
97
+ height: 0;
98
+ }
99
+ }
100
+
101
+ @keyframes fade-in {
102
+ from {
103
+ opacity: 0;
104
+ transform: translateY(8px);
105
+ }
106
+
107
+ to {
108
+ opacity: 1;
109
+ transform: translateY(0);
110
+ }
111
+ }
112
+
113
+ @keyframes fade-in-up {
114
+ from {
115
+ opacity: 0;
116
+ transform: translateY(16px);
117
+ }
118
+
119
+ to {
120
+ opacity: 1;
121
+ transform: translateY(0);
122
+ }
123
+ }
124
+
125
+ @keyframes slide-up {
126
+ from {
127
+ opacity: 0;
128
+ transform: translateY(0.75rem);
129
+ }
130
+
131
+ to {
132
+ opacity: 1;
133
+ transform: translateY(0);
134
+ }
135
+ }
136
+
137
+ :root {
138
+ --radius: 1.2rem;
139
+ --field-placeholder: oklch(0.5 0.018 182);
140
+
141
+ --background: oklch(0.995 0.002 95);
142
+ --foreground: oklch(0.22 0.016 180);
143
+ --card: color-mix(in oklab, white 98.5%, oklch(0.40 0.062 178) 1.5%);
144
+ --card-foreground: var(--foreground);
145
+ --card-feature: color-mix(in oklab, white 96%, oklch(0.40 0.062 178) 4%);
146
+ --popover: color-mix(in oklab, white 98.5%, oklch(0.40 0.062 178) 1.5%);
147
+ --popover-foreground: var(--foreground);
148
+
149
+ --primary: oklch(0.40 0.062 178);
150
+ --primary-foreground: oklch(0.988 0.004 98);
151
+ --secondary: color-mix(in oklab, white 95%, var(--primary) 5%);
152
+ --secondary-foreground: color-mix(in oklab, black 54%, var(--primary) 46%);
153
+ --muted: color-mix(in oklab, white 96%, var(--foreground) 4%);
154
+ --muted-foreground: oklch(0.48 0.018 182);
155
+ --accent: color-mix(in oklab, white 94%, var(--primary) 6%);
156
+ --accent-foreground: color-mix(in oklab, black 48%, var(--primary) 52%);
157
+ --accent-secondary: oklch(0.666 0.179 58.318);
158
+ --accent-secondary-foreground: oklch(0.29 0.045 58.318);
159
+ --success: oklch(0.56 0.105 160);
160
+ --success-foreground: oklch(0.988 0.004 98);
161
+ --warning: var(--accent-secondary);
162
+ --warning-foreground: var(--accent-secondary-foreground);
163
+ --destructive: oklch(0.58 0.18 29);
164
+ --destructive-foreground: oklch(0.988 0.004 20);
165
+ --border: color-mix(in oklab, white 88%, var(--primary) 12%);
166
+ --input: color-mix(in oklab, white 90%, var(--primary) 10%);
167
+ --ring: color-mix(in oklab, white 28%, var(--primary) 72%);
168
+
169
+ --chart-1: var(--primary);
170
+ --chart-2: var(--accent-secondary);
171
+ --chart-3: oklch(0.62 0.068 145);
172
+ --chart-4: oklch(0.59 0.05 215);
173
+ --chart-5: var(--destructive);
174
+
175
+ /* Surfaces */
176
+ --surface-base:
177
+ radial-gradient(circle at top left, color-mix(in oklab, white 92%, var(--primary) 8%) 0%, transparent 34%),
178
+ radial-gradient(circle at top right, color-mix(in oklab, white 90%, var(--accent-secondary) 10%) 0%, transparent 26%),
179
+ linear-gradient(180deg, color-mix(in oklab, white 99%, var(--primary) 1%), color-mix(in oklab, white 97%, var(--primary) 3%));
180
+ --surface-subtle: color-mix(in oklab, white 97.5%, var(--primary) 2.5%);
181
+ --surface-panel:
182
+ linear-gradient(180deg, color-mix(in oklab, white 98%, var(--primary) 2%), color-mix(in oklab, white 96%, var(--primary) 4%));
183
+ --surface-panel-strong:
184
+ linear-gradient(180deg, color-mix(in oklab, white 96%, var(--primary) 4%), color-mix(in oklab, white 93%, var(--primary) 7%));
185
+ --surface-hero:
186
+ radial-gradient(circle at top left, color-mix(in oklab, white 84%, var(--primary) 16%) 0%, transparent 36%),
187
+ radial-gradient(circle at 86% 2%, color-mix(in oklab, white 85%, var(--accent-secondary) 15%) 0%, transparent 28%),
188
+ linear-gradient(180deg, color-mix(in oklab, white 99%, var(--primary) 1%), color-mix(in oklab, white 93%, var(--primary) 7%));
189
+ --surface-hover: color-mix(in oklab, white 93%, var(--primary) 7%);
190
+ --surface-selected: color-mix(in oklab, white 90%, var(--primary) 10%);
191
+ --panel-border-strong: color-mix(in oklab, var(--border) 84%, var(--primary) 16%);
192
+ --panel-shadow: 0 26px 60px -34px oklch(0.2 0.005 230 / 0.12);
193
+ --shadow-soft: 0 18px 42px -30px oklch(0.2 0.005 230 / 0.10);
194
+ --shadow-medium: 0 26px 60px -34px oklch(0.2 0.005 230 / 0.14);
195
+ --shadow-glow: 0 20px 60px -34px oklch(0.40 0.062 178 / 0.36);
196
+ --shadow-warm-glow: 0 20px 60px -34px oklch(0.666 0.179 58.318 / 0.30);
197
+ --table-header-bg: color-mix(in oklab, white 98%, var(--primary) 2%);
198
+ --table-row-hover: color-mix(in oklab, white 97%, var(--primary) 3%);
199
+ --grid-dot: color-mix(in oklab, var(--border) 42%, transparent);
200
+
201
+ /* Tone tokens — brand */
202
+ --tone-brand-soft: color-mix(in oklab, white 92%, var(--primary) 8%);
203
+ --tone-brand-surface: color-mix(in oklab, white 94%, var(--primary) 6%);
204
+ --tone-brand-surface-strong: color-mix(in oklab, white 92%, var(--primary) 8%);
205
+ --tone-brand-solid: var(--primary);
206
+ --tone-brand-fg: color-mix(in oklab, black 44%, var(--primary) 56%);
207
+ --tone-brand-solid-fg: var(--primary-foreground);
208
+ --tone-brand-border: color-mix(in oklab, white 72%, var(--primary) 28%);
209
+ --tone-brand-ring: color-mix(in oklab, transparent 36%, var(--primary) 64%);
210
+ --tone-brand-muted: color-mix(in oklab, white 20%, var(--primary) 80%);
211
+
212
+ /* Tone tokens — warning */
213
+ --tone-warning-soft: color-mix(in oklab, white 90%, var(--warning) 10%);
214
+ --tone-warning-surface: color-mix(in oklab, white 93%, var(--warning) 7%);
215
+ --tone-warning-surface-strong: color-mix(in oklab, white 90%, var(--warning) 10%);
216
+ --tone-warning-solid: var(--warning);
217
+ --tone-warning-fg: color-mix(in oklab, black 56%, var(--warning) 44%);
218
+ --tone-warning-solid-fg: var(--warning-foreground);
219
+ --tone-warning-border: color-mix(in oklab, white 66%, var(--warning) 34%);
220
+ --tone-warning-ring: color-mix(in oklab, transparent 34%, var(--warning) 66%);
221
+ --tone-warning-muted: color-mix(in oklab, black 40%, var(--warning) 60%);
222
+
223
+ /* Tone tokens — negotiation */
224
+ --tone-negotiation: color-mix(in oklab, var(--primary) 46%, var(--warning) 54%);
225
+ --tone-negotiation-soft: color-mix(in oklab, white 88%, var(--tone-negotiation) 12%);
226
+ --tone-negotiation-surface: color-mix(in oklab, white 92%, var(--tone-negotiation) 8%);
227
+ --tone-negotiation-surface-strong: color-mix(in oklab, white 88%, var(--tone-negotiation) 12%);
228
+ --tone-negotiation-solid: var(--tone-negotiation);
229
+ --tone-negotiation-fg: color-mix(in oklab, black 52%, var(--tone-negotiation) 48%);
230
+ --tone-negotiation-solid-fg: oklch(0.985 0.003 92);
231
+ --tone-negotiation-border: color-mix(in oklab, white 66%, var(--tone-negotiation) 34%);
232
+ --tone-negotiation-ring: color-mix(in oklab, transparent 34%, var(--tone-negotiation) 66%);
233
+ --tone-negotiation-muted: color-mix(in oklab, black 42%, var(--tone-negotiation) 58%);
234
+
235
+ /* Tone tokens — success */
236
+ --tone-success-soft: color-mix(in oklab, white 90%, var(--success) 10%);
237
+ --tone-success-surface: color-mix(in oklab, white 93%, var(--success) 7%);
238
+ --tone-success-surface-strong: color-mix(in oklab, white 90%, var(--success) 10%);
239
+ --tone-success-solid: var(--success);
240
+ --tone-success-fg: color-mix(in oklab, black 48%, var(--success) 52%);
241
+ --tone-success-solid-fg: var(--success-foreground);
242
+ --tone-success-border: color-mix(in oklab, white 68%, var(--success) 32%);
243
+ --tone-success-ring: color-mix(in oklab, transparent 34%, var(--success) 66%);
244
+ --tone-success-muted: color-mix(in oklab, black 36%, var(--success) 64%);
245
+
246
+ /* Tone tokens — danger */
247
+ --tone-danger-soft: color-mix(in oklab, white 92%, var(--destructive) 8%);
248
+ --tone-danger-surface: color-mix(in oklab, white 94%, var(--destructive) 6%);
249
+ --tone-danger-surface-strong: color-mix(in oklab, white 90%, var(--destructive) 10%);
250
+ --tone-danger-solid: var(--destructive);
251
+ --tone-danger-fg: color-mix(in oklab, black 44%, var(--destructive) 56%);
252
+ --tone-danger-solid-fg: var(--destructive-foreground);
253
+ --tone-danger-border: color-mix(in oklab, white 70%, var(--destructive) 30%);
254
+ --tone-danger-ring: color-mix(in oklab, transparent 34%, var(--destructive) 66%);
255
+ --tone-danger-muted: color-mix(in oklab, black 30%, var(--destructive) 70%);
256
+
257
+ /* Tone tokens — neutral */
258
+ --tone-neutral-soft: color-mix(in oklab, white 94%, var(--foreground) 6%);
259
+ --tone-neutral-surface: color-mix(in oklab, white 96%, var(--foreground) 4%);
260
+ --tone-neutral-surface-strong: color-mix(in oklab, white 94%, var(--foreground) 6%);
261
+ --tone-neutral-solid: color-mix(in oklab, var(--foreground) 55%, white 45%);
262
+ --tone-neutral-fg: color-mix(in oklab, black 16%, var(--muted-foreground) 84%);
263
+ --tone-neutral-solid-fg: oklch(0.988 0.004 98);
264
+ --tone-neutral-border: color-mix(in oklab, white 74%, var(--foreground) 26%);
265
+ --tone-neutral-ring: color-mix(in oklab, transparent 34%, var(--foreground) 66%);
266
+ --tone-neutral-muted: var(--muted-foreground);
267
+
268
+ /* Gradients & transitions */
269
+ --gradient-subtle: linear-gradient(180deg, oklch(1 0 0) 0%, oklch(0.98 0.002 95) 100%);
270
+ --gradient-accent: linear-gradient(135deg, var(--primary) 0%, var(--accent-secondary) 100%);
271
+ --gradient-warm: linear-gradient(135deg, oklch(0.72 0.14 55) 0%, oklch(0.64 0.16 40) 100%);
272
+ --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
273
+
274
+ /* Sidebar — dark green (matches producer dashboard) */
275
+ --sidebar-background: oklch(0.22 0.038 155);
276
+ --sidebar-foreground: oklch(0.95 0 0);
277
+ --sidebar-primary: oklch(0.85 0.1 95);
278
+ --sidebar-primary-foreground: oklch(0.22 0.038 155);
279
+ --sidebar-accent: oklch(0.28 0.042 155);
280
+ --sidebar-accent-foreground: oklch(0.95 0 0);
281
+ --sidebar-border: oklch(0.30 0.036 155);
282
+ --sidebar-ring: oklch(0.85 0.1 95);
283
+ }
284
+
285
+ .dark {
286
+ --field-placeholder: oklch(0.76 0.02 180);
287
+
288
+ --background: oklch(0.21 0.012 184);
289
+ --foreground: oklch(0.965 0.006 102);
290
+ --card: color-mix(in oklab, black 78%, var(--primary) 22%);
291
+ --card-foreground: var(--foreground);
292
+ --card-feature: color-mix(in oklab, black 82%, var(--primary) 18%);
293
+ --popover: color-mix(in oklab, black 80%, var(--primary) 20%);
294
+ --popover-foreground: var(--foreground);
295
+
296
+ --primary: oklch(0.77 0.07 178);
297
+ --primary-foreground: oklch(0.21 0.012 184);
298
+ --secondary: color-mix(in oklab, black 70%, var(--primary) 30%);
299
+ --secondary-foreground: var(--foreground);
300
+ --muted: color-mix(in oklab, black 78%, var(--foreground) 22%);
301
+ --muted-foreground: oklch(0.77 0.02 180);
302
+ --accent: color-mix(in oklab, black 68%, var(--primary) 32%);
303
+ --accent-foreground: var(--foreground);
304
+ --accent-secondary: oklch(0.74 0.154 58.318);
305
+ --accent-secondary-foreground: oklch(0.22 0.02 58.318);
306
+ --success: oklch(0.75 0.112 163);
307
+ --success-foreground: oklch(0.19 0.012 163);
308
+ --warning: var(--accent-secondary);
309
+ --warning-foreground: var(--accent-secondary-foreground);
310
+ --destructive: oklch(0.69 0.184 29);
311
+ --destructive-foreground: oklch(0.18 0.01 25);
312
+ --border: color-mix(in oklab, black 62%, var(--primary) 38%);
313
+ --input: color-mix(in oklab, black 68%, var(--primary) 32%);
314
+ --ring: color-mix(in oklab, white 24%, var(--primary) 76%);
315
+
316
+ --chart-1: var(--primary);
317
+ --chart-2: var(--accent-secondary);
318
+ --chart-3: var(--success);
319
+ --chart-4: oklch(0.73 0.052 220);
320
+ --chart-5: var(--destructive);
321
+
322
+ --surface-base:
323
+ radial-gradient(circle at top left, color-mix(in oklab, black 76%, var(--primary) 24%) 0%, transparent 34%),
324
+ radial-gradient(circle at top right, color-mix(in oklab, black 78%, var(--accent-secondary) 22%) 0%, transparent 26%),
325
+ linear-gradient(180deg, oklch(0.23 0.013 184), oklch(0.18 0.01 188));
326
+ --surface-subtle: color-mix(in oklab, black 80%, var(--primary) 20%);
327
+ --surface-panel:
328
+ linear-gradient(180deg, color-mix(in oklab, black 74%, var(--primary) 26%), color-mix(in oklab, black 80%, var(--primary) 20%));
329
+ --surface-panel-strong:
330
+ linear-gradient(180deg, color-mix(in oklab, black 66%, var(--primary) 34%), color-mix(in oklab, black 74%, var(--primary) 26%));
331
+ --surface-hero:
332
+ radial-gradient(circle at top left, color-mix(in oklab, black 64%, var(--primary) 36%) 0%, transparent 36%),
333
+ radial-gradient(circle at 86% 2%, color-mix(in oklab, black 68%, var(--accent-secondary) 32%) 0%, transparent 28%),
334
+ linear-gradient(180deg, color-mix(in oklab, black 70%, var(--primary) 30%), color-mix(in oklab, black 82%, var(--primary) 18%));
335
+ --surface-hover: color-mix(in oklab, black 70%, var(--primary) 30%);
336
+ --surface-selected: color-mix(in oklab, black 64%, var(--primary) 36%);
337
+ --panel-border-strong: color-mix(in oklab, black 62%, var(--primary) 38%);
338
+ --panel-shadow: 0 30px 78px -36px oklch(0 0 0 / 0.52);
339
+ --shadow-soft: 0 20px 44px -30px oklch(0 0 0 / 0.48);
340
+ --shadow-medium: 0 30px 70px -34px oklch(0 0 0 / 0.58);
341
+ --shadow-glow: 0 20px 60px -36px oklch(0.77 0.07 178 / 0.24);
342
+ --shadow-warm-glow: 0 20px 60px -36px oklch(0.74 0.154 58.318 / 0.20);
343
+ --shadow-kanban-column: 0 1px 3px oklch(0 0 0 / 0.18), 0 8px 24px -12px oklch(0 0 0 / 0.28);
344
+ --table-header-bg: color-mix(in oklab, black 72%, var(--primary) 28%);
345
+ --table-row-hover: color-mix(in oklab, black 76%, var(--primary) 24%);
346
+ --grid-dot: color-mix(in oklab, var(--border) 52%, transparent);
347
+
348
+ --tone-brand-soft: color-mix(in oklab, black 74%, var(--primary) 26%);
349
+ --tone-brand-surface: color-mix(in oklab, black 78%, var(--primary) 22%);
350
+ --tone-brand-surface-strong: color-mix(in oklab, black 70%, var(--primary) 30%);
351
+ --tone-brand-solid: var(--primary);
352
+ --tone-brand-fg: oklch(0.91 0.022 180);
353
+ --tone-brand-solid-fg: var(--primary-foreground);
354
+ --tone-brand-border: color-mix(in oklab, black 56%, var(--primary) 44%);
355
+ --tone-brand-ring: color-mix(in oklab, transparent 44%, var(--primary) 56%);
356
+ --tone-brand-muted: color-mix(in oklab, white 18%, var(--primary) 82%);
357
+
358
+ --tone-warning-soft: color-mix(in oklab, black 74%, var(--warning) 26%);
359
+ --tone-warning-surface: color-mix(in oklab, black 79%, var(--warning) 21%);
360
+ --tone-warning-surface-strong: color-mix(in oklab, black 70%, var(--warning) 30%);
361
+ --tone-warning-solid: var(--warning);
362
+ --tone-warning-fg: oklch(0.93 0.028 68);
363
+ --tone-warning-solid-fg: var(--warning-foreground);
364
+ --tone-warning-border: color-mix(in oklab, black 58%, var(--warning) 42%);
365
+ --tone-warning-ring: color-mix(in oklab, transparent 44%, var(--warning) 56%);
366
+ --tone-warning-muted: color-mix(in oklab, white 8%, var(--warning) 92%);
367
+
368
+ --tone-negotiation: color-mix(in oklab, var(--primary) 44%, var(--warning) 56%);
369
+ --tone-negotiation-soft: color-mix(in oklab, black 72%, var(--tone-negotiation) 28%);
370
+ --tone-negotiation-surface: color-mix(in oklab, black 77%, var(--tone-negotiation) 23%);
371
+ --tone-negotiation-surface-strong: color-mix(in oklab, black 68%, var(--tone-negotiation) 32%);
372
+ --tone-negotiation-solid: var(--tone-negotiation);
373
+ --tone-negotiation-fg: oklch(0.93 0.026 62);
374
+ --tone-negotiation-solid-fg: oklch(0.18 0.01 60);
375
+ --tone-negotiation-border: color-mix(in oklab, black 58%, var(--tone-negotiation) 42%);
376
+ --tone-negotiation-ring: color-mix(in oklab, transparent 44%, var(--tone-negotiation) 56%);
377
+ --tone-negotiation-muted: color-mix(in oklab, white 6%, var(--tone-negotiation) 94%);
378
+
379
+ --tone-success-soft: color-mix(in oklab, black 74%, var(--success) 26%);
380
+ --tone-success-surface: color-mix(in oklab, black 79%, var(--success) 21%);
381
+ --tone-success-surface-strong: color-mix(in oklab, black 70%, var(--success) 30%);
382
+ --tone-success-solid: var(--success);
383
+ --tone-success-fg: oklch(0.93 0.026 162);
384
+ --tone-success-solid-fg: var(--success-foreground);
385
+ --tone-success-border: color-mix(in oklab, black 58%, var(--success) 42%);
386
+ --tone-success-ring: color-mix(in oklab, transparent 44%, var(--success) 56%);
387
+ --tone-success-muted: color-mix(in oklab, white 6%, var(--success) 94%);
388
+
389
+ --tone-danger-soft: color-mix(in oklab, black 74%, var(--destructive) 26%);
390
+ --tone-danger-surface: color-mix(in oklab, black 79%, var(--destructive) 21%);
391
+ --tone-danger-surface-strong: color-mix(in oklab, black 68%, var(--destructive) 32%);
392
+ --tone-danger-solid: var(--destructive);
393
+ --tone-danger-fg: oklch(0.93 0.03 28);
394
+ --tone-danger-solid-fg: var(--destructive-foreground);
395
+ --tone-danger-border: color-mix(in oklab, black 58%, var(--destructive) 42%);
396
+ --tone-danger-ring: color-mix(in oklab, transparent 44%, var(--destructive) 56%);
397
+ --tone-danger-muted: color-mix(in oklab, white 4%, var(--destructive) 96%);
398
+
399
+ --tone-neutral-soft: color-mix(in oklab, black 74%, var(--foreground) 26%);
400
+ --tone-neutral-surface: color-mix(in oklab, black 80%, var(--foreground) 20%);
401
+ --tone-neutral-surface-strong: color-mix(in oklab, black 72%, var(--foreground) 28%);
402
+ --tone-neutral-solid: color-mix(in oklab, black 32%, var(--foreground) 68%);
403
+ --tone-neutral-fg: var(--foreground);
404
+ --tone-neutral-solid-fg: oklch(0.18 0.01 190);
405
+ --tone-neutral-border: color-mix(in oklab, black 56%, var(--foreground) 44%);
406
+ --tone-neutral-ring: color-mix(in oklab, transparent 44%, var(--foreground) 56%);
407
+ --tone-neutral-muted: var(--muted-foreground);
408
+
409
+ /* Dark gradients */
410
+ --gradient-subtle: linear-gradient(180deg, oklch(0.24 0.012 184) 0%, oklch(0.21 0.012 184) 100%);
411
+
412
+ /* Sidebar — dark green (matches producer dashboard dark mode) */
413
+ --sidebar-background: oklch(0.18 0.034 155);
414
+ --sidebar-foreground: oklch(0.92 0 0);
415
+ --sidebar-primary: oklch(0.85 0.1 95);
416
+ --sidebar-primary-foreground: oklch(0.18 0.034 155);
417
+ --sidebar-accent: oklch(0.24 0.038 155);
418
+ --sidebar-accent-foreground: oklch(0.92 0 0);
419
+ --sidebar-border: oklch(0.26 0.034 155);
420
+ --sidebar-ring: oklch(0.85 0.1 95);
421
+ }
422
+
423
+ @layer base {
424
+ * {
425
+ border-color: var(--border);
426
+ }
427
+
428
+ html {
429
+ color-scheme: light;
430
+ scroll-behavior: smooth;
431
+ }
432
+
433
+ .dark {
434
+ color-scheme: dark;
435
+ }
436
+
437
+ body {
438
+ min-height: 100dvh;
439
+ background: var(--surface-base);
440
+ color: var(--foreground);
441
+ font-family: var(--font-sans);
442
+ -webkit-font-smoothing: antialiased;
443
+ -moz-osx-font-smoothing: grayscale;
444
+ }
445
+
446
+ a {
447
+ color: inherit;
448
+ }
449
+
450
+ ::selection {
451
+ background: color-mix(in oklab, var(--primary) 75%, white 25%);
452
+ color: var(--primary-foreground);
453
+ }
454
+
455
+ ::-webkit-scrollbar {
456
+ width: 0.6rem;
457
+ height: 0.6rem;
458
+ }
459
+
460
+ ::-webkit-scrollbar-track {
461
+ background: transparent;
462
+ }
463
+
464
+ ::-webkit-scrollbar-thumb {
465
+ border: 2px solid transparent;
466
+ border-radius: 999px;
467
+ background: color-mix(in oklab, var(--muted-foreground) 65%, transparent);
468
+ background-clip: padding-box;
469
+ }
470
+
471
+ ::-webkit-scrollbar-thumb:hover {
472
+ background: color-mix(in oklab, var(--primary) 55%, transparent);
473
+ background-clip: padding-box;
474
+ }
475
+ }