@forthtilliath/forth-ui 0.2.5 → 0.4.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 (372) hide show
  1. package/README.md +91 -34
  2. package/dist/components/accordion/accordion-items.d.ts +1 -1
  3. package/dist/components/accordion/accordion-items.d.ts.map +1 -1
  4. package/dist/components/accordion/accordion-items.js +3 -2
  5. package/dist/components/accordion/accordion-multiple.d.ts +1 -1
  6. package/dist/components/accordion/accordion-multiple.d.ts.map +1 -1
  7. package/dist/components/accordion/accordion-multiple.js +2 -2
  8. package/dist/components/accordion/accordion-single.d.ts +1 -1
  9. package/dist/components/accordion/accordion-single.d.ts.map +1 -1
  10. package/dist/components/accordion/accordion-single.js +2 -2
  11. package/dist/components/accordion/accordion-trigger.d.ts +15 -0
  12. package/dist/components/accordion/accordion-trigger.d.ts.map +1 -0
  13. package/dist/components/accordion/accordion-trigger.js +25 -0
  14. package/dist/components/accordion/accordion.d.ts +1 -1
  15. package/dist/components/accordion/accordion.d.ts.map +1 -1
  16. package/dist/components/accordion/accordion.js +2 -2
  17. package/dist/components/accordion/index.d.ts +1 -1
  18. package/dist/components/accordion/index.d.ts.map +1 -1
  19. package/dist/components/accordion/index.js +1 -1
  20. package/dist/components/accordion/types.d.ts +1 -1
  21. package/dist/components/accordion/types.d.ts.map +1 -1
  22. package/dist/components/alert/alert.d.ts +8 -2
  23. package/dist/components/alert/alert.d.ts.map +1 -1
  24. package/dist/components/alert/alert.js +5 -3
  25. package/dist/components/alert/index.d.ts +3 -3
  26. package/dist/components/alert/index.d.ts.map +1 -1
  27. package/dist/components/alert/index.js +1 -1
  28. package/dist/components/alert/variants.d.ts.map +1 -1
  29. package/dist/components/alert/variants.js +11 -4
  30. package/dist/components/avatar/avatar-group.d.ts +1 -1
  31. package/dist/components/avatar/avatar-group.d.ts.map +1 -1
  32. package/dist/components/avatar/avatar-group.js +1 -1
  33. package/dist/components/avatar/avatar.d.ts +9 -3
  34. package/dist/components/avatar/avatar.d.ts.map +1 -1
  35. package/dist/components/avatar/avatar.js +7 -4
  36. package/dist/components/avatar/index.d.ts +4 -4
  37. package/dist/components/avatar/index.d.ts.map +1 -1
  38. package/dist/components/avatar/index.js +2 -2
  39. package/dist/components/avatar/variants.d.ts.map +1 -1
  40. package/dist/components/avatar/variants.js +39 -39
  41. package/dist/components/badge/badge.d.ts +8 -2
  42. package/dist/components/badge/badge.d.ts.map +1 -1
  43. package/dist/components/badge/badge.js +5 -3
  44. package/dist/components/badge/index.d.ts +3 -3
  45. package/dist/components/badge/index.d.ts.map +1 -1
  46. package/dist/components/badge/index.js +1 -1
  47. package/dist/components/badge/variants.d.ts.map +1 -1
  48. package/dist/components/badge/variants.js +8 -4
  49. package/dist/components/banner/banner.d.ts +8 -2
  50. package/dist/components/banner/banner.d.ts.map +1 -1
  51. package/dist/components/banner/banner.js +5 -3
  52. package/dist/components/banner/index.d.ts +3 -3
  53. package/dist/components/banner/index.d.ts.map +1 -1
  54. package/dist/components/banner/index.js +1 -1
  55. package/dist/components/bento-grid/index.d.ts +2 -2
  56. package/dist/components/bento-grid/index.d.ts.map +1 -1
  57. package/dist/components/bento-grid/index.js +1 -1
  58. package/dist/components/breadcrumb/breadcrumb.d.ts +8 -2
  59. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  60. package/dist/components/breadcrumb/breadcrumb.js +8 -3
  61. package/dist/components/breadcrumb/index.d.ts +2 -2
  62. package/dist/components/breadcrumb/index.d.ts.map +1 -1
  63. package/dist/components/breadcrumb/index.js +1 -1
  64. package/dist/components/button/button.d.ts +1 -1
  65. package/dist/components/button/button.d.ts.map +1 -1
  66. package/dist/components/button/button.js +1 -1
  67. package/dist/components/button/index.d.ts +5 -5
  68. package/dist/components/button/index.d.ts.map +1 -1
  69. package/dist/components/button/index.js +2 -2
  70. package/dist/components/checkbox/index.d.ts +2 -2
  71. package/dist/components/checkbox/index.d.ts.map +1 -1
  72. package/dist/components/checkbox/index.js +1 -1
  73. package/dist/components/chip/chip.d.ts +2 -2
  74. package/dist/components/chip/chip.d.ts.map +1 -1
  75. package/dist/components/chip/chip.js +2 -2
  76. package/dist/components/chip/index.d.ts +2 -2
  77. package/dist/components/chip/index.d.ts.map +1 -1
  78. package/dist/components/chip/index.js +1 -1
  79. package/dist/components/code-block/code-block.d.ts +7 -1
  80. package/dist/components/code-block/code-block.d.ts.map +1 -1
  81. package/dist/components/code-block/code-block.js +4 -2
  82. package/dist/components/code-block/index.d.ts +2 -2
  83. package/dist/components/code-block/index.d.ts.map +1 -1
  84. package/dist/components/code-block/index.js +1 -1
  85. package/dist/components/collapsible/index.d.ts +6 -6
  86. package/dist/components/collapsible/index.d.ts.map +1 -1
  87. package/dist/components/collapsible/index.js +3 -3
  88. package/dist/components/color-picker/color-picker.d.ts +7 -1
  89. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  90. package/dist/components/color-picker/color-picker.js +5 -3
  91. package/dist/components/color-picker/index.d.ts +2 -2
  92. package/dist/components/color-picker/index.d.ts.map +1 -1
  93. package/dist/components/color-picker/index.js +1 -1
  94. package/dist/components/column-menu/column-menu.d.ts +39 -0
  95. package/dist/components/column-menu/column-menu.d.ts.map +1 -0
  96. package/dist/components/column-menu/column-menu.js +74 -0
  97. package/dist/components/column-menu/index.d.ts +6 -0
  98. package/dist/components/column-menu/index.d.ts.map +1 -0
  99. package/dist/components/column-menu/index.js +3 -0
  100. package/dist/components/column-menu/sortable-column-row.d.ts +13 -0
  101. package/dist/components/column-menu/sortable-column-row.d.ts.map +1 -0
  102. package/dist/components/column-menu/sortable-column-row.js +22 -0
  103. package/dist/components/column-menu/types.d.ts +21 -0
  104. package/dist/components/column-menu/types.d.ts.map +1 -0
  105. package/dist/components/column-menu/types.js +7 -0
  106. package/dist/components/column-menu/use-dnd-sensors.d.ts +6 -0
  107. package/dist/components/column-menu/use-dnd-sensors.d.ts.map +1 -0
  108. package/dist/components/column-menu/use-dnd-sensors.js +14 -0
  109. package/dist/components/combobox/combobox.d.ts +16 -1
  110. package/dist/components/combobox/combobox.d.ts.map +1 -1
  111. package/dist/components/combobox/combobox.js +7 -3
  112. package/dist/components/combobox/index.d.ts +4 -4
  113. package/dist/components/combobox/index.d.ts.map +1 -1
  114. package/dist/components/combobox/index.js +2 -2
  115. package/dist/components/combobox/multi-select.d.ts +17 -2
  116. package/dist/components/combobox/multi-select.d.ts.map +1 -1
  117. package/dist/components/combobox/multi-select.js +8 -4
  118. package/dist/components/command-palette/command-palette.d.ts +7 -1
  119. package/dist/components/command-palette/command-palette.d.ts.map +1 -1
  120. package/dist/components/command-palette/command-palette.js +6 -2
  121. package/dist/components/command-palette/index.d.ts +2 -2
  122. package/dist/components/command-palette/index.d.ts.map +1 -1
  123. package/dist/components/command-palette/index.js +1 -1
  124. package/dist/components/confirm-dialog/confirm-dialog.d.ts +7 -1
  125. package/dist/components/confirm-dialog/confirm-dialog.d.ts.map +1 -1
  126. package/dist/components/confirm-dialog/confirm-dialog.js +12 -6
  127. package/dist/components/confirm-dialog/index.d.ts +3 -3
  128. package/dist/components/confirm-dialog/index.d.ts.map +1 -1
  129. package/dist/components/confirm-dialog/index.js +2 -2
  130. package/dist/components/confirm-dialog/use-confirm.d.ts +1 -1
  131. package/dist/components/confirm-dialog/use-confirm.d.ts.map +1 -1
  132. package/dist/components/confirm-dialog/use-confirm.js +1 -1
  133. package/dist/components/copy-menu-item/copy-menu-item.d.ts +18 -0
  134. package/dist/components/copy-menu-item/copy-menu-item.d.ts.map +1 -0
  135. package/dist/components/copy-menu-item/copy-menu-item.js +23 -0
  136. package/dist/components/copy-menu-item/index.d.ts +3 -0
  137. package/dist/components/copy-menu-item/index.d.ts.map +1 -0
  138. package/dist/components/copy-menu-item/index.js +1 -0
  139. package/dist/components/count-animation/index.d.ts +2 -2
  140. package/dist/components/count-animation/index.d.ts.map +1 -1
  141. package/dist/components/count-animation/index.js +1 -1
  142. package/dist/components/date-picker/date-picker.d.ts +7 -1
  143. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  144. package/dist/components/date-picker/date-picker.js +6 -3
  145. package/dist/components/date-picker/index.d.ts +2 -2
  146. package/dist/components/date-picker/index.d.ts.map +1 -1
  147. package/dist/components/date-picker/index.js +1 -1
  148. package/dist/components/description-list/index.d.ts +1 -1
  149. package/dist/components/description-list/index.d.ts.map +1 -1
  150. package/dist/components/description-list/index.js +1 -1
  151. package/dist/components/dropdrawer/index.d.ts +2 -2
  152. package/dist/components/dropdrawer/index.d.ts.map +1 -1
  153. package/dist/components/dropdrawer/index.js +1 -1
  154. package/dist/components/dropzone/dropzone.d.ts +7 -1
  155. package/dist/components/dropzone/dropzone.d.ts.map +1 -1
  156. package/dist/components/dropzone/dropzone.js +5 -3
  157. package/dist/components/dropzone/index.d.ts +2 -2
  158. package/dist/components/dropzone/index.d.ts.map +1 -1
  159. package/dist/components/dropzone/index.js +1 -1
  160. package/dist/components/field/index.d.ts +2 -2
  161. package/dist/components/field/index.d.ts.map +1 -1
  162. package/dist/components/field/index.js +1 -1
  163. package/dist/components/file-list/file-list.d.ts +4 -1
  164. package/dist/components/file-list/file-list.d.ts.map +1 -1
  165. package/dist/components/file-list/file-list.js +4 -1
  166. package/dist/components/file-list/index.d.ts +2 -2
  167. package/dist/components/file-list/index.d.ts.map +1 -1
  168. package/dist/components/file-list/index.js +1 -1
  169. package/dist/components/gradient-frame/gradient-frame.d.ts +27 -0
  170. package/dist/components/gradient-frame/gradient-frame.d.ts.map +1 -0
  171. package/dist/components/gradient-frame/gradient-frame.js +16 -0
  172. package/dist/components/gradient-frame/index.d.ts +3 -0
  173. package/dist/components/gradient-frame/index.d.ts.map +1 -0
  174. package/dist/components/gradient-frame/index.js +1 -0
  175. package/dist/components/grid/context.d.ts.map +1 -1
  176. package/dist/components/grid/context.js +1 -0
  177. package/dist/components/grid/grid-item.d.ts +1 -1
  178. package/dist/components/grid/grid-item.d.ts.map +1 -1
  179. package/dist/components/grid/grid-item.js +3 -2
  180. package/dist/components/grid/grid.d.ts +3 -3
  181. package/dist/components/grid/grid.d.ts.map +1 -1
  182. package/dist/components/grid/grid.js +4 -3
  183. package/dist/components/grid/index.d.ts +2 -2
  184. package/dist/components/grid/index.d.ts.map +1 -1
  185. package/dist/components/grid/index.js +2 -2
  186. package/dist/components/grid/variants.d.ts +2 -2
  187. package/dist/components/icon-bubble/icon-bubble.d.ts +21 -0
  188. package/dist/components/icon-bubble/icon-bubble.d.ts.map +1 -0
  189. package/dist/components/icon-bubble/icon-bubble.js +16 -0
  190. package/dist/components/icon-bubble/index.d.ts +4 -0
  191. package/dist/components/icon-bubble/index.d.ts.map +1 -0
  192. package/dist/components/icon-bubble/index.js +1 -0
  193. package/dist/components/icon-bubble/variants.d.ts +12 -0
  194. package/dist/components/icon-bubble/variants.d.ts.map +1 -0
  195. package/dist/components/icon-bubble/variants.js +19 -0
  196. package/dist/components/image-input/image-input.d.ts +7 -1
  197. package/dist/components/image-input/image-input.d.ts.map +1 -1
  198. package/dist/components/image-input/image-input.js +4 -2
  199. package/dist/components/image-input/index.d.ts +2 -2
  200. package/dist/components/image-input/index.d.ts.map +1 -1
  201. package/dist/components/image-input/index.js +1 -1
  202. package/dist/components/infinite-scroll/index.d.ts +2 -2
  203. package/dist/components/infinite-scroll/index.d.ts.map +1 -1
  204. package/dist/components/infinite-scroll/index.js +1 -1
  205. package/dist/components/kbd/index.d.ts +1 -1
  206. package/dist/components/kbd/index.d.ts.map +1 -1
  207. package/dist/components/kbd/index.js +1 -1
  208. package/dist/components/link/index.d.ts +6 -6
  209. package/dist/components/link/index.d.ts.map +1 -1
  210. package/dist/components/link/index.js +3 -3
  211. package/dist/components/link/link.d.ts +1 -1
  212. package/dist/components/link/link.d.ts.map +1 -1
  213. package/dist/components/link/link.js +1 -1
  214. package/dist/components/marquee/index.d.ts +2 -2
  215. package/dist/components/marquee/index.d.ts.map +1 -1
  216. package/dist/components/marquee/index.js +1 -1
  217. package/dist/components/mode-toggle/index.d.ts +4 -0
  218. package/dist/components/mode-toggle/index.d.ts.map +1 -0
  219. package/dist/components/mode-toggle/index.js +2 -0
  220. package/dist/components/mode-toggle/mode-toggle.d.ts +22 -0
  221. package/dist/components/mode-toggle/mode-toggle.d.ts.map +1 -0
  222. package/dist/components/mode-toggle/mode-toggle.js +26 -0
  223. package/dist/components/mode-toggle/theme-provider.d.ts +13 -0
  224. package/dist/components/mode-toggle/theme-provider.d.ts.map +1 -0
  225. package/dist/components/mode-toggle/theme-provider.js +15 -0
  226. package/dist/components/multi-step-loader/index.d.ts +2 -2
  227. package/dist/components/multi-step-loader/index.d.ts.map +1 -1
  228. package/dist/components/multi-step-loader/index.js +1 -1
  229. package/dist/components/multi-step-loader/multi-step-loader.js +2 -2
  230. package/dist/components/navbar/index.d.ts +4 -4
  231. package/dist/components/navbar/index.d.ts.map +1 -1
  232. package/dist/components/navbar/index.js +2 -2
  233. package/dist/components/navbar/navbar-mobile-menu.d.ts +7 -1
  234. package/dist/components/navbar/navbar-mobile-menu.d.ts.map +1 -1
  235. package/dist/components/navbar/navbar-mobile-menu.js +5 -3
  236. package/dist/components/notification-center/index.d.ts +2 -2
  237. package/dist/components/notification-center/index.d.ts.map +1 -1
  238. package/dist/components/notification-center/index.js +1 -1
  239. package/dist/components/notification-center/notification-center.d.ts +7 -1
  240. package/dist/components/notification-center/notification-center.d.ts.map +1 -1
  241. package/dist/components/notification-center/notification-center.js +7 -4
  242. package/dist/components/number-input/index.d.ts +2 -2
  243. package/dist/components/number-input/index.d.ts.map +1 -1
  244. package/dist/components/number-input/index.js +1 -1
  245. package/dist/components/number-input/number-input.d.ts +7 -1
  246. package/dist/components/number-input/number-input.d.ts.map +1 -1
  247. package/dist/components/number-input/number-input.js +6 -4
  248. package/dist/components/pagination/index.d.ts +4 -4
  249. package/dist/components/pagination/index.d.ts.map +1 -1
  250. package/dist/components/pagination/index.js +2 -2
  251. package/dist/components/pagination/pagination.d.ts +8 -2
  252. package/dist/components/pagination/pagination.d.ts.map +1 -1
  253. package/dist/components/pagination/pagination.js +12 -9
  254. package/dist/components/password-input/index.d.ts +4 -4
  255. package/dist/components/password-input/index.d.ts.map +1 -1
  256. package/dist/components/password-input/index.js +2 -2
  257. package/dist/components/password-input/password-input.d.ts +9 -2
  258. package/dist/components/password-input/password-input.d.ts.map +1 -1
  259. package/dist/components/password-input/password-input.js +4 -2
  260. package/dist/components/progress/index.d.ts +3 -3
  261. package/dist/components/progress/index.d.ts.map +1 -1
  262. package/dist/components/progress/index.js +1 -1
  263. package/dist/components/progress/progress.d.ts +5 -2
  264. package/dist/components/progress/progress.d.ts.map +1 -1
  265. package/dist/components/progress/progress.js +5 -3
  266. package/dist/components/qr-code/index.d.ts +2 -2
  267. package/dist/components/qr-code/index.d.ts.map +1 -1
  268. package/dist/components/qr-code/index.js +1 -1
  269. package/dist/components/qr-code/qr-code.d.ts +7 -1
  270. package/dist/components/qr-code/qr-code.d.ts.map +1 -1
  271. package/dist/components/qr-code/qr-code.js +5 -2
  272. package/dist/components/radio/index.d.ts +2 -2
  273. package/dist/components/radio/index.d.ts.map +1 -1
  274. package/dist/components/radio/index.js +1 -1
  275. package/dist/components/rating/index.d.ts +2 -2
  276. package/dist/components/rating/index.d.ts.map +1 -1
  277. package/dist/components/rating/index.js +1 -1
  278. package/dist/components/rating/rating.d.ts +7 -1
  279. package/dist/components/rating/rating.d.ts.map +1 -1
  280. package/dist/components/rating/rating.js +23 -2
  281. package/dist/components/relative-time/index.d.ts +2 -2
  282. package/dist/components/relative-time/index.d.ts.map +1 -1
  283. package/dist/components/relative-time/index.js +1 -1
  284. package/dist/components/reparent/index.d.ts +2 -2
  285. package/dist/components/reparent/index.d.ts.map +1 -1
  286. package/dist/components/reparent/index.js +1 -1
  287. package/dist/components/repeat/index.d.ts +1 -1
  288. package/dist/components/repeat/index.d.ts.map +1 -1
  289. package/dist/components/repeat/index.js +1 -1
  290. package/dist/components/scroll-progress/index.d.ts +2 -2
  291. package/dist/components/scroll-progress/index.d.ts.map +1 -1
  292. package/dist/components/scroll-progress/index.js +1 -1
  293. package/dist/components/scroll-shadow/index.d.ts +2 -2
  294. package/dist/components/scroll-shadow/index.d.ts.map +1 -1
  295. package/dist/components/scroll-shadow/index.js +1 -1
  296. package/dist/components/scroll-shadow/scroll-shadow.d.ts.map +1 -1
  297. package/dist/components/scroll-shadow/scroll-shadow.js +3 -1
  298. package/dist/components/scrollspy/index.d.ts +2 -2
  299. package/dist/components/scrollspy/index.d.ts.map +1 -1
  300. package/dist/components/scrollspy/index.js +1 -1
  301. package/dist/components/separator/index.d.ts +2 -2
  302. package/dist/components/separator/index.d.ts.map +1 -1
  303. package/dist/components/separator/index.js +1 -1
  304. package/dist/components/snippet/index.d.ts +2 -2
  305. package/dist/components/snippet/index.d.ts.map +1 -1
  306. package/dist/components/snippet/index.js +1 -1
  307. package/dist/components/snippet/snippet.d.ts +7 -1
  308. package/dist/components/snippet/snippet.d.ts.map +1 -1
  309. package/dist/components/snippet/snippet.js +6 -2
  310. package/dist/components/sortable/index.d.ts +2 -2
  311. package/dist/components/sortable/index.d.ts.map +1 -1
  312. package/dist/components/sortable/index.js +1 -1
  313. package/dist/components/spacer/index.d.ts +2 -2
  314. package/dist/components/spacer/index.d.ts.map +1 -1
  315. package/dist/components/spacer/index.js +1 -1
  316. package/dist/components/spinner/index.d.ts +3 -3
  317. package/dist/components/spinner/index.d.ts.map +1 -1
  318. package/dist/components/spinner/index.js +1 -1
  319. package/dist/components/spinner/spinner.d.ts +8 -2
  320. package/dist/components/spinner/spinner.d.ts.map +1 -1
  321. package/dist/components/spinner/spinner.js +6 -3
  322. package/dist/components/stepper/index.d.ts +2 -2
  323. package/dist/components/stepper/index.d.ts.map +1 -1
  324. package/dist/components/stepper/index.js +1 -1
  325. package/dist/components/submit-button/index.d.ts +2 -2
  326. package/dist/components/submit-button/index.d.ts.map +1 -1
  327. package/dist/components/submit-button/index.js +1 -1
  328. package/dist/components/submit-button/submit-button.d.ts +1 -1
  329. package/dist/components/submit-button/submit-button.d.ts.map +1 -1
  330. package/dist/components/submit-button/submit-button.js +1 -1
  331. package/dist/components/tags-input/index.d.ts +2 -2
  332. package/dist/components/tags-input/index.d.ts.map +1 -1
  333. package/dist/components/tags-input/index.js +1 -1
  334. package/dist/components/tags-input/tags-input.d.ts +14 -1
  335. package/dist/components/tags-input/tags-input.d.ts.map +1 -1
  336. package/dist/components/tags-input/tags-input.js +7 -4
  337. package/dist/components/theme-image/index.d.ts +3 -0
  338. package/dist/components/theme-image/index.d.ts.map +1 -0
  339. package/dist/components/theme-image/index.js +1 -0
  340. package/dist/components/theme-image/theme-image.d.ts +25 -0
  341. package/dist/components/theme-image/theme-image.d.ts.map +1 -0
  342. package/dist/components/theme-image/theme-image.js +19 -0
  343. package/dist/components/timeline/index.d.ts +2 -2
  344. package/dist/components/timeline/index.d.ts.map +1 -1
  345. package/dist/components/timeline/index.js +1 -1
  346. package/dist/components/toggle-switch/index.d.ts +4 -0
  347. package/dist/components/toggle-switch/index.d.ts.map +1 -0
  348. package/dist/components/toggle-switch/index.js +1 -0
  349. package/dist/components/toggle-switch/toggle-switch.d.ts +37 -0
  350. package/dist/components/toggle-switch/toggle-switch.d.ts.map +1 -0
  351. package/dist/components/toggle-switch/toggle-switch.js +25 -0
  352. package/dist/components/toggle-switch/variants.d.ts +9 -0
  353. package/dist/components/toggle-switch/variants.d.ts.map +1 -0
  354. package/dist/components/toggle-switch/variants.js +30 -0
  355. package/dist/components/tree/index.d.ts +2 -2
  356. package/dist/components/tree/index.d.ts.map +1 -1
  357. package/dist/components/tree/index.js +1 -1
  358. package/dist/components/tree/tree.js +1 -1
  359. package/dist/globals.css +1509 -121
  360. package/dist/locale/UiLocaleProvider.d.ts +19 -0
  361. package/dist/locale/UiLocaleProvider.d.ts.map +1 -0
  362. package/dist/locale/UiLocaleProvider.js +17 -0
  363. package/dist/locale/index.d.ts +4 -0
  364. package/dist/locale/index.d.ts.map +1 -0
  365. package/dist/locale/index.js +3 -0
  366. package/dist/locale/locale.d.ts +15 -0
  367. package/dist/locale/locale.d.ts.map +1 -0
  368. package/dist/locale/locale.js +19 -0
  369. package/dist/locale/messages.d.ts +98 -0
  370. package/dist/locale/messages.d.ts.map +1 -0
  371. package/dist/locale/messages.js +99 -0
  372. package/package.json +34 -15
