@dowel-ui/react 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 (691) hide show
  1. package/LICENSE +21 -0
  2. package/dist/blocks/admin-users/meta.js +27 -0
  3. package/dist/blocks/admin-users/meta.js.map +1 -0
  4. package/dist/blocks/ai-chat/meta.js +30 -0
  5. package/dist/blocks/ai-chat/meta.js.map +1 -0
  6. package/dist/blocks/dashboard/meta.js +23 -0
  7. package/dist/blocks/dashboard/meta.js.map +1 -0
  8. package/dist/blocks/forgot-password/meta.js +24 -0
  9. package/dist/blocks/forgot-password/meta.js.map +1 -0
  10. package/dist/blocks/login/meta.js +26 -0
  11. package/dist/blocks/login/meta.js.map +1 -0
  12. package/dist/blocks/pricing/meta.js +24 -0
  13. package/dist/blocks/pricing/meta.js.map +1 -0
  14. package/dist/blocks/settings/meta.js +29 -0
  15. package/dist/blocks/settings/meta.js.map +1 -0
  16. package/dist/blocks/signup/meta.js +25 -0
  17. package/dist/blocks/signup/meta.js.map +1 -0
  18. package/dist/components/accordion/accordion.d.ts +19 -0
  19. package/dist/components/accordion/accordion.d.ts.map +1 -0
  20. package/dist/components/accordion/accordion.js +58 -0
  21. package/dist/components/accordion/accordion.js.map +1 -0
  22. package/dist/components/accordion/index.d.ts +2 -0
  23. package/dist/components/accordion/index.js +2 -0
  24. package/dist/components/accordion/meta.js +17 -0
  25. package/dist/components/accordion/meta.js.map +1 -0
  26. package/dist/components/activity-feed/activity-feed.d.ts +39 -0
  27. package/dist/components/activity-feed/activity-feed.d.ts.map +1 -0
  28. package/dist/components/activity-feed/activity-feed.js +77 -0
  29. package/dist/components/activity-feed/activity-feed.js.map +1 -0
  30. package/dist/components/activity-feed/index.d.ts +2 -0
  31. package/dist/components/activity-feed/index.js +2 -0
  32. package/dist/components/activity-feed/meta.js +17 -0
  33. package/dist/components/activity-feed/meta.js.map +1 -0
  34. package/dist/components/ai-agent-status/ai-agent-status.d.ts +30 -0
  35. package/dist/components/ai-agent-status/ai-agent-status.d.ts.map +1 -0
  36. package/dist/components/ai-agent-status/ai-agent-status.js +43 -0
  37. package/dist/components/ai-agent-status/ai-agent-status.js.map +1 -0
  38. package/dist/components/ai-agent-status/index.d.ts +2 -0
  39. package/dist/components/ai-agent-status/index.js +2 -0
  40. package/dist/components/ai-agent-status/meta.js +17 -0
  41. package/dist/components/ai-agent-status/meta.js.map +1 -0
  42. package/dist/components/ai-conversation/ai-conversation.d.ts +45 -0
  43. package/dist/components/ai-conversation/ai-conversation.d.ts.map +1 -0
  44. package/dist/components/ai-conversation/ai-conversation.js +138 -0
  45. package/dist/components/ai-conversation/ai-conversation.js.map +1 -0
  46. package/dist/components/ai-conversation/index.d.ts +2 -0
  47. package/dist/components/ai-conversation/index.js +2 -0
  48. package/dist/components/ai-conversation/meta.js +17 -0
  49. package/dist/components/ai-conversation/meta.js.map +1 -0
  50. package/dist/components/ai-message/ai-message.d.ts +56 -0
  51. package/dist/components/ai-message/ai-message.d.ts.map +1 -0
  52. package/dist/components/ai-message/ai-message.js +90 -0
  53. package/dist/components/ai-message/ai-message.js.map +1 -0
  54. package/dist/components/ai-message/index.d.ts +2 -0
  55. package/dist/components/ai-message/index.js +2 -0
  56. package/dist/components/ai-message/meta.js +17 -0
  57. package/dist/components/ai-message/meta.js.map +1 -0
  58. package/dist/components/ai-model-selector/ai-model-selector.d.ts +42 -0
  59. package/dist/components/ai-model-selector/ai-model-selector.d.ts.map +1 -0
  60. package/dist/components/ai-model-selector/ai-model-selector.js +48 -0
  61. package/dist/components/ai-model-selector/ai-model-selector.js.map +1 -0
  62. package/dist/components/ai-model-selector/index.d.ts +2 -0
  63. package/dist/components/ai-model-selector/index.js +2 -0
  64. package/dist/components/ai-model-selector/meta.js +17 -0
  65. package/dist/components/ai-model-selector/meta.js.map +1 -0
  66. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts +61 -0
  67. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -0
  68. package/dist/components/ai-prompt-input/ai-prompt-input.js +170 -0
  69. package/dist/components/ai-prompt-input/ai-prompt-input.js.map +1 -0
  70. package/dist/components/ai-prompt-input/index.d.ts +2 -0
  71. package/dist/components/ai-prompt-input/index.js +2 -0
  72. package/dist/components/ai-prompt-input/meta.js +17 -0
  73. package/dist/components/ai-prompt-input/meta.js.map +1 -0
  74. package/dist/components/ai-reasoning/ai-reasoning.d.ts +24 -0
  75. package/dist/components/ai-reasoning/ai-reasoning.d.ts.map +1 -0
  76. package/dist/components/ai-reasoning/ai-reasoning.js +64 -0
  77. package/dist/components/ai-reasoning/ai-reasoning.js.map +1 -0
  78. package/dist/components/ai-reasoning/index.d.ts +2 -0
  79. package/dist/components/ai-reasoning/index.js +2 -0
  80. package/dist/components/ai-reasoning/meta.js +17 -0
  81. package/dist/components/ai-reasoning/meta.js.map +1 -0
  82. package/dist/components/ai-response/ai-response.d.ts +36 -0
  83. package/dist/components/ai-response/ai-response.d.ts.map +1 -0
  84. package/dist/components/ai-response/ai-response.js +46 -0
  85. package/dist/components/ai-response/ai-response.js.map +1 -0
  86. package/dist/components/ai-response/index.d.ts +2 -0
  87. package/dist/components/ai-response/index.js +2 -0
  88. package/dist/components/ai-response/meta.js +17 -0
  89. package/dist/components/ai-response/meta.js.map +1 -0
  90. package/dist/components/ai-sources/ai-sources.d.ts +44 -0
  91. package/dist/components/ai-sources/ai-sources.d.ts.map +1 -0
  92. package/dist/components/ai-sources/ai-sources.js +112 -0
  93. package/dist/components/ai-sources/ai-sources.js.map +1 -0
  94. package/dist/components/ai-sources/index.d.ts +2 -0
  95. package/dist/components/ai-sources/index.js +2 -0
  96. package/dist/components/ai-sources/meta.js +17 -0
  97. package/dist/components/ai-sources/meta.js.map +1 -0
  98. package/dist/components/ai-token-usage/ai-token-usage.d.ts +34 -0
  99. package/dist/components/ai-token-usage/ai-token-usage.d.ts.map +1 -0
  100. package/dist/components/ai-token-usage/ai-token-usage.js +58 -0
  101. package/dist/components/ai-token-usage/ai-token-usage.js.map +1 -0
  102. package/dist/components/ai-token-usage/index.d.ts +2 -0
  103. package/dist/components/ai-token-usage/index.js +2 -0
  104. package/dist/components/ai-token-usage/meta.js +17 -0
  105. package/dist/components/ai-token-usage/meta.js.map +1 -0
  106. package/dist/components/ai-tool/ai-tool.d.ts +50 -0
  107. package/dist/components/ai-tool/ai-tool.d.ts.map +1 -0
  108. package/dist/components/ai-tool/ai-tool.js +129 -0
  109. package/dist/components/ai-tool/ai-tool.js.map +1 -0
  110. package/dist/components/ai-tool/index.d.ts +2 -0
  111. package/dist/components/ai-tool/index.js +2 -0
  112. package/dist/components/ai-tool/meta.js +17 -0
  113. package/dist/components/ai-tool/meta.js.map +1 -0
  114. package/dist/components/alert/alert.d.ts +32 -0
  115. package/dist/components/alert/alert.d.ts.map +1 -0
  116. package/dist/components/alert/alert.js +49 -0
  117. package/dist/components/alert/alert.js.map +1 -0
  118. package/dist/components/alert/index.d.ts +2 -0
  119. package/dist/components/alert/index.js +2 -0
  120. package/dist/components/alert/meta.js +17 -0
  121. package/dist/components/alert/meta.js.map +1 -0
  122. package/dist/components/avatar/avatar.d.ts +23 -0
  123. package/dist/components/avatar/avatar.d.ts.map +1 -0
  124. package/dist/components/avatar/avatar.js +44 -0
  125. package/dist/components/avatar/avatar.js.map +1 -0
  126. package/dist/components/avatar/index.d.ts +2 -0
  127. package/dist/components/avatar/index.js +2 -0
  128. package/dist/components/avatar/meta.js +17 -0
  129. package/dist/components/avatar/meta.js.map +1 -0
  130. package/dist/components/badge/badge.d.ts +20 -0
  131. package/dist/components/badge/badge.d.ts.map +1 -0
  132. package/dist/components/badge/badge.js +47 -0
  133. package/dist/components/badge/badge.js.map +1 -0
  134. package/dist/components/badge/index.d.ts +2 -0
  135. package/dist/components/badge/index.js +2 -0
  136. package/dist/components/badge/meta.js +17 -0
  137. package/dist/components/badge/meta.js.map +1 -0
  138. package/dist/components/button/button.d.ts +28 -0
  139. package/dist/components/button/button.d.ts.map +1 -0
  140. package/dist/components/button/button.js +77 -0
  141. package/dist/components/button/button.js.map +1 -0
  142. package/dist/components/button/index.d.ts +2 -0
  143. package/dist/components/button/index.js +2 -0
  144. package/dist/components/button/meta.js +17 -0
  145. package/dist/components/button/meta.js.map +1 -0
  146. package/dist/components/calendar/calendar.d.ts +16 -0
  147. package/dist/components/calendar/calendar.d.ts.map +1 -0
  148. package/dist/components/calendar/calendar.js +70 -0
  149. package/dist/components/calendar/calendar.js.map +1 -0
  150. package/dist/components/calendar/index.d.ts +2 -0
  151. package/dist/components/calendar/index.js +2 -0
  152. package/dist/components/calendar/meta.js +17 -0
  153. package/dist/components/calendar/meta.js.map +1 -0
  154. package/dist/components/card/card.d.ts +23 -0
  155. package/dist/components/card/card.d.ts.map +1 -0
  156. package/dist/components/card/card.js +53 -0
  157. package/dist/components/card/card.js.map +1 -0
  158. package/dist/components/card/index.d.ts +2 -0
  159. package/dist/components/card/index.js +2 -0
  160. package/dist/components/card/meta.js +17 -0
  161. package/dist/components/card/meta.js.map +1 -0
  162. package/dist/components/checkbox/checkbox.d.ts +15 -0
  163. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  164. package/dist/components/checkbox/checkbox.js +45 -0
  165. package/dist/components/checkbox/checkbox.js.map +1 -0
  166. package/dist/components/checkbox/index.d.ts +2 -0
  167. package/dist/components/checkbox/index.js +2 -0
  168. package/dist/components/checkbox/meta.js +17 -0
  169. package/dist/components/checkbox/meta.js.map +1 -0
  170. package/dist/components/code-block/code-block.d.ts +46 -0
  171. package/dist/components/code-block/code-block.d.ts.map +1 -0
  172. package/dist/components/code-block/code-block.js +110 -0
  173. package/dist/components/code-block/code-block.js.map +1 -0
  174. package/dist/components/code-block/index.d.ts +2 -0
  175. package/dist/components/code-block/index.js +2 -0
  176. package/dist/components/code-block/meta.js +17 -0
  177. package/dist/components/code-block/meta.js.map +1 -0
  178. package/dist/components/combobox/combobox.d.ts +59 -0
  179. package/dist/components/combobox/combobox.d.ts.map +1 -0
  180. package/dist/components/combobox/combobox.js +346 -0
  181. package/dist/components/combobox/combobox.js.map +1 -0
  182. package/dist/components/combobox/index.d.ts +2 -0
  183. package/dist/components/combobox/index.js +2 -0
  184. package/dist/components/combobox/meta.js +17 -0
  185. package/dist/components/combobox/meta.js.map +1 -0
  186. package/dist/components/command/command.d.ts +65 -0
  187. package/dist/components/command/command.d.ts.map +1 -0
  188. package/dist/components/command/command.js +330 -0
  189. package/dist/components/command/command.js.map +1 -0
  190. package/dist/components/command/index.d.ts +2 -0
  191. package/dist/components/command/index.js +2 -0
  192. package/dist/components/command/meta.js +17 -0
  193. package/dist/components/command/meta.js.map +1 -0
  194. package/dist/components/data-table/data-table.d.ts +91 -0
  195. package/dist/components/data-table/data-table.d.ts.map +1 -0
  196. package/dist/components/data-table/data-table.js +263 -0
  197. package/dist/components/data-table/data-table.js.map +1 -0
  198. package/dist/components/data-table/index.d.ts +2 -0
  199. package/dist/components/data-table/index.js +2 -0
  200. package/dist/components/data-table/meta.js +22 -0
  201. package/dist/components/data-table/meta.js.map +1 -0
  202. package/dist/components/date-picker/date-picker.d.ts +31 -0
  203. package/dist/components/date-picker/date-picker.d.ts.map +1 -0
  204. package/dist/components/date-picker/date-picker.js +123 -0
  205. package/dist/components/date-picker/date-picker.js.map +1 -0
  206. package/dist/components/date-picker/index.d.ts +2 -0
  207. package/dist/components/date-picker/index.js +2 -0
  208. package/dist/components/date-picker/meta.js +21 -0
  209. package/dist/components/date-picker/meta.js.map +1 -0
  210. package/dist/components/dialog/dialog.d.ts +30 -0
  211. package/dist/components/dialog/dialog.d.ts.map +1 -0
  212. package/dist/components/dialog/dialog.js +79 -0
  213. package/dist/components/dialog/dialog.js.map +1 -0
  214. package/dist/components/dialog/index.d.ts +2 -0
  215. package/dist/components/dialog/index.js +2 -0
  216. package/dist/components/dialog/meta.js +17 -0
  217. package/dist/components/dialog/meta.js.map +1 -0
  218. package/dist/components/drawer/drawer.d.ts +32 -0
  219. package/dist/components/drawer/drawer.d.ts.map +1 -0
  220. package/dist/components/drawer/drawer.js +153 -0
  221. package/dist/components/drawer/drawer.js.map +1 -0
  222. package/dist/components/drawer/index.d.ts +2 -0
  223. package/dist/components/drawer/index.js +2 -0
  224. package/dist/components/drawer/meta.js +17 -0
  225. package/dist/components/drawer/meta.js.map +1 -0
  226. package/dist/components/dropdown-menu/dropdown-menu.d.ts +43 -0
  227. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -0
  228. package/dist/components/dropdown-menu/dropdown-menu.js +130 -0
  229. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -0
  230. package/dist/components/dropdown-menu/index.d.ts +2 -0
  231. package/dist/components/dropdown-menu/index.js +2 -0
  232. package/dist/components/dropdown-menu/meta.js +17 -0
  233. package/dist/components/dropdown-menu/meta.js.map +1 -0
  234. package/dist/components/empty-state/empty-state.d.ts +24 -0
  235. package/dist/components/empty-state/empty-state.d.ts.map +1 -0
  236. package/dist/components/empty-state/empty-state.js +73 -0
  237. package/dist/components/empty-state/empty-state.js.map +1 -0
  238. package/dist/components/empty-state/index.d.ts +2 -0
  239. package/dist/components/empty-state/index.js +2 -0
  240. package/dist/components/empty-state/meta.js +17 -0
  241. package/dist/components/empty-state/meta.js.map +1 -0
  242. package/dist/components/form/form.d.ts +43 -0
  243. package/dist/components/form/form.d.ts.map +1 -0
  244. package/dist/components/form/form.js +127 -0
  245. package/dist/components/form/form.js.map +1 -0
  246. package/dist/components/form/index.d.ts +2 -0
  247. package/dist/components/form/index.js +2 -0
  248. package/dist/components/form/meta.js +17 -0
  249. package/dist/components/form/meta.js.map +1 -0
  250. package/dist/components/input/index.d.ts +2 -0
  251. package/dist/components/input/index.js +2 -0
  252. package/dist/components/input/input.d.ts +21 -0
  253. package/dist/components/input/input.d.ts.map +1 -0
  254. package/dist/components/input/input.js +34 -0
  255. package/dist/components/input/input.js.map +1 -0
  256. package/dist/components/input/meta.js +17 -0
  257. package/dist/components/input/meta.js.map +1 -0
  258. package/dist/components/label/index.d.ts +2 -0
  259. package/dist/components/label/index.js +2 -0
  260. package/dist/components/label/label.d.ts +14 -0
  261. package/dist/components/label/label.d.ts.map +1 -0
  262. package/dist/components/label/label.js +20 -0
  263. package/dist/components/label/label.js.map +1 -0
  264. package/dist/components/label/meta.js +17 -0
  265. package/dist/components/label/meta.js.map +1 -0
  266. package/dist/components/pagination/index.d.ts +2 -0
  267. package/dist/components/pagination/index.js +2 -0
  268. package/dist/components/pagination/meta.js +17 -0
  269. package/dist/components/pagination/meta.js.map +1 -0
  270. package/dist/components/pagination/pagination.d.ts +33 -0
  271. package/dist/components/pagination/pagination.d.ts.map +1 -0
  272. package/dist/components/pagination/pagination.js +143 -0
  273. package/dist/components/pagination/pagination.js.map +1 -0
  274. package/dist/components/popover/index.d.ts +2 -0
  275. package/dist/components/popover/index.js +2 -0
  276. package/dist/components/popover/meta.js +17 -0
  277. package/dist/components/popover/meta.js.map +1 -0
  278. package/dist/components/popover/popover.d.ts +24 -0
  279. package/dist/components/popover/popover.d.ts.map +1 -0
  280. package/dist/components/popover/popover.js +60 -0
  281. package/dist/components/popover/popover.js.map +1 -0
  282. package/dist/components/progress/index.d.ts +2 -0
  283. package/dist/components/progress/index.js +2 -0
  284. package/dist/components/progress/meta.js +17 -0
  285. package/dist/components/progress/meta.js.map +1 -0
  286. package/dist/components/progress/progress.d.ts +21 -0
  287. package/dist/components/progress/progress.d.ts.map +1 -0
  288. package/dist/components/progress/progress.js +55 -0
  289. package/dist/components/progress/progress.js.map +1 -0
  290. package/dist/components/radio-group/index.d.ts +2 -0
  291. package/dist/components/radio-group/index.js +2 -0
  292. package/dist/components/radio-group/meta.js +17 -0
  293. package/dist/components/radio-group/meta.js.map +1 -0
  294. package/dist/components/radio-group/radio-group.d.ts +17 -0
  295. package/dist/components/radio-group/radio-group.d.ts.map +1 -0
  296. package/dist/components/radio-group/radio-group.js +29 -0
  297. package/dist/components/radio-group/radio-group.js.map +1 -0
  298. package/dist/components/select/index.d.ts +2 -0
  299. package/dist/components/select/index.js +2 -0
  300. package/dist/components/select/meta.js +17 -0
  301. package/dist/components/select/meta.js.map +1 -0
  302. package/dist/components/select/select.d.ts +37 -0
  303. package/dist/components/select/select.d.ts.map +1 -0
  304. package/dist/components/select/select.js +128 -0
  305. package/dist/components/select/select.js.map +1 -0
  306. package/dist/components/separator/index.d.ts +2 -0
  307. package/dist/components/separator/index.js +2 -0
  308. package/dist/components/separator/meta.js +17 -0
  309. package/dist/components/separator/meta.js.map +1 -0
  310. package/dist/components/separator/separator.d.ts +15 -0
  311. package/dist/components/separator/separator.d.ts.map +1 -0
  312. package/dist/components/separator/separator.js +23 -0
  313. package/dist/components/separator/separator.js.map +1 -0
  314. package/dist/components/sheet/index.d.ts +2 -0
  315. package/dist/components/sheet/index.js +2 -0
  316. package/dist/components/sheet/meta.js +17 -0
  317. package/dist/components/sheet/meta.js.map +1 -0
  318. package/dist/components/sheet/sheet.d.ts +31 -0
  319. package/dist/components/sheet/sheet.d.ts.map +1 -0
  320. package/dist/components/sheet/sheet.js +90 -0
  321. package/dist/components/sheet/sheet.js.map +1 -0
  322. package/dist/components/skeleton/index.d.ts +2 -0
  323. package/dist/components/skeleton/index.js +2 -0
  324. package/dist/components/skeleton/meta.js +17 -0
  325. package/dist/components/skeleton/meta.js.map +1 -0
  326. package/dist/components/skeleton/skeleton.d.ts +20 -0
  327. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  328. package/dist/components/skeleton/skeleton.js +29 -0
  329. package/dist/components/skeleton/skeleton.js.map +1 -0
  330. package/dist/components/slider/index.d.ts +2 -0
  331. package/dist/components/slider/index.js +2 -0
  332. package/dist/components/slider/meta.js +17 -0
  333. package/dist/components/slider/meta.js.map +1 -0
  334. package/dist/components/slider/slider.d.ts +29 -0
  335. package/dist/components/slider/slider.d.ts.map +1 -0
  336. package/dist/components/slider/slider.js +61 -0
  337. package/dist/components/slider/slider.js.map +1 -0
  338. package/dist/components/spinner/index.d.ts +2 -0
  339. package/dist/components/spinner/index.js +2 -0
  340. package/dist/components/spinner/meta.js +17 -0
  341. package/dist/components/spinner/meta.js.map +1 -0
  342. package/dist/components/spinner/spinner.d.ts +21 -0
  343. package/dist/components/spinner/spinner.d.ts.map +1 -0
  344. package/dist/components/spinner/spinner.js +45 -0
  345. package/dist/components/spinner/spinner.js.map +1 -0
  346. package/dist/components/switch/index.d.ts +2 -0
  347. package/dist/components/switch/index.js +2 -0
  348. package/dist/components/switch/meta.js +17 -0
  349. package/dist/components/switch/meta.js.map +1 -0
  350. package/dist/components/switch/switch.d.ts +15 -0
  351. package/dist/components/switch/switch.d.ts.map +1 -0
  352. package/dist/components/switch/switch.js +21 -0
  353. package/dist/components/switch/switch.js.map +1 -0
  354. package/dist/components/table/index.d.ts +2 -0
  355. package/dist/components/table/index.js +2 -0
  356. package/dist/components/table/meta.js +17 -0
  357. package/dist/components/table/meta.js.map +1 -0
  358. package/dist/components/table/table.d.ts +41 -0
  359. package/dist/components/table/table.d.ts.map +1 -0
  360. package/dist/components/table/table.js +78 -0
  361. package/dist/components/table/table.js.map +1 -0
  362. package/dist/components/tabs/index.d.ts +2 -0
  363. package/dist/components/tabs/index.js +2 -0
  364. package/dist/components/tabs/meta.js +17 -0
  365. package/dist/components/tabs/meta.js.map +1 -0
  366. package/dist/components/tabs/tabs.d.ts +28 -0
  367. package/dist/components/tabs/tabs.d.ts.map +1 -0
  368. package/dist/components/tabs/tabs.js +58 -0
  369. package/dist/components/tabs/tabs.js.map +1 -0
  370. package/dist/components/toast/index.d.ts +3 -0
  371. package/dist/components/toast/index.js +3 -0
  372. package/dist/components/toast/meta.js +17 -0
  373. package/dist/components/toast/meta.js.map +1 -0
  374. package/dist/components/toast/toast-store.d.ts +84 -0
  375. package/dist/components/toast/toast-store.d.ts.map +1 -0
  376. package/dist/components/toast/toast-store.js +115 -0
  377. package/dist/components/toast/toast-store.js.map +1 -0
  378. package/dist/components/toast/toast.d.ts +39 -0
  379. package/dist/components/toast/toast.d.ts.map +1 -0
  380. package/dist/components/toast/toast.js +140 -0
  381. package/dist/components/toast/toast.js.map +1 -0
  382. package/dist/components/tooltip/index.d.ts +2 -0
  383. package/dist/components/tooltip/index.js +2 -0
  384. package/dist/components/tooltip/meta.js +17 -0
  385. package/dist/components/tooltip/meta.js.map +1 -0
  386. package/dist/components/tooltip/tooltip.d.ts +24 -0
  387. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  388. package/dist/components/tooltip/tooltip.js +38 -0
  389. package/dist/components/tooltip/tooltip.js.map +1 -0
  390. package/dist/index.d.ts +97 -0
  391. package/dist/index.js +51 -0
  392. package/dist/lib/styles.d.ts +21 -0
  393. package/dist/lib/styles.d.ts.map +1 -0
  394. package/dist/lib/styles.js +22 -0
  395. package/dist/lib/styles.js.map +1 -0
  396. package/dist/lib/utils.d.ts +11 -0
  397. package/dist/lib/utils.d.ts.map +1 -0
  398. package/dist/lib/utils.js +21 -0
  399. package/dist/lib/utils.js.map +1 -0
  400. package/dist/registry/blocks.d.ts +15 -0
  401. package/dist/registry/blocks.d.ts.map +1 -0
  402. package/dist/registry/blocks.js +32 -0
  403. package/dist/registry/blocks.js.map +1 -0
  404. package/dist/registry/components.d.ts +18 -0
  405. package/dist/registry/components.d.ts.map +1 -0
  406. package/dist/registry/components.js +112 -0
  407. package/dist/registry/components.js.map +1 -0
  408. package/dist/registry/schema.d.ts +44 -0
  409. package/dist/registry/schema.d.ts.map +1 -0
  410. package/dist/registry/schema.js +33 -0
  411. package/dist/registry/schema.js.map +1 -0
  412. package/package.json +74 -0
  413. package/src/blocks/admin-users/admin-users.stories.tsx +83 -0
  414. package/src/blocks/admin-users/admin-users.test.tsx +159 -0
  415. package/src/blocks/admin-users/admin-users.tsx +251 -0
  416. package/src/blocks/admin-users/index.ts +1 -0
  417. package/src/blocks/admin-users/meta.ts +27 -0
  418. package/src/blocks/ai-chat/ai-chat.stories.tsx +149 -0
  419. package/src/blocks/ai-chat/ai-chat.test.tsx +166 -0
  420. package/src/blocks/ai-chat/ai-chat.tsx +280 -0
  421. package/src/blocks/ai-chat/index.ts +7 -0
  422. package/src/blocks/ai-chat/meta.ts +32 -0
  423. package/src/blocks/dashboard/dashboard.stories.tsx +106 -0
  424. package/src/blocks/dashboard/dashboard.test.tsx +94 -0
  425. package/src/blocks/dashboard/dashboard.tsx +192 -0
  426. package/src/blocks/dashboard/index.ts +6 -0
  427. package/src/blocks/dashboard/meta.ts +18 -0
  428. package/src/blocks/forgot-password/forgot-password.stories.tsx +41 -0
  429. package/src/blocks/forgot-password/forgot-password.test.tsx +62 -0
  430. package/src/blocks/forgot-password/forgot-password.tsx +158 -0
  431. package/src/blocks/forgot-password/index.ts +1 -0
  432. package/src/blocks/forgot-password/meta.ts +18 -0
  433. package/src/blocks/login/index.ts +1 -0
  434. package/src/blocks/login/login.stories.tsx +46 -0
  435. package/src/blocks/login/login.test.tsx +100 -0
  436. package/src/blocks/login/login.tsx +178 -0
  437. package/src/blocks/login/meta.ts +18 -0
  438. package/src/blocks/pricing/index.ts +1 -0
  439. package/src/blocks/pricing/meta.ts +18 -0
  440. package/src/blocks/pricing/pricing.stories.tsx +62 -0
  441. package/src/blocks/pricing/pricing.test.tsx +101 -0
  442. package/src/blocks/pricing/pricing.tsx +176 -0
  443. package/src/blocks/settings/index.ts +6 -0
  444. package/src/blocks/settings/meta.ts +29 -0
  445. package/src/blocks/settings/settings.stories.tsx +94 -0
  446. package/src/blocks/settings/settings.test.tsx +167 -0
  447. package/src/blocks/settings/settings.tsx +317 -0
  448. package/src/blocks/signup/index.ts +1 -0
  449. package/src/blocks/signup/meta.ts +18 -0
  450. package/src/blocks/signup/signup.stories.tsx +27 -0
  451. package/src/blocks/signup/signup.test.tsx +97 -0
  452. package/src/blocks/signup/signup.tsx +240 -0
  453. package/src/components/accordion/accordion.stories.tsx +90 -0
  454. package/src/components/accordion/accordion.test.tsx +156 -0
  455. package/src/components/accordion/accordion.tsx +88 -0
  456. package/src/components/accordion/index.ts +9 -0
  457. package/src/components/accordion/meta.ts +16 -0
  458. package/src/components/activity-feed/activity-feed.stories.tsx +163 -0
  459. package/src/components/activity-feed/activity-feed.test.tsx +125 -0
  460. package/src/components/activity-feed/activity-feed.tsx +115 -0
  461. package/src/components/activity-feed/index.ts +12 -0
  462. package/src/components/activity-feed/meta.ts +17 -0
  463. package/src/components/ai-agent-status/ai-agent-status.stories.tsx +86 -0
  464. package/src/components/ai-agent-status/ai-agent-status.test.tsx +66 -0
  465. package/src/components/ai-agent-status/ai-agent-status.tsx +88 -0
  466. package/src/components/ai-agent-status/index.ts +6 -0
  467. package/src/components/ai-agent-status/meta.ts +17 -0
  468. package/src/components/ai-conversation/ai-conversation.stories.tsx +126 -0
  469. package/src/components/ai-conversation/ai-conversation.test.tsx +144 -0
  470. package/src/components/ai-conversation/ai-conversation.tsx +229 -0
  471. package/src/components/ai-conversation/index.ts +9 -0
  472. package/src/components/ai-conversation/meta.ts +20 -0
  473. package/src/components/ai-message/ai-message.stories.tsx +106 -0
  474. package/src/components/ai-message/ai-message.test.tsx +160 -0
  475. package/src/components/ai-message/ai-message.tsx +162 -0
  476. package/src/components/ai-message/index.ts +13 -0
  477. package/src/components/ai-message/meta.ts +17 -0
  478. package/src/components/ai-model-selector/ai-model-selector.stories.tsx +66 -0
  479. package/src/components/ai-model-selector/ai-model-selector.test.tsx +120 -0
  480. package/src/components/ai-model-selector/ai-model-selector.tsx +112 -0
  481. package/src/components/ai-model-selector/index.ts +1 -0
  482. package/src/components/ai-model-selector/meta.ts +17 -0
  483. package/src/components/ai-prompt-input/ai-prompt-input.stories.tsx +145 -0
  484. package/src/components/ai-prompt-input/ai-prompt-input.test.tsx +273 -0
  485. package/src/components/ai-prompt-input/ai-prompt-input.tsx +306 -0
  486. package/src/components/ai-prompt-input/index.ts +11 -0
  487. package/src/components/ai-prompt-input/meta.ts +18 -0
  488. package/src/components/ai-reasoning/ai-reasoning.stories.tsx +60 -0
  489. package/src/components/ai-reasoning/ai-reasoning.test.tsx +95 -0
  490. package/src/components/ai-reasoning/ai-reasoning.tsx +106 -0
  491. package/src/components/ai-reasoning/index.ts +7 -0
  492. package/src/components/ai-reasoning/meta.ts +17 -0
  493. package/src/components/ai-response/ai-response.stories.tsx +75 -0
  494. package/src/components/ai-response/ai-response.test.tsx +96 -0
  495. package/src/components/ai-response/ai-response.tsx +95 -0
  496. package/src/components/ai-response/index.ts +7 -0
  497. package/src/components/ai-response/meta.ts +17 -0
  498. package/src/components/ai-sources/ai-sources.stories.tsx +93 -0
  499. package/src/components/ai-sources/ai-sources.test.tsx +102 -0
  500. package/src/components/ai-sources/ai-sources.tsx +186 -0
  501. package/src/components/ai-sources/index.ts +11 -0
  502. package/src/components/ai-sources/meta.ts +17 -0
  503. package/src/components/ai-token-usage/ai-token-usage.stories.tsx +59 -0
  504. package/src/components/ai-token-usage/ai-token-usage.test.tsx +83 -0
  505. package/src/components/ai-token-usage/ai-token-usage.tsx +105 -0
  506. package/src/components/ai-token-usage/index.ts +6 -0
  507. package/src/components/ai-token-usage/meta.ts +16 -0
  508. package/src/components/ai-tool/ai-tool.stories.tsx +96 -0
  509. package/src/components/ai-tool/ai-tool.test.tsx +137 -0
  510. package/src/components/ai-tool/ai-tool.tsx +235 -0
  511. package/src/components/ai-tool/index.ts +13 -0
  512. package/src/components/ai-tool/meta.ts +17 -0
  513. package/src/components/alert/alert.stories.tsx +101 -0
  514. package/src/components/alert/alert.test.tsx +94 -0
  515. package/src/components/alert/alert.tsx +89 -0
  516. package/src/components/alert/index.ts +8 -0
  517. package/src/components/alert/meta.ts +16 -0
  518. package/src/components/avatar/avatar.stories.tsx +58 -0
  519. package/src/components/avatar/avatar.test.tsx +64 -0
  520. package/src/components/avatar/avatar.tsx +68 -0
  521. package/src/components/avatar/index.ts +9 -0
  522. package/src/components/avatar/meta.ts +15 -0
  523. package/src/components/badge/badge.stories.tsx +68 -0
  524. package/src/components/badge/badge.test.tsx +61 -0
  525. package/src/components/badge/badge.tsx +54 -0
  526. package/src/components/badge/index.ts +1 -0
  527. package/src/components/badge/meta.ts +15 -0
  528. package/src/components/button/button.stories.tsx +128 -0
  529. package/src/components/button/button.test.tsx +224 -0
  530. package/src/components/button/button.tsx +114 -0
  531. package/src/components/button/index.ts +1 -0
  532. package/src/components/button/meta.ts +16 -0
  533. package/src/components/calendar/calendar.stories.tsx +105 -0
  534. package/src/components/calendar/calendar.test.tsx +255 -0
  535. package/src/components/calendar/calendar.tsx +115 -0
  536. package/src/components/calendar/index.ts +1 -0
  537. package/src/components/calendar/meta.ts +17 -0
  538. package/src/components/card/card.stories.tsx +61 -0
  539. package/src/components/card/card.test.tsx +66 -0
  540. package/src/components/card/card.tsx +81 -0
  541. package/src/components/card/index.ts +9 -0
  542. package/src/components/card/meta.ts +16 -0
  543. package/src/components/checkbox/checkbox.stories.tsx +124 -0
  544. package/src/components/checkbox/checkbox.test.tsx +121 -0
  545. package/src/components/checkbox/checkbox.tsx +66 -0
  546. package/src/components/checkbox/index.ts +1 -0
  547. package/src/components/checkbox/meta.ts +16 -0
  548. package/src/components/code-block/code-block.stories.tsx +62 -0
  549. package/src/components/code-block/code-block.test.tsx +139 -0
  550. package/src/components/code-block/code-block.tsx +188 -0
  551. package/src/components/code-block/index.ts +1 -0
  552. package/src/components/code-block/meta.ts +17 -0
  553. package/src/components/combobox/combobox.stories.tsx +171 -0
  554. package/src/components/combobox/combobox.test.tsx +429 -0
  555. package/src/components/combobox/combobox.tsx +544 -0
  556. package/src/components/combobox/index.ts +15 -0
  557. package/src/components/combobox/meta.ts +17 -0
  558. package/src/components/command/command.stories.tsx +152 -0
  559. package/src/components/command/command.test.tsx +380 -0
  560. package/src/components/command/command.tsx +482 -0
  561. package/src/components/command/index.ts +17 -0
  562. package/src/components/command/meta.ts +18 -0
  563. package/src/components/data-table/data-table.stories.tsx +151 -0
  564. package/src/components/data-table/data-table.test.tsx +288 -0
  565. package/src/components/data-table/data-table.tsx +485 -0
  566. package/src/components/data-table/index.ts +13 -0
  567. package/src/components/data-table/meta.ts +19 -0
  568. package/src/components/date-picker/date-picker.stories.tsx +103 -0
  569. package/src/components/date-picker/date-picker.test.tsx +205 -0
  570. package/src/components/date-picker/date-picker.tsx +198 -0
  571. package/src/components/date-picker/index.ts +6 -0
  572. package/src/components/date-picker/meta.ts +18 -0
  573. package/src/components/dialog/dialog.stories.tsx +140 -0
  574. package/src/components/dialog/dialog.test.tsx +186 -0
  575. package/src/components/dialog/dialog.tsx +132 -0
  576. package/src/components/dialog/index.ts +16 -0
  577. package/src/components/dialog/meta.ts +16 -0
  578. package/src/components/drawer/drawer.stories.tsx +111 -0
  579. package/src/components/drawer/drawer.test.tsx +187 -0
  580. package/src/components/drawer/drawer.tsx +293 -0
  581. package/src/components/drawer/index.ts +16 -0
  582. package/src/components/drawer/meta.ts +16 -0
  583. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +128 -0
  584. package/src/components/dropdown-menu/dropdown-menu.test.tsx +321 -0
  585. package/src/components/dropdown-menu/dropdown-menu.tsx +242 -0
  586. package/src/components/dropdown-menu/index.ts +21 -0
  587. package/src/components/dropdown-menu/meta.ts +17 -0
  588. package/src/components/empty-state/empty-state.stories.tsx +70 -0
  589. package/src/components/empty-state/empty-state.test.tsx +97 -0
  590. package/src/components/empty-state/empty-state.tsx +92 -0
  591. package/src/components/empty-state/index.ts +9 -0
  592. package/src/components/empty-state/meta.ts +16 -0
  593. package/src/components/form/form.stories.tsx +144 -0
  594. package/src/components/form/form.test.tsx +203 -0
  595. package/src/components/form/form.tsx +221 -0
  596. package/src/components/form/index.ts +13 -0
  597. package/src/components/form/meta.ts +17 -0
  598. package/src/components/input/index.ts +1 -0
  599. package/src/components/input/input.stories.tsx +84 -0
  600. package/src/components/input/input.test.tsx +108 -0
  601. package/src/components/input/input.tsx +51 -0
  602. package/src/components/input/meta.ts +15 -0
  603. package/src/components/label/index.ts +1 -0
  604. package/src/components/label/label.stories.tsx +51 -0
  605. package/src/components/label/label.test.tsx +55 -0
  606. package/src/components/label/label.tsx +26 -0
  607. package/src/components/label/meta.ts +15 -0
  608. package/src/components/pagination/index.ts +10 -0
  609. package/src/components/pagination/meta.ts +17 -0
  610. package/src/components/pagination/pagination.stories.tsx +129 -0
  611. package/src/components/pagination/pagination.test.tsx +119 -0
  612. package/src/components/pagination/pagination.tsx +142 -0
  613. package/src/components/popover/index.ts +9 -0
  614. package/src/components/popover/meta.ts +18 -0
  615. package/src/components/popover/popover.stories.tsx +84 -0
  616. package/src/components/popover/popover.test.tsx +163 -0
  617. package/src/components/popover/popover.tsx +89 -0
  618. package/src/components/progress/index.ts +1 -0
  619. package/src/components/progress/meta.ts +17 -0
  620. package/src/components/progress/progress.stories.tsx +90 -0
  621. package/src/components/progress/progress.test.tsx +78 -0
  622. package/src/components/progress/progress.tsx +70 -0
  623. package/src/components/radio-group/index.ts +6 -0
  624. package/src/components/radio-group/meta.ts +16 -0
  625. package/src/components/radio-group/radio-group.stories.tsx +102 -0
  626. package/src/components/radio-group/radio-group.test.tsx +152 -0
  627. package/src/components/radio-group/radio-group.tsx +53 -0
  628. package/src/components/select/index.ts +14 -0
  629. package/src/components/select/meta.ts +16 -0
  630. package/src/components/select/select.stories.tsx +137 -0
  631. package/src/components/select/select.test.tsx +209 -0
  632. package/src/components/select/select.tsx +222 -0
  633. package/src/components/separator/index.ts +1 -0
  634. package/src/components/separator/meta.ts +15 -0
  635. package/src/components/separator/separator.stories.tsx +42 -0
  636. package/src/components/separator/separator.test.tsx +46 -0
  637. package/src/components/separator/separator.tsx +33 -0
  638. package/src/components/sheet/index.ts +14 -0
  639. package/src/components/sheet/meta.ts +16 -0
  640. package/src/components/sheet/sheet.stories.tsx +107 -0
  641. package/src/components/sheet/sheet.test.tsx +152 -0
  642. package/src/components/sheet/sheet.tsx +160 -0
  643. package/src/components/skeleton/index.ts +1 -0
  644. package/src/components/skeleton/meta.ts +15 -0
  645. package/src/components/skeleton/skeleton.stories.tsx +46 -0
  646. package/src/components/skeleton/skeleton.test.tsx +57 -0
  647. package/src/components/skeleton/skeleton.tsx +28 -0
  648. package/src/components/slider/index.ts +1 -0
  649. package/src/components/slider/meta.ts +19 -0
  650. package/src/components/slider/slider.stories.tsx +87 -0
  651. package/src/components/slider/slider.test.tsx +148 -0
  652. package/src/components/slider/slider.tsx +135 -0
  653. package/src/components/spinner/index.ts +1 -0
  654. package/src/components/spinner/meta.ts +15 -0
  655. package/src/components/spinner/spinner.stories.tsx +47 -0
  656. package/src/components/spinner/spinner.test.tsx +41 -0
  657. package/src/components/spinner/spinner.tsx +68 -0
  658. package/src/components/switch/index.ts +1 -0
  659. package/src/components/switch/meta.ts +15 -0
  660. package/src/components/switch/switch.stories.tsx +70 -0
  661. package/src/components/switch/switch.test.tsx +101 -0
  662. package/src/components/switch/switch.tsx +42 -0
  663. package/src/components/table/index.ts +11 -0
  664. package/src/components/table/meta.ts +17 -0
  665. package/src/components/table/table.stories.tsx +131 -0
  666. package/src/components/table/table.test.tsx +153 -0
  667. package/src/components/table/table.tsx +138 -0
  668. package/src/components/tabs/index.ts +11 -0
  669. package/src/components/tabs/meta.ts +17 -0
  670. package/src/components/tabs/tabs.stories.tsx +139 -0
  671. package/src/components/tabs/tabs.test.tsx +148 -0
  672. package/src/components/tabs/tabs.tsx +106 -0
  673. package/src/components/toast/index.ts +24 -0
  674. package/src/components/toast/meta.ts +18 -0
  675. package/src/components/toast/toast-store.ts +181 -0
  676. package/src/components/toast/toast.stories.tsx +167 -0
  677. package/src/components/toast/toast.test.tsx +306 -0
  678. package/src/components/toast/toast.tsx +241 -0
  679. package/src/components/tooltip/index.ts +8 -0
  680. package/src/components/tooltip/meta.ts +17 -0
  681. package/src/components/tooltip/tooltip.stories.tsx +89 -0
  682. package/src/components/tooltip/tooltip.test.tsx +120 -0
  683. package/src/components/tooltip/tooltip.tsx +58 -0
  684. package/src/index.ts +50 -0
  685. package/src/lib/styles.ts +26 -0
  686. package/src/lib/utils.test.ts +32 -0
  687. package/src/lib/utils.ts +24 -0
  688. package/src/registry/blocks.ts +30 -0
  689. package/src/registry/components.ts +114 -0
  690. package/src/registry/meta.test.ts +234 -0
  691. package/src/registry/schema.ts +58 -0
