@glyphui/ui 0.4.0 → 0.5.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 (546) hide show
  1. package/README.md +9 -6
  2. package/dist/chart.d.ts +14 -202
  3. package/dist/chart.js +14 -465
  4. package/dist/components/accordion/accordion.d.ts +15 -0
  5. package/dist/components/accordion/accordion.js +69 -0
  6. package/dist/components/accordion/accordion.styles.d.ts +65 -0
  7. package/dist/components/accordion/accordion.styles.js +30 -0
  8. package/dist/components/accordion/index.d.ts +3 -0
  9. package/dist/components/alert/alert-icons.js +62 -0
  10. package/dist/components/alert/alert.d.ts +19 -0
  11. package/dist/components/alert/alert.js +64 -0
  12. package/dist/components/alert/alert.styles.d.ts +107 -0
  13. package/dist/components/alert/alert.styles.js +86 -0
  14. package/dist/components/alert/index.d.ts +3 -0
  15. package/dist/components/alert-dialog/alert-dialog.d.ts +29 -0
  16. package/dist/components/alert-dialog/alert-dialog.js +89 -0
  17. package/dist/components/alert-dialog/alert-dialog.styles.d.ts +63 -0
  18. package/dist/components/alert-dialog/alert-dialog.styles.js +19 -0
  19. package/dist/components/alert-dialog/confirm-dialog.js +22 -0
  20. package/dist/components/alert-dialog/confirm.d.ts +30 -0
  21. package/dist/components/alert-dialog/confirm.js +62 -0
  22. package/dist/components/alert-dialog/index.d.ts +4 -0
  23. package/dist/components/aspect-ratio/aspect-ratio.d.ts +55 -0
  24. package/dist/components/aspect-ratio/aspect-ratio.js +28 -0
  25. package/dist/components/aspect-ratio/index.d.ts +2 -0
  26. package/dist/components/avatar/avatar.d.ts +13 -0
  27. package/dist/components/avatar/avatar.js +50 -0
  28. package/dist/components/avatar/avatar.styles.d.ts +77 -0
  29. package/dist/components/avatar/avatar.styles.js +32 -0
  30. package/dist/components/avatar/index.d.ts +3 -0
  31. package/dist/components/badge/badge.d.ts +10 -0
  32. package/dist/components/badge/badge.js +28 -0
  33. package/dist/components/badge/badge.styles.d.ts +62 -0
  34. package/dist/components/badge/badge.styles.js +72 -0
  35. package/dist/components/badge/index.d.ts +3 -0
  36. package/dist/components/banner/banner.d.ts +17 -0
  37. package/dist/components/banner/banner.js +71 -0
  38. package/dist/components/banner/banner.styles.d.ts +98 -0
  39. package/dist/components/banner/banner.styles.js +27 -0
  40. package/dist/components/banner/index.d.ts +3 -0
  41. package/dist/components/blockquote/blockquote.d.ts +72 -0
  42. package/dist/components/blockquote/blockquote.js +47 -0
  43. package/dist/components/blockquote/index.d.ts +2 -0
  44. package/dist/components/breadcrumb/breadcrumb.d.ts +28 -0
  45. package/dist/components/breadcrumb/breadcrumb.js +85 -0
  46. package/dist/components/breadcrumb/breadcrumb.styles.d.ts +63 -0
  47. package/dist/components/breadcrumb/breadcrumb.styles.js +18 -0
  48. package/dist/components/breadcrumb/index.d.ts +3 -0
  49. package/dist/components/button/button.d.ts +20 -0
  50. package/dist/components/button/button.js +52 -0
  51. package/dist/components/button/button.styles.d.ts +146 -0
  52. package/dist/components/button/button.styles.js +64 -0
  53. package/dist/components/button/index.d.ts +3 -0
  54. package/dist/components/calendar/calendar.d.ts +9 -0
  55. package/dist/components/calendar/calendar.js +75 -0
  56. package/dist/components/calendar/calendar.styles.d.ts +171 -0
  57. package/dist/components/calendar/calendar.styles.js +42 -0
  58. package/dist/components/calendar/index.d.ts +4 -0
  59. package/dist/components/card/card.d.ts +17 -0
  60. package/dist/components/card/card.js +79 -0
  61. package/dist/components/card/card.styles.d.ts +113 -0
  62. package/dist/components/card/card.styles.js +38 -0
  63. package/dist/components/card/index.d.ts +3 -0
  64. package/dist/components/carousel/carousel.d.ts +37 -0
  65. package/dist/components/carousel/carousel.js +190 -0
  66. package/dist/components/carousel/carousel.styles.d.ts +74 -0
  67. package/dist/components/carousel/carousel.styles.js +35 -0
  68. package/dist/components/carousel/index.d.ts +3 -0
  69. package/dist/components/checkbox/checkbox.d.ts +37 -0
  70. package/dist/components/checkbox/checkbox.js +44 -0
  71. package/dist/components/checkbox/index.d.ts +2 -0
  72. package/dist/components/code/code.d.ts +18 -0
  73. package/dist/components/code/code.js +75 -0
  74. package/dist/components/code/code.styles.d.ts +76 -0
  75. package/dist/components/code/code.styles.js +18 -0
  76. package/dist/components/code/index.d.ts +3 -0
  77. package/dist/components/collapsible/collapsible.d.ts +56 -0
  78. package/dist/components/collapsible/collapsible.js +43 -0
  79. package/dist/components/collapsible/index.d.ts +2 -0
  80. package/dist/components/combobox/combobox.d.ts +50 -0
  81. package/dist/components/combobox/combobox.js +141 -0
  82. package/dist/components/combobox/combobox.styles.d.ts +110 -0
  83. package/dist/components/combobox/combobox.styles.js +42 -0
  84. package/dist/components/combobox/index.d.ts +3 -0
  85. package/dist/components/command-menu/command-menu.d.ts +40 -0
  86. package/dist/components/command-menu/command-menu.js +148 -0
  87. package/dist/components/command-menu/command-menu.styles.d.ts +105 -0
  88. package/dist/components/command-menu/command-menu.styles.js +30 -0
  89. package/dist/components/command-menu/index.d.ts +3 -0
  90. package/dist/components/container/container.d.ts +34 -0
  91. package/dist/components/container/container.js +30 -0
  92. package/dist/components/container/index.d.ts +2 -0
  93. package/dist/components/context-menu/context-menu.d.ts +34 -0
  94. package/dist/components/context-menu/context-menu.js +157 -0
  95. package/dist/components/context-menu/context-menu.styles.d.ts +135 -0
  96. package/dist/components/context-menu/context-menu.styles.js +14 -0
  97. package/dist/components/context-menu/index.d.ts +3 -0
  98. package/dist/components/copy-button/copy-button.d.ts +61 -0
  99. package/dist/components/copy-button/copy-button.js +79 -0
  100. package/dist/components/copy-button/index.d.ts +2 -0
  101. package/dist/components/date-picker/date-picker.d.ts +51 -0
  102. package/dist/components/date-picker/date-picker.js +235 -0
  103. package/dist/components/date-picker/date-picker.styles.d.ts +77 -0
  104. package/dist/components/date-picker/date-picker.styles.js +31 -0
  105. package/dist/components/date-picker/index.d.ts +3 -0
  106. package/dist/components/description-list/description-list.d.ts +15 -0
  107. package/dist/components/description-list/description-list.js +51 -0
  108. package/dist/components/description-list/description-list.styles.d.ts +74 -0
  109. package/dist/components/description-list/description-list.styles.js +35 -0
  110. package/dist/components/description-list/index.d.ts +3 -0
  111. package/dist/components/dialog/close-icon.js +22 -0
  112. package/dist/components/dialog/dialog.d.ts +21 -0
  113. package/dist/components/dialog/dialog.js +79 -0
  114. package/dist/components/dialog/dialog.styles.d.ts +83 -0
  115. package/dist/components/dialog/dialog.styles.js +34 -0
  116. package/dist/components/dialog/index.d.ts +3 -0
  117. package/dist/components/dropdown-menu/dropdown-menu.d.ts +34 -0
  118. package/dist/components/dropdown-menu/dropdown-menu.js +160 -0
  119. package/dist/components/dropdown-menu/dropdown-menu.styles.d.ts +83 -0
  120. package/dist/components/dropdown-menu/dropdown-menu.styles.js +38 -0
  121. package/dist/components/dropdown-menu/index.d.ts +3 -0
  122. package/dist/components/eyebrow/eyebrow.d.ts +9 -0
  123. package/dist/components/eyebrow/eyebrow.js +20 -0
  124. package/dist/components/eyebrow/eyebrow.styles.d.ts +38 -0
  125. package/dist/components/eyebrow/eyebrow.styles.js +13 -0
  126. package/dist/components/eyebrow/index.d.ts +3 -0
  127. package/dist/components/field/field-context.d.ts +25 -0
  128. package/dist/components/field/field-context.js +27 -0
  129. package/dist/components/field/field.d.ts +28 -0
  130. package/dist/{field-CVbywksE.js → components/field/field.js} +6 -35
  131. package/dist/components/field/field.styles.d.ts +53 -0
  132. package/dist/components/field/field.styles.js +22 -0
  133. package/dist/components/field/index.d.ts +4 -0
  134. package/dist/components/file-upload/file-upload.d.ts +52 -0
  135. package/dist/components/file-upload/file-upload.js +266 -0
  136. package/dist/components/file-upload/file-upload.styles.d.ts +123 -0
  137. package/dist/components/file-upload/file-upload.styles.js +32 -0
  138. package/dist/components/file-upload/index.d.ts +3 -0
  139. package/dist/components/grid/grid.d.ts +168 -0
  140. package/dist/components/grid/grid.js +126 -0
  141. package/dist/components/grid/index.d.ts +2 -0
  142. package/dist/components/heading/heading.d.ts +12 -0
  143. package/dist/components/heading/heading.js +28 -0
  144. package/dist/components/heading/heading.styles.d.ts +65 -0
  145. package/dist/components/heading/heading.styles.js +15 -0
  146. package/dist/components/heading/index.d.ts +3 -0
  147. package/dist/components/hover-card/hover-card.d.ts +43 -0
  148. package/dist/components/hover-card/hover-card.js +27 -0
  149. package/dist/components/hover-card/index.d.ts +2 -0
  150. package/dist/components/input/index.d.ts +3 -0
  151. package/dist/components/input/input.d.ts +13 -0
  152. package/dist/components/input/input.js +33 -0
  153. package/dist/components/input/input.styles.d.ts +55 -0
  154. package/dist/components/input/input.styles.js +33 -0
  155. package/dist/components/input-otp/index.d.ts +4 -0
  156. package/dist/components/input-otp/index.js +5 -0
  157. package/dist/components/input-otp/input-otp.d.ts +23 -0
  158. package/dist/components/input-otp/input-otp.js +86 -0
  159. package/dist/components/input-otp/input-otp.styles.d.ts +71 -0
  160. package/dist/components/input-otp/input-otp.styles.js +30 -0
  161. package/dist/components/kbd/index.d.ts +2 -0
  162. package/dist/components/kbd/kbd.d.ts +30 -0
  163. package/dist/components/kbd/kbd.js +17 -0
  164. package/dist/components/label/index.d.ts +2 -0
  165. package/dist/components/label/label.d.ts +31 -0
  166. package/dist/components/label/label.js +17 -0
  167. package/dist/components/link/index.d.ts +3 -0
  168. package/dist/components/link/link.d.ts +14 -0
  169. package/dist/components/link/link.js +57 -0
  170. package/dist/components/link/link.styles.d.ts +89 -0
  171. package/dist/components/link/link.styles.js +33 -0
  172. package/dist/components/modal/index.d.ts +3 -0
  173. package/dist/components/modal/modal.d.ts +33 -0
  174. package/dist/components/modal/modal.js +56 -0
  175. package/dist/components/modal/modal.styles.d.ts +61 -0
  176. package/dist/components/modal/modal.styles.js +14 -0
  177. package/dist/components/navigation-menu/index.d.ts +3 -0
  178. package/dist/components/navigation-menu/navigation-menu.d.ts +37 -0
  179. package/dist/components/navigation-menu/navigation-menu.js +138 -0
  180. package/dist/components/navigation-menu/navigation-menu.styles.d.ts +111 -0
  181. package/dist/components/navigation-menu/navigation-menu.styles.js +39 -0
  182. package/dist/components/number-input/index.d.ts +3 -0
  183. package/dist/components/number-input/number-input.d.ts +30 -0
  184. package/dist/components/number-input/number-input.js +151 -0
  185. package/dist/components/number-input/number-input.styles.d.ts +68 -0
  186. package/dist/components/number-input/number-input.styles.js +35 -0
  187. package/dist/components/pagination/index.d.ts +4 -0
  188. package/dist/components/pagination/pagination-range.d.ts +11 -0
  189. package/dist/components/pagination/pagination-range.js +42 -0
  190. package/dist/components/pagination/pagination.d.ts +18 -0
  191. package/dist/components/pagination/pagination.js +94 -0
  192. package/dist/components/pagination/pagination.styles.d.ts +65 -0
  193. package/dist/components/pagination/pagination.styles.js +35 -0
  194. package/dist/components/password-input/index.d.ts +3 -0
  195. package/dist/components/password-input/password-input.d.ts +20 -0
  196. package/dist/components/password-input/password-input.js +106 -0
  197. package/dist/components/password-input/password-input.styles.d.ts +66 -0
  198. package/dist/components/password-input/password-input.styles.js +21 -0
  199. package/dist/components/popover/index.d.ts +2 -0
  200. package/dist/components/popover/popover.d.ts +52 -0
  201. package/dist/components/popover/popover.js +35 -0
  202. package/dist/components/progress/index.d.ts +3 -0
  203. package/dist/components/progress/progress.d.ts +29 -0
  204. package/dist/components/progress/progress.js +108 -0
  205. package/dist/components/progress/progress.styles.d.ts +236 -0
  206. package/dist/components/progress/progress.styles.js +69 -0
  207. package/dist/components/prose/index.d.ts +2 -0
  208. package/dist/components/prose/prose.d.ts +90 -0
  209. package/dist/components/prose/prose.js +67 -0
  210. package/dist/components/radio-group/index.d.ts +3 -0
  211. package/dist/components/radio-group/radio-group.d.ts +26 -0
  212. package/dist/components/radio-group/radio-group.js +102 -0
  213. package/dist/components/radio-group/radio-group.styles.d.ts +80 -0
  214. package/dist/components/radio-group/radio-group.styles.js +56 -0
  215. package/dist/components/resizable/index.d.ts +3 -0
  216. package/dist/components/resizable/resizable.d.ts +17 -0
  217. package/dist/components/resizable/resizable.js +81 -0
  218. package/dist/components/resizable/resizable.styles.d.ts +53 -0
  219. package/dist/components/resizable/resizable.styles.js +19 -0
  220. package/dist/components/scroll-area/index.d.ts +2 -0
  221. package/dist/components/scroll-area/scroll-area.d.ts +70 -0
  222. package/dist/components/scroll-area/scroll-area.js +70 -0
  223. package/dist/components/section/index.d.ts +2 -0
  224. package/dist/components/section/section.d.ts +52 -0
  225. package/dist/components/section/section.js +41 -0
  226. package/dist/components/segmented-control/index.d.ts +2 -0
  227. package/dist/components/segmented-control/segmented-control.d.ts +92 -0
  228. package/dist/components/segmented-control/segmented-control.js +86 -0
  229. package/dist/components/select/index.d.ts +2 -0
  230. package/dist/components/select/select.d.ts +85 -0
  231. package/dist/components/select/select.js +81 -0
  232. package/dist/components/separator/index.d.ts +2 -0
  233. package/dist/components/separator/separator.d.ts +40 -0
  234. package/dist/components/separator/separator.js +27 -0
  235. package/dist/components/sheet/index.d.ts +3 -0
  236. package/dist/components/sheet/sheet.d.ts +20 -0
  237. package/dist/components/sheet/sheet.js +83 -0
  238. package/dist/components/sheet/sheet.styles.d.ts +101 -0
  239. package/dist/components/sheet/sheet.styles.js +62 -0
  240. package/dist/components/skeleton/index.d.ts +2 -0
  241. package/dist/components/skeleton/skeleton.d.ts +30 -0
  242. package/dist/components/skeleton/skeleton.js +18 -0
  243. package/dist/components/slider/index.d.ts +3 -0
  244. package/dist/components/slider/slider.d.ts +38 -0
  245. package/dist/components/slider/slider.js +68 -0
  246. package/dist/components/slider/slider.styles.d.ts +56 -0
  247. package/dist/components/slider/slider.styles.js +23 -0
  248. package/dist/components/spinner/index.d.ts +3 -0
  249. package/dist/components/spinner/spinner.d.ts +9 -0
  250. package/dist/components/spinner/spinner.js +36 -0
  251. package/dist/components/spinner/spinner.styles.d.ts +53 -0
  252. package/dist/components/spinner/spinner.styles.js +18 -0
  253. package/dist/components/stack/index.d.ts +2 -0
  254. package/dist/components/stack/stack.d.ts +109 -0
  255. package/dist/components/stack/stack.js +62 -0
  256. package/dist/components/stat-card/index.d.ts +3 -0
  257. package/dist/components/stat-card/stat-card.d.ts +22 -0
  258. package/dist/components/stat-card/stat-card.js +82 -0
  259. package/dist/components/stat-card/stat-card.styles.d.ts +83 -0
  260. package/dist/components/stat-card/stat-card.styles.js +16 -0
  261. package/dist/components/stepper/index.d.ts +3 -0
  262. package/dist/components/stepper/stepper.d.ts +20 -0
  263. package/dist/components/stepper/stepper.js +100 -0
  264. package/dist/components/stepper/stepper.styles.d.ts +170 -0
  265. package/dist/components/stepper/stepper.styles.js +67 -0
  266. package/dist/components/switch/index.d.ts +2 -0
  267. package/dist/components/switch/switch.d.ts +51 -0
  268. package/dist/components/switch/switch.js +43 -0
  269. package/dist/components/table/index.d.ts +2 -0
  270. package/dist/components/table/table.d.ts +78 -0
  271. package/dist/components/table/table.js +82 -0
  272. package/dist/components/tabs/index.d.ts +2 -0
  273. package/dist/components/tabs/tabs.d.ts +73 -0
  274. package/dist/components/tabs/tabs.js +103 -0
  275. package/dist/components/tag-input/index.d.ts +3 -0
  276. package/dist/components/tag-input/tag-input.d.ts +30 -0
  277. package/dist/components/tag-input/tag-input.js +149 -0
  278. package/dist/components/tag-input/tag-input.styles.d.ts +71 -0
  279. package/dist/components/tag-input/tag-input.styles.js +29 -0
  280. package/dist/components/text/index.d.ts +3 -0
  281. package/dist/components/text/text.d.ts +9 -0
  282. package/dist/components/text/text.js +25 -0
  283. package/dist/components/text/text.styles.d.ts +188 -0
  284. package/dist/components/text/text.styles.js +36 -0
  285. package/dist/components/textarea/index.d.ts +2 -0
  286. package/dist/components/textarea/textarea.d.ts +29 -0
  287. package/dist/components/textarea/textarea.js +23 -0
  288. package/dist/components/timeline/index.d.ts +3 -0
  289. package/dist/components/timeline/timeline.d.ts +28 -0
  290. package/dist/components/timeline/timeline.js +61 -0
  291. package/dist/components/timeline/timeline.styles.d.ts +110 -0
  292. package/dist/components/timeline/timeline.styles.js +30 -0
  293. package/dist/components/toast/index.d.ts +2 -0
  294. package/dist/components/toast/toast.d.ts +119 -0
  295. package/dist/components/toast/toast.js +75 -0
  296. package/dist/components/toggle/index.d.ts +3 -0
  297. package/dist/components/toggle/toggle.d.ts +20 -0
  298. package/dist/components/toggle/toggle.js +58 -0
  299. package/dist/components/toggle/toggle.styles.d.ts +80 -0
  300. package/dist/components/toggle/toggle.styles.js +34 -0
  301. package/dist/components/tooltip/index.d.ts +2 -0
  302. package/dist/components/tooltip/tooltip.d.ts +39 -0
  303. package/dist/components/tooltip/tooltip.js +29 -0
  304. package/dist/components/tree-view/index.d.ts +3 -0
  305. package/dist/components/tree-view/tree-view.d.ts +31 -0
  306. package/dist/components/tree-view/tree-view.js +192 -0
  307. package/dist/components/tree-view/tree-view.styles.d.ts +59 -0
  308. package/dist/components/tree-view/tree-view.styles.js +32 -0
  309. package/dist/components/visually-hidden/index.d.ts +2 -0
  310. package/dist/components/visually-hidden/visually-hidden.d.ts +10 -0
  311. package/dist/components/visually-hidden/visually-hidden.js +16 -0
  312. package/dist/data-table.d.ts +3 -110
  313. package/dist/data-table.js +2 -224
  314. package/dist/form.d.ts +2 -86
  315. package/dist/form.js +1 -108
  316. package/dist/hooks/index.d.ts +5 -0
  317. package/dist/hooks/use-component-config.d.ts +13 -0
  318. package/dist/hooks/use-component-config.js +22 -0
  319. package/dist/hooks/use-controllable-state.d.ts +9 -0
  320. package/dist/hooks/use-controllable-state.js +18 -0
  321. package/dist/hooks/use-media-query.d.ts +4 -0
  322. package/dist/hooks/use-media-query.js +13 -0
  323. package/dist/hooks/use-scrolled.d.ts +4 -0
  324. package/dist/hooks/use-scrolled.js +17 -0
  325. package/dist/index.d.ts +223 -6856
  326. package/dist/index.js +148 -6791
  327. package/dist/internal/dev.js +12 -0
  328. package/dist/internal/icons.js +91 -0
  329. package/dist/motion/active-indicator.d.ts +12 -0
  330. package/dist/motion/active-indicator.js +26 -0
  331. package/dist/motion/animated-number.d.ts +21 -0
  332. package/dist/motion/animated-number.js +88 -0
  333. package/dist/motion/features.js +10 -0
  334. package/dist/motion/index.d.ts +10 -0
  335. package/dist/motion/index.js +10 -0
  336. package/dist/motion/motion-root.js +48 -0
  337. package/dist/motion/page-transition.d.ts +16 -0
  338. package/dist/motion/page-transition.js +23 -0
  339. package/dist/motion/presence-list.js +46 -0
  340. package/dist/motion/presence.d.ts +11 -0
  341. package/dist/motion/presence.js +17 -0
  342. package/dist/motion/reveal.d.ts +18 -0
  343. package/dist/motion/reveal.js +37 -0
  344. package/dist/motion/stagger.d.ts +29 -0
  345. package/dist/motion/stagger.js +52 -0
  346. package/dist/motion/use-motion-settings.d.ts +25 -0
  347. package/dist/motion/use-motion-settings.js +47 -0
  348. package/dist/motion/use-reveal.d.ts +11 -0
  349. package/dist/motion/use-reveal.js +41 -0
  350. package/dist/patterns/app-shell/app-shell-context.d.ts +14 -0
  351. package/dist/patterns/app-shell/app-shell-context.js +16 -0
  352. package/dist/patterns/app-shell/app-shell.d.ts +21 -0
  353. package/dist/patterns/app-shell/app-shell.js +82 -0
  354. package/dist/patterns/app-shell/app-shell.styles.d.ts +302 -0
  355. package/dist/patterns/app-shell/app-shell.styles.js +106 -0
  356. package/dist/patterns/app-shell/index.d.ts +7 -0
  357. package/dist/patterns/app-shell/navbar.d.ts +29 -0
  358. package/dist/patterns/app-shell/navbar.js +116 -0
  359. package/dist/patterns/app-shell/page-header.d.ts +12 -0
  360. package/dist/patterns/app-shell/page-header.js +38 -0
  361. package/dist/patterns/app-shell/sidebar.d.ts +31 -0
  362. package/dist/patterns/app-shell/sidebar.js +141 -0
  363. package/dist/patterns/async/async.d.ts +40 -0
  364. package/dist/patterns/async/async.js +61 -0
  365. package/dist/patterns/async/index.d.ts +3 -0
  366. package/dist/patterns/async/states.d.ts +68 -0
  367. package/dist/patterns/async/states.js +116 -0
  368. package/dist/patterns/chart/cartesian.d.ts +128 -0
  369. package/dist/patterns/chart/cartesian.js +552 -0
  370. package/dist/patterns/chart/chart-card.d.ts +39 -0
  371. package/dist/patterns/chart/chart-card.js +103 -0
  372. package/dist/patterns/chart/chart-parts.d.ts +53 -0
  373. package/dist/patterns/chart/chart-parts.js +282 -0
  374. package/dist/patterns/chart/chart.styles.d.ts +200 -0
  375. package/dist/patterns/chart/chart.styles.js +43 -0
  376. package/dist/patterns/chart/export.d.ts +45 -0
  377. package/dist/patterns/chart/export.js +293 -0
  378. package/dist/patterns/chart/funnel.d.ts +23 -0
  379. package/dist/patterns/chart/funnel.js +129 -0
  380. package/dist/patterns/chart/heatmap.d.ts +37 -0
  381. package/dist/patterns/chart/heatmap.js +258 -0
  382. package/dist/patterns/chart/icons.js +39 -0
  383. package/dist/patterns/chart/pie.d.ts +36 -0
  384. package/dist/patterns/chart/pie.js +120 -0
  385. package/dist/patterns/chart/radial.d.ts +75 -0
  386. package/dist/patterns/chart/radial.js +282 -0
  387. package/dist/patterns/chart/sankey.d.ts +29 -0
  388. package/dist/patterns/chart/sankey.js +136 -0
  389. package/dist/patterns/chart/scatter.d.ts +42 -0
  390. package/dist/patterns/chart/scatter.js +203 -0
  391. package/dist/patterns/chart/sparkline.d.ts +20 -0
  392. package/dist/patterns/chart/sparkline.js +102 -0
  393. package/dist/patterns/chart/treemap.d.ts +25 -0
  394. package/dist/patterns/chart/treemap.js +128 -0
  395. package/dist/patterns/chart/use-element-width.js +23 -0
  396. package/dist/patterns/data-table/data-table.d.ts +109 -0
  397. package/dist/patterns/data-table/data-table.js +233 -0
  398. package/dist/patterns/form/form.d.ts +89 -0
  399. package/dist/patterns/form/form.js +111 -0
  400. package/dist/{color-mode-script-KdwItKN2.d.ts → provider/color-mode-script.d.ts} +4 -5
  401. package/dist/{color-mode-script-Bf7LYkOj.js → provider/color-mode-script.js} +1 -1
  402. package/dist/provider/color-mode.d.ts +24 -0
  403. package/dist/provider/color-mode.js +87 -0
  404. package/dist/{glyph-context-DxGJrdvr.d.ts → provider/glyph-context.d.ts} +13 -12
  405. package/dist/provider/glyph-context.js +28 -0
  406. package/dist/provider/glyph-provider.d.ts +37 -0
  407. package/dist/provider/glyph-provider.js +48 -0
  408. package/dist/provider/index.d.ts +6 -0
  409. package/dist/provider/theme-scope.d.ts +12 -0
  410. package/dist/provider/theme-scope.js +42 -0
  411. package/dist/provider/theme-style.js +15 -0
  412. package/dist/react-router.d.ts +1 -1
  413. package/dist/register.d.ts +57 -0
  414. package/dist/themes.d.ts +22 -0
  415. package/dist/themes.js +49 -0
  416. package/dist/utils/cn.d.ts +6 -0
  417. package/dist/utils/cn.js +12 -0
  418. package/dist/utils/compose-refs.js +11 -0
  419. package/dist/{registry-BGSJoiLq.d.ts → utils/registry.d.ts} +2 -3
  420. package/dist/utils/styles.js +20 -0
  421. package/dist/{tv-DuMh7UH2.d.ts → utils/tv.d.ts} +2 -2
  422. package/dist/utils/tv.js +8 -0
  423. package/dist/utils/tw-merge-config.js +13 -0
  424. package/dist/vite.d.ts +1 -1
  425. package/dist/vite.js +1 -1
  426. package/package.json +3 -2
  427. package/src/components/accordion/accordion.styles.ts +1 -1
  428. package/src/components/alert/alert.styles.ts +1 -1
  429. package/src/components/alert-dialog/alert-dialog.styles.ts +5 -4
  430. package/src/components/alert-dialog/confirm-dialog.tsx +42 -0
  431. package/src/components/alert-dialog/confirm.tsx +12 -31
  432. package/src/components/aspect-ratio/aspect-ratio.tsx +1 -1
  433. package/src/components/avatar/avatar.styles.ts +1 -1
  434. package/src/components/badge/badge.styles.ts +1 -1
  435. package/src/components/banner/banner.styles.ts +1 -1
  436. package/src/components/blockquote/blockquote.tsx +1 -1
  437. package/src/components/breadcrumb/breadcrumb.styles.ts +1 -1
  438. package/src/components/button/button.styles.ts +4 -2
  439. package/src/components/calendar/calendar.styles.ts +1 -1
  440. package/src/components/card/card.styles.ts +1 -1
  441. package/src/components/carousel/carousel.styles.ts +1 -1
  442. package/src/components/checkbox/checkbox.tsx +20 -5
  443. package/src/components/code/code.styles.ts +2 -2
  444. package/src/components/collapsible/collapsible.tsx +1 -1
  445. package/src/components/combobox/combobox.styles.ts +5 -2
  446. package/src/components/command-menu/command-menu.styles.ts +6 -4
  447. package/src/components/container/container.tsx +1 -1
  448. package/src/components/context-menu/context-menu.styles.ts +4 -2
  449. package/src/components/copy-button/copy-button.tsx +1 -1
  450. package/src/components/date-picker/date-picker.styles.ts +2 -2
  451. package/src/components/description-list/description-list.styles.ts +1 -1
  452. package/src/components/dialog/dialog.styles.ts +11 -4
  453. package/src/components/dropdown-menu/dropdown-menu.styles.ts +3 -3
  454. package/src/components/eyebrow/eyebrow.styles.ts +1 -1
  455. package/src/components/field/field.styles.ts +1 -1
  456. package/src/components/file-upload/file-upload.styles.ts +1 -1
  457. package/src/components/file-upload/file-upload.tsx +51 -48
  458. package/src/components/grid/grid.tsx +1 -1
  459. package/src/components/heading/heading.styles.ts +1 -1
  460. package/src/components/hover-card/hover-card.tsx +5 -2
  461. package/src/components/input/input.styles.ts +1 -1
  462. package/src/components/input-otp/input-otp.styles.ts +1 -1
  463. package/src/components/kbd/kbd.tsx +1 -1
  464. package/src/components/label/label.tsx +1 -1
  465. package/src/components/link/link.styles.ts +1 -1
  466. package/src/components/modal/modal.styles.ts +1 -1
  467. package/src/components/navigation-menu/navigation-menu.styles.ts +2 -2
  468. package/src/components/number-input/number-input.styles.ts +1 -1
  469. package/src/components/pagination/pagination.styles.ts +6 -4
  470. package/src/components/pagination/pagination.tsx +14 -1
  471. package/src/components/password-input/password-input.styles.ts +1 -1
  472. package/src/components/popover/popover.tsx +1 -1
  473. package/src/components/progress/progress.styles.ts +2 -2
  474. package/src/components/prose/prose.tsx +1 -1
  475. package/src/components/radio-group/radio-group.styles.ts +1 -1
  476. package/src/components/resizable/resizable.styles.ts +1 -1
  477. package/src/components/scroll-area/scroll-area.tsx +1 -1
  478. package/src/components/section/section.tsx +1 -1
  479. package/src/components/segmented-control/segmented-control.tsx +24 -8
  480. package/src/components/select/select.tsx +2 -2
  481. package/src/components/separator/separator.tsx +1 -1
  482. package/src/components/sheet/sheet.styles.ts +1 -1
  483. package/src/components/skeleton/skeleton.tsx +1 -1
  484. package/src/components/slider/slider.styles.ts +1 -1
  485. package/src/components/spinner/spinner.styles.ts +1 -1
  486. package/src/components/stack/stack.tsx +1 -1
  487. package/src/components/stat-card/stat-card.styles.ts +1 -1
  488. package/src/components/stepper/stepper.styles.ts +1 -1
  489. package/src/components/switch/switch.tsx +2 -2
  490. package/src/components/table/table.tsx +1 -1
  491. package/src/components/tabs/tabs.tsx +46 -15
  492. package/src/components/tag-input/tag-input.styles.ts +1 -1
  493. package/src/components/tag-input/tag-input.tsx +27 -18
  494. package/src/components/text/text.styles.ts +1 -1
  495. package/src/components/textarea/textarea.tsx +1 -1
  496. package/src/components/timeline/timeline.styles.ts +1 -1
  497. package/src/components/toast/toast.tsx +1 -1
  498. package/src/components/toggle/toggle.styles.ts +1 -1
  499. package/src/components/tooltip/tooltip.tsx +6 -3
  500. package/src/components/tree-view/tree-view.styles.ts +1 -1
  501. package/src/index.ts +3 -0
  502. package/src/motion/active-indicator.tsx +26 -0
  503. package/src/motion/animated-number.tsx +113 -0
  504. package/src/motion/features.ts +7 -0
  505. package/src/motion/index.ts +9 -0
  506. package/src/motion/motion-root.tsx +46 -0
  507. package/src/motion/page-transition.tsx +30 -0
  508. package/src/motion/presence-list.tsx +42 -0
  509. package/src/motion/presence.tsx +13 -0
  510. package/src/motion/reveal.tsx +50 -0
  511. package/src/motion/stagger.tsx +81 -0
  512. package/src/motion/use-motion-settings.ts +52 -0
  513. package/src/motion/use-reveal.ts +54 -0
  514. package/src/patterns/app-shell/app-shell.styles.ts +18 -11
  515. package/src/patterns/app-shell/sidebar.tsx +28 -7
  516. package/src/patterns/async/states.tsx +1 -1
  517. package/src/patterns/chart/cartesian.tsx +755 -0
  518. package/src/patterns/chart/chart-card.tsx +148 -0
  519. package/src/patterns/chart/chart-parts.tsx +323 -58
  520. package/src/patterns/chart/chart.styles.ts +29 -3
  521. package/src/patterns/chart/export.ts +334 -0
  522. package/src/patterns/chart/funnel.tsx +171 -0
  523. package/src/patterns/chart/heatmap.tsx +339 -0
  524. package/src/patterns/chart/icons.tsx +44 -0
  525. package/src/patterns/chart/index.ts +52 -7
  526. package/src/patterns/chart/pie.tsx +169 -0
  527. package/src/patterns/chart/radial.tsx +361 -0
  528. package/src/patterns/chart/sankey.tsx +197 -0
  529. package/src/patterns/chart/scatter.tsx +254 -0
  530. package/src/patterns/chart/sparkline.tsx +111 -0
  531. package/src/patterns/chart/test-utils.tsx +35 -0
  532. package/src/patterns/chart/treemap.tsx +198 -0
  533. package/src/patterns/chart/use-element-width.ts +20 -0
  534. package/src/patterns/data-table/data-table.tsx +1 -1
  535. package/src/patterns/form/form.tsx +1 -1
  536. package/src/provider/glyph-context.ts +3 -1
  537. package/src/provider/glyph-provider.tsx +31 -12
  538. package/src/provider/theme-scope.tsx +14 -9
  539. package/src/themes.ts +3 -3
  540. package/src/utils/styles.ts +17 -3
  541. package/styles.css +122 -3
  542. package/dist/field-context-7I-cWvvS.js +0 -267
  543. package/dist/index-Bi7rZ6ba.d.ts +0 -244
  544. package/dist/states-IvhjBgna.js +0 -288
  545. package/dist/tv-DLbT66dC.js +0 -70
  546. package/src/patterns/chart/chart.tsx +0 -386
