@kanzo-tech/ui 0.0.1-alpha

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 (499) hide show
  1. package/README.md +60 -0
  2. package/dist/analytics.d.ts +36 -0
  3. package/dist/analytics.d.ts.map +1 -0
  4. package/dist/analytics.js +155 -0
  5. package/dist/analytics.js.map +1 -0
  6. package/dist/charts/arrow.d.ts +37 -0
  7. package/dist/charts/arrow.d.ts.map +1 -0
  8. package/dist/charts/arrow.js +29 -0
  9. package/dist/charts/arrow.js.map +1 -0
  10. package/dist/charts/chart-axes.d.ts +59 -0
  11. package/dist/charts/chart-axes.d.ts.map +1 -0
  12. package/dist/charts/chart-axes.js +39 -0
  13. package/dist/charts/chart-axes.js.map +1 -0
  14. package/dist/charts/chart-config.d.ts +52 -0
  15. package/dist/charts/chart-config.d.ts.map +1 -0
  16. package/dist/charts/chart-config.js +43 -0
  17. package/dist/charts/chart-config.js.map +1 -0
  18. package/dist/charts/chart-inputs.d.ts +174 -0
  19. package/dist/charts/chart-inputs.d.ts.map +1 -0
  20. package/dist/charts/chart-inputs.js +382 -0
  21. package/dist/charts/chart-inputs.js.map +1 -0
  22. package/dist/charts/chart-interactors.d.ts +75 -0
  23. package/dist/charts/chart-interactors.d.ts.map +1 -0
  24. package/dist/charts/chart-interactors.js +35 -0
  25. package/dist/charts/chart-interactors.js.map +1 -0
  26. package/dist/charts/chart-legend.d.ts +38 -0
  27. package/dist/charts/chart-legend.d.ts.map +1 -0
  28. package/dist/charts/chart-legend.js +49 -0
  29. package/dist/charts/chart-legend.js.map +1 -0
  30. package/dist/charts/chart-marks.d.ts +124 -0
  31. package/dist/charts/chart-marks.d.ts.map +1 -0
  32. package/dist/charts/chart-marks.js +109 -0
  33. package/dist/charts/chart-marks.js.map +1 -0
  34. package/dist/charts/chart-root.d.ts +90 -0
  35. package/dist/charts/chart-root.d.ts.map +1 -0
  36. package/dist/charts/chart-root.js +162 -0
  37. package/dist/charts/chart-root.js.map +1 -0
  38. package/dist/charts/chart-spec.d.ts +126 -0
  39. package/dist/charts/chart-spec.d.ts.map +1 -0
  40. package/dist/charts/chart-spec.js +133 -0
  41. package/dist/charts/chart-spec.js.map +1 -0
  42. package/dist/charts/chart-stat.d.ts +23 -0
  43. package/dist/charts/chart-stat.d.ts.map +1 -0
  44. package/dist/charts/chart-stat.js +24 -0
  45. package/dist/charts/chart-stat.js.map +1 -0
  46. package/dist/charts/id-set-client.d.ts +42 -0
  47. package/dist/charts/id-set-client.d.ts.map +1 -0
  48. package/dist/charts/id-set-client.js +43 -0
  49. package/dist/charts/id-set-client.js.map +1 -0
  50. package/dist/charts/mosaic-provider.d.ts +70 -0
  51. package/dist/charts/mosaic-provider.d.ts.map +1 -0
  52. package/dist/charts/mosaic-provider.js +53 -0
  53. package/dist/charts/mosaic-provider.js.map +1 -0
  54. package/dist/charts/query-client.d.ts +22 -0
  55. package/dist/charts/query-client.d.ts.map +1 -0
  56. package/dist/charts/query-client.js +26 -0
  57. package/dist/charts/query-client.js.map +1 -0
  58. package/dist/charts/tokenized-plot.d.ts +26 -0
  59. package/dist/charts/tokenized-plot.d.ts.map +1 -0
  60. package/dist/charts/tokenized-plot.js +41 -0
  61. package/dist/charts/tokenized-plot.js.map +1 -0
  62. package/dist/charts/use-chart-query.d.ts +30 -0
  63. package/dist/charts/use-chart-query.d.ts.map +1 -0
  64. package/dist/charts/use-chart-query.js +19 -0
  65. package/dist/charts/use-chart-query.js.map +1 -0
  66. package/dist/composites/CodeEditor.d.ts +64 -0
  67. package/dist/composites/CodeEditor.d.ts.map +1 -0
  68. package/dist/composites/CodeEditor.js +521 -0
  69. package/dist/composites/CodeEditor.js.map +1 -0
  70. package/dist/composites/MadeWith.d.ts +39 -0
  71. package/dist/composites/MadeWith.d.ts.map +1 -0
  72. package/dist/composites/MadeWith.js +30 -0
  73. package/dist/composites/MadeWith.js.map +1 -0
  74. package/dist/composites/Preferences.d.ts +155 -0
  75. package/dist/composites/Preferences.d.ts.map +1 -0
  76. package/dist/composites/Preferences.js +501 -0
  77. package/dist/composites/Preferences.js.map +1 -0
  78. package/dist/composites/Questionnaire.d.ts +215 -0
  79. package/dist/composites/Questionnaire.d.ts.map +1 -0
  80. package/dist/composites/Questionnaire.js +422 -0
  81. package/dist/composites/Questionnaire.js.map +1 -0
  82. package/dist/composites/SidebarIdentity.d.ts +63 -0
  83. package/dist/composites/SidebarIdentity.d.ts.map +1 -0
  84. package/dist/composites/SidebarIdentity.js +103 -0
  85. package/dist/composites/SidebarIdentity.js.map +1 -0
  86. package/dist/composites/code-editor-search.d.ts +40 -0
  87. package/dist/composites/code-editor-search.d.ts.map +1 -0
  88. package/dist/composites/code-editor-search.js +212 -0
  89. package/dist/composites/code-editor-search.js.map +1 -0
  90. package/dist/composites/sidebar.d.ts +129 -0
  91. package/dist/composites/sidebar.d.ts.map +1 -0
  92. package/dist/composites/sidebar.js +671 -0
  93. package/dist/composites/sidebar.js.map +1 -0
  94. package/dist/composites/theme-notice.d.ts +54 -0
  95. package/dist/composites/theme-notice.d.ts.map +1 -0
  96. package/dist/composites/theme-notice.js +19 -0
  97. package/dist/composites/theme-notice.js.map +1 -0
  98. package/dist/editor.d.ts +3 -0
  99. package/dist/editor.d.ts.map +1 -0
  100. package/dist/editor.js +6 -0
  101. package/dist/editor.js.map +1 -0
  102. package/dist/guard-corpus.d.ts +63 -0
  103. package/dist/guard-corpus.d.ts.map +1 -0
  104. package/dist/index.d.ts +112 -0
  105. package/dist/index.d.ts.map +1 -0
  106. package/dist/index.js +696 -0
  107. package/dist/index.js.map +1 -0
  108. package/dist/layouts/section.d.ts +166 -0
  109. package/dist/layouts/section.d.ts.map +1 -0
  110. package/dist/layouts/section.js +153 -0
  111. package/dist/layouts/section.js.map +1 -0
  112. package/dist/layouts/shell.d.ts +128 -0
  113. package/dist/layouts/shell.d.ts.map +1 -0
  114. package/dist/layouts/shell.js +107 -0
  115. package/dist/layouts/shell.js.map +1 -0
  116. package/dist/lib/cn.d.ts +4 -0
  117. package/dist/lib/cn.d.ts.map +1 -0
  118. package/dist/lib/cn.js +9 -0
  119. package/dist/lib/cn.js.map +1 -0
  120. package/dist/lib/is-active-path.d.ts +13 -0
  121. package/dist/lib/is-active-path.d.ts.map +1 -0
  122. package/dist/lib/is-active-path.js +7 -0
  123. package/dist/lib/is-active-path.js.map +1 -0
  124. package/dist/lib/theme-tick.d.ts +37 -0
  125. package/dist/lib/theme-tick.d.ts.map +1 -0
  126. package/dist/lib/theme-tick.js +30 -0
  127. package/dist/lib/theme-tick.js.map +1 -0
  128. package/dist/lib/token-color.d.ts +74 -0
  129. package/dist/lib/token-color.d.ts.map +1 -0
  130. package/dist/lib/token-color.js +35 -0
  131. package/dist/lib/token-color.js.map +1 -0
  132. package/dist/lib/use-is-mobile.d.ts +2 -0
  133. package/dist/lib/use-is-mobile.d.ts.map +1 -0
  134. package/dist/lib/use-is-mobile.js +17 -0
  135. package/dist/lib/use-is-mobile.js.map +1 -0
  136. package/dist/shark-parity.divergences.d.ts +104 -0
  137. package/dist/shark-parity.divergences.d.ts.map +1 -0
  138. package/dist/simples/FacetFilter.d.ts +57 -0
  139. package/dist/simples/FacetFilter.d.ts.map +1 -0
  140. package/dist/simples/FacetFilter.js +167 -0
  141. package/dist/simples/FacetFilter.js.map +1 -0
  142. package/dist/simples/FieldArray.d.ts +42 -0
  143. package/dist/simples/FieldArray.d.ts.map +1 -0
  144. package/dist/simples/FieldArray.js +76 -0
  145. package/dist/simples/FieldArray.js.map +1 -0
  146. package/dist/simples/Link.d.ts +38 -0
  147. package/dist/simples/Link.d.ts.map +1 -0
  148. package/dist/simples/Link.js +24 -0
  149. package/dist/simples/Link.js.map +1 -0
  150. package/dist/simples/accordion.d.ts +8 -0
  151. package/dist/simples/accordion.d.ts.map +1 -0
  152. package/dist/simples/accordion.js +78 -0
  153. package/dist/simples/accordion.js.map +1 -0
  154. package/dist/simples/action-bar.d.ts +101 -0
  155. package/dist/simples/action-bar.d.ts.map +1 -0
  156. package/dist/simples/action-bar.js +195 -0
  157. package/dist/simples/action-bar.js.map +1 -0
  158. package/dist/simples/alert-dialog.d.ts +24 -0
  159. package/dist/simples/alert-dialog.d.ts.map +1 -0
  160. package/dist/simples/alert-dialog.js +43 -0
  161. package/dist/simples/alert-dialog.js.map +1 -0
  162. package/dist/simples/alert.d.ts +36 -0
  163. package/dist/simples/alert.d.ts.map +1 -0
  164. package/dist/simples/alert.js +123 -0
  165. package/dist/simples/alert.js.map +1 -0
  166. package/dist/simples/avatar.d.ts +37 -0
  167. package/dist/simples/avatar.d.ts.map +1 -0
  168. package/dist/simples/avatar.js +133 -0
  169. package/dist/simples/avatar.js.map +1 -0
  170. package/dist/simples/badge.d.ts +66 -0
  171. package/dist/simples/badge.d.ts.map +1 -0
  172. package/dist/simples/badge.js +138 -0
  173. package/dist/simples/badge.js.map +1 -0
  174. package/dist/simples/breadcrumb.d.ts +19 -0
  175. package/dist/simples/breadcrumb.d.ts.map +1 -0
  176. package/dist/simples/breadcrumb.js +107 -0
  177. package/dist/simples/breadcrumb.js.map +1 -0
  178. package/dist/simples/button-group.d.ts +19 -0
  179. package/dist/simples/button-group.d.ts.map +1 -0
  180. package/dist/simples/button-group.js +69 -0
  181. package/dist/simples/button-group.js.map +1 -0
  182. package/dist/simples/button.d.ts +148 -0
  183. package/dist/simples/button.d.ts.map +1 -0
  184. package/dist/simples/button.js +157 -0
  185. package/dist/simples/button.js.map +1 -0
  186. package/dist/simples/calendar.d.ts +45 -0
  187. package/dist/simples/calendar.d.ts.map +1 -0
  188. package/dist/simples/calendar.js +342 -0
  189. package/dist/simples/calendar.js.map +1 -0
  190. package/dist/simples/card.d.ts +43 -0
  191. package/dist/simples/card.d.ts.map +1 -0
  192. package/dist/simples/card.js +151 -0
  193. package/dist/simples/card.js.map +1 -0
  194. package/dist/simples/checkbox.d.ts +25 -0
  195. package/dist/simples/checkbox.d.ts.map +1 -0
  196. package/dist/simples/checkbox.js +103 -0
  197. package/dist/simples/checkbox.js.map +1 -0
  198. package/dist/simples/client-only.d.ts +3 -0
  199. package/dist/simples/client-only.d.ts.map +1 -0
  200. package/dist/simples/client-only.js +7 -0
  201. package/dist/simples/client-only.js.map +1 -0
  202. package/dist/simples/clipboard.d.ts +11 -0
  203. package/dist/simples/clipboard.d.ts.map +1 -0
  204. package/dist/simples/clipboard.js +99 -0
  205. package/dist/simples/clipboard.js.map +1 -0
  206. package/dist/simples/collapsible.d.ts +8 -0
  207. package/dist/simples/collapsible.d.ts.map +1 -0
  208. package/dist/simples/collapsible.js +79 -0
  209. package/dist/simples/collapsible.js.map +1 -0
  210. package/dist/simples/color-picker.d.ts +62 -0
  211. package/dist/simples/color-picker.d.ts.map +1 -0
  212. package/dist/simples/color-picker.js +391 -0
  213. package/dist/simples/color-picker.js.map +1 -0
  214. package/dist/simples/combobox.d.ts +66 -0
  215. package/dist/simples/combobox.d.ts.map +1 -0
  216. package/dist/simples/combobox.js +230 -0
  217. package/dist/simples/combobox.js.map +1 -0
  218. package/dist/simples/command.d.ts +45 -0
  219. package/dist/simples/command.d.ts.map +1 -0
  220. package/dist/simples/command.js +180 -0
  221. package/dist/simples/command.js.map +1 -0
  222. package/dist/simples/data-list.d.ts +25 -0
  223. package/dist/simples/data-list.d.ts.map +1 -0
  224. package/dist/simples/data-list.js +62 -0
  225. package/dist/simples/data-list.js.map +1 -0
  226. package/dist/simples/date-picker.d.ts +16 -0
  227. package/dist/simples/date-picker.d.ts.map +1 -0
  228. package/dist/simples/date-picker.js +117 -0
  229. package/dist/simples/date-picker.js.map +1 -0
  230. package/dist/simples/diagnostic.d.ts +138 -0
  231. package/dist/simples/diagnostic.d.ts.map +1 -0
  232. package/dist/simples/diagnostic.js +288 -0
  233. package/dist/simples/diagnostic.js.map +1 -0
  234. package/dist/simples/dialog.d.ts +100 -0
  235. package/dist/simples/dialog.d.ts.map +1 -0
  236. package/dist/simples/dialog.js +267 -0
  237. package/dist/simples/dialog.js.map +1 -0
  238. package/dist/simples/download-trigger.d.ts +3 -0
  239. package/dist/simples/download-trigger.d.ts.map +1 -0
  240. package/dist/simples/download-trigger.js +7 -0
  241. package/dist/simples/download-trigger.js.map +1 -0
  242. package/dist/simples/editable.d.ts +23 -0
  243. package/dist/simples/editable.d.ts.map +1 -0
  244. package/dist/simples/editable.js +70 -0
  245. package/dist/simples/editable.js.map +1 -0
  246. package/dist/simples/field.d.ts +58 -0
  247. package/dist/simples/field.d.ts.map +1 -0
  248. package/dist/simples/field.js +285 -0
  249. package/dist/simples/field.js.map +1 -0
  250. package/dist/simples/file-upload.d.ts +19 -0
  251. package/dist/simples/file-upload.d.ts.map +1 -0
  252. package/dist/simples/file-upload.js +192 -0
  253. package/dist/simples/file-upload.js.map +1 -0
  254. package/dist/simples/float.d.ts +45 -0
  255. package/dist/simples/float.d.ts.map +1 -0
  256. package/dist/simples/float.js +40 -0
  257. package/dist/simples/float.js.map +1 -0
  258. package/dist/simples/floating-panel.d.ts +25 -0
  259. package/dist/simples/floating-panel.d.ts.map +1 -0
  260. package/dist/simples/floating-panel.js +95 -0
  261. package/dist/simples/floating-panel.js.map +1 -0
  262. package/dist/simples/highlight.d.ts +6 -0
  263. package/dist/simples/highlight.d.ts.map +1 -0
  264. package/dist/simples/highlight.js +24 -0
  265. package/dist/simples/highlight.js.map +1 -0
  266. package/dist/simples/hover-card.d.ts +11 -0
  267. package/dist/simples/hover-card.d.ts.map +1 -0
  268. package/dist/simples/hover-card.js +83 -0
  269. package/dist/simples/hover-card.js.map +1 -0
  270. package/dist/simples/image-cropper.d.ts +17 -0
  271. package/dist/simples/image-cropper.d.ts.map +1 -0
  272. package/dist/simples/image-cropper.js +139 -0
  273. package/dist/simples/image-cropper.js.map +1 -0
  274. package/dist/simples/input-group.d.ts +116 -0
  275. package/dist/simples/input-group.d.ts.map +1 -0
  276. package/dist/simples/input-group.js +245 -0
  277. package/dist/simples/input-group.js.map +1 -0
  278. package/dist/simples/input.d.ts +26 -0
  279. package/dist/simples/input.d.ts.map +1 -0
  280. package/dist/simples/input.js +60 -0
  281. package/dist/simples/input.js.map +1 -0
  282. package/dist/simples/item.d.ts +72 -0
  283. package/dist/simples/item.d.ts.map +1 -0
  284. package/dist/simples/item.js +180 -0
  285. package/dist/simples/item.js.map +1 -0
  286. package/dist/simples/json-tree-view.d.ts +7 -0
  287. package/dist/simples/json-tree-view.d.ts.map +1 -0
  288. package/dist/simples/json-tree-view.js +71 -0
  289. package/dist/simples/json-tree-view.js.map +1 -0
  290. package/dist/simples/kbd.d.ts +25 -0
  291. package/dist/simples/kbd.d.ts.map +1 -0
  292. package/dist/simples/kbd.js +50 -0
  293. package/dist/simples/kbd.js.map +1 -0
  294. package/dist/simples/listbox.d.ts +46 -0
  295. package/dist/simples/listbox.d.ts.map +1 -0
  296. package/dist/simples/listbox.js +218 -0
  297. package/dist/simples/listbox.js.map +1 -0
  298. package/dist/simples/menu.d.ts +60 -0
  299. package/dist/simples/menu.d.ts.map +1 -0
  300. package/dist/simples/menu.js +294 -0
  301. package/dist/simples/menu.js.map +1 -0
  302. package/dist/simples/native-select.d.ts +36 -0
  303. package/dist/simples/native-select.d.ts.map +1 -0
  304. package/dist/simples/native-select.js +77 -0
  305. package/dist/simples/native-select.js.map +1 -0
  306. package/dist/simples/number-input.d.ts +35 -0
  307. package/dist/simples/number-input.d.ts.map +1 -0
  308. package/dist/simples/number-input.js +142 -0
  309. package/dist/simples/number-input.js.map +1 -0
  310. package/dist/simples/pagination.d.ts +11 -0
  311. package/dist/simples/pagination.d.ts.map +1 -0
  312. package/dist/simples/pagination.js +78 -0
  313. package/dist/simples/pagination.js.map +1 -0
  314. package/dist/simples/password-input.d.ts +23 -0
  315. package/dist/simples/password-input.d.ts.map +1 -0
  316. package/dist/simples/password-input.js +90 -0
  317. package/dist/simples/password-input.js.map +1 -0
  318. package/dist/simples/pin-input.d.ts +30 -0
  319. package/dist/simples/pin-input.d.ts.map +1 -0
  320. package/dist/simples/pin-input.js +71 -0
  321. package/dist/simples/pin-input.js.map +1 -0
  322. package/dist/simples/popover.d.ts +42 -0
  323. package/dist/simples/popover.d.ts.map +1 -0
  324. package/dist/simples/popover.js +188 -0
  325. package/dist/simples/popover.js.map +1 -0
  326. package/dist/simples/progress.d.ts +23 -0
  327. package/dist/simples/progress.d.ts.map +1 -0
  328. package/dist/simples/progress.js +82 -0
  329. package/dist/simples/progress.js.map +1 -0
  330. package/dist/simples/prose.d.ts +17 -0
  331. package/dist/simples/prose.d.ts.map +1 -0
  332. package/dist/simples/prose.js +18 -0
  333. package/dist/simples/prose.js.map +1 -0
  334. package/dist/simples/radio-group.d.ts +23 -0
  335. package/dist/simples/radio-group.d.ts.map +1 -0
  336. package/dist/simples/radio-group.js +149 -0
  337. package/dist/simples/radio-group.js.map +1 -0
  338. package/dist/simples/rating.d.ts +10 -0
  339. package/dist/simples/rating.d.ts.map +1 -0
  340. package/dist/simples/rating.js +81 -0
  341. package/dist/simples/rating.js.map +1 -0
  342. package/dist/simples/resizable.d.ts +16 -0
  343. package/dist/simples/resizable.d.ts.map +1 -0
  344. package/dist/simples/resizable.js +57 -0
  345. package/dist/simples/resizable.js.map +1 -0
  346. package/dist/simples/scroll-area.d.ts +23 -0
  347. package/dist/simples/scroll-area.d.ts.map +1 -0
  348. package/dist/simples/scroll-area.js +88 -0
  349. package/dist/simples/scroll-area.js.map +1 -0
  350. package/dist/simples/segment-group.d.ts +27 -0
  351. package/dist/simples/segment-group.d.ts.map +1 -0
  352. package/dist/simples/segment-group.js +129 -0
  353. package/dist/simples/segment-group.js.map +1 -0
  354. package/dist/simples/select.d.ts +34 -0
  355. package/dist/simples/select.d.ts.map +1 -0
  356. package/dist/simples/select.js +258 -0
  357. package/dist/simples/select.js.map +1 -0
  358. package/dist/simples/separator.d.ts +12 -0
  359. package/dist/simples/separator.d.ts.map +1 -0
  360. package/dist/simples/separator.js +27 -0
  361. package/dist/simples/separator.js.map +1 -0
  362. package/dist/simples/sheet.d.ts +94 -0
  363. package/dist/simples/sheet.d.ts.map +1 -0
  364. package/dist/simples/sheet.js +172 -0
  365. package/dist/simples/sheet.js.map +1 -0
  366. package/dist/simples/show.d.ts +10 -0
  367. package/dist/simples/show.d.ts.map +1 -0
  368. package/dist/simples/show.js +9 -0
  369. package/dist/simples/show.js.map +1 -0
  370. package/dist/simples/skeleton.d.ts +3 -0
  371. package/dist/simples/skeleton.d.ts.map +1 -0
  372. package/dist/simples/skeleton.js +23 -0
  373. package/dist/simples/skeleton.js.map +1 -0
  374. package/dist/simples/skip-nav.d.ts +54 -0
  375. package/dist/simples/skip-nav.d.ts.map +1 -0
  376. package/dist/simples/skip-nav.js +42 -0
  377. package/dist/simples/skip-nav.js.map +1 -0
  378. package/dist/simples/slider.d.ts +29 -0
  379. package/dist/simples/slider.d.ts.map +1 -0
  380. package/dist/simples/slider.js +189 -0
  381. package/dist/simples/slider.js.map +1 -0
  382. package/dist/simples/spinner.d.ts +2 -0
  383. package/dist/simples/spinner.d.ts.map +1 -0
  384. package/dist/simples/spinner.js +20 -0
  385. package/dist/simples/spinner.js.map +1 -0
  386. package/dist/simples/stat-tile.d.ts +31 -0
  387. package/dist/simples/stat-tile.d.ts.map +1 -0
  388. package/dist/simples/stat-tile.js +64 -0
  389. package/dist/simples/stat-tile.js.map +1 -0
  390. package/dist/simples/status.d.ts +48 -0
  391. package/dist/simples/status.d.ts.map +1 -0
  392. package/dist/simples/status.js +57 -0
  393. package/dist/simples/status.js.map +1 -0
  394. package/dist/simples/steps.d.ts +20 -0
  395. package/dist/simples/steps.d.ts.map +1 -0
  396. package/dist/simples/steps.js +171 -0
  397. package/dist/simples/steps.js.map +1 -0
  398. package/dist/simples/suggestions.d.ts +43 -0
  399. package/dist/simples/suggestions.d.ts.map +1 -0
  400. package/dist/simples/suggestions.js +38 -0
  401. package/dist/simples/suggestions.js.map +1 -0
  402. package/dist/simples/swatch.d.ts +73 -0
  403. package/dist/simples/swatch.d.ts.map +1 -0
  404. package/dist/simples/swatch.js +35 -0
  405. package/dist/simples/swatch.js.map +1 -0
  406. package/dist/simples/switch.d.ts +5 -0
  407. package/dist/simples/switch.d.ts.map +1 -0
  408. package/dist/simples/switch.js +71 -0
  409. package/dist/simples/switch.js.map +1 -0
  410. package/dist/simples/table.d.ts +55 -0
  411. package/dist/simples/table.d.ts.map +1 -0
  412. package/dist/simples/table.js +166 -0
  413. package/dist/simples/table.js.map +1 -0
  414. package/dist/simples/tabs.d.ts +55 -0
  415. package/dist/simples/tabs.d.ts.map +1 -0
  416. package/dist/simples/tabs.js +133 -0
  417. package/dist/simples/tabs.js.map +1 -0
  418. package/dist/simples/tags-input.d.ts +64 -0
  419. package/dist/simples/tags-input.d.ts.map +1 -0
  420. package/dist/simples/tags-input.js +228 -0
  421. package/dist/simples/tags-input.js.map +1 -0
  422. package/dist/simples/textarea.d.ts +6 -0
  423. package/dist/simples/textarea.d.ts.map +1 -0
  424. package/dist/simples/textarea.js +34 -0
  425. package/dist/simples/textarea.js.map +1 -0
  426. package/dist/simples/toast.d.ts +20 -0
  427. package/dist/simples/toast.d.ts.map +1 -0
  428. package/dist/simples/toast.js +127 -0
  429. package/dist/simples/toast.js.map +1 -0
  430. package/dist/simples/toggle-group.d.ts +20 -0
  431. package/dist/simples/toggle-group.d.ts.map +1 -0
  432. package/dist/simples/toggle-group.js +82 -0
  433. package/dist/simples/toggle-group.js.map +1 -0
  434. package/dist/simples/toggle.d.ts +35 -0
  435. package/dist/simples/toggle.d.ts.map +1 -0
  436. package/dist/simples/toggle.js +57 -0
  437. package/dist/simples/toggle.js.map +1 -0
  438. package/dist/simples/tooltip.d.ts +8 -0
  439. package/dist/simples/tooltip.d.ts.map +1 -0
  440. package/dist/simples/tooltip.js +80 -0
  441. package/dist/simples/tooltip.js.map +1 -0
  442. package/dist/simples/tour.d.ts +81 -0
  443. package/dist/simples/tour.d.ts.map +1 -0
  444. package/dist/simples/tour.js +253 -0
  445. package/dist/simples/tour.js.map +1 -0
  446. package/dist/simples/tree-view.d.ts +64 -0
  447. package/dist/simples/tree-view.d.ts.map +1 -0
  448. package/dist/simples/tree-view.js +300 -0
  449. package/dist/simples/tree-view.js.map +1 -0
  450. package/dist/styles.css +2 -0
  451. package/dist/table/data-table-content.d.ts +18 -0
  452. package/dist/table/data-table-content.d.ts.map +1 -0
  453. package/dist/table/data-table-content.js +53 -0
  454. package/dist/table/data-table-content.js.map +1 -0
  455. package/dist/table/data-table-pagination.d.ts +8 -0
  456. package/dist/table/data-table-pagination.d.ts.map +1 -0
  457. package/dist/table/data-table-pagination.js +65 -0
  458. package/dist/table/data-table-pagination.js.map +1 -0
  459. package/dist/table/data-table-root.d.ts +10 -0
  460. package/dist/table/data-table-root.d.ts.map +1 -0
  461. package/dist/table/data-table-root.js +21 -0
  462. package/dist/table/data-table-root.js.map +1 -0
  463. package/dist/table/data-table-toolbar.d.ts +44 -0
  464. package/dist/table/data-table-toolbar.d.ts.map +1 -0
  465. package/dist/table/data-table-toolbar.js +87 -0
  466. package/dist/table/data-table-toolbar.js.map +1 -0
  467. package/dist/table/select-column.d.ts +16 -0
  468. package/dist/table/select-column.d.ts.map +1 -0
  469. package/dist/table/select-column.js +39 -0
  470. package/dist/table/select-column.js.map +1 -0
  471. package/dist/table/sortableHeader.d.ts +25 -0
  472. package/dist/table/sortableHeader.d.ts.map +1 -0
  473. package/dist/table/sortableHeader.js +43 -0
  474. package/dist/table/sortableHeader.js.map +1 -0
  475. package/dist/table/use-data-table.d.ts +40 -0
  476. package/dist/table/use-data-table.d.ts.map +1 -0
  477. package/dist/table/use-data-table.js +65 -0
  478. package/dist/table/use-data-table.js.map +1 -0
  479. package/dist/table.d.ts +15 -0
  480. package/dist/table.d.ts.map +1 -0
  481. package/dist/table.js +22 -0
  482. package/dist/table.js.map +1 -0
  483. package/dist/theme/KanzoTheme.d.ts +74 -0
  484. package/dist/theme/KanzoTheme.d.ts.map +1 -0
  485. package/dist/theme/KanzoTheme.js +61 -0
  486. package/dist/theme/KanzoTheme.js.map +1 -0
  487. package/dist/theme/KanzoThemeProvider.d.ts +144 -0
  488. package/dist/theme/KanzoThemeProvider.d.ts.map +1 -0
  489. package/dist/theme/KanzoThemeProvider.js +271 -0
  490. package/dist/theme/KanzoThemeProvider.js.map +1 -0
  491. package/dist/theme/theme-context.d.ts +146 -0
  492. package/dist/theme/theme-context.d.ts.map +1 -0
  493. package/dist/theme/theme-context.js +18 -0
  494. package/dist/theme/theme-context.js.map +1 -0
  495. package/dist/theme/theme-script.d.ts +17 -0
  496. package/dist/theme/theme-script.d.ts.map +1 -0
  497. package/dist/theme/theme-script.js +16 -0
  498. package/dist/theme/theme-script.js.map +1 -0
  499. package/package.json +201 -0
