frey-ui 1.0.11 → 1.0.13

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 (375) hide show
  1. package/README.md +35 -1
  2. package/dist/cjs/Accordion/accordion.css +80 -0
  3. package/dist/cjs/Accordion/accordion.module.css.cjs +2 -1
  4. package/dist/cjs/Accordion/index.cjs +3 -3
  5. package/dist/cjs/Alert/alert.css +63 -0
  6. package/dist/cjs/Alert/alert.module.css.cjs +2 -1
  7. package/dist/cjs/Alert/index.cjs +8 -5
  8. package/dist/cjs/Avatar/avatar.css +107 -0
  9. package/dist/cjs/Avatar/avatar.module.css.cjs +2 -1
  10. package/dist/cjs/Badge/badge.css +75 -0
  11. package/dist/cjs/Badge/badge.module.css.cjs +10 -0
  12. package/dist/cjs/Badge/index.cjs +37 -0
  13. package/dist/cjs/Box/box.css +3 -0
  14. package/dist/cjs/Box/box.module.css.cjs +10 -0
  15. package/dist/cjs/Box/index.cjs +136 -0
  16. package/dist/cjs/Breadcrumbs/breadcrumbs.css +34 -0
  17. package/dist/cjs/Breadcrumbs/breadcrumbs.module.css.cjs +10 -0
  18. package/dist/cjs/Breadcrumbs/index.cjs +46 -0
  19. package/dist/cjs/Button/button.css +112 -0
  20. package/dist/cjs/Button/button.module.css.cjs +2 -1
  21. package/dist/cjs/Button/index.cjs +29 -4
  22. package/dist/cjs/Card/card.css +37 -0
  23. package/dist/cjs/Card/card.module.css.cjs +2 -1
  24. package/dist/cjs/Checkbox/checkbox.css +135 -0
  25. package/dist/cjs/Checkbox/checkbox.module.css.cjs +2 -1
  26. package/dist/cjs/Checkbox/index.cjs +3 -2
  27. package/dist/cjs/Chip/chip.css +55 -0
  28. package/dist/cjs/Chip/chip.module.css.cjs +2 -1
  29. package/dist/cjs/Dialog/dialog.css +144 -0
  30. package/dist/cjs/Dialog/dialog.module.css.cjs +2 -1
  31. package/dist/cjs/Dialog/index.cjs +11 -11
  32. package/dist/cjs/DropdownMenu/dropdownmenu.css +61 -0
  33. package/dist/cjs/DropdownMenu/dropdownmenu.module.css.cjs +2 -1
  34. package/dist/cjs/DropdownMenu/index.cjs +112 -60
  35. package/dist/cjs/Field/field.css +51 -0
  36. package/dist/cjs/Field/field.module.css.cjs +2 -1
  37. package/dist/cjs/Flex/index.cjs +23 -0
  38. package/dist/cjs/Grid/index.cjs +33 -0
  39. package/dist/cjs/Icons/CheckIcon.cjs +12 -0
  40. package/dist/cjs/Icons/ChevronDownIcon.cjs +12 -0
  41. package/dist/cjs/Icons/CircleCheckIcon.cjs +12 -0
  42. package/dist/cjs/Icons/CircleInfoIcon.cjs +12 -0
  43. package/dist/cjs/Icons/CircleXIcon.cjs +12 -0
  44. package/dist/cjs/Icons/CloseIcon.cjs +12 -0
  45. package/dist/cjs/Icons/IconSvg.cjs +52 -0
  46. package/dist/cjs/Icons/MinusIcon.cjs +12 -0
  47. package/dist/cjs/Icons/TriangleAlertIcon.cjs +12 -0
  48. package/dist/cjs/Icons/icons.css +5 -0
  49. package/dist/cjs/Icons/icons.module.css.cjs +2 -1
  50. package/dist/cjs/Link/index.cjs +38 -0
  51. package/dist/cjs/Link/link.css +57 -0
  52. package/dist/cjs/Link/link.module.css.cjs +10 -0
  53. package/dist/cjs/Popover/index.cjs +71 -38
  54. package/dist/cjs/Popover/popover.css +25 -0
  55. package/dist/cjs/Popover/popover.module.css.cjs +2 -1
  56. package/dist/cjs/Progress/progress.css +86 -0
  57. package/dist/cjs/Progress/progress.module.css.cjs +2 -1
  58. package/dist/cjs/RadioGroup/radiogroup.css +59 -0
  59. package/dist/cjs/RadioGroup/radiogroup.module.css.cjs +2 -1
  60. package/dist/cjs/Select/index.cjs +3 -4
  61. package/dist/cjs/Select/select.css +77 -0
  62. package/dist/cjs/Select/select.module.css.cjs +2 -1
  63. package/dist/cjs/Skeleton/skeleton.css +29 -0
  64. package/dist/cjs/Skeleton/skeleton.module.css.cjs +2 -1
  65. package/dist/cjs/Spinner/spinner.css +35 -0
  66. package/dist/cjs/Spinner/spinner.module.css.cjs +2 -1
  67. package/dist/cjs/Stack/index.cjs +18 -0
  68. package/dist/cjs/Switch/switch.css +123 -0
  69. package/dist/cjs/Switch/switch.module.css.cjs +2 -1
  70. package/dist/cjs/Table/index.cjs +55 -0
  71. package/dist/cjs/Table/table.css +57 -0
  72. package/dist/cjs/Table/table.module.css.cjs +10 -0
  73. package/dist/cjs/Tabs/index.cjs +50 -21
  74. package/dist/cjs/Tabs/tabs.css +62 -0
  75. package/dist/cjs/Tabs/tabs.module.css.cjs +2 -1
  76. package/dist/cjs/TextInput/index.cjs +7 -15
  77. package/dist/cjs/TextInput/textinput.css +93 -0
  78. package/dist/cjs/TextInput/textinput.module.css.cjs +2 -1
  79. package/dist/cjs/Textarea/index.cjs +2 -3
  80. package/dist/cjs/Textarea/textarea.css +62 -0
  81. package/dist/cjs/Textarea/textarea.module.css.cjs +2 -1
  82. package/dist/cjs/ThemeProvider/index.cjs +4 -1
  83. package/dist/cjs/ThemeProvider/themeprovider.css +3 -0
  84. package/dist/cjs/ThemeProvider/themeprovider.module.css.cjs +2 -1
  85. package/dist/cjs/Toast/index.cjs +15 -11
  86. package/dist/cjs/Toast/toast.css +151 -0
  87. package/dist/cjs/Toast/toast.module.css.cjs +2 -1
  88. package/dist/cjs/Tooltip/index.cjs +38 -67
  89. package/dist/cjs/Tooltip/tooltip.css +26 -0
  90. package/dist/cjs/Tooltip/tooltip.module.css.cjs +2 -1
  91. package/dist/cjs/hooks/floatingConfig.cjs +24 -0
  92. package/dist/cjs/hooks/useRovingCollection.cjs +107 -0
  93. package/dist/cjs/index.cjs +75 -51
  94. package/dist/cjs/theme.css +243 -0
  95. package/dist/cjs/utils/Portal.cjs +49 -0
  96. package/dist/cjs/utils/aria.cjs +14 -0
  97. package/dist/esm/Accordion/accordion.css +80 -0
  98. package/dist/esm/Accordion/accordion.module.css.mjs +2 -1
  99. package/dist/esm/Accordion/index.mjs +2 -2
  100. package/dist/esm/Alert/alert.css +63 -0
  101. package/dist/esm/Alert/alert.module.css.mjs +2 -1
  102. package/dist/esm/Alert/index.mjs +4 -1
  103. package/dist/esm/Avatar/avatar.css +107 -0
  104. package/dist/esm/Avatar/avatar.module.css.mjs +2 -1
  105. package/dist/esm/Badge/badge.css +75 -0
  106. package/dist/esm/Badge/badge.module.css.mjs +6 -0
  107. package/dist/esm/Badge/index.mjs +33 -0
  108. package/dist/esm/Box/box.css +3 -0
  109. package/dist/esm/Box/box.module.css.mjs +6 -0
  110. package/dist/esm/Box/index.mjs +132 -0
  111. package/dist/esm/Breadcrumbs/breadcrumbs.css +34 -0
  112. package/dist/esm/Breadcrumbs/breadcrumbs.module.css.mjs +6 -0
  113. package/dist/esm/Breadcrumbs/index.mjs +41 -0
  114. package/dist/esm/Button/button.css +112 -0
  115. package/dist/esm/Button/button.module.css.mjs +2 -1
  116. package/dist/esm/Button/index.mjs +30 -5
  117. package/dist/esm/Card/card.css +37 -0
  118. package/dist/esm/Card/card.module.css.mjs +2 -1
  119. package/dist/esm/Checkbox/checkbox.css +135 -0
  120. package/dist/esm/Checkbox/checkbox.module.css.mjs +2 -1
  121. package/dist/esm/Checkbox/index.mjs +2 -1
  122. package/dist/esm/Chip/chip.css +55 -0
  123. package/dist/esm/Chip/chip.module.css.mjs +2 -1
  124. package/dist/esm/Dialog/dialog.css +144 -0
  125. package/dist/esm/Dialog/dialog.module.css.mjs +2 -1
  126. package/dist/esm/Dialog/index.mjs +11 -11
  127. package/dist/esm/DropdownMenu/dropdownmenu.css +61 -0
  128. package/dist/esm/DropdownMenu/dropdownmenu.module.css.mjs +2 -1
  129. package/dist/esm/DropdownMenu/index.mjs +113 -61
  130. package/dist/esm/Field/field.css +51 -0
  131. package/dist/esm/Field/field.module.css.mjs +2 -1
  132. package/dist/esm/Flex/index.mjs +19 -0
  133. package/dist/esm/Grid/index.mjs +29 -0
  134. package/dist/esm/Icons/CheckIcon.mjs +10 -0
  135. package/dist/esm/Icons/ChevronDownIcon.mjs +10 -0
  136. package/dist/esm/Icons/CircleCheckIcon.mjs +10 -0
  137. package/dist/esm/Icons/CircleInfoIcon.mjs +10 -0
  138. package/dist/esm/Icons/CircleXIcon.mjs +10 -0
  139. package/dist/esm/Icons/CloseIcon.mjs +10 -0
  140. package/dist/esm/Icons/IconSvg.mjs +50 -0
  141. package/dist/esm/Icons/MinusIcon.mjs +10 -0
  142. package/dist/esm/Icons/TriangleAlertIcon.mjs +10 -0
  143. package/dist/esm/Icons/icons.css +5 -0
  144. package/dist/esm/Icons/icons.module.css.mjs +2 -1
  145. package/dist/esm/Link/index.mjs +34 -0
  146. package/dist/esm/Link/link.css +57 -0
  147. package/dist/esm/Link/link.module.css.mjs +6 -0
  148. package/dist/esm/Popover/index.mjs +72 -39
  149. package/dist/esm/Popover/popover.css +25 -0
  150. package/dist/esm/Popover/popover.module.css.mjs +2 -1
  151. package/dist/esm/Progress/progress.css +86 -0
  152. package/dist/esm/Progress/progress.module.css.mjs +2 -1
  153. package/dist/esm/RadioGroup/radiogroup.css +59 -0
  154. package/dist/esm/RadioGroup/radiogroup.module.css.mjs +2 -1
  155. package/dist/esm/Select/index.mjs +3 -4
  156. package/dist/esm/Select/select.css +77 -0
  157. package/dist/esm/Select/select.module.css.mjs +2 -1
  158. package/dist/esm/Skeleton/skeleton.css +29 -0
  159. package/dist/esm/Skeleton/skeleton.module.css.mjs +2 -1
  160. package/dist/esm/Spinner/spinner.css +35 -0
  161. package/dist/esm/Spinner/spinner.module.css.mjs +2 -1
  162. package/dist/esm/Stack/index.mjs +14 -0
  163. package/dist/esm/Switch/switch.css +123 -0
  164. package/dist/esm/Switch/switch.module.css.mjs +2 -1
  165. package/dist/esm/Table/index.mjs +50 -0
  166. package/dist/esm/Table/table.css +57 -0
  167. package/dist/esm/Table/table.module.css.mjs +6 -0
  168. package/dist/esm/Tabs/index.mjs +50 -21
  169. package/dist/esm/Tabs/tabs.css +62 -0
  170. package/dist/esm/Tabs/tabs.module.css.mjs +2 -1
  171. package/dist/esm/TextInput/index.mjs +9 -17
  172. package/dist/esm/TextInput/textinput.css +93 -0
  173. package/dist/esm/TextInput/textinput.module.css.mjs +2 -1
  174. package/dist/esm/Textarea/index.mjs +2 -3
  175. package/dist/esm/Textarea/textarea.css +62 -0
  176. package/dist/esm/Textarea/textarea.module.css.mjs +2 -1
  177. package/dist/esm/ThemeProvider/index.mjs +5 -3
  178. package/dist/esm/ThemeProvider/themeprovider.css +3 -0
  179. package/dist/esm/ThemeProvider/themeprovider.module.css.mjs +2 -1
  180. package/dist/esm/Toast/index.mjs +10 -6
  181. package/dist/esm/Toast/toast.css +151 -0
  182. package/dist/esm/Toast/toast.module.css.mjs +2 -1
  183. package/dist/esm/Tooltip/index.mjs +38 -67
  184. package/dist/esm/Tooltip/tooltip.css +26 -0
  185. package/dist/esm/Tooltip/tooltip.module.css.mjs +2 -1
  186. package/dist/esm/hooks/floatingConfig.mjs +20 -0
  187. package/dist/esm/hooks/useRovingCollection.mjs +105 -0
  188. package/dist/esm/index.mjs +18 -1
  189. package/dist/esm/theme.css +243 -0
  190. package/dist/esm/utils/Portal.mjs +45 -0
  191. package/dist/esm/utils/aria.mjs +12 -0
  192. package/dist/index.d.ts +187 -26
  193. package/dist/types/src/Badge/index.d.ts +13 -0
  194. package/dist/types/src/Box/index.d.ts +47 -0
  195. package/dist/types/src/Breadcrumbs/index.d.ts +29 -0
  196. package/dist/types/src/Button/index.d.ts +4 -7
  197. package/dist/types/src/DropdownMenu/index.d.ts +2 -2
  198. package/dist/types/src/Flex/index.d.ts +18 -0
  199. package/dist/types/src/Grid/index.d.ts +18 -0
  200. package/dist/types/src/Icons/CheckIcon.d.ts +4 -0
  201. package/dist/types/src/Icons/ChevronDownIcon.d.ts +4 -0
  202. package/dist/types/src/Icons/CircleCheckIcon.d.ts +4 -0
  203. package/dist/types/src/Icons/CircleInfoIcon.d.ts +4 -0
  204. package/dist/types/src/Icons/CircleXIcon.d.ts +4 -0
  205. package/dist/types/src/Icons/CloseIcon.d.ts +4 -0
  206. package/dist/types/src/Icons/IconSvg.d.ts +14 -0
  207. package/dist/types/src/Icons/MinusIcon.d.ts +4 -0
  208. package/dist/types/src/Icons/TriangleAlertIcon.d.ts +4 -0
  209. package/dist/types/src/Icons/index.d.ts +9 -30
  210. package/dist/types/src/Link/index.d.ts +11 -0
  211. package/dist/types/src/Stack/index.d.ts +15 -0
  212. package/dist/types/src/Table/index.d.ts +40 -0
  213. package/dist/types/src/ThemeProvider/index.d.ts +5 -0
  214. package/dist/types/src/hooks/floatingConfig.d.ts +6 -0
  215. package/dist/types/src/hooks/useRovingCollection.d.ts +16 -0
  216. package/dist/types/src/index.d.ts +18 -2
  217. package/dist/types/src/utils/Portal.d.ts +8 -0
  218. package/dist/types/src/utils/aria.d.ts +3 -0
  219. package/dist/types/src/utils/testUtils.d.ts +7 -0
  220. package/package.json +49 -5
  221. package/dist/cjs/Accordion/accordion.module.css.cjs.map +0 -1
  222. package/dist/cjs/Accordion/index.cjs.map +0 -1
  223. package/dist/cjs/Alert/alert.module.css.cjs.map +0 -1
  224. package/dist/cjs/Alert/index.cjs.map +0 -1
  225. package/dist/cjs/Avatar/avatar.module.css.cjs.map +0 -1
  226. package/dist/cjs/Avatar/index.cjs.map +0 -1
  227. package/dist/cjs/Button/button.module.css.cjs.map +0 -1
  228. package/dist/cjs/Button/index.cjs.map +0 -1
  229. package/dist/cjs/Card/card.module.css.cjs.map +0 -1
  230. package/dist/cjs/Card/index.cjs.map +0 -1
  231. package/dist/cjs/Checkbox/checkbox.module.css.cjs.map +0 -1
  232. package/dist/cjs/Checkbox/index.cjs.map +0 -1
  233. package/dist/cjs/Chip/chip.module.css.cjs.map +0 -1
  234. package/dist/cjs/Chip/index.cjs.map +0 -1
  235. package/dist/cjs/Dialog/dialog.module.css.cjs.map +0 -1
  236. package/dist/cjs/Dialog/index.cjs.map +0 -1
  237. package/dist/cjs/DropdownMenu/dropdownmenu.module.css.cjs.map +0 -1
  238. package/dist/cjs/DropdownMenu/index.cjs.map +0 -1
  239. package/dist/cjs/Field/field.module.css.cjs.map +0 -1
  240. package/dist/cjs/Field/index.cjs.map +0 -1
  241. package/dist/cjs/Icons/icons.module.css.cjs.map +0 -1
  242. package/dist/cjs/Icons/index.cjs +0 -96
  243. package/dist/cjs/Icons/index.cjs.map +0 -1
  244. package/dist/cjs/Popover/index.cjs.map +0 -1
  245. package/dist/cjs/Popover/popover.module.css.cjs.map +0 -1
  246. package/dist/cjs/Progress/index.cjs.map +0 -1
  247. package/dist/cjs/Progress/progress.module.css.cjs.map +0 -1
  248. package/dist/cjs/RadioGroup/index.cjs.map +0 -1
  249. package/dist/cjs/RadioGroup/radiogroup.module.css.cjs.map +0 -1
  250. package/dist/cjs/Select/index.cjs.map +0 -1
  251. package/dist/cjs/Select/select.module.css.cjs.map +0 -1
  252. package/dist/cjs/Skeleton/index.cjs.map +0 -1
  253. package/dist/cjs/Skeleton/skeleton.module.css.cjs.map +0 -1
  254. package/dist/cjs/Spinner/index.cjs.map +0 -1
  255. package/dist/cjs/Spinner/spinner.module.css.cjs.map +0 -1
  256. package/dist/cjs/Switch/index.cjs.map +0 -1
  257. package/dist/cjs/Switch/switch.module.css.cjs.map +0 -1
  258. package/dist/cjs/Tabs/index.cjs.map +0 -1
  259. package/dist/cjs/Tabs/tabs.module.css.cjs.map +0 -1
  260. package/dist/cjs/TextInput/index.cjs.map +0 -1
  261. package/dist/cjs/TextInput/textinput.module.css.cjs.map +0 -1
  262. package/dist/cjs/Textarea/index.cjs.map +0 -1
  263. package/dist/cjs/Textarea/textarea.module.css.cjs.map +0 -1
  264. package/dist/cjs/ThemeProvider/index.cjs.map +0 -1
  265. package/dist/cjs/ThemeProvider/themeprovider.module.css.cjs.map +0 -1
  266. package/dist/cjs/Toast/index.cjs.map +0 -1
  267. package/dist/cjs/Toast/toast.module.css.cjs.map +0 -1
  268. package/dist/cjs/Tooltip/index.cjs.map +0 -1
  269. package/dist/cjs/Tooltip/tooltip.module.css.cjs.map +0 -1
  270. package/dist/cjs/hooks/useControllableState.cjs.map +0 -1
  271. package/dist/cjs/hooks/useDismiss.cjs +0 -44
  272. package/dist/cjs/hooks/useDismiss.cjs.map +0 -1
  273. package/dist/cjs/hooks/useFloatingPosition.cjs +0 -68
  274. package/dist/cjs/hooks/useFloatingPosition.cjs.map +0 -1
  275. package/dist/cjs/index.cjs.map +0 -1
  276. package/dist/cjs/utils/clamp.cjs +0 -9
  277. package/dist/cjs/utils/clamp.cjs.map +0 -1
  278. package/dist/cjs/utils/mergeRefs.cjs.map +0 -1
  279. package/dist/cjs/utils/slot.cjs.map +0 -1
  280. package/dist/esm/Accordion/accordion.module.css.mjs.map +0 -1
  281. package/dist/esm/Accordion/index.mjs.map +0 -1
  282. package/dist/esm/Alert/alert.module.css.mjs.map +0 -1
  283. package/dist/esm/Alert/index.mjs.map +0 -1
  284. package/dist/esm/Avatar/avatar.module.css.mjs.map +0 -1
  285. package/dist/esm/Avatar/index.mjs.map +0 -1
  286. package/dist/esm/Button/button.module.css.mjs.map +0 -1
  287. package/dist/esm/Button/index.mjs.map +0 -1
  288. package/dist/esm/Card/card.module.css.mjs.map +0 -1
  289. package/dist/esm/Card/index.mjs.map +0 -1
  290. package/dist/esm/Checkbox/checkbox.module.css.mjs.map +0 -1
  291. package/dist/esm/Checkbox/index.mjs.map +0 -1
  292. package/dist/esm/Chip/chip.module.css.mjs.map +0 -1
  293. package/dist/esm/Chip/index.mjs.map +0 -1
  294. package/dist/esm/Dialog/dialog.module.css.mjs.map +0 -1
  295. package/dist/esm/Dialog/index.mjs.map +0 -1
  296. package/dist/esm/DropdownMenu/dropdownmenu.module.css.mjs.map +0 -1
  297. package/dist/esm/DropdownMenu/index.mjs.map +0 -1
  298. package/dist/esm/Field/field.module.css.mjs.map +0 -1
  299. package/dist/esm/Field/index.mjs.map +0 -1
  300. package/dist/esm/Icons/icons.module.css.mjs.map +0 -1
  301. package/dist/esm/Icons/index.mjs +0 -84
  302. package/dist/esm/Icons/index.mjs.map +0 -1
  303. package/dist/esm/Popover/index.mjs.map +0 -1
  304. package/dist/esm/Popover/popover.module.css.mjs.map +0 -1
  305. package/dist/esm/Progress/index.mjs.map +0 -1
  306. package/dist/esm/Progress/progress.module.css.mjs.map +0 -1
  307. package/dist/esm/RadioGroup/index.mjs.map +0 -1
  308. package/dist/esm/RadioGroup/radiogroup.module.css.mjs.map +0 -1
  309. package/dist/esm/Select/index.mjs.map +0 -1
  310. package/dist/esm/Select/select.module.css.mjs.map +0 -1
  311. package/dist/esm/Skeleton/index.mjs.map +0 -1
  312. package/dist/esm/Skeleton/skeleton.module.css.mjs.map +0 -1
  313. package/dist/esm/Spinner/index.mjs.map +0 -1
  314. package/dist/esm/Spinner/spinner.module.css.mjs.map +0 -1
  315. package/dist/esm/Switch/index.mjs.map +0 -1
  316. package/dist/esm/Switch/switch.module.css.mjs.map +0 -1
  317. package/dist/esm/Tabs/index.mjs.map +0 -1
  318. package/dist/esm/Tabs/tabs.module.css.mjs.map +0 -1
  319. package/dist/esm/TextInput/index.mjs.map +0 -1
  320. package/dist/esm/TextInput/textinput.module.css.mjs.map +0 -1
  321. package/dist/esm/Textarea/index.mjs.map +0 -1
  322. package/dist/esm/Textarea/textarea.module.css.mjs.map +0 -1
  323. package/dist/esm/ThemeProvider/index.mjs.map +0 -1
  324. package/dist/esm/ThemeProvider/themeprovider.module.css.mjs.map +0 -1
  325. package/dist/esm/Toast/index.mjs.map +0 -1
  326. package/dist/esm/Toast/toast.module.css.mjs.map +0 -1
  327. package/dist/esm/Tooltip/index.mjs.map +0 -1
  328. package/dist/esm/Tooltip/tooltip.module.css.mjs.map +0 -1
  329. package/dist/esm/hooks/useControllableState.mjs.map +0 -1
  330. package/dist/esm/hooks/useDismiss.mjs +0 -42
  331. package/dist/esm/hooks/useDismiss.mjs.map +0 -1
  332. package/dist/esm/hooks/useFloatingPosition.mjs +0 -66
  333. package/dist/esm/hooks/useFloatingPosition.mjs.map +0 -1
  334. package/dist/esm/index.mjs.map +0 -1
  335. package/dist/esm/utils/clamp.mjs +0 -7
  336. package/dist/esm/utils/clamp.mjs.map +0 -1
  337. package/dist/esm/utils/mergeRefs.mjs.map +0 -1
  338. package/dist/esm/utils/slot.mjs.map +0 -1
  339. package/dist/styles.css +0 -3
  340. package/dist/styles.css.map +0 -1
  341. package/dist/types/src/Accordion/index.d.ts.map +0 -1
  342. package/dist/types/src/Alert/index.d.ts.map +0 -1
  343. package/dist/types/src/Avatar/index.d.ts.map +0 -1
  344. package/dist/types/src/Button/index.d.ts.map +0 -1
  345. package/dist/types/src/Card/index.d.ts.map +0 -1
  346. package/dist/types/src/Checkbox/index.d.ts.map +0 -1
  347. package/dist/types/src/Chip/index.d.ts.map +0 -1
  348. package/dist/types/src/Dialog/index.d.ts.map +0 -1
  349. package/dist/types/src/DropdownMenu/index.d.ts.map +0 -1
  350. package/dist/types/src/Field/index.d.ts.map +0 -1
  351. package/dist/types/src/Icons/index.d.ts.map +0 -1
  352. package/dist/types/src/Popover/index.d.ts.map +0 -1
  353. package/dist/types/src/Progress/index.d.ts.map +0 -1
  354. package/dist/types/src/RadioGroup/index.d.ts.map +0 -1
  355. package/dist/types/src/Select/index.d.ts.map +0 -1
  356. package/dist/types/src/Skeleton/index.d.ts.map +0 -1
  357. package/dist/types/src/Spinner/index.d.ts.map +0 -1
  358. package/dist/types/src/Switch/index.d.ts.map +0 -1
  359. package/dist/types/src/Tabs/index.d.ts.map +0 -1
  360. package/dist/types/src/TextInput/index.d.ts.map +0 -1
  361. package/dist/types/src/Textarea/index.d.ts.map +0 -1
  362. package/dist/types/src/ThemeProvider/index.d.ts.map +0 -1
  363. package/dist/types/src/Toast/index.d.ts.map +0 -1
  364. package/dist/types/src/Tooltip/index.d.ts.map +0 -1
  365. package/dist/types/src/hooks/useControllableState.d.ts.map +0 -1
  366. package/dist/types/src/hooks/useDismiss.d.ts +0 -18
  367. package/dist/types/src/hooks/useDismiss.d.ts.map +0 -1
  368. package/dist/types/src/hooks/useFloatingPosition.d.ts +0 -26
  369. package/dist/types/src/hooks/useFloatingPosition.d.ts.map +0 -1
  370. package/dist/types/src/index.d.ts.map +0 -1
  371. package/dist/types/src/types/polymorphic.d.ts.map +0 -1
  372. package/dist/types/src/utils/clamp.d.ts +0 -2
  373. package/dist/types/src/utils/clamp.d.ts.map +0 -1
  374. package/dist/types/src/utils/mergeRefs.d.ts.map +0 -1
  375. package/dist/types/src/utils/slot.d.ts.map +0 -1