@@ -0,0 +1,10 @@
1
+ import { VisuallyHidden } from "radix-ui";
2
+ import { ComponentProps } from "react";
3
+ //#region src/components/visually-hidden/visually-hidden.d.ts
4
+ /**
5
+ * Hides content visually while keeping it available to screen readers, e.g. a label for an
6
+ * icon-only control or extra context in a table cell.
7
+ */
8
+ declare function VisuallyHidden$1(props: ComponentProps<typeof VisuallyHidden.Root>): import("react").JSX.Element;
9
+ //#endregion
10
+ export { VisuallyHidden$1 as VisuallyHidden };
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { VisuallyHidden } from "radix-ui";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/components/visually-hidden/visually-hidden.tsx
5
+ /**
6
+ * Hides content visually while keeping it available to screen readers, e.g. a label for an
7
+ * icon-only control or extra context in a table cell.
8
+ */
9
+ function VisuallyHidden$1(props) {
10
+ return /* @__PURE__ */ jsx(VisuallyHidden.Root, {
11
+ "data-slot": "visually-hidden",
12
+ ...props
13
+ });
14
+ }
15
+ //#endregion
16
+ export { VisuallyHidden$1 as VisuallyHidden };
@@ -1,110 +1,3 @@
1
- import { t as VariantProps } from "./tv-DuMh7UH2.js";
2
- import { t as StylesEntry } from "./registry-BGSJoiLq.js";
3
- import { ReactNode } from "react";
4
- import { ColumnDef, ColumnDef as ColumnDef$1, RowData, SortingState, SortingState as SortingState$1, createColumnHelper } from "@tanstack/react-table";
5
- //#region src/patterns/data-table/data-table.d.ts
6
- declare module '@tanstack/react-table' {
7
- interface ColumnMeta<TData extends RowData, TValue> {
8
- /** Cell and header alignment. Use `right` for numbers. */
9
- align?: 'left' | 'center' | 'right';
10
- /** Extra classes for this column's cells. */
11
- className?: string;
12
- }
13
- }
14
- export declare const dataTableStyles: import("tailwind-variants").TVReturnType<{
15
- variant: {
16
- card: {
17
- root: string[];
18
- toolbar: string;
19
- footer: string;
20
- };
21
- plain: {
22
- root: string;
23
- };
24
- };
25
- }, {
26
- root: string;
27
- toolbar: string;
28
- search: string;
29
- actions: string;
30
- sortButton: string[];
31
- footer: string;
32
- pager: string;
33
- }, undefined, {
34
- variant: {
35
- card: {
36
- root: string[];
37
- toolbar: string;
38
- footer: string;
39
- };
40
- plain: {
41
- root: string;
42
- };
43
- };
44
- }, {
45
- root: string;
46
- toolbar: string;
47
- search: string;
48
- actions: string;
49
- sortButton: string[];
50
- footer: string;
51
- pager: string;
52
- }, import("tailwind-variants").TVReturnTypeLike<{
53
- variant: {
54
- card: {
55
- root: string[];
56
- toolbar: string;
57
- footer: string;
58
- };
59
- plain: {
60
- root: string;
61
- };
62
- };
63
- }, {
64
- root: string;
65
- toolbar: string;
66
- search: string;
67
- actions: string;
68
- sortButton: string[];
69
- footer: string;
70
- pager: string;
71
- }>>;
72
- declare module '@glyphui/tokens' {
73
- interface GlyphComponentRegistry {
74
- DataTable: StylesEntry<typeof dataTableStyles>;
75
- }
76
- }
77
- interface DataTableProps<T> extends VariantProps<typeof dataTableStyles> {
78
- data: T[] | undefined;
79
- /** Build with `createColumnHelper<T>()` for typed accessors. */
80
- columns: ColumnDef$1<T, any>[];
81
- /** Shows skeleton rows. */
82
- loading?: boolean;
83
- /** Shows an error state with a retry button when `onRetry` is set. */
84
- error?: unknown;
85
- onRetry?: () => unknown;
86
- getRowId?: (row: T, index: number) => string;
87
- /** Rows per page, or `false` to show every row. Default 10. */
88
- pageSize?: number | false;
89
- /** Adds a checkbox column. */
90
- selectable?: boolean;
91
- onSelectionChange?: (rows: T[]) => void;
92
- /** Adds a search box that filters across all columns. */
93
- search?: boolean | {
94
- placeholder?: string;
95
- };
96
- /** Extra controls at the end of the toolbar (filters, buttons). */
97
- toolbar?: ReactNode;
98
- /** Shown when there are no rows at all (not when a search matches nothing). */
99
- empty?: ReactNode;
100
- initialSorting?: SortingState$1;
101
- 'aria-label'?: string;
102
- className?: string;
103
- }
104
- /**
105
- * A table with sorting, search, pagination and row selection, plus built-in loading,
106
- * empty, no-results and error states. Columns are typed from your row type.
107
- */
108
- export declare function DataTable<T>(inProps: DataTableProps<T>): import("react").JSX.Element;
109
- //#endregion
110
- export { type ColumnDef, type DataTableProps, type SortingState, createColumnHelper };
1
+ import { DataTable, DataTableProps, dataTableStyles } from "./patterns/data-table/data-table.js";
2
+ import { ColumnDef, SortingState, createColumnHelper } from "@tanstack/react-table";
3
+ export { type ColumnDef, DataTable, type DataTableProps, type SortingState, createColumnHelper, dataTableStyles };
@@ -1,226 +1,4 @@
1
1
  "use client";
