@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,57 @@
1
+ import { avatarStyles } from "./components/avatar/avatar.styles.js";
2
+ import { badgeStyles } from "./components/badge/badge.styles.js";
3
+ import { buttonStyles } from "./components/button/button.styles.js";
4
+ import { cardStyles } from "./components/card/card.styles.js";
5
+ import { checkboxStyles } from "./components/checkbox/checkbox.js";
6
+ import { eyebrowStyles } from "./components/eyebrow/eyebrow.styles.js";
7
+ import { fieldStyles } from "./components/field/field.styles.js";
8
+ import { headingStyles } from "./components/heading/heading.styles.js";
9
+ import { inputStyles } from "./components/input/input.styles.js";
10
+ import { kbdStyles } from "./components/kbd/kbd.js";
11
+ import { labelStyles } from "./components/label/label.js";
12
+ import { segmentedControlStyles } from "./components/segmented-control/segmented-control.js";
13
+ import { selectStyles } from "./components/select/select.js";
14
+ import { separatorStyles } from "./components/separator/separator.js";
15
+ import { skeletonStyles } from "./components/skeleton/skeleton.js";
16
+ import { spinnerStyles } from "./components/spinner/spinner.styles.js";
17
+ import { switchStyles } from "./components/switch/switch.js";
18
+ import { tableStyles } from "./components/table/table.js";
19
+ import { tabsStyles } from "./components/tabs/tabs.js";
20
+ import { textStyles } from "./components/text/text.styles.js";
21
+ import { textareaStyles } from "./components/textarea/textarea.js";
22
+ import { tooltipStyles } from "./components/tooltip/tooltip.js";
23
+ import { appShellStyles, navbarStyles, pageHeaderStyles, sidebarStyles } from "./patterns/app-shell/app-shell.styles.js";
24
+ import { stateStyles } from "./patterns/async/states.js";
25
+ import { StylesEntry } from "./utils/registry.js";
26
+ //#region src/register.d.ts
27
+ declare module '@glyphui/tokens' {
28
+ interface GlyphComponentRegistry {
29
+ AppShell: StylesEntry<typeof appShellStyles>;
30
+ Avatar: StylesEntry<typeof avatarStyles>;
31
+ Badge: StylesEntry<typeof badgeStyles>;
32
+ Button: StylesEntry<typeof buttonStyles>;
33
+ Card: StylesEntry<typeof cardStyles>;
34
+ Checkbox: StylesEntry<typeof checkboxStyles>;
35
+ EmptyState: StylesEntry<typeof stateStyles>;
36
+ Eyebrow: StylesEntry<typeof eyebrowStyles>;
37
+ Field: StylesEntry<typeof fieldStyles>;
38
+ Heading: StylesEntry<typeof headingStyles>;
39
+ Input: StylesEntry<typeof inputStyles>;
40
+ Kbd: StylesEntry<typeof kbdStyles>;
41
+ Label: StylesEntry<typeof labelStyles>;
42
+ Navbar: StylesEntry<typeof navbarStyles>;
43
+ PageHeader: StylesEntry<typeof pageHeaderStyles>;
44
+ SegmentedControl: StylesEntry<typeof segmentedControlStyles>;
45
+ Select: StylesEntry<typeof selectStyles>;
46
+ Separator: StylesEntry<typeof separatorStyles>;
47
+ Sidebar: StylesEntry<typeof sidebarStyles>;
48
+ Skeleton: StylesEntry<typeof skeletonStyles>;
49
+ Spinner: StylesEntry<typeof spinnerStyles>;
50
+ Switch: StylesEntry<typeof switchStyles>;
51
+ Table: StylesEntry<typeof tableStyles>;
52
+ Tabs: StylesEntry<typeof tabsStyles>;
53
+ Text: StylesEntry<typeof textStyles>;
54
+ Textarea: StylesEntry<typeof textareaStyles>;
55
+ Tooltip: StylesEntry<typeof tooltipStyles>;
56
+ }
57
+ }
@@ -0,0 +1,22 @@
1
+ import "./register.js";
2
+ //#region src/themes.d.ts
3
+ /**
4
+ * Built-in themes: the token presets from @glyphui/tokens plus per-component recipes.
5
+ * Extend any of them in your theme file: `defineTheme({ name: 'acme', extends: presets.glyph, ... })`.
6
+ */
7
+ /** Precise, dark-first, one electric-blue accent, layered soft shadows, Geist. */
8
+ export declare const glyph: import("@glyphui/tokens").Theme;
9
+ /** Zero radius, heavy borders, hard offset shadows, loud color. */
10
+ export declare const brutalist: import("@glyphui/tokens").Theme;
11
+ /** Serif display type, warm paper neutrals, deep green ink, hairlines instead of shadows. */
12
+ export declare const editorial: import("@glyphui/tokens").Theme;
13
+ /** Pill shapes, lavender and mint, chunky rounded type, springy motion. */
14
+ export declare const playful: import("@glyphui/tokens").Theme;
15
+ export declare const presets: {
16
+ readonly glyph: import("@glyphui/tokens").Theme;
17
+ readonly brutalist: import("@glyphui/tokens").Theme;
18
+ readonly editorial: import("@glyphui/tokens").Theme;
19
+ readonly playful: import("@glyphui/tokens").Theme;
20
+ };
21
+ export type PresetName = keyof typeof presets;
22
+ //#endregion
package/dist/themes.js ADDED
@@ -0,0 +1,49 @@
1
+ "use client";
2
+ import { defineTheme, presets } from "@glyphui/tokens";
3
+ //#region src/themes.ts
4
+ /**
5
+ * Built-in themes: the token presets from @glyphui/tokens plus per-component recipes.
6
+ * Extend any of them in your theme file: `defineTheme({ name: 'acme', extends: presets.glyph, ... })`.
7
+ */
8
+ /** Precise, dark-first, one electric-blue accent, layered soft shadows, Geist. */
9
+ const glyph = presets.glyph;
10
+ /** Zero radius, heavy borders, hard offset shadows, loud color. */
11
+ const brutalist = /* @__PURE__ */ defineTheme({
12
+ name: "brutalist",
13
+ extends: presets.brutalist,
14
+ components: {
15
+ Button: { className: { base: "font-bold uppercase tracking-wide shadow-sm hover:-translate-x-px hover:-translate-y-px hover:shadow-md active:translate-x-[3px] active:translate-y-[3px] active:shadow-none" } },
16
+ Badge: { className: { base: "font-bold uppercase" } },
17
+ Card: { defaultVariants: { variant: "elevated" } },
18
+ Heading: { className: { base: "uppercase" } },
19
+ Input: { className: { root: "shadow-sm focus-within:ring-0 focus-within:shadow-md" } }
20
+ }
21
+ });
22
+ /** Serif display type, warm paper neutrals, deep green ink, hairlines instead of shadows. */
23
+ const editorial = /* @__PURE__ */ defineTheme({
24
+ name: "editorial",
25
+ extends: presets.editorial,
26
+ components: {
27
+ Card: { defaultVariants: { variant: "outline" } },
28
+ Eyebrow: { className: { base: "font-sans tracking-[0.18em]" } },
29
+ Button: { className: { base: "tracking-wide" } }
30
+ }
31
+ });
32
+ /** Pill shapes, lavender and mint, chunky rounded type, springy motion. */
33
+ const playful = /* @__PURE__ */ defineTheme({
34
+ name: "playful",
35
+ extends: presets.playful,
36
+ components: {
37
+ Button: { className: { base: "font-bold hover:-translate-y-0.5 active:translate-y-0 active:scale-[0.97]" } },
38
+ Card: { defaultVariants: { variant: "elevated" } },
39
+ Badge: { className: { base: "font-semibold" } }
40
+ }
41
+ });
42
+ const presets$1 = {
43
+ glyph,
44
+ brutalist,
45
+ editorial,
46
+ playful
47
+ };
48
+ //#endregion
49
+ export { brutalist, editorial, glyph, playful, presets$1 as presets };
@@ -0,0 +1,6 @@
1
+ import { ClassValue } from "clsx";
2
+ //#region src/utils/cn.d.ts
3
+ /** Joins class names and resolves Tailwind conflicts (last one wins). */
4
+ export declare function cn(...inputs: ClassValue[]): string;
5
+ //#endregion
6
+ export type { ClassValue };
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { twMergeConfig } from "./tw-merge-config.js";
3
+ import { clsx } from "clsx";
4
+ import { extendTailwindMerge } from "tailwind-merge";
5
+ //#region src/utils/cn.ts
6
+ const twMerge = extendTailwindMerge(twMergeConfig);
7
+ /** Joins class names and resolves Tailwind conflicts (last one wins). */
8
+ function cn(...inputs) {
9
+ return twMerge(clsx(inputs));
10
+ }
11
+ //#endregion
12
+ export { cn };
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ //#region src/utils/compose-refs.ts
3
+ /** Combines several refs into one callback ref. */
4
+ function composeRefs(...refs) {
5
+ return (node) => {
6
+ for (const ref of refs) if (typeof ref === "function") ref(node);
7
+ else if (ref) ref.current = node;
8
+ };
9
+ }
10
+ //#endregion
11
+ export { composeRefs };
@@ -2,8 +2,7 @@ import { ComponentEntry } from "@glyphui/tokens";
2
2
  import { VariantProps } from "tailwind-variants";
