frey-ui 1.0.12 → 1.0.14

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 (382) hide show
  1. package/README.md +35 -1
  2. package/dist/cjs/Accordion/accordion.css +93 -0
  3. package/dist/cjs/Accordion/accordion.module.css.cjs +2 -1
  4. package/dist/cjs/Accordion/index.cjs +40 -13
  5. package/dist/cjs/Alert/alert.css +63 -0
  6. package/dist/cjs/Alert/alert.module.css.cjs +1 -0
  7. package/dist/cjs/Avatar/avatar.css +107 -0
  8. package/dist/cjs/Avatar/avatar.module.css.cjs +1 -0
  9. package/dist/cjs/Badge/badge.css +75 -0
  10. package/dist/cjs/Badge/badge.module.css.cjs +1 -0
  11. package/dist/cjs/Box/box.css +3 -0
  12. package/dist/cjs/Box/box.module.css.cjs +1 -0
  13. package/dist/cjs/Breadcrumbs/breadcrumbs.css +34 -0
  14. package/dist/cjs/Breadcrumbs/breadcrumbs.module.css.cjs +1 -0
  15. package/dist/cjs/Button/button.css +112 -0
  16. package/dist/cjs/Button/button.module.css.cjs +1 -0
  17. package/dist/cjs/Button/index.cjs +29 -10
  18. package/dist/cjs/Card/card.css +37 -0
  19. package/dist/cjs/Card/card.module.css.cjs +1 -0
  20. package/dist/cjs/Checkbox/checkbox.css +135 -0
  21. package/dist/cjs/Checkbox/checkbox.module.css.cjs +2 -1
  22. package/dist/cjs/Checkbox/index.cjs +4 -14
  23. package/dist/cjs/Chip/chip.css +55 -0
  24. package/dist/cjs/Chip/chip.module.css.cjs +1 -0
  25. package/dist/cjs/Combobox/combobox.css +140 -0
  26. package/dist/cjs/Combobox/combobox.module.css.cjs +10 -0
  27. package/dist/cjs/Combobox/index.cjs +191 -0
  28. package/dist/cjs/Dialog/dialog.css +157 -0
  29. package/dist/cjs/Dialog/dialog.module.css.cjs +1 -0
  30. package/dist/cjs/Dialog/index.cjs +12 -19
  31. package/dist/cjs/DropdownMenu/dropdownmenu.css +61 -0
  32. package/dist/cjs/DropdownMenu/dropdownmenu.module.css.cjs +1 -0
  33. package/dist/cjs/DropdownMenu/index.cjs +47 -30
  34. package/dist/cjs/Field/field.css +51 -0
  35. package/dist/cjs/Field/field.module.css.cjs +1 -0
  36. package/dist/cjs/Icons/icons.css +5 -0
  37. package/dist/cjs/Icons/icons.module.css.cjs +1 -0
  38. package/dist/cjs/Link/link.css +57 -0
  39. package/dist/cjs/Link/link.module.css.cjs +1 -0
  40. package/dist/cjs/Popover/index.cjs +9 -7
  41. package/dist/cjs/Popover/popover.css +31 -0
  42. package/dist/cjs/Popover/popover.module.css.cjs +1 -0
  43. package/dist/cjs/Progress/index.cjs +1 -1
  44. package/dist/cjs/Progress/progress.css +99 -0
  45. package/dist/cjs/Progress/progress.module.css.cjs +1 -0
  46. package/dist/cjs/RadioGroup/index.cjs +3 -6
  47. package/dist/cjs/RadioGroup/radiogroup.css +59 -0
  48. package/dist/cjs/RadioGroup/radiogroup.module.css.cjs +1 -0
  49. package/dist/cjs/Select/index.cjs +2 -3
  50. package/dist/cjs/Select/select.css +77 -0
  51. package/dist/cjs/Select/select.module.css.cjs +1 -0
  52. package/dist/cjs/Skeleton/skeleton.css +29 -0
  53. package/dist/cjs/Skeleton/skeleton.module.css.cjs +1 -0
  54. package/dist/cjs/Spinner/index.cjs +1 -1
  55. package/dist/cjs/Spinner/spinner.css +35 -0
  56. package/dist/cjs/Spinner/spinner.module.css.cjs +1 -0
  57. package/dist/cjs/Stack/index.cjs +2 -1
  58. package/dist/cjs/Switch/index.cjs +6 -3
  59. package/dist/cjs/Switch/switch.css +130 -0
  60. package/dist/cjs/Switch/switch.module.css.cjs +2 -1
  61. package/dist/cjs/Table/table.css +57 -0
  62. package/dist/cjs/Table/table.module.css.cjs +1 -0
  63. package/dist/cjs/Tabs/index.cjs +54 -29
  64. package/dist/cjs/Tabs/tabs.css +62 -0
  65. package/dist/cjs/Tabs/tabs.module.css.cjs +1 -0
  66. package/dist/cjs/TextInput/index.cjs +7 -15
  67. package/dist/cjs/TextInput/textinput.css +93 -0
  68. package/dist/cjs/TextInput/textinput.module.css.cjs +2 -1
  69. package/dist/cjs/Textarea/index.cjs +2 -3
  70. package/dist/cjs/Textarea/textarea.css +62 -0
  71. package/dist/cjs/Textarea/textarea.module.css.cjs +1 -0
  72. package/dist/cjs/ThemeProvider/index.cjs +14 -2
  73. package/dist/cjs/ThemeProvider/themeprovider.css +3 -0
  74. package/dist/cjs/ThemeProvider/themeprovider.module.css.cjs +1 -0
  75. package/dist/cjs/Toast/index.cjs +5 -5
  76. package/dist/cjs/Toast/toast.css +162 -0
  77. package/dist/cjs/Toast/toast.module.css.cjs +1 -0
  78. package/dist/cjs/Tooltip/index.cjs +3 -4
  79. package/dist/cjs/Tooltip/tooltip.css +26 -0
  80. package/dist/cjs/Tooltip/tooltip.module.css.cjs +1 -0
  81. package/dist/cjs/hooks/useControllableState.cjs +10 -2
  82. package/dist/cjs/hooks/useRovingCollection.cjs +107 -0
  83. package/dist/cjs/index.cjs +46 -43
  84. package/dist/cjs/theme.css +243 -0
  85. package/dist/cjs/utils/Portal.cjs +49 -0
  86. package/dist/cjs/utils/aria.cjs +14 -0
  87. package/dist/esm/Accordion/accordion.css +93 -0
  88. package/dist/esm/Accordion/accordion.module.css.mjs +2 -1
  89. package/dist/esm/Accordion/index.mjs +41 -14
  90. package/dist/esm/Alert/alert.css +63 -0
  91. package/dist/esm/Alert/alert.module.css.mjs +1 -0
  92. package/dist/esm/Avatar/avatar.css +107 -0
  93. package/dist/esm/Avatar/avatar.module.css.mjs +1 -0
  94. package/dist/esm/Badge/badge.css +75 -0
  95. package/dist/esm/Badge/badge.module.css.mjs +1 -0
  96. package/dist/esm/Box/box.css +3 -0
  97. package/dist/esm/Box/box.module.css.mjs +1 -0
  98. package/dist/esm/Breadcrumbs/breadcrumbs.css +34 -0
  99. package/dist/esm/Breadcrumbs/breadcrumbs.module.css.mjs +1 -0
  100. package/dist/esm/Button/button.css +112 -0
  101. package/dist/esm/Button/button.module.css.mjs +1 -0
  102. package/dist/esm/Button/index.mjs +30 -11
  103. package/dist/esm/Card/card.css +37 -0
  104. package/dist/esm/Card/card.module.css.mjs +1 -0
  105. package/dist/esm/Checkbox/checkbox.css +135 -0
  106. package/dist/esm/Checkbox/checkbox.module.css.mjs +2 -1
  107. package/dist/esm/Checkbox/index.mjs +4 -14
  108. package/dist/esm/Chip/chip.css +55 -0
  109. package/dist/esm/Chip/chip.module.css.mjs +1 -0
  110. package/dist/esm/Combobox/combobox.css +140 -0
  111. package/dist/esm/Combobox/combobox.module.css.mjs +6 -0
  112. package/dist/esm/Combobox/index.mjs +187 -0
  113. package/dist/esm/Dialog/dialog.css +157 -0
  114. package/dist/esm/Dialog/dialog.module.css.mjs +1 -0
  115. package/dist/esm/Dialog/index.mjs +13 -20
  116. package/dist/esm/DropdownMenu/dropdownmenu.css +61 -0
  117. package/dist/esm/DropdownMenu/dropdownmenu.module.css.mjs +1 -0
  118. package/dist/esm/DropdownMenu/index.mjs +48 -31
  119. package/dist/esm/Field/field.css +51 -0
  120. package/dist/esm/Field/field.module.css.mjs +1 -0
  121. package/dist/esm/Icons/icons.css +5 -0
  122. package/dist/esm/Icons/icons.module.css.mjs +1 -0
  123. package/dist/esm/Link/link.css +57 -0
  124. package/dist/esm/Link/link.module.css.mjs +1 -0
  125. package/dist/esm/Popover/index.mjs +10 -8
  126. package/dist/esm/Popover/popover.css +31 -0
  127. package/dist/esm/Popover/popover.module.css.mjs +1 -0
  128. package/dist/esm/Progress/index.mjs +1 -1
  129. package/dist/esm/Progress/progress.css +99 -0
  130. package/dist/esm/Progress/progress.module.css.mjs +1 -0
  131. package/dist/esm/RadioGroup/index.mjs +3 -6
  132. package/dist/esm/RadioGroup/radiogroup.css +59 -0
  133. package/dist/esm/RadioGroup/radiogroup.module.css.mjs +1 -0
  134. package/dist/esm/Select/index.mjs +2 -3
  135. package/dist/esm/Select/select.css +77 -0
  136. package/dist/esm/Select/select.module.css.mjs +1 -0
  137. package/dist/esm/Skeleton/skeleton.css +29 -0
  138. package/dist/esm/Skeleton/skeleton.module.css.mjs +1 -0
  139. package/dist/esm/Spinner/index.mjs +1 -1
  140. package/dist/esm/Spinner/spinner.css +35 -0
  141. package/dist/esm/Spinner/spinner.module.css.mjs +1 -0
  142. package/dist/esm/Stack/index.mjs +2 -1
  143. package/dist/esm/Switch/index.mjs +6 -3
  144. package/dist/esm/Switch/switch.css +130 -0
  145. package/dist/esm/Switch/switch.module.css.mjs +2 -1
  146. package/dist/esm/Table/table.css +57 -0
  147. package/dist/esm/Table/table.module.css.mjs +1 -0
  148. package/dist/esm/Tabs/index.mjs +55 -30
  149. package/dist/esm/Tabs/tabs.css +62 -0
  150. package/dist/esm/Tabs/tabs.module.css.mjs +1 -0
  151. package/dist/esm/TextInput/index.mjs +9 -17
  152. package/dist/esm/TextInput/textinput.css +93 -0
  153. package/dist/esm/TextInput/textinput.module.css.mjs +2 -1
  154. package/dist/esm/Textarea/index.mjs +2 -3
  155. package/dist/esm/Textarea/textarea.css +62 -0
  156. package/dist/esm/Textarea/textarea.module.css.mjs +1 -0
  157. package/dist/esm/ThemeProvider/index.mjs +14 -4
  158. package/dist/esm/ThemeProvider/themeprovider.css +3 -0
  159. package/dist/esm/ThemeProvider/themeprovider.module.css.mjs +1 -0
  160. package/dist/esm/Toast/index.mjs +5 -5
  161. package/dist/esm/Toast/toast.css +162 -0
  162. package/dist/esm/Toast/toast.module.css.mjs +1 -0
  163. package/dist/esm/Tooltip/index.mjs +3 -4
  164. package/dist/esm/Tooltip/tooltip.css +26 -0
  165. package/dist/esm/Tooltip/tooltip.module.css.mjs +1 -0
  166. package/dist/esm/hooks/useControllableState.mjs +10 -3
  167. package/dist/esm/hooks/useRovingCollection.mjs +105 -0
  168. package/dist/esm/index.mjs +2 -1
  169. package/dist/esm/theme.css +243 -0
  170. package/dist/esm/utils/Portal.mjs +45 -0
  171. package/dist/esm/utils/aria.mjs +12 -0
  172. package/dist/index.d.ts +36 -10
  173. package/dist/types/src/Button/index.d.ts +4 -7
  174. package/dist/types/src/Combobox/index.d.ts +25 -0
  175. package/dist/types/src/DropdownMenu/index.d.ts +2 -2
  176. package/dist/types/src/ThemeProvider/index.d.ts +6 -0
  177. package/dist/types/src/hooks/useControllableState.d.ts +5 -0
  178. package/dist/types/src/hooks/useRovingCollection.d.ts +16 -0
  179. package/dist/types/src/index.d.ts +5 -3
  180. package/dist/types/src/utils/Portal.d.ts +8 -0
  181. package/dist/types/src/utils/aria.d.ts +3 -0
  182. package/dist/types/src/utils/testUtils.d.ts +7 -0
  183. package/package.json +21 -13
  184. package/dist/cjs/Accordion/accordion.module.css.cjs.map +0 -1
  185. package/dist/cjs/Accordion/index.cjs.map +0 -1
  186. package/dist/cjs/Alert/alert.module.css.cjs.map +0 -1
  187. package/dist/cjs/Alert/index.cjs.map +0 -1
  188. package/dist/cjs/Avatar/avatar.module.css.cjs.map +0 -1
  189. package/dist/cjs/Avatar/index.cjs.map +0 -1
  190. package/dist/cjs/Badge/badge.module.css.cjs.map +0 -1
  191. package/dist/cjs/Badge/index.cjs.map +0 -1
  192. package/dist/cjs/Box/box.module.css.cjs.map +0 -1
  193. package/dist/cjs/Box/index.cjs.map +0 -1
  194. package/dist/cjs/Breadcrumbs/breadcrumbs.module.css.cjs.map +0 -1
  195. package/dist/cjs/Breadcrumbs/index.cjs.map +0 -1
  196. package/dist/cjs/Button/button.module.css.cjs.map +0 -1
  197. package/dist/cjs/Button/index.cjs.map +0 -1
  198. package/dist/cjs/Card/card.module.css.cjs.map +0 -1
  199. package/dist/cjs/Card/index.cjs.map +0 -1
  200. package/dist/cjs/Checkbox/checkbox.module.css.cjs.map +0 -1
  201. package/dist/cjs/Checkbox/index.cjs.map +0 -1
  202. package/dist/cjs/Chip/chip.module.css.cjs.map +0 -1
  203. package/dist/cjs/Chip/index.cjs.map +0 -1
  204. package/dist/cjs/Dialog/dialog.module.css.cjs.map +0 -1
  205. package/dist/cjs/Dialog/index.cjs.map +0 -1
  206. package/dist/cjs/DropdownMenu/dropdownmenu.module.css.cjs.map +0 -1
  207. package/dist/cjs/DropdownMenu/index.cjs.map +0 -1
  208. package/dist/cjs/Field/field.module.css.cjs.map +0 -1
  209. package/dist/cjs/Field/index.cjs.map +0 -1
  210. package/dist/cjs/Flex/index.cjs.map +0 -1
  211. package/dist/cjs/Grid/index.cjs.map +0 -1
  212. package/dist/cjs/Icons/CheckIcon.cjs.map +0 -1
  213. package/dist/cjs/Icons/ChevronDownIcon.cjs.map +0 -1
  214. package/dist/cjs/Icons/CircleCheckIcon.cjs.map +0 -1
  215. package/dist/cjs/Icons/CircleInfoIcon.cjs.map +0 -1
  216. package/dist/cjs/Icons/CircleXIcon.cjs.map +0 -1
  217. package/dist/cjs/Icons/CloseIcon.cjs.map +0 -1
  218. package/dist/cjs/Icons/IconSvg.cjs.map +0 -1
  219. package/dist/cjs/Icons/MinusIcon.cjs.map +0 -1
  220. package/dist/cjs/Icons/TriangleAlertIcon.cjs.map +0 -1
  221. package/dist/cjs/Icons/icons.module.css.cjs.map +0 -1
  222. package/dist/cjs/Link/index.cjs.map +0 -1
  223. package/dist/cjs/Link/link.module.css.cjs.map +0 -1
  224. package/dist/cjs/Popover/index.cjs.map +0 -1
  225. package/dist/cjs/Popover/popover.module.css.cjs.map +0 -1
  226. package/dist/cjs/Progress/index.cjs.map +0 -1
  227. package/dist/cjs/Progress/progress.module.css.cjs.map +0 -1
  228. package/dist/cjs/RadioGroup/index.cjs.map +0 -1
  229. package/dist/cjs/RadioGroup/radiogroup.module.css.cjs.map +0 -1
  230. package/dist/cjs/Select/index.cjs.map +0 -1
  231. package/dist/cjs/Select/select.module.css.cjs.map +0 -1
  232. package/dist/cjs/Skeleton/index.cjs.map +0 -1
  233. package/dist/cjs/Skeleton/skeleton.module.css.cjs.map +0 -1
  234. package/dist/cjs/Spinner/index.cjs.map +0 -1
  235. package/dist/cjs/Spinner/spinner.module.css.cjs.map +0 -1
  236. package/dist/cjs/Stack/index.cjs.map +0 -1
  237. package/dist/cjs/Switch/index.cjs.map +0 -1
  238. package/dist/cjs/Switch/switch.module.css.cjs.map +0 -1
  239. package/dist/cjs/Table/index.cjs.map +0 -1
  240. package/dist/cjs/Table/table.module.css.cjs.map +0 -1
  241. package/dist/cjs/Tabs/index.cjs.map +0 -1
  242. package/dist/cjs/Tabs/tabs.module.css.cjs.map +0 -1
  243. package/dist/cjs/TextInput/index.cjs.map +0 -1
  244. package/dist/cjs/TextInput/textinput.module.css.cjs.map +0 -1
  245. package/dist/cjs/Textarea/index.cjs.map +0 -1
  246. package/dist/cjs/Textarea/textarea.module.css.cjs.map +0 -1
  247. package/dist/cjs/ThemeProvider/index.cjs.map +0 -1
  248. package/dist/cjs/ThemeProvider/themeprovider.module.css.cjs.map +0 -1
  249. package/dist/cjs/Toast/index.cjs.map +0 -1
  250. package/dist/cjs/Toast/toast.module.css.cjs.map +0 -1
  251. package/dist/cjs/Tooltip/index.cjs.map +0 -1
  252. package/dist/cjs/Tooltip/tooltip.module.css.cjs.map +0 -1
  253. package/dist/cjs/hooks/floatingConfig.cjs.map +0 -1
  254. package/dist/cjs/hooks/useControllableState.cjs.map +0 -1
  255. package/dist/cjs/index.cjs.map +0 -1
  256. package/dist/cjs/utils/mergeRefs.cjs.map +0 -1
  257. package/dist/cjs/utils/slot.cjs.map +0 -1
  258. package/dist/esm/Accordion/accordion.module.css.mjs.map +0 -1
  259. package/dist/esm/Accordion/index.mjs.map +0 -1
  260. package/dist/esm/Alert/alert.module.css.mjs.map +0 -1
  261. package/dist/esm/Alert/index.mjs.map +0 -1
  262. package/dist/esm/Avatar/avatar.module.css.mjs.map +0 -1
  263. package/dist/esm/Avatar/index.mjs.map +0 -1
  264. package/dist/esm/Badge/badge.module.css.mjs.map +0 -1
  265. package/dist/esm/Badge/index.mjs.map +0 -1
  266. package/dist/esm/Box/box.module.css.mjs.map +0 -1
  267. package/dist/esm/Box/index.mjs.map +0 -1
  268. package/dist/esm/Breadcrumbs/breadcrumbs.module.css.mjs.map +0 -1
  269. package/dist/esm/Breadcrumbs/index.mjs.map +0 -1
  270. package/dist/esm/Button/button.module.css.mjs.map +0 -1
  271. package/dist/esm/Button/index.mjs.map +0 -1
  272. package/dist/esm/Card/card.module.css.mjs.map +0 -1
  273. package/dist/esm/Card/index.mjs.map +0 -1
  274. package/dist/esm/Checkbox/checkbox.module.css.mjs.map +0 -1
  275. package/dist/esm/Checkbox/index.mjs.map +0 -1
  276. package/dist/esm/Chip/chip.module.css.mjs.map +0 -1
  277. package/dist/esm/Chip/index.mjs.map +0 -1
  278. package/dist/esm/Dialog/dialog.module.css.mjs.map +0 -1
  279. package/dist/esm/Dialog/index.mjs.map +0 -1
  280. package/dist/esm/DropdownMenu/dropdownmenu.module.css.mjs.map +0 -1
  281. package/dist/esm/DropdownMenu/index.mjs.map +0 -1
  282. package/dist/esm/Field/field.module.css.mjs.map +0 -1
  283. package/dist/esm/Field/index.mjs.map +0 -1
  284. package/dist/esm/Flex/index.mjs.map +0 -1
  285. package/dist/esm/Grid/index.mjs.map +0 -1
  286. package/dist/esm/Icons/CheckIcon.mjs.map +0 -1
  287. package/dist/esm/Icons/ChevronDownIcon.mjs.map +0 -1
  288. package/dist/esm/Icons/CircleCheckIcon.mjs.map +0 -1
  289. package/dist/esm/Icons/CircleInfoIcon.mjs.map +0 -1
  290. package/dist/esm/Icons/CircleXIcon.mjs.map +0 -1
  291. package/dist/esm/Icons/CloseIcon.mjs.map +0 -1
  292. package/dist/esm/Icons/IconSvg.mjs.map +0 -1
  293. package/dist/esm/Icons/MinusIcon.mjs.map +0 -1
  294. package/dist/esm/Icons/TriangleAlertIcon.mjs.map +0 -1
  295. package/dist/esm/Icons/icons.module.css.mjs.map +0 -1
  296. package/dist/esm/Link/index.mjs.map +0 -1
  297. package/dist/esm/Link/link.module.css.mjs.map +0 -1
  298. package/dist/esm/Popover/index.mjs.map +0 -1
  299. package/dist/esm/Popover/popover.module.css.mjs.map +0 -1
  300. package/dist/esm/Progress/index.mjs.map +0 -1
  301. package/dist/esm/Progress/progress.module.css.mjs.map +0 -1
  302. package/dist/esm/RadioGroup/index.mjs.map +0 -1
  303. package/dist/esm/RadioGroup/radiogroup.module.css.mjs.map +0 -1
  304. package/dist/esm/Select/index.mjs.map +0 -1
  305. package/dist/esm/Select/select.module.css.mjs.map +0 -1
  306. package/dist/esm/Skeleton/index.mjs.map +0 -1
  307. package/dist/esm/Skeleton/skeleton.module.css.mjs.map +0 -1
  308. package/dist/esm/Spinner/index.mjs.map +0 -1
  309. package/dist/esm/Spinner/spinner.module.css.mjs.map +0 -1
  310. package/dist/esm/Stack/index.mjs.map +0 -1
  311. package/dist/esm/Switch/index.mjs.map +0 -1
  312. package/dist/esm/Switch/switch.module.css.mjs.map +0 -1
  313. package/dist/esm/Table/index.mjs.map +0 -1
  314. package/dist/esm/Table/table.module.css.mjs.map +0 -1
  315. package/dist/esm/Tabs/index.mjs.map +0 -1
  316. package/dist/esm/Tabs/tabs.module.css.mjs.map +0 -1
  317. package/dist/esm/TextInput/index.mjs.map +0 -1
  318. package/dist/esm/TextInput/textinput.module.css.mjs.map +0 -1
  319. package/dist/esm/Textarea/index.mjs.map +0 -1
  320. package/dist/esm/Textarea/textarea.module.css.mjs.map +0 -1
  321. package/dist/esm/ThemeProvider/index.mjs.map +0 -1
  322. package/dist/esm/ThemeProvider/themeprovider.module.css.mjs.map +0 -1
  323. package/dist/esm/Toast/index.mjs.map +0 -1
  324. package/dist/esm/Toast/toast.module.css.mjs.map +0 -1
  325. package/dist/esm/Tooltip/index.mjs.map +0 -1
  326. package/dist/esm/Tooltip/tooltip.module.css.mjs.map +0 -1
  327. package/dist/esm/hooks/floatingConfig.mjs.map +0 -1
  328. package/dist/esm/hooks/useControllableState.mjs.map +0 -1
  329. package/dist/esm/index.mjs.map +0 -1
  330. package/dist/esm/utils/mergeRefs.mjs.map +0 -1
  331. package/dist/esm/utils/slot.mjs.map +0 -1
  332. package/dist/styles.css +0 -3
  333. package/dist/styles.css.map +0 -1
  334. package/dist/types/src/Accordion/index.d.ts.map +0 -1
  335. package/dist/types/src/Alert/index.d.ts.map +0 -1
  336. package/dist/types/src/Avatar/index.d.ts.map +0 -1
  337. package/dist/types/src/Badge/index.d.ts.map +0 -1
  338. package/dist/types/src/Box/index.d.ts.map +0 -1
  339. package/dist/types/src/Breadcrumbs/index.d.ts.map +0 -1
  340. package/dist/types/src/Button/index.d.ts.map +0 -1
  341. package/dist/types/src/Card/index.d.ts.map +0 -1
  342. package/dist/types/src/Checkbox/index.d.ts.map +0 -1
  343. package/dist/types/src/Chip/index.d.ts.map +0 -1
  344. package/dist/types/src/Dialog/index.d.ts.map +0 -1
  345. package/dist/types/src/DropdownMenu/index.d.ts.map +0 -1
  346. package/dist/types/src/Field/index.d.ts.map +0 -1
  347. package/dist/types/src/Flex/index.d.ts.map +0 -1
  348. package/dist/types/src/Grid/index.d.ts.map +0 -1
  349. package/dist/types/src/Icons/CheckIcon.d.ts.map +0 -1
  350. package/dist/types/src/Icons/ChevronDownIcon.d.ts.map +0 -1
  351. package/dist/types/src/Icons/CircleCheckIcon.d.ts.map +0 -1
  352. package/dist/types/src/Icons/CircleInfoIcon.d.ts.map +0 -1
  353. package/dist/types/src/Icons/CircleXIcon.d.ts.map +0 -1
  354. package/dist/types/src/Icons/CloseIcon.d.ts.map +0 -1
  355. package/dist/types/src/Icons/IconSvg.d.ts.map +0 -1
  356. package/dist/types/src/Icons/MinusIcon.d.ts.map +0 -1
  357. package/dist/types/src/Icons/TriangleAlertIcon.d.ts.map +0 -1
  358. package/dist/types/src/Icons/index.d.ts.map +0 -1
  359. package/dist/types/src/Link/index.d.ts.map +0 -1
  360. package/dist/types/src/Popover/index.d.ts.map +0 -1
  361. package/dist/types/src/Progress/index.d.ts.map +0 -1
  362. package/dist/types/src/RadioGroup/index.d.ts.map +0 -1
  363. package/dist/types/src/Select/index.d.ts.map +0 -1
  364. package/dist/types/src/Skeleton/index.d.ts.map +0 -1
  365. package/dist/types/src/Spinner/index.d.ts.map +0 -1
  366. package/dist/types/src/Stack/index.d.ts.map +0 -1
  367. package/dist/types/src/Switch/index.d.ts.map +0 -1
  368. package/dist/types/src/Table/index.d.ts.map +0 -1
  369. package/dist/types/src/Tabs/index.d.ts.map +0 -1
  370. package/dist/types/src/TextInput/index.d.ts.map +0 -1
  371. package/dist/types/src/Textarea/index.d.ts.map +0 -1
  372. package/dist/types/src/ThemeProvider/index.d.ts.map +0 -1
  373. package/dist/types/src/Toast/index.d.ts.map +0 -1
  374. package/dist/types/src/Tooltip/index.d.ts.map +0 -1
  375. package/dist/types/src/hooks/floatingConfig.d.ts.map +0 -1
  376. package/dist/types/src/hooks/useControllableState.d.ts.map +0 -1
  377. package/dist/types/src/index.d.ts.map +0 -1
  378. package/dist/types/src/types/polymorphic.d.ts.map +0 -1
  379. package/dist/types/src/utils/clamp.d.ts +0 -2
  380. package/dist/types/src/utils/clamp.d.ts.map +0 -1
  381. package/dist/types/src/utils/mergeRefs.d.ts.map +0 -1
  382. package/dist/types/src/utils/slot.d.ts.map +0 -1