2
- import { a as themedBorder, r as focusRing, s as useComponentConfig, t as tv } from "./tv-DLbT66dC.js";
3
- import { b as SearchIcon, h as ChevronsUpDownIcon, i as IconButton, l as ArrowDownIcon, m as ChevronRightIcon, p as ChevronLeftIcon, r as Button, u as ArrowUpIcon } from "./field-context-7I-cWvvS.js";
4
- import { a as Table, c as TableCell, d as TableRow, h as Input, l as TableHead, n as ErrorState, o as TableBody, p as Skeleton, t as EmptyState, u as TableHeader, v as Checkbox } from "./states-IvhjBgna.js";
5
- import { useEffect, useMemo, useState } from "react";
6
- import { jsx, jsxs } from "react/jsx-runtime";
7
- import { createColumnHelper, flexRender, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from "@tanstack/react-table";
8
- //#region src/patterns/data-table/data-table.tsx
9
- const dataTableStyles = tv({
10
- slots: {
11
- root: "flex min-w-0 flex-col",
12
- toolbar: "flex flex-wrap items-center gap-2",
13
- search: "w-full sm:max-w-64",
14
- actions: "ml-auto flex items-center gap-2",
15
- sortButton: ["-ml-1.5 inline-flex cursor-pointer items-center gap-1 rounded-xs px-1.5 py-1 hover:text-foreground [&>svg]:size-3.5", focusRing],
16
- footer: "flex flex-wrap items-center justify-between gap-3 text-small text-muted-foreground tabular-nums",
17
- pager: "flex items-center gap-1"
18
- },
19
- variants: { variant: {
20
- card: {
21
- root: ["overflow-hidden rounded-lg border-border bg-surface shadow-sm", themedBorder],
22
- toolbar: "border-b border-border p-3",
23
- footer: "border-t border-border px-4 py-2.5"
24
- },
25
- plain: { root: "gap-3" }
26
- } },
27
- defaultVariants: { variant: "card" }
28
- });
29
- const alignClass = {
30
- left: "text-left",
31
- center: "text-center",
32
- right: "text-right"
33
- };
34
- const NO_ROWS = [];
35
- function selectColumn() {
36
- return {
37
- id: "__select",
38
- enableSorting: false,
39
- enableGlobalFilter: false,
40
- header: ({ table }) => /* @__PURE__ */ jsx(Checkbox, {
41
- className: "mt-0",
42
- "aria-label": "Select all rows on this page",
43
- checked: table.getIsAllPageRowsSelected() ? true : table.getIsSomePageRowsSelected() ? "indeterminate" : false,
44
- onCheckedChange: (value) => table.toggleAllPageRowsSelected(value === true)
45
- }),
46
- cell: ({ row }) => /* @__PURE__ */ jsx(Checkbox, {
47
- className: "mt-0",
48
- "aria-label": "Select row",
49
- checked: row.getIsSelected(),
50
- disabled: !row.getCanSelect(),
51
- onCheckedChange: (value) => row.toggleSelected(value === true)
52
- })
53
- };
54
- }
55
- /**
56
- * A table with sorting, search, pagination and row selection, plus built-in loading,
57
- * empty, no-results and error states. Columns are typed from your row type.
58
- */
59
- function DataTable(inProps) {
60
- const [props, slots] = useComponentConfig("DataTable", inProps);
61
- const { data, columns, loading = false, error, onRetry, getRowId, pageSize = 10, selectable = false, onSelectionChange, search = false, toolbar, empty, initialSorting = [], variant, className, "aria-label": ariaLabel } = props;
62
- const [sorting, setSorting] = useState(initialSorting);
63
- const [rowSelection, setRowSelection] = useState({});
64
- const [globalFilter, setGlobalFilter] = useState("");
65
- const allColumns = useMemo(() => selectable ? [selectColumn(), ...columns] : columns, [selectable, columns]);
66
- const table = useReactTable({
67
- data: data ?? NO_ROWS,
68
- columns: allColumns,
69
- state: {
70
- sorting,
71
- rowSelection,
72
- globalFilter
73
- },
74
- onSortingChange: setSorting,
75
- onRowSelectionChange: setRowSelection,
76
- onGlobalFilterChange: setGlobalFilter,
77
- enableRowSelection: selectable,
78
- sortDescFirst: false,
79
- getCoreRowModel: getCoreRowModel(),
80
- getSortedRowModel: getSortedRowModel(),
81
- getFilteredRowModel: getFilteredRowModel(),
82
- ...getRowId && { getRowId },
83
- ...pageSize !== false && {
84
- getPaginationRowModel: getPaginationRowModel(),
85
- initialState: { pagination: {
86
- pageIndex: 0,
87
- pageSize
88
- } }
89
- }
90
- });
91
- useEffect(() => {
92
- onSelectionChange?.(table.getSelectedRowModel().rows.map((row) => row.original));
93
- }, [rowSelection]);
94
- const s = dataTableStyles({ variant });
95
- const columnCount = table.getVisibleLeafColumns().length;
96
- const rows = table.getRowModel().rows;
97
- const filteredTotal = table.getFilteredRowModel().rows.length;
98
- const selectedCount = Object.keys(rowSelection).length;
99
- const { pageIndex, pageSize: size } = table.getState().pagination;
100
- const showFooter = pageSize !== false && !loading && !error && filteredTotal > 0;
101
- const searchPlaceholder = typeof search === "object" ? search.placeholder : void 0;
102
- const fullWidthRow = (content) => /* @__PURE__ */ jsx(TableRow, {
103
- className: "hover:bg-transparent",
104
- children: /* @__PURE__ */ jsx(TableCell, {
105
- colSpan: columnCount,
106
- className: "p-0",
107
- children: content
108
- })
109
- });
110
- let body;
111
- if (loading) body = Array.from({ length: pageSize === false ? 5 : Math.min(pageSize, 8) }, (_, i) => /* @__PURE__ */ jsx(TableRow, {
112
- className: "hover:bg-transparent",
113
- children: table.getVisibleLeafColumns().map((column) => /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(Skeleton, { className: column.id === "__select" ? "size-4" : "h-4 w-[70%]" }) }, column.id))
114
- }, i));
115
- else if (error) body = fullWidthRow(/* @__PURE__ */ jsx(ErrorState, {
116
- error,
117
- onRetry
118
- }));
119
- else if (rows.length === 0) body = fullWidthRow(globalFilter ? /* @__PURE__ */ jsx(EmptyState, {
120
- icon: /* @__PURE__ */ jsx(SearchIcon, {}),
121
- title: `No results for “${globalFilter}”`,
122
- description: "Check the spelling or try a shorter search.",
123
- action: /* @__PURE__ */ jsx(Button, {
124
- variant: "outline",
125
- size: "sm",
126
- onClick: () => setGlobalFilter(""),
127
- children: "Clear search"
128
- })
129
- }) : empty ?? /* @__PURE__ */ jsx(EmptyState, { title: "No rows yet" }));
130
- else body = rows.map((row) => /* @__PURE__ */ jsx(TableRow, {
131
- "data-state": row.getIsSelected() ? "selected" : void 0,
132
- children: row.getVisibleCells().map((cell) => {
133
- const meta = cell.column.columnDef.meta;
134
- return /* @__PURE__ */ jsx(TableCell, {
135
- className: [alignClass[meta?.align ?? "left"], meta?.className].join(" "),
136
- children: flexRender(cell.column.columnDef.cell, cell.getContext())
137
- }, cell.id);
138
- })
139
- }, row.id));
140
- return /* @__PURE__ */ jsxs("div", {
141
- "data-slot": "data-table",
142
- className: s.root({ class: [slots.root, className] }),
143
- children: [
144
- (search || toolbar) && /* @__PURE__ */ jsxs("div", {
145
- className: s.toolbar({ class: slots.toolbar }),
146
- children: [search && /* @__PURE__ */ jsx(Input, {
147
- size: "sm",
148
- type: "search",
149
- "aria-label": "Search rows",
150
- placeholder: searchPlaceholder ?? "Search…",
151
- prefix: /* @__PURE__ */ jsx(SearchIcon, {}),
152
- value: globalFilter,
153
- onChange: (event) => {
154
- setGlobalFilter(event.target.value);
155
- table.setPageIndex(0);
156
- },
157
- className: s.search({ class: slots.search })
158
- }), toolbar && /* @__PURE__ */ jsx("div", {
159
- className: s.actions({ class: slots.actions }),
160
- children: toolbar
161
- })]
162
- }),
163
- /* @__PURE__ */ jsxs(Table, {
164
- "aria-label": ariaLabel,
165
- "aria-busy": loading || void 0,
166
- children: [/* @__PURE__ */ jsx(TableHeader, { children: table.getHeaderGroups().map((group) => /* @__PURE__ */ jsx(TableRow, {
167
- className: "hover:bg-transparent",
168
- children: group.headers.map((header) => {
169
- const column = header.column;
170
- const sorted = column.getIsSorted();
171
- const align = column.columnDef.meta?.align ?? "left";
172
- const label = header.isPlaceholder ? null : flexRender(column.columnDef.header, header.getContext());
173
- return /* @__PURE__ */ jsx(TableHead, {
174
- className: alignClass[align],
175
- "aria-sort": sorted === "asc" ? "ascending" : sorted === "desc" ? "descending" : void 0,
176
- children: column.getCanSort() && !header.isPlaceholder ? /* @__PURE__ */ jsxs("button", {
177
- type: "button",
178
- onClick: column.getToggleSortingHandler(),
179
- className: s.sortButton({ class: [slots.sortButton, align === "right" && "flex-row-reverse"] }),
180
- children: [label, sorted === "asc" ? /* @__PURE__ */ jsx(ArrowUpIcon, {}) : sorted === "desc" ? /* @__PURE__ */ jsx(ArrowDownIcon, {}) : /* @__PURE__ */ jsx(ChevronsUpDownIcon, { className: "opacity-40" })]
181
- }) : label
182
- }, header.id);
183
- })
184
- }, group.id)) }), /* @__PURE__ */ jsx(TableBody, { children: body })]
185
- }),
186
- showFooter && /* @__PURE__ */ jsxs("div", {
187
- className: s.footer({ class: slots.footer }),
188
- children: [/* @__PURE__ */ jsxs("p", { children: [
189
- pageIndex * size + 1,
190
- "–",
191
- Math.min((pageIndex + 1) * size, filteredTotal),
192
- " of",
193
- " ",
194
- filteredTotal,
195
- selectedCount > 0 && /* @__PURE__ */ jsxs("span", {
196
- className: "text-foreground",
197
- children: [
198
- " · ",
199
- selectedCount,
200
- " selected"
201
- ]
202
- })
203
- ] }), /* @__PURE__ */ jsxs("div", {
204
- className: s.pager({ class: slots.pager }),
205
- children: [/* @__PURE__ */ jsx(IconButton, {
206
- variant: "outline",
207
- size: "sm",
208
- icon: /* @__PURE__ */ jsx(ChevronLeftIcon, {}),
209
- "aria-label": "Previous page",
210
- disabled: !table.getCanPreviousPage(),
211
- onClick: () => table.previousPage()
212
- }), /* @__PURE__ */ jsx(IconButton, {
213
- variant: "outline",
214
- size: "sm",
215
- icon: /* @__PURE__ */ jsx(ChevronRightIcon, {}),
216
- "aria-label": "Next page",
217
- disabled: !table.getCanNextPage(),
218
- onClick: () => table.nextPage()
219
- })]
220
- })]
221
- })
222
- ]
223
- });
224
- }
225
- //#endregion
2
+ import { DataTable, dataTableStyles } from "./patterns/data-table/data-table.js";
3
+ import { createColumnHelper } from "@tanstack/react-table";
226
4
  export { DataTable, createColumnHelper, dataTableStyles };