@@ -0,0 +1,123 @@
1
+ .switch-container_63905009 {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ gap: 0.5em;
5
+ }
6
+
7
+ .switch_011a552d {
8
+ position: relative;
9
+ display: inline-block;
10
+ flex-shrink: 0;
11
+ width: var(--switch-width);
12
+ height: var(--switch-height);
13
+ }
14
+
15
+ .switch-sm_3a85b947 {
16
+ font-size: 14px;
17
+
18
+ --switch-width: 2.8em;
19
+ --switch-height: 1.6em;
20
+ --thumb-size: 1.1em;
21
+ --thumb-padding: 0.25em;
22
+ }
23
+
24
+ .switch-md_e3005d26 {
25
+ font-size: 17px;
26
+
27
+ --switch-width: 3.5em;
28
+ --switch-height: 2em;
29
+ --thumb-size: 1.4em;
30
+ --thumb-padding: 0.3em;
31
+ }
32
+
33
+ .switch-lg_daceb03b {
34
+ font-size: 20px;
35
+
36
+ --switch-width: 4em;
37
+ --switch-height: 2.2em;
38
+ --thumb-size: 1.6em;
39
+ --thumb-padding: 0.3em;
40
+ }
41
+
42
+ .switch_011a552d input {
43
+ opacity: 0;
44
+ width: 100%;
45
+ height: 100%;
46
+ position: absolute;
47
+ inset: 0;
48
+ z-index: 1;
49
+ cursor: pointer;
50
+ margin: 0;
51
+ }
52
+
53
+ .slider_5603991a {
54
+ position: absolute;
55
+ cursor: pointer;
56
+ inset: 0;
57
+ background: var(--switch-track-inactive, var(--frey-switch-track-inactive));
58
+ border-radius: 50px;
59
+ transition: all 0.4s cubic-bezier(0.23, 1, 0.32, 1);
60
+ }
61
+
62
+ .slider_5603991a::before {
63
+ position: absolute;
64
+ content: '';
65
+ height: var(--thumb-size);
66
+ width: var(--thumb-size);
67
+ left: var(--thumb-padding);
68
+ top: 50%;
69
+ transform: translateY(-50%);
70
+ background-color: var(--switch-thumb, var(--frey-switch-thumb));
71
+ border-radius: 50px;
72
+ box-shadow: var(--frey-shadow-thumb);
73
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
74
+ }
75
+
76
+ .switch-disabled_f3161357 .slider_5603991a {
77
+ opacity: 0.5;
78
+ cursor: not-allowed;
79
+ }
80
+
81
+ .switch-disabled_f3161357 input {
82
+ cursor: not-allowed;
83
+ }
84
+
85
+ .switch_011a552d input:checked + .slider_5603991a {
86
+ background: var(--switch-track-active, var(--frey-switch-track-active));
87
+ }
88
+
89
+ .switch_011a552d input:focus-visible + .slider_5603991a {
90
+ outline: 2px solid var(--switch-focus-ring, var(--frey-focus-ring));
91
+ outline-offset: 2px;
92
+ }
93
+
94
+ .switch_011a552d input:checked + .slider_5603991a::before {
95
+ left: calc(var(--switch-width) - var(--thumb-size) - var(--thumb-padding));
96
+ transform: translateY(-50%);
97
+ }
98
+
99
+ .switch-disabled_f3161357 {
100
+ cursor: not-allowed;
101
+ }
102
+
103
+ .label_3314af1a {
104
+ cursor: pointer;
105
+ user-select: none;
106
+ }
107
+
108
+ .switch-disabled_f3161357 + .label_3314af1a {
109
+ opacity: 0.5;
110
+ cursor: not-allowed;
111
+ }
112
+
113
+ .visually-hidden_75ccb710 {
114
+ position: absolute;
115
+ width: 1px;
116
+ height: 1px;
117
+ padding: 0;
118
+ margin: -1px;
119
+ overflow: hidden;
120
+ clip-path: inset(50%);
121
+ white-space: nowrap;
122
+ border: 0;
123
+ }
@@ -1,5 +1,6 @@
1
1
  'use client';