package/README.md CHANGED
@@ -8,7 +8,7 @@ built from `Popover` + `Command`, a `PasswordInput` with a strength meter, a
8
8
  `Dropdrawer` that's a `DropdownMenu` on desktop and a `Drawer` on mobile —
9
9
  so you don't have to wire the same recipe from scratch in every project.
10
10
 
11
- 58 components across 8 categories, styled with Tailwind CSS and
11
+ 62 components across 8 categories, styled with Tailwind CSS and
12
12
  `class-variance-authority`, fully typed, and browsable in Storybook
13
13
  (`pnpm run dev:sb` from the repo root).
14
14
 
@@ -17,6 +17,7 @@ so you don't have to wire the same recipe from scratch in every project.
17
17
  - [Why forth-ui](#why-forth-ui)
18
18
  - [Installation](#installation)
19
19
  - [Usage](#usage)
20
+ - [Language](#language)
20
21
  - [Components](#components)
21
22
  - [Conventions](#conventions)
22
23
  - [Theming](#theming)
@@ -60,6 +61,12 @@ Import the compiled stylesheet once, alongside your component imports:
60
61
  import "@forthtilliath/forth-ui/styles/globals.css";
61
62
  ```
62
63
 
64
+ It covers forth-ui's components and the shadcn-ui ones they're built on
65
+ (Dialog, Popover…) — not every shadcn-ui component. If your app also uses
66
+ others directly (Sidebar, Table…), or has its own Tailwind build anyway,
67
+ use the [Theming](#theming) setup instead: your Tailwind then scans both
68
+ packages.
69
+
63
70
  ### As a workspace package (this monorepo)
64
71
 
65
72
  Within this monorepo, `forth-ui` is consumed the same way, just via the
@@ -131,6 +138,28 @@ function Example() {
131
138
  }
132
139
  ```
133
140
 
141
+ ## Language
142
+
143
+ Built-in labels (`aria-label`s, default placeholders, empty states, the
144
+ Pagination and ConfirmDialog buttons…) are available in **French** (the
145
+ default) and **English**. For a bilingual site, set the language once with
146
+ `UiLocaleProvider`; a component's own `locale` prop wins over it, and its
147
+ text props (`placeholder`, `emptyMessage`, `ariaLabel`, a ConfirmDialog's
148
+ `cancelLabel`…) still override individual strings.
149
+
150
+ ```tsx
151
+ import { UiLocaleProvider } from "@forthtilliath/forth-ui/locale";
152
+
153
+ <UiLocaleProvider locale={lang /* "fr" | "en" */}>{children}</UiLocaleProvider>;
154
+
155
+ // or per component:
156
+ <Spinner locale="en" />;
157
+ ```
158
+
159
+ `UI_MESSAGES` (same entry point) holds every label, grouped by component.
160
+ Components rendered from shadcn-ui as-is (e.g. a Dialog's close button) keep
161
+ shadcn's English text.
162
+
134
163
  ## Components
135
164
 
136
165
  Grouped the same way as the Storybook sidebar (`forth-ui/<Category>/...`).
@@ -164,10 +193,11 @@ Grouped the same way as the Storybook sidebar (`forth-ui/<Category>/...`).
164
193
 
165
194
  ### Buttons & Actions
166
195
 
167
- | Component | Import | Description |
168
- | ----------------------- | ------------------- | ------------------------------------------------------------------------------ |
169
- | `Button`, `ButtonGroup` | `components/button` | A button, or a component that looks like one, plus joined button rows/columns. |
170
- | `Chip` | `components/chip` | A compact, interactive element for status, categories, or filters. |
196
+ | Component | Import | Description |
197
+ | ----------------------------- | ------------------------ | ------------------------------------------------------------------------------- |
198
+ | `Button`, `ButtonGroup` | `components/button` | A button, or a component that looks like one, plus joined button rows/columns. |
199
+ | `Chip` | `components/chip` | A compact, interactive element for status, categories, or filters. |
200
+ | `ModeToggle`, `ThemeProvider` | `components/mode-toggle` | A light / dark / system theme switcher (needs the optional `next-themes` peer). |
171
201
 
172
202
  ### Forms
173
203
 
@@ -186,6 +216,7 @@ Grouped the same way as the Storybook sidebar (`forth-ui/<Category>/...`).
186
216
  | `Rating` | `components/rating` | A star rating control with keyboard navigation and hover preview. |
187
217
  | `SubmitButton` | `components/submit-button` | A submit `Button` that shows its own loading state via `useFormStatus`. |
188
218
  | `TagsInput` | `components/tags-input` | A flexible input for adding/removing multiple tags. |
219
+ | `ToggleSwitch` | `components/toggle-switch` | An on/off switch with an optional visible label and description. |
189
220
 
190
221
  ### Feedback
191
222
 
@@ -207,21 +238,26 @@ Grouped the same way as the Storybook sidebar (`forth-ui/<Category>/...`).
207
238
  | ---------------- | ---------------------------- | ----------------------------------------------------------------------------------- |
208
239
  | `CommandPalette` | `components/command-palette` | A global command menu (Cmd/Ctrl+K to open). |
209
240
  | `useConfirm` | `components/confirm-dialog` | An imperative `await confirm({...})` alternative to hand-wiring an `AlertDialog`. |
241
+ | `CopyMenuItem` | `components/copy-menu-item` | A `DropdownMenuItem` that copies a value and briefly shows a checkmark. |
210
242
  | `Dropdrawer` | `components/dropdrawer` | A menu that renders as a `DropdownMenu` on desktop and a bottom `Drawer` on mobile. |
211
243
 
212
244
  ### Data Display
213
245
 
214
- | Component | Import | Description |
215
- | ----------------------- | ----------------------------- | ------------------------------------------------------------------------ |
216
- | `Avatar`, `AvatarGroup` | `components/avatar` | An image with a fallback, status/badge indicators, and stacked grouping. |
217
- | `DescriptionList` | `components/description-list` | A description list, with terms and descriptions. |
218
- | `FileList` | `components/file-list` | Displays a list of files with name, size, and upload progress. |
219
- | `Kbd` | `components/kbd` | Displays which key or combination of keys performs a given action. |
220
- | `QrCode` | `components/qr-code` | Generates a QR code from a string, rendered as inline SVG. |
221
- | `RelativeTime` | `components/relative-time` | Displays a live-updating time, defaulting to the local timezone. |
222
- | `Sortable` | `components/sortable` | A drag-to-reorder list built on native HTML5 drag events. |
223
- | `Timeline` | `components/timeline` | A vertical sequence of dated events, connected by a line. |
224
- | `Tree` | `components/tree` | A hierarchical, expandable/collapsible list of nodes. |
246
+ | Component | Import | Description |
247
+ | ------------------------------ | ----------------------------- | ------------------------------------------------------------------------ |
248
+ | `Avatar`, `AvatarGroup` | `components/avatar` | An image with a fallback, status/badge indicators, and stacked grouping. |
249
+ | `ColumnMenu` (`useDndSensors`) | `components/column-menu` | A dropdown to show/hide and reorder (drag and drop) a table's columns. |
250
+ | `DescriptionList` | `components/description-list` | A description list, with terms and descriptions. |
251
+ | `FileList` | `components/file-list` | Displays a list of files with name, size, and upload progress. |
252
+ | `GradientFrame` | `components/gradient-frame` | A visual laid on an offset, gradient-filled frame. |
253
+ | `IconBubble` | `components/icon-bubble` | An icon inside a round, tinted bubble. |
254
+ | `Kbd` | `components/kbd` | Displays which key or combination of keys performs a given action. |
255
+ | `QrCode` | `components/qr-code` | Generates a QR code from a string, rendered as inline SVG. |
256
+ | `RelativeTime` | `components/relative-time` | Displays a live-updating time, defaulting to the local timezone. |
257
+ | `Sortable` | `components/sortable` | A drag-to-reorder list built on native HTML5 drag events. |
258
+ | `ThemeImage` | `components/theme-image` | An image with a light and a dark version (`as={Image}` for Next.js). |
259
+ | `Timeline` | `components/timeline` | A vertical sequence of dated events, connected by a line. |
260
+ | `Tree` | `components/tree` | A hierarchical, expandable/collapsible list of nodes. |
225
261
 
226
262
  ### Code & Content
227
263
 
@@ -290,25 +326,46 @@ Tailwind v4 expects any npm-distributed component library to be consumed.
290
326
 
291
327
  ### Available themes
292
328
 
293
- 11 [tweakcn](https://tweakcn.com)-generated themes ship under
329
+ 19 themes ship under
294
330
  `@forthtilliath/shadcn-ui/styles/themes/`, all rendered here with the same
295
- components:
296
-
297
- | `default` | `blue` | `bubblegum` |
298
- | ------------------------------------------- | ------------------------------------- | ----------------------------------------------- |
299
- | ![default theme](./docs/themes/default.png) | ![blue theme](./docs/themes/blue.png) | ![bubblegum theme](./docs/themes/bubblegum.png) |
300
-
301
- | `claymorphism` | `green` | `orange` |
302
- | ----------------------------------------------------- | --------------------------------------- | ----------------------------------------- |
303
- | ![claymorphism theme](./docs/themes/claymorphism.png) | ![green theme](./docs/themes/green.png) | ![orange theme](./docs/themes/orange.png) |
304
-
305
- | `red` | `rose` | `twitter` |
306
- | ----------------------------------- | ------------------------------------- | ------------------------------------------- |
307
- | ![red theme](./docs/themes/red.png) | ![rose theme](./docs/themes/rose.png) | ![twitter theme](./docs/themes/twitter.png) |
308
-
309
- | `violet` | `yellow` |
310
- | ----------------------------------------- | ----------------------------------------- |
311
- | ![violet theme](./docs/themes/violet.png) | ![yellow theme](./docs/themes/yellow.png) |
331
+ components (light and dark mode).
332
+
333
+ The first 11 are [tweakcn](https://tweakcn.com)-generated — most of them only
334
+ change the colors:
335
+
336
+ | Theme | Style | Light | Dark |
337
+ | -------------- | -------------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------- |
338
+ | `default` | shadcn's neutral default: black on white, grey accents. | ![default theme, light](./docs/themes/default.png) | ![default theme, dark](./docs/themes/default-dark.png) |
339
+ | `blue` | The default look with a blue primary. | ![blue theme, light](./docs/themes/blue.png) | ![blue theme, dark](./docs/themes/blue-dark.png) |
340
+ | `bubblegum` | Candy pink and pastels, Poppins, hard offset shadows. | ![bubblegum theme, light](./docs/themes/bubblegum.png) | ![bubblegum theme, dark](./docs/themes/bubblegum-dark.png) |
341
+ | `claymorphism` | Soft clay: warm greys and indigo, very round, pillowy shadows. | ![claymorphism theme, light](./docs/themes/claymorphism.png) | ![claymorphism theme, dark](./docs/themes/claymorphism-dark.png) |
342
+ | `green` | The default look with a green primary. | ![green theme, light](./docs/themes/green.png) | ![green theme, dark](./docs/themes/green-dark.png) |
343
+ | `orange` | The default look with an orange primary. | ![orange theme, light](./docs/themes/orange.png) | ![orange theme, dark](./docs/themes/orange-dark.png) |
344
+ | `red` | The default look with a red primary. | ![red theme, light](./docs/themes/red.png) | ![red theme, dark](./docs/themes/red-dark.png) |
345
+ | `rose` | The default look with a rose primary. | ![rose theme, light](./docs/themes/rose.png) | ![rose theme, dark](./docs/themes/rose-dark.png) |
346
+ | `twitter` | Twitter blue, Open Sans, very round corners. | ![twitter theme, light](./docs/themes/twitter.png) | ![twitter theme, dark](./docs/themes/twitter-dark.png) |
347
+ | `violet` | The default look with a violet primary. | ![violet theme, light](./docs/themes/violet.png) | ![violet theme, dark](./docs/themes/violet-dark.png) |
348
+ | `yellow` | The default look with a yellow primary. | ![yellow theme, light](./docs/themes/yellow.png) | ![yellow theme, dark](./docs/themes/yellow-dark.png) |
349
+
350
+ The other 8 go further: besides fonts, radius and shadows, each
351
+ adds **signature effects** — plain CSS rules on shadcn-ui's `data-slot`
352
+ attributes (pixel frames, scanlines, frosted glass, hand-drawn outlines…),
353
+ active only while the theme is imported. The components themselves are
354
+ untouched, and focus stays visible (a theme restyling a button's shadow
355
+ gets an outline instead). Their fonts fall back to system stacks; load the
356
+ fonts named at the top of each file (Google Fonts, `next/font`…) for the
357
+ full look.
358
+
359
+ | Theme | Style | Light | Dark |
360
+ | ----------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------------------- |
361
+ | `brutalist` | Neo-brutalism: thick black outlines, hard offset shadows, buttons that press in, dotted paper. | ![brutalist theme, light](./docs/themes/brutalist.png) | ![brutalist theme, dark](./docs/themes/brutalist-dark.png) |
362
+ | `pixel` | 8-bit: notched pixel frames, pixel type, checkerboard — Game Boy greens (light), PICO-8 night (dark). | ![pixel theme, light](./docs/themes/pixel.png) | ![pixel theme, dark](./docs/themes/pixel-dark.png) |
363
+ | `crt` | CRT monitor: amber phosphor, scanlines and vignette, glowing text, blinking cursor. | ![crt theme, light](./docs/themes/crt.png) | ![crt theme, dark](./docs/themes/crt-dark.png) |
364
+ | `synthwave` | Synthwave: sunset sky over a perspective grid, chrome titles, neon gradient buttons. | ![synthwave theme, light](./docs/themes/synthwave.png) | ![synthwave theme, dark](./docs/themes/synthwave-dark.png) |
365
+ | `glass` | Glassmorphism: frosted translucent surfaces floating over a colorful gradient mesh. | ![glass theme, light](./docs/themes/glass.png) | ![glass theme, dark](./docs/themes/glass-dark.png) |
366
+ | `sketch` | Hand-drawn: wobbly inked outlines and handwriting — lined notebook (light), chalkboard (dark). | ![sketch theme, light](./docs/themes/sketch.png) | ![sketch theme, dark](./docs/themes/sketch-dark.png) |
367
+ | `newspaper` | Newspaper: newsprint and ink, Didone headlines over double rules, halftone dots, small caps. | ![newspaper theme, light](./docs/themes/newspaper.png) | ![newspaper theme, dark](./docs/themes/newspaper-dark.png) |
368
+ | `memphis` | Memphis pop: confetti pattern, asymmetric corners, squiggly underlined titles, colored hard shadows. | ![memphis theme, light](./docs/themes/memphis.png) | ![memphis theme, dark](./docs/themes/memphis-dark.png) |
312
369
 
313
370
  ## Development
314
371
 
@@ -1,3 +1,3 @@
1
- import type { AccordionProps } from "./types";
1
+ import type { AccordionProps } from "./types.js";
2
2
  export declare function Items({ hideChevron, chevronAlignment, customChevron, items, icon, classNameItem, classNameTrigger, classNameContent, variant, size, generateId, }: Omit<AccordionProps, "multiple" | "className">): import("react").JSX.Element[];
3
3
  //# sourceMappingURL=accordion-items.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion-items.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion-items.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAO9C,wBAAgB,KAAK,CAAC,EACpB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,IAAI,EACJ,UAA+C,GAChD,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,WAAW,CAAC,iCAuEhD"}
1
+ {"version":3,"file":"accordion-items.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion-items.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAOjD,wBAAgB,KAAK,CAAC,EACpB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,IAAI,EACJ,UAA+C,GAChD,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,WAAW,CAAC,iCAuEhD"}
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { AccordionContent, AccordionItem, AccordionTrigger, } from "@forthtilliath/shadcn-ui/components/accordion";
2
+ import { AccordionContent, AccordionItem, } from "@forthtilliath/shadcn-ui/components/accordion";
3
3
  import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
4
- import { accordionContentVariants, accordionItemVariants, accordionTriggerVariants, } from "./variants";
4
+ import { AccordionTrigger } from "./accordion-trigger.js";
5
+ import { accordionContentVariants, accordionItemVariants, accordionTriggerVariants, } from "./variants.js";
5
6
  export function Items({ hideChevron, chevronAlignment, customChevron, items, icon, classNameItem, classNameTrigger, classNameContent, variant, size, generateId = (index) => `item-${String(index)}`, }) {
6
7
  return items.map(({ title, subtitle, content, disabled, ...props }, index) => {
7
8
  let iconItem = icon;
@@ -1,3 +1,3 @@
1
- import type { MultipleProps } from "./types";
1
+ import type { MultipleProps } from "./types.js";
2
2
  export declare function AccordionMultiple({ className, variant, size, hideChevron, chevronAlignment, customChevron, items, icon, classNameItem, classNameTrigger, classNameContent, generateId, ...props }: MultipleProps): import("react").JSX.Element;
3
3
  //# sourceMappingURL=accordion-multiple.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion-multiple.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion-multiple.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,OAAO,EACP,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,GAAG,KAAK,EACT,EAAE,aAAa,+BAsBf"}
1
+ {"version":3,"file":"accordion-multiple.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion-multiple.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,OAAO,EACP,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,GAAG,KAAK,EACT,EAAE,aAAa,+BAsBf"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Accordion as AccordionPrimitive } from "@forthtilliath/shadcn-ui/components/accordion";
3
3
  import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
4
- import { Items } from "./accordion-items";
5
- import { accordionRootVariants } from "./variants";
4
+ import { Items } from "./accordion-items.js";
5
+ import { accordionRootVariants } from "./variants.js";
6
6
  export function AccordionMultiple({ className, variant, size, hideChevron, chevronAlignment, customChevron, items, icon, classNameItem, classNameTrigger, classNameContent, generateId, ...props }) {
7
7
  return (_jsx(AccordionPrimitive, { type: "multiple", className: cn(accordionRootVariants({ variant, size }), className), ...props, children: _jsx(Items, { variant: variant, size: size, hideChevron: hideChevron, chevronAlignment: chevronAlignment, customChevron: customChevron, items: items, icon: icon, classNameItem: classNameItem, classNameTrigger: classNameTrigger, classNameContent: classNameContent, generateId: generateId }) }));
8
8
  }
@@ -1,3 +1,3 @@
1
- import type { SingleProps } from "./types";
1
+ import type { SingleProps } from "./types.js";
2
2
  export declare function AccordionSingle({ className, variant, size, hideChevron, chevronAlignment, customChevron, items, icon, classNameItem, classNameTrigger, classNameContent, generateId, ...props }: SingleProps): import("react").JSX.Element;
3
3
  //# sourceMappingURL=accordion-single.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion-single.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion-single.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,OAAO,EACP,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,GAAG,KAAK,EACT,EAAE,WAAW,+BAsBb"}
1
+ {"version":3,"file":"accordion-single.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion-single.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,OAAO,EACP,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,GAAG,KAAK,EACT,EAAE,WAAW,+BAsBb"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Accordion as AccordionPrimitive } from "@forthtilliath/shadcn-ui/components/accordion";
3
3
  import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
4
- import { Items } from "./accordion-items";
5
- import { accordionRootVariants } from "./variants";
4
+ import { Items } from "./accordion-items.js";
5
+ import { accordionRootVariants } from "./variants.js";
6
6
  export function AccordionSingle({ className, variant, size, hideChevron, chevronAlignment, customChevron, items, icon, classNameItem, classNameTrigger, classNameContent, generateId, ...props }) {
7
7
  return (_jsx(AccordionPrimitive, { type: "single", className: cn(accordionRootVariants({ variant, size }), className), ...props, children: _jsx(Items, { variant: variant, size: size, hideChevron: hideChevron, chevronAlignment: chevronAlignment, customChevron: customChevron, items: items, icon: icon, classNameItem: classNameItem, classNameTrigger: classNameTrigger, classNameContent: classNameContent, generateId: generateId }) }));
8
8
  }
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
3
+ import type { LucideProps } from "lucide-react";
4
+ export type AccordionTriggerProps = React.ComponentProps<typeof AccordionPrimitive.Trigger> & {
5
+ hideChevron?: boolean;
6
+ customChevron?: React.ReactElement<LucideProps>;
7
+ };
8
+ /**
9
+ * shadcn-ui's `AccordionTrigger` markup, plus `hideChevron` / `customChevron`
10
+ * — built here on the Radix primitive rather than relying on a customized
11
+ * shadcn copy, so forth-ui also works with the upstream shadcn `accordion`
12
+ * (e.g. installed through the registry).
13
+ */
14
+ export declare function AccordionTrigger({ className, hideChevron, customChevron, children, ...props }: AccordionTriggerProps): React.JSX.Element;
15
+ //# sourceMappingURL=accordion-trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion-trigger.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion-trigger.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKhD,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,cAAc,CACtD,OAAO,kBAAkB,CAAC,OAAO,CAClC,GAAG;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;CACjD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,WAAmB,EACnB,aAAa,EACb,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,qBAAqB,qBAkCvB"}
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
5
+ import { ChevronDownIcon } from "lucide-react";
6
+ import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
7
+ /**
8
+ * shadcn-ui's `AccordionTrigger` markup, plus `hideChevron` / `customChevron`
9
+ * — built here on the Radix primitive rather than relying on a customized
10
+ * shadcn copy, so forth-ui also works with the upstream shadcn `accordion`
11
+ * (e.g. installed through the registry).
12
+ */
13
+ export function AccordionTrigger({ className, hideChevron = false, customChevron, children, ...props }) {
14
+ const chevronClassName = cn("text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200", customChevron?.props.className);
15
+ let chevron = null;
16
+ if (!hideChevron) {
17
+ chevron = customChevron ? (
18
+ // cloneElement (not `Slot`) so the merged className goes through
19
+ // `cn()`'s tailwind-merge dedup, and the icon stays the trigger's
20
+ // direct child for the `>svg` selector below.
21
+ // eslint-disable-next-line @eslint-react/no-clone-element
22
+ React.cloneElement(customChevron, { className: chevronClassName })) : (_jsx(ChevronDownIcon, { className: chevronClassName }));
23
+ }
24
+ return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn("focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180", className), ...props, children: [children, chevron] }) }));
25
+ }
@@ -1,4 +1,4 @@
1
- import type { AccordionProps } from "./types";
1
+ import type { AccordionProps } from "./types.js";
2
2
  /**
3
3
  * A vertically stacked set of interactive headings that each reveal a section of content.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAA8B,MAAM,SAAS,CAAC;AAE1E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAU/D"}
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAA8B,MAAM,YAAY,CAAC;AAE7E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAU/D"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { AccordionMultiple } from "./accordion-multiple";
3
- import { AccordionSingle } from "./accordion-single";
2
+ import { AccordionMultiple } from "./accordion-multiple.js";
3
+ import { AccordionSingle } from "./accordion-single.js";
4
4
  /**
5
5
  * A vertically stacked set of interactive headings that each reveal a section of content.
6
6
  *
@@ -1,2 +1,2 @@
1
- export { Accordion } from "./accordion";
1
+ export { Accordion } from "./accordion.js";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- export { Accordion } from "./accordion";
1
+ export { Accordion } from "./accordion.js";
@@ -1,7 +1,7 @@
1
1
  import type React from "react";
2
2
  import { type AccordionMultipleProps, type AccordionSingleProps } from "@radix-ui/react-accordion";
3
3
  import type { LucideProps } from "lucide-react";
4
- import type { AccordionTriggerVariants } from "./variants";
4
+ import type { AccordionTriggerVariants } from "./variants.js";
5
5
  type AccordionVariantType = "default" | "outline" | "box" | "contained" | "box-contained" | "tabs" | "highlight-active";
6
6
  type AccordionSizeType = "sm" | "default" | "lg";
7
7
  interface Item {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,KAAK,oBAAoB,GACrB,SAAS,GACT,SAAS,GACT,KAAK,GACL,WAAW,GACX,eAAe,GACf,MAAM,GACN,kBAAkB,CAAC;AAEvB,KAAK,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAEjD,UAAU,IAAI;IACZ,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,YAAa,SAAQ,IAAI;IACjC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;CACvB;AAED,UAAU,SAAS;IACjB;;OAEG;IACH,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IAChE;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAChD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED,KAAK,YAAY,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,SAAS,GACjC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,GAAG;IACzC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AACJ,MAAM,MAAM,aAAa,GAAG,SAAS,GACnC,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC,GAAG;IAC3C,QAAQ,EAAE,IAAI,CAAC;IACf,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB,CAAC;AAEJ,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,KAAK,oBAAoB,GACrB,SAAS,GACT,SAAS,GACT,KAAK,GACL,WAAW,GACX,eAAe,GACf,MAAM,GACN,kBAAkB,CAAC;AAEvB,KAAK,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAEjD,UAAU,IAAI;IACZ,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,YAAa,SAAQ,IAAI;IACjC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;CACvB;AAED,UAAU,SAAS;IACjB;;OAEG;IACH,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IAChE;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAChD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED,KAAK,YAAY,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,SAAS,GACjC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,GAAG;IACzC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AACJ,MAAM,MAAM,aAAa,GAAG,SAAS,GACnC,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC,GAAG;IAC3C,QAAQ,EAAE,IAAI,CAAC;IACf,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB,CAAC;AAEJ,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,aAAa,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
- import type { AlertVariants } from "./variants";
2
+ import { type UiLocale } from "../../locale/locale.js";
3
+ import type { AlertVariants } from "./variants.js";
3
4
  export type AlertProps = React.ComponentProps<"div"> & AlertVariants & {
4
5
  /**
5
6
  * Shows a close button. Uncontrolled by default (the alert hides itself
@@ -20,6 +21,11 @@ export type AlertProps = React.ComponentProps<"div"> & AlertVariants & {
20
21
  * close button when `dismissible` is also set.
21
22
  */
22
23
  action?: React.ReactNode;
24
+ /**
25
+ * Language of the built-in labels — French by default, or the nearest
26
+ * `UiLocaleProvider`'s. Explicit text props still win.
27
+ */
28
+ locale?: UiLocale;
23
29
  };
24
30
  /**
25
31
  * Displays a callout for user attention.
@@ -34,5 +40,5 @@ export type AlertProps = React.ComponentProps<"div"> & AlertVariants & {
34
40
  * @author Forth
35
41
  * @copyright 2026 Forth
36
42
  */
37
- export declare function Alert({ className, variant, look, size, dismissible, open, onOpenChange, action, children, ...props }: AlertProps): React.JSX.Element | null;
43
+ export declare function Alert({ className, variant, look, size, dismissible, open, onOpenChange, action, children, locale, ...props }: AlertProps): React.JSX.Element | null;
38
44
  //# sourceMappingURL=alert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/components/alert/alert.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAClD,aAAa,GAAG;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B,CAAC;AAEJ;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EACpB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,WAAmB,EACnB,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,UAAU,4BA8CZ"}
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/components/alert/alert.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAClD,aAAa,GAAG;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEJ;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EACpB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,WAAmB,EACnB,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,GAAG,KAAK,EACT,EAAE,UAAU,4BA+CZ"}
@@ -3,7 +3,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import { X } from "lucide-react";
5
5
  import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
6
- import { alertVariants } from "./variants";
6
+ import { useUiMessages } from "../../locale/locale.js";
7
+ import { alertVariants } from "./variants.js";
7
8
  /**
8
9
  * Displays a callout for user attention.
9
10
  *
@@ -17,7 +18,8 @@ import { alertVariants } from "./variants";
17
18
  * @author Forth
18
19
  * @copyright 2026 Forth
19
20
  */
20
- export function Alert({ className, variant, look, size, dismissible = false, open, onOpenChange, action, children, ...props }) {
21
+ export function Alert({ className, variant, look, size, dismissible = false, open, onOpenChange, action, children, locale, ...props }) {
22
+ const messages = useUiMessages(locale);
21
23
  const [uncontrolledOpen, setUncontrolledOpen] = React.useState(true);
22
24
  const isOpen = open ?? uncontrolledOpen;
23
25
  const hasActions = Boolean(action) || dismissible;
@@ -28,5 +30,5 @@ export function Alert({ className, variant, look, size, dismissible = false, ope
28
30
  if (!isOpen) {
29
31
  return null;
30
32
  }
31
- return (_jsxs("div", { "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant, look, size }), hasActions && "pr-10", className), ...props, children: [children, hasActions && (_jsxs("div", { "data-slot": "alert-actions", className: "absolute top-2.5 right-2.5 flex items-center gap-1.5", children: [action, dismissible && (_jsx("button", { type: "button", onClick: handleDismiss, "aria-label": "Dismiss", className: "rounded-sm opacity-70 transition-opacity outline-none hover:opacity-100 focus-visible:ring-2 focus-visible:ring-current", children: _jsx(X, { className: "size-3.5" }) }))] }))] }));
33
+ return (_jsxs("div", { "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant, look, size }), hasActions && "pr-10", className), ...props, children: [children, hasActions && (_jsxs("div", { "data-slot": "alert-actions", className: "absolute top-2.5 right-2.5 flex items-center gap-1.5", children: [action, dismissible && (_jsx("button", { type: "button", onClick: handleDismiss, "aria-label": messages.dismiss, className: "rounded-sm opacity-70 transition-opacity outline-none hover:opacity-100 focus-visible:ring-2 focus-visible:ring-current", children: _jsx(X, { className: "size-3.5" }) }))] }))] }));
32
34
  }
@@ -1,5 +1,5 @@
1
- export type { AlertProps } from "./alert";
2
- export { Alert } from "./alert";
3
- export type { AlertVariants } from "./variants";
1
+ export type { AlertProps } from "./alert.js";
2
+ export { Alert } from "./alert.js";
3
+ export type { AlertVariants } from "./variants.js";
4
4
  export { AlertDescription, AlertTitle, } from "@forthtilliath/shadcn-ui/components/alert";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/alert/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,OAAO,EACL,gBAAgB,EAChB,UAAU,GACX,MAAM,2CAA2C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/alert/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,OAAO,EACL,gBAAgB,EAChB,UAAU,GACX,MAAM,2CAA2C,CAAC"}
@@ -1,4 +1,4 @@
1
- export { Alert } from "./alert";
1
+ export { Alert } from "./alert.js";
2
2
  // Title/description need no forth-ui-specific behavior on top of shadcn-ui's
3
3
  // — re-exported here so consumers only need one import path.
4
4
  export { AlertDescription, AlertTitle, } from "@forthtilliath/shadcn-ui/components/alert";
@@ -1 +1 @@
1
- {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/components/alert/variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAK7D,eAAO,MAAM,aAAa;;;;8EAsHzB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/components/alert/variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAK7D,eAAO,MAAM,aAAa;;;;8EA6HzB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -28,6 +28,13 @@ export const alertVariants = cva("relative grid w-full grid-cols-[0_1fr] items-s
28
28
  size: "default",
29
29
  },
30
30
  compoundVariants: [
31
+ { variant: "default", look: "outline", className: "bg-card" },
32
+ // shadcn's AlertDescription is muted-foreground (grey), unreadable on a
33
+ // colored background: colored alerts give it their own text color.
34
+ {
35
+ variant: ["primary", "success", "warning", "info", "destructive"],
36
+ className: "*:data-[slot=alert-description]:text-current",
37
+ },
31
38
  // default (neutral) ignores `look` — none of the reference sources
32
39
  // show a "solid neutral" or "outline neutral" alert, only colored
33
40
  // ones vary by look.
@@ -49,7 +56,7 @@ export const alertVariants = cva("relative grid w-full grid-cols-[0_1fr] items-s
49
56
  {
50
57
  variant: "success",
51
58
  look: "solid",
52
- className: "bg-green-600 text-white border-transparent",
59
+ className: "bg-green-700 text-white border-transparent",
53
60
  },
54
61
  {
55
62
  variant: "success",
@@ -64,7 +71,7 @@ export const alertVariants = cva("relative grid w-full grid-cols-[0_1fr] items-s
64
71
  {
65
72
  variant: "warning",
66
73
  look: "solid",
67
- className: "bg-amber-500 text-white border-transparent",
74
+ className: "bg-amber-500 text-amber-950 border-transparent",
68
75
  },
69
76
  {
70
77
  variant: "warning",
@@ -79,7 +86,7 @@ export const alertVariants = cva("relative grid w-full grid-cols-[0_1fr] items-s
79
86
  {
80
87
  variant: "info",
81
88
  look: "solid",
82
- className: "bg-sky-600 text-white border-transparent",
89
+ className: "bg-sky-700 text-white border-transparent",
83
90
  },
84
91
  {
85
92
  variant: "info",
@@ -99,7 +106,7 @@ export const alertVariants = cva("relative grid w-full grid-cols-[0_1fr] items-s
99
106
  {
100
107
  variant: "destructive",
101
108
  look: "soft",
102
- className: "bg-destructive/10 text-destructive border-destructive/20 [&>svg]:text-destructive",
109
+ className: "bg-red-50 text-red-700 border-red-200 [&>svg]:text-red-600 dark:bg-red-950 dark:text-red-300 dark:border-red-900 dark:[&>svg]:text-red-400",
103
110
  },
104
111
  {
105
112
  variant: "destructive",
@@ -1,5 +1,5 @@
1
1
  import type { JSX } from "react";
2
- import type { AvatarProps } from "./avatar";
2
+ import type { AvatarProps } from "./avatar.js";
3
3
  export type AvatarGroupProps = React.ComponentProps<"div"> & {
4
4
  avatars: AvatarProps[];
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"avatar-group.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/avatar-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC3D,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAIF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,OAAO,EACP,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA6BhC"}
1
+ {"version":3,"file":"avatar-group.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/avatar-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC3D,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAIF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,OAAO,EACP,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA6BhC"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cn } from "@forthtilliath/shadcn-ui/lib/utils";
3
- import { Avatar } from "./avatar";
3
+ import { Avatar } from "./avatar.js";
4
4
  const RING_CLASS = "ring-2 ring-background hover:z-10";
5
5
  /**
6
6
  * A component to group multiple avatars together.
@@ -1,7 +1,8 @@
1
1
  import type React from "react";
2
2
  import { Avatar as AvatarPrimitive } from "@forthtilliath/shadcn-ui/components/avatar";
3
- import type { Shape, Size } from "./constants";
4
- import type { BadgeVariants, FallbackVariants, StatusVariants } from "./variants";
3
+ import { type UiLocale } from "../../locale/locale.js";
4
+ import type { Shape, Size } from "./constants.js";
5
+ import type { BadgeVariants, FallbackVariants, StatusVariants } from "./variants.js";
5
6
  export type AvatarProps = Omit<React.ComponentProps<typeof AvatarPrimitive>, "className" | "size"> & {
6
7
  /**
7
8
  * The source URL of the image.
@@ -89,6 +90,11 @@ export type AvatarProps = Omit<React.ComponentProps<typeof AvatarPrimitive>, "cl
89
90
  * - `tooltipContent` is the tooltip content element.
90
91
  */
91
92
  className?: Partial<Record<"root" | "image" | "fallback" | "status" | "badge" | "tooltipTrigger" | "tooltipContent", string>>;
93
+ /**
94
+ * Language of the built-in labels — French by default, or the nearest
95
+ * `UiLocaleProvider`'s. Explicit text props still win.
96
+ */
97
+ locale?: UiLocale;
92
98
  };
93
99
  /**
94
100
  * An image element with a fallback for representing the user.
@@ -103,5 +109,5 @@ export type AvatarProps = Omit<React.ComponentProps<typeof AvatarPrimitive>, "cl
103
109
  * @author Forth
104
110
  * @copyright 2025 Forth
105
111
  */
106
- export declare function Avatar({ src, alt, fallback, fallbackVariant, shape, size, ring, status, position, badge, badgeVariant, badgePosition, className, renderTooltip, ...props }: AvatarProps): React.JSX.Element;
112
+ export declare function Avatar({ src, alt, fallback, fallbackVariant, shape, size, ring, status, position, badge, badgeVariant, badgePosition, className, renderTooltip, locale, ...props }: AvatarProps): React.JSX.Element;
107
113
  //# sourceMappingURL=avatar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EACL,MAAM,IAAI,eAAe,EAG1B,MAAM,4CAA4C,CAAC;AAQpD,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAC;AASpB,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,EAC5C,WAAW,GAAG,MAAM,CACrB,GAAG;IACF;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACtD;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACtC;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAEtC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,CACjB,MAAM,CACF,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,OAAO,GACP,gBAAgB,GAChB,gBAAgB,EAClB,MAAM,CACP,CACF,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,GAAG,EACH,QAAQ,EACR,eAAe,EACf,KAAK,EACL,IAAI,EACJ,IAAY,EACZ,MAAM,EACN,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,aAAsC,EACtC,SAAS,EACT,aAAa,EACb,GAAG,KAAK,EACT,EAAE,WAAW,qBAgEb"}
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EACL,MAAM,IAAI,eAAe,EAG1B,MAAM,4CAA4C,CAAC;AAQpD,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EACf,MAAM,eAAe,CAAC;AASvB,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,EAC5C,WAAW,GAAG,MAAM,CACrB,GAAG;IACF;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACtD;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACtC;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAEtC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,CACjB,MAAM,CACF,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,OAAO,GACP,gBAAgB,GAChB,gBAAgB,EAClB,MAAM,CACP,CACF,CAAC;IACF;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,GAAG,EACH,QAAQ,EACR,eAAe,EACf,KAAK,EACL,IAAI,EACJ,IAAY,EACZ,MAAM,EACN,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,aAAsC,EACtC,SAAS,EACT,aAAa,EACb,MAAM,EACN,GAAG,KAAK,EACT,EAAE,WAAW,qBAiEb"}