package/dist/form.d.ts CHANGED
@@ -1,86 +1,2 @@
1
- import { i as ButtonProps, n as FieldProps } from "./index-Bi7rZ6ba.js";
2
- import { ComponentProps, ReactNode } from "react";
3
- import { Control, ControllerRenderProps, FieldPath, FieldValues, UseFormProps, UseFormReturn } from "react-hook-form";
4
- import { StandardSchemaV1 } from "@standard-schema/spec";
5
- //#region src/patterns/form/form.d.ts
6
- type AnySchema = StandardSchemaV1<FieldValues, FieldValues>;
7
- type InputOf<S extends AnySchema> = StandardSchemaV1.InferInput<S>;
8
- type OutputOf<S extends AnySchema> = StandardSchemaV1.InferOutput<S>;
9
- interface UseFormOptions<S extends AnySchema> extends Omit<UseFormProps<InputOf<S>, unknown, OutputOf<S>>, 'resolver'> {
10
- /** Any Standard Schema validator: zod, valibot, arktype, ... */
11
- schema: S;
12
- }
13
- /**
14
- * react-hook-form's `useForm`, validated by a schema. Field names and submitted values are
15
- * typed from the schema.
16
- */
17
- export declare function useForm<S extends AnySchema>({ schema, ...options }: UseFormOptions<S>): UseFormReturn<InputOf<S>, unknown, OutputOf<S>>;
18
- /** Field-level errors from the server, keyed by field name. `root` shows above the form. */
19
- type FormErrors<TInput extends FieldValues> = Partial<Record<FieldPath<TInput> | 'root', string>>;
20
- type SubmitResult<TInput extends FieldValues> = void | {
21
- errors: FormErrors<TInput>;
22
- };
23
- interface FormProps<TInput extends FieldValues, TOutput> extends Omit<ComponentProps<'form'>, 'onSubmit'> {
24
- form: UseFormReturn<TInput, unknown, TOutput>;
25
- /**
26
- * Receives validated values. Return `{ errors }` to show server-side field errors, or throw
27
- * to show a form-level error. The submit button shows a spinner until this settles.
28
- */
29
- onSubmit: (values: TOutput) => SubmitResult<TInput> | Promise<SubmitResult<TInput>>;
30
- }
31
- export declare function Form<TInput extends FieldValues, TOutput>({ form, onSubmit, children, ref, ...props }: FormProps<TInput, TOutput>): import("react").JSX.Element;
32
- interface FormFieldProps<TInput extends FieldValues, TName extends FieldPath<TInput>> extends Omit<FieldProps, 'children' | 'error'> {
33
- control: Control<TInput, unknown, any>;
34
- /** Typed from the schema: a misspelled name is a compile error. */
35
- name: TName;
36
- /** Render the control and spread `field` onto it: `{(field) => <Input {...field} />}`. */
37
- children: (field: ControllerRenderProps<TInput, TName>) => ReactNode;
38
- }
39
- /** One schema field: label, control, description and validation message, all wired. */
40
- export declare function FormField<TInput extends FieldValues, TName extends FieldPath<TInput>>({ control, name, children, ...fieldProps }: FormFieldProps<TInput, TName>): import("react").JSX.Element;
41
- interface FormSubmitProps extends Omit<ButtonProps, 'type' | 'form'> {
42
- /**
43
- * The form to submit, for a button outside `<Form>` such as a Modal footer:
44
- * `<FormSubmit form={form}>`. Not needed inside `<Form>`.
45
- */
46
- form?: UseFormReturn<any, any, any>;
47
- }
48
- /** Submit button that shows progress while the form submits. */
49
- export declare function FormSubmit({ form, onClick, ...props }: FormSubmitProps): import("react").JSX.Element;
50
- export declare const formErrorStyles: import("tailwind-variants").TVReturnType<{
51
- [key: string]: {
52
- [key: string]: import("tailwind-variants").ClassValue | {
53
- base?: import("tailwind-variants").ClassValue;
54
- icon?: import("tailwind-variants").ClassValue;
55
- };
56
- };
57
- } | {
58
- [x: string]: {
59
- [x: string]: import("tailwind-variants").ClassValue | {
60
- base?: import("tailwind-variants").ClassValue;
61
- icon?: import("tailwind-variants").ClassValue;
62
- };
63
- };
64
- } | {}, {
65
- base: string;
66
- icon: string;
67
- }, undefined, {
68
- [key: string]: {
69
- [key: string]: import("tailwind-variants").ClassValue | {
70
- base?: import("tailwind-variants").ClassValue;
71
- icon?: import("tailwind-variants").ClassValue;
72
- };
73
- };
74
- } | {}, {
75
- base: string;
76
- icon: string;
77
- }, import("tailwind-variants").TVReturnTypeLike<unknown, {
78
- base: string;
79
- icon: string;
80
- }>>;
81
- /** Form-level error (thrown from `onSubmit` or returned as `errors.root`). */
82
- export declare function FormError({ className }: {
83
- className?: string;
84
- }): import("react").JSX.Element | null;
85
- //#endregion
86
- export type { FormErrors, FormFieldProps, FormProps, FormSubmitProps, SubmitResult, UseFormOptions };
1
+ import { Form, FormError, FormErrors, FormField, FormFieldProps, FormProps, FormSubmit, FormSubmitProps, SubmitResult, UseFormOptions, formErrorStyles, useForm } from "./patterns/form/form.js";
2
+ export { Form, FormError, type FormErrors, FormField, type FormFieldProps, type FormProps, FormSubmit, type FormSubmitProps, type SubmitResult, type UseFormOptions, formErrorStyles, useForm };
package/dist/form.js CHANGED
@@ -1,110 +1,3 @@
1
1
  "use client";