@@ -0,0 +1,53 @@
1
+ "use client";
2
+ import { jsx as t, jsxs as x } from "react/jsx-runtime";
3
+ import { flexRender as i } from "@tanstack/react-table";
4
+ import { cn as C } from "../lib/cn.js";
5
+ import { Table as T, TableHeader as D, TableRow as n, TableHead as v, TableBody as w, TableCell as d, TableFooter as y } from "../simples/table.js";
6
+ import { useDataTableContext as k } from "./data-table-root.js";
7
+ const H = (a) => a ? "overflow-clip" : "overflow-hidden";
8
+ function j(a) {
9
+ const {
10
+ empty: u = "No results.",
11
+ onRowClick: l,
12
+ className: f,
13
+ stickyHeader: c = !1,
14
+ maxHeight: s,
15
+ ...h
16
+ } = a, r = k(), p = c && s === void 0, m = r.getRowModel().rows, b = r.getVisibleLeafColumns().length || 1, g = r.getFooterGroups().some((o) => o.headers.some((e) => e.column.columnDef.footer));
17
+ return /* @__PURE__ */ t(
18
+ "div",
19
+ {
20
+ className: C(H(p), "rounded-lg border border-border", f),
21
+ "data-slot": "data-table-content",
22
+ children: /* @__PURE__ */ x(T, { maxHeight: s, stickyHeader: c, ...h, children: [
23
+ /* @__PURE__ */ t(D, { children: r.getHeaderGroups().map((o) => /* @__PURE__ */ t(n, { children: o.headers.map((e) => /* @__PURE__ */ t(v, { children: e.isPlaceholder ? null : i(e.column.columnDef.header, e.getContext()) }, e.id)) }, o.id)) }),
24
+ /* @__PURE__ */ t(w, { children: m.length ? m.map((o) => /* @__PURE__ */ t(
25
+ n,
26
+ {
27
+ className: l ? "cursor-pointer" : void 0,
28
+ "data-state": o.getIsSelected() ? "selected" : void 0,
29
+ onClick: l ? () => l(o.original) : void 0,
30
+ onKeyDown: l ? (e) => {
31
+ e.target === e.currentTarget && (e.key !== "Enter" && e.key !== " " || (e.preventDefault(), l(o.original)));
32
+ } : void 0,
33
+ tabIndex: l ? 0 : void 0,
34
+ children: o.getVisibleCells().map((e) => /* @__PURE__ */ t(d, { children: i(e.column.columnDef.cell, e.getContext()) }, e.id))
35
+ },
36
+ o.id
37
+ )) : /* @__PURE__ */ t(n, { children: /* @__PURE__ */ t(
38
+ d,
39
+ {
40
+ className: "h-24 whitespace-normal text-center text-muted-foreground",
41
+ colSpan: b,
42
+ children: u
43
+ }
44
+ ) }) }),
45
+ g && /* @__PURE__ */ t(y, { children: r.getFooterGroups().map((o) => /* @__PURE__ */ t(n, { children: o.headers.map((e) => /* @__PURE__ */ t(d, { children: e.isPlaceholder ? null : i(e.column.columnDef.footer, e.getContext()) }, e.id)) }, o.id)) })
46
+ ] })
47
+ }
48
+ );
49
+ }
50
+ export {
51
+ j as DataTableContent
52
+ };
53
+ //# sourceMappingURL=data-table-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-content.js","sources":["../../src/table/data-table-content.tsx"],"sourcesContent":["\"use client\";\n\nimport { flexRender } from \"@tanstack/react-table\";\nimport type React from \"react\";\nimport { cn } from \"../lib/cn.js\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../simples/table.js\";\nimport { useDataTableContext } from \"./data-table-root.js\";\n\nexport interface DataTableContentProps<TData = unknown>\n extends Omit<React.ComponentProps<typeof Table>, \"children\"> {\n /** Shown in place of the body when there are no rows. */\n empty?: React.ReactNode;\n /** Row activation. Cells that stop propagation still win. */\n onRowClick?: (row: TData) => void;\n /** Applied to the bordered box; the remaining props reach the `<table>`. */\n className?: string;\n}\n\n/**\n * `clip` rather than `hidden`, but only when the header pins to the ENCLOSING region: `hidden`\n * makes this box a scroll container, so a sticky `th` would pin to it instead of to whatever\n * scrolls. `clip` still clips the rounded corners without being one, so the stickiness passes\n * through. Given a `maxHeight` the wrapper inside is the scroll container, and this box is back to\n * being nothing but a border.\n */\nconst boxOverflow = (regionScrolled: boolean) =>\n regionScrolled ? \"overflow-clip\" : \"overflow-hidden\";\n\n/**\n * ARIA contract for `onRowClick`: a `<tr>` is not an interactive role, so the row is made\n * reachable (`tabIndex=0`) and activatable (Enter/Space) rather than being a mouse-only\n * target. Activation is ignored when the key lands on a control inside the row, which keeps\n * a button or checkbox cell behaving as itself.\n */\nexport function DataTableContent<TData = unknown>(props: DataTableContentProps<TData>) {\n const {\n empty = \"No results.\",\n onRowClick,\n className,\n stickyHeader = false,\n maxHeight,\n ...rest\n } = props;\n const table = useDataTableContext<TData>();\n const regionScrolled = stickyHeader && maxHeight === undefined;\n\n const rows = table.getRowModel().rows;\n const colSpan = table.getVisibleLeafColumns().length || 1;\n const hasFooter = table\n .getFooterGroups()\n .some((group) => group.headers.some((header) => header.column.columnDef.footer));\n\n return (\n <div\n className={cn(boxOverflow(regionScrolled), \"rounded-lg border border-border\", className)}\n data-slot=\"data-table-content\"\n >\n <Table maxHeight={maxHeight} stickyHeader={stickyHeader} {...rest}>\n <TableHeader>\n {table.getHeaderGroups().map((group) => (\n <TableRow key={group.id}>\n {group.headers.map((header) => (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n\n <TableBody>\n {rows.length ? (\n rows.map((row) => (\n <TableRow\n className={onRowClick ? \"cursor-pointer\" : undefined}\n data-state={row.getIsSelected() ? \"selected\" : undefined}\n key={row.id}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n onKeyDown={\n onRowClick\n ? (event) => {\n if (event.target !== event.currentTarget) return;\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n onRowClick(row.original);\n }\n : undefined\n }\n tabIndex={onRowClick ? 0 : undefined}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n className=\"h-24 whitespace-normal text-center text-muted-foreground\"\n colSpan={colSpan}\n >\n {empty}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n\n {/* Only render a <tfoot> when a column actually defines a `footer` — TanStack's\n getFooterGroups() always returns groups, so an unguarded map would emit an empty\n footer row on every table. */}\n {hasFooter && (\n <TableFooter>\n {table.getFooterGroups().map((group) => (\n <TableRow key={group.id}>\n {group.headers.map((header) => (\n <TableCell key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.footer, header.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableFooter>\n )}\n </Table>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;AAiCA;AASO;AACL;AAAM;AACI;AACR;AACA;AACe;AACf;AACG;AAWL;AACE;AAAC;AAAA;AACwF;AAC7E;AAGR;AAYA;AAKM;AAAC;AAAA;AAC4C;AACI;AAEQ;AAI/C;AAGuB;AAEzB;AAEqB;AAM1B;AAAA;AAlBQ;AAuBX;AAAC;AAAA;AACW;AACV;AAEC;AAAA;AAIT;AAkBE;AAEJ;AAAA;AAGN;;;;"}
@@ -0,0 +1,8 @@
1
+ import { ark } from '@ark-ui/react/factory';
2
+ import { default as React } from 'react';
3
+ export interface DataTablePaginationProps extends React.ComponentProps<typeof ark.div> {
4
+ /** Offer a rows-per-page selector with these sizes. Omitted = no selector. */
5
+ pageSizes?: number[];
6
+ }
7
+ export declare const DataTablePagination: (props: DataTablePaginationProps) => React.JSX.Element | null;
8
+ //# sourceMappingURL=data-table-pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-pagination.d.ts","sourceRoot":"","sources":["../../src/table/data-table-pagination.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,MAAM,WAAW,wBAAyB,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC;IACpF,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,wBAAwB,6BA0DlE,CAAC"}
@@ -0,0 +1,65 @@
1
+ "use client";
2
+ import { jsxs as i, jsx as e, Fragment as d } from "react/jsx-runtime";
3
+ import { ark as u } from "@ark-ui/react/factory";
4
+ import { cn as f } from "../lib/cn.js";
5
+ import { NativeSelect as h, NativeSelectOption as P } from "../simples/native-select.js";
6
+ import { Pagination as v, PaginationPrevTrigger as x, PaginationNextTrigger as N, usePagination as b, PaginationItem as w, PaginationEllipsis as S } from "../simples/pagination.js";
7
+ import { useDataTableContext as C } from "./data-table-root.js";
8
+ const z = (l) => {
9
+ const { pageSizes: t, className: o, slot: c, ...m } = l, a = C(), { pageIndex: p, pageSize: s } = a.getState().pagination, r = a.getFilteredSelectedRowModel().rows.length, g = a.getPageCount() > 1;
10
+ return !g && r === 0 && !t ? null : /* @__PURE__ */ i(
11
+ u.div,
12
+ {
13
+ className: f("flex items-center gap-3", o),
14
+ ...m,
15
+ "data-slot": c ?? "data-table-pagination",
16
+ children: [
17
+ r > 0 && /* @__PURE__ */ i("span", { className: "text-muted-foreground text-sm", "data-slot": "data-table-selected-count", children: [
18
+ r,
19
+ " of ",
20
+ a.getFilteredRowModel().rows.length,
21
+ " row(s) selected."
22
+ ] }),
23
+ /* @__PURE__ */ i("div", { className: "ms-auto flex items-center gap-3", children: [
24
+ t && /* @__PURE__ */ i("div", { className: "flex items-center gap-2", children: [
25
+ /* @__PURE__ */ e("span", { className: "text-muted-foreground text-sm", children: "Rows per page" }),
26
+ /* @__PURE__ */ e(
27
+ h,
28
+ {
29
+ "aria-label": "Rows per page",
30
+ onChange: (n) => a.setPageSize(Number(n.target.value)),
31
+ size: "sm",
32
+ value: s,
33
+ children: t.map((n) => /* @__PURE__ */ e(P, { value: n, children: n }, n))
34
+ }
35
+ )
36
+ ] }),
37
+ g && /* @__PURE__ */ i(
38
+ v,
39
+ {
40
+ count: a.getRowCount(),
41
+ onPageChange: (n) => a.setPageIndex(n.page - 1),
42
+ page: p + 1,
43
+ pageSize: s,
44
+ children: [
45
+ /* @__PURE__ */ e(x, {}),
46
+ /* @__PURE__ */ e(R, {}),
47
+ /* @__PURE__ */ e(N, {})
48
+ ]
49
+ }
50
+ )
51
+ ] })
52
+ ]
53
+ }
54
+ );
55
+ };
56
+ function R() {
57
+ const l = b();
58
+ return /* @__PURE__ */ e(d, { children: l.pages.map(
59
+ (t, o) => t.type === "page" ? /* @__PURE__ */ e(w, { type: "page", value: t.value, children: t.value }, t.value) : /* @__PURE__ */ e(S, { index: o }, `ellipsis-${o}`)
60
+ ) });
61
+ }
62
+ export {
63
+ z as DataTablePagination
64
+ };
65
+ //# sourceMappingURL=data-table-pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-pagination.js","sources":["../../src/table/data-table-pagination.tsx"],"sourcesContent":["\"use client\";\n\nimport { ark } from \"@ark-ui/react/factory\";\nimport type React from \"react\";\nimport { cn } from \"../lib/cn.js\";\nimport { NativeSelect, NativeSelectOption } from \"../simples/native-select.js\";\nimport {\n Pagination,\n PaginationEllipsis,\n PaginationItem,\n PaginationNextTrigger,\n PaginationPrevTrigger,\n usePagination,\n} from \"../simples/pagination.js\";\nimport { useDataTableContext } from \"./data-table-root.js\";\n\nexport interface DataTablePaginationProps extends React.ComponentProps<typeof ark.div> {\n /** Offer a rows-per-page selector with these sizes. Omitted = no selector. */\n pageSizes?: number[];\n}\n\nexport const DataTablePagination = (props: DataTablePaginationProps) => {\n const { pageSizes, className, slot, ...rest } = props;\n const table = useDataTableContext();\n\n const { pageIndex, pageSize } = table.getState().pagination;\n const selected = table.getFilteredSelectedRowModel().rows.length;\n const multiPage = table.getPageCount() > 1;\n\n // Nothing to page, nothing selected, no size selector: the row would be empty chrome.\n if (!multiPage && selected === 0 && !pageSizes) return null;\n\n return (\n <ark.div\n className={cn(\"flex items-center gap-3\", className)}\n {...rest}\n data-slot={slot ?? \"data-table-pagination\"}\n >\n {selected > 0 && (\n <span className=\"text-muted-foreground text-sm\" data-slot=\"data-table-selected-count\">\n {selected} of {table.getFilteredRowModel().rows.length} row(s) selected.\n </span>\n )}\n\n <div className=\"ms-auto flex items-center gap-3\">\n {pageSizes && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground text-sm\">Rows per page</span>\n <NativeSelect\n aria-label=\"Rows per page\"\n onChange={(event) => table.setPageSize(Number(event.target.value))}\n size=\"sm\"\n value={pageSize}\n >\n {pageSizes.map((size) => (\n <NativeSelectOption key={size} value={size}>\n {size}\n </NativeSelectOption>\n ))}\n </NativeSelect>\n </div>\n )}\n\n {/* Ark is 1-based, TanStack 0-based: page = pageIndex + 1 closes the loop. */}\n {multiPage && (\n <Pagination\n count={table.getRowCount()}\n onPageChange={(details) => table.setPageIndex(details.page - 1)}\n page={pageIndex + 1}\n pageSize={pageSize}\n >\n <PaginationPrevTrigger />\n <DataTablePages />\n <PaginationNextTrigger />\n </Pagination>\n )}\n </div>\n </ark.div>\n );\n};\n\nfunction DataTablePages() {\n const pagination = usePagination();\n\n return (\n <>\n {pagination.pages.map((page, index) =>\n page.type === \"page\" ? (\n <PaginationItem key={page.value} type=\"page\" value={page.value}>\n {page.value}\n </PaginationItem>\n ) : (\n <PaginationEllipsis index={index} key={`ellipsis-${index}`} />\n ),\n )}\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAqBO;AACL;AAQA;AAGE;AAAK;AAAJ;AACmD;AAC9C;AACe;AAElB;AAEI;AAAA;AAAS;AAAsC;AAAO;AACzD;AAIC;AAEG;AAA6D;AAC7D;AAAC;AAAA;AACY;AACsD;AAC5D;AACE;AAMN;AAAA;AAAA;AAEL;AAKA;AAAC;AAAA;AACc;AACiD;AAC5C;AAClB;AAEA;AAAuB;AACP;AACO;AAAA;AAAA;AAAA;AAG7B;AAAA;AAAA;AAGN;AAEA;AACE;AAEA;AAEsB;AAM8C;AAKtE;;;;"}
@@ -0,0 +1,10 @@
1
+ import { ark } from '@ark-ui/react/factory';
2
+ import { Table } from '@tanstack/react-table';
3
+ import { default as React } from 'react';
4
+ export interface DataTableRootProps<TData> extends React.ComponentProps<typeof ark.div> {
5
+ table: Table<TData>;
6
+ }
7
+ export declare function DataTableRoot<TData>(props: DataTableRootProps<TData>): React.JSX.Element;
8
+ /** The table instance of the enclosing `DataTableRoot`, typed by the caller's row type. */
9
+ export declare function useDataTableContext<TData = unknown>(): Table<TData>;
10
+ //# sourceMappingURL=data-table-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-root.d.ts","sourceRoot":"","sources":["../../src/table/data-table-root.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,WAAW,kBAAkB,CAAC,KAAK,CAAE,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC;IACrF,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,qBAYpE;AAED,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,KAAK,GAAG,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,CAMnE"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { jsx as e } from "react/jsx-runtime";
3
+ import { ark as l } from "@ark-ui/react/factory";
4
+ import { useContext as c, createContext as i } from "react";
5
+ import { cn as m } from "../lib/cn.js";
6
+ const a = i(null);
7
+ function f(t) {
8
+ const { table: o, className: r, slot: n, ...s } = t;
9
+ return /* @__PURE__ */ e(a.Provider, { value: { table: o }, children: /* @__PURE__ */ e(l.div, { className: m("space-y-3", r), ...s, "data-slot": n ?? "data-table" }) });
10
+ }
11
+ function p() {
12
+ const t = c(a);
13
+ if (!t)
14
+ throw new Error("useDataTableContext must be used inside <DataTableRoot>");
15
+ return t.table;
16
+ }
17
+ export {
18
+ f as DataTableRoot,
19
+ p as useDataTableContext
20
+ };
21
+ //# sourceMappingURL=data-table-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-root.js","sources":["../../src/table/data-table-root.tsx"],"sourcesContent":["\"use client\";\n\nimport { ark } from \"@ark-ui/react/factory\";\nimport type { Table } from \"@tanstack/react-table\";\nimport type React from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { cn } from \"../lib/cn.js\";\n\n// React contexts cannot be generic, so the row type is erased on the way in and restored by\n// the typed reader below. Both casts live here; no consumer ever sees the `unknown`.\nconst DataTableContext = createContext<{ table: Table<unknown> } | null>(null);\n\nexport interface DataTableRootProps<TData> extends React.ComponentProps<typeof ark.div> {\n table: Table<TData>;\n}\n\nexport function DataTableRoot<TData>(props: DataTableRootProps<TData>) {\n const { table, className, slot, ...rest } = props;\n\n // Deliberately a fresh object per render, never memoised: TanStack keeps ONE table\n // instance and mutates it, so a context value of `table` alone never changes identity and\n // parts handed down as `children` (whose element reference React reuses) would keep\n // rendering the state they first saw.\n return (\n <DataTableContext.Provider value={{ table: table as unknown as Table<unknown> }}>\n <ark.div className={cn(\"space-y-3\", className)} {...rest} data-slot={slot ?? \"data-table\"} />\n </DataTableContext.Provider>\n );\n}\n\n/** The table instance of the enclosing `DataTableRoot`, typed by the caller's row type. */\nexport function useDataTableContext<TData = unknown>(): Table<TData> {\n const context = useContext(DataTableContext);\n if (!context) {\n throw new Error(\"useDataTableContext must be used inside <DataTableRoot>\");\n }\n return context.table as unknown as Table<TData>;\n}\n"],"names":[],"mappings":";;;;;AAUA;AAMO;AACL;AAMA;AAKF;AAGO;AACL;AACA;AACE;AAEF;AACF;;;;;"}
@@ -0,0 +1,44 @@
1
+ import { ark } from '@ark-ui/react/factory';
2
+ import { default as React } from 'react';
3
+ import { Button } from '../simples/button.js';
4
+ import { InputGroupInput } from '../simples/input-group.js';
5
+ export declare const DataTableToolbar: (props: React.ComponentProps<typeof ark.div>) => React.JSX.Element;
6
+ export interface DataTableSearchProps extends Omit<React.ComponentProps<typeof InputGroupInput>, "onChange" | "value"> {
7
+ /** Column id to filter on. Omit to drive the table's global filter instead. */
8
+ column?: string;
9
+ }
10
+ /** `className` sizes the input group (the visible box); everything else lands on the input. */
11
+ export declare const DataTableSearch: (props: DataTableSearchProps) => React.JSX.Element;
12
+ export interface DataTableFacetOption {
13
+ icon?: React.ComponentType<{
14
+ className?: string;
15
+ }>;
16
+ label?: React.ReactNode;
17
+ value: string;
18
+ }
19
+ export interface DataTableFacetFilterProps extends Omit<React.ComponentProps<typeof Button>, "children"> {
20
+ /** Column id. Its `filterFn` must be `facetFilterFn`. */
21
+ column: string;
22
+ /** Trigger label. Defaults to the column id. */
23
+ label?: React.ReactNode;
24
+ /**
25
+ * Values to offer. Defaults to every faceted value of the column. Ordering is not yours either
26
+ * way — `FacetFilter` draws the rows by label.
27
+ */
28
+ options?: DataTableFacetOption[];
29
+ /**
30
+ * Draw a filter field above the values. Honest here: TanStack facets the rows the table already
31
+ * holds, so the field searches every value the column has, not a fetched page of them.
32
+ *
33
+ * @default false
34
+ */
35
+ searchable?: boolean;
36
+ }
37
+ /** A `FacetFilter` over one column's faceted values: TanStack on one side, the listbox on the other. */
38
+ export declare const DataTableFacetFilter: (props: DataTableFacetFilterProps) => React.JSX.Element;
39
+ export interface DataTableViewOptionsProps extends Omit<React.ComponentProps<typeof Button>, "children"> {
40
+ /** Trigger label. Default "View". */
41
+ label?: React.ReactNode;
42
+ }
43
+ export declare const DataTableViewOptions: (props: DataTableViewOptionsProps) => React.JSX.Element;
44
+ //# sourceMappingURL=data-table-toolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-toolbar.d.ts","sourceRoot":"","sources":["../../src/table/data-table-toolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAG5C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAA+B,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAUzF,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,sBAU3E,CAAC;AAEF,MAAM,WAAW,oBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAChF,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+FAA+F;AAC/F,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,sBA0B1D,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7D,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACjC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wGAAwG;AACxG,eAAO,MAAM,oBAAoB,GAAI,OAAO,yBAAyB,sBA4BpE,CAAC;AAEF,MAAM,WAAW,yBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7D,qCAAqC;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAQD,eAAO,MAAM,oBAAoB,GAAI,OAAO,yBAAyB,sBA+BpE,CAAC"}
@@ -0,0 +1,87 @@
1
+ "use client";
2
+ import { jsx as a, jsxs as d } from "react/jsx-runtime";
3
+ import { ark as g } from "@ark-ui/react/factory";
4
+ import { SearchIcon as C, Settings2Icon as v } from "lucide-react";
5
+ import { cn as p } from "../lib/cn.js";
6
+ import { Button as F } from "../simples/button.js";
7
+ import { FacetFilter as V } from "../simples/FacetFilter.js";
8
+ import { InputGroup as x, InputGroupAddon as D, InputGroupInput as I } from "../simples/input-group.js";
9
+ import { Menu as T, MenuTrigger as S, MenuContent as M, MenuGroup as k, MenuCheckboxItem as w } from "../simples/menu.js";
10
+ import { useDataTableContext as b } from "./data-table-root.js";
11
+ const U = (l) => {
12
+ const { className: t, slot: s, ...r } = l;
13
+ return /* @__PURE__ */ a(
14
+ g.div,
15
+ {
16
+ className: p("flex items-center gap-2", t),
17
+ ...r,
18
+ "data-slot": s ?? "data-table-toolbar"
19
+ }
20
+ );
21
+ }, E = (l) => {
22
+ const { column: t, className: s, placeholder: r = "Search…", ...u } = l, i = b(), e = t ? i.getColumn(t) : void 0, m = t ? (e == null ? void 0 : e.getFilterValue()) ?? "" : i.getState().globalFilter ?? "";
23
+ return /* @__PURE__ */ d(x, { className: p("h-8 max-w-xs", s), slot: "data-table-search", children: [
24
+ /* @__PURE__ */ a(D, { children: /* @__PURE__ */ a(C, {}) }),
25
+ /* @__PURE__ */ a(
26
+ I,
27
+ {
28
+ onChange: (o) => {
29
+ const c = o.target.value;
30
+ t ? e == null || e.setFilterValue(c) : i.setGlobalFilter(c);
31
+ },
32
+ placeholder: r,
33
+ value: m,
34
+ ...u
35
+ }
36
+ )
37
+ ] });
38
+ }, J = (l) => {
39
+ const { column: t, label: s, options: r, searchable: u, slot: i, ...e } = l, o = b().getColumn(t), c = /* @__PURE__ */ new Map();
40
+ for (const [n, h] of (o == null ? void 0 : o.getFacetedUniqueValues()) ?? [])
41
+ c.set(String(n), h);
42
+ const f = (r ?? [...c.keys()].map((n) => ({ value: n }))).map((n) => ({
43
+ ...n,
44
+ count: c.get(n.value)
45
+ }));
46
+ return /* @__PURE__ */ a(
47
+ V,
48
+ {
49
+ ...e,
50
+ slot: i ?? "data-table-facet-filter",
51
+ items: f,
52
+ label: s ?? t,
53
+ onValueChange: (n) => o == null ? void 0 : o.setFilterValue(n.length ? n : void 0),
54
+ searchable: u,
55
+ value: (o == null ? void 0 : o.getFilterValue()) ?? []
56
+ }
57
+ );
58
+ }, G = (l) => {
59
+ var t;
60
+ return ((t = l.columnDef.meta) == null ? void 0 : t.label) ?? (typeof l.columnDef.header == "string" ? l.columnDef.header : l.id);
61
+ }, K = (l) => {
62
+ const { label: t = "View", slot: s, ...r } = l, i = b().getAllLeafColumns().filter((e) => e.getCanHide());
63
+ return /* @__PURE__ */ d(T, { children: [
64
+ /* @__PURE__ */ a(S, { asChild: !0, children: /* @__PURE__ */ d(F, { size: "sm", variant: "outline", ...r, slot: s ?? "data-table-view-options", children: [
65
+ /* @__PURE__ */ a(v, {}),
66
+ t
67
+ ] }) }),
68
+ /* @__PURE__ */ a(M, { children: /* @__PURE__ */ a(k, { heading: "Toggle columns", children: i.map((e) => /* @__PURE__ */ a(
69
+ w,
70
+ {
71
+ checked: e.getIsVisible(),
72
+ closeOnSelect: !1,
73
+ onCheckedChange: (m) => e.toggleVisibility(m),
74
+ value: e.id,
75
+ children: G(e)
76
+ },
77
+ e.id
78
+ )) }) })
79
+ ] });
80
+ };
81
+ export {
82
+ J as DataTableFacetFilter,
83
+ E as DataTableSearch,
84
+ U as DataTableToolbar,
85
+ K as DataTableViewOptions
86
+ };
87
+ //# sourceMappingURL=data-table-toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-toolbar.js","sources":["../../src/table/data-table-toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport { ark } from \"@ark-ui/react/factory\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { SearchIcon, Settings2Icon } from \"lucide-react\";\nimport type React from \"react\";\nimport { cn } from \"../lib/cn.js\";\nimport { Button } from \"../simples/button.js\";\nimport { FacetFilter, type FacetFilterItem } from \"../simples/FacetFilter.js\";\nimport { InputGroup, InputGroupAddon, InputGroupInput } from \"../simples/input-group.js\";\nimport {\n Menu,\n MenuCheckboxItem,\n MenuContent,\n MenuGroup,\n MenuTrigger,\n} from \"../simples/menu.js\";\nimport { useDataTableContext } from \"./data-table-root.js\";\n\nexport const DataTableToolbar = (props: React.ComponentProps<typeof ark.div>) => {\n const { className, slot, ...rest } = props;\n\n return (\n <ark.div\n className={cn(\"flex items-center gap-2\", className)}\n {...rest}\n data-slot={slot ?? \"data-table-toolbar\"}\n />\n );\n};\n\nexport interface DataTableSearchProps\n extends Omit<React.ComponentProps<typeof InputGroupInput>, \"onChange\" | \"value\"> {\n /** Column id to filter on. Omit to drive the table's global filter instead. */\n column?: string;\n}\n\n/** `className` sizes the input group (the visible box); everything else lands on the input. */\nexport const DataTableSearch = (props: DataTableSearchProps) => {\n const { column, className, placeholder = \"Search…\", ...rest } = props;\n const table = useDataTableContext();\n const target = column ? table.getColumn(column) : undefined;\n\n const value = column\n ? ((target?.getFilterValue() as string | undefined) ?? \"\")\n : ((table.getState().globalFilter as string | undefined) ?? \"\");\n\n return (\n <InputGroup className={cn(\"h-8 max-w-xs\", className)} slot=\"data-table-search\">\n <InputGroupAddon>\n <SearchIcon />\n </InputGroupAddon>\n <InputGroupInput\n onChange={(event) => {\n const next = event.target.value;\n if (column) target?.setFilterValue(next);\n else table.setGlobalFilter(next);\n }}\n placeholder={placeholder}\n value={value}\n {...rest}\n />\n </InputGroup>\n );\n};\n\nexport interface DataTableFacetOption {\n icon?: React.ComponentType<{ className?: string }>;\n label?: React.ReactNode;\n value: string;\n}\n\nexport interface DataTableFacetFilterProps\n extends Omit<React.ComponentProps<typeof Button>, \"children\"> {\n /** Column id. Its `filterFn` must be `facetFilterFn`. */\n column: string;\n /** Trigger label. Defaults to the column id. */\n label?: React.ReactNode;\n /**\n * Values to offer. Defaults to every faceted value of the column. Ordering is not yours either\n * way — `FacetFilter` draws the rows by label.\n */\n options?: DataTableFacetOption[];\n /**\n * Draw a filter field above the values. Honest here: TanStack facets the rows the table already\n * holds, so the field searches every value the column has, not a fetched page of them.\n *\n * @default false\n */\n searchable?: boolean;\n}\n\n/** A `FacetFilter` over one column's faceted values: TanStack on one side, the listbox on the other. */\nexport const DataTableFacetFilter = (props: DataTableFacetFilterProps) => {\n const { column, label, options, searchable, slot, ...rest } = props;\n const table = useDataTableContext();\n const target = table.getColumn(column);\n\n // Facet keys are raw cell values; the filter carries strings, so both sides get stringified.\n const counts = new Map<string, number>();\n for (const [value, count] of target?.getFacetedUniqueValues() ?? []) {\n counts.set(String(value), count);\n }\n\n const offered = options ?? [...counts.keys()].map((value) => ({ value }));\n const items: FacetFilterItem[] = offered.map((option) => ({\n ...option,\n count: counts.get(option.value),\n }));\n\n return (\n <FacetFilter\n {...rest}\n slot={slot ?? \"data-table-facet-filter\"}\n items={items}\n label={label ?? column}\n onValueChange={(next) => target?.setFilterValue(next.length ? next : undefined)}\n searchable={searchable}\n value={(target?.getFilterValue() as string[] | undefined) ?? []}\n />\n );\n};\n\nexport interface DataTableViewOptionsProps\n extends Omit<React.ComponentProps<typeof Button>, \"children\"> {\n /** Trigger label. Default \"View\". */\n label?: React.ReactNode;\n}\n\n// `meta.label` first, because a column with a `sortableHeader` has a component for a `header` and\n// would otherwise be listed by its raw id — exactly the column someone wants to hide.\nconst columnLabel = (column: Column<unknown, unknown>) =>\n column.columnDef.meta?.label ??\n (typeof column.columnDef.header === \"string\" ? column.columnDef.header : column.id);\n\nexport const DataTableViewOptions = (props: DataTableViewOptionsProps) => {\n const { label = \"View\", slot, ...rest } = props;\n const table = useDataTableContext();\n const columns = table.getAllLeafColumns().filter((column) => column.getCanHide());\n\n return (\n <Menu>\n <MenuTrigger asChild>\n <Button size=\"sm\" variant=\"outline\" {...rest} slot={slot ?? \"data-table-view-options\"}>\n <Settings2Icon />\n {label}\n </Button>\n </MenuTrigger>\n\n <MenuContent>\n <MenuGroup heading=\"Toggle columns\">\n {columns.map((column) => (\n <MenuCheckboxItem\n checked={column.getIsVisible()}\n closeOnSelect={false}\n key={column.id}\n onCheckedChange={(checked) => column.toggleVisibility(checked)}\n value={column.id}\n >\n {columnLabel(column)}\n </MenuCheckboxItem>\n ))}\n </MenuGroup>\n </MenuContent>\n </Menu>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AAmBO;AACL;AAEA;AACE;AAAK;AAAJ;AACmD;AAC9C;AACe;AAAA;AAGzB;AAUE;AAQA;AAEI;AAEA;AACA;AAAC;AAAA;AAEG;AACA;AAC+B;AACjC;AACA;AACA;AACI;AAAA;AAAA;AAIZ;AA8BE;AAMA;AACE;AAIF;AAA0D;AACrD;AAC2B;AAGhC;AACE;AAAC;AAAA;AACK;AACU;AACd;AACgB;AACqD;AACrE;AAC6D;AAAC;AAGpE;;AAWE;AACgF;AAGhF;AAIA;AAEI;AAEI;AAAe;AACd;AAEL;AAKM;AAAC;AAAA;AACiB;AACD;AAE8C;AAC/C;AAEK;AAAA;AAJP;AAQpB;AAGN;;;;;;;"}
@@ -0,0 +1,16 @@
1
+ import { ColumnDef, Row } from '@tanstack/react-table';
2
+ export interface SelectColumnOptions<TData> {
3
+ /** aria-label for the header checkbox. */
4
+ headerLabel?: string;
5
+ /** Column id. Default "select". */
6
+ id?: string;
7
+ /** aria-label for a row checkbox. Default `Select row <n>`. */
8
+ rowLabel?: (row: Row<TData>) => string;
9
+ }
10
+ /**
11
+ * A leading checkbox column. The header reflects a partial page as `indeterminate`, and both
12
+ * checkboxes carry a real label — the visual column has no header text to borrow. The cell
13
+ * stops click propagation so it stays inert under `DataTableContent`'s `onRowClick`.
14
+ */
15
+ export declare function selectColumn<TData>(options?: SelectColumnOptions<TData>): ColumnDef<TData, unknown>;
16
+ //# sourceMappingURL=select-column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-column.d.ts","sourceRoot":"","sources":["../../src/table/select-column.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,WAAW,mBAAmB,CAAC,KAAK;IACxC,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;CACxC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAChC,OAAO,GAAE,mBAAmB,CAAC,KAAK,CAAM,GACvC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAoC3B"}
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ import { Checkbox as a } from "../simples/checkbox.js";
4
+ function g(c = {}) {
5
+ const {
6
+ headerLabel: o = "Select all rows on this page",
7
+ id: d = "select",
8
+ rowLabel: s = (e) => `Select row ${e.index + 1}`
9
+ } = c;
10
+ return {
11
+ cell: ({ row: e }) => /* @__PURE__ */ t(
12
+ a,
13
+ {
14
+ "aria-label": s(e),
15
+ checked: e.getIsSelected(),
16
+ slot: "data-table-select-row",
17
+ disabled: !e.getCanSelect(),
18
+ onCheckedChange: (l) => e.toggleSelected(l.checked === !0),
19
+ onClick: (l) => l.stopPropagation()
20
+ }
21
+ ),
22
+ enableHiding: !1,
23
+ enableSorting: !1,
24
+ header: ({ table: e }) => /* @__PURE__ */ t(
25
+ a,
26
+ {
27
+ "aria-label": o,
28
+ checked: e.getIsAllPageRowsSelected() ? !0 : e.getIsSomePageRowsSelected() ? "indeterminate" : !1,
29
+ slot: "data-table-select-all",
30
+ onCheckedChange: (l) => e.toggleAllPageRowsSelected(l.checked === !0)
31
+ }
32
+ ),
33
+ id: d
34
+ };
35
+ }
36
+ export {
37
+ g as selectColumn
38
+ };
39
+ //# sourceMappingURL=select-column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-column.js","sources":["../../src/table/select-column.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ColumnDef, Row } from \"@tanstack/react-table\";\nimport { Checkbox } from \"../simples/checkbox.js\";\n\nexport interface SelectColumnOptions<TData> {\n /** aria-label for the header checkbox. */\n headerLabel?: string;\n /** Column id. Default \"select\". */\n id?: string;\n /** aria-label for a row checkbox. Default `Select row <n>`. */\n rowLabel?: (row: Row<TData>) => string;\n}\n\n/**\n * A leading checkbox column. The header reflects a partial page as `indeterminate`, and both\n * checkboxes carry a real label — the visual column has no header text to borrow. The cell\n * stops click propagation so it stays inert under `DataTableContent`'s `onRowClick`.\n */\nexport function selectColumn<TData>(\n options: SelectColumnOptions<TData> = {},\n): ColumnDef<TData, unknown> {\n const {\n headerLabel = \"Select all rows on this page\",\n id = \"select\",\n rowLabel = (row: Row<TData>) => `Select row ${row.index + 1}`,\n } = options;\n\n return {\n cell: ({ row }) => (\n <Checkbox\n aria-label={rowLabel(row)}\n checked={row.getIsSelected()}\n slot=\"data-table-select-row\"\n disabled={!row.getCanSelect()}\n onCheckedChange={(details) => row.toggleSelected(details.checked === true)}\n onClick={(event) => event.stopPropagation()}\n />\n ),\n enableHiding: false,\n enableSorting: false,\n header: ({ table }) => (\n <Checkbox\n aria-label={headerLabel}\n checked={\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false\n }\n slot=\"data-table-select-all\"\n onCheckedChange={(details) => table.toggleAllPageRowsSelected(details.checked === true)}\n />\n ),\n id,\n };\n}\n"],"names":[],"mappings":";;;AAmBO;AAGL;AAAM;AACU;AACT;AACsD;AAG7D;AAAO;AAEH;AAAC;AAAA;AACyB;AACX;AACR;AACU;AAC0D;AAC/C;AAAgB;AAAA;AAGhC;AACC;AAEb;AAAC;AAAA;AACa;AAMJ;AAEH;AACiF;AAAA;AAAA;AAG1F;AAEJ;;;;"}
@@ -0,0 +1,25 @@
1
+ import { HeaderContext } from '@tanstack/react-table';
2
+ import { ReactNode } from 'react';
3
+ export interface SortableHeaderOptions {
4
+ /**
5
+ * Which edge the header hugs. Use `end` over end-aligned figures (`tabular-nums` money,
6
+ * counts) so the label sits above the digits. Logical: mirrors under RTL.
7
+ *
8
+ * @default "start"
9
+ */
10
+ align?: "start" | "end";
11
+ }
12
+ /**
13
+ * A sortable column header: a button that toggles the column's sort and shows the
14
+ * direction glyph.
15
+ *
16
+ * Sorting is opt-in PER COLUMN by using this helper for the header — a plain-string header
17
+ * stays inert even though TanStack marks every column sortable by default. This mirrors the
18
+ * 4 keasy call sites (`header: sortableHeader("Name")`) exactly, so adopting the DS table
19
+ * needs zero column-definition churn.
20
+ *
21
+ * `sortableHeader("Runs", { align: "end" })` puts it over an end-aligned numeric column without
22
+ * a wrapper; the cell's own alignment stays the caller's business.
23
+ */
24
+ export declare function sortableHeader<TData, TValue>(label: ReactNode, { align }?: SortableHeaderOptions): ({ column }: HeaderContext<TData, TValue>) => import("react").JSX.Element;
25
+ //# sourceMappingURL=sortableHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortableHeader.d.ts","sourceRoot":"","sources":["../../src/table/sortableHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAM3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAiBvC,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;CACzB;AASD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAC1C,KAAK,EAAE,SAAS,EAChB,EAAE,KAAe,EAAE,GAAE,qBAA0B,IAEhB,YAAY,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,iCAcxE"}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { jsxs as a, jsx as r } from "react/jsx-runtime";
3
+ import { ChevronUpIcon as s, ChevronDownIcon as i, ChevronsUpDownIcon as d } from "lucide-react";
4
+ import { tv as c } from "tailwind-variants";
5
+ import { cn as o } from "../lib/cn.js";
6
+ const l = c({
7
+ base: "inline-flex h-7 items-center gap-1 rounded-md px-1 font-medium text-muted-foreground transition-colors hover:text-foreground",
8
+ variants: {
9
+ align: {
10
+ start: "-ms-1",
11
+ // `w-full` is what makes the header hug the column's trailing edge: the cell is as wide
12
+ // as the column, the button is not, so without it `justify-end` has nothing to push against.
13
+ end: "-me-1 w-full justify-end"
14
+ }
15
+ },
16
+ defaultVariants: { align: "start" }
17
+ });
18
+ function f({ dir: e }) {
19
+ const t = "size-3.5 shrink-0";
20
+ return e === "asc" ? /* @__PURE__ */ r(s, { className: o(t, "text-foreground") }) : e === "desc" ? /* @__PURE__ */ r(i, { className: o(t, "text-foreground") }) : /* @__PURE__ */ r(d, { className: o(t, "opacity-50") });
21
+ }
22
+ function x(e, { align: t = "start" } = {}) {
23
+ return function({ column: n }) {
24
+ return /* @__PURE__ */ a(
25
+ "button",
26
+ {
27
+ className: o(l({ align: t })),
28
+ "data-align": t,
29
+ "data-slot": "sortable-header",
30
+ onClick: () => n.toggleSorting(n.getIsSorted() === "asc"),
31
+ type: "button",
32
+ children: [
33
+ e,
34
+ /* @__PURE__ */ r(f, { dir: n.getIsSorted() })
35
+ ]
36
+ }
37
+ );
38
+ };
39
+ }
40
+ export {
41
+ x as sortableHeader
42
+ };
43
+ //# sourceMappingURL=sortableHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortableHeader.js","sources":["../../src/table/sortableHeader.tsx"],"sourcesContent":["\"use client\";\n\nimport type { HeaderContext } from \"@tanstack/react-table\";\nimport {\n ChevronDownIcon,\n ChevronsUpDownIcon,\n ChevronUpIcon,\n} from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { cn } from \"../lib/cn.js\";\n\nconst sortableHeaderVariants = tv({\n base: \"inline-flex h-7 items-center gap-1 rounded-md px-1 font-medium text-muted-foreground transition-colors hover:text-foreground\",\n variants: {\n align: {\n start: \"-ms-1\",\n // `w-full` is what makes the header hug the column's trailing edge: the cell is as wide\n // as the column, the button is not, so without it `justify-end` has nothing to push against.\n end: \"-me-1 w-full justify-end\",\n },\n },\n defaultVariants: { align: \"start\" },\n});\n\nexport interface SortableHeaderOptions {\n /**\n * Which edge the header hugs. Use `end` over end-aligned figures (`tabular-nums` money,\n * counts) so the label sits above the digits. Logical: mirrors under RTL.\n *\n * @default \"start\"\n */\n align?: \"start\" | \"end\";\n}\n\nfunction SortGlyph({ dir }: { dir: false | \"asc\" | \"desc\" }) {\n const cls = \"size-3.5 shrink-0\";\n if (dir === \"asc\") return <ChevronUpIcon className={cn(cls, \"text-foreground\")} />;\n if (dir === \"desc\") return <ChevronDownIcon className={cn(cls, \"text-foreground\")} />;\n return <ChevronsUpDownIcon className={cn(cls, \"opacity-50\")} />;\n}\n\n/**\n * A sortable column header: a button that toggles the column's sort and shows the\n * direction glyph.\n *\n * Sorting is opt-in PER COLUMN by using this helper for the header — a plain-string header\n * stays inert even though TanStack marks every column sortable by default. This mirrors the\n * 4 keasy call sites (`header: sortableHeader(\"Name\")`) exactly, so adopting the DS table\n * needs zero column-definition churn.\n *\n * `sortableHeader(\"Runs\", { align: \"end\" })` puts it over an end-aligned numeric column without\n * a wrapper; the cell's own alignment stays the caller's business.\n */\nexport function sortableHeader<TData, TValue>(\n label: ReactNode,\n { align = \"start\" }: SortableHeaderOptions = {},\n) {\n return function SortableHeader({ column }: HeaderContext<TData, TValue>) {\n return (\n <button\n className={cn(sortableHeaderVariants({ align }))}\n data-align={align}\n data-slot=\"sortable-header\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n type=\"button\"\n >\n {label}\n <SortGlyph dir={column.getIsSorted()} />\n </button>\n );\n };\n}\n"],"names":[],"mappings":";;;;;AAYA;AAAkC;AAC1B;AACI;AACD;AACE;AAAA;AAAA;AAGF;AAAA;AACP;AAGJ;AAYA;AACE;AACA;AAGF;AAcO;AAIL;AACE;AACE;AAAC;AAAA;AACgD;AACnC;AACF;AACwD;AAC7D;AAEJ;AAAA;AACqC;AAAA;AAAA;AAAA;AAI9C;;;;"}
@@ -0,0 +1,40 @@
1
+ import { ColumnDef, ColumnFiltersState, Row, RowData, RowSelectionState, SortingState, Table, TableOptions, VisibilityState } from '@tanstack/react-table';
2
+ declare module "@tanstack/react-table" {
3
+ interface ColumnMeta<TData extends RowData, TValue> {
4
+ label?: string;
5
+ }
6
+ }
7
+ export interface UseDataTableOptions<TData, TValue = unknown> extends Omit<Partial<TableOptions<TData>>, "columns" | "data"> {
8
+ columns: ColumnDef<TData, TValue>[];
9
+ data: TData[];
10
+ initialColumnFilters?: ColumnFiltersState;
11
+ initialColumnVisibility?: VisibilityState;
12
+ initialGlobalFilter?: string;
13
+ /** Zero-based first page, for deep-linking into a table. Default 0. */
14
+ initialPage?: number;
15
+ initialRowSelection?: RowSelectionState;
16
+ initialSorting?: SortingState;
17
+ /** Rows per page. Default 20. */
18
+ pageSize?: number;
19
+ }
20
+ /**
21
+ * `useReactTable` with every row model wired, the filter/sort/visibility/selection slices
22
+ * held as state, and everything else passed straight through — including `manualPagination`
23
+ * / `manualSorting` / `manualFiltering` + `rowCount` for server-driven tables, where the
24
+ * matching row model steps aside on its own.
25
+ *
26
+ * Every slice lives in `useState` and is never derived during render. That is load-bearing,
27
+ * not style: handing TanStack a fresh `columnFilters` array on each render makes the
28
+ * filtered row model always look stale, recomputing it trips `autoReset*`, which resets the
29
+ * page index → re-render → new identity → an infinite loop that hard-freezes the tab. React
30
+ * never reports it, because the cycle runs through the table's own `onStateChange` rather
31
+ * than a setState during render, so there is no "maximum update depth" error to catch.
32
+ */
33
+ export declare function useDataTable<TData, TValue = unknown>(options: UseDataTableOptions<TData, TValue>): Table<TData>;
34
+ /**
35
+ * Column `filterFn` for `DataTableFacetFilter`: keeps rows whose value is one of the
36
+ * selected facets. TanStack's built-in `arrIncludesSome` expects the *cell* to be the
37
+ * array, and on a scalar cell degrades to substring matching ("inactive" matches "active").
38
+ */
39
+ export declare function facetFilterFn<TData>(row: Row<TData>, columnId: string, filterValue: unknown): boolean;
40
+ //# sourceMappingURL=use-data-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-data-table.d.ts","sourceRoot":"","sources":["../../src/table/use-data-table.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,kBAAkB,EAGvB,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,eAAe,EAQrB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,QAAQ,uBAAuB,CAAC;IAIrC,UAAU,UAAU,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM;QAChD,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;CACF;AAED,MAAM,WAAW,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAC1D,SAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9D,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;IACpC,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,oBAAoB,CAAC,EAAE,kBAAkB,CAAC;IAC1C,uBAAuB,CAAC,EAAE,eAAe,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAClD,OAAO,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,GAC1C,KAAK,CAAC,KAAK,CAAC,CAuDd;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EACjC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,GACnB,OAAO,CAIT"}
@@ -0,0 +1,65 @@
1
+ "use client";
2
+ import { useReactTable as U, getSortedRowModel as z, getPaginationRowModel as D, getFilteredRowModel as I, getFacetedUniqueValues as O, getFacetedRowModel as j, getCoreRowModel as k } from "@tanstack/react-table";
3
+ import { useState as o } from "react";
4
+ function i(n, t) {
5
+ return (e) => {
6
+ n(e), t == null || t(e);
7
+ };
8
+ }
9
+ function H(n) {
10
+ const {
11
+ columns: t,
12
+ data: e,
13
+ initialColumnFilters: l = [],
14
+ initialColumnVisibility: a = {},
15
+ initialGlobalFilter: g = "",
16
+ initialPage: r = 0,
17
+ initialRowSelection: s = {},
18
+ initialSorting: c = [],
19
+ onColumnFiltersChange: u,
20
+ onColumnVisibilityChange: C,
21
+ onGlobalFilterChange: d,
22
+ onPaginationChange: F,
23
+ onRowSelectionChange: m,
24
+ onSortingChange: w,
25
+ pageSize: R = 20,
26
+ state: S,
27
+ ...h
28
+ } = n, [b, M] = o(c), [y, P] = o(l), [V, f] = o(a), [p, G] = o(s), [q, v] = o(g), [A, T] = o({ pageIndex: r, pageSize: R });
29
+ return U({
30
+ getCoreRowModel: k(),
31
+ getFacetedRowModel: j(),
32
+ getFacetedUniqueValues: O(),
33
+ getFilteredRowModel: I(),
34
+ getPaginationRowModel: D(),
35
+ getSortedRowModel: z(),
36
+ ...h,
37
+ columns: t,
38
+ data: e,
39
+ onColumnFiltersChange: i(P, u),
40
+ onColumnVisibilityChange: i(f, C),
41
+ onGlobalFilterChange: i(v, d),
42
+ onPaginationChange: i(T, F),
43
+ onRowSelectionChange: i(G, m),
44
+ onSortingChange: i(M, w),
45
+ state: {
46
+ columnFilters: y,
47
+ columnVisibility: V,
48
+ globalFilter: q,
49
+ pagination: A,
50
+ rowSelection: p,
51
+ sorting: b,
52
+ ...S
53
+ }
54
+ });
55
+ }
56
+ function J(n, t, e) {
57
+ if (!Array.isArray(e) || e.length === 0) return !0;
58
+ const l = String(n.getValue(t));
59
+ return e.some((a) => String(a) === l);
60
+ }
61
+ export {
62
+ J as facetFilterFn,
63
+ H as useDataTable
64
+ };
65
+ //# sourceMappingURL=use-data-table.js.map