2
- var styles = {"switch-container":"switch-module_switch-container__xDEo5","switch":"switch-module_switch__kA7Xe","switch-sm":"switch-module_switch-sm__7SvPY","switch-md":"switch-module_switch-md__loKg6","switch-lg":"switch-module_switch-lg__pU031","slider":"switch-module_slider__fJ2t2","switch-disabled":"switch-module_switch-disabled__4YjrP","label":"switch-module_label__JDK9V","visually-hidden":"switch-module_visually-hidden__-QPG1"};
2
+ import './switch.css';
3
+ var styles = {"switch-container":"switch-container_63905009","switch":"switch_011a552d","switch-sm":"switch-sm_3a85b947","switch-md":"switch-md_e3005d26","switch-lg":"switch-lg_daceb03b","slider":"slider_5603991a","switch-disabled":"switch-disabled_f3161357","label":"label_3314af1a","visually-hidden":"visually-hidden_75ccb710"};
3
4
 
4
5
  export { styles as default };
5
6
  //# sourceMappingURL=switch.module.css.mjs.map
@@ -0,0 +1,50 @@
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import clsx from 'clsx';
4
+ import React from 'react';
5
+ import styles from './table.module.css.mjs';
6
+
7
+ const TableRoot = React.forwardRef(function Table({ containerClassName, containerStyle, className, ...props }, ref) {
8
+ return (jsx("div", { className: clsx(styles.table_container, containerClassName), style: containerStyle, children: jsx("table", { ref: ref, className: clsx(styles.table, className), ...props }) }));
9
+ });
10
+ TableRoot.displayName = 'Table';
11
+ const TableHeader = React.forwardRef(function TableHeader({ className, ...props }, ref) {
12
+ return (jsx("thead", { ref: ref, className: clsx(styles.table_header, className), ...props }));
13
+ });
14
+ TableHeader.displayName = 'Table.Header';
15
+ const TableBody = React.forwardRef(function TableBody({ className, ...props }, ref) {
16
+ return (jsx("tbody", { ref: ref, className: clsx(styles.table_body, className), ...props }));
17
+ });
18
+ TableBody.displayName = 'Table.Body';
19
+ const TableFooter = React.forwardRef(function TableFooter({ className, ...props }, ref) {
20
+ return (jsx("tfoot", { ref: ref, className: clsx(styles.table_footer, className), ...props }));
21
+ });
22
+ TableFooter.displayName = 'Table.Footer';
23
+ const TableRow = React.forwardRef(function TableRow({ className, ...props }, ref) {
24
+ return (jsx("tr", { ref: ref, className: clsx(styles.table_row, className), ...props }));
25
+ });
26
+ TableRow.displayName = 'Table.Row';
27
+ const TableHead = React.forwardRef(function TableHead({ className, scope, ...props }, ref) {
28
+ return (jsx("th", { ref: ref, scope: scope ?? 'col', className: clsx(styles.table_head, className), ...props }));
29
+ });
30
+ TableHead.displayName = 'Table.Head';
31
+ const TableCell = React.forwardRef(function TableCell({ className, ...props }, ref) {
32
+ return (jsx("td", { ref: ref, className: clsx(styles.table_cell, className), ...props }));
33
+ });
34
+ TableCell.displayName = 'Table.Cell';
35
+ const TableCaption = React.forwardRef(function TableCaption({ className, ...props }, ref) {
36
+ return (jsx("caption", { ref: ref, className: clsx(styles.table_caption, className), ...props }));
37
+ });
38
+ TableCaption.displayName = 'Table.Caption';
39
+ const Table = Object.assign(TableRoot, {
40
+ Header: TableHeader,
41
+ Body: TableBody,
42
+ Footer: TableFooter,
43
+ Row: TableRow,
44
+ Head: TableHead,
45
+ Cell: TableCell,
46
+ Caption: TableCaption
47
+ });
48
+
49
+ export { Table, Table as default };
50
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,57 @@
1
+ .table_container_cf6dc21c {
2
+ width: 100%;
3
+ overflow-x: auto;
4
+ border: 1px solid var(--frey-color-border-subtle);
5
+ border-radius: var(--frey-radius-md);
6
+ background-color: var(--frey-color-surface);
7
+ }
8
+
9
+ .table_27cdf1b6 {
10
+ width: 100%;
11
+ min-width: 32rem;
12
+ border-collapse: collapse;
13
+ color: var(--frey-color-text);
14
+ }
15
+
16
+ .table_header_57ada4c2 {
17
+ background-color: var(--frey-color-surface-subtle);
18
+ }
19
+
20
+ .table_head_e4d54334 {
21
+ padding: 0.75rem 1rem;
22
+ color: var(--frey-color-text-secondary);
23
+ font-size: 0.8125rem;
24
+ font-weight: 600;
25
+ line-height: 1.4;
26
+ text-align: left;
27
+ border-bottom: 1px solid var(--frey-color-border-subtle);
28
+ }
29
+
30
+ .table_body_9c7a877f .table_row_a5c971f0:hover {
31
+ background-color: var(--frey-color-surface-hover);
32
+ }
33
+
34
+ .table_cell_5480c112 {
35
+ padding: 0.75rem 1rem;
36
+ font-size: 0.875rem;
37
+ line-height: 1.5;
38
+ border-bottom: 1px solid var(--frey-color-border-subtle);
39
+ vertical-align: middle;
40
+ }
41
+
42
+ .table_footer_17fb06bb {
43
+ background-color: var(--frey-color-surface-subtle);
44
+ }
45
+
46
+ .table_footer_17fb06bb .table_cell_5480c112 {
47
+ font-weight: 600;
48
+ }
49
+
50
+ .table_caption_f83ef240 {
51
+ caption-side: bottom;
52
+ text-align: left;
53
+ color: var(--frey-color-text-secondary);
54
+ font-size: 0.8125rem;
55
+ line-height: 1.4;
56
+ padding: 0.75rem 1rem;
57
+ }
@@ -0,0 +1,6 @@
1
+ 'use client';
2
+ import './table.css';
3
+ var styles = {"table_container":"table_container_cf6dc21c","table":"table_27cdf1b6","table_header":"table_header_57ada4c2","table_head":"table_head_e4d54334","table_body":"table_body_9c7a877f","table_row":"table_row_a5c971f0","table_cell":"table_cell_5480c112","table_footer":"table_footer_17fb06bb","table_caption":"table_caption_f83ef240"};
4
+
5
+ export { styles as default };
6
+ //# sourceMappingURL=table.module.css.mjs.map
@@ -2,6 +2,8 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import clsx from 'clsx';
4
4
  import React, { createContext, useId, useState, useContext } from 'react';