2
- import { t as tv } from "./tv-DLbT66dC.js";
3
- import { c as AlertIcon, r as Button } from "./field-context-7I-cWvvS.js";
4
- import { t as Field } from "./field-CVbywksE.js";
5
- import { useCallback } from "react";
6
- import { jsx, jsxs } from "react/jsx-runtime";
7
- import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
8
- import { Controller, FormProvider, useForm as useForm$1, useFormContext, useFormState } from "react-hook-form";
9
- //#region src/patterns/form/form.tsx
10
- /**
11
- * react-hook-form's `useForm`, validated by a schema. Field names and submitted values are
12
- * typed from the schema.
13
- */
14
- function useForm({ schema, ...options }) {
15
- return useForm$1({
16
- mode: "onTouched",
17
- ...options,
18
- resolver: standardSchemaResolver(schema)
19
- });
20
- }
21
- /** The rendered `<form>` of each form, so a FormSubmit outside it can submit it. */
22
- const formElements = /* @__PURE__ */ new WeakMap();
23
- function Form({ form, onSubmit, children, ref, ...props }) {
24
- const control = form.control;
25
- const registerElement = useCallback((element) => {
26
- if (element) formElements.set(control, element);
27
- else formElements.delete(control);
28
- if (typeof ref === "function") ref(element);
29
- else if (ref) ref.current = element;
30
- }, [control, ref]);
31
- const submit = form.handleSubmit(async (values) => {
32
- try {
33
- const result = await onSubmit(values);
34
- if (!result?.errors) return;
35
- for (const [name, message] of Object.entries(result.errors)) if (message) form.setError(name, {
36
- type: "server",
37
- message
38
- });
39
- } catch (error) {
40
- form.setError("root", {
41
- type: "server",
42
- message: error instanceof Error ? error.message : "Something went wrong. Try again."
43
- });
44
- }
45
- });
46
- return /* @__PURE__ */ jsx(FormProvider, {
47
- ...form,
48
- children: /* @__PURE__ */ jsx("form", {
49
- noValidate: true,
50
- onSubmit: submit,
51
- ref: registerElement,
52
- ...props,
53
- children
54
- })
55
- });
56
- }
57
- /** One schema field: label, control, description and validation message, all wired. */
58
- function FormField({ control, name, children, ...fieldProps }) {
59
- return /* @__PURE__ */ jsx(Controller, {
60
- control,
61
- name,
62
- render: ({ field, fieldState }) => /* @__PURE__ */ jsx(Field, {
63
- ...fieldProps,
64
- error: fieldState.error?.message,
65
- children: children(field)
66
- })
67
- });
68
- }
69
- /** Submit button that shows progress while the form submits. */
70
- function FormSubmit({ form, onClick, ...props }) {
71
- const context = useFormContext();
72
- const control = (form ?? context)?.control;
73
- if (!control) throw new Error("FormSubmit must be inside <Form> or receive form={form}, e.g. <FormSubmit form={form}> in a Modal footer.");
74
- const { isSubmitting } = useFormState({ control });
75
- if (!form) return /* @__PURE__ */ jsx(Button, {
76
- type: "submit",
77
- loading: isSubmitting,
78
- onClick,
79
- ...props
80
- });
81
- const submitOutside = (event) => {
82
- onClick?.(event);
83
- if (!event.defaultPrevented) formElements.get(control)?.requestSubmit();
84
- };
85
- return /* @__PURE__ */ jsx(Button, {
86
- type: "button",
87
- loading: isSubmitting,
88
- onClick: submitOutside,
89
- ...props
90
- });
91
- }
92
- const formErrorStyles = tv({ slots: {
93
- base: "flex items-start gap-2 rounded-md border border-danger/30 bg-danger/8 px-3 py-2.5 text-small text-danger-text",
94
- icon: "mt-0.5 size-4 shrink-0"
95
- } });
96
- /** Form-level error (thrown from `onSubmit` or returned as `errors.root`). */
97
- function FormError({ className }) {
98
- const { errors } = useFormState();
99
- const message = errors.root?.message;
100
- if (!message) return null;
101
- const s = formErrorStyles();
102
- return /* @__PURE__ */ jsxs("div", {
103
- role: "alert",
104
- "data-slot": "form-error",
105
- className: s.base({ class: className }),
106
- children: [/* @__PURE__ */ jsx(AlertIcon, { className: s.icon() }), /* @__PURE__ */ jsx("span", { children: message })]
107
- });
108
- }
109
- //#endregion
2
+ import { Form, FormError, FormField, FormSubmit, formErrorStyles, useForm } from "./patterns/form/form.js";
110
3
  export { Form, FormError, FormField, FormSubmit, formErrorStyles, useForm };
