@forthtilliath/forth-ui 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +279 -0
  3. package/dist/components/accordion/accordion-items.d.ts +3 -0
  4. package/dist/components/accordion/accordion-items.d.ts.map +1 -0
  5. package/dist/components/accordion/accordion-items.js +18 -0
  6. package/dist/components/accordion/accordion-multiple.d.ts +3 -0
  7. package/dist/components/accordion/accordion-multiple.d.ts.map +1 -0
  8. package/dist/components/accordion/accordion-multiple.js +8 -0
  9. package/dist/components/accordion/accordion-single.d.ts +3 -0
  10. package/dist/components/accordion/accordion-single.d.ts.map +1 -0
  11. package/dist/components/accordion/accordion-single.js +8 -0
  12. package/dist/components/accordion/accordion.d.ts +17 -0
  13. package/dist/components/accordion/accordion.d.ts.map +1 -0
  14. package/dist/components/accordion/accordion.js +23 -0
  15. package/dist/components/accordion/index.d.ts +2 -0
  16. package/dist/components/accordion/index.d.ts.map +1 -0
  17. package/dist/components/accordion/index.js +1 -0
  18. package/dist/components/accordion/types.d.ts +100 -0
  19. package/dist/components/accordion/types.d.ts.map +1 -0
  20. package/dist/components/accordion/types.js +1 -0
  21. package/dist/components/accordion/variants.d.ts +25 -0
  22. package/dist/components/accordion/variants.d.ts.map +1 -0
  23. package/dist/components/accordion/variants.js +96 -0
  24. package/dist/components/alert/alert.d.ts +38 -0
  25. package/dist/components/alert/alert.d.ts.map +1 -0
  26. package/dist/components/alert/alert.js +32 -0
  27. package/dist/components/alert/index.d.ts +5 -0
  28. package/dist/components/alert/index.d.ts.map +1 -0
  29. package/dist/components/alert/index.js +4 -0
  30. package/dist/components/alert/variants.d.ts +8 -0
  31. package/dist/components/alert/variants.d.ts.map +1 -0
  32. package/dist/components/alert/variants.js +110 -0
  33. package/dist/components/avatar/avatar-group.d.ts +26 -0
  34. package/dist/components/avatar/avatar-group.d.ts.map +1 -0
  35. package/dist/components/avatar/avatar-group.js +29 -0
  36. package/dist/components/avatar/avatar.d.ts +107 -0
  37. package/dist/components/avatar/avatar.d.ts.map +1 -0
  38. package/dist/components/avatar/avatar.js +26 -0
  39. package/dist/components/avatar/constants.d.ts +13 -0
  40. package/dist/components/avatar/constants.d.ts.map +1 -0
  41. package/dist/components/avatar/constants.js +8 -0
  42. package/dist/components/avatar/index.d.ts +5 -0
  43. package/dist/components/avatar/index.d.ts.map +1 -0
  44. package/dist/components/avatar/index.js +2 -0
  45. package/dist/components/avatar/variants.d.ts +31 -0
  46. package/dist/components/avatar/variants.d.ts.map +1 -0
  47. package/dist/components/avatar/variants.js +147 -0
  48. package/dist/components/badge/badge.d.ts +48 -0
  49. package/dist/components/badge/badge.d.ts.map +1 -0
  50. package/dist/components/badge/badge.js +33 -0
  51. package/dist/components/badge/index.d.ts +4 -0
  52. package/dist/components/badge/index.d.ts.map +1 -0
  53. package/dist/components/badge/index.js +1 -0
  54. package/dist/components/badge/variants.d.ts +12 -0
  55. package/dist/components/badge/variants.d.ts.map +1 -0
  56. package/dist/components/badge/variants.js +134 -0
  57. package/dist/components/banner/banner.d.ts +43 -0
  58. package/dist/components/banner/banner.d.ts.map +1 -0
  59. package/dist/components/banner/banner.js +44 -0
  60. package/dist/components/banner/index.d.ts +4 -0
  61. package/dist/components/banner/index.d.ts.map +1 -0
  62. package/dist/components/banner/index.js +1 -0
  63. package/dist/components/banner/variants.d.ts +9 -0
  64. package/dist/components/banner/variants.d.ts.map +1 -0
  65. package/dist/components/banner/variants.js +111 -0
  66. package/dist/components/bento-grid/bento-grid.d.ts +23 -0
  67. package/dist/components/bento-grid/bento-grid.d.ts.map +1 -0
  68. package/dist/components/bento-grid/bento-grid.js +30 -0
  69. package/dist/components/bento-grid/index.d.ts +3 -0
  70. package/dist/components/bento-grid/index.d.ts.map +1 -0
  71. package/dist/components/bento-grid/index.js +1 -0
  72. package/dist/components/breadcrumb/breadcrumb.d.ts +29 -0
  73. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
  74. package/dist/components/breadcrumb/breadcrumb.js +28 -0
  75. package/dist/components/breadcrumb/index.d.ts +3 -0
  76. package/dist/components/breadcrumb/index.d.ts.map +1 -0
  77. package/dist/components/breadcrumb/index.js +1 -0
  78. package/dist/components/button/button-group.d.ts +16 -0
  79. package/dist/components/button/button-group.d.ts.map +1 -0
  80. package/dist/components/button/button-group.js +13 -0
  81. package/dist/components/button/button.d.ts +28 -0
  82. package/dist/components/button/button.d.ts.map +1 -0
  83. package/dist/components/button/button.js +20 -0
  84. package/dist/components/button/index.d.ts +6 -0
  85. package/dist/components/button/index.d.ts.map +1 -0
  86. package/dist/components/button/index.js +2 -0
  87. package/dist/components/button/variants.d.ts +7 -0
  88. package/dist/components/button/variants.d.ts.map +1 -0
  89. package/dist/components/button/variants.js +27 -0
  90. package/dist/components/checkbox/checkbox-group.d.ts +30 -0
  91. package/dist/components/checkbox/checkbox-group.d.ts.map +1 -0
  92. package/dist/components/checkbox/checkbox-group.js +32 -0
  93. package/dist/components/checkbox/index.d.ts +3 -0
  94. package/dist/components/checkbox/index.d.ts.map +1 -0
  95. package/dist/components/checkbox/index.js +1 -0
  96. package/dist/components/chip/chip.d.ts +27 -0
  97. package/dist/components/chip/chip.d.ts.map +1 -0
  98. package/dist/components/chip/chip.js +18 -0
  99. package/dist/components/chip/index.d.ts +3 -0
  100. package/dist/components/chip/index.d.ts.map +1 -0
  101. package/dist/components/chip/index.js +1 -0
  102. package/dist/components/code-block/code-block.d.ts +31 -0
  103. package/dist/components/code-block/code-block.d.ts.map +1 -0
  104. package/dist/components/code-block/code-block.js +57 -0
  105. package/dist/components/code-block/index.d.ts +3 -0
  106. package/dist/components/code-block/index.d.ts.map +1 -0
  107. package/dist/components/code-block/index.js +1 -0
  108. package/dist/components/collapsible/collapsible.d.ts +41 -0
  109. package/dist/components/collapsible/collapsible.d.ts.map +1 -0
  110. package/dist/components/collapsible/collapsible.js +50 -0
  111. package/dist/components/collapsible/index.d.ts +7 -0
  112. package/dist/components/collapsible/index.d.ts.map +1 -0
  113. package/dist/components/collapsible/index.js +3 -0
  114. package/dist/components/color-picker/color-picker.d.ts +24 -0
  115. package/dist/components/color-picker/color-picker.d.ts.map +1 -0
  116. package/dist/components/color-picker/color-picker.js +40 -0
  117. package/dist/components/color-picker/index.d.ts +3 -0
  118. package/dist/components/color-picker/index.d.ts.map +1 -0
  119. package/dist/components/color-picker/index.js +1 -0
  120. package/dist/components/combobox/combobox.d.ts +31 -0
  121. package/dist/components/combobox/combobox.d.ts.map +1 -0
  122. package/dist/components/combobox/combobox.js +30 -0
  123. package/dist/components/combobox/index.d.ts +5 -0
  124. package/dist/components/combobox/index.d.ts.map +1 -0
  125. package/dist/components/combobox/index.js +2 -0
  126. package/dist/components/combobox/multi-select.d.ts +30 -0
  127. package/dist/components/combobox/multi-select.d.ts.map +1 -0
  128. package/dist/components/combobox/multi-select.js +53 -0
  129. package/dist/components/command-palette/command-palette.d.ts +37 -0
  130. package/dist/components/command-palette/command-palette.d.ts.map +1 -0
  131. package/dist/components/command-palette/command-palette.js +46 -0
  132. package/dist/components/command-palette/index.d.ts +3 -0
  133. package/dist/components/command-palette/index.d.ts.map +1 -0
  134. package/dist/components/command-palette/index.js +1 -0
  135. package/dist/components/confirm-dialog/confirm-context.d.ts +15 -0
  136. package/dist/components/confirm-dialog/confirm-context.d.ts.map +1 -0
  137. package/dist/components/confirm-dialog/confirm-context.js +2 -0
  138. package/dist/components/confirm-dialog/confirm-dialog.d.ts +18 -0
  139. package/dist/components/confirm-dialog/confirm-dialog.d.ts.map +1 -0
  140. package/dist/components/confirm-dialog/confirm-dialog.js +40 -0
  141. package/dist/components/confirm-dialog/index.d.ts +4 -0
  142. package/dist/components/confirm-dialog/index.d.ts.map +1 -0
  143. package/dist/components/confirm-dialog/index.js +2 -0
  144. package/dist/components/confirm-dialog/use-confirm.d.ts +4 -0
  145. package/dist/components/confirm-dialog/use-confirm.d.ts.map +1 -0
  146. package/dist/components/confirm-dialog/use-confirm.js +10 -0
  147. package/dist/components/count-animation/count-animation.d.ts +20 -0
  148. package/dist/components/count-animation/count-animation.d.ts.map +1 -0
  149. package/dist/components/count-animation/count-animation.js +42 -0
  150. package/dist/components/count-animation/index.d.ts +3 -0
  151. package/dist/components/count-animation/index.d.ts.map +1 -0
  152. package/dist/components/count-animation/index.js +1 -0
  153. package/dist/components/date-picker/date-picker.d.ts +27 -0
  154. package/dist/components/date-picker/date-picker.d.ts.map +1 -0
  155. package/dist/components/date-picker/date-picker.js +37 -0
  156. package/dist/components/date-picker/index.d.ts +3 -0
  157. package/dist/components/date-picker/index.d.ts.map +1 -0
  158. package/dist/components/date-picker/index.js +1 -0
  159. package/dist/components/description-list/description-list.d.ts +16 -0
  160. package/dist/components/description-list/description-list.d.ts.map +1 -0
  161. package/dist/components/description-list/description-list.js +24 -0
  162. package/dist/components/description-list/index.d.ts +2 -0
  163. package/dist/components/description-list/index.d.ts.map +1 -0
  164. package/dist/components/description-list/index.js +1 -0
  165. package/dist/components/dropdrawer/dropdrawer.d.ts +27 -0
  166. package/dist/components/dropdrawer/dropdrawer.d.ts.map +1 -0
  167. package/dist/components/dropdrawer/dropdrawer.js +26 -0
  168. package/dist/components/dropdrawer/index.d.ts +3 -0
  169. package/dist/components/dropdrawer/index.d.ts.map +1 -0
  170. package/dist/components/dropdrawer/index.js +1 -0
  171. package/dist/components/dropzone/dropzone.d.ts +27 -0
  172. package/dist/components/dropzone/dropzone.d.ts.map +1 -0
  173. package/dist/components/dropzone/dropzone.js +83 -0
  174. package/dist/components/dropzone/index.d.ts +3 -0
  175. package/dist/components/dropzone/index.d.ts.map +1 -0
  176. package/dist/components/dropzone/index.js +1 -0
  177. package/dist/components/field/field.d.ts +41 -0
  178. package/dist/components/field/field.d.ts.map +1 -0
  179. package/dist/components/field/field.js +48 -0
  180. package/dist/components/field/index.d.ts +3 -0
  181. package/dist/components/field/index.d.ts.map +1 -0
  182. package/dist/components/field/index.js +1 -0
  183. package/dist/components/file-list/file-list.d.ts +29 -0
  184. package/dist/components/file-list/file-list.d.ts.map +1 -0
  185. package/dist/components/file-list/file-list.js +52 -0
  186. package/dist/components/file-list/index.d.ts +3 -0
  187. package/dist/components/file-list/index.d.ts.map +1 -0
  188. package/dist/components/file-list/index.js +1 -0
  189. package/dist/components/grid/context.d.ts +12 -0
  190. package/dist/components/grid/context.d.ts.map +1 -0
  191. package/dist/components/grid/context.js +5 -0
  192. package/dist/components/grid/grid-item.d.ts +14 -0
  193. package/dist/components/grid/grid-item.d.ts.map +1 -0
  194. package/dist/components/grid/grid-item.js +13 -0
  195. package/dist/components/grid/grid.d.ts +16 -0
  196. package/dist/components/grid/grid.d.ts.map +1 -0
  197. package/dist/components/grid/grid.js +19 -0
  198. package/dist/components/grid/index.d.ts +3 -0
  199. package/dist/components/grid/index.d.ts.map +1 -0
  200. package/dist/components/grid/index.js +2 -0
  201. package/dist/components/grid/variants.d.ts +16 -0
  202. package/dist/components/grid/variants.d.ts.map +1 -0
  203. package/dist/components/grid/variants.js +74 -0
  204. package/dist/components/image-input/image-input.d.ts +21 -0
  205. package/dist/components/image-input/image-input.d.ts.map +1 -0
  206. package/dist/components/image-input/image-input.js +45 -0
  207. package/dist/components/image-input/index.d.ts +3 -0
  208. package/dist/components/image-input/index.d.ts.map +1 -0
  209. package/dist/components/image-input/index.js +1 -0
  210. package/dist/components/infinite-scroll/index.d.ts +3 -0
  211. package/dist/components/infinite-scroll/index.d.ts.map +1 -0
  212. package/dist/components/infinite-scroll/index.js +1 -0
  213. package/dist/components/infinite-scroll/infinite-scroll.d.ts +20 -0
  214. package/dist/components/infinite-scroll/infinite-scroll.d.ts.map +1 -0
  215. package/dist/components/infinite-scroll/infinite-scroll.js +33 -0
  216. package/dist/components/kbd/index.d.ts +2 -0
  217. package/dist/components/kbd/index.d.ts.map +1 -0
  218. package/dist/components/kbd/index.js +1 -0
  219. package/dist/components/kbd/kbd.d.ts +15 -0
  220. package/dist/components/kbd/kbd.d.ts.map +1 -0
  221. package/dist/components/kbd/kbd.js +19 -0
  222. package/dist/components/link/index.d.ts +7 -0
  223. package/dist/components/link/index.d.ts.map +1 -0
  224. package/dist/components/link/index.js +3 -0
  225. package/dist/components/link/link-preview.d.ts +36 -0
  226. package/dist/components/link/link-preview.d.ts.map +1 -0
  227. package/dist/components/link/link-preview.js +27 -0
  228. package/dist/components/link/link.d.ts +27 -0
  229. package/dist/components/link/link.d.ts.map +1 -0
  230. package/dist/components/link/link.js +39 -0
  231. package/dist/components/link/variants.d.ts +8 -0
  232. package/dist/components/link/variants.d.ts.map +1 -0
  233. package/dist/components/link/variants.js +26 -0
  234. package/dist/components/marquee/index.d.ts +3 -0
  235. package/dist/components/marquee/index.d.ts.map +1 -0
  236. package/dist/components/marquee/index.js +1 -0
  237. package/dist/components/marquee/marquee.d.ts +22 -0
  238. package/dist/components/marquee/marquee.d.ts.map +1 -0
  239. package/dist/components/marquee/marquee.js +19 -0
  240. package/dist/components/multi-step-loader/index.d.ts +3 -0
  241. package/dist/components/multi-step-loader/index.d.ts.map +1 -0
  242. package/dist/components/multi-step-loader/index.js +1 -0
  243. package/dist/components/multi-step-loader/multi-step-loader.d.ts +41 -0
  244. package/dist/components/multi-step-loader/multi-step-loader.d.ts.map +1 -0
  245. package/dist/components/multi-step-loader/multi-step-loader.js +53 -0
  246. package/dist/components/navbar/index.d.ts +5 -0
  247. package/dist/components/navbar/index.d.ts.map +1 -0
  248. package/dist/components/navbar/index.js +2 -0
  249. package/dist/components/navbar/navbar-mobile-menu.d.ts +24 -0
  250. package/dist/components/navbar/navbar-mobile-menu.d.ts.map +1 -0
  251. package/dist/components/navbar/navbar-mobile-menu.js +18 -0
  252. package/dist/components/navbar/navbar.d.ts +24 -0
  253. package/dist/components/navbar/navbar.d.ts.map +1 -0
  254. package/dist/components/navbar/navbar.js +33 -0
  255. package/dist/components/notification-center/index.d.ts +3 -0
  256. package/dist/components/notification-center/index.d.ts.map +1 -0
  257. package/dist/components/notification-center/index.js +1 -0
  258. package/dist/components/notification-center/notification-center.d.ts +28 -0
  259. package/dist/components/notification-center/notification-center.d.ts.map +1 -0
  260. package/dist/components/notification-center/notification-center.js +24 -0
  261. package/dist/components/number-input/index.d.ts +3 -0
  262. package/dist/components/number-input/index.d.ts.map +1 -0
  263. package/dist/components/number-input/index.js +1 -0
  264. package/dist/components/number-input/number-input.d.ts +22 -0
  265. package/dist/components/number-input/number-input.d.ts.map +1 -0
  266. package/dist/components/number-input/number-input.js +37 -0
  267. package/dist/components/pagination/index.d.ts +5 -0
  268. package/dist/components/pagination/index.d.ts.map +1 -0
  269. package/dist/components/pagination/index.js +2 -0
  270. package/dist/components/pagination/pagination-range.d.ts +17 -0
  271. package/dist/components/pagination/pagination-range.d.ts.map +1 -0
  272. package/dist/components/pagination/pagination-range.js +30 -0
  273. package/dist/components/pagination/pagination.d.ts +26 -0
  274. package/dist/components/pagination/pagination.d.ts.map +1 -0
  275. package/dist/components/pagination/pagination.js +48 -0
  276. package/dist/components/password-input/index.d.ts +5 -0
  277. package/dist/components/password-input/index.d.ts.map +1 -0
  278. package/dist/components/password-input/index.js +2 -0
  279. package/dist/components/password-input/password-input.d.ts +15 -0
  280. package/dist/components/password-input/password-input.d.ts.map +1 -0
  281. package/dist/components/password-input/password-input.js +23 -0
  282. package/dist/components/password-input/password-strength-meter.d.ts +18 -0
  283. package/dist/components/password-input/password-strength-meter.d.ts.map +1 -0
  284. package/dist/components/password-input/password-strength-meter.js +40 -0
  285. package/dist/components/progress/index.d.ts +4 -0
  286. package/dist/components/progress/index.d.ts.map +1 -0
  287. package/dist/components/progress/index.js +1 -0
  288. package/dist/components/progress/progress.d.ts +25 -0
  289. package/dist/components/progress/progress.d.ts.map +1 -0
  290. package/dist/components/progress/progress.js +23 -0
  291. package/dist/components/progress/variants.d.ts +7 -0
  292. package/dist/components/progress/variants.d.ts.map +1 -0
  293. package/dist/components/progress/variants.js +25 -0
  294. package/dist/components/qr-code/index.d.ts +3 -0
  295. package/dist/components/qr-code/index.d.ts.map +1 -0
  296. package/dist/components/qr-code/index.js +1 -0
  297. package/dist/components/qr-code/qr-code.d.ts +28 -0
  298. package/dist/components/qr-code/qr-code.d.ts.map +1 -0
  299. package/dist/components/qr-code/qr-code.js +27 -0
  300. package/dist/components/radio/index.d.ts +3 -0
  301. package/dist/components/radio/index.d.ts.map +1 -0
  302. package/dist/components/radio/index.js +1 -0
  303. package/dist/components/radio/radio-card.d.ts +25 -0
  304. package/dist/components/radio/radio-card.d.ts.map +1 -0
  305. package/dist/components/radio/radio-card.js +24 -0
  306. package/dist/components/rating/index.d.ts +3 -0
  307. package/dist/components/rating/index.d.ts.map +1 -0
  308. package/dist/components/rating/index.js +1 -0
  309. package/dist/components/rating/rating.d.ts +23 -0
  310. package/dist/components/rating/rating.d.ts.map +1 -0
  311. package/dist/components/rating/rating.js +41 -0
  312. package/dist/components/relative-time/index.d.ts +3 -0
  313. package/dist/components/relative-time/index.d.ts.map +1 -0
  314. package/dist/components/relative-time/index.js +1 -0
  315. package/dist/components/relative-time/relative-time.d.ts +32 -0
  316. package/dist/components/relative-time/relative-time.d.ts.map +1 -0
  317. package/dist/components/relative-time/relative-time.js +62 -0
  318. package/dist/components/reparent/index.d.ts +3 -0
  319. package/dist/components/reparent/index.d.ts.map +1 -0
  320. package/dist/components/reparent/index.js +1 -0
  321. package/dist/components/reparent/reparent.d.ts +31 -0
  322. package/dist/components/reparent/reparent.d.ts.map +1 -0
  323. package/dist/components/reparent/reparent.js +51 -0
  324. package/dist/components/repeat/index.d.ts +2 -0
  325. package/dist/components/repeat/index.d.ts.map +1 -0
  326. package/dist/components/repeat/index.js +1 -0
  327. package/dist/components/repeat/repeat.d.ts +27 -0
  328. package/dist/components/repeat/repeat.d.ts.map +1 -0
  329. package/dist/components/repeat/repeat.js +15 -0
  330. package/dist/components/scroll-progress/index.d.ts +3 -0
  331. package/dist/components/scroll-progress/index.d.ts.map +1 -0
  332. package/dist/components/scroll-progress/index.js +1 -0
  333. package/dist/components/scroll-progress/scroll-progress.d.ts +19 -0
  334. package/dist/components/scroll-progress/scroll-progress.d.ts.map +1 -0
  335. package/dist/components/scroll-progress/scroll-progress.js +36 -0
  336. package/dist/components/scroll-shadow/index.d.ts +3 -0
  337. package/dist/components/scroll-shadow/index.d.ts.map +1 -0
  338. package/dist/components/scroll-shadow/index.js +1 -0
  339. package/dist/components/scroll-shadow/scroll-shadow.d.ts +20 -0
  340. package/dist/components/scroll-shadow/scroll-shadow.d.ts.map +1 -0
  341. package/dist/components/scroll-shadow/scroll-shadow.js +44 -0
  342. package/dist/components/scrollspy/index.d.ts +3 -0
  343. package/dist/components/scrollspy/index.d.ts.map +1 -0
  344. package/dist/components/scrollspy/index.js +1 -0
  345. package/dist/components/scrollspy/use-scrollspy.d.ts +30 -0
  346. package/dist/components/scrollspy/use-scrollspy.d.ts.map +1 -0
  347. package/dist/components/scrollspy/use-scrollspy.js +35 -0
  348. package/dist/components/separator/index.d.ts +3 -0
  349. package/dist/components/separator/index.d.ts.map +1 -0
  350. package/dist/components/separator/index.js +1 -0
  351. package/dist/components/separator/separator.d.ts +22 -0
  352. package/dist/components/separator/separator.d.ts.map +1 -0
  353. package/dist/components/separator/separator.js +21 -0
  354. package/dist/components/snippet/index.d.ts +3 -0
  355. package/dist/components/snippet/index.d.ts.map +1 -0
  356. package/dist/components/snippet/index.js +1 -0
  357. package/dist/components/snippet/snippet.d.ts +25 -0
  358. package/dist/components/snippet/snippet.d.ts.map +1 -0
  359. package/dist/components/snippet/snippet.js +33 -0
  360. package/dist/components/sortable/index.d.ts +3 -0
  361. package/dist/components/sortable/index.d.ts.map +1 -0
  362. package/dist/components/sortable/index.js +1 -0
  363. package/dist/components/sortable/sortable.d.ts +22 -0
  364. package/dist/components/sortable/sortable.d.ts.map +1 -0
  365. package/dist/components/sortable/sortable.js +47 -0
  366. package/dist/components/spacer/index.d.ts +3 -0
  367. package/dist/components/spacer/index.d.ts.map +1 -0
  368. package/dist/components/spacer/index.js +1 -0
  369. package/dist/components/spacer/spacer.d.ts +24 -0
  370. package/dist/components/spacer/spacer.d.ts.map +1 -0
  371. package/dist/components/spacer/spacer.js +23 -0
  372. package/dist/components/spinner/index.d.ts +4 -0
  373. package/dist/components/spinner/index.d.ts.map +1 -0
  374. package/dist/components/spinner/index.js +1 -0
  375. package/dist/components/spinner/spinner.d.ts +22 -0
  376. package/dist/components/spinner/spinner.d.ts.map +1 -0
  377. package/dist/components/spinner/spinner.js +19 -0
  378. package/dist/components/spinner/variants.d.ts +6 -0
  379. package/dist/components/spinner/variants.d.ts.map +1 -0
  380. package/dist/components/spinner/variants.js +13 -0
  381. package/dist/components/stepper/index.d.ts +3 -0
  382. package/dist/components/stepper/index.d.ts.map +1 -0
  383. package/dist/components/stepper/index.js +1 -0
  384. package/dist/components/stepper/stepper.d.ts +26 -0
  385. package/dist/components/stepper/stepper.d.ts.map +1 -0
  386. package/dist/components/stepper/stepper.js +27 -0
  387. package/dist/components/submit-button/index.d.ts +3 -0
  388. package/dist/components/submit-button/index.d.ts.map +1 -0
  389. package/dist/components/submit-button/index.js +1 -0
  390. package/dist/components/submit-button/submit-button.d.ts +19 -0
  391. package/dist/components/submit-button/submit-button.d.ts.map +1 -0
  392. package/dist/components/submit-button/submit-button.js +23 -0
  393. package/dist/components/tags-input/index.d.ts +3 -0
  394. package/dist/components/tags-input/index.d.ts.map +1 -0
  395. package/dist/components/tags-input/index.js +1 -0
  396. package/dist/components/tags-input/tags-input.d.ts +26 -0
  397. package/dist/components/tags-input/tags-input.d.ts.map +1 -0
  398. package/dist/components/tags-input/tags-input.js +61 -0
  399. package/dist/components/timeline/index.d.ts +3 -0
  400. package/dist/components/timeline/index.d.ts.map +1 -0
  401. package/dist/components/timeline/index.js +1 -0
  402. package/dist/components/timeline/timeline.d.ts +24 -0
  403. package/dist/components/timeline/timeline.d.ts.map +1 -0
  404. package/dist/components/timeline/timeline.js +21 -0
  405. package/dist/components/tree/index.d.ts +3 -0
  406. package/dist/components/tree/index.d.ts.map +1 -0
  407. package/dist/components/tree/index.js +1 -0
  408. package/dist/components/tree/tree.d.ts +26 -0
  409. package/dist/components/tree/tree.d.ts.map +1 -0
  410. package/dist/components/tree/tree.js +32 -0
  411. package/dist/globals.css +3004 -0
  412. package/package.json +63 -0
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { CalendarIcon } from "lucide-react";
5
+ import { Calendar } from "@forthtilliath/shadcn-ui/components/calendar";
6
+ import { Popover, PopoverContent, PopoverTrigger, } from "@forthtilliath/shadcn-ui/components/popover";
7
+ import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
8
+ import { Button } from "../button";
9
+ const DEFAULT_FORMAT_OPTIONS = {
10
+ dateStyle: "long",
11
+ };
12
+ /**
13
+ * A single-date picker — shadcn-ui's own docs describe this as a recipe
14
+ * (`Popover` + `Calendar`) rather than shipping a standalone primitive,
15
+ * one every consumer reassembles by hand. Wraps that recipe into a
16
+ * `value`/`onValueChange` component.
17
+ *
18
+ * _Inspired from multiple sources, to make a consistent and reusable component._
19
+ * @see https://ui.shadcn.com/docs/components/date-picker
20
+ * @see https://www.hextaui.com/docs/ui/components/date-picker
21
+ *
22
+ * @version 0.1.0
23
+ * @author Forth
24
+ * @copyright 2026 Forth
25
+ */
26
+ export function DatePicker({ value, defaultValue, onValueChange, placeholder = "Pick a date", disabled = false, className, formatOptions = DEFAULT_FORMAT_OPTIONS, }) {
27
+ const [open, setOpen] = React.useState(false);
28
+ const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);
29
+ const selected = value ?? uncontrolledValue;
30
+ return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { type: "button", variant: "outline", disabled: disabled, className: cn("w-full justify-start text-left font-normal", selected === undefined && "text-muted-foreground", className), children: [_jsx(CalendarIcon, {}), selected !== undefined
31
+ ? selected.toLocaleDateString(undefined, formatOptions)
32
+ : placeholder] }) }), _jsx(PopoverContent, { className: "w-auto p-0", align: "start", children: _jsx(Calendar, { mode: "single", selected: selected, onSelect: (date) => {
33
+ setUncontrolledValue(date);
34
+ onValueChange?.(date);
35
+ setOpen(false);
36
+ }, disabled: disabled }) })] }));
37
+ }
@@ -0,0 +1,3 @@
1
+ export type { DatePickerProps } from "./date-picker";
2
+ export { DatePicker } from "./date-picker";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/date-picker/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ export { DatePicker } from "./date-picker";
@@ -0,0 +1,16 @@
1
+ import type React from "react";
2
+ /**
3
+ * A description list, with terms and descriptions.
4
+ *
5
+ * _Inspired from multiple sources, to make a consistent and reusable component._
6
+ * @see https://ui-x.junwen-k.dev/docs/components/description-list
7
+ *
8
+ * @version 0.1.0
9
+ * @author Forth
10
+ * @copyright 2026 Forth
11
+ */
12
+ export declare function DescriptionList({ className, ...props }: React.ComponentProps<"dl">): React.JSX.Element;
13
+ export declare function DescriptionGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
14
+ export declare function DescriptionTerm({ className, ...props }: React.ComponentProps<"dt">): React.JSX.Element;
15
+ export declare function DescriptionDetail({ className, ...props }: React.ComponentProps<"dd">): React.JSX.Element;
16
+ //# sourceMappingURL=description-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description-list.d.ts","sourceRoot":"","sources":["../../../src/components/description-list/description-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ5B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAW5B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ5B"}
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
3
+ /**
4
+ * A description list, with terms and descriptions.
5
+ *
6
+ * _Inspired from multiple sources, to make a consistent and reusable component._
7
+ * @see https://ui-x.junwen-k.dev/docs/components/description-list
8
+ *
9
+ * @version 0.1.0
10
+ * @author Forth
11
+ * @copyright 2026 Forth
12
+ */
13
+ export function DescriptionList({ className, ...props }) {
14
+ return (_jsx("dl", { "data-slot": "description-list", className: cn("divide-border divide-y", className), ...props }));
15
+ }
16
+ export function DescriptionGroup({ className, ...props }) {
17
+ return (_jsx("div", { "data-slot": "description-group", className: cn("flex flex-col gap-1 py-3 first:pt-0 last:pb-0 sm:flex-row sm:gap-4", className), ...props }));
18
+ }
19
+ export function DescriptionTerm({ className, ...props }) {
20
+ return (_jsx("dt", { "data-slot": "description-term", className: cn("text-muted-foreground text-sm font-medium sm:w-1/3 sm:shrink-0", className), ...props }));
21
+ }
22
+ export function DescriptionDetail({ className, ...props }) {
23
+ return (_jsx("dd", { "data-slot": "description-detail", className: cn("text-sm sm:flex-1", className), ...props }));
24
+ }
@@ -0,0 +1,2 @@
1
+ export { DescriptionDetail, DescriptionGroup, DescriptionList, DescriptionTerm, } from "./description-list";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/description-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1 @@
1
+ export { DescriptionDetail, DescriptionGroup, DescriptionList, DescriptionTerm, } from "./description-list";
@@ -0,0 +1,27 @@
1
+ import type React from "react";
2
+ export interface DropdrawerItem {
3
+ label: React.ReactNode;
4
+ icon?: React.ReactNode;
5
+ onSelect?: () => void;
6
+ variant?: "default" | "destructive";
7
+ }
8
+ export interface DropdrawerProps {
9
+ items: DropdrawerItem[];
10
+ trigger: React.ReactElement;
11
+ title?: React.ReactNode;
12
+ open?: boolean;
13
+ onOpenChange?: (open: boolean) => void;
14
+ }
15
+ /**
16
+ * A menu that renders as a `DropdownMenu` on desktop and a bottom `Drawer`
17
+ * on mobile (via the existing `useIsMobile` hook) — the same items, the
18
+ * interaction pattern each platform's users actually expect.
19
+ *
20
+ * @see https://dropdrawer.jiawei.dev/
21
+ *
22
+ * @version 0.1.0
23
+ * @author Forth
24
+ * @copyright 2026 Forth
25
+ */
26
+ export declare function Dropdrawer({ items, trigger, title, open, onOpenChange, }: DropdrawerProps): React.JSX.Element;
27
+ //# sourceMappingURL=dropdrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdrawer.d.ts","sourceRoot":"","sources":["../../../src/components/dropdrawer/dropdrawer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkB/B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,KAAK,EACL,IAAI,EACJ,YAAY,GACb,EAAE,eAAe,qBAqDjB"}
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger, } from "@forthtilliath/shadcn-ui/components/drawer";
4
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@forthtilliath/shadcn-ui/components/dropdown-menu";
5
+ import { useIsMobile } from "@forthtilliath/shadcn-ui/hooks/use-mobile";
6
+ import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
7
+ /**
8
+ * A menu that renders as a `DropdownMenu` on desktop and a bottom `Drawer`
9
+ * on mobile (via the existing `useIsMobile` hook) — the same items, the
10
+ * interaction pattern each platform's users actually expect.
11
+ *
12
+ * @see https://dropdrawer.jiawei.dev/
13
+ *
14
+ * @version 0.1.0
15
+ * @author Forth
16
+ * @copyright 2026 Forth
17
+ */
18
+ export function Dropdrawer({ items, trigger, title, open, onOpenChange, }) {
19
+ const isMobile = useIsMobile();
20
+ if (isMobile) {
21
+ return (_jsxs(Drawer, { open: open, onOpenChange: onOpenChange, children: [_jsx(DrawerTrigger, { asChild: true, children: trigger }), _jsxs(DrawerContent, { children: [title !== undefined && (_jsx(DrawerHeader, { children: _jsx(DrawerTitle, { children: title }) })), _jsx("div", { className: "grid gap-1 p-4 pt-0", children: items.map((item, index) => (_jsxs("button", { type: "button", onClick: item.onSelect, className: cn("hover:bg-accent flex items-center gap-2 rounded-md px-3 py-2.5 text-left text-sm", item.variant === "destructive" && "text-destructive"), children: [item.icon, item.label] }, index))) })] })] }));
22
+ }
23
+ return (_jsxs(DropdownMenu, { open: open, onOpenChange: onOpenChange, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: trigger }), _jsx(DropdownMenuContent, { children: items.map((item, index) => (_jsxs(DropdownMenuItem
24
+ // eslint-disable-next-line @eslint-react/no-array-index-key -- see above
25
+ , { onSelect: item.onSelect, variant: item.variant, children: [item.icon, item.label] }, index))) })] }));
26
+ }
@@ -0,0 +1,3 @@
1
+ export type { DropdrawerItem, DropdrawerProps } from "./dropdrawer";
2
+ export { Dropdrawer } from "./dropdrawer";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dropdrawer/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1 @@
1
+ export { Dropdrawer } from "./dropdrawer";
@@ -0,0 +1,27 @@
1
+ import * as React from "react";
2
+ export interface DropzoneProps {
3
+ value?: File[];
4
+ defaultValue?: File[];
5
+ onValueChange?: (files: File[]) => void;
6
+ accept?: string;
7
+ multiple?: boolean;
8
+ maxFiles?: number;
9
+ /** Maximum size per file, in bytes. Oversized files are silently dropped. */
10
+ maxSize?: number;
11
+ disabled?: boolean;
12
+ className?: string;
13
+ }
14
+ /**
15
+ * A drag-and-drop file upload zone, listing accepted files below via
16
+ * `FileList`.
17
+ *
18
+ * _Inspired from multiple sources, to make a consistent and reusable component._
19
+ * @see https://www.kibo-ui.com/components/dropzone
20
+ * @see https://ui.aceternity.com/components/file-upload
21
+ *
22
+ * @version 0.1.0
23
+ * @author Forth
24
+ * @copyright 2026 Forth
25
+ */
26
+ export declare function Dropzone({ value, defaultValue, onValueChange, accept, multiple, maxFiles, maxSize, disabled, className, }: DropzoneProps): React.JSX.Element;
27
+ //# sourceMappingURL=dropzone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropzone.d.ts","sourceRoot":"","sources":["../../../src/components/dropzone/dropzone.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,MAAM,EACN,QAAe,EACf,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,SAAS,GACV,EAAE,aAAa,qBA8Hf"}
@@ -0,0 +1,83 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { FileIcon, UploadIcon, XIcon } from "lucide-react";
5
+ import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
6
+ import { FileList, FileListAction, FileListActions, FileListDescription, FileListHeader, FileListIcon, FileListInfo, FileListItem, FileListName, } from "../file-list";
7
+ function formatBytes(bytes) {
8
+ if (bytes === 0) {
9
+ return "0 B";
10
+ }
11
+ const units = ["B", "KB", "MB", "GB"];
12
+ const exponent = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
13
+ return `${(bytes / 1024 ** exponent).toFixed(exponent === 0 ? 0 : 1)} ${units[exponent] ?? "B"}`;
14
+ }
15
+ function fileKey(file) {
16
+ return `${file.name}-${file.size.toString()}-${file.lastModified.toString()}`;
17
+ }
18
+ /**
19
+ * A drag-and-drop file upload zone, listing accepted files below via
20
+ * `FileList`.
21
+ *
22
+ * _Inspired from multiple sources, to make a consistent and reusable component._
23
+ * @see https://www.kibo-ui.com/components/dropzone
24
+ * @see https://ui.aceternity.com/components/file-upload
25
+ *
26
+ * @version 0.1.0
27
+ * @author Forth
28
+ * @copyright 2026 Forth
29
+ */
30
+ export function Dropzone({ value, defaultValue, onValueChange, accept, multiple = true, maxFiles, maxSize, disabled = false, className, }) {
31
+ const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue ?? []);
32
+ const [isDragging, setIsDragging] = React.useState(false);
33
+ const inputRef = React.useRef(null);
34
+ const files = value ?? uncontrolledValue;
35
+ function update(next) {
36
+ setUncontrolledValue(next);
37
+ onValueChange?.(next);
38
+ }
39
+ function addFiles(incoming) {
40
+ let next = [...files, ...Array.from(incoming)];
41
+ if (maxSize !== undefined) {
42
+ next = next.filter((file) => file.size <= maxSize);
43
+ }
44
+ if (maxFiles !== undefined) {
45
+ next = next.slice(0, maxFiles);
46
+ }
47
+ update(next);
48
+ }
49
+ function removeFile(file) {
50
+ update(files.filter((f) => f !== file));
51
+ }
52
+ function openFileDialog() {
53
+ if (!disabled) {
54
+ inputRef.current?.click();
55
+ }
56
+ }
57
+ return (_jsxs("div", { "data-slot": "dropzone", className: "grid gap-3", children: [_jsxs("div", { role: "button", tabIndex: disabled ? -1 : 0, "data-dragging": isDragging, "aria-disabled": disabled, onClick: openFileDialog, onKeyDown: (e) => {
58
+ if (!disabled && (e.key === "Enter" || e.key === " ")) {
59
+ e.preventDefault();
60
+ openFileDialog();
61
+ }
62
+ }, onDragOver: (e) => {
63
+ e.preventDefault();
64
+ if (!disabled) {
65
+ setIsDragging(true);
66
+ }
67
+ }, onDragLeave: () => {
68
+ setIsDragging(false);
69
+ }, onDrop: (e) => {
70
+ e.preventDefault();
71
+ setIsDragging(false);
72
+ if (!disabled) {
73
+ addFiles(e.dataTransfer.files);
74
+ }
75
+ }, className: cn("border-input hover:bg-accent/50 flex cursor-pointer flex-col items-center justify-center gap-2 rounded-lg border border-dashed p-8 text-center transition-colors", "data-[dragging=true]:border-primary data-[dragging=true]:bg-accent/50", disabled && "pointer-events-none cursor-not-allowed opacity-50", className), children: [_jsx(UploadIcon, { className: "text-muted-foreground size-8" }), _jsx("p", { className: "text-sm font-medium", children: "Drag & drop files here, or click to select" }), maxSize !== undefined && (_jsxs("p", { className: "text-muted-foreground text-xs", children: ["Max file size: ", formatBytes(maxSize)] })), _jsx("input", { ref: inputRef, type: "file", accept: accept, multiple: multiple, disabled: disabled, className: "hidden", onChange: (e) => {
76
+ if (e.target.files !== null) {
77
+ addFiles(e.target.files);
78
+ }
79
+ e.target.value = "";
80
+ } })] }), files.length > 0 && (_jsx(FileList, { children: files.map((file) => (_jsx(FileListItem, { children: _jsxs(FileListHeader, { children: [_jsx(FileListIcon, { children: _jsx(FileIcon, {}) }), _jsxs(FileListInfo, { children: [_jsx(FileListName, { children: file.name }), _jsx(FileListDescription, { children: formatBytes(file.size) })] }), _jsx(FileListActions, { children: _jsx(FileListAction, { onClick: () => {
81
+ removeFile(file);
82
+ }, "aria-label": "Remove file", children: _jsx(XIcon, {}) }) })] }) }, fileKey(file)))) }))] }));
83
+ }
@@ -0,0 +1,3 @@
1
+ export type { DropzoneProps } from "./dropzone";
2
+ export { Dropzone } from "./dropzone";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dropzone/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1 @@
1
+ export { Dropzone } from "./dropzone";
@@ -0,0 +1,41 @@
1
+ import * as React from "react";
2
+ interface FieldControlProps {
3
+ id?: string;
4
+ "aria-describedby"?: string;
5
+ "aria-invalid"?: boolean;
6
+ }
7
+ export interface FieldProps {
8
+ label?: React.ReactNode;
9
+ description?: React.ReactNode;
10
+ error?: React.ReactNode;
11
+ required?: boolean;
12
+ /**
13
+ * `vertical` (label above the control, e.g. Input/Textarea/Select) or
14
+ * `horizontal` (control beside the label, e.g. Checkbox/Switch).
15
+ * @default "vertical"
16
+ */
17
+ orientation?: "vertical" | "horizontal";
18
+ className?: string;
19
+ /** The form control — its `id`/`aria-describedby`/`aria-invalid` are wired up automatically. */
20
+ children: React.ReactElement<FieldControlProps>;
21
+ }
22
+ /**
23
+ * Wires a label, description and error message to a single form control —
24
+ * consolidates the "Checkbox Field" / "Input Field" / "Radio Field" /
25
+ * "Select Field" pattern (same label+control+description+error shape
26
+ * applied to every control type) into one control-agnostic component,
27
+ * independent of any form library.
28
+ *
29
+ * _Inspired from multiple sources, to make a consistent and reusable component._
30
+ * @see https://shuip.xyz/components/input-field
31
+ * @see https://shuip.xyz/components/checkbox-field
32
+ * @see https://shuip.xyz/components/radio-field
33
+ * @see https://shuip.xyz/components/select-field
34
+ *
35
+ * @version 0.1.0
36
+ * @author Forth
37
+ * @copyright 2026 Forth
38
+ */
39
+ export declare function Field({ label, description, error, required, orientation, className, children, }: FieldProps): React.JSX.Element;
40
+ export {};
41
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../src/components/field/field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,UAAU,iBAAiB;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gGAAgG;IAChG,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,WAAW,EACX,KAAK,EACL,QAAgB,EAChB,WAAwB,EACxB,SAAS,EACT,QAAQ,GACT,EAAE,UAAU,qBAiEZ"}
@@ -0,0 +1,48 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
4
+ /**
5
+ * Wires a label, description and error message to a single form control —
6
+ * consolidates the "Checkbox Field" / "Input Field" / "Radio Field" /
7
+ * "Select Field" pattern (same label+control+description+error shape
8
+ * applied to every control type) into one control-agnostic component,
9
+ * independent of any form library.
10
+ *
11
+ * _Inspired from multiple sources, to make a consistent and reusable component._
12
+ * @see https://shuip.xyz/components/input-field
13
+ * @see https://shuip.xyz/components/checkbox-field
14
+ * @see https://shuip.xyz/components/radio-field
15
+ * @see https://shuip.xyz/components/select-field
16
+ *
17
+ * @version 0.1.0
18
+ * @author Forth
19
+ * @copyright 2026 Forth
20
+ */
21
+ export function Field({ label, description, error, required = false, orientation = "vertical", className, children, }) {
22
+ const generatedId = React.useId();
23
+ const descriptionId = React.useId();
24
+ const errorId = React.useId();
25
+ const describedBy = [
26
+ description !== undefined ? descriptionId : null,
27
+ error !== undefined ? errorId : null,
28
+ ]
29
+ .filter((value) => value !== null)
30
+ .join(" ") || undefined;
31
+ const controlId = children.props.id ?? generatedId;
32
+ // cloneElement is required here (not `Slot`) since we're injecting
33
+ // specific accessibility attributes (id/aria-describedby/aria-invalid)
34
+ // onto an arbitrary single control, not merging arbitrary DOM props.
35
+ // eslint-disable-next-line @eslint-react/no-clone-element
36
+ const control = React.cloneElement(children, {
37
+ id: controlId,
38
+ "aria-describedby": describedBy,
39
+ "aria-invalid": error !== undefined,
40
+ });
41
+ const labelNode = label !== undefined && (_jsxs("label", { htmlFor: controlId, className: "text-sm leading-none font-medium", children: [label, required && _jsx("span", { className: "text-destructive", children: " *" })] }));
42
+ const descriptionNode = description !== undefined && (_jsx("p", { id: descriptionId, className: "text-muted-foreground text-sm", children: description }));
43
+ const errorNode = error !== undefined && (_jsx("p", { id: errorId, role: "alert", className: "text-destructive text-sm", children: error }));
44
+ if (orientation === "horizontal") {
45
+ return (_jsxs("div", { "data-slot": "field", className: cn("flex items-start gap-2", className), children: [control, _jsxs("div", { className: "grid gap-1", children: [labelNode, descriptionNode, errorNode] })] }));
46
+ }
47
+ return (_jsxs("div", { "data-slot": "field", className: cn("grid gap-1.5", className), children: [labelNode, control, descriptionNode, errorNode] }));
48
+ }
@@ -0,0 +1,3 @@
1
+ export type { FieldProps } from "./field";
2
+ export { Field } from "./field";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/field/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ export { Field } from "./field";
@@ -0,0 +1,29 @@
1
+ import type React from "react";
2
+ import { Progress } from "@forthtilliath/shadcn-ui/components/progress";
3
+ /**
4
+ * Displays a list of files with details such as name, size, and upload
5
+ * progress — a composable set of primitives, not a single all-in-one prop
6
+ * API (matches the source's own composition style).
7
+ *
8
+ * _Inspired from multiple sources, to make a consistent and reusable component._
9
+ * @see https://ui-x.junwen-k.dev/docs/components/file-list
10
+ *
11
+ * @version 0.1.0
12
+ * @author Forth
13
+ * @copyright 2026 Forth
14
+ */
15
+ export declare function FileList({ className, ...props }: React.ComponentProps<"ul">): React.JSX.Element;
16
+ export declare function FileListItem({ className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
17
+ export declare function FileListHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
18
+ export declare function FileListIcon({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
19
+ export declare function FileListInfo({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
20
+ export declare function FileListName({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
21
+ export declare function FileListDescription({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
22
+ export declare function FileListDescriptionSeparator({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
23
+ export declare function FileListActions({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
24
+ export declare function FileListAction({ className, ...props }: React.ComponentProps<"button">): React.JSX.Element;
25
+ export declare function FileListContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
26
+ export type FileListProgressProps = React.ComponentProps<typeof Progress>;
27
+ /** Wraps shadcn-ui's `Progress` for the upload-progress row. */
28
+ export declare function FileListProgress(props: FileListProgressProps): React.JSX.Element;
29
+ //# sourceMappingURL=file-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-list.d.ts","sourceRoot":"","sources":["../../../src/components/file-list/file-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAGxE;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ3E;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAW5B;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQ3B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAW3B;AAED,wBAAgB,4BAA4B,CAAC,EAC3C,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAW9B;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ7B;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,qBAYhC;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAI7B;AAED,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,CAAC;AAE1E,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,qBAE5D"}
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Progress } from "@forthtilliath/shadcn-ui/components/progress";
3
+ import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
4
+ /**
5
+ * Displays a list of files with details such as name, size, and upload
6
+ * progress — a composable set of primitives, not a single all-in-one prop
7
+ * API (matches the source's own composition style).
8
+ *
9
+ * _Inspired from multiple sources, to make a consistent and reusable component._
10
+ * @see https://ui-x.junwen-k.dev/docs/components/file-list
11
+ *
12
+ * @version 0.1.0
13
+ * @author Forth
14
+ * @copyright 2026 Forth
15
+ */
16
+ export function FileList({ className, ...props }) {
17
+ return (_jsx("ul", { "data-slot": "file-list", className: cn("flex flex-col gap-2", className), ...props }));
18
+ }
19
+ export function FileListItem({ className, ...props }) {
20
+ return (_jsx("li", { "data-slot": "file-list-item", className: cn("border-border flex flex-col gap-2 rounded-lg border p-3", className), ...props }));
21
+ }
22
+ export function FileListHeader({ className, ...props }) {
23
+ return (_jsx("div", { "data-slot": "file-list-header", className: cn("flex items-center gap-3", className), ...props }));
24
+ }
25
+ export function FileListIcon({ className, ...props }) {
26
+ return (_jsx("div", { "data-slot": "file-list-icon", className: cn("text-muted-foreground flex size-8 shrink-0 items-center justify-center [&>svg]:size-5", className), ...props }));
27
+ }
28
+ export function FileListInfo({ className, ...props }) {
29
+ return (_jsx("div", { "data-slot": "file-list-info", className: cn("min-w-0 flex-1", className), ...props }));
30
+ }
31
+ export function FileListName({ className, ...props }) {
32
+ return (_jsx("p", { "data-slot": "file-list-name", className: cn("truncate text-sm font-medium", className), ...props }));
33
+ }
34
+ export function FileListDescription({ className, ...props }) {
35
+ return (_jsx("p", { "data-slot": "file-list-description", className: cn("text-muted-foreground flex items-center text-xs", className), ...props }));
36
+ }
37
+ export function FileListDescriptionSeparator({ className, ...props }) {
38
+ return (_jsx("span", { "data-slot": "file-list-description-separator", "aria-hidden": "true", className: cn("mx-1.5", className), ...props, children: "\u00B7" }));
39
+ }
40
+ export function FileListActions({ className, ...props }) {
41
+ return (_jsx("div", { "data-slot": "file-list-actions", className: cn("flex shrink-0 items-center gap-1", className), ...props }));
42
+ }
43
+ export function FileListAction({ className, ...props }) {
44
+ return (_jsx("button", { type: "button", "data-slot": "file-list-action", className: cn("text-muted-foreground hover:text-foreground rounded-sm p-1 transition-colors outline-none focus-visible:ring-2 focus-visible:ring-current [&>svg]:size-4", className), ...props }));
45
+ }
46
+ export function FileListContent({ className, ...props }) {
47
+ return (_jsx("div", { "data-slot": "file-list-content", className: cn(className), ...props }));
48
+ }
49
+ /** Wraps shadcn-ui's `Progress` for the upload-progress row. */
50
+ export function FileListProgress(props) {
51
+ return _jsx(Progress, { "data-slot": "file-list-progress", ...props });
52
+ }
@@ -0,0 +1,3 @@
1
+ export type { FileListProgressProps } from "./file-list";
2
+ export { FileList, FileListAction, FileListActions, FileListContent, FileListDescription, FileListDescriptionSeparator, FileListHeader, FileListIcon, FileListInfo, FileListItem, FileListName, FileListProgress, } from "./file-list";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/file-list/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,QAAQ,EACR,cAAc,EACd,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ export { FileList, FileListAction, FileListActions, FileListContent, FileListDescription, FileListDescriptionSeparator, FileListHeader, FileListIcon, FileListInfo, FileListItem, FileListName, FileListProgress, } from "./file-list";
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ export declare const GridDebugContext: React.Context<{
3
+ /** If ``debug`` is enabled */
4
+ debug?: boolean;
5
+ isDebugActive: boolean;
6
+ }>;
7
+ export declare const useGridDebugContext: () => {
8
+ /** If ``debug`` is enabled */
9
+ debug?: boolean;
10
+ isDebugActive: boolean;
11
+ };
12
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/components/grid/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,gBAAgB;IAC3B,8BAA8B;YACtB,OAAO;mBACA,OAAO;EAGtB,CAAC;AAEH,eAAO,MAAM,mBAAmB;IAP9B,8BAA8B;YACtB,OAAO;mBACA,OAAO;CAK4C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ export const GridDebugContext = React.createContext({
3
+ isDebugActive: false,
4
+ });
5
+ export const useGridDebugContext = () => React.use(GridDebugContext);
@@ -0,0 +1,14 @@
1
+ import type React from "react";
2
+ import type { Prettify } from "@forthtilliath/types/object";
3
+ import { type GridItemVariants } from "./variants";
4
+ type Props = Prettify<GridItemVariants & React.ComponentProps<"div"> & {
5
+ children: React.ReactNode;
6
+ }>;
7
+ /**
8
+ * A GridItem is a component that represents an item inside a Grid.
9
+ *
10
+ * It receives the same props as a div and extends them with the GridItemVariants.
11
+ */
12
+ export declare function GridItem({ children, className, ...props }: Props): React.JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=grid-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-item.d.ts","sourceRoot":"","sources":["../../../src/components/grid/grid-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,YAAY,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CACnB,gBAAgB,GACd,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CACJ,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkB3B"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
3
+ import { useGridDebugContext } from "./context";
4
+ import { gridItemDebugVariants, gridItemVariants, } from "./variants";
5
+ /**
6
+ * A GridItem is a component that represents an item inside a Grid.
7
+ *
8
+ * It receives the same props as a div and extends them with the GridItemVariants.
9
+ */
10
+ export function GridItem({ children, className, ...props }) {
11
+ const { debug, isDebugActive } = useGridDebugContext();
12
+ return (_jsxs("div", { className: cn(gridItemVariants({ debug }), className), "data-slot": "grid-item", ...props, children: [children, debug && (_jsx("div", { className: cn(gridItemDebugVariants({ active: isDebugActive })), "data-slot": "grid-item-debug" }))] }));
13
+ }
@@ -0,0 +1,16 @@
1
+ import type React from "react";
2
+ import { type ClassValue } from "@forthtilliath/shadcn-ui/lib/utils";
3
+ import { type Prettify } from "@forthtilliath/types/object";
4
+ import { GridItem } from "./grid-item";
5
+ import type { GridVariants } from "./variants";
6
+ export type GridProps = Prettify<{
7
+ children?: React.ReactNode;
8
+ debug?: boolean;
9
+ debugKey?: string;
10
+ className?: ClassValue;
11
+ } & GridVariants & Omit<React.HTMLAttributes<HTMLDivElement>, "className">>;
12
+ export declare function Grid({ children, className, debug, debugKey, cols, spacing, ...props }: GridProps): React.JSX.Element;
13
+ export declare namespace Grid {
14
+ var Item: typeof GridItem;
15
+ }
16
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/components/grid/grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,KAAK,UAAU,EAAM,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,MAAM,SAAS,GAAG,QAAQ,CAC9B;IACE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,UAAU,CAAC;CACxB,GAAG,YAAY,GACd,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,CAC1D,CAAC;AAEF,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAc,EACd,IAAI,EACJ,OAAO,EACP,GAAG,KAAK,EACT,EAAE,SAAS,qBAqBX;yBA7Be,IAAI"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMemo, useState } from "react";
3
+ import { useKeyListener } from "@forthtilliath/react-hooks/useKeyListener";
4
+ import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
5
+ import { GridDebugContext } from "./context";
6
+ import { GridItem } from "./grid-item";
7
+ import { gridVariants } from "./variants";
8
+ export function Grid({ children, className, debug, debugKey = "g", cols, spacing, ...props }) {
9
+ const [isDebugActive, setIsDebugActive] = useState(true);
10
+ const contextValue = useMemo(() => ({ debug, isDebugActive }), [debug, isDebugActive]);
11
+ useKeyListener({ key: debugKey }, () => {
12
+ if (debug)
13
+ setIsDebugActive((v) => !v);
14
+ });
15
+ return (_jsx("div", { className: cn(gridVariants({ cols, spacing }), className, {
16
+ relative: debug,
17
+ }), ...props, children: _jsx(GridDebugContext, { value: contextValue, children: children }) }));
18
+ }
19
+ Grid.Item = GridItem;