@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 @@
1
+ {"version":3,"file":"FacetFilter.js","sources":["../../src/simples/FacetFilter.tsx"],"sourcesContent":["\"use client\";\n\nimport { createListCollection } from \"@ark-ui/react/collection\";\nimport { useFilter } from \"@ark-ui/react/locale\";\nimport { ListFilterIcon } from \"lucide-react\";\nimport type React from \"react\";\nimport { useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Badge } from \"./badge\";\nimport { Button } from \"./button\";\nimport {\n Listbox,\n ListboxContent,\n ListboxEmpty,\n ListboxInput,\n ListboxItem,\n ListboxItemIndicator,\n ListboxItemText,\n} from \"./listbox\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { Separator } from \"./separator\";\n\nexport interface FacetFilterItem {\n value: string;\n label?: React.ReactNode;\n icon?: React.ComponentType<{ className?: string }>;\n /** Rows behind this value, drawn at the row's end. */\n count?: number;\n}\n\nexport interface FacetFilterProps\n extends Omit<React.ComponentProps<typeof Button>, \"children\" | \"onSelect\"> {\n /** Trigger label. */\n label?: React.ReactNode;\n /** The values on offer. */\n items: readonly FacetFilterItem[];\n /** The values currently filtered on. */\n value: readonly string[];\n onValueChange: (next: string[]) => void;\n /** Tick any number of values. `false` keeps at most one ticked. */\n multiple?: boolean;\n /**\n * Draw a filter field above the list, narrowing the rows on offer.\n *\n * Deliberately a prop and never a count threshold: the caller knows whether the column is\n * `provider` or `subject_uri`, and a control that grows a search field once the crossfilter\n * pushes it past *n* values reshapes itself under the cursor.\n *\n * @default false\n */\n searchable?: boolean;\n /** Placeholder for the `searchable` field. */\n searchPlaceholder?: string;\n /** Accessible name for the `searchable` field. */\n searchLabel?: string;\n /** Shown when the `searchable` query excludes every row. Not the same state as `empty`. */\n searchEmpty?: React.ReactNode;\n /** Shown when there is nothing to offer. */\n empty?: React.ReactNode;\n /** A footnote under the list — a truncation notice, a hint. */\n note?: React.ReactNode;\n /** Class for the popover surface; `className` styles the trigger. */\n contentClassName?: string;\n}\n\n/**\n * The surface behind every facet filter: a trigger that reports its own count, a listbox of\n * values, and a way out.\n *\n * A filter is **a value**, not a command, so this is a listbox and not a menu of checkbox items.\n * Where the values come from and\n * where the choice goes are the caller's: TanStack facets on one side of this library, a Mosaic\n * clause on the other. What is *not* the caller's are the two rules below, which both adapters\n * had independently rediscovered, and which are invisible until they bite — and which both have to\n * survive `searchable`, because a query that hides a ticked row takes the untick with it.\n */\nexport const FacetFilter = (props: FacetFilterProps) => {\n const {\n label,\n items,\n value,\n onValueChange,\n multiple = true,\n searchable = false,\n searchPlaceholder = \"Filter values…\",\n searchLabel = \"Filter values\",\n searchEmpty = \"No matching values.\",\n empty = \"No values.\",\n note,\n className,\n contentClassName,\n size = \"sm\",\n variant = \"outline\",\n slot,\n ...rest\n } = props;\n\n const [query, setQuery] = useState(\"\");\n const fieldRef = useRef<HTMLInputElement>(null);\n // Locale-aware, \"base\" sensitivity: case and accents do not block a match, which is what a\n // user typing `coruna` at a list containing `A Coruña` expects. Same call `Combobox` makes.\n //\n // The options object is hoisted, not inlined, because `useFilter` memoises on it by identity —\n // an inline literal hands back a fresh `contains` every render, which rebuilds the collection\n // every render, which makes the listbox re-sync its highlight in a microtask while you are still\n // typing. The visible symptom is dropped keystrokes, and it points nowhere near here.\n const { contains } = useFilter(FILTER_SENSITIVITY);\n\n const entries = useMemo(() => {\n const listed = new Map(items.map((item) => [item.value, item]));\n // A ticked value that another filter has since faceted away stays listed — otherwise it sits\n // in the filter with nothing to untick, and the only way out is a reload.\n for (const chosen of value) {\n if (!listed.has(chosen)) listed.set(chosen, { value: chosen });\n }\n // Sorted by label, never by count: ordering by frequency reshuffles the list under the cursor\n // every time another filter moves, so you tick the row that took the place of the one you read.\n return [...listed.values()].sort((a, b) =>\n facetLabel(a).localeCompare(facetLabel(b))\n );\n }, [items, value]);\n\n const trimmed = searchable ? query.trim() : \"\";\n\n const visible = useMemo(() => {\n if (!trimmed) return entries;\n const ticked = new Set(value);\n // A ticked value is never hidden by the query: unticking it is the only way back out, and a\n // filter you cannot undo from the surface that set it needs a reload.\n return entries.filter(\n (item) => ticked.has(item.value) || contains(facetLabel(item), trimmed)\n );\n }, [contains, entries, trimmed, value]);\n\n // Built from what is drawn, not from what was offered: Ark navigates the collection, so an item\n // filtered out of the DOM but left in here is a row the arrow keys highlight and nobody can see.\n const collection = useMemo(\n () =>\n createListCollection({\n items: visible,\n itemToValue: (item) => item.value,\n itemToString: facetLabel,\n }),\n [visible]\n );\n\n const chosen = [...value];\n // Two empty states, and they are not the same news. `empty` means the facet offers nothing —\n // still loading, or a column with no values under the current crossfilter. `searchEmpty` means\n // your query excluded everything the facet did offer, which clears itself when you retype.\n const queryExcludedAll = visible.length === 0 && entries.length > 0;\n\n return (\n // Not modal, unlike our `Popover` default. A filter is judged by what changes behind it, and a\n // modal popover marks the rest of the page `aria-hidden` — so the table you are filtering\n // becomes unreadable to a screen reader at the exact moment it is being filtered.\n //\n // The query resets with the surface, because `Popover` unmounts its content on exit: the\n // input's DOM value goes with it while this state would not, leaving a reopened filter showing\n // every row from a query it still believes in.\n //\n // `initialFocusEl` aims the popover's opening focus at the field when there is one. Zag's\n // default lands on the content itself, and it lands *late* — so a first keystroke typed\n // straight after opening goes to the list as typeahead, and the focus then moves out from\n // under the caret. Pointing it at the field makes \"open it and start typing\" work, which is\n // the only reason a filter field is there.\n <Popover\n initialFocusEl={searchable ? () => fieldRef.current : undefined}\n modal={false}\n onOpenChange={() => setQuery(\"\")}\n >\n <PopoverTrigger asChild>\n <Button\n className={className}\n size={size}\n variant={variant}\n {...rest}\n slot={slot ?? \"facet-filter\"}\n >\n <ListFilterIcon />\n {label}\n {chosen.length > 0 && (\n <Badge size=\"xs\" variant=\"secondary\">\n {chosen.length}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n\n <PopoverContent\n className={cn(\"w-56 p-1\", contentClassName)}\n slot=\"facet-filter-content\"\n >\n {/* No `deselectable`, deliberately. Zag's listbox binds Escape to VALUE.CLEAR when it is\n set, and calls `stopPropagation()` doing so — which wipes the filter *and* swallows the\n key the popover needed to dismiss. Escape must close a popover; it must not silently\n discard what you filtered. Leaving it off also matches `Select`, where clicking the\n chosen option does not unchoose it either: clearing is what the clear affordance below\n is for. See the pinned tests in `listbox.test.tsx`. */}\n <Listbox\n collection={collection}\n onValueChange={(details) => onValueChange(details.value)}\n selectionMode={multiple ? \"multiple\" : \"single\"}\n value={chosen}\n >\n {searchable && (\n // `autoHighlight` is Ark's, off by default and worth turning on here: it re-highlights\n // the first row of the collection every time the collection changes, so typing leaves\n // the top match under Enter instead of requiring an ArrowDown first. `keyboardPriority`\n // stays \"caret\" — Home/End belong to the text you are editing.\n <ListboxInput\n aria-label={searchLabel}\n autoHighlight\n onChange={(event) => setQuery(event.target.value)}\n placeholder={searchPlaceholder}\n ref={fieldRef}\n size=\"sm\"\n value={query}\n />\n )}\n\n <ListboxContent className=\"max-h-72 overflow-y-auto\">\n {visible.map((item) => {\n const Icon = item.icon;\n\n return (\n <ListboxItem item={item} key={item.value}>\n {Icon && <Icon />}\n <ListboxItemText>{item.label ?? item.value}</ListboxItemText>\n {item.count !== undefined && (\n <span className=\"text-muted-foreground text-xs tabular-nums\">\n {item.count}\n </span>\n )}\n <ListboxItemIndicator />\n </ListboxItem>\n );\n })}\n\n <ListboxEmpty>{queryExcludedAll ? searchEmpty : empty}</ListboxEmpty>\n </ListboxContent>\n </Listbox>\n\n {note && (\n <p\n className=\"px-2 py-1.5 text-muted-foreground text-xs\"\n data-slot=\"facet-filter-note\"\n >\n {note}\n </p>\n )}\n\n {/* Clearing is a command, so it is a button and not a row of the listbox — putting it in\n the list would make \"clear\" look like one more value you can filter on. */}\n {chosen.length > 0 && (\n <>\n <Separator className=\"my-1\" />\n <Button\n className=\"w-full justify-center\"\n slot=\"facet-filter-clear\"\n onClick={() => onValueChange([])}\n size=\"sm\"\n variant=\"ghost\"\n >\n Clear filter\n </Button>\n </>\n )}\n </PopoverContent>\n </Popover>\n );\n};\n\nconst FILTER_SENSITIVITY = { sensitivity: \"base\" } as const;\n\nconst facetLabel = (item: FacetFilterItem) =>\n typeof item.label === \"string\" ? item.label : item.value;\n"],"names":[],"mappings":";;;;;;;;;;;;AA4EO;AACL;AAAM;AACJ;AACA;AACA;AACA;AACW;AACE;AACO;AACN;AACA;AACN;AACR;AACA;AACA;AACO;AACG;AACV;AACG;AAeH;AAGA;AACE;AAIF;AAA4B;AACe;AAAA;AAO3C;AACA;AAGA;AAAe;AACyD;AAAA;AAMvD;AAEM;AACZ;AACqB;AACd;AACf;AACK;AASV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcE;AAAC;AAAA;AACuD;AAC/C;AACwB;AAE/B;AACE;AAAC;AAAA;AACC;AACA;AACA;AACI;AACU;AAEd;AAAgB;AACf;AAIC;AAAA;AAAA;AAGN;AAEA;AAAC;AAAA;AAC2C;AACrC;AAQL;AAAA;AAAC;AAAA;AACC;AACuD;AAChB;AAChC;AAEN;AAAA;AAAA;AAAA;AAAA;AAKC;AAAC;AAAA;AACa;AACC;AACmC;AACnC;AACR;AACA;AACE;AAAA;AAAA;AAKR;AACC;AAEA;AAEK;AAAc;AAC4B;AAIzC;AAEoB;AACxB;AAEH;AAEqD;AACxD;AAAA;AAAA;AAAA;AAIA;AAAC;AAAA;AACW;AACA;AAET;AAAA;AAAA;AAQD;AAA4B;AAC5B;AAAC;AAAA;AACW;AACL;AAC0B;AAC1B;AACG;AACT;AAAA;AAAA;AAGH;AAAA;AAAA;AAAA;AAEJ;AAAA;AAAA;AAGN;;;;"}
@@ -0,0 +1,42 @@
1
+ import { ReactNode } from 'react';
2
+ export interface FieldArrayProps {
3
+ /** Rows to render. The consumer owns the count — it may include not-yet-committed rows. */
4
+ count: number;
5
+ /**
6
+ * Stable key for row `index`.
7
+ *
8
+ * NOT optional, and never the bare index. A row that is only a UI placeholder must
9
+ * already carry the key it will have once committed; if the key changes on commit,
10
+ * React remounts the input and the user loses focus and caret mid-typing.
11
+ */
12
+ rowKey: (index: number) => string;
13
+ children: (index: number) => ReactNode;
14
+ onAdd: () => void;
15
+ onRemove: (index: number) => void;
16
+ /** Hide "Add" — e.g. a maximum was reached, or the field is read-only. Default true. */
17
+ canAdd?: boolean;
18
+ /** Hide every remove control. Default true. */
19
+ canRemove?: boolean;
20
+ addLabel?: ReactNode;
21
+ /** Accessible name for each row's remove control. Default "Remove". */
22
+ removeLabel?: string;
23
+ /**
24
+ * Row cross-axis alignment. "center" suits single-line controls; "start" suits rows
25
+ * whose content is a block (a nested form, a textarea).
26
+ */
27
+ align?: "center" | "start";
28
+ className?: string;
29
+ }
30
+ /**
31
+ * The repeatable-rows layout: N rows, a remove control per row, and an add control below.
32
+ *
33
+ * Deliberately stateless and unaware of cardinality — it renders exactly `count` rows and
34
+ * reports intent. Whoever owns the data decides what "add" means and whether another row
35
+ * is allowed, which is what lets the same component sit on top of a form library, a plain
36
+ * array, or a graph.
37
+ */
38
+ export declare function FieldArray({ count, rowKey, children, onAdd, onRemove, canAdd, canRemove, addLabel, removeLabel, align, className, }: FieldArrayProps): import("react").JSX.Element;
39
+ export declare namespace FieldArray {
40
+ var displayName: string;
41
+ }
42
+ //# sourceMappingURL=FieldArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldArray.d.ts","sourceRoot":"","sources":["../../src/simples/FieldArray.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACvC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,wFAAwF;IACxF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAa,EACb,SAAgB,EAChB,QAAgB,EAChB,WAAsB,EACtB,KAAgB,EAChB,SAAS,GACV,EAAE,eAAe,+BA+CjB;yBA3De,UAAU"}
@@ -0,0 +1,76 @@
1
+ "use client";
2
+ import { jsxs as a, jsx as r } from "react/jsx-runtime";
3
+ import { XIcon as v, PlusIcon as y } from "lucide-react";
4
+ import { cn as i } from "../lib/cn.js";
5
+ import { Button as l } from "./button.js";
6
+ function N({
7
+ count: o,
8
+ rowKey: c,
9
+ children: n,
10
+ onAdd: m,
11
+ onRemove: d,
12
+ canAdd: f = !0,
13
+ canRemove: p = !0,
14
+ addLabel: x = "Add",
15
+ removeLabel: h = "Remove",
16
+ align: s = "center",
17
+ className: u
18
+ }) {
19
+ const t = [];
20
+ for (let e = 0; e < o; e++)
21
+ t.push(
22
+ /* @__PURE__ */ a(
23
+ "div",
24
+ {
25
+ className: i(
26
+ "flex gap-2",
27
+ s === "center" ? "items-center" : "items-start"
28
+ ),
29
+ "data-slot": "field-array-row",
30
+ children: [
31
+ /* @__PURE__ */ r("div", { className: "min-w-0 flex-1", children: n(e) }),
32
+ p && /* @__PURE__ */ r(
33
+ l,
34
+ {
35
+ "aria-label": h,
36
+ className: s === "start" ? "mt-0.5" : void 0,
37
+ onClick: () => d(e),
38
+ size: "icon-sm",
39
+ variant: "ghost",
40
+ children: /* @__PURE__ */ r(v, {})
41
+ }
42
+ )
43
+ ]
44
+ },
45
+ c(e)
46
+ )
47
+ );
48
+ return /* @__PURE__ */ a(
49
+ "div",
50
+ {
51
+ className: i("flex flex-col gap-2", u),
52
+ "data-slot": "field-array",
53
+ children: [
54
+ t,
55
+ f && /* @__PURE__ */ a(
56
+ l,
57
+ {
58
+ className: "self-start",
59
+ onClick: m,
60
+ size: "sm",
61
+ variant: "secondary",
62
+ children: [
63
+ /* @__PURE__ */ r(y, {}),
64
+ x
65
+ ]
66
+ }
67
+ )
68
+ ]
69
+ }
70
+ );
71
+ }
72
+ N.displayName = "FieldArray";
73
+ export {
74
+ N as FieldArray
75
+ };
76
+ //# sourceMappingURL=FieldArray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldArray.js","sources":["../../src/simples/FieldArray.tsx"],"sourcesContent":["\"use client\";\n\nimport { PlusIcon, XIcon } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.js\";\nimport { Button } from \"./button.js\";\n\nexport interface FieldArrayProps {\n /** Rows to render. The consumer owns the count — it may include not-yet-committed rows. */\n count: number;\n /**\n * Stable key for row `index`.\n *\n * NOT optional, and never the bare index. A row that is only a UI placeholder must\n * already carry the key it will have once committed; if the key changes on commit,\n * React remounts the input and the user loses focus and caret mid-typing.\n */\n rowKey: (index: number) => string;\n children: (index: number) => ReactNode;\n onAdd: () => void;\n onRemove: (index: number) => void;\n /** Hide \"Add\" — e.g. a maximum was reached, or the field is read-only. Default true. */\n canAdd?: boolean;\n /** Hide every remove control. Default true. */\n canRemove?: boolean;\n addLabel?: ReactNode;\n /** Accessible name for each row's remove control. Default \"Remove\". */\n removeLabel?: string;\n /**\n * Row cross-axis alignment. \"center\" suits single-line controls; \"start\" suits rows\n * whose content is a block (a nested form, a textarea).\n */\n align?: \"center\" | \"start\";\n className?: string;\n}\n\n/**\n * The repeatable-rows layout: N rows, a remove control per row, and an add control below.\n *\n * Deliberately stateless and unaware of cardinality — it renders exactly `count` rows and\n * reports intent. Whoever owns the data decides what \"add\" means and whether another row\n * is allowed, which is what lets the same component sit on top of a form library, a plain\n * array, or a graph.\n */\nexport function FieldArray({\n count,\n rowKey,\n children,\n onAdd,\n onRemove,\n canAdd = true,\n canRemove = true,\n addLabel = \"Add\",\n removeLabel = \"Remove\",\n align = \"center\",\n className,\n}: FieldArrayProps) {\n const rows = [];\n for (let index = 0; index < count; index++) {\n rows.push(\n <div\n className={cn(\n \"flex gap-2\",\n align === \"center\" ? \"items-center\" : \"items-start\"\n )}\n data-slot=\"field-array-row\"\n key={rowKey(index)}\n >\n <div className=\"min-w-0 flex-1\">{children(index)}</div>\n {canRemove && (\n <Button\n aria-label={removeLabel}\n className={align === \"start\" ? \"mt-0.5\" : undefined}\n onClick={() => onRemove(index)}\n size=\"icon-sm\"\n variant=\"ghost\"\n >\n <XIcon />\n </Button>\n )}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\"flex flex-col gap-2\", className)}\n data-slot=\"field-array\"\n >\n {rows}\n {canAdd && (\n <Button\n className=\"self-start\"\n onClick={onAdd}\n size=\"sm\"\n variant=\"secondary\"\n >\n <PlusIcon />\n {addLabel}\n </Button>\n )}\n </div>\n );\n}\nFieldArray.displayName = \"FieldArray\";\n"],"names":["FieldArray"],"mappings":";;;;;AA4CO;AAAoB;AACzB;AACA;AACA;AACA;AACA;AACS;AACG;AACD;AACG;AACN;AAEV;AACE;AACA;AACE;AAAK;AACH;AAAC;AAAA;AACY;AACT;AACsC;AAAA;AAE9B;AAGV;AAAiD;AAE/C;AAAC;AAAA;AACa;AAC8B;AACb;AACxB;AACG;AAED;AAAA;AAAA;AACT;AAAA;AAZe;AAAA;AAkBvB;AACE;AAAC;AAAA;AAC+C;AACpC;AAET;AAAA;AAEC;AAAC;AAAA;AACW;AACD;AACJ;AACG;AAER;AAAU;AACT;AAAA;AAAA;AAAA;AACH;AAAA;AAIR;AACAA;;;;"}
@@ -0,0 +1,38 @@
1
+ import { VariantProps } from 'tailwind-variants';
2
+ import * as React from "react";
3
+ /**
4
+ * Link — a token-styled anchor, and the only component in the library emitting
5
+ * `data-slot="link"`. `variant` picks the treatment; a router link takes the same treatment by
6
+ * spreading `linkVariants()` onto it. (Generic layout stays in the product via Tailwind — the DS
7
+ * ships no `Flex`/`Box`/`Grid`.)
8
+ *
9
+ * `linkVariants` is module-level and deliberately not on the barrel, which is where every other
10
+ * recipe with no cross-module importer sits: exported, a variant object freezes a class list as
11
+ * API. `index.test.ts` pins that.
12
+ */
13
+ export declare const linkVariants: import('tailwind-variants').TVReturnType<{
14
+ variant: {
15
+ default: string;
16
+ subtle: string;
17
+ plain: string;
18
+ };
19
+ }, undefined, "rounded-sm underline-offset-4 outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring", {
20
+ variant: {
21
+ default: string;
22
+ subtle: string;
23
+ plain: string;
24
+ };
25
+ }, undefined, import('tailwind-variants').TVReturnType<{
26
+ variant: {
27
+ default: string;
28
+ subtle: string;
29
+ plain: string;
30
+ };
31
+ }, undefined, "rounded-sm underline-offset-4 outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring", unknown, unknown, undefined>>;
32
+ export interface LinkProps extends React.ComponentProps<"a">, VariantProps<typeof linkVariants> {
33
+ }
34
+ export declare function Link({ variant, className, ref, slot, ...rest }: LinkProps): React.JSX.Element;
35
+ export declare namespace Link {
36
+ var displayName: string;
37
+ }
38
+ //# sourceMappingURL=Link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/simples/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG1D;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;wJAUvB,CAAC;AAEH,MAAM,WAAW,SAAU,SAAQ,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,OAAO,YAAY,CAAC;CAAG;AAElG,wBAAgB,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,qBAEzE;yBAFe,IAAI"}
@@ -0,0 +1,24 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import "react";
3
+ import { tv as a } from "tailwind-variants";
4
+ import { cn as l } from "../lib/cn.js";
5
+ const s = a({
6
+ base: "rounded-sm underline-offset-4 outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring",
7
+ variants: {
8
+ variant: {
9
+ default: "text-primary hover:underline",
10
+ subtle: "text-muted-foreground hover:text-foreground hover:underline",
11
+ plain: "text-inherit no-underline hover:underline"
12
+ }
13
+ },
14
+ defaultVariants: { variant: "default" }
15
+ });
16
+ function u({ variant: n, className: e, ref: r, slot: i, ...t }) {
17
+ return /* @__PURE__ */ o("a", { ref: r, className: l(s({ variant: n }), e), ...t, "data-slot": i ?? "link" });
18
+ }
19
+ u.displayName = "Link";
20
+ export {
21
+ u as Link,
22
+ s as linkVariants
23
+ };
24
+ //# sourceMappingURL=Link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.js","sources":["../../src/simples/Link.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../lib/cn.js\";\n\n/**\n * Link — a token-styled anchor, and the only component in the library emitting\n * `data-slot=\"link\"`. `variant` picks the treatment; a router link takes the same treatment by\n * spreading `linkVariants()` onto it. (Generic layout stays in the product via Tailwind — the DS\n * ships no `Flex`/`Box`/`Grid`.)\n *\n * `linkVariants` is module-level and deliberately not on the barrel, which is where every other\n * recipe with no cross-module importer sits: exported, a variant object freezes a class list as\n * API. `index.test.ts` pins that.\n */\nexport const linkVariants = tv({\n base: \"rounded-sm underline-offset-4 outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring\",\n variants: {\n variant: {\n default: \"text-primary hover:underline\",\n subtle: \"text-muted-foreground hover:text-foreground hover:underline\",\n plain: \"text-inherit no-underline hover:underline\",\n },\n },\n defaultVariants: { variant: \"default\" },\n});\n\nexport interface LinkProps extends React.ComponentProps<\"a\">, VariantProps<typeof linkVariants> {}\n\nexport function Link({ variant, className, ref, slot, ...rest }: LinkProps) {\n return <a ref={ref} className={cn(linkVariants({ variant }), className)} {...rest} data-slot={slot ?? \"link\"} />;\n}\nLink.displayName = \"Link\";\n"],"names":["linkVariants","tv","Link","variant","className","ref","slot","rest","cn"],"mappings":";;;;AAcO,MAAMA,IAAeC,EAAG;AAAA,EAC7B,MAAM;AAAA,EACN,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,IAAA;AAAA,EACT;AAAA,EAEF,iBAAiB,EAAE,SAAS,UAAA;AAC9B,CAAC;AAIM,SAASC,EAAK,EAAE,SAAAC,GAAS,WAAAC,GAAW,KAAAC,GAAK,MAAAC,GAAM,GAAGC,KAAmB;AAC1E,2BAAQ,KAAA,EAAE,KAAAF,GAAU,WAAWG,EAAGR,EAAa,EAAE,SAAAG,EAAA,CAAS,GAAGC,CAAS,GAAI,GAAGG,GAAM,aAAWD,KAAQ,QAAQ;AAChH;AACAJ,EAAK,cAAc;"}
@@ -0,0 +1,8 @@
1
+ import { Accordion as ArkAccordion } from '@ark-ui/react/accordion';
2
+ import { default as React } from 'react';
3
+ export declare const useAccordion: () => import('@ark-ui/react').UseAccordionContext;
4
+ export declare const Accordion: (props: React.ComponentProps<typeof ArkAccordion.Root>) => React.JSX.Element;
5
+ export declare const AccordionItem: (props: React.ComponentProps<typeof ArkAccordion.Item>) => React.JSX.Element;
6
+ export declare const AccordionItemTrigger: (props: React.ComponentProps<typeof ArkAccordion.ItemTrigger>) => React.JSX.Element;
7
+ export declare const AccordionItemContent: (props: React.ComponentProps<typeof ArkAccordion.ItemContent>) => React.JSX.Element;
8
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/simples/accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,IAAI,YAAY,EAE1B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,eAAO,MAAM,YAAY,mDAAsB,CAAC;AAEhD,eAAO,MAAM,SAAS,GACpB,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,sBAWtD,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,sBAWtD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,WAAW,CAAC,sBA0B7D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,WAAW,CAAC,sBAqB7D,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { jsx as r, jsxs as c } from "react/jsx-runtime";
2
+ import { useAccordionContext as d, Accordion as a } from "@ark-ui/react/accordion";
3
+ import { ChevronDownIcon as m } from "lucide-react";
4
+ import { cn as s } from "../lib/cn.js";
5
+ const f = d, x = (t) => {
6
+ const { className: o, slot: e, ...n } = t;
7
+ return /* @__PURE__ */ r(
8
+ a.Root,
9
+ {
10
+ className: s("group/accordion", o),
11
+ ...n,
12
+ "data-slot": e ?? "accordion"
13
+ }
14
+ );
15
+ }, h = (t) => {
16
+ const { className: o, slot: e, ...n } = t;
17
+ return /* @__PURE__ */ r(
18
+ a.Item,
19
+ {
20
+ className: s("border-b last:border-b-0", o),
21
+ ...n,
22
+ "data-slot": e ?? "accordion-item"
23
+ }
24
+ );
25
+ }, N = (t) => {
26
+ const { className: o, children: e, slot: n, ...i } = t;
27
+ return /* @__PURE__ */ c(
28
+ a.ItemTrigger,
29
+ {
30
+ className: s(
31
+ "flex w-full items-center justify-between gap-4",
32
+ "py-4 text-start font-medium text-sm",
33
+ "cursor-pointer transition-all hover:underline",
34
+ "rounded-md outline-none focus-visible:ring-[3px] focus-visible:ring-ring",
35
+ "data-disabled:pointer-events-none data-disabled:opacity-64",
36
+ o
37
+ ),
38
+ ...i,
39
+ "data-slot": n ?? "accordion-item-trigger",
40
+ children: [
41
+ e,
42
+ /* @__PURE__ */ r(
43
+ a.ItemIndicator,
44
+ {
45
+ className: "data-[state=open]:[&_svg]:rotate-180",
46
+ "data-slot": "accordion-item-indicator",
47
+ children: /* @__PURE__ */ r(m, { className: "size-4 shrink-0 text-muted-foreground transition-transform duration-200 motion-reduce:transition-none!" })
48
+ }
49
+ )
50
+ ]
51
+ }
52
+ );
53
+ }, b = (t) => {
54
+ const { className: o, children: e, slot: n, ...i } = t;
55
+ return /* @__PURE__ */ r(
56
+ a.ItemContent,
57
+ {
58
+ className: s(
59
+ "overflow-hidden",
60
+ "transition-[height] duration-200",
61
+ "data-[state=open]:animate-expand",
62
+ "data-[state=closed]:animate-collapse",
63
+ "motion-reduce:animate-none! motion-reduce:transition-none!"
64
+ ),
65
+ ...i,
66
+ "data-slot": n ?? "accordion-item-content",
67
+ children: /* @__PURE__ */ r("div", { className: s("pb-4 text-muted-foreground text-sm", o), children: e })
68
+ }
69
+ );
70
+ };
71
+ export {
72
+ x as Accordion,
73
+ h as AccordionItem,
74
+ b as AccordionItemContent,
75
+ N as AccordionItemTrigger,
76
+ f as useAccordion
77
+ };
78
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.js","sources":["../../src/simples/accordion.tsx"],"sourcesContent":["import {\n Accordion as ArkAccordion,\n useAccordionContext,\n} from \"@ark-ui/react/accordion\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport type React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport const useAccordion = useAccordionContext;\n\nexport const Accordion = (\n props: React.ComponentProps<typeof ArkAccordion.Root>\n) => {\n const { className, slot, ...rest } = props;\n\n return (\n <ArkAccordion.Root\n className={cn(\"group/accordion\", className)}\n {...rest}\n data-slot={slot ?? \"accordion\"}\n />\n );\n};\n\nexport const AccordionItem = (\n props: React.ComponentProps<typeof ArkAccordion.Item>\n) => {\n const { className, slot, ...rest } = props;\n\n return (\n <ArkAccordion.Item\n className={cn(\"border-b last:border-b-0\", className)}\n {...rest}\n data-slot={slot ?? \"accordion-item\"}\n />\n );\n};\n\nexport const AccordionItemTrigger = (\n props: React.ComponentProps<typeof ArkAccordion.ItemTrigger>\n) => {\n const { className, children, slot, ...rest } = props;\n\n return (\n <ArkAccordion.ItemTrigger\n className={cn(\n \"flex w-full items-center justify-between gap-4\",\n \"py-4 text-start font-medium text-sm\",\n \"cursor-pointer transition-all hover:underline\",\n \"rounded-md outline-none focus-visible:ring-[3px] focus-visible:ring-ring\",\n \"data-disabled:pointer-events-none data-disabled:opacity-64\",\n className\n )}\n {...rest}\n data-slot={slot ?? \"accordion-item-trigger\"}\n >\n {children}\n <ArkAccordion.ItemIndicator\n className=\"data-[state=open]:[&_svg]:rotate-180\"\n data-slot=\"accordion-item-indicator\"\n >\n <ChevronDownIcon className=\"size-4 shrink-0 text-muted-foreground transition-transform duration-200 motion-reduce:transition-none!\" />\n </ArkAccordion.ItemIndicator>\n </ArkAccordion.ItemTrigger>\n );\n};\n\nexport const AccordionItemContent = (\n props: React.ComponentProps<typeof ArkAccordion.ItemContent>\n) => {\n const { className, children, slot, ...rest } = props;\n\n return (\n <ArkAccordion.ItemContent\n className={cn(\n \"overflow-hidden\",\n \"transition-[height] duration-200\",\n \"data-[state=open]:animate-expand\",\n \"data-[state=closed]:animate-collapse\",\n \"motion-reduce:animate-none! motion-reduce:transition-none!\"\n )}\n {...rest}\n data-slot={slot ?? \"accordion-item-content\"}\n >\n <div className={cn(\"pb-4 text-muted-foreground text-sm\", className)}>\n {children}\n </div>\n </ArkAccordion.ItemContent>\n );\n};\n"],"names":["useAccordion","useAccordionContext","Accordion","props","className","slot","rest","jsx","ArkAccordion","cn","AccordionItem","AccordionItemTrigger","children","jsxs","ChevronDownIcon","AccordionItemContent"],"mappings":";;;;AAQO,MAAMA,IAAeC,GAEfC,IAAY,CACvBC,MACG;AACH,QAAM,EAAE,WAAAC,GAAW,MAAAC,GAAM,GAAGC,MAASH;AAErC,SACE,gBAAAI;AAAA,IAACC,EAAa;AAAA,IAAb;AAAA,MACC,WAAWC,EAAG,mBAAmBL,CAAS;AAAA,MACzC,GAAGE;AAAA,MACJ,aAAWD,KAAQ;AAAA,IAAA;AAAA,EAAA;AAGzB,GAEaK,IAAgB,CAC3BP,MACG;AACH,QAAM,EAAE,WAAAC,GAAW,MAAAC,GAAM,GAAGC,MAASH;AAErC,SACE,gBAAAI;AAAA,IAACC,EAAa;AAAA,IAAb;AAAA,MACC,WAAWC,EAAG,4BAA4BL,CAAS;AAAA,MAClD,GAAGE;AAAA,MACJ,aAAWD,KAAQ;AAAA,IAAA;AAAA,EAAA;AAGzB,GAEaM,IAAuB,CAClCR,MACG;AACH,QAAM,EAAE,WAAAC,GAAW,UAAAQ,GAAU,MAAAP,GAAM,GAAGC,MAASH;AAE/C,SACE,gBAAAU;AAAA,IAACL,EAAa;AAAA,IAAb;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAL;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,MACJ,aAAWD,KAAQ;AAAA,MAElB,UAAA;AAAA,QAAAO;AAAA,QACD,gBAAAL;AAAA,UAACC,EAAa;AAAA,UAAb;AAAA,YACC,WAAU;AAAA,YACV,aAAU;AAAA,YAEV,UAAA,gBAAAD,EAACO,GAAA,EAAgB,WAAU,yGAAA,CAAyG;AAAA,UAAA;AAAA,QAAA;AAAA,MACtI;AAAA,IAAA;AAAA,EAAA;AAGN,GAEaC,IAAuB,CAClCZ,MACG;AACH,QAAM,EAAE,WAAAC,GAAW,UAAAQ,GAAU,MAAAP,GAAM,GAAGC,MAASH;AAE/C,SACE,gBAAAI;AAAA,IAACC,EAAa;AAAA,IAAb;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAGH;AAAA,MACJ,aAAWD,KAAQ;AAAA,MAEnB,4BAAC,OAAA,EAAI,WAAWI,EAAG,sCAAsCL,CAAS,GAC/D,UAAAQ,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,101 @@
1
+ import { ark } from '@ark-ui/react/factory';
2
+ import { default as React } from 'react';
3
+ import { Badge } from './badge';
4
+ import { Separator } from './separator';
5
+ interface ActionBarPositioning {
6
+ /**
7
+ * The gutter from the edge in pixels.
8
+ *
9
+ * The bar is `fixed` to the VIEWPORT bottom, so the gutter is measured from the window edge
10
+ * and knows nothing about your layout: over a `ShellFooter` (or any other bottom region) the
11
+ * default 16px lands the bar ON TOP of it. Raise the gutter past the region's height —
12
+ * `gutter: "calc(var(--footer-height) + 16px)"` — or render the actions inside the footer
13
+ * instead.
14
+ *
15
+ * @default '16px'
16
+ */
17
+ gutter?: string;
18
+ /**
19
+ * The placement of the action bar.
20
+ *
21
+ * @default "bottom"
22
+ */
23
+ placement?: "bottom" | "bottom-start" | "bottom-end";
24
+ }
25
+ interface ActionBarContextValue {
26
+ /**
27
+ * The open state of the action bar
28
+ */
29
+ isOpen?: boolean;
30
+ /**
31
+ * Whether to lazy mount the action bar
32
+ */
33
+ lazyMount?: boolean;
34
+ /**
35
+ * The function to call when the action bar is closed
36
+ */
37
+ onClose?: () => void;
38
+ /**
39
+ * The function to call when the action bar is opened
40
+ */
41
+ onOpen?: () => void;
42
+ /**
43
+ * The positioning of the action bar.
44
+ */
45
+ positioning: ActionBarPositioning;
46
+ /**
47
+ * The function to call when the action bar is mounted
48
+ */
49
+ unmountOnExit?: boolean;
50
+ }
51
+ export interface ActionBarProps extends Pick<ActionBarContextValue, "lazyMount" | "unmountOnExit"> {
52
+ /**
53
+ * Whether to close the action bar when the Escape key is pressed.
54
+ *
55
+ * @default true
56
+ */
57
+ closeOnEscape?: boolean;
58
+ /**
59
+ * The default open state of the action bar.
60
+ */
61
+ defaultOpen?: boolean;
62
+ /**
63
+ * The function to call when the open state of the action bar changes.
64
+ */
65
+ onOpenChange?: (open: boolean) => void;
66
+ /**
67
+ * The open state of the action bar.
68
+ */
69
+ open?: boolean;
70
+ /**
71
+ * Placement and gutter of the action bar.
72
+ */
73
+ positioning?: ActionBarContextValue["positioning"];
74
+ }
75
+ export declare const ActionBar: (props: React.PropsWithChildren<ActionBarProps>) => React.JSX.Element;
76
+ export interface ActionBarTriggerProps extends React.ComponentProps<typeof ark.button> {
77
+ }
78
+ export declare const ActionBarTrigger: (props: ActionBarTriggerProps) => React.JSX.Element;
79
+ export interface ActionBarContentProps extends React.ComponentProps<typeof ark.div> {
80
+ }
81
+ export declare const ActionBarContent: (props: ActionBarContentProps) => React.JSX.Element;
82
+ export interface ActionBarSeparatorProps extends React.ComponentProps<typeof Separator> {
83
+ }
84
+ export declare const ActionBarSeparator: (props: ActionBarSeparatorProps) => React.JSX.Element;
85
+ export interface ActionBarCloseProps extends React.ComponentProps<typeof ark.button> {
86
+ }
87
+ export declare const ActionBarClose: (props: ActionBarCloseProps) => React.JSX.Element;
88
+ export interface ActionBarValueProps extends React.ComponentProps<typeof Badge> {
89
+ /**
90
+ * The number of items selected
91
+ */
92
+ count: number;
93
+ /**
94
+ * The label of the selection trigger
95
+ */
96
+ label?: string;
97
+ }
98
+ export declare const ActionBarValue: (props: ActionBarValueProps) => React.JSX.Element;
99
+ export declare const ActionBarBody: (props: React.ComponentProps<typeof ark.div>) => React.JSX.Element;
100
+ export {};
101
+ //# sourceMappingURL=action-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-bar.d.ts","sourceRoot":"","sources":["../../src/simples/action-bar.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,UAAU,oBAAoB;IAC5B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,YAAY,CAAC;CACtD;AAED,UAAU,qBAAqB;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;OAEG;IACH,WAAW,EAAE,oBAAoB,CAAC;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAKD,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,qBAAqB,EAAE,WAAW,GAAG,eAAe,CAAC;IAClE;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC,aAAa,CAAC,CAAC;CACpD;AAID,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,sBAyEvE,CAAC;AAEF,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC;CAAG;AAEpD,eAAO,MAAM,gBAAgB,GAAI,OAAO,qBAAqB,sBAoB5D,CAAC;AAyBF,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC;CAAG;AAEjD,eAAO,MAAM,gBAAgB,GAAI,OAAO,qBAAqB,sBA0C5D,CAAC;AAEF,MAAM,WAAW,uBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC;CAAG;AAEnD,eAAO,MAAM,kBAAkB,GAAI,OAAO,uBAAuB,sBAWhE,CAAC;AAEF,MAAM,WAAW,mBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC;CAAG;AAEpD,eAAO,MAAM,cAAc,GAAI,OAAO,mBAAmB,sBA0BxD,CAAC;AAEF,MAAM,WAAW,mBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC;IAC1C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,mBAAmB,sBAaxD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,sBAaxE,CAAC"}
@@ -0,0 +1,195 @@
1
+ "use client";
2
+ import { jsx as c } from "react/jsx-runtime";
3
+ import { Portal as N } from "@ark-ui/react";
4
+ import { ark as m } from "@ark-ui/react/factory";
5
+ import { Presence as C } from "@ark-ui/react/presence";
6
+ import l from "react";
7
+ import { tv as k } from "tailwind-variants";
8
+ import { cn as u } from "../lib/cn.js";
9
+ import { Badge as E } from "./badge.js";
10
+ import { Separator as O } from "./separator.js";
11
+ const g = l.createContext(null);
12
+ g.displayName = "ActionBarContext";
13
+ const P = { placement: "bottom", gutter: "16px" }, R = (t) => {
14
+ const {
15
+ open: e,
16
+ defaultOpen: o = !1,
17
+ closeOnEscape: r = !0,
18
+ positioning: s,
19
+ lazyMount: n = !0,
20
+ unmountOnExit: i = !0,
21
+ onOpenChange: a,
22
+ ...d
23
+ } = t, [f, b] = l.useState(o), p = e !== void 0, x = p ? e : f, v = l.useCallback(() => {
24
+ p || b(!1), a == null || a(!1);
25
+ }, [p, a]), B = l.useCallback(() => {
26
+ p || b(!0), a == null || a(!0);
27
+ }, [p, a]);
28
+ l.useEffect(() => {
29
+ if (!x || !r)
30
+ return;
31
+ const w = (y) => {
32
+ y.key === "Escape" && (y.defaultPrevented || (y.preventDefault(), v()));
33
+ };
34
+ return window.addEventListener("keydown", w), () => window.removeEventListener("keydown", w);
35
+ }, [r, v, x]);
36
+ const A = l.useMemo(
37
+ () => ({
38
+ onClose: v,
39
+ onOpen: B,
40
+ isOpen: x,
41
+ positioning: { ...P, ...s },
42
+ lazyMount: n,
43
+ unmountOnExit: i
44
+ }),
45
+ [v, B, x, n, i, s]
46
+ );
47
+ return /* @__PURE__ */ c(g.Provider, { value: A, ...d });
48
+ }, T = (t) => {
49
+ const { onClick: e, slot: o, ...r } = t, { onOpen: s, isOpen: n } = h(), i = (a) => {
50
+ s == null || s(), e == null || e(a);
51
+ };
52
+ return /* @__PURE__ */ c(
53
+ m.button,
54
+ {
55
+ "aria-expanded": n,
56
+ "data-state": n ? "open" : "closed",
57
+ onClick: i,
58
+ type: "button",
59
+ ...r,
60
+ "data-slot": o ?? "action-bar-trigger"
61
+ }
62
+ );
63
+ }, j = k({
64
+ base: [
65
+ "fixed inset-x-0 bottom-0 z-50",
66
+ "flex",
67
+ "px-4 pb-[calc(var(--gutter)+env(safe-area-inset-bottom,0))]",
68
+ "pointer-events-none",
69
+ "data-[state=closed]:animate-out data-[state=open]:animate-in",
70
+ "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
71
+ "data-[state=open]:slide-in-from-bottom-2 data-[state=closed]:slide-out-to-bottom-2",
72
+ "motion-reduce:animate-none!"
73
+ ],
74
+ variants: {
75
+ placement: {
76
+ bottom: "justify-center",
77
+ "bottom-end": "justify-end",
78
+ "bottom-start": "justify-start"
79
+ }
80
+ },
81
+ defaultVariants: {
82
+ placement: "bottom"
83
+ }
84
+ }), q = (t) => {
85
+ const { "aria-labelledby": e, className: o, slot: r, ...s } = t, { isOpen: n, lazyMount: i, unmountOnExit: a, positioning: d } = h(), f = d.placement, b = d.gutter;
86
+ return /* @__PURE__ */ c(N, { children: /* @__PURE__ */ c(
87
+ C,
88
+ {
89
+ asChild: !0,
90
+ lazyMount: i,
91
+ present: n,
92
+ unmountOnExit: a,
93
+ children: /* @__PURE__ */ c(
94
+ m.div,
95
+ {
96
+ className: u(j({ placement: f })),
97
+ "data-placement": f,
98
+ "data-slot": "action-bar-positioner",
99
+ style: { "--gutter": b },
100
+ children: /* @__PURE__ */ c(
101
+ m.div,
102
+ {
103
+ "aria-labelledby": e,
104
+ className: u(
105
+ "[--space:--spacing(2)]",
106
+ "flex w-fit items-center gap-1",
107
+ "rounded-xl border shadow-lg/5",
108
+ "px-[calc(var(--space)+2px)] py-(--space)",
109
+ "bg-popover",
110
+ "text-popover-foreground",
111
+ "pointer-events-auto",
112
+ o
113
+ ),
114
+ role: "toolbar",
115
+ ...s,
116
+ "data-slot": r ?? "action-bar-content"
117
+ }
118
+ )
119
+ }
120
+ )
121
+ }
122
+ ) });
123
+ }, F = (t) => {
124
+ const { className: e, slot: o, ...r } = t;
125
+ return /* @__PURE__ */ c(
126
+ O,
127
+ {
128
+ className: u("mx-1 h-1/2", e),
129
+ orientation: "vertical",
130
+ ...r,
131
+ slot: o ?? "action-bar-separator"
132
+ }
133
+ );
134
+ }, G = (t) => {
135
+ const { className: e, onClick: o, slot: r, ...s } = t, { onClose: n, isOpen: i } = h(), a = (d) => {
136
+ n == null || n(), o == null || o(d);
137
+ };
138
+ return /* @__PURE__ */ c(
139
+ m.button,
140
+ {
141
+ "aria-label": "Close",
142
+ className: u(
143
+ "opacity-64 transition-opacity",
144
+ "hover:opacity-100",
145
+ "motion-reduce:transition-none!",
146
+ e
147
+ ),
148
+ "data-state": i ? "open" : "closed",
149
+ onClick: a,
150
+ type: "button",
151
+ ...s,
152
+ "data-slot": r ?? "action-bar-close"
153
+ }
154
+ );
155
+ }, H = (t) => {
156
+ const { label: e, count: o = 0, className: r, children: s, slot: n, ...i } = t;
157
+ return /* @__PURE__ */ c(
158
+ E,
159
+ {
160
+ className: u("shrink-0 font-medium text-sm tabular-nums", r),
161
+ variant: "secondary",
162
+ ...i,
163
+ slot: n ?? "action-bar-value",
164
+ children: s ?? e ?? o
165
+ }
166
+ );
167
+ }, J = (t) => {
168
+ const { className: e, ...o } = t;
169
+ return /* @__PURE__ */ c(
170
+ m.div,
171
+ {
172
+ className: u(
173
+ "flex items-center gap-1",
174
+ "**:data-[slot=action-bar-separator]:h-2",
175
+ e
176
+ ),
177
+ ...o
178
+ }
179
+ );
180
+ }, h = () => {
181
+ const t = l.useContext(g);
182
+ if (!t)
183
+ throw new Error("useActionBar must be used within a ActionBarProvider.");
184
+ return t;
185
+ };
186
+ export {
187
+ R as ActionBar,
188
+ J as ActionBarBody,
189
+ G as ActionBarClose,
190
+ q as ActionBarContent,
191
+ F as ActionBarSeparator,
192
+ T as ActionBarTrigger,
193
+ H as ActionBarValue
194
+ };
195
+ //# sourceMappingURL=action-bar.js.map