@@ -0,0 +1,5 @@
1
+ import { SlotClasses, useComponentConfig } from "./use-component-config.js";
2
+ import { useControllableState } from "./use-controllable-state.js";
3
+ import { useMediaQuery } from "./use-media-query.js";
4
+ import { useScrolled } from "./use-scrolled.js";
5
+ export { type SlotClasses, useComponentConfig, useControllableState, useMediaQuery, useScrolled };
@@ -0,0 +1,13 @@
1
+ import { ComponentName, GlyphComponentRegistry } from "@glyphui/tokens";
2
+ //#region src/hooks/use-component-config.d.ts
3
+ type SlotsOf<K extends ComponentName> = GlyphComponentRegistry[K] extends {
4
+ slots: infer S extends string;
5
+ } ? S : never;
6
+ export type SlotClasses<K extends ComponentName> = Partial<Record<SlotsOf<K>, string>>;
7
+ /**
8
+ * Applies the theme's per-component settings (`theme.components[name]`):
9
+ * fills unset variant props from `defaultVariants` and returns the extra slot classes.
10
+ * Every styled component calls this first.
11
+ */
12
+ export declare function useComponentConfig<K extends ComponentName, P extends object>(name: K, props: P): [props: P, slotClasses: SlotClasses<K>];
13
+ //#endregion
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { GlyphContext } from "../provider/glyph-context.js";
3
+ import { useContext } from "react";
4
+ //#region src/hooks/use-component-config.ts
5
+ /**
6
+ * Applies the theme's per-component settings (`theme.components[name]`):
7
+ * fills unset variant props from `defaultVariants` and returns the extra slot classes.
8
+ * Every styled component calls this first.
9
+ */
10
+ function useComponentConfig(name, props) {
11
+ const override = (useContext(GlyphContext)?.theme)?.components[name];
12
+ if (!override) return [props, {}];
13
+ let merged = props;
14
+ const defaults = override.defaultVariants;
15
+ if (defaults) {
16
+ merged = { ...props };
17
+ for (const [key, value] of Object.entries(defaults)) if (merged[key] === void 0) merged[key] = value;
18
+ }
19
+ return [merged, override.className ?? {}];
20
+ }
21
+ //#endregion
22
+ export { useComponentConfig };
@@ -0,0 +1,9 @@
1
+ //#region src/hooks/use-controllable-state.d.ts
2
+ interface Options<T> {
3
+ value?: T | undefined;
4
+ defaultValue: T;
5
+ onChange?: ((value: T) => void) | undefined;
6
+ }
7
+ /** State that can be controlled by a parent (`value` + `onChange`) or left uncontrolled. */
8
+ export declare function useControllableState<T>({ value, defaultValue, onChange }: Options<T>): readonly [T, (next: T | ((prev: T) => T)) => void];
9
+ //#endregion
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { useCallback, useRef, useState } from "react";
3
+ //#region src/hooks/use-controllable-state.ts
4
+ /** State that can be controlled by a parent (`value` + `onChange`) or left uncontrolled. */
5
+ function useControllableState({ value, defaultValue, onChange }) {
6
+ const [internal, setInternal] = useState(defaultValue);
7
+ const isControlled = value !== void 0;
8
+ const current = isControlled ? value : internal;
9
+ const onChangeRef = useRef(onChange);
10
+ onChangeRef.current = onChange;
11
+ return [current, useCallback((next) => {
12
+ const resolved = typeof next === "function" ? next(current) : next;
13
+ if (!isControlled) setInternal(resolved);
14
+ onChangeRef.current?.(resolved);
15
+ }, [current, isControlled])];
16
+ }
17
+ //#endregion
18
+ export { useControllableState };
@@ -0,0 +1,4 @@
1
+ //#region src/hooks/use-media-query.d.ts
2
+ /** Subscribes to a CSS media query. Returns `fallback` during SSR. */
3
+ export declare function useMediaQuery(query: string, fallback?: boolean): boolean;
4
+ //#endregion
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { useSyncExternalStore } from "react";
3
+ //#region src/hooks/use-media-query.ts
4
+ /** Subscribes to a CSS media query. Returns `fallback` during SSR. */
5
+ function useMediaQuery(query, fallback = false) {
6
+ return useSyncExternalStore((onChange) => {
7
+ const list = window.matchMedia(query);
8
+ list.addEventListener("change", onChange);
9
+ return () => list.removeEventListener("change", onChange);
10
+ }, () => window.matchMedia(query).matches, () => fallback);
11
+ }
12
+ //#endregion
13
+ export { useMediaQuery };
@@ -0,0 +1,4 @@
1
+ //#region src/hooks/use-scrolled.d.ts
2
+ /** True once the window has scrolled past `threshold` pixels. */
3
+ export declare function useScrolled(threshold?: number, enabled?: boolean): boolean;
4
+ //#endregion