@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,22 @@
1
+ import * as Headless from '@headlessui/react';
2
+ import type React from 'react';
3
+ export declare function Fieldset({ className, ...props }: {
4
+ className?: string;
5
+ } & Omit<Headless.FieldsetProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
6
+ export declare function Legend({ className, ...props }: {
7
+ className?: string;
8
+ } & Omit<Headless.LegendProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
9
+ export declare function FieldGroup({ className, ...props }: React.ComponentPropsWithoutRef<'div'>): import("react/jsx-runtime").JSX.Element;
10
+ export declare function Field({ className, ...props }: {
11
+ className?: string;
12
+ } & Omit<Headless.FieldProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
13
+ export declare function Label({ className, ...props }: {
14
+ className?: string;
15
+ } & Omit<Headless.LabelProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
16
+ export declare function Description({ className, ...props }: {
17
+ className?: string;
18
+ } & Omit<Headless.DescriptionProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
19
+ export declare function ErrorMessage({ className, ...props }: {
20
+ className?: string;
21
+ } & Omit<Headless.DescriptionProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
22
+ //# sourceMappingURL=fieldset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldset.d.ts","sourceRoot":"","sources":["../../src/components/fieldset.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAE7C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,GAAG,WAAW,CAAC,2CAO3E;AAED,wBAAgB,MAAM,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW,CAAC,2CAWzE;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAExF;AAED,wBAAgB,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,2CAepH;AAED,wBAAgB,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,2CAWpH;AAED,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,2CAQ9E;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,2CAQ9E"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as Headless from '@headlessui/react';
3
+ import clsx from 'clsx';
4
+ export function Fieldset({ className, ...props }) {
5
+ return (_jsx(Headless.Fieldset, { ...props, className: clsx(className, '*:data-[slot=text]:mt-1 [&>*+[data-slot=control]]:mt-6') }));
6
+ }
7
+ export function Legend({ className, ...props }) {
8
+ return (_jsx(Headless.Legend, { "data-slot": "legend", ...props, className: clsx(className, 'text-base/6 font-semibold text-zinc-950 data-disabled:opacity-50 sm:text-sm/6 dark:text-white') }));
9
+ }
10
+ export function FieldGroup({ className, ...props }) {
11
+ return _jsx("div", { "data-slot": "control", ...props, className: clsx(className, 'space-y-8') });
12
+ }
13
+ export function Field({ className, ...props }) {
14
+ return (_jsx(Headless.Field, { ...props, className: clsx(className, '[&>[data-slot=label]+[data-slot=control]]:mt-3', '[&>[data-slot=label]+[data-slot=description]]:mt-1', '[&>[data-slot=description]+[data-slot=control]]:mt-3', '[&>[data-slot=control]+[data-slot=description]]:mt-3', '[&>[data-slot=control]+[data-slot=error]]:mt-3', '*:data-[slot=label]:font-medium') }));
15
+ }
16
+ export function Label({ className, ...props }) {
17
+ return (_jsx(Headless.Label, { "data-slot": "label", ...props, className: clsx(className, 'text-base/6 text-zinc-950 select-none data-disabled:opacity-50 sm:text-sm/6 dark:text-white') }));
18
+ }
19
+ export function Description({ className, ...props }) {
20
+ return (_jsx(Headless.Description, { "data-slot": "description", ...props, className: clsx(className, 'text-base/6 text-zinc-500 data-disabled:opacity-50 sm:text-sm/6 dark:text-zinc-400') }));
21
+ }
22
+ export function ErrorMessage({ className, ...props }) {
23
+ return (_jsx(Headless.Description, { "data-slot": "error", ...props, className: clsx(className, 'text-base/6 text-red-600 data-disabled:opacity-50 sm:text-sm/6 dark:text-red-500') }));
24
+ }
25
+ //# sourceMappingURL=fieldset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldset.js","sourceRoot":"","sources":["../../src/components/fieldset.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,MAAM,UAAU,QAAQ,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACkE;IAC1E,OAAO,CACL,KAAC,QAAQ,CAAC,QAAQ,OACZ,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,wDAAwD,CAAC,GACpF,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACgE;IACxE,OAAO,CACL,KAAC,QAAQ,CAAC,MAAM,iBACJ,QAAQ,KACd,KAAK,EACT,SAAS,EAAE,IAAI,CACb,SAAS,EACT,+FAA+F,CAChG,GACD,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAyC;IACvF,OAAO,2BAAe,SAAS,KAAK,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAI,CAAA;AACxF,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA0E;IACnH,OAAO,CACL,KAAC,QAAQ,CAAC,KAAK,OACT,KAAK,EACT,SAAS,EAAE,IAAI,CACb,SAAS,EACT,gDAAgD,EAChD,oDAAoD,EACpD,sDAAsD,EACtD,sDAAsD,EACtD,gDAAgD,EAChD,iCAAiC,CAClC,GACD,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA0E;IACnH,OAAO,CACL,KAAC,QAAQ,CAAC,KAAK,iBACH,OAAO,KACb,KAAK,EACT,SAAS,EAAE,IAAI,CACb,SAAS,EACT,6FAA6F,CAC9F,GACD,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACqE;IAC7E,OAAO,CACL,KAAC,QAAQ,CAAC,WAAW,iBACT,aAAa,KACnB,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,oFAAoF,CAAC,GAChH,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACqE;IAC7E,OAAO,CACL,KAAC,QAAQ,CAAC,WAAW,iBACT,OAAO,KACb,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,kFAAkF,CAAC,GAC9G,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,25 @@
1
+ import * as React from "react";
2
+ import type { Label as LabelPrimitive } from "radix-ui";
3
+ import { Slot } from "radix-ui";
4
+ import { type ControllerProps, type FieldPath, type FieldValues } from "react-hook-form";
5
+ declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: import("react-hook-form").FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
6
+ declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => import("react/jsx-runtime").JSX.Element;
7
+ declare const useFormField: () => {
8
+ invalid: boolean;
9
+ isDirty: boolean;
10
+ isTouched: boolean;
11
+ isValidating: boolean;
12
+ error?: import("react-hook-form").FieldError;
13
+ id: string;
14
+ name: string;
15
+ formItemId: string;
16
+ formDescriptionId: string;
17
+ formMessageId: string;
18
+ };
19
+ declare function FormItem({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
20
+ declare function FormLabel({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
21
+ declare function FormControl({ ...props }: React.ComponentProps<typeof Slot.Root>): import("react/jsx-runtime").JSX.Element;
22
+ declare function FormDescription({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
23
+ declare function FormMessage({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element | null;
24
+ export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, };
25
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAA;AAKxB,QAAA,MAAM,IAAI,4MAAe,CAAA;AAazB,QAAA,MAAM,SAAS,GACb,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,cAEC,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,4CAMtC,CAAA;AAED,QAAA,MAAM,YAAY;;;;;;;;;;;CAqBjB,CAAA;AAUD,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAYrE;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAYlD;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,2CAgBxE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAW1E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,kDAkBtE;AAED,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,GACV,CAAA"}
@@ -0,0 +1,60 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Slot } from "radix-ui";
5
+ import { Controller, FormProvider, useFormContext, useFormState, } from "react-hook-form";
6
+ import { cn } from "../lib/utils";
7
+ import { Label } from "./label";
8
+ const Form = FormProvider;
9
+ const FormFieldContext = React.createContext({});
10
+ const FormField = ({ ...props }) => {
11
+ return (_jsx(FormFieldContext.Provider, { value: { name: props.name }, children: _jsx(Controller, { ...props }) }));
12
+ };
13
+ const useFormField = () => {
14
+ const fieldContext = React.useContext(FormFieldContext);
15
+ const itemContext = React.useContext(FormItemContext);
16
+ const { getFieldState } = useFormContext();
17
+ const formState = useFormState({ name: fieldContext.name });
18
+ const fieldState = getFieldState(fieldContext.name, formState);
19
+ if (!fieldContext) {
20
+ throw new Error("useFormField should be used within <FormField>");
21
+ }
22
+ const { id } = itemContext;
23
+ return {
24
+ id,
25
+ name: fieldContext.name,
26
+ formItemId: `${id}-form-item`,
27
+ formDescriptionId: `${id}-form-item-description`,
28
+ formMessageId: `${id}-form-item-message`,
29
+ ...fieldState,
30
+ };
31
+ };
32
+ const FormItemContext = React.createContext({});
33
+ function FormItem({ className, ...props }) {
34
+ const id = React.useId();
35
+ return (_jsx(FormItemContext.Provider, { value: { id }, children: _jsx("div", { "data-slot": "form-item", className: cn("grid gap-2", className), ...props }) }));
36
+ }
37
+ function FormLabel({ className, ...props }) {
38
+ const { error, formItemId } = useFormField();
39
+ return (_jsx(Label, { "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive", className), htmlFor: formItemId, ...props }));
40
+ }
41
+ function FormControl({ ...props }) {
42
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
43
+ return (_jsx(Slot.Root, { "data-slot": "form-control", id: formItemId, "aria-describedby": !error
44
+ ? `${formDescriptionId}`
45
+ : `${formDescriptionId} ${formMessageId}`, "aria-invalid": !!error, ...props }));
46
+ }
47
+ function FormDescription({ className, ...props }) {
48
+ const { formDescriptionId } = useFormField();
49
+ return (_jsx("p", { "data-slot": "form-description", id: formDescriptionId, className: cn("text-sm text-muted-foreground", className), ...props }));
50
+ }
51
+ function FormMessage({ className, ...props }) {
52
+ const { error, formMessageId } = useFormField();
53
+ const body = error ? String(error?.message ?? "") : props.children;
54
+ if (!body) {
55
+ return null;
56
+ }
57
+ return (_jsx("p", { "data-slot": "form-message", id: formMessageId, className: cn("text-sm text-destructive", className), ...props, children: body }));
58
+ }
59
+ export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, };
60
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ type HeadingProps = {
2
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
3
+ } & React.ComponentPropsWithoutRef<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>;
4
+ export declare function Heading({ className, level, ...props }: HeadingProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function Subheading({ className, level, ...props }: HeadingProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=heading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":"AAEA,KAAK,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CAAE,GAAG,KAAK,CAAC,wBAAwB,CACpF,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CACxC,CAAA;AAED,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,2CASvE;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,2CAS1E"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import clsx from 'clsx';
3
+ export function Heading({ className, level = 1, ...props }) {
4
+ const Element = `h${level}`;
5
+ return (_jsx(Element, { ...props, className: clsx(className, 'font-display text-2xl/8 font-semibold text-zinc-950 sm:text-xl/8 dark:text-white') }));
6
+ }
7
+ export function Subheading({ className, level = 2, ...props }) {
8
+ const Element = `h${level}`;
9
+ return (_jsx(Element, { ...props, className: clsx(className, 'text-base/7 font-semibold text-zinc-950 sm:text-sm/6 dark:text-white') }));
10
+ }
11
+ //# sourceMappingURL=heading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heading.js","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAMvB,MAAM,UAAU,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,EAAgB;IACtE,MAAM,OAAO,GAAuB,IAAI,KAAK,EAAE,CAAA;IAE/C,OAAO,CACL,KAAC,OAAO,OACF,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,kFAAkF,CAAC,GAC9G,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,EAAgB;IACzE,MAAM,OAAO,GAAuB,IAAI,KAAK,EAAE,CAAA;IAE/C,OAAO,CACL,KAAC,OAAO,OACF,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,sEAAsE,CAAC,GAClG,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import * as Headless from '@headlessui/react';
2
+ import React from 'react';
3
+ export declare function InputGroup({ children }: React.ComponentPropsWithoutRef<'span'>): import("react/jsx-runtime").JSX.Element;
4
+ declare const dateTypes: string[];
5
+ type DateType = (typeof dateTypes)[number];
6
+ export declare const Input: React.ForwardRefExoticComponent<{
7
+ className?: string;
8
+ type?: "email" | "number" | "password" | "search" | "tel" | "text" | "url" | DateType;
9
+ } & Omit<Headless.InputProps<"input">, "className" | "as"> & React.RefAttributes<HTMLInputElement>>;
10
+ export {};
11
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAE7C,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAe9E;AAED,QAAA,MAAM,SAAS,UAAsD,CAAA;AACrE,KAAK,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1C,eAAO,MAAM,KAAK;gBAKF,MAAM;WACX,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ;mGA6DvF,CAAA"}
@@ -0,0 +1,57 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as Headless from '@headlessui/react';
3
+ import clsx from 'clsx';
4
+ import { forwardRef } from 'react';
5
+ export function InputGroup({ children }) {
6
+ return (_jsx("span", { "data-slot": "control", className: clsx('relative isolate block', 'has-[[data-slot=icon]:first-child]:[&_input]:pl-10 has-[[data-slot=icon]:last-child]:[&_input]:pr-10 sm:has-[[data-slot=icon]:first-child]:[&_input]:pl-8 sm:has-[[data-slot=icon]:last-child]:[&_input]:pr-8', '*:data-[slot=icon]:pointer-events-none *:data-[slot=icon]:absolute *:data-[slot=icon]:top-3 *:data-[slot=icon]:z-10 *:data-[slot=icon]:size-5 sm:*:data-[slot=icon]:top-2.5 sm:*:data-[slot=icon]:size-4', '[&>[data-slot=icon]:first-child]:left-3 sm:[&>[data-slot=icon]:first-child]:left-2.5 [&>[data-slot=icon]:last-child]:right-3 sm:[&>[data-slot=icon]:last-child]:right-2.5', '*:data-[slot=icon]:text-zinc-500 dark:*:data-[slot=icon]:text-zinc-400'), children: children }));
7
+ }
8
+ const dateTypes = ['date', 'datetime-local', 'month', 'time', 'week'];
9
+ export const Input = forwardRef(function Input({ className, ...props }, ref) {
10
+ return (_jsx("span", { "data-slot": "control", className: clsx([
11
+ className,
12
+ // Basic layout
13
+ 'relative block w-full',
14
+ // Background color + shadow applied to inset pseudo element, so shadow blends with border in light mode
15
+ 'before:absolute before:inset-px before:rounded-[calc(var(--radius-lg)-1px)] before:bg-white before:shadow-sm',
16
+ // Background color is moved to control and shadow is removed in dark mode so hide `before` pseudo
17
+ 'dark:before:hidden',
18
+ // Focus ring
19
+ 'after:pointer-events-none after:absolute after:inset-0 after:rounded-lg after:ring-transparent after:ring-inset sm:focus-within:after:ring-2 sm:focus-within:after:ring-ring',
20
+ // Disabled state
21
+ 'has-data-disabled:opacity-50 has-data-disabled:before:bg-zinc-950/5 has-data-disabled:before:shadow-none',
22
+ ]), children: _jsx(Headless.Input, { ref: ref, ...props, className: clsx([
23
+ // Date classes
24
+ props.type &&
25
+ dateTypes.includes(props.type) && [
26
+ '[&::-webkit-datetime-edit-fields-wrapper]:p-0',
27
+ '[&::-webkit-date-and-time-value]:min-h-[1.5em]',
28
+ '[&::-webkit-datetime-edit]:inline-flex',
29
+ '[&::-webkit-datetime-edit]:p-0',
30
+ '[&::-webkit-datetime-edit-year-field]:p-0',
31
+ '[&::-webkit-datetime-edit-month-field]:p-0',
32
+ '[&::-webkit-datetime-edit-day-field]:p-0',
33
+ '[&::-webkit-datetime-edit-hour-field]:p-0',
34
+ '[&::-webkit-datetime-edit-minute-field]:p-0',
35
+ '[&::-webkit-datetime-edit-second-field]:p-0',
36
+ '[&::-webkit-datetime-edit-millisecond-field]:p-0',
37
+ '[&::-webkit-datetime-edit-meridiem-field]:p-0',
38
+ ],
39
+ // Basic layout
40
+ 'relative block w-full appearance-none rounded-lg px-[calc(--spacing(3.5)-1px)] py-[calc(--spacing(2.5)-1px)] sm:px-[calc(--spacing(3)-1px)] sm:py-[calc(--spacing(1.5)-1px)]',
41
+ // Typography
42
+ 'text-base/6 text-zinc-950 placeholder:text-zinc-500 sm:text-sm/6 dark:text-white',
43
+ // Border
44
+ 'border border-zinc-950/10 data-hover:border-zinc-950/20 dark:border-white/10 dark:data-hover:border-white/20',
45
+ // Background color
46
+ 'bg-transparent dark:bg-white/5',
47
+ // Hide default focus styles
48
+ 'focus:outline-hidden',
49
+ // Invalid state
50
+ 'data-invalid:border-red-500 data-invalid:data-hover:border-red-500 dark:data-invalid:border-red-600 dark:data-invalid:data-hover:border-red-600',
51
+ // Disabled state
52
+ 'data-disabled:border-zinc-950/20 dark:data-disabled:border-white/15 dark:data-disabled:bg-white/2.5 dark:data-hover:data-disabled:border-white/15',
53
+ // System icons
54
+ 'dark:scheme-dark',
55
+ ]) }) }));
56
+ });
57
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAA0C;IAC7E,OAAO,CACL,4BACY,SAAS,EACnB,SAAS,EAAE,IAAI,CACb,wBAAwB,EACxB,+MAA+M,EAC/M,0MAA0M,EAC1M,2KAA2K,EAC3K,wEAAwE,CACzE,YAEA,QAAQ,GACJ,CACR,CAAA;AACH,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAGrE,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,KAAK,CAC5C,EACE,SAAS,EACT,GAAG,KAAK,EAIuC,EACjD,GAAyC;IAEzC,OAAO,CACL,4BACY,SAAS,EACnB,SAAS,EAAE,IAAI,CAAC;YACd,SAAS;YACT,eAAe;YACf,uBAAuB;YACvB,wGAAwG;YACxG,8GAA8G;YAC9G,kGAAkG;YAClG,oBAAoB;YACpB,aAAa;YACb,8KAA8K;YAC9K,iBAAiB;YACjB,0GAA0G;SAC3G,CAAC,YAEF,KAAC,QAAQ,CAAC,KAAK,IACb,GAAG,EAAE,GAAG,KACJ,KAAK,EACT,SAAS,EAAE,IAAI,CAAC;gBACd,eAAe;gBACf,KAAK,CAAC,IAAI;oBACR,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;oBAChC,+CAA+C;oBAC/C,gDAAgD;oBAChD,wCAAwC;oBACxC,gCAAgC;oBAChC,2CAA2C;oBAC3C,4CAA4C;oBAC5C,0CAA0C;oBAC1C,2CAA2C;oBAC3C,6CAA6C;oBAC7C,6CAA6C;oBAC7C,kDAAkD;oBAClD,+CAA+C;iBAChD;gBACH,eAAe;gBACf,8KAA8K;gBAC9K,aAAa;gBACb,kFAAkF;gBAClF,SAAS;gBACT,8GAA8G;gBAC9G,mBAAmB;gBACnB,gCAAgC;gBAChC,4BAA4B;gBAC5B,sBAAsB;gBACtB,gBAAgB;gBAChB,iJAAiJ;gBACjJ,iBAAiB;gBACjB,mJAAmJ;gBACnJ,eAAe;gBACf,kBAAkB;aACnB,CAAC,GACF,GACG,CACR,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,78 @@
1
+ import { type ReactNode } from "react";
2
+ export interface KanbanColumn {
3
+ id: string;
4
+ title: string;
5
+ subtitle?: string;
6
+ count: number;
7
+ /** Tailwind color class for the accent dot (e.g. "bg-sky-500") */
8
+ accentColor?: string;
9
+ /** Extra classes applied to the column header region */
10
+ headerClassName?: string;
11
+ /** Extra classes applied to the top-border accent stripe */
12
+ accentStripeClassName?: string;
13
+ /** Extra classes applied to the count badge */
14
+ countClassName?: string;
15
+ /** Icon element rendered in the header (16px recommended) */
16
+ icon?: ReactNode;
17
+ /** Classes for the icon wrapper */
18
+ iconClassName?: string;
19
+ /** Text shown when the column has no cards */
20
+ emptyText?: string;
21
+ }
22
+ export interface KanbanBoardProps<TItem = any> {
23
+ columns: KanbanColumn[];
24
+ /** Render the cards for a given column id */
25
+ renderColumnCards: (columnId: string) => ReactNode;
26
+ className?: string;
27
+ /** Enable drag-and-drop. When false (default), no @dnd-kit code is loaded. */
28
+ dndEnabled?: boolean;
29
+ /** Items used to identify the dragged element for the overlay */
30
+ items?: TItem[];
31
+ /** Extract a unique ID from an item */
32
+ getItemId?: (item: TItem) => string;
33
+ /** Determine which column an item belongs to */
34
+ getItemColumn?: (item: TItem) => string;
35
+ /** Called when a drag completes on a valid target */
36
+ onDragEnd?: (itemId: string, fromColumn: string, toColumn: string) => void | Promise<void>;
37
+ /** Return true if moving from one column to another is allowed */
38
+ isValidTransition?: (fromColumn: string, toColumn: string) => boolean;
39
+ /** Render a custom overlay while dragging */
40
+ renderDragOverlay?: (item: TItem) => ReactNode;
41
+ /** Raw onDragStart from DragDropProvider (for consumers that need low-level access) */
42
+ onDragStartRaw?: (event: any) => void;
43
+ /** Raw onDragEnd from DragDropProvider (for consumers that need low-level access) */
44
+ onDragEndRaw?: (event: any) => void;
45
+ /** How to display on mobile: "scroll" (default) or "tabs" */
46
+ mobileMode?: "scroll" | "tabs";
47
+ /** Currently active tab (when mobileMode="tabs") */
48
+ activeMobileTab?: string;
49
+ /** Called when mobile tab changes */
50
+ onMobileTabChange?: (columnId: string) => void;
51
+ /** Extra classes for individual column wrappers during DnD */
52
+ columnClassName?: string | ((columnId: string, state: ColumnDndState) => string);
53
+ /** Extra classes for the scrollable card body of each column */
54
+ columnBodyClassName?: string;
55
+ /**
56
+ * Replace the entire column shell with a custom renderer.
57
+ * When provided, KanbanColumnShell is NOT used — the consumer controls
58
+ * the full column layout, header, empty state, etc.
59
+ * The `droppableRef` should be attached to the drop target element.
60
+ * The `cards` node is the result of renderColumnCards(columnId).
61
+ */
62
+ renderColumn?: (column: KanbanColumn, cards: ReactNode, dndState: ColumnDndState, droppableRef: (element: Element | null) => void) => ReactNode;
63
+ }
64
+ export interface ColumnDndState {
65
+ isOver: boolean;
66
+ isValidTarget: boolean;
67
+ isInvalidTarget: boolean;
68
+ isDragging: boolean;
69
+ }
70
+ export declare function KanbanBoard<TItem = any>(props: KanbanBoardProps<TItem>): import("react/jsx-runtime").JSX.Element;
71
+ export interface KanbanColumnShellProps {
72
+ column: KanbanColumn;
73
+ children: ReactNode;
74
+ className?: string;
75
+ bodyClassName?: string;
76
+ }
77
+ export declare function KanbanColumnShell({ column, children, className, bodyClassName, }: KanbanColumnShellProps): import("react/jsx-runtime").JSX.Element;
78
+ //# sourceMappingURL=kanban-board.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-board.d.ts","sourceRoot":"","sources":["../../src/components/kanban-board.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../lib/utils";
3
+ // NOTE: The DnD-enabled board is in kanban-dnd-board.tsx — NOT lazy-loaded here
4
+ // because @dnd-kit is an optional peer dep. Consumers who need DnD should import
5
+ // KanbanDndBoard directly (e.g., the importer dashboard). The KanbanBoard export
6
+ // here is the static (no-DnD) version only.
7
+ // ─── Board ────────────────────────────────────────────────────────────────────
8
+ export function KanbanBoard(props) {
9
+ return _jsx(KanbanStaticBoard, { ...props });
10
+ }
11
+ // ─── Static Board (no DnD) ───────────────────────────────────────────────────
12
+ function KanbanStaticBoard({ columns, renderColumnCards, className, }) {
13
+ return (_jsx("div", { className: cn("grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-4", className), children: columns.map((col) => (_jsx(KanbanColumnShell, { column: col, bodyClassName: undefined, children: renderColumnCards(col.id) }, col.id))) }));
14
+ }
15
+ export function KanbanColumnShell({ column, children, className, bodyClassName, }) {
16
+ return (_jsxs("div", { className: cn("flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-border bg-card shadow-xs", column.accentStripeClassName, className), children: [_jsxs("div", { className: cn("flex items-center gap-3 border-b border-border px-4 py-3", column.headerClassName), children: [column.icon && (_jsx("div", { className: cn("flex size-7 items-center justify-center rounded-md", column.iconClassName), children: column.icon })), !column.icon && column.accentColor && (_jsx("div", { className: cn("size-2 shrink-0 rounded-full", column.accentColor) })), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("h3", { className: "text-sm/5 font-semibold text-foreground", children: column.title }), column.subtitle && (_jsx("p", { className: "text-xs text-muted-foreground", children: column.subtitle }))] }), _jsx("span", { className: cn("inline-flex items-center rounded-md px-2 py-0.5 text-xs font-semibold text-muted-foreground", column.countClassName), children: column.count })] }), _jsx("div", { className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto p-3", bodyClassName), children: column.count === 0 ? (_jsx("p", { className: "py-8 text-center text-xs text-muted-foreground", children: column.emptyText ?? "No items" })) : (children) })] }));
17
+ }
18
+ //# sourceMappingURL=kanban-board.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-board.js","sourceRoot":"","sources":["../../src/components/kanban-board.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AA6FlC,gFAAgF;AAChF,iFAAiF;AACjF,iFAAiF;AACjF,4CAA4C;AAE5C,iFAAiF;AAEjF,MAAM,UAAU,WAAW,CAAc,KAA8B;IACrE,OAAO,KAAC,iBAAiB,OAAK,KAAK,GAAI,CAAC;AAC1C,CAAC;AAED,gFAAgF;AAEhF,SAAS,iBAAiB,CAAQ,EAChC,OAAO,EACP,iBAAiB,EACjB,SAAS,GACe;IACxB,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,sDAAsD,EACtD,SAAS,CACV,YAEA,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,KAAC,iBAAiB,IAAc,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,YAClE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,IADJ,GAAG,CAAC,EAAE,CAEV,CACrB,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,iBAAiB,CAAC,EAChC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,aAAa,GACU;IACvB,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,gGAAgG,EAChG,MAAM,CAAC,qBAAqB,EAC5B,SAAS,CACV,aAGD,eACE,SAAS,EAAE,EAAE,CACX,0DAA0D,EAC1D,MAAM,CAAC,eAAe,CACvB,aAGA,MAAM,CAAC,IAAI,IAAI,CACd,cACE,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,MAAM,CAAC,aAAa,CACrB,YAEA,MAAM,CAAC,IAAI,GACR,CACP,EAGA,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,CACrC,cAAK,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE,MAAM,CAAC,WAAW,CAAC,GAAI,CAC3E,EAED,eAAK,SAAS,EAAC,gBAAgB,aAC7B,aAAI,SAAS,EAAC,yCAAyC,YACpD,MAAM,CAAC,KAAK,GACV,EACJ,MAAM,CAAC,QAAQ,IAAI,CAClB,YAAG,SAAS,EAAC,+BAA+B,YAAE,MAAM,CAAC,QAAQ,GAAK,CACnE,IACG,EAEN,eACE,SAAS,EAAE,EAAE,CACX,6FAA6F,EAC7F,MAAM,CAAC,cAAc,CACtB,YAEA,MAAM,CAAC,KAAK,GACR,IACH,EAGN,cAAK,SAAS,EAAE,EAAE,CAAC,wDAAwD,EAAE,aAAa,CAAC,YACxF,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,YAAG,SAAS,EAAC,gDAAgD,YAC1D,MAAM,CAAC,SAAS,IAAI,UAAU,GAC7B,CACL,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,GACG,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import { KanbanBoard } from "./kanban-board";
3
+ declare const meta: Meta<typeof KanbanBoard>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof KanbanBoard>;
6
+ export declare const Default: Story;
7
+ export declare const WithEmptyColumn: Story;
8
+ export declare const ThreeColumns: Story;
9
+ export declare const MinimalAccent: Story;
10
+ //# sourceMappingURL=kanban-board.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-board.stories.d.ts","sourceRoot":"","sources":["../../src/components/kanban-board.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAqB,MAAM,gBAAgB,CAAC;AAGhE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAOlC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AA2F1C,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAa7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAqB3B,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { KanbanBoard } from "./kanban-board";
3
+ import { KanbanCard } from "./kanban-card";
4
+ const meta = {
5
+ title: "Components/KanbanBoard",
6
+ component: KanbanBoard,
7
+ tags: ["autodocs"],
8
+ parameters: {
9
+ layout: "padded",
10
+ },
11
+ };
12
+ export default meta;
13
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
14
+ const sampleColumns = [
15
+ {
16
+ id: "todo",
17
+ title: "To Do",
18
+ subtitle: "Backlog items",
19
+ count: 3,
20
+ accentColor: "bg-sky-500",
21
+ headerClassName: "bg-sky-50 dark:bg-sky-500/5",
22
+ accentStripeClassName: "border-t-2 border-t-sky-300 dark:border-t-sky-500/20",
23
+ countClassName: "bg-sky-100 text-sky-700 ring-1 ring-sky-200 dark:bg-sky-500/10 dark:text-sky-300 dark:ring-sky-500/20",
24
+ },
25
+ {
26
+ id: "in-progress",
27
+ title: "In Progress",
28
+ subtitle: "Currently working",
29
+ count: 2,
30
+ accentColor: "bg-amber-500",
31
+ headerClassName: "bg-amber-50 dark:bg-amber-500/5",
32
+ accentStripeClassName: "border-t-2 border-t-amber-300 dark:border-t-amber-500/20",
33
+ countClassName: "bg-amber-100 text-amber-700 ring-1 ring-amber-200 dark:bg-amber-500/10 dark:text-amber-300 dark:ring-amber-500/20",
34
+ },
35
+ {
36
+ id: "review",
37
+ title: "Review",
38
+ subtitle: "Awaiting approval",
39
+ count: 1,
40
+ accentColor: "bg-indigo-500",
41
+ headerClassName: "bg-indigo-50 dark:bg-indigo-500/5",
42
+ accentStripeClassName: "border-t-2 border-t-indigo-300 dark:border-t-indigo-500/20",
43
+ countClassName: "bg-indigo-100 text-indigo-700 ring-1 ring-indigo-200 dark:bg-indigo-500/10 dark:text-indigo-300 dark:ring-indigo-500/20",
44
+ },
45
+ {
46
+ id: "done",
47
+ title: "Done",
48
+ subtitle: "Completed",
49
+ count: 2,
50
+ accentColor: "bg-green-500",
51
+ headerClassName: "bg-green-50 dark:bg-green-500/5",
52
+ accentStripeClassName: "border-t-2 border-t-green-300 dark:border-t-green-500/20",
53
+ countClassName: "bg-green-100 text-green-700 ring-1 ring-green-200 dark:bg-green-500/10 dark:text-green-300 dark:ring-green-500/20",
54
+ },
55
+ ];
56
+ const cardData = {
57
+ todo: [
58
+ { id: "1", title: "Design new landing page", label: "Design" },
59
+ { id: "2", title: "Update API documentation", label: "Docs" },
60
+ { id: "3", title: "Fix mobile navigation", label: "Bug" },
61
+ ],
62
+ "in-progress": [
63
+ { id: "4", title: "Implement dark mode toggle", label: "Feature" },
64
+ { id: "5", title: "Refactor auth middleware", label: "Refactor" },
65
+ ],
66
+ review: [
67
+ { id: "6", title: "Add email notifications", label: "Feature" },
68
+ ],
69
+ done: [
70
+ { id: "7", title: "Setup CI pipeline", label: "DevOps" },
71
+ { id: "8", title: "Create user profile page", label: "Feature" },
72
+ ],
73
+ };
74
+ function renderCards(columnId) {
75
+ const cards = cardData[columnId] ?? [];
76
+ return cards.map((card) => (_jsxs(KanbanCard, { onClick: () => alert(`Clicked: ${card.title}`), children: [_jsxs("div", { className: "mb-1.5 flex items-center justify-between", children: [_jsx("span", { className: "inline-flex rounded-sm bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground", children: card.label }), _jsxs("span", { className: "text-[10px] text-muted-foreground", children: ["#", card.id] })] }), _jsx("p", { className: "text-sm/5 font-medium text-foreground", children: card.title })] }, card.id)));
77
+ }
78
+ // ─── Stories ──────────────────────────────────────────────────────────────────
79
+ export const Default = {
80
+ args: {
81
+ columns: sampleColumns,
82
+ renderColumnCards: renderCards,
83
+ },
84
+ };
85
+ export const WithEmptyColumn = {
86
+ args: {
87
+ columns: [
88
+ { ...sampleColumns[0], count: 0, emptyText: "Nothing here yet" },
89
+ sampleColumns[1],
90
+ sampleColumns[2],
91
+ sampleColumns[3],
92
+ ],
93
+ renderColumnCards: (columnId) => {
94
+ if (columnId === "todo")
95
+ return null;
96
+ return renderCards(columnId);
97
+ },
98
+ },
99
+ };
100
+ export const ThreeColumns = {
101
+ args: {
102
+ columns: sampleColumns.slice(0, 3),
103
+ renderColumnCards: renderCards,
104
+ className: "xl:grid-cols-3",
105
+ },
106
+ };
107
+ export const MinimalAccent = {
108
+ args: {
109
+ columns: [
110
+ { id: "backlog", title: "Backlog", count: 2, accentColor: "bg-slate-400" },
111
+ { id: "active", title: "Active", count: 1, accentColor: "bg-blue-500" },
112
+ { id: "closed", title: "Closed", count: 1, accentColor: "bg-green-500" },
113
+ ],
114
+ renderColumnCards: (columnId) => {
115
+ const items = {
116
+ backlog: ["Research competitors", "Write tech spec"],
117
+ active: ["Build prototype"],
118
+ closed: ["Define requirements"],
119
+ };
120
+ return (items[columnId] ?? []).map((title, i) => (_jsx(KanbanCard, { children: _jsx("p", { className: "text-sm/5 font-medium text-foreground", children: title }) }, i)));
121
+ },
122
+ className: "xl:grid-cols-3",
123
+ },
124
+ };
125
+ //# sourceMappingURL=kanban-board.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-board.stories.js","sourceRoot":"","sources":["../../src/components/kanban-board.stories.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ReactNode } from "react";
2
+ export interface KanbanCardProps {
3
+ children: ReactNode;
4
+ className?: string;
5
+ onClick?: () => void;
6
+ }
7
+ export declare function KanbanCard({ children, className, onClick }: KanbanCardProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=kanban-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-card.d.ts","sourceRoot":"","sources":["../../src/components/kanban-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,eAAe,2CAwB3E"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "../lib/utils";
3
+ export function KanbanCard({ children, className, onClick }) {
4
+ return (_jsx("div", { className: cn("cursor-pointer rounded-lg border border-border bg-background p-3 shadow-xs transition-colors hover:border-border/80 hover:bg-muted/20", className), onClick: onClick, role: onClick ? "button" : undefined, tabIndex: onClick ? 0 : undefined, onKeyDown: onClick
5
+ ? (e) => {
6
+ if (e.key === "Enter" || e.key === " ") {
7
+ e.preventDefault();
8
+ onClick();
9
+ }
10
+ }
11
+ : undefined, children: children }));
12
+ }
13
+ //# sourceMappingURL=kanban-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-card.js","sourceRoot":"","sources":["../../src/components/kanban-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAmB;IAC1E,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,uIAAuI,EACvI,SAAS,CACV,EACD,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACpC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EACjC,SAAS,EACP,OAAO;YACL,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;gBACJ,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oBACvC,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YACH,CAAC,CAAC,SAAS,YAGd,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * DnD-enabled KanbanBoard variant. Loaded lazily via React.lazy()
3
+ * to avoid bundling @dnd-kit when DnD is not needed.
4
+ */
5
+ import { type KanbanBoardProps } from "./kanban-board";
6
+ declare function KanbanDndBoard<TItem = any>({ columns, renderColumnCards, className, items, getItemId, getItemColumn, onDragEnd, onDragStartRaw, onDragEndRaw, isValidTransition, renderDragOverlay, renderColumn, columnClassName, columnBodyClassName, }: KanbanBoardProps<TItem>): import("react/jsx-runtime").JSX.Element;
7
+ export default KanbanDndBoard;
8
+ //# sourceMappingURL=kanban-dnd-board.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-dnd-board.d.ts","sourceRoot":"","sources":["../../src/components/kanban-dnd-board.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,EAAqB,KAAK,gBAAgB,EAAuB,MAAM,gBAAgB,CAAC;AAI/F,iBAAS,cAAc,CAAC,KAAK,GAAG,GAAG,EAAE,EACnC,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,SAAS,EACT,aAAa,EACb,SAAS,EACT,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,mBAAmB,GACpB,EAAE,gBAAgB,CAAC,KAAK,CAAC,2CA6GzB;AAsFD,eAAe,cAAc,CAAC"}