@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
@@ -0,0 +1,104 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * DnD-enabled KanbanBoard variant. Loaded lazily via React.lazy()
4
+ * to avoid bundling @dnd-kit when DnD is not needed.
5
+ */
6
+ import { useState, useCallback } from "react";
7
+ import { DragDropProvider, DragOverlay, useDragOperation, useDroppable, } from "@dnd-kit/react";
8
+ import { cn } from "../lib/utils";
9
+ import { KanbanColumnShell } from "./kanban-board";
10
+ // ─── DnD Board ───────────────────────────────────────────────────────────────
11
+ function KanbanDndBoard({ columns, renderColumnCards, className, items, getItemId, getItemColumn, onDragEnd, onDragStartRaw, onDragEndRaw, isValidTransition, renderDragOverlay, renderColumn, columnClassName, columnBodyClassName, }) {
12
+ const [dragSourceColumn, setDragSourceColumn] = useState(null);
13
+ const handleDragStart = useCallback((event) => {
14
+ onDragStartRaw?.(event);
15
+ // Try to derive source column from the dragged item
16
+ if (items && getItemId && getItemColumn) {
17
+ const sourceData = event.operation?.source?.data;
18
+ if (sourceData) {
19
+ // Check if the source data contains an item we can identify
20
+ const itemId = sourceData.itemId;
21
+ if (itemId) {
22
+ const item = items.find((i) => getItemId(i) === itemId);
23
+ if (item) {
24
+ setDragSourceColumn(getItemColumn(item));
25
+ return;
26
+ }
27
+ }
28
+ }
29
+ }
30
+ // Fallback: check for columnId in source data
31
+ const columnId = event.operation?.source?.data?.columnId;
32
+ if (columnId) {
33
+ setDragSourceColumn(columnId);
34
+ }
35
+ }, [items, getItemId, getItemColumn, onDragStartRaw]);
36
+ const handleDragEnd = useCallback((event) => {
37
+ const prevSourceColumn = dragSourceColumn;
38
+ setDragSourceColumn(null);
39
+ onDragEndRaw?.(event);
40
+ if (event.canceled)
41
+ return;
42
+ const { source, target } = event.operation ?? {};
43
+ if (!source || !target)
44
+ return;
45
+ // Get target column ID
46
+ const targetColumnId = target.data?.columnId;
47
+ if (!targetColumnId)
48
+ return;
49
+ // Get source item ID and column
50
+ const sourceItemId = source.data?.itemId;
51
+ let sourceColumnId = prevSourceColumn;
52
+ if (!sourceColumnId && sourceItemId && items && getItemId && getItemColumn) {
53
+ const item = items.find((i) => getItemId(i) === sourceItemId);
54
+ if (item)
55
+ sourceColumnId = getItemColumn(item);
56
+ }
57
+ if (!sourceColumnId || !sourceItemId)
58
+ return;
59
+ if (sourceColumnId === targetColumnId)
60
+ return;
61
+ if (isValidTransition && !isValidTransition(sourceColumnId, targetColumnId))
62
+ return;
63
+ onDragEnd?.(sourceItemId, sourceColumnId, targetColumnId);
64
+ }, [dragSourceColumn, items, getItemId, getItemColumn, isValidTransition, onDragEnd, onDragEndRaw]);
65
+ return (_jsxs(DragDropProvider, { onDragStart: handleDragStart, onDragEnd: handleDragEnd, children: [_jsx("div", { className: cn("grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-4", className), children: columns.map((col) => {
66
+ const isValid = dragSourceColumn !== null &&
67
+ (isValidTransition
68
+ ? isValidTransition(dragSourceColumn, col.id)
69
+ : dragSourceColumn !== col.id);
70
+ const isInvalid = dragSourceColumn !== null && !isValid;
71
+ return (_jsx(DroppableColumn, { column: col, disabled: isInvalid, isValidTarget: isValid, isInvalidTarget: isInvalid, isDragging: dragSourceColumn !== null, renderColumn: renderColumn, columnClassName: columnClassName, bodyClassName: columnBodyClassName, children: renderColumnCards(col.id) }, col.id));
72
+ }) }), renderDragOverlay && items && getItemId && (_jsx(DndOverlay, { items: items, getItemId: getItemId, renderDragOverlay: renderDragOverlay }))] }));
73
+ }
74
+ function DroppableColumn({ column, children, disabled, isValidTarget, isInvalidTarget, isDragging, renderColumn, columnClassName, bodyClassName, }) {
75
+ const { ref, isDropTarget } = useDroppable({
76
+ id: column.id,
77
+ data: { columnId: column.id },
78
+ disabled,
79
+ });
80
+ const state = {
81
+ isOver: isDropTarget,
82
+ isValidTarget,
83
+ isInvalidTarget,
84
+ isDragging,
85
+ };
86
+ // When renderColumn is provided, delegate full column rendering to the consumer
87
+ if (renderColumn) {
88
+ return _jsx(_Fragment, { children: renderColumn(column, children, state, ref) });
89
+ }
90
+ const extraClass = typeof columnClassName === "function"
91
+ ? columnClassName(column.id, state)
92
+ : columnClassName;
93
+ const dndClasses = cn(isDropTarget && isValidTarget && "ring-2 ring-primary/40", isInvalidTarget && "opacity-40");
94
+ return (_jsx(KanbanColumnShell, { column: column, className: cn(dndClasses, extraClass), bodyClassName: bodyClassName, children: _jsx("div", { ref: ref, className: "flex min-h-0 flex-1 flex-col", children: children }) }));
95
+ }
96
+ // ─── Drag Overlay ────────────────────────────────────────────────────────────
97
+ function DndOverlay({ items, getItemId, renderDragOverlay, }) {
98
+ const { source } = useDragOperation();
99
+ const itemId = source?.data?.itemId;
100
+ const item = itemId ? items.find((i) => getItemId(i) === itemId) : undefined;
101
+ return _jsx(DragOverlay, { children: item ? renderDragOverlay(item) : null });
102
+ }
103
+ export default KanbanDndBoard;
104
+ //# sourceMappingURL=kanban-dnd-board.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-dnd-board.js","sourceRoot":"","sources":["../../src/components/kanban-dnd-board.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import { Label as LabelPrimitive } from "radix-ui";
3
+ declare function Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ export { Label };
5
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,UAAU,CAAA;AAIlD,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAWlD;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Label as LabelPrimitive } from "radix-ui";
4
+ import { cn } from "../lib/utils";
5
+ function Label({ className, ...props }) {
6
+ return (_jsx(LabelPrimitive.Root, { "data-slot": "label", className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className), ...props }));
7
+ }
8
+ export { Label };
9
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,UAAU,CAAA;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,SAAS,KAAK,CAAC,EACb,SAAS,EACT,GAAG,KAAK,EACyC;IACjD,OAAO,CACL,KAAC,cAAc,CAAC,IAAI,iBACR,OAAO,EACjB,SAAS,EAAE,EAAE,CACX,qNAAqN,EACrN,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * TODO: Update this component to use your client-side framework's link
3
+ * component. We've provided examples of how to do this for Next.js, Remix, and
4
+ * Inertia.js in the Catalyst documentation:
5
+ *
6
+ * https://catalyst.tailwindui.com/docs#client-side-router-integration
7
+ */
8
+ import React from 'react';
9
+ export declare const Link: React.ForwardRefExoticComponent<{
10
+ href: string;
11
+ } & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & React.RefAttributes<HTMLAnchorElement>>;
12
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,eAAO,MAAM,IAAI;UACA,MAAM;oJAQrB,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * TODO: Update this component to use your client-side framework's link
4
+ * component. We've provided examples of how to do this for Next.js, Remix, and
5
+ * Inertia.js in the Catalyst documentation:
6
+ *
7
+ * https://catalyst.tailwindui.com/docs#client-side-router-integration
8
+ */
9
+ import * as Headless from '@headlessui/react';
10
+ import { forwardRef } from 'react';
11
+ export const Link = forwardRef(function Link(props, ref) {
12
+ return (_jsx(Headless.DataInteractive, { children: _jsx("a", { ...props, ref: ref }) }));
13
+ });
14
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,IAAI,CAC1C,KAA6D,EAC7D,GAA0C;IAE1C,OAAO,CACL,KAAC,QAAQ,CAAC,eAAe,cACvB,eAAO,KAAK,EAAE,GAAG,EAAE,GAAG,GAAI,GACD,CAC5B,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import * as Headless from '@headlessui/react';
2
+ export declare function Listbox<T>({ className, placeholder, autoFocus, plain, 'aria-label': ariaLabel, children: options, ...props }: {
3
+ className?: string;
4
+ placeholder?: React.ReactNode;
5
+ autoFocus?: boolean;
6
+ plain?: boolean;
7
+ 'aria-label'?: string;
8
+ children?: React.ReactNode;
9
+ } & Omit<Headless.ListboxProps<'div', T>, 'as' | 'multiple'>): import("react/jsx-runtime").JSX.Element;
10
+ export declare function ListboxOption<T>({ children, className, ...props }: {
11
+ className?: string;
12
+ children?: React.ReactNode;
13
+ } & Omit<Headless.ListboxOptionProps<'div', T>, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
14
+ export declare function ListboxLabel({ className, ...props }: React.ComponentPropsWithoutRef<'span'>): import("react/jsx-runtime").JSX.Element;
15
+ export declare function ListboxDescription({ className, children, ...props }: React.ComponentPropsWithoutRef<'span'>): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=listbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listbox.d.ts","sourceRoot":"","sources":["../../src/components/listbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAI7C,wBAAgB,OAAO,CAAC,CAAC,EAAE,EACzB,SAAS,EACT,WAAW,EACX,SAAS,EACT,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,QAAQ,EAAE,OAAO,EACjB,GAAG,KAAK,EACT,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,2CAqF3D;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,IAAI,CAC1D,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,EACrC,IAAI,GAAG,WAAW,CACnB,2CAgDA;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAE3F;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAY3G"}
@@ -0,0 +1,88 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as Headless from '@headlessui/react';
4
+ import clsx from 'clsx';
5
+ import { Fragment } from 'react'; // Still used by ListboxOption
6
+ export function Listbox({ className, placeholder, autoFocus, plain, 'aria-label': ariaLabel, children: options, ...props }) {
7
+ return (_jsxs(Headless.Listbox, { as: "div", ...props, multiple: false, children: [_jsxs(Headless.ListboxButton, { autoFocus: autoFocus, "data-slot": "control", "aria-label": ariaLabel, className: clsx([
8
+ className,
9
+ // Basic layout
10
+ 'group relative block w-full',
11
+ // Background color + shadow applied to inset pseudo element (skip for plain variant)
12
+ !plain && 'before:absolute before:inset-px before:rounded-[calc(var(--radius-lg)-1px)] before:bg-white before:shadow-sm',
13
+ // Background color is moved to control and shadow is removed in dark mode so hide `before` pseudo
14
+ !plain && 'dark:before:hidden',
15
+ // Hide default focus styles
16
+ 'focus:outline-hidden',
17
+ // Focus ring
18
+ 'after:pointer-events-none after:absolute after:inset-0 after:rounded-lg after:ring-transparent after:ring-inset data-focus:after:ring-2 data-focus:after:ring-ring',
19
+ // Disabled state
20
+ 'data-disabled:opacity-50',
21
+ !plain && 'data-disabled:before:bg-zinc-950/5 data-disabled:before:shadow-none',
22
+ ]), children: [_jsx(Headless.ListboxSelectedOption, { as: "span", options: options, placeholder: placeholder && _jsx("span", { className: "block truncate text-zinc-500", children: placeholder }), className: clsx([
23
+ // Basic layout
24
+ 'relative block w-full appearance-none rounded-lg',
25
+ // Padding - compact for plain variant
26
+ plain
27
+ ? 'py-1 pr-6 pl-2.5'
28
+ : 'py-[calc(--spacing(2.5)-1px)] sm:py-[calc(--spacing(1.5)-1px)] pr-[calc(--spacing(7)-1px)] pl-[calc(--spacing(3.5)-1px)] sm:pl-[calc(--spacing(3)-1px)]',
29
+ // Set minimum height for when no value is selected (skip for plain)
30
+ !plain && 'min-h-11 sm:min-h-9',
31
+ // Typography
32
+ 'text-left text-base/6 text-zinc-950 placeholder:text-zinc-500 sm:text-sm/6 dark:text-white forced-colors:text-[CanvasText]',
33
+ // Border
34
+ 'border border-zinc-950/10 group-data-active:border-zinc-950/20 group-data-hover:border-zinc-950/20 dark:border-white/10 dark:group-data-active:border-white/20 dark:group-data-hover:border-white/20',
35
+ // Background color
36
+ 'bg-transparent dark:bg-white/5',
37
+ // Invalid state
38
+ 'group-data-invalid:border-red-500 group-data-hover:group-data-invalid:border-red-500 dark:group-data-invalid:border-red-600 dark:data-hover:group-data-invalid:border-red-600',
39
+ // Disabled state
40
+ 'group-data-disabled:border-zinc-950/20 group-data-disabled:opacity-100 dark:group-data-disabled:border-white/15 dark:group-data-disabled:bg-white/2.5 dark:group-data-disabled:data-hover:border-white/15',
41
+ ]) }), _jsx("span", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2", children: _jsxs("svg", { className: "size-5 stroke-zinc-500 group-data-disabled:stroke-zinc-600 sm:size-4 dark:stroke-zinc-400 forced-colors:stroke-[CanvasText]", viewBox: "0 0 16 16", "aria-hidden": "true", fill: "none", children: [_jsx("path", { d: "M5.75 10.75L8 13L10.25 10.75", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M10.25 5.25L8 3L5.75 5.25", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round" })] }) })] }), _jsx(Headless.ListboxOptions, { transition: true, anchor: "selection start", className: clsx(
42
+ // Anchor positioning
43
+ '[--anchor-offset:-1.625rem] [--anchor-padding:--spacing(4)] sm:[--anchor-offset:-1.375rem]',
44
+ // Base styles
45
+ 'isolate z-50 w-[var(--button-width)] min-w-[var(--button-width)] scroll-py-1 rounded-xl p-1 select-none',
46
+ // Invisible border that is only visible in `forced-colors` mode for accessibility purposes
47
+ 'outline outline-transparent focus:outline-hidden',
48
+ // Handle scrolling when menu won't fit in viewport
49
+ 'overflow-y-scroll overscroll-contain',
50
+ // Popover background
51
+ 'bg-white/75 backdrop-blur-xl dark:bg-zinc-800/75',
52
+ // Shadows
53
+ 'shadow-lg ring-1 ring-zinc-950/10 dark:ring-white/10 dark:ring-inset',
54
+ // Transitions
55
+ 'transition-opacity duration-100 ease-in data-closed:data-leave:opacity-0 data-transition:pointer-events-none'), children: options })] }));
56
+ }
57
+ export function ListboxOption({ children, className, ...props }) {
58
+ const sharedClasses = clsx(
59
+ // Base
60
+ 'flex min-w-0 items-center',
61
+ // Icons
62
+ '*:data-[slot=icon]:size-5 *:data-[slot=icon]:shrink-0 sm:*:data-[slot=icon]:size-4', '*:data-[slot=icon]:text-zinc-500 group-data-focus/option:*:data-[slot=icon]:text-white dark:*:data-[slot=icon]:text-zinc-400', 'forced-colors:*:data-[slot=icon]:text-[CanvasText] forced-colors:group-data-focus/option:*:data-[slot=icon]:text-[Canvas]',
63
+ // Avatars
64
+ '*:data-[slot=avatar]:-mx-0.5 *:data-[slot=avatar]:size-6 sm:*:data-[slot=avatar]:size-5');
65
+ return (_jsx(Headless.ListboxOption, { as: Fragment, ...props, children: ({ selectedOption }) => {
66
+ if (selectedOption) {
67
+ return _jsx("div", { className: clsx(className, sharedClasses), children: children });
68
+ }
69
+ return (_jsxs("div", { className: clsx(
70
+ // Basic layout
71
+ 'group/option grid cursor-default grid-cols-[--spacing(5)_1fr] items-baseline gap-x-2 rounded-lg py-2.5 pr-3.5 pl-2 sm:grid-cols-[--spacing(4)_1fr] sm:py-1.5 sm:pr-3 sm:pl-1.5',
72
+ // Typography
73
+ 'text-base/6 text-zinc-950 sm:text-sm/6 dark:text-white forced-colors:text-[CanvasText]',
74
+ // Focus
75
+ 'outline-hidden data-focus:bg-primary data-focus:text-primary-foreground',
76
+ // Forced colors mode
77
+ 'forced-color-adjust-none forced-colors:data-focus:bg-[Highlight] forced-colors:data-focus:text-[HighlightText]',
78
+ // Disabled
79
+ 'data-disabled:opacity-50'), children: [_jsx("svg", { className: "relative hidden size-5 self-center stroke-current group-data-selected/option:inline sm:size-4", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M4 8.5l3 3L12 4", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round" }) }), _jsx("span", { className: clsx(className, sharedClasses, 'col-start-2'), children: children })] }));
80
+ } }));
81
+ }
82
+ export function ListboxLabel({ className, ...props }) {
83
+ return _jsx("span", { ...props, className: clsx(className, 'ml-2.5 truncate first:ml-0 sm:ml-2 sm:first:ml-0') });
84
+ }
85
+ export function ListboxDescription({ className, children, ...props }) {
86
+ return (_jsx("span", { ...props, className: clsx(className, 'flex flex-1 overflow-hidden text-zinc-500 group-data-focus/option:text-white before:w-2 before:min-w-0 before:shrink dark:text-zinc-400'), children: _jsx("span", { className: "flex-1 truncate", children: children }) }));
87
+ }
88
+ //# sourceMappingURL=listbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listbox.js","sourceRoot":"","sources":["../../src/components/listbox.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type React from 'react';
2
+ export declare function Pagination({ 'aria-label': ariaLabel, className, ...props }: React.ComponentPropsWithoutRef<'nav'>): import("react/jsx-runtime").JSX.Element;
3
+ export declare function PaginationPrevious({ href, className, children, }: React.PropsWithChildren<{
4
+ href?: string | null;
5
+ className?: string;
6
+ }>): import("react/jsx-runtime").JSX.Element;
7
+ export declare function PaginationNext({ href, className, children, }: React.PropsWithChildren<{
8
+ href?: string | null;
9
+ className?: string;
10
+ }>): import("react/jsx-runtime").JSX.Element;
11
+ export declare function PaginationList({ className, ...props }: React.ComponentPropsWithoutRef<'span'>): import("react/jsx-runtime").JSX.Element;
12
+ export declare function PaginationPage({ href, className, current, children, }: React.PropsWithChildren<{
13
+ href: string;
14
+ className?: string;
15
+ current?: boolean;
16
+ }>): import("react/jsx-runtime").JSX.Element;
17
+ export declare function PaginationGap({ className, children, ...props }: React.ComponentPropsWithoutRef<'span'>): import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,wBAAgB,UAAU,CAAC,EACzB,YAAY,EAAE,SAA6B,EAC3C,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAEvC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAW,EACX,SAAS,EACT,QAAqB,GACtB,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,2CAgBvE;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAW,EACX,SAAS,EACT,QAAiB,GAClB,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,2CAgBvE;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAE7F;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,SAAS,EACT,OAAe,EACf,QAAQ,GACT,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,2CAgBlF;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,QAAwB,EACxB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAUxC"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import clsx from 'clsx';
3
+ import { Button } from './button';
4
+ export function Pagination({ 'aria-label': ariaLabel = 'Page navigation', className, ...props }) {
5
+ return _jsx("nav", { "aria-label": ariaLabel, ...props, className: clsx(className, 'flex gap-x-2') });
6
+ }
7
+ export function PaginationPrevious({ href = null, className, children = 'Previous', }) {
8
+ return (_jsx("span", { className: clsx(className, 'grow basis-0'), children: _jsxs(Button, { ...(href === null ? { disabled: true } : { href }), plain: true, "aria-label": "Previous page", children: [_jsx("svg", { className: "stroke-current", "data-slot": "icon", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M2.75 8H13.25M2.75 8L5.25 5.5M2.75 8L5.25 10.5", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round" }) }), children] }) }));
9
+ }
10
+ export function PaginationNext({ href = null, className, children = 'Next', }) {
11
+ return (_jsx("span", { className: clsx(className, 'flex grow basis-0 justify-end'), children: _jsxs(Button, { ...(href === null ? { disabled: true } : { href }), plain: true, "aria-label": "Next page", children: [children, _jsx("svg", { className: "stroke-current", "data-slot": "icon", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M13.25 8L2.75 8M13.25 8L10.75 10.5M13.25 8L10.75 5.5", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round" }) })] }) }));
12
+ }
13
+ export function PaginationList({ className, ...props }) {
14
+ return _jsx("span", { ...props, className: clsx(className, 'hidden items-baseline gap-x-2 sm:flex') });
15
+ }
16
+ export function PaginationPage({ href, className, current = false, children, }) {
17
+ return (_jsx(Button, { href: href, plain: true, "aria-label": `Page ${children}`, "aria-current": current ? 'page' : undefined, className: clsx(className, 'min-w-9 before:absolute before:-inset-px before:rounded-lg', current && 'before:bg-zinc-950/5 dark:before:bg-white/10'), children: _jsx("span", { className: "-mx-0.5", children: children }) }));
18
+ }
19
+ export function PaginationGap({ className, children = _jsx(_Fragment, { children: "\u2026" }), ...props }) {
20
+ return (_jsx("span", { "aria-hidden": "true", ...props, className: clsx(className, 'w-9 text-center text-sm/6 font-semibold text-zinc-950 select-none dark:text-white'), children: children }));
21
+ }
22
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,UAAU,UAAU,CAAC,EACzB,YAAY,EAAE,SAAS,GAAG,iBAAiB,EAC3C,SAAS,EACT,GAAG,KAAK,EAC8B;IACtC,OAAO,4BAAiB,SAAS,KAAM,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,GAAI,CAAA;AAC9F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,IAAI,GAAG,IAAI,EACX,SAAS,EACT,QAAQ,GAAG,UAAU,GACiD;IACtE,OAAO,CACL,eAAM,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,YAC9C,MAAC,MAAM,OAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,sBAAY,eAAe,aAC3F,cAAK,SAAS,EAAC,gBAAgB,eAAW,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,YACjG,eACE,CAAC,EAAC,gDAAgD,EAClD,WAAW,EAAE,GAAG,EAChB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,GACtB,GACE,EACL,QAAQ,IACF,GACJ,CACR,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,GAAG,IAAI,EACX,SAAS,EACT,QAAQ,GAAG,MAAM,GACqD;IACtE,OAAO,CACL,eAAM,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,YAC/D,MAAC,MAAM,OAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,sBAAY,WAAW,aACtF,QAAQ,EACT,cAAK,SAAS,EAAC,gBAAgB,eAAW,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,YACjG,eACE,CAAC,EAAC,sDAAsD,EACxD,WAAW,EAAE,GAAG,EAChB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,GACtB,GACE,IACC,GACJ,CACR,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA0C;IAC5F,OAAO,kBAAU,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,uCAAuC,CAAC,GAAI,CAAA;AACjG,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,EACJ,SAAS,EACT,OAAO,GAAG,KAAK,EACf,QAAQ,GACyE;IACjF,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,KAAK,sBACO,QAAQ,QAAQ,EAAE,kBAChB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC1C,SAAS,EAAE,IAAI,CACb,SAAS,EACT,4DAA4D,EAC5D,OAAO,IAAI,8CAA8C,CAC1D,YAED,eAAM,SAAS,EAAC,SAAS,YAAE,QAAQ,GAAQ,GACpC,CACV,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,EACT,QAAQ,GAAG,uCAAa,EACxB,GAAG,KAAK,EAC+B;IACvC,OAAO,CACL,8BACc,MAAM,KACd,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,mFAAmF,CAAC,YAE9G,QAAQ,GACJ,CACR,CAAA;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ import { Popover as PopoverPrimitive } from "radix-ui";
3
+ declare function Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
5
+ declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof PopoverPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
6
+ declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>): import("react/jsx-runtime").JSX.Element;
7
+ declare function PopoverHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
8
+ declare function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">): import("react/jsx-runtime").JSX.Element;
9
+ declare function PopoverDescription({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
10
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverHeader, PopoverTitle, PopoverDescription, };
11
+ //# sourceMappingURL=popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAItD,iBAAS,OAAO,CAAC,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAEpD;AAED,iBAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,2CAEvD;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,KAAgB,EAChB,UAAc,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,2CAevD;AAED,iBAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,2CAEtD;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQ1E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAQxE;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAQ3B;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,EACZ,kBAAkB,GACnB,CAAA"}
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Popover as PopoverPrimitive } from "radix-ui";
4
+ import { cn } from "../lib/utils";
5
+ function Popover({ ...props }) {
6
+ return _jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
7
+ }
8
+ function PopoverTrigger({ ...props }) {
9
+ return _jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
10
+ }
11
+ function PopoverContent({ className, align = "center", sideOffset = 4, ...props }) {
12
+ return (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn("z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95", className), ...props }) }));
13
+ }
14
+ function PopoverAnchor({ ...props }) {
15
+ return _jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
16
+ }
17
+ function PopoverHeader({ className, ...props }) {
18
+ return (_jsx("div", { "data-slot": "popover-header", className: cn("flex flex-col gap-1 text-sm", className), ...props }));
19
+ }
20
+ function PopoverTitle({ className, ...props }) {
21
+ return (_jsx("div", { "data-slot": "popover-title", className: cn("font-medium", className), ...props }));
22
+ }
23
+ function PopoverDescription({ className, ...props }) {
24
+ return (_jsx("p", { "data-slot": "popover-description", className: cn("text-muted-foreground", className), ...props }));
25
+ }
26
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverHeader, PopoverTitle, PopoverDescription, };
27
+ //# sourceMappingURL=popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.js","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEtD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,SAAS,OAAO,CAAC,EACf,GAAG,KAAK,EAC2C;IACnD,OAAO,KAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,KAAK,KAAK,GAAI,CAAA;AACjE,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EAC8C;IACtD,OAAO,KAAC,gBAAgB,CAAC,OAAO,iBAAW,iBAAiB,KAAK,KAAK,GAAI,CAAA;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,KAAK,GAAG,QAAQ,EAChB,UAAU,GAAG,CAAC,EACd,GAAG,KAAK,EAC8C;IACtD,OAAO,CACL,KAAC,gBAAgB,CAAC,MAAM,cACtB,KAAC,gBAAgB,CAAC,OAAO,iBACb,iBAAiB,EAC3B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACX,geAAge,EAChe,SAAS,CACV,KACG,KAAK,GACT,GACsB,CAC3B,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EAC6C;IACrD,OAAO,KAAC,gBAAgB,CAAC,MAAM,iBAAW,gBAAgB,KAAK,KAAK,GAAI,CAAA;AAC1E,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACzE,OAAO,CACL,2BACY,gBAAgB,EAC1B,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,KACnD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACvE,OAAO,CACL,2BACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,KACnC,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACkB;IAC1B,OAAO,CACL,yBACY,qBAAqB,EAC/B,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,KAC7C,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,EACZ,kBAAkB,GACnB,CAAA"}
@@ -0,0 +1,38 @@
1
+ import * as Headless from '@headlessui/react';
2
+ export declare function RadioGroup({ className, ...props }: {
3
+ className?: string;
4
+ } & Omit<Headless.RadioGroupProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
5
+ export declare function RadioField({ className, ...props }: {
6
+ className?: string;
7
+ } & Omit<Headless.FieldProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
8
+ declare const colors: {
9
+ 'dark/zinc': string[];
10
+ 'dark/white': string[];
11
+ white: string;
12
+ dark: string;
13
+ zinc: string;
14
+ red: string;
15
+ orange: string;
16
+ amber: string;
17
+ yellow: string;
18
+ lime: string;
19
+ green: string;
20
+ emerald: string;
21
+ teal: string;
22
+ cyan: string;
23
+ sky: string;
24
+ blue: string;
25
+ indigo: string;
26
+ violet: string;
27
+ purple: string;
28
+ fuchsia: string;
29
+ pink: string;
30
+ rose: string;
31
+ };
32
+ type Color = keyof typeof colors;
33
+ export declare function Radio({ color, className, ...props }: {
34
+ color?: Color;
35
+ className?: string;
36
+ } & Omit<Headless.RadioProps, 'as' | 'className' | 'children'>): import("react/jsx-runtime").JSX.Element;
37
+ export {};
38
+ //# sourceMappingURL=radio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../src/components/radio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAG7C,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,GAAG,WAAW,CAAC,2CAc7E;AAED,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,2CAoBxE;AA+BD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;CAuCX,CAAA;AAED,KAAK,KAAK,GAAG,MAAM,OAAO,MAAM,CAAA;AAEhC,wBAAgB,KAAK,CAAC,EACpB,KAAmB,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC,2CAkBpG"}
@@ -0,0 +1,87 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as Headless from '@headlessui/react';
3
+ import clsx from 'clsx';
4
+ export function RadioGroup({ className, ...props }) {
5
+ return (_jsx(Headless.RadioGroup, { "data-slot": "control", ...props, className: clsx(className,
6
+ // Basic groups
7
+ 'space-y-3 **:data-[slot=label]:font-normal',
8
+ // With descriptions
9
+ 'has-data-[slot=description]:space-y-6 has-data-[slot=description]:**:data-[slot=label]:font-medium') }));
10
+ }
11
+ export function RadioField({ className, ...props }) {
12
+ return (_jsx(Headless.Field, { "data-slot": "field", ...props, className: clsx(className,
13
+ // Base layout
14
+ 'grid grid-cols-[1.125rem_1fr] gap-x-4 gap-y-1 sm:grid-cols-[1rem_1fr]',
15
+ // Control layout
16
+ '*:data-[slot=control]:col-start-1 *:data-[slot=control]:row-start-1 *:data-[slot=control]:mt-0.75 sm:*:data-[slot=control]:mt-1',
17
+ // Label layout
18
+ '*:data-[slot=label]:col-start-2 *:data-[slot=label]:row-start-1',
19
+ // Description layout
20
+ '*:data-[slot=description]:col-start-2 *:data-[slot=description]:row-start-2',
21
+ // With description
22
+ 'has-data-[slot=description]:**:data-[slot=label]:font-medium') }));
23
+ }
24
+ const base = [
25
+ // Basic layout
26
+ 'relative isolate flex size-4.75 shrink-0 rounded-full sm:size-4.25',
27
+ // Background color + shadow applied to inset pseudo element, so shadow blends with border in light mode
28
+ 'before:absolute before:inset-0 before:-z-10 before:rounded-full before:bg-white before:shadow-sm',
29
+ // Background color when checked
30
+ 'group-data-checked:before:bg-(--radio-checked-bg)',
31
+ // Background color is moved to control and shadow is removed in dark mode so hide `before` pseudo
32
+ 'dark:before:hidden',
33
+ // Background color applied to control in dark mode
34
+ 'dark:bg-white/5 dark:group-data-checked:bg-(--radio-checked-bg)',
35
+ // Border
36
+ 'border border-zinc-950/15 group-data-checked:border-transparent group-data-hover:group-data-checked:border-transparent group-data-hover:border-zinc-950/30 group-data-checked:bg-(--radio-checked-border)',
37
+ 'dark:border-white/15 dark:group-data-checked:border-white/5 dark:group-data-hover:group-data-checked:border-white/5 dark:group-data-hover:border-white/30',
38
+ // Inner highlight shadow
39
+ 'after:absolute after:inset-0 after:rounded-full after:shadow-[inset_0_1px_--theme(--color-white/15%)]',
40
+ 'dark:after:-inset-px dark:after:hidden dark:after:rounded-full dark:group-data-checked:after:block',
41
+ // Indicator color (light mode)
42
+ '[--radio-indicator:transparent] group-data-checked:[--radio-indicator:var(--radio-checked-indicator)] group-data-hover:group-data-checked:[--radio-indicator:var(--radio-checked-indicator)] group-data-hover:[--radio-indicator:var(--color-zinc-900)]/10',
43
+ // Indicator color (dark mode)
44
+ 'dark:group-data-hover:group-data-checked:[--radio-indicator:var(--radio-checked-indicator)] dark:group-data-hover:[--radio-indicator:var(--color-zinc-700)]',
45
+ // Focus ring
46
+ 'group-data-focus:outline group-data-focus:outline-2 group-data-focus:outline-offset-2 group-data-focus:outline-blue-500',
47
+ // Disabled state
48
+ 'group-data-disabled:opacity-50',
49
+ 'group-data-disabled:border-zinc-950/25 group-data-disabled:bg-zinc-950/5 group-data-disabled:[--radio-checked-indicator:var(--color-zinc-950)]/50 group-data-disabled:before:bg-transparent',
50
+ 'dark:group-data-disabled:border-white/20 dark:group-data-disabled:bg-white/2.5 dark:group-data-disabled:[--radio-checked-indicator:var(--color-white)]/50 dark:group-data-checked:group-data-disabled:after:hidden',
51
+ ];
52
+ const colors = {
53
+ 'dark/zinc': [
54
+ '[--radio-checked-bg:var(--color-zinc-900)] [--radio-checked-border:var(--color-zinc-950)]/90 [--radio-checked-indicator:var(--color-white)]',
55
+ 'dark:[--radio-checked-bg:var(--color-zinc-600)]',
56
+ ],
57
+ 'dark/white': [
58
+ '[--radio-checked-bg:var(--color-zinc-900)] [--radio-checked-border:var(--color-zinc-950)]/90 [--radio-checked-indicator:var(--color-white)]',
59
+ 'dark:[--radio-checked-bg:var(--color-white)] dark:[--radio-checked-border:var(--color-zinc-950)]/15 dark:[--radio-checked-indicator:var(--color-zinc-900)]',
60
+ ],
61
+ white: '[--radio-checked-bg:var(--color-white)] [--radio-checked-border:var(--color-zinc-950)]/15 [--radio-checked-indicator:var(--color-zinc-900)]',
62
+ dark: '[--radio-checked-bg:var(--color-zinc-900)] [--radio-checked-border:var(--color-zinc-950)]/90 [--radio-checked-indicator:var(--color-white)]',
63
+ zinc: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-zinc-600)] [--radio-checked-border:var(--color-zinc-700)]/90',
64
+ red: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-red-600)] [--radio-checked-border:var(--color-red-700)]/90',
65
+ orange: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-orange-500)] [--radio-checked-border:var(--color-orange-600)]/90',
66
+ amber: '[--radio-checked-bg:var(--color-amber-400)] [--radio-checked-border:var(--color-amber-500)]/80 [--radio-checked-indicator:var(--color-amber-950)]',
67
+ yellow: '[--radio-checked-bg:var(--color-yellow-300)] [--radio-checked-border:var(--color-yellow-400)]/80 [--radio-checked-indicator:var(--color-yellow-950)]',
68
+ lime: '[--radio-checked-bg:var(--color-lime-300)] [--radio-checked-border:var(--color-lime-400)]/80 [--radio-checked-indicator:var(--color-lime-950)]',
69
+ green: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-green-600)] [--radio-checked-border:var(--color-green-700)]/90',
70
+ emerald: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-emerald-600)] [--radio-checked-border:var(--color-emerald-700)]/90',
71
+ teal: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-teal-600)] [--radio-checked-border:var(--color-teal-700)]/90',
72
+ cyan: '[--radio-checked-bg:var(--color-cyan-300)] [--radio-checked-border:var(--color-cyan-400)]/80 [--radio-checked-indicator:var(--color-cyan-950)]',
73
+ sky: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-sky-500)] [--radio-checked-border:var(--color-sky-600)]/80',
74
+ blue: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-blue-600)] [--radio-checked-border:var(--color-blue-700)]/90',
75
+ indigo: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-indigo-500)] [--radio-checked-border:var(--color-indigo-600)]/90',
76
+ violet: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-violet-500)] [--radio-checked-border:var(--color-violet-600)]/90',
77
+ purple: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-purple-500)] [--radio-checked-border:var(--color-purple-600)]/90',
78
+ fuchsia: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-fuchsia-500)] [--radio-checked-border:var(--color-fuchsia-600)]/90',
79
+ pink: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-pink-500)] [--radio-checked-border:var(--color-pink-600)]/90',
80
+ rose: '[--radio-checked-indicator:var(--color-white)] [--radio-checked-bg:var(--color-rose-500)] [--radio-checked-border:var(--color-rose-600)]/90',
81
+ };
82
+ export function Radio({ color = 'dark/zinc', className, ...props }) {
83
+ return (_jsx(Headless.Radio, { "data-slot": "control", ...props, className: clsx(className, 'group inline-flex focus:outline-hidden'), children: _jsx("span", { className: clsx([base, colors[color]]), children: _jsx("span", { className: clsx('size-full rounded-full border-[4.5px] border-transparent bg-(--radio-indicator) bg-clip-padding',
84
+ // Forced colors mode
85
+ 'forced-colors:border-[Canvas] forced-colors:group-data-checked:border-[Highlight]') }) }) }));
86
+ }
87
+ //# sourceMappingURL=radio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio.js","sourceRoot":"","sources":["../../src/components/radio.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,MAAM,UAAU,UAAU,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACoE;IAC5E,OAAO,CACL,KAAC,QAAQ,CAAC,UAAU,iBACR,SAAS,KACf,KAAK,EACT,SAAS,EAAE,IAAI,CACb,SAAS;QACT,eAAe;QACf,4CAA4C;QAC5C,oBAAoB;QACpB,oGAAoG,CACrG,GACD,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EAC+D;IACvE,OAAO,CACL,KAAC,QAAQ,CAAC,KAAK,iBACH,OAAO,KACb,KAAK,EACT,SAAS,EAAE,IAAI,CACb,SAAS;QACT,cAAc;QACd,uEAAuE;QACvE,iBAAiB;QACjB,iIAAiI;QACjI,eAAe;QACf,iEAAiE;QACjE,qBAAqB;QACrB,6EAA6E;QAC7E,mBAAmB;QACnB,8DAA8D,CAC/D,GACD,CACH,CAAA;AACH,CAAC;AAED,MAAM,IAAI,GAAG;IACX,eAAe;IACf,oEAAoE;IACpE,wGAAwG;IACxG,kGAAkG;IAClG,gCAAgC;IAChC,mDAAmD;IACnD,kGAAkG;IAClG,oBAAoB;IACpB,mDAAmD;IACnD,iEAAiE;IACjE,SAAS;IACT,2MAA2M;IAC3M,2JAA2J;IAC3J,yBAAyB;IACzB,uGAAuG;IACvG,oGAAoG;IACpG,+BAA+B;IAC/B,4PAA4P;IAC5P,8BAA8B;IAC9B,6JAA6J;IAC7J,aAAa;IACb,yHAAyH;IACzH,iBAAiB;IACjB,gCAAgC;IAChC,6LAA6L;IAC7L,oNAAoN;CACrN,CAAA;AAED,MAAM,MAAM,GAAG;IACb,WAAW,EAAE;QACX,6IAA6I;QAC7I,iDAAiD;KAClD;IACD,YAAY,EAAE;QACZ,6IAA6I;QAC7I,4JAA4J;KAC7J;IACD,KAAK,EACH,6IAA6I;IAC/I,IAAI,EAAE,6IAA6I;IACnJ,IAAI,EAAE,6IAA6I;IACnJ,GAAG,EAAE,2IAA2I;IAChJ,MAAM,EACJ,iJAAiJ;IACnJ,KAAK,EACH,mJAAmJ;IACrJ,MAAM,EACJ,sJAAsJ;IACxJ,IAAI,EAAE,gJAAgJ;IACtJ,KAAK,EACH,+IAA+I;IACjJ,OAAO,EACL,mJAAmJ;IACrJ,IAAI,EAAE,6IAA6I;IACnJ,IAAI,EAAE,gJAAgJ;IACtJ,GAAG,EAAE,2IAA2I;IAChJ,IAAI,EAAE,6IAA6I;IACnJ,MAAM,EACJ,iJAAiJ;IACnJ,MAAM,EACJ,iJAAiJ;IACnJ,MAAM,EACJ,iJAAiJ;IACnJ,OAAO,EACL,mJAAmJ;IACrJ,IAAI,EAAE,6IAA6I;IACnJ,IAAI,EAAE,6IAA6I;CACpJ,CAAA;AAID,MAAM,UAAU,KAAK,CAAC,EACpB,KAAK,GAAG,WAAW,EACnB,SAAS,EACT,GAAG,KAAK,EAC2F;IACnG,OAAO,CACL,KAAC,QAAQ,CAAC,KAAK,iBACH,SAAS,KACf,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,wCAAwC,CAAC,YAEpE,eAAM,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAC1C,eACE,SAAS,EAAE,IAAI,CACb,iGAAiG;gBACjG,qBAAqB;gBACrB,mFAAmF,CACpF,GACD,GACG,GACQ,CAClB,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ import { ScrollArea as ScrollAreaPrimitive } from "radix-ui";
3
+ declare function ScrollArea({ className, children, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function ScrollBar({ className, orientation, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>): import("react/jsx-runtime").JSX.Element;
5
+ export { ScrollArea, ScrollBar };
6
+ //# sourceMappingURL=scroll-area.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-area.d.ts","sourceRoot":"","sources":["../../src/components/scroll-area.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAI5D,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,2CAiBvD;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,WAAwB,EACxB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,mBAAmB,CAAC,2CAqBtE;AAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { ScrollArea as ScrollAreaPrimitive } from "radix-ui";
4
+ import { cn } from "../lib/utils";
5
+ function ScrollArea({ className, children, ...props }) {
6
+ return (_jsxs(ScrollAreaPrimitive.Root, { "data-slot": "scroll-area", className: cn("relative", className), ...props, children: [_jsx(ScrollAreaPrimitive.Viewport, { "data-slot": "scroll-area-viewport", className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1", children: children }), _jsx(ScrollBar, {}), _jsx(ScrollAreaPrimitive.Corner, {})] }));
7
+ }
8
+ function ScrollBar({ className, orientation = "vertical", ...props }) {
9
+ return (_jsx(ScrollAreaPrimitive.ScrollAreaScrollbar, { "data-slot": "scroll-area-scrollbar", orientation: orientation, className: cn("flex touch-none p-px transition-colors select-none", orientation === "vertical" &&
10
+ "h-full w-2.5 border-l border-l-transparent", orientation === "horizontal" &&
11
+ "h-2.5 flex-col border-t border-t-transparent", className), ...props, children: _jsx(ScrollAreaPrimitive.ScrollAreaThumb, { "data-slot": "scroll-area-thumb", className: "relative flex-1 rounded-full bg-border" }) }));
12
+ }
13
+ export { ScrollArea, ScrollBar };
14
+ //# sourceMappingURL=scroll-area.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-area.js","sourceRoot":"","sources":["../../src/components/scroll-area.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE5D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,SAAS,UAAU,CAAC,EAClB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EAC8C;IACtD,OAAO,CACL,MAAC,mBAAmB,CAAC,IAAI,iBACb,aAAa,EACvB,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,KAChC,KAAK,aAET,KAAC,mBAAmB,CAAC,QAAQ,iBACjB,sBAAsB,EAChC,SAAS,EAAC,oJAAoJ,YAE7J,QAAQ,GACoB,EAC/B,KAAC,SAAS,KAAG,EACb,KAAC,mBAAmB,CAAC,MAAM,KAAG,IACL,CAC5B,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EACjB,SAAS,EACT,WAAW,GAAG,UAAU,EACxB,GAAG,KAAK,EAC6D;IACrE,OAAO,CACL,KAAC,mBAAmB,CAAC,mBAAmB,iBAC5B,uBAAuB,EACjC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,WAAW,KAAK,UAAU;YACxB,4CAA4C,EAC9C,WAAW,KAAK,YAAY;YAC1B,8CAA8C,EAChD,SAAS,CACV,KACG,KAAK,YAET,KAAC,mBAAmB,CAAC,eAAe,iBACxB,mBAAmB,EAC7B,SAAS,EAAC,wCAAwC,GAClD,GACsC,CAC3C,CAAA;AACH,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import * as Headless from '@headlessui/react';
2
+ import React from 'react';
3
+ export declare const Select: React.ForwardRefExoticComponent<{
4
+ className?: string;
5
+ } & Omit<Headless.SelectProps<"select">, "className" | "as"> & React.RefAttributes<HTMLSelectElement>>;
6
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAE7C,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,eAAO,MAAM,MAAM;gBACgC,MAAM;sGA8DvD,CAAA"}