5
+ import { useRovingCollection } from '../hooks/useRovingCollection.mjs';
6
+ import { mergeRefs } from '../utils/mergeRefs.mjs';
5
7
  import styles from './tabs.module.css.mjs';
6
8
 
7
9
  const TabsContext = createContext(null);
@@ -14,6 +16,7 @@ function useTabsContext() {
14
16
  }
15
17
  const TabsRoot = React.forwardRef(function Tabs({ value, defaultValue, onValueChange, className, ...props }, ref) {
16
18
  const idPrefix = useId();
19
+ const triggerCollection = useRovingCollection();
17
20
  const isControlled = value !== undefined;
18
21
  const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? '');
19
22
  const currentValue = isControlled ? value : uncontrolledValue;
@@ -26,8 +29,9 @@ const TabsRoot = React.forwardRef(function Tabs({ value, defaultValue, onValueCh
26
29
  const contextValue = React.useMemo(() => ({
27
30
  value: currentValue,
28
31
  onValueChange: handleValueChange,
29
- idPrefix
30
- }), [currentValue, handleValueChange, idPrefix]);
32
+ idPrefix,
33
+ triggerCollection
34
+ }), [currentValue, handleValueChange, idPrefix, triggerCollection]);
31
35
  return (jsx(TabsContext.Provider, { value: contextValue, children: jsx("div", { ref: ref, className: clsx(styles.tabs, className), ...props }) }));
32
36
  });