@@ -0,0 +1,330 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "../dialog/dialog.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { createContext, useCallback, useContext, useEffect, useId, useMemo, useRef, useState } from "react";
6
+ //#region src/components/command/command.tsx
7
+ /**
8
+ * A searchable list of commands.
9
+ *
10
+ * Shares its navigation model with Combobox — the input owns `role="combobox"`,
11
+ * the list owns `role="listbox"`, and the active item is tracked with
12
+ * `aria-activedescendant` so focus never leaves the input. Ordering is read
13
+ * from the DOM rather than a registry, which stays correct as filtering adds
14
+ * and removes items.
15
+ *
16
+ * Unlike Combobox this has no selected value: items run actions. It also
17
+ * supports groups, and a group whose items have all been filtered out hides its
18
+ * own heading rather than leaving a label over nothing.
19
+ */
20
+ /** Default match: case-insensitive substring over the value and any keywords. */
21
+ function defaultCommandFilter(search, haystack) {
22
+ const needle = search.trim().toLowerCase();
23
+ if (!needle) return true;
24
+ return haystack.some((entry) => entry.toLowerCase().includes(needle));
25
+ }
26
+ const CommandContext = createContext(null);
27
+ function useCommand(component) {
28
+ const context = useContext(CommandContext);
29
+ if (!context) throw new Error(`${component} must be rendered inside <Command>.`);
30
+ return context;
31
+ }
32
+ /** Lets a group count how many of its own items survived the filter. */
33
+ const CommandGroupContext = createContext(null);
34
+ /** Counts visible entries by name, so re-registration cannot double-count. */
35
+ function useVisibilityCounter() {
36
+ const visible = useRef(/* @__PURE__ */ new Set());
37
+ const [count, setCount] = useState(0);
38
+ return {
39
+ count,
40
+ register: useCallback((value, isVisible) => {
41
+ const set = visible.current;
42
+ const had = set.has(value);
43
+ if (isVisible && !had) set.add(value);
44
+ else if (!isVisible && had) set.delete(value);
45
+ else return;
46
+ setCount(set.size);
47
+ }, [])
48
+ };
49
+ }
50
+ function Command({ className, filter = defaultCommandFilter, value, onValueChange, ...props }) {
51
+ const uid = useId();
52
+ const [uncontrolledSearch, setUncontrolledSearch] = useState("");
53
+ const search = value ?? uncontrolledSearch;
54
+ const [activeValue, setActiveValue] = useState(void 0);
55
+ const listRef = useRef(null);
56
+ const { count, register } = useVisibilityCounter();
57
+ const setSearch = useCallback((next) => {
58
+ if (value === void 0) setUncontrolledSearch(next);
59
+ onValueChange?.(next);
60
+ }, [value, onValueChange]);
61
+ const context = useMemo(() => ({
62
+ search,
63
+ setSearch,
64
+ activeValue,
65
+ setActiveValue,
66
+ filter,
67
+ listId: `${uid}-list`,
68
+ inputId: `${uid}-input`,
69
+ optionId: (itemValue) => `${uid}-item-${itemValue.replace(/\s+/g, "-").toLowerCase()}`,
70
+ listRef,
71
+ registerVisible: register,
72
+ visibleCount: count
73
+ }), [
74
+ search,
75
+ setSearch,
76
+ activeValue,
77
+ filter,
78
+ uid,
79
+ register,
80
+ count
81
+ ]);
82
+ return /* @__PURE__ */ jsx(CommandContext.Provider, {
83
+ value: context,
84
+ children: /* @__PURE__ */ jsx("div", {
85
+ "data-slot": "command",
86
+ className: cn("flex size-full flex-col overflow-hidden rounded-lg bg-popover text-popover-foreground", className),
87
+ ...props
88
+ })
89
+ });
90
+ }
91
+ /** Items currently rendered, in DOM order and excluding disabled ones. */
92
+ function visibleItems(list) {
93
+ if (!list) return [];
94
+ return Array.from(list.querySelectorAll("[role=\"option\"]:not([data-disabled])"));
95
+ }
96
+ function CommandInput({ className, ...props }) {
97
+ const { search, setSearch, activeValue, setActiveValue, listId, inputId, optionId, listRef } = useCommand("CommandInput");
98
+ const inputRef = useRef(null);
99
+ useEffect(() => {
100
+ inputRef.current?.focus();
101
+ }, []);
102
+ const move = useCallback((delta) => {
103
+ const items = visibleItems(listRef.current);
104
+ if (items.length === 0) return;
105
+ const currentIndex = items.findIndex((item) => item.dataset.value === activeValue);
106
+ let nextIndex;
107
+ if (delta === "first") nextIndex = 0;
108
+ else if (delta === "last") nextIndex = items.length - 1;
109
+ else if (currentIndex === -1) nextIndex = delta > 0 ? 0 : items.length - 1;
110
+ else nextIndex = (currentIndex + delta + items.length) % items.length;
111
+ const next = items[nextIndex];
112
+ if (!next) return;
113
+ setActiveValue(next.dataset.value);
114
+ next.scrollIntoView({ block: "nearest" });
115
+ }, [
116
+ activeValue,
117
+ listRef,
118
+ setActiveValue
119
+ ]);
120
+ function handleKeyDown(event) {
121
+ switch (event.key) {
122
+ case "ArrowDown":
123
+ event.preventDefault();
124
+ move(1);
125
+ break;
126
+ case "ArrowUp":
127
+ event.preventDefault();
128
+ move(-1);
129
+ break;
130
+ case "Home":
131
+ event.preventDefault();
132
+ move("first");
133
+ break;
134
+ case "End":
135
+ event.preventDefault();
136
+ move("last");
137
+ break;
138
+ case "Enter":
139
+ if (activeValue === void 0) return;
140
+ event.preventDefault();
141
+ visibleItems(listRef.current).find((candidate) => candidate.dataset.value === activeValue)?.click();
142
+ }
143
+ }
144
+ return /* @__PURE__ */ jsxs("div", {
145
+ className: "flex items-center gap-2 border-b border-border px-3",
146
+ children: [/* @__PURE__ */ jsxs("svg", {
147
+ viewBox: "0 0 24 24",
148
+ fill: "none",
149
+ "aria-hidden": "true",
150
+ className: "size-4 shrink-0 opacity-55",
151
+ children: [/* @__PURE__ */ jsx("circle", {
152
+ cx: "11",
153
+ cy: "11",
154
+ r: "7",
155
+ stroke: "currentColor",
156
+ strokeWidth: "2"
157
+ }), /* @__PURE__ */ jsx("path", {
158
+ d: "m20 20-3.5-3.5",
159
+ stroke: "currentColor",
160
+ strokeWidth: "2",
161
+ strokeLinecap: "round"
162
+ })]
163
+ }), /* @__PURE__ */ jsx("input", {
164
+ ref: inputRef,
165
+ id: inputId,
166
+ "data-slot": "command-input",
167
+ type: "text",
168
+ role: "combobox",
169
+ autoComplete: "off",
170
+ "aria-expanded": "true",
171
+ "aria-controls": listId,
172
+ "aria-autocomplete": "list",
173
+ "aria-activedescendant": activeValue ? optionId(activeValue) : void 0,
174
+ value: search,
175
+ onChange: (event) => {
176
+ setSearch(event.target.value);
177
+ setActiveValue(void 0);
178
+ },
179
+ onKeyDown: handleKeyDown,
180
+ className: cn("h-11 w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground", className),
181
+ ...props
182
+ })]
183
+ });
184
+ }
185
+ function CommandList({ className, ...props }) {
186
+ const { listId, listRef } = useCommand("CommandList");
187
+ return /* @__PURE__ */ jsx("div", {
188
+ ref: listRef,
189
+ id: listId,
190
+ role: "listbox",
191
+ "data-slot": "command-list",
192
+ className: cn("max-h-80 overflow-y-auto overscroll-contain p-1", className),
193
+ ...props
194
+ });
195
+ }
196
+ function CommandEmpty({ className, children, ...props }) {
197
+ const { visibleCount } = useCommand("CommandEmpty");
198
+ if (visibleCount > 0) return null;
199
+ return /* @__PURE__ */ jsx("div", {
200
+ "data-slot": "command-empty",
201
+ role: "presentation",
202
+ className: cn("px-3 py-8 text-center text-sm text-muted-foreground", className),
203
+ ...props,
204
+ children: children ?? "No results found."
205
+ });
206
+ }
207
+ function CommandGroup({ className, heading, children, ...props }) {
208
+ const uid = useId();
209
+ const { count, register } = useVisibilityCounter();
210
+ const empty = count === 0;
211
+ return /* @__PURE__ */ jsxs("div", {
212
+ "data-slot": "command-group",
213
+ role: "group",
214
+ "aria-labelledby": heading && !empty ? `${uid}-heading` : void 0,
215
+ hidden: empty || void 0,
216
+ className: cn("py-1 first:pt-0", className),
217
+ ...props,
218
+ children: [heading && !empty ? /* @__PURE__ */ jsx("div", {
219
+ id: `${uid}-heading`,
220
+ className: "px-2 py-1.5 text-xs font-medium text-muted-foreground",
221
+ children: heading
222
+ }) : null, /* @__PURE__ */ jsx(CommandGroupContext.Provider, {
223
+ value: register,
224
+ children
225
+ })]
226
+ });
227
+ }
228
+ function CommandItem({ className, value, keywords, disabled, onSelect, children, ...props }) {
229
+ const { search, filter, activeValue, setActiveValue, optionId, registerVisible } = useCommand("CommandItem");
230
+ const registerInGroup = useContext(CommandGroupContext);
231
+ const visible = filter(search, useMemo(() => [
232
+ value,
233
+ ...keywords ?? [],
234
+ typeof children === "string" ? children : ""
235
+ ], [
236
+ value,
237
+ keywords,
238
+ children
239
+ ]));
240
+ const active = activeValue === value;
241
+ const counts = visible && !disabled;
242
+ useEffect(() => {
243
+ registerVisible(value, counts);
244
+ registerInGroup?.(value, counts);
245
+ return () => {
246
+ registerVisible(value, false);
247
+ registerInGroup?.(value, false);
248
+ };
249
+ }, [
250
+ registerVisible,
251
+ registerInGroup,
252
+ value,
253
+ counts
254
+ ]);
255
+ if (!visible) return null;
256
+ return /* @__PURE__ */ jsx("div", {
257
+ id: optionId(value),
258
+ role: "option",
259
+ "data-slot": "command-item",
260
+ "data-value": value,
261
+ "data-active": active || void 0,
262
+ "data-disabled": disabled || void 0,
263
+ "aria-selected": active,
264
+ "aria-disabled": disabled || void 0,
265
+ tabIndex: -1,
266
+ onPointerMove: () => {
267
+ if (!disabled) setActiveValue(value);
268
+ },
269
+ onMouseDown: (event) => {
270
+ event.preventDefault();
271
+ },
272
+ onClick: () => {
273
+ if (!disabled) onSelect?.(value);
274
+ },
275
+ onKeyDown: (event) => {
276
+ if (disabled) return;
277
+ if (event.key === "Enter" || event.key === " ") {
278
+ event.preventDefault();
279
+ onSelect?.(value);
280
+ }
281
+ },
282
+ className: cn("relative flex cursor-default items-center gap-2 rounded-md px-2 py-2 text-sm outline-none select-none", "transition-colors duration-[var(--duration-instant)]", "data-[active]:bg-accent data-[active]:text-accent-foreground", "data-[disabled]:pointer-events-none data-[disabled]:opacity-55", "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
283
+ ...props,
284
+ children: children ?? value
285
+ });
286
+ }
287
+ function CommandSeparator({ className, ...props }) {
288
+ return /* @__PURE__ */ jsx("div", {
289
+ "data-slot": "command-separator",
290
+ "aria-hidden": "true",
291
+ className: cn("-mx-1 my-1 h-px bg-border", className),
292
+ ...props
293
+ });
294
+ }
295
+ /** Keyboard hint. Decorative — bind the shortcut for real at the app level. */
296
+ function CommandShortcut({ className, ...props }) {
297
+ return /* @__PURE__ */ jsx("span", {
298
+ "data-slot": "command-shortcut",
299
+ "aria-hidden": "true",
300
+ className: cn("ml-auto text-2xs tracking-wide text-muted-foreground", className),
301
+ ...props
302
+ });
303
+ }
304
+ /**
305
+ * The palette in a modal, for the ⌘K pattern.
306
+ *
307
+ * The title and description are rendered but visually hidden: a dialog needs an
308
+ * accessible name whether or not the design shows one, and leaving it out is
309
+ * the most common defect in hand-rolled command menus.
310
+ */
311
+ function CommandDialog({ title = "Command palette", description = "Search for a command to run.", children, className, ...props }) {
312
+ return /* @__PURE__ */ jsx(Dialog, {
313
+ ...props,
314
+ children: /* @__PURE__ */ jsxs(DialogContent, {
315
+ showCloseButton: false,
316
+ className: cn("max-w-lg overflow-hidden p-0", className),
317
+ children: [/* @__PURE__ */ jsxs(DialogHeader, {
318
+ className: "sr-only",
319
+ children: [/* @__PURE__ */ jsx(DialogTitle, { children: title }), /* @__PURE__ */ jsx(DialogDescription, { children: description })]
320
+ }), /* @__PURE__ */ jsx(Command, {
321
+ className: "rounded-none",
322
+ children
323
+ })]
324
+ })
325
+ });
326
+ }
327
+ //#endregion
328
+ export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, defaultCommandFilter };
329
+
330
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","names":[],"sources":["../../../src/components/command/command.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithRef,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from \"react\";\n\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/dialog\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * A searchable list of commands.\n *\n * Shares its navigation model with Combobox — the input owns `role=\"combobox\"`,\n * the list owns `role=\"listbox\"`, and the active item is tracked with\n * `aria-activedescendant` so focus never leaves the input. Ordering is read\n * from the DOM rather than a registry, which stays correct as filtering adds\n * and removes items.\n *\n * Unlike Combobox this has no selected value: items run actions. It also\n * supports groups, and a group whose items have all been filtered out hides its\n * own heading rather than leaving a label over nothing.\n */\n\n/** Default match: case-insensitive substring over the value and any keywords. */\nexport function defaultCommandFilter(search: string, haystack: string[]): boolean {\n const needle = search.trim().toLowerCase();\n if (!needle) return true;\n return haystack.some((entry) => entry.toLowerCase().includes(needle));\n}\n\ninterface CommandContextValue {\n search: string;\n setSearch: (search: string) => void;\n activeValue: string | undefined;\n setActiveValue: (value: string | undefined) => void;\n filter: (search: string, haystack: string[]) => boolean;\n listId: string;\n inputId: string;\n optionId: (value: string) => string;\n listRef: React.RefObject<HTMLDivElement | null>;\n registerVisible: (value: string, visible: boolean) => void;\n visibleCount: number;\n}\n\nconst CommandContext = createContext<CommandContextValue | null>(null);\n\nfunction useCommand(component: string): CommandContextValue {\n const context = useContext(CommandContext);\n if (!context) {\n throw new Error(`${component} must be rendered inside <Command>.`);\n }\n return context;\n}\n\n/** Lets a group count how many of its own items survived the filter. */\nconst CommandGroupContext = createContext<((value: string, visible: boolean) => void) | null>(\n null,\n);\n\n/** Counts visible entries by name, so re-registration cannot double-count. */\nfunction useVisibilityCounter() {\n const visible = useRef(new Set<string>());\n const [count, setCount] = useState(0);\n\n const register = useCallback((value: string, isVisible: boolean) => {\n const set = visible.current;\n const had = set.has(value);\n if (isVisible && !had) set.add(value);\n else if (!isVisible && had) set.delete(value);\n else return;\n setCount(set.size);\n }, []);\n\n return { count, register };\n}\n\nexport interface CommandProps extends Omit<ComponentPropsWithRef<\"div\">, \"onSelect\"> {\n /** Overrides how a search string is matched against an item. */\n filter?: (search: string, haystack: string[]) => boolean;\n /** Controls the search text. */\n value?: string;\n onValueChange?: (search: string) => void;\n}\n\nexport function Command({\n className,\n filter = defaultCommandFilter,\n value,\n onValueChange,\n ...props\n}: CommandProps) {\n const uid = useId();\n const [uncontrolledSearch, setUncontrolledSearch] = useState(\"\");\n const search = value ?? uncontrolledSearch;\n const [activeValue, setActiveValue] = useState<string | undefined>(undefined);\n const listRef = useRef<HTMLDivElement | null>(null);\n const { count, register } = useVisibilityCounter();\n\n const setSearch = useCallback(\n (next: string) => {\n if (value === undefined) setUncontrolledSearch(next);\n onValueChange?.(next);\n },\n [value, onValueChange],\n );\n\n const context = useMemo<CommandContextValue>(\n () => ({\n search,\n setSearch,\n activeValue,\n setActiveValue,\n filter,\n listId: `${uid}-list`,\n inputId: `${uid}-input`,\n optionId: (itemValue: string) =>\n `${uid}-item-${itemValue.replace(/\\s+/g, \"-\").toLowerCase()}`,\n listRef,\n registerVisible: register,\n visibleCount: count,\n }),\n [search, setSearch, activeValue, filter, uid, register, count],\n );\n\n return (\n <CommandContext.Provider value={context}>\n <div\n data-slot=\"command\"\n className={cn(\n \"flex size-full flex-col overflow-hidden rounded-lg bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n </CommandContext.Provider>\n );\n}\n\n/** Items currently rendered, in DOM order and excluding disabled ones. */\nfunction visibleItems(list: HTMLElement | null): HTMLElement[] {\n if (!list) return [];\n return Array.from(list.querySelectorAll<HTMLElement>('[role=\"option\"]:not([data-disabled])'));\n}\n\nexport type CommandInputProps = Omit<ComponentPropsWithRef<\"input\">, \"value\" | \"onChange\">;\n\nexport function CommandInput({ className, ...props }: CommandInputProps) {\n const { search, setSearch, activeValue, setActiveValue, listId, inputId, optionId, listRef } =\n useCommand(\"CommandInput\");\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n useEffect(() => {\n inputRef.current?.focus();\n }, []);\n\n const move = useCallback(\n (delta: number | \"first\" | \"last\") => {\n const items = visibleItems(listRef.current);\n if (items.length === 0) return;\n\n const currentIndex = items.findIndex((item) => item.dataset.value === activeValue);\n\n let nextIndex: number;\n if (delta === \"first\") nextIndex = 0;\n else if (delta === \"last\") nextIndex = items.length - 1;\n else if (currentIndex === -1) nextIndex = delta > 0 ? 0 : items.length - 1;\n else nextIndex = (currentIndex + delta + items.length) % items.length;\n\n const next = items[nextIndex];\n if (!next) return;\n setActiveValue(next.dataset.value);\n next.scrollIntoView({ block: \"nearest\" });\n },\n [activeValue, listRef, setActiveValue],\n );\n\n function handleKeyDown(event: ReactKeyboardEvent<HTMLInputElement>) {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n move(1);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n move(-1);\n break;\n case \"Home\":\n event.preventDefault();\n move(\"first\");\n break;\n case \"End\":\n event.preventDefault();\n move(\"last\");\n break;\n case \"Enter\": {\n if (activeValue === undefined) return;\n event.preventDefault();\n // Running the item by clicking it keeps one code path for pointer and\n // keyboard, so the two can never drift apart.\n const item = visibleItems(listRef.current).find(\n (candidate) => candidate.dataset.value === activeValue,\n );\n item?.click();\n break;\n }\n default:\n break;\n }\n }\n\n return (\n <div className=\"flex items-center gap-2 border-b border-border px-3\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n className=\"size-4 shrink-0 opacity-55\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"m20 20-3.5-3.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n <input\n ref={inputRef}\n id={inputId}\n data-slot=\"command-input\"\n type=\"text\"\n role=\"combobox\"\n autoComplete=\"off\"\n aria-expanded=\"true\"\n aria-controls={listId}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeValue ? optionId(activeValue) : undefined}\n value={search}\n onChange={(event) => {\n setSearch(event.target.value);\n // The active item may have just been filtered away.\n setActiveValue(undefined);\n }}\n onKeyDown={handleKeyDown}\n className={cn(\n \"h-11 w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nexport function CommandList({ className, ...props }: ComponentPropsWithRef<\"div\">) {\n const { listId, listRef } = useCommand(\"CommandList\");\n\n return (\n <div\n ref={listRef}\n id={listId}\n role=\"listbox\"\n data-slot=\"command-list\"\n className={cn(\"max-h-80 overflow-y-auto overscroll-contain p-1\", className)}\n {...props}\n />\n );\n}\n\nexport function CommandEmpty({ className, children, ...props }: ComponentPropsWithRef<\"div\">) {\n const { visibleCount } = useCommand(\"CommandEmpty\");\n if (visibleCount > 0) return null;\n\n return (\n <div\n data-slot=\"command-empty\"\n role=\"presentation\"\n className={cn(\"px-3 py-8 text-center text-sm text-muted-foreground\", className)}\n {...props}\n >\n {children ?? \"No results found.\"}\n </div>\n );\n}\n\nexport interface CommandGroupProps extends ComponentPropsWithRef<\"div\"> {\n heading?: ReactNode;\n}\n\nexport function CommandGroup({ className, heading, children, ...props }: CommandGroupProps) {\n const uid = useId();\n const { count, register } = useVisibilityCounter();\n const empty = count === 0;\n\n return (\n <div\n data-slot=\"command-group\"\n role=\"group\"\n aria-labelledby={heading && !empty ? `${uid}-heading` : undefined}\n // Hidden rather than unmounted: the items inside are what report whether\n // anything matched, and unmounting them would stop the reports and leave\n // the group permanently empty.\n hidden={empty || undefined}\n className={cn(\"py-1 first:pt-0\", className)}\n {...props}\n >\n {heading && !empty ? (\n <div\n id={`${uid}-heading`}\n className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground\"\n >\n {heading}\n </div>\n ) : null}\n <CommandGroupContext.Provider value={register}>{children}</CommandGroupContext.Provider>\n </div>\n );\n}\n\nexport interface CommandItemProps extends Omit<\n ComponentPropsWithRef<\"div\">,\n \"onSelect\" | \"children\"\n> {\n /** Identifies the item, and is the primary search term. */\n value: string;\n /** Extra search terms that are not shown. */\n keywords?: string[];\n disabled?: boolean;\n onSelect?: (value: string) => void;\n children?: ReactNode;\n}\n\nexport function CommandItem({\n className,\n value,\n keywords,\n disabled,\n onSelect,\n children,\n ...props\n}: CommandItemProps) {\n const { search, filter, activeValue, setActiveValue, optionId, registerVisible } =\n useCommand(\"CommandItem\");\n const registerInGroup = useContext(CommandGroupContext);\n\n const haystack = useMemo(\n () => [value, ...(keywords ?? []), typeof children === \"string\" ? children : \"\"],\n [value, keywords, children],\n );\n\n const visible = filter(search, haystack);\n const active = activeValue === value;\n const counts = visible && !disabled;\n\n useEffect(() => {\n registerVisible(value, counts);\n registerInGroup?.(value, counts);\n return () => {\n registerVisible(value, false);\n registerInGroup?.(value, false);\n };\n }, [registerVisible, registerInGroup, value, counts]);\n\n if (!visible) return null;\n\n return (\n <div\n id={optionId(value)}\n role=\"option\"\n data-slot=\"command-item\"\n data-value={value}\n data-active={active || undefined}\n data-disabled={disabled || undefined}\n aria-selected={active}\n aria-disabled={disabled || undefined}\n // Programmatically focusable but never a tab stop: the input keeps focus\n // and items are only virtually focused via aria-activedescendant.\n tabIndex={-1}\n onPointerMove={() => {\n if (!disabled) setActiveValue(value);\n }}\n onMouseDown={(event) => {\n // Keeps focus in the input, so aria-activedescendant stays valid and a\n // hosting dialog does not close before the click lands.\n event.preventDefault();\n }}\n onClick={() => {\n if (!disabled) onSelect?.(value);\n }}\n onKeyDown={(event) => {\n if (disabled) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onSelect?.(value);\n }\n }}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-md px-2 py-2 text-sm outline-none select-none\",\n \"transition-colors duration-[var(--duration-instant)]\",\n \"data-[active]:bg-accent data-[active]:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-55\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children ?? value}\n </div>\n );\n}\n\nexport function CommandSeparator({ className, ...props }: ComponentPropsWithRef<\"div\">) {\n return (\n <div\n data-slot=\"command-separator\"\n aria-hidden=\"true\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n );\n}\n\n/** Keyboard hint. Decorative — bind the shortcut for real at the app level. */\nexport function CommandShortcut({ className, ...props }: ComponentPropsWithRef<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n aria-hidden=\"true\"\n className={cn(\"ml-auto text-2xs tracking-wide text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport interface CommandDialogProps extends ComponentPropsWithRef<typeof Dialog> {\n /** Names the dialog for assistive technology. Visually hidden by default. */\n title?: string;\n description?: string;\n className?: string;\n}\n\n/**\n * The palette in a modal, for the ⌘K pattern.\n *\n * The title and description are rendered but visually hidden: a dialog needs an\n * accessible name whether or not the design shows one, and leaving it out is\n * the most common defect in hand-rolled command menus.\n */\nexport function CommandDialog({\n title = \"Command palette\",\n description = \"Search for a command to run.\",\n children,\n className,\n ...props\n}: CommandDialogProps) {\n return (\n <Dialog {...props}>\n <DialogContent\n showCloseButton={false}\n className={cn(\"max-w-lg overflow-hidden p-0\", className)}\n >\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <Command className=\"rounded-none\">{children}</Command>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command, CommandDialog, CommandDialogProps, CommandEmpty, CommandGroup, CommandGroupProps, CommandInput, CommandInputProps, CommandItem, CommandItemProps, CommandList, CommandProps, CommandSeparator, CommandShortcut, defaultCommandFilter } from "./command.js";
2
+ export { Command, CommandDialog, type CommandDialogProps, CommandEmpty, CommandGroup, type CommandGroupProps, CommandInput, type CommandInputProps, CommandItem, type CommandItemProps, CommandList, type CommandProps, CommandSeparator, CommandShortcut, defaultCommandFilter };
@@ -0,0 +1,2 @@
1
+ import { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, defaultCommandFilter } from "./command.js";
2
+ export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, defaultCommandFilter };
@@ -0,0 +1,17 @@
1
+ import { defineMeta } from "../../registry/schema.js";
2
+ //#region src/components/command/meta.ts
3
+ const meta = defineMeta({
4
+ name: "command",
5
+ title: "Command",
6
+ description: "A searchable command palette, with groups and a ⌘K dialog variant.",
7
+ category: "navigation",
8
+ status: "stable",
9
+ dependencies: [],
10
+ registryDependencies: ["dialog"],
11
+ files: ["command.tsx"],
12
+ a11y: "The input owns role=\"combobox\" and the list role=\"listbox\"; focus stays in the input while arrow keys move aria-activedescendant, so typing is never interrupted. Enter runs the active item through the same path as a click. A group whose items are all filtered out hides its heading rather than labelling nothing. CommandDialog always renders a title and description, visually hidden, so the dialog is never unnamed."
13
+ });
14
+ //#endregion
15
+ export { meta };
16
+
17
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.js","names":[],"sources":["../../../src/components/command/meta.ts"],"sourcesContent":["import { defineMeta } from \"@/registry/schema\";\n\nexport const meta = defineMeta({\n name: \"command\",\n title: \"Command\",\n description: \"A searchable command palette, with groups and a ⌘K dialog variant.\",\n category: \"navigation\",\n status: \"stable\",\n dependencies: [],\n registryDependencies: [\"dialog\"],\n files: [\"command.tsx\"],\n a11y:\n 'The input owns role=\"combobox\" and the list role=\"listbox\"; focus stays in the input while ' +\n \"arrow keys move aria-activedescendant, so typing is never interrupted. Enter runs the \" +\n \"active item through the same path as a click. A group whose items are all filtered out \" +\n \"hides its heading rather than labelling nothing. CommandDialog always renders a title and \" +\n \"description, visually hidden, so the dialog is never unnamed.\",\n});\n"],"mappings":";;AAEA,MAAa,OAAO,WAAW;CAC7B,MAAM;CACN,OAAO;CACP,aAAa;CACb,UAAU;CACV,QAAQ;CACR,cAAc,CAAC;CACf,sBAAsB,CAAC,QAAQ;CAC/B,OAAO,CAAC,aAAa;CACrB,MACE;AAKJ,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { ComponentPropsWithRef, ReactNode } from "react";
2
+ import { RowData, Table, TableFeatures } from "@tanstack/react-table";
3
+ //#region src/components/data-table/data-table.d.ts
4
+ interface DataTableProps<TFeatures extends TableFeatures, TData extends RowData> extends Omit<ComponentPropsWithRef<"table">, "children"> {
5
+ table: Table<TFeatures, TData>;
6
+ /** Shown in place of rows when there are none. */
7
+ empty?: ReactNode;
8
+ }
9
+ declare function DataTable<TFeatures extends TableFeatures, TData extends RowData>({ table, empty, className, ...props }: DataTableProps<TFeatures, TData>): import("react").JSX.Element;
10
+ /**
11
+ * The slice of a column a sortable header needs.
12
+ *
13
+ * A column from a table without the sorting feature does not have these
14
+ * methods, so passing one is a compile error rather than a runtime crash.
15
+ */
16
+ interface SortableColumn {
17
+ getCanSort: () => boolean;
18
+ getIsSorted: () => "asc" | "desc" | false;
19
+ toggleSorting: (desc?: boolean) => void;
20
+ }
21
+ interface DataTableColumnHeaderProps extends ComponentPropsWithRef<"div"> {
22
+ column: SortableColumn;
23
+ title: string;
24
+ }
25
+ /**
26
+ * A sortable column header.
27
+ *
28
+ * Falls back to plain text when the column cannot be sorted, rather than
29
+ * rendering a button that does nothing — a control that looks interactive and
30
+ * is not is worse than no control.
31
+ */
32
+ declare function DataTableColumnHeader({ column, title, className, ...props }: DataTableColumnHeaderProps): import("react").JSX.Element;
33
+ /** The slice of a table the column toggle needs. */
34
+ interface HideableTable {
35
+ getAllColumns: () => {
36
+ id: string;
37
+ getCanHide: () => boolean;
38
+ getIsVisible: () => boolean;
39
+ toggleVisibility: (visible?: boolean) => void;
40
+ }[];
41
+ }
42
+ interface DataTableViewOptionsProps {
43
+ table: HideableTable;
44
+ label?: string;
45
+ }
46
+ /** Toggles column visibility. */
47
+ declare function DataTableViewOptions({ table, label }: DataTableViewOptionsProps): import("react").JSX.Element;
48
+ /**
49
+ * The slice of a table the page controls need.
50
+ *
51
+ * `state` is a property, not a `getState()` call — the table library moved to a
52
+ * reactive state object, and reading it the old way fails at runtime rather
53
+ * than at compile time.
54
+ */
55
+ interface PaginatedTable {
56
+ state: {
57
+ pagination: {
58
+ pageIndex: number;
59
+ pageSize: number;
60
+ };
61
+ };
62
+ getPageCount: () => number;
63
+ setPageSize: (size: number) => void;
64
+ previousPage: () => void;
65
+ nextPage: () => void;
66
+ getCanPreviousPage: () => boolean;
67
+ getCanNextPage: () => boolean;
68
+ }
69
+ interface DataTablePaginationProps {
70
+ table: PaginatedTable;
71
+ pageSizes?: number[];
72
+ /**
73
+ * Replaces the page position on the left.
74
+ *
75
+ * A slot rather than a `showSelectionCount` flag: a selection count needs the
76
+ * selection and filtering features, and demanding those here would break
77
+ * every table that only paginates.
78
+ */
79
+ status?: ReactNode;
80
+ }
81
+ /**
82
+ * Page controls for a table.
83
+ *
84
+ * The page position is a polite live region: paging replaces the rows in place,
85
+ * and without an announcement a screen reader user gets no confirmation that
86
+ * anything happened.
87
+ */
88
+ declare function DataTablePagination({ table, pageSizes, status }: DataTablePaginationProps): import("react").JSX.Element;
89
+ //#endregion
90
+ export { DataTable, DataTableColumnHeader, DataTableColumnHeaderProps, DataTablePagination, DataTablePaginationProps, DataTableProps, DataTableViewOptions, DataTableViewOptionsProps, HideableTable, PaginatedTable, SortableColumn };
91
+ //# sourceMappingURL=data-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.d.ts","names":[],"sources":["../../../src/components/data-table/data-table.tsx"],"mappings":";;;UAqIiB,eACf,kBAAkB,eAClB,cAAc,iBACN,KAAK;EACb,OAAO,MAAc,WAAW;;EAEhC,QAAQ;;iBAGM,UAAU,kBAAkB,eAAe,cAAc,WACvE,OACA,OACA,cACG,SACF,eAAe,WAAW,yBAAM,IAAA;;;;;;;UAmElB;EACf;EACA;EACA,gBAAgB;;UAGD,mCAAmC;EAClD,QAAQ;EACR;;;;;;;;;iBAUc,wBACd,QACA,OACA,cACG,SACF,6CAA0B,IAAA;;UA6EZ;EACf;IACE;IACA;IACA;IACA,mBAAmB;;;UAIN;EACf,OAAO;EACP;;;iBAIc,uBAAuB,OAAO,SAAqB,4CAAyB,IAAA;;;;;;;;UAwC3E;EACf;IAAS;MAAc;MAAmB;;;EAC1C;EACA,cAAc;EACd;EACA;EACA;EACA;;UAGe;EACf,OAAO;EACP;;;;;;;;EAQA,SAAS;;;;;;;;;iBAUK,sBACd,OACA,WACA,UACC,2CAAwB,IAAA"}