3
3
  //#region src/utils/registry.d.ts
4
4
  /** Derives a registry entry (variant props + slot names) from a component's `tv()` styles. */
5
- type StylesEntry<T extends ((...args: any) => any) & {
5
+ export type StylesEntry<T extends ((...args: any) => any) & {
6
6
  slots: unknown;
7
7
  }> = ComponentEntry<VariantProps<T>, Extract<keyof NonNullable<T['slots']>, string>>;
8
- //#endregion
9
- export { StylesEntry as t };
8
+ //#endregion
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ //#region src/utils/styles.ts
3
+ /** Shared class fragments. Kept as literals so Tailwind's scanner picks them up. */
4
+ const focusRing = "outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background";
5
+ const themedBorder = "border-(length:--glyph-border-width)";
6
+ const transition = "transition-[color,background-color,border-color,box-shadow,transform,translate,scale,opacity] duration-(--glyph-duration-base) ease-standard";
7
+ /**
8
+ * Enter and exit for anything Radix positions next to a trigger: springs out of the trigger
9
+ * (pair with the primitive's transform-origin class) and leaves quickly. Distance and scale
10
+ * follow the motion level; the side moves it toward the trigger.
11
+ */
12
+ const popoverMotion = "animate-pop-in data-[state=closed]:animate-pop-out data-[side=bottom]:[--glyph-motion-y:calc(var(--glyph-motion-distance)*-1)] data-[side=top]:[--glyph-motion-y:var(--glyph-motion-distance)] data-[side=left]:[--glyph-motion-x:var(--glyph-motion-distance)] data-[side=right]:[--glyph-motion-x:calc(var(--glyph-motion-distance)*-1)]";
13
+ /** Popover surfaces: Select, Tooltip-like menus. */
14
+ const popover = `z-50 overflow-hidden rounded-[min(var(--radius-md),var(--radius-lg))] border-(length:--glyph-border-width) border-border bg-raised text-foreground shadow-lg ${popoverMotion}`;
15
+ /** Dimmed backdrop behind dialogs and sheets. */
16
+ const overlayMotion = "data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out";
17
+ /** Centered dialogs: rise and scale in on the theme's spring, settle out quickly. */
18
+ const dialogMotion = "animate-dialog-in data-[state=closed]:animate-dialog-out";
19
+ //#endregion
20
+ export { dialogMotion, focusRing, overlayMotion, popover, popoverMotion, themedBorder, transition };
@@ -1,6 +1,6 @@
1
1
  import { VariantProps as VariantProps$1 } from "tailwind-variants";
2
2
  //#region src/utils/tv.d.ts
3
3
  /** `tailwind-variants` preconfigured with Glyph's merge rules. All component styles use this. */
4
- declare const tv: import("tailwind-variants").TV;
4
+ export declare const tv: import("tailwind-variants").TV;
5
5
  //#endregion
6
- export { tv as n, VariantProps$1 as t };
6
+ export type { VariantProps$1 as VariantProps };
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ import { twMergeConfig } from "./tw-merge-config.js";
3
+ import { createTV } from "tailwind-variants";
4
+ //#region src/utils/tv.ts
5
+ /** `tailwind-variants` preconfigured with Glyph's merge rules. All component styles use this. */
6
+ const tv = createTV({ twMergeConfig });
7
+ //#endregion
8
+ export { tv };
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { textTokens } from "@glyphui/tokens";
3
+ //#region src/utils/tw-merge-config.ts
4
+ /**
5
+ * Teaches tailwind-merge about Glyph's custom utilities so `cn('text-h1', 'text-small')`
6
+ * keeps only the last size instead of treating `text-h1` as a color.
7
+ */
8
+ const twMergeConfig = { extend: { theme: {
9
+ text: [...textTokens],
10
+ radius: ["pill"]
11
+ } } };
12
+ //#endregion
13
+ export { twMergeConfig };
package/dist/vite.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { t as ColorModeOptions } from "./color-mode-script-KdwItKN2.js";
1
+ import { ColorModeOptions } from "./provider/color-mode-script.js";
2
2
  //#region src/integrations/vite.d.ts
3
3
  /** The subset of Vite's `Plugin` this plugin uses, so `vite` stays an optional peer. */
4
4
  export interface GlyphVitePlugin {
package/dist/vite.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { r as getColorModeScript } from "./color-mode-script-Bf7LYkOj.js";
2
+ import { getColorModeScript } from "./provider/color-mode-script.js";
3
3
  //#region src/integrations/vite.ts
4
4
  /**
5
5
  * Injects Glyph's color-mode script into `index.html` so dark-mode visitors never see a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glyphui/ui",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "React components on Tailwind CSS v4 that take their entire look from one theme file. Forms, data tables, app layouts and async states included.",
5
5
  "license": "MIT",
6
6
  "author": "Mohak Gupta (https://github.com/khalmohak)",
@@ -78,13 +78,14 @@
78
78
  "dependencies": {
79
79
  "@fontsource-variable/geist": "^5.3.0",
80
80
  "@fontsource-variable/geist-mono": "^5.3.0",
81
- "@glyphui/tokens": "^0.4.0",
81
+ "@glyphui/tokens": "^0.5.0",
82
82
  "@standard-schema/spec": "^1.1.0",
83
83
  "clsx": "^2.1.1",
84
84
  "cmdk": "^1.1.1",
85
85
  "date-fns": "^4.4.0",
86
86
  "embla-carousel-react": "^8.6.0",
87
87
  "input-otp": "^1.5.0",
88
+ "motion": "14.0.0",
88
89
  "radix-ui": "^1.6.7",
89
90
  "react-day-picker": "^9.14.0",
90
91
  "react-resizable-panels": "^3.0.6",
@@ -2,7 +2,7 @@ import type { StylesEntry } from '../../utils/registry'
2
2
  import { focusRing, themedBorder, transition } from '../../utils/styles'
3
3
  import { tv, type VariantProps } from '../../utils/tv'
4
4
 
5
- export const accordionStyles = tv({
5
+ export const accordionStyles = /* @__PURE__ */ tv({
6
6
  slots: {
7
7
  root: 'w-full',
8
8
  item: '',
@@ -3,7 +3,7 @@ import { themedBorder } from '../../utils/styles'
3
3
  import { tv, type VariantProps } from '../../utils/tv'
4
4
 
5
5
  // Soft fills per tone. Icon color is mixed toward the foreground so it stays readable in both modes.
6
- export const alertStyles = tv({
6
+ export const alertStyles = /* @__PURE__ */ tv({
7
7
  slots: {
8
8
  root: ['relative flex w-full items-start gap-3 rounded-md px-4 py-3 text-small', themedBorder],
9
9
  icon: 'mt-0.5 flex size-4 shrink-0 items-center justify-center [&>svg]:size-4',
@@ -1,13 +1,14 @@
1
1
  import type { StylesEntry } from '../../utils/registry'
2
- import { themedBorder } from '../../utils/styles'
2
+ import { dialogMotion, overlayMotion, themedBorder } from '../../utils/styles'
3
3
  import { tv } from '../../utils/tv'
4
4
 
5
- export const alertDialogStyles = tv({
5
+ export const alertDialogStyles = /* @__PURE__ */ tv({
6
6
  slots: {
7
- overlay: 'fixed inset-0 z-50 animate-fade-in bg-overlay',
7
+ overlay: ['fixed inset-0 z-50 bg-overlay', overlayMotion],
8
8
  content: [
9
9
  'fixed top-1/2 left-1/2 z-50 grid w-[calc(100vw-2rem)] max-w-md -translate-x-1/2 -translate-y-1/2 gap-5',
10
- 'rounded-xl border-border bg-surface p-6 text-foreground shadow-lg outline-none animate-pop-in',
10
+ 'rounded-xl border-border bg-surface p-6 text-foreground shadow-lg outline-none',
11
+ dialogMotion,
11
12
  themedBorder,
12
13
  ],
13
14
  header: 'flex flex-col gap-1.5',
@@ -0,0 +1,42 @@
1
+ import {
2
+ AlertDialog,
3
+ AlertDialogAction,
4
+ AlertDialogCancel,
5
+ AlertDialogContent,
6
+ AlertDialogDescription,
7
+ AlertDialogFooter,
8
+ AlertDialogHeader,
9
+ AlertDialogTitle,
10
+ } from './alert-dialog'
11
+ import type { ConfirmOptions } from './confirm'
12
+
13
+ export interface ConfirmDialogProps {
14
+ open: boolean
15
+ options: ConfirmOptions
16
+ onSettle: (confirmed: boolean) => void
17
+ }
18
+
19
+ /** The dialog behind `useConfirm()`. Loaded lazily by ConfirmProvider. */
20
+ export function ConfirmDialog({ open, options, onSettle }: ConfirmDialogProps) {
21
+ const danger = options.tone === 'danger'
22
+ return (
23
+ <AlertDialog open={open} onOpenChange={(next) => !next && onSettle(false)}>
24
+ <AlertDialogContent>
25
+ <AlertDialogHeader>
26
+ <AlertDialogTitle>{options.title}</AlertDialogTitle>
27
+ {options.description && (
28
+ <AlertDialogDescription>{options.description}</AlertDialogDescription>
29
+ )}
30
+ </AlertDialogHeader>
31
+ <AlertDialogFooter>
32
+ <AlertDialogCancel onClick={() => onSettle(false)}>
33
+ {options.cancelLabel ?? 'Cancel'}
34
+ </AlertDialogCancel>
35
+ <AlertDialogAction tone={options.tone} onClick={() => onSettle(true)}>
36
+ {options.confirmLabel ?? (danger ? 'Delete' : 'Confirm')}
37
+ </AlertDialogAction>
38
+ </AlertDialogFooter>
39
+ </AlertDialogContent>
40
+ </AlertDialog>
41
+ )
42
+ }
@@ -1,22 +1,14 @@
1
1
  import {
2
2
  createContext,
3
+ lazy,
3
4
  type ReactNode,
5
+ Suspense,
4
6
  useCallback,
5
7
  useContext,
6
8
  useMemo,
7
9
  useRef,
8
10
  useState,
9
11
  } from 'react'
10
- import {
11
- AlertDialog,
12
- AlertDialogAction,
13
- AlertDialogCancel,
14
- AlertDialogContent,
15
- AlertDialogDescription,
16
- AlertDialogFooter,
17
- AlertDialogHeader,
18
- AlertDialogTitle,
19
- } from './alert-dialog'
20
12
 
21
13
  export interface ConfirmOptions {
22
14
  title: ReactNode
@@ -31,6 +23,11 @@ export type ConfirmFn = (options: ConfirmOptions) => Promise<boolean>
31
23
 
32
24
  const ConfirmContext = createContext<ConfirmFn | null>(null)
33
25
 
26
+ // The dialog loads the first time confirm() is called, so apps that never confirm don't ship it.
27
+ const ConfirmDialog = lazy(() =>
28
+ import('./confirm-dialog').then((m) => ({ default: m.ConfirmDialog })),
29
+ )
30
+
34
31
  interface Pending {
35
32
  options: ConfirmOptions
36
33
  resolve: (value: boolean) => void
@@ -64,31 +61,15 @@ export function ConfirmProvider({ children }: { children: ReactNode }) {
64
61
 
65
62
  const value = useMemo(() => confirm, [confirm])
66
63
  const options = pending?.options
67
- const danger = options?.tone === 'danger'
68
64
 
69
65
  return (
70
66
  <ConfirmContext.Provider value={value}>
71
67
  {children}
72
- <AlertDialog open={open} onOpenChange={(next) => !next && settle(false)}>
73
- {options && (
74
- <AlertDialogContent>
75
- <AlertDialogHeader>
76
- <AlertDialogTitle>{options.title}</AlertDialogTitle>
77
- {options.description && (
78
- <AlertDialogDescription>{options.description}</AlertDialogDescription>
79
- )}
80
- </AlertDialogHeader>
81
- <AlertDialogFooter>
82
- <AlertDialogCancel onClick={() => settle(false)}>
83
- {options.cancelLabel ?? 'Cancel'}
84
- </AlertDialogCancel>
85
- <AlertDialogAction tone={options.tone} onClick={() => settle(true)}>
86
- {options.confirmLabel ?? (danger ? 'Delete' : 'Confirm')}
87
- </AlertDialogAction>
88
- </AlertDialogFooter>
89
- </AlertDialogContent>
90
- )}
91
- </AlertDialog>
68
+ {options && (
69
+ <Suspense fallback={null}>
70
+ <ConfirmDialog open={open} options={options} onSettle={settle} />
71
+ </Suspense>
72
+ )}
92
73
  </ConfirmContext.Provider>
93
74
  )
94
75
  }
@@ -4,7 +4,7 @@ import { useComponentConfig } from '../../hooks/use-component-config'
4
4
  import type { StylesEntry } from '../../utils/registry'
5
5
  import { tv, type VariantProps } from '../../utils/tv'
6
6
 
7
- export const aspectRatioStyles = tv({
7
+ export const aspectRatioStyles = /* @__PURE__ */ tv({
8
8
  slots: {
9
9
  base: 'overflow-hidden [&>img]:size-full [&>img]:object-cover [&>video]:size-full [&>video]:object-cover',
10
10
  },
@@ -1,6 +1,6 @@
1
1
  import { tv, type VariantProps } from '../../utils/tv'
2
2
 
3
- export const avatarStyles = tv({
3
+ export const avatarStyles = /* @__PURE__ */ tv({
4
4
  slots: {
5
5
  root: 'relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-pill bg-muted align-middle',
6
6
  image: 'size-full object-cover',
@@ -38,7 +38,7 @@ const tones = {
38
38
  type Tone = keyof typeof tones
39
39
  type Variant = keyof (typeof tones)[Tone]
40
40
 
41
- export const badgeStyles = tv({
41
+ export const badgeStyles = /* @__PURE__ */ tv({
42
42
  slots: {
43
43
  base: [
44
44
  'inline-flex h-5.5 w-fit shrink-0 items-center gap-1.5 whitespace-nowrap rounded-pill border-transparent px-2',
@@ -1,7 +1,7 @@
1
1
  import type { StylesEntry } from '../../utils/registry'
2
2
  import { tv, type VariantProps } from '../../utils/tv'
3
3
 
4
- export const bannerStyles = tv({
4
+ export const bannerStyles = /* @__PURE__ */ tv({
5
5
  slots: {
6
6
  root: ['w-full border-b-(length:--glyph-border-width) text-small'],
7
7
  inner: 'mx-auto flex w-full max-w-7xl items-center gap-3 px-4 py-2.5 sm:px-6',
@@ -3,7 +3,7 @@ import { useComponentConfig } from '../../hooks/use-component-config'
3
3
  import type { StylesEntry } from '../../utils/registry'
4
4
  import { tv, type VariantProps } from '../../utils/tv'
5
5
 
6
- export const blockquoteStyles = tv({
6
+ export const blockquoteStyles = /* @__PURE__ */ tv({
7
7
  slots: {
8
8
  root: 'grid gap-3 border-l-2 border-primary pl-5',
9
9
  quote: 'font-display text-pretty text-foreground',
@@ -2,7 +2,7 @@ import type { StylesEntry } from '../../utils/registry'
2
2
  import { focusRing, transition } from '../../utils/styles'
3
3
  import { tv } from '../../utils/tv'
4
4
 
5
- export const breadcrumbStyles = tv({
5
+ export const breadcrumbStyles = /* @__PURE__ */ tv({
6
6
  slots: {
7
7
  root: 'min-w-0',
8
8
  list: 'flex flex-wrap items-center gap-1.5 text-small text-muted-foreground',
@@ -1,7 +1,7 @@
1
1
  import { focusRing, themedBorder, transition } from '../../utils/styles'
2
2
  import { tv, type VariantProps } from '../../utils/tv'
3
3
 
4
- export const buttonStyles = tv({
4
+ export const buttonStyles = /* @__PURE__ */ tv({
5
5
  slots: {
6
6
  base: [
7
7
  'relative inline-flex shrink-0 cursor-pointer select-none items-center justify-center gap-2 whitespace-nowrap',
@@ -10,6 +10,8 @@ export const buttonStyles = tv({
10
10
  transition,
11
11
  focusRing,
12
12
  'disabled:pointer-events-none disabled:opacity-50 aria-busy:cursor-progress',
13
+ // Press feedback. CSS only, so Button stays free of animation libraries.
14
+ 'active:scale-[0.98] motion-expressive:active:scale-[0.95]',
13
15
  ],
14
16
  icon: 'inline-flex size-4 shrink-0 items-center justify-center [&>svg]:size-full',
15
17
  },
@@ -23,7 +25,7 @@ export const buttonStyles = tv({
23
25
  ghost: { base: 'text-muted-foreground hover:bg-muted hover:text-foreground' },
24
26
  danger: { base: 'bg-danger text-danger-foreground shadow-sm hover:bg-danger/88' },
25
27
  link: {
26
- base: 'h-auto px-0 text-primary-text underline-offset-4 shadow-none hover:underline',
28
+ base: 'h-auto px-0 text-primary-text underline-offset-4 shadow-none hover:underline active:scale-100 motion-expressive:active:scale-100',
27
29
  },
28
30
  },
29
31
  size: {
@@ -2,7 +2,7 @@ import type { StylesEntry } from '../../utils/registry'
2
2
  import { focusRing, transition } from '../../utils/styles'
3
3
  import { tv } from '../../utils/tv'
4
4
 
5
- export const calendarStyles = tv({
5
+ export const calendarStyles = /* @__PURE__ */ tv({
6
6
  slots: {
7
7
  root: 'relative w-fit p-3 text-small text-foreground',
8
8
  months: 'relative flex flex-col gap-6 sm:flex-row',
@@ -1,7 +1,7 @@
1
1
  import { themedBorder, transition } from '../../utils/styles'
2
2
  import { tv, type VariantProps } from '../../utils/tv'
3
3
 
4
- export const cardStyles = tv({
4
+ export const cardStyles = /* @__PURE__ */ tv({
5
5
  slots: {
6
6
  root: ['flex flex-col rounded-lg text-foreground', themedBorder, transition],
7
7
  header: 'flex flex-col gap-1',
@@ -2,7 +2,7 @@ import type { StylesEntry } from '../../utils/registry'
2
2
  import { focusRing, transition } from '../../utils/styles'
3
3
  import { tv, type VariantProps } from '../../utils/tv'
4
4
 
5
- export const carouselStyles = tv({
5
+ export const carouselStyles = /* @__PURE__ */ tv({
6
6
  slots: {
7
7
  root: 'relative',
8
8
  viewport: 'overflow-hidden rounded-lg',
@@ -1,12 +1,12 @@
1
1
  import { Checkbox as CheckboxPrimitive } from 'radix-ui'
2
- import type { ComponentProps } from 'react'
2
+ import { type ComponentProps, useState } from 'react'
3
3
  import { useComponentConfig } from '../../hooks/use-component-config'
4
4
  import { CheckIcon, MinusIcon } from '../../internal/icons'
5
5
  import { focusRing, themedBorder, transition } from '../../utils/styles'
6
6
  import { tv } from '../../utils/tv'
7
7
  import { useFieldControl } from '../field/field-context'
8
8
 
9
- export const checkboxStyles = tv({
9
+ export const checkboxStyles = /* @__PURE__ */ tv({
10
10
  slots: {
11
11
  root: [
12
12
  'peer mt-0.5 inline-flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-xs border-input bg-surface text-primary-foreground shadow-xs',
@@ -18,20 +18,35 @@ export const checkboxStyles = tv({
18
18
  'data-[state=indeterminate]:border-primary data-[state=indeterminate]:bg-primary',
19
19
  'disabled:cursor-not-allowed disabled:opacity-50',
20
20
  ],
21
- indicator: 'flex items-center justify-center [&>svg]:size-3.5 [&>svg]:stroke-[3]',
21
+ indicator: [
22
+ 'flex items-center justify-center [&>svg]:size-3.5 [&>svg]:stroke-[3]',
23
+ // Draws the tick when the user checks it (not for boxes already checked on load).
24
+ '[--glyph-draw-length:24] data-[animate]:[&_path]:animate-draw',
25
+ ],
22
26
  },
23
27
  })
24
28
 
25
29
  export function Checkbox(inProps: ComponentProps<typeof CheckboxPrimitive.Root>) {
26
- const [{ className, ...rest }, slots] = useComponentConfig('Checkbox', useFieldControl(inProps))
30
+ const [{ className, onCheckedChange, ...rest }, slots] = useComponentConfig(
31
+ 'Checkbox',
32
+ useFieldControl(inProps),
33
+ )
27
34
  const s = checkboxStyles()
35
+ const [changed, setChanged] = useState(false)
28
36
  return (
29
37
  <CheckboxPrimitive.Root
30
38
  data-slot="checkbox"
31
39
  className={s.root({ class: [slots.root, className] })}
40
+ onCheckedChange={(checked) => {
41
+ setChanged(true)
42
+ onCheckedChange?.(checked)
43
+ }}
32
44
  {...rest}
33
45
  >
34
- <CheckboxPrimitive.Indicator className={s.indicator({ class: slots.indicator })}>
46
+ <CheckboxPrimitive.Indicator
47
+ data-animate={changed || undefined}
48
+ className={s.indicator({ class: slots.indicator })}
49
+ >
35
50
  {rest.checked === 'indeterminate' ? <MinusIcon /> : <CheckIcon />}
36
51
  </CheckboxPrimitive.Indicator>
37
52
  </CheckboxPrimitive.Root>
@@ -2,13 +2,13 @@ import type { StylesEntry } from '../../utils/registry'
2
2
  import { themedBorder } from '../../utils/styles'
3
3
  import { tv, type VariantProps } from '../../utils/tv'
4
4
 
5
- export const codeStyles = tv({
5
+ export const codeStyles = /* @__PURE__ */ tv({
6
6
  slots: {
7
7
  base: 'rounded-xs bg-muted px-[0.3em] py-[0.15em] font-mono text-[0.875em] text-foreground',
8
8
  },
9
9
  })
10
10
 
11
- export const codeBlockStyles = tv({
11
+ export const codeBlockStyles = /* @__PURE__ */ tv({
12
12
  slots: {
13
13
  root: ['relative min-w-0 overflow-hidden rounded-lg border-border bg-subtle', themedBorder],
14
14
  header:
@@ -4,7 +4,7 @@ import { useComponentConfig } from '../../hooks/use-component-config'
4
4
  import type { StylesEntry } from '../../utils/registry'
5
5
  import { tv } from '../../utils/tv'
6
6
 
7
- export const collapsibleStyles = tv({
7
+ export const collapsibleStyles = /* @__PURE__ */ tv({
8
8
  slots: {
9
9
  root: '',
10
10
  trigger: '',