33
37
  TabsRoot.displayName = 'Tabs';
@@ -35,32 +39,57 @@ const TabsList = React.forwardRef(function TabsList({ className, ...props }, ref
35
39
  return (jsx("div", { ref: ref, role: 'tablist', className: clsx(styles.tabs_list, className), ...props }));
36
40
  });
37
41
  TabsList.displayName = 'Tabs.List';
38
- const TabsTrigger = React.forwardRef(function TabsTrigger({ value: triggerValue, className, ...props }, ref) {
39
- const { value: selectedValue, onValueChange, idPrefix } = useTabsContext();
42
+ const TabsTrigger = React.forwardRef(function TabsTrigger({ value: triggerValue, className, disabled = false, ...props }, ref) {
43
+ const { value: selectedValue, onValueChange, idPrefix, triggerCollection } = useTabsContext();
40
44
  const isSelected = selectedValue === triggerValue;
45
+ const triggerRef = React.useRef(null);
46
+ const mergedRef = mergeRefs(ref, triggerRef);
47
+ React.useEffect(() => {
48
+ triggerCollection.registerItem(triggerValue, triggerRef.current, {
49
+ disabled,
50
+ value: triggerValue
51
+ });
52
+ return () => {
53
+ triggerCollection.unregisterItem(triggerValue);
54
+ };
55
+ }, [triggerCollection, triggerValue, disabled]);
41
56
  const handleKeyDown = (e) => {
42
- // Basic Arrow Right / Arrow Left navigation handling
43
- if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {
44
- const triggerElements = Array.from(e.currentTarget.parentElement?.querySelectorAll('[role="tab"]') ?? []);
45
- const currentIndex = triggerElements.indexOf(e.currentTarget);
46
- if (currentIndex === -1)
47
- return;
48
- let nextIndex = currentIndex;
49
- if (e.key === 'ArrowRight') {
50
- nextIndex = (currentIndex + 1) % triggerElements.length;
57
+ const currentId = triggerCollection.findItemIdByElement(e.currentTarget);
58
+ if (!currentId)
59
+ return;
60
+ if (e.key === 'ArrowRight') {
61
+ e.preventDefault();
62
+ const nextId = triggerCollection.focusNext(currentId);
63
+ if (nextId) {
64
+ onValueChange(nextId);
51
65
  }
52
- else if (e.key === 'ArrowLeft') {
53
- nextIndex =
54
- (currentIndex - 1 + triggerElements.length) % triggerElements.length;
66
+ return;
67
+ }
68
+ if (e.key === 'ArrowLeft') {
69
+ e.preventDefault();
70
+ const previousId = triggerCollection.focusPrevious(currentId);
71
+ if (previousId) {
72
+ onValueChange(previousId);
73
+ }
74
+ return;
75
+ }
76
+ if (e.key === 'Home') {
77
+ e.preventDefault();
78
+ const firstId = triggerCollection.focusFirst();
79
+ if (firstId) {
80
+ onValueChange(firstId);
55
81
  }
56
- const nextTrigger = triggerElements[nextIndex];
57
- if (nextTrigger) {
58
- nextTrigger.focus();
59
- nextTrigger.click(); // Standard behavior for tabs to switch on arrow focus
82
+ return;
83
+ }
84
+ if (e.key === 'End') {
85
+ e.preventDefault();
86
+ const lastId = triggerCollection.focusLast();
87
+ if (lastId) {
88
+ onValueChange(lastId);
60
89
  }
61
90
  }
62
91
  };
63
- return (jsx("button", { ref: ref, type: 'button', role: 'tab', id: `${idPrefix}-tab-${triggerValue}`, "aria-controls": `${idPrefix}-panel-${triggerValue}`, "aria-selected": isSelected, tabIndex: isSelected ? 0 : -1, onClick: () => onValueChange(triggerValue), onKeyDown: handleKeyDown, className: clsx(styles.tabs_trigger, className), ...props }));
92
+ return (jsx("button", { ref: mergedRef, type: 'button', role: 'tab', id: `${idPrefix}-tab-${triggerValue}`, "aria-controls": `${idPrefix}-panel-${triggerValue}`, "aria-selected": isSelected, tabIndex: isSelected ? 0 : -1, disabled: disabled, onClick: () => onValueChange(triggerValue), onKeyDown: handleKeyDown, className: clsx(styles.tabs_trigger, className), ...props }));
64
93
  });
65
94
  TabsTrigger.displayName = 'Tabs.Trigger';
66
95
  const TabsContent = React.forwardRef(function TabsContent({ value: contentValue, className, children, ...props }, ref) {
@@ -0,0 +1,62 @@
1
+ .tabs_761198d1 {
2
+ display: flex;
3
+ flex-direction: column;
4
+ }
5
+
6
+ .tabs_list_a61ad952 {
7
+ display: flex;
8
+ position: relative;
9
+ align-items: center;
10
+ border-bottom: 1px solid var(--frey-color-border-subtle);
11
+ }
12
+
13
+ .tabs_trigger_b24ac187 {
14
+ background: none;
15
+ border: none;
16
+ padding: 0.5rem 1rem;
17
+ font-size: 0.875rem;
18
+ font-weight: 500;
19
+ color: var(--frey-color-text-muted);
20
+ cursor: pointer;
21
+ position: relative;
22
+ transition: color 0.2s ease-in-out;
23
+ outline: none;
24
+ }
25
+
26
+ .tabs_trigger_b24ac187:hover {
27
+ color: var(--frey-color-text);
28
+ }
29
+
30
+ .tabs_trigger_b24ac187:focus-visible {
31
+ border-radius: var(--frey-radius-sm);
32
+ box-shadow:
33
+ 0 0 0 2px var(--frey-color-surface),
34
+ 0 0 0 4px var(--frey-color-focus-ring);
35
+ }
36
+
37
+ .tabs_trigger_b24ac187[aria-selected='true'] {
38
+ color: var(--frey-color-text-title);
39
+ }
40
+
41
+ .tabs_trigger_b24ac187::after {
42
+ content: '';
43
+ position: absolute;
44
+ bottom: -1px; /* Align with the border-bottom of tabs_list */
45
+ left: 0;
46
+ right: 0;
47
+ height: 2px;
48
+ background-color: transparent;
49
+ transition: background-color 0.2s ease-in-out;
50
+ }
51
+
52
+ .tabs_trigger_b24ac187[aria-selected='true']::after {
53
+ background-color: var(--frey-color-primary);
54
+ }
55
+
56
+ .tabs_content_53dbeb4b {
57
+ padding-top: 1rem;
58
+ }
59
+
60
+ .tabs_content_53dbeb4b[hidden] {
61
+ display: none;
62
+ }
@@ -1,5 +1,6 @@
1
1
  'use client';
2
- var styles = {"tabs":"tabs-module_tabs__8GreJ","tabs_list":"tabs-module_tabs_list__ydVOj","tabs_trigger":"tabs-module_tabs_trigger__SHLcN","tabs_content":"tabs-module_tabs_content__xbq59"};
2
+ import './tabs.css';
3
+ var styles = {"tabs":"tabs_761198d1","tabs_list":"tabs_list_a61ad952","tabs_trigger":"tabs_trigger_b24ac187","tabs_content":"tabs_content_53dbeb4b"};
3
4
 
4
5
  export { styles as default };
5
6
  //# sourceMappingURL=tabs.module.css.mjs.map
@@ -1,25 +1,17 @@
1
1
  'use client';
2
- import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { jsx } from 'react/jsx-runtime';
3
3
  import clsx from 'clsx';
4
- import React, { useId } from 'react';
4
+ import React from 'react';
5
+ import Field from '../Field/index.mjs';
6
+ import { computeAriaProps } from '../utils/aria.mjs';
5
7
  import styles from './textinput.module.css.mjs';
6
8
 
7
- const TextInput = React.forwardRef(function TextInput({ label, hideLabel = false, error, helperText, type = 'text', className, style, id, disabled = false, ...inputProps }, ref) {
8
- const generatedId = useId();
9
- const inputId = id ?? generatedId;
10
- const errorId = `${inputId}-error`;
11
- const helperId = `${inputId}-helper`;
12
- const hasError = typeof error === 'string' && error.length > 0;
13
- const hasHelper = typeof helperText === 'string' && helperText.length > 0;
14
- const describedBy = [hasError ? errorId : undefined, hasHelper ? helperId : undefined]
15
- .filter(Boolean)
16
- .join(' ') || undefined;
17
- return (jsxs("div", { className: clsx(styles['text-input-container'], className), style: style, children: [jsx("label", { htmlFor: inputId, className: clsx(styles.label, {
18
- [styles['label-disabled']]: disabled,
19
- [styles['visually-hidden']]: hideLabel
20
- }), children: label }), jsx("input", { ref: ref, id: inputId, type: type, disabled: disabled, "aria-invalid": hasError || undefined, "aria-describedby": describedBy, className: clsx(styles.input, {
9
+ const TextInput = React.forwardRef(function TextInput({ label, hideLabel = false, error, helperText, type = 'text', className, style, id, disabled = false, required = false, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, ...inputProps }, ref) {
10
+ return (jsx(Field, { label: label, hideLabel: hideLabel, error: error, helperText: helperText, disabled: disabled, required: required, id: id, className: className, style: style, children: ({ inputId, describedBy, hasError }) => {
11
+ return (jsx("input", { ref: ref, id: inputId, type: type, disabled: disabled, required: required, className: clsx(styles.input, {
21
12
  [styles['input-error']]: hasError
22
- }), ...inputProps }), hasError && (jsx("p", { id: errorId, className: styles['error-text'], role: 'alert', children: error })), hasHelper && (jsx("p", { id: helperId, className: styles['helper-text'], children: helperText }))] }));
13
+ }), ...computeAriaProps(hasError, describedBy, ariaDescribedBy, ariaInvalid), ...inputProps }));
14
+ } }));
23
15
  });
24
16
  TextInput.displayName = 'TextInput';
25
17
 
@@ -0,0 +1,93 @@
1
+ .text-input-container_b4870d4b {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 0.25rem;
5
+ width: 100%;
6
+ }
7
+
8
+ .label_574cc423 {
9
+ font-size: 0.875rem;
10
+ font-weight: 500;
11
+ color: var(--frey-color-text-primary);
12
+ cursor: pointer;
13
+ user-select: none;
14
+ }
15
+
16
+ .label-disabled_600875f2 {
17
+ opacity: 0.5;
18
+ cursor: not-allowed;
19
+ }
20
+
21
+ .input_7f7ceaef {
22
+ width: 100%;
23
+ padding: 0.5rem 0.75rem;
24
+ font-size: 0.875rem;
25
+ line-height: 1.5;
26
+ color: var(--frey-color-text-primary);
27
+ background-color: var(--frey-color-surface);
28
+ border: 1px solid var(--frey-color-border, #d1d5db);
29
+ border-radius: 0.375rem;
30
+ outline: none;
31
+ transition:
32
+ border-color 0.2s,
33
+ box-shadow 0.2s;
34
+ box-sizing: border-box;
35
+ }
36
+
37
+ .input_7f7ceaef::placeholder {
38
+ color: var(--frey-color-text-secondary, #6b7280);
39
+ }
40
+
41
+ .input_7f7ceaef:focus-visible {
42
+ border-color: var(--frey-focus-ring);
43
+ box-shadow: 0 0 0 2px var(--frey-focus-ring);
44
+ }
45
+
46
+ .input-error_f537f299 {
47
+ border-color: var(--frey-color-error, #dc2626);
48
+ }
49
+
50
+ .input-error_f537f299:focus-visible {
51
+ border-color: var(--frey-color-error, #dc2626);
52
+ box-shadow: 0 0 0 2px var(--frey-color-error, #dc2626);
53
+ }
54
+
55
+ .input_7f7ceaef:disabled {
56
+ opacity: 0.5;
57
+ cursor: not-allowed;
58
+ background-color: var(--frey-color-surface-subtle, #f1f1f1);
59
+ }
60
+
61
+ .input_7f7ceaef:read-only {
62
+ background-color: var(--frey-color-surface-subtle, #f1f1f1);
63
+ cursor: default;
64
+ }
65
+
66
+ .input_7f7ceaef:read-only:focus-visible {
67
+ border-color: var(--frey-color-border, #d1d5db);
68
+ box-shadow: none;
69
+ }
70
+
71
+ .helper-text_c8d95bc3 {
72
+ font-size: 0.75rem;
73
+ color: var(--frey-color-text-secondary, #6b7280);
74
+ margin: 0;
75
+ }
76
+
77
+ .error-text_ba810e6e {
78
+ font-size: 0.75rem;
79
+ color: var(--frey-color-error, #dc2626);
80
+ margin: 0;
81
+ }
82
+
83
+ .visually-hidden_2e7218f5 {
84
+ position: absolute;
85
+ width: 1px;
86
+ height: 1px;
87
+ padding: 0;
88
+ margin: -1px;
89
+ overflow: hidden;
90
+ clip-path: inset(50%);
91
+ white-space: nowrap;
92
+ border: 0;
93
+ }
@@ -1,5 +1,6 @@
1
1
  'use client';
2
- var styles = {"text-input-container":"textinput-module_text-input-container__LaD6P","label":"textinput-module_label__2iW7l","label-disabled":"textinput-module_label-disabled__Aqrto","input":"textinput-module_input__SmSfZ","input-error":"textinput-module_input-error__8RSkp","helper-text":"textinput-module_helper-text__nygYX","error-text":"textinput-module_error-text__DFYQv","visually-hidden":"textinput-module_visually-hidden__w42hp"};
2
+ import './textinput.css';
3
+ var styles = {"input":"input_7f7ceaef","input-error":"input-error_f537f299"};
3
4
 
4
5
  export { styles as default };
5
6
  //# sourceMappingURL=textinput.module.css.mjs.map
@@ -3,6 +3,7 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import clsx from 'clsx';
4
4
  import React from 'react';
5
5
  import Field from '../Field/index.mjs';
6
+ import { computeAriaProps } from '../utils/aria.mjs';
6
7
  import styles from './textarea.module.css.mjs';
7
8
 
8
9
  const ResizeClassMap = {
@@ -13,9 +14,7 @@ const ResizeClassMap = {
13
14
  };
14
15
  const Textarea = React.forwardRef(function Textarea({ label, hideLabel = false, error, helperText, resize = 'vertical', className, style, id, disabled = false, required = false, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, ...textareaProps }, ref) {
15
16
  return (jsx(Field, { label: label, hideLabel: hideLabel, error: error, helperText: helperText, disabled: disabled, required: required, id: id, className: className, style: style, children: ({ inputId, describedBy, hasError }) => {
16
- const mergedDescribedBy = [describedBy, ariaDescribedBy].filter(Boolean).join(' ') || undefined;
17
- const isInvalid = hasError || ariaInvalid === true || ariaInvalid === 'true';
18
- return (jsx("textarea", { id: inputId, ref: ref, disabled: disabled, required: required, "aria-invalid": isInvalid || undefined, "aria-describedby": mergedDescribedBy, className: clsx(styles.textarea, ResizeClassMap[resize], hasError && styles.textarea_error), ...textareaProps }));
17
+ return (jsx("textarea", { id: inputId, ref: ref, disabled: disabled, required: required, className: clsx(styles.textarea, ResizeClassMap[resize], hasError && styles.textarea_error), ...computeAriaProps(hasError, describedBy, ariaDescribedBy, ariaInvalid), ...textareaProps }));
19
18
  } }));
20
19
  });
21
20
  Textarea.displayName = 'Textarea';
@@ -0,0 +1,62 @@
1
+ .textarea_fc665b4d {
2
+ width: 100%;
3
+ min-height: 6rem;
4
+ padding: 0.5rem 0.75rem;
5
+ font-size: 0.875rem;
6
+ line-height: 1.5;
7
+ color: var(--frey-color-text-primary);
8
+ background-color: var(--frey-color-surface);
9
+ border: 1px solid var(--frey-color-border, #d1d5db);
10
+ border-radius: 0.375rem;
11
+ outline: none;
12
+ transition:
13
+ border-color 0.2s,
14
+ box-shadow 0.2s;
15
+ box-sizing: border-box;
16
+ font-family: inherit;
17
+ }
18
+
19
+ .textarea_fc665b4d::placeholder {
20
+ color: var(--frey-color-text-secondary, #6b7280);
21
+ }
22
+
23
+ .textarea_fc665b4d:focus-visible {
24
+ border-color: var(--frey-focus-ring);
25
+ box-shadow: 0 0 0 2px var(--frey-focus-ring);
26
+ }
27
+
28
+ .textarea_error_786d519c {
29
+ border-color: var(--frey-color-error, #dc2626);
30
+ }
31
+
32
+ .textarea_error_786d519c:focus-visible {
33
+ border-color: var(--frey-color-error, #dc2626);
34
+ box-shadow: 0 0 0 2px var(--frey-color-error, #dc2626);
35
+ }
36
+
37
+ .textarea_fc665b4d:disabled {
38
+ opacity: 0.5;
39
+ cursor: not-allowed;
40
+ background-color: var(--frey-color-surface-subtle, #f1f1f1);
41
+ }
42
+
43
+ .textarea_fc665b4d:read-only {
44
+ background-color: var(--frey-color-surface-subtle, #f1f1f1);
45
+ cursor: default;
46
+ }
47
+
48
+ .resize_none_97e1813b {
49
+ resize: none;
50
+ }
51
+
52
+ .resize_vertical_8f383889 {
53
+ resize: vertical;
54
+ }
55
+
56
+ .resize_horizontal_cff4bc94 {
57
+ resize: horizontal;
58
+ }
59
+
60
+ .resize_both_60104c5b {
61
+ resize: both;
62
+ }
@@ -1,5 +1,6 @@
1
1
  'use client';
2
- var styles = {"textarea":"textarea-module_textarea__2ZcDH","textarea_error":"textarea-module_textarea_error__g--Z6","resize_none":"textarea-module_resize_none__91Cdb","resize_vertical":"textarea-module_resize_vertical__kA0Sk","resize_horizontal":"textarea-module_resize_horizontal__YDww4","resize_both":"textarea-module_resize_both__mzsFr"};
2
+ import './textarea.css';
3
+ var styles = {"textarea":"textarea_fc665b4d","textarea_error":"textarea_error_786d519c","resize_none":"resize_none_97e1813b","resize_vertical":"resize_vertical_8f383889","resize_horizontal":"resize_horizontal_cff4bc94","resize_both":"resize_both_60104c5b"};
3
4
 
4
5
  export { styles as default };
5
6
  //# sourceMappingURL=textarea.module.css.mjs.map