package/README.md CHANGED
@@ -21,6 +21,18 @@ Frey UI is built with **WCAG 2.1 AA** compliance as a goal:
21
21
 
22
22
  Automated checks run through [`jest-axe`](https://github.com/nickcolley/jest-axe) in unit tests and [`@storybook/addon-a11y`](https://storybook.js.org/addons/@storybook/addon-a11y) in Storybook.
23
23
 
24
+ ### Test Environment Notes
25
+
26
+ Unit tests run in JSDOM, which does not provide a full layout engine. Positioning assertions for portal overlays may require mocked geometry APIs (`getBoundingClientRect`, viewport size), and focus-trap behavior is validated at a best-effort level in unit tests.
27
+
28
+ Browser E2E coverage is available via Playwright in `apps/playwright` for real-world overlay focus and positioning checks, and can be expanded as overlay scenarios grow.
29
+
30
+ ### Overlay Focus Management
31
+
32
+ - `Dialog` uses the native `<dialog>` element and modal behavior.
33
+ - `Popover` and `DropdownMenu` use `FloatingFocusManager` in modal mode.
34
+ - When a `Popover` or `DropdownMenu` is open, keyboard focus is trapped inside the overlay and focus returns to the trigger when it closes.
35
+
24
36
  ## Installation
25
37
 
26
38
  ```bash
@@ -34,7 +46,7 @@ npm install frey-ui
34
46
  Import the stylesheet once in your app root (for example `App.tsx` or `layout.tsx`):
35
47
 
36
48
  ```tsx
37
- import 'frey-ui/style.css';
49
+ import 'frey-ui/theme.css';
38
50
  ```
39
51
 
40
52
  ## Public Subpath Imports
@@ -74,6 +86,28 @@ pnpm install
74
86
  pnpm storybook
75
87
  ```
76
88
 
89
+ ## Brand Token Generator
90
+
91
+ Frey UI includes a contributor CLI utility to generate CSS variable overrides from a small set of brand colors.
92
+
93
+ ```bash
94
+ pnpm theme:tokens -- --primary "#0f62fe"
95
+ ```
96
+
97
+ You can optionally override additional semantic colors:
98
+
99
+ ```bash
100
+ pnpm theme:tokens -- --primary "#0f62fe" --success "#198038" --warning "#f1c21b" --error "#da1e28" --info "#0043ce" > brand-theme.css
101
+ ```
102
+
103
+ Then load the generated CSS after `frey-ui/theme.css` in your application so your brand tokens override defaults.
104
+
105
+ ## Roadmap Notes
106
+
107
+ - `Combobox / Autocomplete`: planned to support searchable long-option datasets with robust keyboard semantics.
108
+ - `Drawer / Slide-over`: planned for mobile-first and dense settings workflows.
109
+ - Accordion content animation: current grid-based animation uses `overflow: hidden` on the inner content wrapper, which can clip inner tooltips and extended focus rings. Prefer external tooltip portals and avoid relying on overflow-visible descendants inside accordion content.
110
+
77
111
  ## License
78
112
 
79
113
  [MIT](./LICENSE)
@@ -0,0 +1,93 @@
1
+ .accordion_8f91be6e {
2
+ width: 100%;
3
+ }
4
+
5
+ .accordion_item_2d6abc63 {
6
+ border-bottom: 1px solid var(--frey-color-border-subtle);
7
+ }
8
+
9
+ .accordion_item_2d6abc63:last-child {
10
+ border-bottom: none;
11
+ }
12
+
13
+ .accordion_header_c9933178 {
14
+ display: flex;
15
+ }
16
+
17
+ .accordion_trigger_1c357514 {
18
+ display: flex;
19
+ flex: 1;
20
+ align-items: center;
21
+ justify-content: space-between;
22
+ padding: 1rem 0;
23
+ font-weight: 500;
24
+ font-size: 0.875rem;
25
+ background: none;
26
+ border: none;
27
+ cursor: pointer;
28
+ color: var(--frey-color-text);
29
+ transition: all 0.2s ease-in-out;
30
+ text-align: left;
31
+ outline: none;
32
+ }
33
+
34
+ .accordion_trigger_1c357514:hover {
35
+ text-decoration: underline;
36
+ }
37
+
38
+ .accordion_trigger_1c357514:focus-visible {
39
+ border-radius: var(--frey-radius-sm);
40
+ box-shadow:
41
+ 0 0 0 2px var(--frey-color-surface),
42
+ 0 0 0 4px var(--frey-color-focus-ring);
43
+ }
44
+
45
+ .accordion_chevron_c55f991e {
46
+ transition: transform 0.2s ease-in-out;
47
+ color: var(--frey-color-text-muted);
48
+ }
49
+
50
+ .accordion_chevron_open_44560e91 {
51
+ transform: rotate(180deg);
52
+ }
53
+
54
+ /*
55
+ CSS Grid trick for animating height
56
+ Transitions from 0fr to 1fr
57
+ */
58
+ .accordion_content_wrapper_357a0679 {
59
+ display: grid;
60
+ grid-template-rows: 0fr;
61
+ transition: grid-template-rows 0.2s ease-out;
62
+ }
63
+
64
+ .accordion_content_wrapper_open_02841768 {
65
+ grid-template-rows: 1fr;
66
+ }
67
+
68
+ .accordion_content_wrapper_closed_58ee9305 {
69
+ visibility: hidden;
70
+ pointer-events: none;
71
+ }
72
+
73
+ .accordion_content_945ef079 {
74
+ overflow: hidden; /* Important for grid animation to hide contents when 0fr */
75
+ padding-bottom: 1rem;
76
+ color: var(--frey-color-text-muted);
77
+ font-size: 0.875rem;
78
+ line-height: 1.5;
79
+ }
80
+
81
+ /* Remove padding if closed to avoid seeing whitespace inside 0fr */
82
+ .accordion_content_wrapper_357a0679:not(.accordion_content_wrapper_open_02841768)
83
+ .accordion_content_945ef079 {
84
+ padding-bottom: 0;
85
+ }
86
+
87
+ @media (prefers-reduced-motion: reduce) {
88
+ .accordion_trigger_1c357514,
89
+ .accordion_chevron_c55f991e,
90
+ .accordion_content_wrapper_357a0679 {
91
+ transition: none;
92
+ }
93
+ }
@@ -1,9 +1,10 @@
1
1
  'use client';
2
2
  'use strict';
3
+ require('./accordion.css');
3
4
 
4
5
  Object.defineProperty(exports, '__esModule', { value: true });
5
6
 
6
- var styles = {"accordion":"accordion_8f91be6e","accordion_item":"accordion_item_2d6abc63","accordion_header":"accordion_header_c9933178","accordion_trigger":"accordion_trigger_1c357514","accordion_chevron":"accordion_chevron_c55f991e","accordion_chevron_open":"accordion_chevron_open_44560e91","accordion_content_wrapper":"accordion_content_wrapper_357a0679","accordion_content_wrapper_open":"accordion_content_wrapper_open_02841768","accordion_content":"accordion_content_945ef079"};
7
+ var styles = {"accordion":"accordion_8f91be6e","accordion_item":"accordion_item_2d6abc63","accordion_header":"accordion_header_c9933178","accordion_trigger":"accordion_trigger_1c357514","accordion_chevron":"accordion_chevron_c55f991e","accordion_chevron_open":"accordion_chevron_open_44560e91","accordion_content_wrapper":"accordion_content_wrapper_357a0679","accordion_content_wrapper_open":"accordion_content_wrapper_open_02841768","accordion_content_wrapper_closed":"accordion_content_wrapper_closed_58ee9305","accordion_content":"accordion_content_945ef079"};
7
8
 
8
9
  exports.default = styles;
9
10
  //# sourceMappingURL=accordion.module.css.cjs.map
@@ -6,9 +6,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
  var clsx = require('clsx');
8
8
  var React = require('react');
9
+ var useControllableState = require('../hooks/useControllableState.cjs');
9
10
  var ChevronDownIcon = require('../Icons/ChevronDownIcon.cjs');
11
+ var mergeRefs = require('../utils/mergeRefs.cjs');
10
12
  var accordion_module = require('./accordion.module.css.cjs');
11
13
 
14
+ const ACCORDION_FOCUSABLE_SELECTOR = 'a[href], button, input, select, textarea, [tabindex]';
12
15
  const AccordionContext = React.createContext(null);
13
16
  function useAccordionContext() {
14
17
  const context = React.useContext(AccordionContext);
@@ -27,18 +30,13 @@ function useAccordionItemContext() {
27
30
  }
28
31
  const AccordionRoot = React.forwardRef(function Accordion({ type = 'single', value, defaultValue, onValueChange, className, ...props }, ref) {
29
32
  const defaultVal = defaultValue ?? (type === 'multiple' ? [] : '');
30
- const isControlled = value !== undefined;
31
- const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultVal);
32
- const currentValue = isControlled ? value : uncontrolledValue;
33
+ const [currentValue, setCurrentValue] = useControllableState.useControllableValue(value, defaultVal, onValueChange);
33
34
  const idPrefix = React.useId();
34
35
  const handleValueChange = React.useCallback((nextValue) => {
35
36
  let resolvedValue;
36
37
  if (type === 'single') {
37
38
  const valueAsStr = typeof currentValue === 'string' ? currentValue : '';
38
39
  resolvedValue = valueAsStr === nextValue ? '' : nextValue;
39
- if (!isControlled) {
40
- setUncontrolledValue(resolvedValue);
41
- }
42
40
  }
43
41
  else {
44
42
  const valueAsArray = Array.isArray(currentValue) ? currentValue : [];
@@ -46,13 +44,10 @@ const AccordionRoot = React.forwardRef(function Accordion({ type = 'single', val
46
44
  const nextArrayValue = isSelected
47
45
  ? valueAsArray.filter((v) => v !== nextValue)
48
46
  : [...valueAsArray, nextValue];
49
- if (!isControlled) {
50
- setUncontrolledValue(nextArrayValue);
51
- }
52
47
  resolvedValue = nextArrayValue;
53
48
  }
54
- onValueChange?.(resolvedValue);
55
- }, [type, currentValue, isControlled, onValueChange]);
49
+ setCurrentValue(resolvedValue);
50
+ }, [type, currentValue, setCurrentValue]);
56
51
  const contextValue = React.useMemo(() => ({
57
52
  type,
58
53
  value: currentValue,
@@ -83,8 +78,40 @@ AccordionTrigger.displayName = 'Accordion.Trigger';
83
78
  const AccordionContent = React.forwardRef(function AccordionContent({ className, children, ...props }, ref) {
84
79
  const { idPrefix } = useAccordionContext();
85
80
  const { value, isOpen } = useAccordionItemContext();
86
- return (jsxRuntime.jsx("section", { ref: ref, id: `${idPrefix}-content-${value}`, "aria-labelledby": `${idPrefix}-trigger-${value}`, className: clsx(accordion_module.default.accordion_content_wrapper, {
87
- [accordion_module.default.accordion_content_wrapper_open]: isOpen
81
+ const contentRef = React.useRef(null);
82
+ const mergedContentRef = React.useMemo(() => mergeRefs.mergeRefs(ref, contentRef), [ref]);
83
+ React.useEffect(() => {
84
+ const node = contentRef.current;
85
+ if (!node) {
86
+ return;
87
+ }
88
+ const focusableElements = node.querySelectorAll(ACCORDION_FOCUSABLE_SELECTOR);
89
+ focusableElements.forEach((element) => {
90
+ if (isOpen) {
91
+ const originalTabIndex = element.dataset.freyAccordionTabindex;
92
+ if (originalTabIndex === undefined) {
93
+ return;
94
+ }
95
+ if (originalTabIndex === '') {
96
+ element.removeAttribute('tabindex');
97
+ }
98
+ else {
99
+ element.setAttribute('tabindex', originalTabIndex);
100
+ }
101
+ delete element.dataset.freyAccordionTabindex;
102
+ return;
103
+ }
104
+ if (element.dataset.freyAccordionTabindex !== undefined) {
105
+ return;
106
+ }
107
+ const currentTabIndex = element.getAttribute('tabindex');
108
+ element.dataset.freyAccordionTabindex = currentTabIndex ?? '';
109
+ element.setAttribute('tabindex', '-1');
110
+ });
111
+ }, [isOpen]);
112
+ return (jsxRuntime.jsx("section", { ref: mergedContentRef, id: `${idPrefix}-content-${value}`, "aria-labelledby": `${idPrefix}-trigger-${value}`, "aria-hidden": !isOpen, inert: !isOpen, className: clsx(accordion_module.default.accordion_content_wrapper, {
113
+ [accordion_module.default.accordion_content_wrapper_open]: isOpen,
114
+ [accordion_module.default.accordion_content_wrapper_closed]: !isOpen
88
115
  }), ...props, children: jsxRuntime.jsx("div", { className: clsx(accordion_module.default.accordion_content, className), children: children }) }));
89
116
  });
90
117
  AccordionContent.displayName = 'Accordion.Content';
@@ -0,0 +1,63 @@
1
+ .alert_7c07a8c0 {
2
+ display: flex;
3
+ align-items: flex-start;
4
+ gap: 0.75rem;
5
+ padding: 0.75rem 1rem;
6
+ border-radius: 0.375rem;
7
+ border: 1px solid;
8
+ font-size: 0.875rem;
9
+ line-height: 1.5;
10
+ }
11
+
12
+ /* Variants */
13
+ .alert-error_1de19fed {
14
+ color: var(--frey-color-error);
15
+ background-color: var(--frey-color-error-bg);
16
+ border-color: var(--frey-color-error-border);
17
+ }
18
+
19
+ .alert-success_38713508 {
20
+ color: var(--frey-color-success);
21
+ background-color: var(--frey-color-success-bg);
22
+ border-color: var(--frey-color-success-border);
23
+ }
24
+
25
+ .alert-warning_931806ff {
26
+ color: var(--frey-color-warning);
27
+ background-color: var(--frey-color-warning-bg);
28
+ border-color: var(--frey-color-warning-border);
29
+ }
30
+
31
+ .alert-info_183c5a6f {
32
+ color: var(--frey-color-info);
33
+ background-color: var(--frey-color-info-bg);
34
+ border-color: var(--frey-color-info-border);
35
+ }
36
+
37
+ .alert-icon_b4aefb94 {
38
+ flex-shrink: 0;
39
+ width: 1.25rem;
40
+ height: 1.3125rem;
41
+ display: flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ }
45
+
46
+ .alert_icon_svg_1e243ee4 {
47
+ width: 1.25rem;
48
+ height: 1.25rem;
49
+ }
50
+
51
+ .alert-content_17fc1725 {
52
+ flex: 1;
53
+ min-width: 0;
54
+ }
55
+
56
+ .alert-title_1260729c {
57
+ font-weight: 600;
58
+ margin: 0 0 0.25rem;
59
+ }
60
+
61
+ .alert-message_af65e832 {
62
+ margin: 0;
63
+ }
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
  'use strict';
3
+ require('./alert.css');
3
4
 
4
5
  Object.defineProperty(exports, '__esModule', { value: true });
5
6
 
@@ -0,0 +1,107 @@
1
+ .avatar_69ecdff2 {
2
+ position: relative;
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ vertical-align: middle;
7
+ overflow: hidden;
8
+ user-select: none;
9
+ border-radius: 9999px;
10
+ border: 1px solid var(--frey-color-border-subtle);
11
+ background-color: var(--frey-color-surface-hover);
12
+ color: var(--frey-color-text);
13
+ }
14
+
15
+ .avatar_sm_a7074618 {
16
+ width: 2rem;
17
+ height: 2rem;
18
+ }
19
+
20
+ .avatar_md_b160648e {
21
+ width: 2.5rem;
22
+ height: 2.5rem;
23
+ }
24
+
25
+ .avatar_lg_470c9abd {
26
+ width: 3.5rem;
27
+ height: 3.5rem;
28
+ }
29
+
30
+ .avatar_image_7164259b {
31
+ width: 100%;
32
+ height: 100%;
33
+ object-fit: cover;
34
+ border-radius: inherit;
35
+ }
36
+
37
+ .avatar_fallback_f8d02776 {
38
+ width: 100%;
39
+ height: 100%;
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ background-color: var(--frey-color-surface-active);
44
+ font-weight: 500;
45
+ text-transform: uppercase;
46
+ }
47
+
48
+ .avatar_sm_a7074618 .avatar_fallback_f8d02776 {
49
+ font-size: 0.875rem;
50
+ }
51
+
52
+ .avatar_md_b160648e .avatar_fallback_f8d02776 {
53
+ font-size: 1rem;
54
+ }
55
+
56
+ .avatar_lg_470c9abd .avatar_fallback_f8d02776 {
57
+ font-size: 1.25rem;
58
+ }
59
+
60
+ /* Status Indicator */
61
+ .avatar_status_indicator_3b42fd0a {
62
+ position: absolute;
63
+ bottom: 0;
64
+ right: 0;
65
+ border-radius: 50%;
66
+ border: 2px solid var(--frey-color-surface);
67
+ background-color: var(--frey-color-border-subtle); /* default offline color */
68
+ }
69
+
70
+ /* Size adjustments for status indicator */
71
+ .avatar_sm_a7074618 .avatar_status_indicator_3b42fd0a {
72
+ width: 0.5rem;
73
+ height: 0.5rem;
74
+ right: 0.1rem;
75
+ bottom: 0.1rem;
76
+ }
77
+
78
+ .avatar_md_b160648e .avatar_status_indicator_3b42fd0a {
79
+ width: 0.625rem;
80
+ height: 0.625rem;
81
+ right: 0.125rem;
82
+ bottom: 0.125rem;
83
+ }
84
+
85
+ .avatar_lg_470c9abd .avatar_status_indicator_3b42fd0a {
86
+ width: 0.875rem;
87
+ height: 0.875rem;
88
+ right: 0.15rem;
89
+ bottom: 0.15rem;
90
+ }
91
+
92
+ /* Status variants */
93
+ .avatar_status_online_5ccf7e50 {
94
+ background-color: var(--frey-color-success);
95
+ }
96
+
97
+ .avatar_status_idle_f558cd51 {
98
+ background-color: var(--frey-color-warning);
99
+ }
100
+
101
+ .avatar_status_dnd_38c6115c {
102
+ background-color: var(--frey-color-error);
103
+ }
104
+
105
+ .avatar_status_offline_c805801a {
106
+ background-color: var(--frey-color-border-subtle);
107
+ }
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
  'use strict';
3
+ require('./avatar.css');
3
4
 
4
5
  Object.defineProperty(exports, '__esModule', { value: true });
5
6
 
@@ -0,0 +1,75 @@
1
+ .badge_bce67ff7 {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ border-radius: var(--frey-radius-full);
6
+ border: 1px solid transparent;
7
+ font-weight: 600;
8
+ line-height: 1;
9
+ white-space: nowrap;
10
+ }
11
+
12
+ .badge-sm_dc3de36d {
13
+ padding: 0.125rem 0.5rem;
14
+ font-size: 0.75rem;
15
+ }
16
+
17
+ .badge-md_d88ccac8 {
18
+ padding: 0.25rem 0.625rem;
19
+ font-size: 0.8125rem;
20
+ }
21
+
22
+ .badge-subtle-neutral_dc27f7b9 {
23
+ background-color: var(--frey-color-surface-subtle);
24
+ color: var(--frey-color-text-primary);
25
+ border-color: var(--frey-color-border-subtle);
26
+ }
27
+
28
+ .badge-subtle-info_9088d0b2 {
29
+ background-color: var(--frey-color-info-bg);
30
+ color: var(--frey-color-info);
31
+ border-color: var(--frey-color-info-border);
32
+ }
33
+
34
+ .badge-subtle-success_a8938864 {
35
+ background-color: var(--frey-color-success-bg);
36
+ color: var(--frey-color-success);
37
+ border-color: var(--frey-color-success-border);
38
+ }
39
+
40
+ .badge-subtle-warning_9b7640b7 {
41
+ background-color: var(--frey-color-warning-bg);
42
+ color: var(--frey-color-warning);
43
+ border-color: var(--frey-color-warning-border);
44
+ }
45
+
46
+ .badge-subtle-error_e6426ff9 {
47
+ background-color: var(--frey-color-error-bg);
48
+ color: var(--frey-color-error);
49
+ border-color: var(--frey-color-error-border);
50
+ }
51
+
52
+ .badge-solid-neutral_ac7e9431 {
53
+ background-color: var(--frey-color-text-primary);
54
+ color: var(--frey-color-surface);
55
+ }
56
+
57
+ .badge-solid-info_ecba7d59 {
58
+ background-color: var(--frey-color-info);
59
+ color: var(--frey-palette-white);
60
+ }
61
+
62
+ .badge-solid-success_28241077 {
63
+ background-color: var(--frey-color-success);
64
+ color: var(--frey-palette-white);
65
+ }
66
+
67
+ .badge-solid-warning_d28d237d {
68
+ background-color: var(--frey-color-warning);
69
+ color: var(--frey-palette-black);
70
+ }
71
+
72
+ .badge-solid-error_e87eabc7 {
73
+ background-color: var(--frey-color-error);
74
+ color: var(--frey-palette-white);
75
+ }
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
  'use strict';
3
+ require('./badge.css');
3
4
 
4
5
  Object.defineProperty(exports, '__esModule', { value: true });
5
6
 
@@ -0,0 +1,3 @@
1
+ .box_01090d66 {
2
+ box-sizing: border-box;
3
+ }
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
  'use strict';
3
+ require('./box.css');
3
4
 
4
5
  Object.defineProperty(exports, '__esModule', { value: true });
5
6
 
@@ -0,0 +1,34 @@
1
+ .breadcrumbs_aa9de1de {
2
+ --frey-breadcrumb-separator: '/';
3
+ }
4
+
5
+ .breadcrumbs_list_6dce73e5 {
6
+ display: flex;
7
+ align-items: center;
8
+ flex-wrap: wrap;
9
+ list-style: none;
10
+ margin: 0;
11
+ padding: 0;
12
+ }
13
+
14
+ .breadcrumbs_item_b875e8cd {
15
+ display: inline-flex;
16
+ align-items: center;
17
+ min-width: 0;
18
+ }
19
+
20
+ .breadcrumbs_item_b875e8cd + .breadcrumbs_item_b875e8cd::before {
21
+ content: var(--frey-breadcrumb-separator, '/');
22
+ margin-inline: var(--frey-space-2);
23
+ color: var(--frey-color-text-muted);
24
+ }
25
+
26
+ .breadcrumbs_link_c337ab74 {
27
+ white-space: nowrap;
28
+ }
29
+
30
+ .breadcrumbs_current_6e6bd611 {
31
+ color: var(--frey-color-text);
32
+ font-weight: 500;
33
+ white-space: nowrap;
34
+ }
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
  'use strict';
3
+ require('./breadcrumbs.css');
3
4
 
4
5
  Object.defineProperty(exports, '__esModule', { value: true });
5
6
 
@@ -0,0 +1,112 @@
1
+ .button_e3685226 {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ gap: 0.5rem;
6
+ padding: 0.5rem 1rem;
7
+ font-size: 0.875rem;
8
+ font-weight: 500;
9
+ line-height: 1.5;
10
+ border-radius: 0.375rem;
11
+ border: none;
12
+ cursor: pointer;
13
+ text-decoration: none;
14
+ transition:
15
+ background-color 0.2s,
16
+ color 0.2s,
17
+ border-color 0.2s,
18
+ opacity 0.2s;
19
+ user-select: none;
20
+ white-space: nowrap;
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ .button_e3685226:focus-visible {
25
+ outline: 2px solid var(--frey-focus-ring);
26
+ outline-offset: 2px;
27
+ }
28
+
29
+ /* Sizes */
30
+ .button-sm_b760748b {
31
+ padding: 0.25rem 0.75rem;
32
+ font-size: 0.8125rem;
33
+ }
34
+
35
+ .button-md_c5122fd1 {
36
+ padding: 0.5rem 1rem;
37
+ font-size: 0.875rem;
38
+ }
39
+
40
+ .button-lg_96785747 {
41
+ padding: 0.625rem 1.25rem;
42
+ font-size: 1rem;
43
+ }
44
+
45
+ /* Primary */
46
+ .button-primary_78ca6a16 {
47
+ background-color: var(--frey-button-primary-bg);
48
+ color: var(--frey-button-primary-text);
49
+ }
50
+
51
+ .button-primary_78ca6a16:hover:not(:disabled) {
52
+ background-color: var(--frey-button-primary-hover);
53
+ }
54
+
55
+ /* Secondary */
56
+ .button-secondary_a67ce4ae {
57
+ background-color: transparent;
58
+ color: var(--frey-button-secondary-text);
59
+ border: 1px solid var(--frey-button-secondary-border);
60
+ }
61
+
62
+ .button-secondary_a67ce4ae:hover:not(:disabled) {
63
+ background-color: var(--frey-button-secondary-hover-bg);
64
+ }
65
+
66
+ /* Ghost */
67
+ .button-ghost_406aeb5f {
68
+ background-color: transparent;
69
+ color: var(--frey-button-ghost-text);
70
+ }
71
+
72
+ .button-ghost_406aeb5f:hover:not(:disabled) {
73
+ background-color: var(--frey-button-ghost-hover-bg);
74
+ }
75
+
76
+ /* Destructive */
77
+ .button-destructive_f9faa5ef {
78
+ background-color: var(--frey-button-destructive-bg);
79
+ color: var(--frey-button-destructive-text);
80
+ }
81
+
82
+ .button-destructive_f9faa5ef:hover:not(:disabled) {
83
+ background-color: var(--frey-button-destructive-hover);
84
+ }
85
+
86
+ /* Disabled */
87
+ .button_e3685226:disabled {
88
+ opacity: 0.5;
89
+ cursor: not-allowed;
90
+ }
91
+
92
+ /* Loading */
93
+ .button-loading_0d5b6d36 {
94
+ pointer-events: none;
95
+ opacity: 0.7;
96
+ }
97
+
98
+ .spinner_9bcc821b {
99
+ display: inline-block;
100
+ width: 1em;
101
+ height: 1em;
102
+ border: 2px solid currentColor;
103
+ border-right-color: transparent;
104
+ border-radius: 50%;
105
+ animation: spin_c3a3352d 0.6s linear infinite;
106
+ }
107
+
108
+ @keyframes spin_c3a3352d {
109
+ to {
110
+ transform: rotate(360deg);
111
+ }
112
+ }