@usefragments/ui 1.5.4 → 1.7.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 (667) hide show
  1. package/README.md +4 -4
  2. package/dist/assets/fragments-wordmark.cjs +2 -2
  3. package/dist/assets/fragments-wordmark.d.ts.map +1 -1
  4. package/dist/assets/fragments-wordmark.js +2 -2
  5. package/dist/assets/ui.css +10468 -6909
  6. package/dist/chart.cjs +31 -26
  7. package/dist/chart.js +31 -26
  8. package/dist/codeblock.cjs +55 -29
  9. package/dist/codeblock.js +55 -29
  10. package/dist/colorpicker.cjs +5 -2
  11. package/dist/colorpicker.js +5 -2
  12. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  13. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  14. package/dist/components/Alert/Alert.module.scss.cjs +15 -12
  15. package/dist/components/Alert/Alert.module.scss.js +15 -12
  16. package/dist/components/Alert/index.cjs +7 -1
  17. package/dist/components/Alert/index.d.ts +12 -6
  18. package/dist/components/Alert/index.d.ts.map +1 -1
  19. package/dist/components/Alert/index.js +7 -1
  20. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  21. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  22. package/dist/components/AppShell/index.cjs +5 -3
  23. package/dist/components/AppShell/index.d.ts +4 -2
  24. package/dist/components/AppShell/index.d.ts.map +1 -1
  25. package/dist/components/AppShell/index.js +5 -3
  26. package/dist/components/Avatar/Avatar.module.scss.cjs +17 -14
  27. package/dist/components/Avatar/Avatar.module.scss.js +17 -14
  28. package/dist/components/Avatar/index.cjs +100 -118
  29. package/dist/components/Avatar/index.d.ts +7 -5
  30. package/dist/components/Avatar/index.d.ts.map +1 -1
  31. package/dist/components/Avatar/index.js +100 -118
  32. package/dist/components/Badge/Badge.module.scss.cjs +19 -19
  33. package/dist/components/Badge/Badge.module.scss.js +19 -19
  34. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  35. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  36. package/dist/components/Box/Box.module.scss.cjs +152 -152
  37. package/dist/components/Box/Box.module.scss.js +152 -152
  38. package/dist/components/Box/index.cjs +64 -75
  39. package/dist/components/Box/index.d.ts +16 -16
  40. package/dist/components/Box/index.d.ts.map +1 -1
  41. package/dist/components/Box/index.js +64 -75
  42. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
  43. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
  44. package/dist/components/Button/Button.module.scss.cjs +14 -14
  45. package/dist/components/Button/Button.module.scss.js +14 -14
  46. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  47. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  48. package/dist/components/Card/Card.module.scss.cjs +30 -18
  49. package/dist/components/Card/Card.module.scss.js +31 -19
  50. package/dist/components/Card/index.cjs +8 -0
  51. package/dist/components/Card/index.d.ts +12 -2
  52. package/dist/components/Card/index.d.ts.map +1 -1
  53. package/dist/components/Card/index.js +8 -0
  54. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  55. package/dist/components/Chart/Chart.module.scss.js +15 -15
  56. package/dist/components/Chart/index.d.ts +7 -7
  57. package/dist/components/Chart/index.d.ts.map +1 -1
  58. package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -15
  59. package/dist/components/Checkbox/Checkbox.module.scss.js +9 -15
  60. package/dist/components/Checkbox/index.cjs +6 -8
  61. package/dist/components/Checkbox/index.d.ts.map +1 -1
  62. package/dist/components/Checkbox/index.js +6 -8
  63. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  64. package/dist/components/Chip/Chip.module.scss.js +15 -15
  65. package/dist/components/Chip/index.cjs +6 -6
  66. package/dist/components/Chip/index.d.ts +1 -1
  67. package/dist/components/Chip/index.js +4 -4
  68. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +27 -24
  69. package/dist/components/CodeBlock/CodeBlock.module.scss.js +27 -24
  70. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  71. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  72. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  73. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  74. package/dist/components/CodeBlock/index.d.ts +17 -3
  75. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  76. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -12
  77. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -12
  78. package/dist/components/Collapsible/index.cjs +3 -2
  79. package/dist/components/Collapsible/index.d.ts +3 -3
  80. package/dist/components/Collapsible/index.d.ts.map +1 -1
  81. package/dist/components/Collapsible/index.js +3 -2
  82. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +16 -16
  83. package/dist/components/ColorPicker/ColorPicker.module.scss.js +16 -16
  84. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  85. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -27
  86. package/dist/components/Combobox/Combobox.module.scss.js +21 -27
  87. package/dist/components/Combobox/index.cjs +21 -5
  88. package/dist/components/Combobox/index.d.ts.map +1 -1
  89. package/dist/components/Combobox/index.js +21 -5
  90. package/dist/components/Command/Command.module.scss.cjs +11 -11
  91. package/dist/components/Command/Command.module.scss.js +11 -11
  92. package/dist/components/Command/index.cjs +26 -15
  93. package/dist/components/Command/index.d.ts +2 -2
  94. package/dist/components/Command/index.d.ts.map +1 -1
  95. package/dist/components/Command/index.js +26 -15
  96. package/dist/components/ConversationList/ConversationList.module.scss.cjs +11 -14
  97. package/dist/components/ConversationList/ConversationList.module.scss.js +11 -14
  98. package/dist/components/ConversationList/index.cjs +40 -44
  99. package/dist/components/ConversationList/index.d.ts +3 -3
  100. package/dist/components/ConversationList/index.d.ts.map +1 -1
  101. package/dist/components/ConversationList/index.js +40 -44
  102. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  103. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  104. package/dist/components/DataTable/DataTable.icons.js +6 -33
  105. package/dist/components/DataTable/DataTable.module.scss.cjs +32 -56
  106. package/dist/components/DataTable/DataTable.module.scss.js +32 -56
  107. package/dist/components/DataTable/index.d.ts +5 -4
  108. package/dist/components/DataTable/index.d.ts.map +1 -1
  109. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  110. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  111. package/dist/components/DatePicker/index.d.ts.map +1 -1
  112. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  113. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  114. package/dist/components/Dialog/index.cjs +11 -14
  115. package/dist/components/Dialog/index.d.ts +7 -7
  116. package/dist/components/Dialog/index.d.ts.map +1 -1
  117. package/dist/components/Dialog/index.js +11 -14
  118. package/dist/components/Drawer/Drawer.module.scss.cjs +31 -28
  119. package/dist/components/Drawer/Drawer.module.scss.js +31 -28
  120. package/dist/components/Drawer/index.cjs +1 -1
  121. package/dist/components/Drawer/index.js +1 -1
  122. package/dist/components/Editor/Editor.module.scss.cjs +23 -23
  123. package/dist/components/Editor/Editor.module.scss.js +23 -23
  124. package/dist/components/Editor/index.d.ts +10 -10
  125. package/dist/components/Editor/index.d.ts.map +1 -1
  126. package/dist/components/EmptyState/EmptyState.module.scss.cjs +15 -12
  127. package/dist/components/EmptyState/EmptyState.module.scss.js +15 -12
  128. package/dist/components/EmptyState/index.cjs +8 -6
  129. package/dist/components/EmptyState/index.d.ts +9 -4
  130. package/dist/components/EmptyState/index.d.ts.map +1 -1
  131. package/dist/components/EmptyState/index.js +8 -6
  132. package/dist/components/Field/Field.module.scss.cjs +8 -5
  133. package/dist/components/Field/Field.module.scss.js +8 -5
  134. package/dist/components/Field/index.cjs +18 -1
  135. package/dist/components/Field/index.d.ts +9 -2
  136. package/dist/components/Field/index.d.ts.map +1 -1
  137. package/dist/components/Field/index.js +18 -1
  138. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  139. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  140. package/dist/components/Form/Form.module.scss.cjs +5 -2
  141. package/dist/components/Form/Form.module.scss.js +5 -2
  142. package/dist/components/Form/index.cjs +6 -1
  143. package/dist/components/Form/index.d.ts +8 -3
  144. package/dist/components/Form/index.d.ts.map +1 -1
  145. package/dist/components/Form/index.js +6 -1
  146. package/dist/components/Grid/Grid.module.scss.cjs +54 -72
  147. package/dist/components/Grid/Grid.module.scss.js +54 -72
  148. package/dist/components/Grid/index.cjs +57 -77
  149. package/dist/components/Grid/index.d.ts +11 -11
  150. package/dist/components/Grid/index.d.ts.map +1 -1
  151. package/dist/components/Grid/index.js +57 -77
  152. package/dist/components/Header/Header.module.scss.cjs +33 -33
  153. package/dist/components/Header/Header.module.scss.js +33 -33
  154. package/dist/components/Header/index.cjs +18 -38
  155. package/dist/components/Header/index.d.ts +15 -11
  156. package/dist/components/Header/index.d.ts.map +1 -1
  157. package/dist/components/Header/index.js +18 -38
  158. package/dist/components/Icon/Icon.module.scss.cjs +29 -8
  159. package/dist/components/Icon/Icon.module.scss.js +30 -9
  160. package/dist/components/Icon/index.cjs +30 -48
  161. package/dist/components/Icon/index.d.ts +6 -6
  162. package/dist/components/Icon/index.d.ts.map +1 -1
  163. package/dist/components/Icon/index.js +30 -48
  164. package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
  165. package/dist/components/IconButton/IconButton.module.scss.js +8 -8
  166. package/dist/components/IconButton/index.cjs +2 -1
  167. package/dist/components/IconButton/index.d.ts.map +1 -1
  168. package/dist/components/IconButton/index.js +2 -1
  169. package/dist/components/Image/Image.module.scss.cjs +27 -27
  170. package/dist/components/Image/Image.module.scss.js +27 -27
  171. package/dist/components/Input/Input.module.scss.cjs +19 -25
  172. package/dist/components/Input/Input.module.scss.js +19 -25
  173. package/dist/components/Input/index.cjs +1 -2
  174. package/dist/components/Input/index.d.ts.map +1 -1
  175. package/dist/components/Input/index.js +1 -2
  176. package/dist/components/Link/Link.module.scss.cjs +14 -10
  177. package/dist/components/Link/Link.module.scss.js +14 -10
  178. package/dist/components/Link/index.d.ts +1 -1
  179. package/dist/components/Link/index.d.ts.map +1 -1
  180. package/dist/components/List/List.module.scss.cjs +19 -19
  181. package/dist/components/List/List.module.scss.js +19 -19
  182. package/dist/components/List/index.cjs +4 -7
  183. package/dist/components/List/index.d.ts.map +1 -1
  184. package/dist/components/List/index.js +4 -7
  185. package/dist/components/Listbox/Listbox.module.scss.cjs +9 -9
  186. package/dist/components/Listbox/Listbox.module.scss.js +9 -9
  187. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  188. package/dist/components/Loading/Loading.module.scss.js +34 -34
  189. package/dist/components/Loading/index.cjs +39 -67
  190. package/dist/components/Loading/index.d.ts +6 -6
  191. package/dist/components/Loading/index.d.ts.map +1 -1
  192. package/dist/components/Loading/index.js +39 -67
  193. package/dist/components/Main/Main.module.scss.cjs +7 -7
  194. package/dist/components/Main/Main.module.scss.js +7 -7
  195. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  196. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  197. package/dist/components/Markdown/index.d.ts +2 -2
  198. package/dist/components/Markdown/index.d.ts.map +1 -1
  199. package/dist/components/Menu/Menu.module.scss.cjs +16 -16
  200. package/dist/components/Menu/Menu.module.scss.js +16 -16
  201. package/dist/components/Menu/index.cjs +19 -61
  202. package/dist/components/Menu/index.d.ts +10 -10
  203. package/dist/components/Menu/index.d.ts.map +1 -1
  204. package/dist/components/Menu/index.js +19 -61
  205. package/dist/components/Message/Message.module.scss.cjs +18 -21
  206. package/dist/components/Message/Message.module.scss.js +18 -21
  207. package/dist/components/Message/index.cjs +15 -2
  208. package/dist/components/Message/index.d.ts.map +1 -1
  209. package/dist/components/Message/index.js +15 -2
  210. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
  211. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
  212. package/dist/components/NavigationMenu/index.cjs +32 -15
  213. package/dist/components/NavigationMenu/index.d.ts +12 -6
  214. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  215. package/dist/components/NavigationMenu/index.js +32 -15
  216. package/dist/components/Pagination/Pagination.module.scss.cjs +18 -9
  217. package/dist/components/Pagination/Pagination.module.scss.js +19 -10
  218. package/dist/components/Pagination/index.cjs +5 -2
  219. package/dist/components/Pagination/index.d.ts +3 -1
  220. package/dist/components/Pagination/index.d.ts.map +1 -1
  221. package/dist/components/Pagination/index.js +5 -2
  222. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  223. package/dist/components/Popover/Popover.module.scss.js +10 -10
  224. package/dist/components/Progress/Progress.module.scss.cjs +29 -32
  225. package/dist/components/Progress/Progress.module.scss.js +29 -32
  226. package/dist/components/Progress/geometry.cjs +30 -0
  227. package/dist/components/Progress/geometry.d.ts +8 -0
  228. package/dist/components/Progress/geometry.d.ts.map +1 -0
  229. package/dist/components/Progress/geometry.js +30 -0
  230. package/dist/components/Progress/index.cjs +40 -29
  231. package/dist/components/Progress/index.d.ts +4 -3
  232. package/dist/components/Progress/index.d.ts.map +1 -1
  233. package/dist/components/Progress/index.js +40 -29
  234. package/dist/components/Prompt/Prompt.module.scss.cjs +29 -29
  235. package/dist/components/Prompt/Prompt.module.scss.js +29 -29
  236. package/dist/components/Prompt/index.cjs +5 -4
  237. package/dist/components/Prompt/index.d.ts.map +1 -1
  238. package/dist/components/Prompt/index.js +5 -4
  239. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -21
  240. package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -21
  241. package/dist/components/RadioGroup/index.cjs +7 -6
  242. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  243. package/dist/components/RadioGroup/index.js +7 -6
  244. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +7 -22
  245. package/dist/components/ScrollArea/ScrollArea.module.scss.js +7 -22
  246. package/dist/components/ScrollArea/index.cjs +66 -42
  247. package/dist/components/ScrollArea/index.d.ts +6 -5
  248. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  249. package/dist/components/ScrollArea/index.js +66 -42
  250. package/dist/components/ScrollArea/scroll-state.cjs +58 -0
  251. package/dist/components/ScrollArea/scroll-state.d.ts +16 -0
  252. package/dist/components/ScrollArea/scroll-state.d.ts.map +1 -0
  253. package/dist/components/ScrollArea/scroll-state.js +58 -0
  254. package/dist/components/Select/Select.module.scss.cjs +21 -21
  255. package/dist/components/Select/Select.module.scss.js +21 -21
  256. package/dist/components/Select/index.cjs +3 -2
  257. package/dist/components/Select/index.d.ts.map +1 -1
  258. package/dist/components/Select/index.js +3 -2
  259. package/dist/components/Separator/Separator.module.scss.cjs +13 -10
  260. package/dist/components/Separator/Separator.module.scss.js +13 -10
  261. package/dist/components/Separator/index.cjs +37 -38
  262. package/dist/components/Separator/index.d.ts +4 -4
  263. package/dist/components/Separator/index.d.ts.map +1 -1
  264. package/dist/components/Separator/index.js +37 -38
  265. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  266. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  267. package/dist/components/Sidebar/index.cjs +17 -38
  268. package/dist/components/Sidebar/index.d.ts +23 -18
  269. package/dist/components/Sidebar/index.d.ts.map +1 -1
  270. package/dist/components/Sidebar/index.js +17 -38
  271. package/dist/components/Skeleton/Skeleton.module.scss.cjs +56 -40
  272. package/dist/components/Skeleton/Skeleton.module.scss.js +56 -40
  273. package/dist/components/Skeleton/index.cjs +41 -55
  274. package/dist/components/Skeleton/index.d.ts +7 -7
  275. package/dist/components/Skeleton/index.d.ts.map +1 -1
  276. package/dist/components/Skeleton/index.js +41 -55
  277. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  278. package/dist/components/Slider/Slider.module.scss.js +12 -12
  279. package/dist/components/Stack/Stack.module.scss.cjs +25 -45
  280. package/dist/components/Stack/Stack.module.scss.js +25 -45
  281. package/dist/components/Stack/index.cjs +106 -101
  282. package/dist/components/Stack/index.d.ts +7 -7
  283. package/dist/components/Stack/index.d.ts.map +1 -1
  284. package/dist/components/Stack/index.js +106 -101
  285. package/dist/components/Switch/Switch.module.scss.cjs +32 -0
  286. package/dist/components/Switch/Switch.module.scss.js +32 -0
  287. package/dist/components/{Toggle → Switch}/index.cjs +9 -14
  288. package/dist/components/Switch/index.d.ts +37 -1
  289. package/dist/components/Switch/index.d.ts.map +1 -1
  290. package/dist/components/{Toggle → Switch}/index.js +5 -10
  291. package/dist/components/Table/Table.module.scss.cjs +21 -30
  292. package/dist/components/Table/Table.module.scss.js +21 -30
  293. package/dist/components/Table/index.d.ts +6 -5
  294. package/dist/components/Table/index.d.ts.map +1 -1
  295. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  296. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  297. package/dist/components/TableOfContents/index.cjs +13 -9
  298. package/dist/components/TableOfContents/index.d.ts +5 -3
  299. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  300. package/dist/components/TableOfContents/index.js +13 -9
  301. package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
  302. package/dist/components/Tabs/Tabs.module.scss.js +12 -12
  303. package/dist/components/Tabs/index.cjs +28 -8
  304. package/dist/components/Tabs/index.d.ts.map +1 -1
  305. package/dist/components/Tabs/index.js +28 -8
  306. package/dist/components/Text/Text.module.scss.cjs +105 -57
  307. package/dist/components/Text/Text.module.scss.js +105 -57
  308. package/dist/components/Text/index.cjs +49 -33
  309. package/dist/components/Text/index.d.ts +30 -19
  310. package/dist/components/Text/index.d.ts.map +1 -1
  311. package/dist/components/Text/index.js +49 -33
  312. package/dist/components/Textarea/Textarea.module.scss.cjs +26 -23
  313. package/dist/components/Textarea/Textarea.module.scss.js +26 -23
  314. package/dist/components/Textarea/index.cjs +5 -10
  315. package/dist/components/Textarea/index.d.ts.map +1 -1
  316. package/dist/components/Textarea/index.js +5 -10
  317. package/dist/components/Theme/context.cjs +39 -0
  318. package/dist/components/Theme/context.d.ts +21 -0
  319. package/dist/components/Theme/context.d.ts.map +1 -0
  320. package/dist/components/Theme/context.js +22 -0
  321. package/dist/components/Theme/index.cjs +16 -210
  322. package/dist/components/Theme/index.d.ts +4 -37
  323. package/dist/components/Theme/index.d.ts.map +1 -1
  324. package/dist/components/Theme/index.js +11 -205
  325. package/dist/components/{Theme → ThemeToggle}/ThemeToggle.module.scss.cjs +9 -6
  326. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +26 -0
  327. package/dist/components/ThemeToggle/index.cjs +140 -0
  328. package/dist/components/ThemeToggle/index.d.ts +26 -0
  329. package/dist/components/ThemeToggle/index.d.ts.map +1 -0
  330. package/dist/components/ThemeToggle/index.js +140 -0
  331. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
  332. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
  333. package/dist/components/ThinkingIndicator/index.cjs +34 -41
  334. package/dist/components/ThinkingIndicator/index.d.ts +4 -4
  335. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  336. package/dist/components/ThinkingIndicator/index.js +34 -41
  337. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  338. package/dist/components/Toast/Toast.module.scss.js +20 -20
  339. package/dist/components/Toggle/index.d.ts +2 -42
  340. package/dist/components/Toggle/index.d.ts.map +1 -1
  341. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +20 -20
  342. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +20 -20
  343. package/dist/components/ToggleGroup/index.cjs +3 -2
  344. package/dist/components/ToggleGroup/index.d.ts +2 -1
  345. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  346. package/dist/components/ToggleGroup/index.js +3 -2
  347. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  348. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  349. package/dist/components/Tooltip/index.cjs +24 -40
  350. package/dist/components/Tooltip/index.d.ts +4 -4
  351. package/dist/components/Tooltip/index.d.ts.map +1 -1
  352. package/dist/components/Tooltip/index.js +24 -40
  353. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  354. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  355. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  356. package/dist/data-table.cjs +14 -10
  357. package/dist/data-table.js +14 -10
  358. package/dist/datepicker.cjs +5 -3
  359. package/dist/datepicker.js +5 -3
  360. package/dist/editor.cjs +68 -28
  361. package/dist/editor.js +68 -28
  362. package/dist/index.cjs +101 -99
  363. package/dist/index.d.ts +3 -3
  364. package/dist/index.d.ts.map +1 -1
  365. package/dist/index.js +6 -4
  366. package/dist/markdown.cjs +21 -29
  367. package/dist/markdown.js +22 -30
  368. package/dist/measurements/generated.cjs +304 -0
  369. package/dist/measurements/generated.d.ts +268 -0
  370. package/dist/measurements/generated.d.ts.map +1 -0
  371. package/dist/measurements/generated.js +304 -0
  372. package/dist/measurements/index.d.ts +2 -0
  373. package/dist/measurements/index.d.ts.map +1 -0
  374. package/dist/measurements.cjs +6 -0
  375. package/dist/measurements.js +6 -0
  376. package/dist/recipes/popup.cjs +14 -0
  377. package/dist/recipes/popup.d.ts +4 -0
  378. package/dist/recipes/popup.d.ts.map +1 -0
  379. package/dist/recipes/popup.js +14 -0
  380. package/dist/recipes/table-chrome.cjs +18 -0
  381. package/dist/recipes/table-chrome.d.ts +10 -0
  382. package/dist/recipes/table-chrome.d.ts.map +1 -0
  383. package/dist/recipes/table-chrome.js +18 -0
  384. package/dist/table.cjs +5 -2
  385. package/dist/table.js +5 -2
  386. package/dist/utils/a11y.cjs +5 -2
  387. package/dist/utils/a11y.d.ts +5 -5
  388. package/dist/utils/a11y.d.ts.map +1 -1
  389. package/dist/utils/a11y.js +5 -2
  390. package/dist/utils/canonical-stamp.cjs +2 -8
  391. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  392. package/dist/utils/canonical-stamp.js +1 -7
  393. package/dist/utils/css-warning.cjs +1 -1
  394. package/dist/utils/css-warning.js +1 -1
  395. package/dist/utils/env.cjs +17 -0
  396. package/dist/utils/env.d.ts +3 -0
  397. package/dist/utils/env.d.ts.map +1 -0
  398. package/dist/utils/env.js +17 -0
  399. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  400. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  401. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  402. package/dist/utils/keyboard-shortcuts.js +3 -10
  403. package/dist/utils/layout-spacing.cjs +27 -0
  404. package/dist/utils/layout-spacing.d.ts +5 -0
  405. package/dist/utils/layout-spacing.d.ts.map +1 -0
  406. package/dist/utils/layout-spacing.js +27 -0
  407. package/dist/utils/seed-derivation.cjs +14 -48
  408. package/dist/utils/seed-derivation.d.ts +4 -3
  409. package/dist/utils/seed-derivation.d.ts.map +1 -1
  410. package/dist/utils/seed-derivation.js +14 -48
  411. package/dist/utils/theme-presets.cjs +1 -0
  412. package/dist/utils/theme-presets.d.ts +3 -2
  413. package/dist/utils/theme-presets.d.ts.map +1 -1
  414. package/dist/utils/theme-presets.js +1 -0
  415. package/fragments.json +1 -1
  416. package/package.json +25 -4
  417. package/src/assets/fragments-logo.tsx +2 -2
  418. package/src/assets/fragments-wordmark.tsx +4 -2
  419. package/src/components/Accordion/Accordion.contract.json +24 -48
  420. package/src/components/Accordion/Accordion.module.scss +31 -52
  421. package/src/components/Alert/Alert.contract.json +37 -53
  422. package/src/components/Alert/Alert.module.scss +52 -44
  423. package/src/components/Alert/index.tsx +55 -29
  424. package/src/components/AppShell/AppShell.contract.json +34 -51
  425. package/src/components/AppShell/AppShell.module.scss +59 -43
  426. package/src/components/AppShell/index.tsx +8 -4
  427. package/src/components/Avatar/Avatar.contract.json +31 -48
  428. package/src/components/Avatar/Avatar.module.scss +25 -60
  429. package/src/components/Avatar/index.tsx +152 -146
  430. package/src/components/Badge/Badge.contract.json +37 -42
  431. package/src/components/Badge/Badge.module.scss +59 -47
  432. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  433. package/src/components/BentoGrid/BentoGrid.module.scss +11 -32
  434. package/src/components/Box/Box.contract.json +40 -148
  435. package/src/components/Box/Box.module.scss +253 -81
  436. package/src/components/Box/index.tsx +92 -99
  437. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  438. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +19 -15
  439. package/src/components/Button/Button.module.scss +60 -64
  440. package/src/components/ButtonGroup/ButtonGroup.contract.json +32 -47
  441. package/src/components/ButtonGroup/ButtonGroup.module.scss +5 -5
  442. package/src/components/Card/Card.consumer-fixture.module.scss +8 -0
  443. package/src/components/Card/Card.module.scss +284 -167
  444. package/src/components/Card/index.tsx +21 -2
  445. package/src/components/Chart/Chart.contract.json +21 -29
  446. package/src/components/Chart/Chart.module.scss +28 -29
  447. package/src/components/Chart/index.tsx +72 -55
  448. package/src/components/Checkbox/Checkbox.contract.json +24 -24
  449. package/src/components/Checkbox/Checkbox.module.scss +75 -87
  450. package/src/components/Checkbox/index.tsx +8 -11
  451. package/src/components/Chip/Chip.contract.json +36 -42
  452. package/src/components/Chip/Chip.module.scss +25 -36
  453. package/src/components/Chip/index.tsx +5 -5
  454. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  455. package/src/components/CodeBlock/CodeBlock.module.scss +129 -217
  456. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  457. package/src/components/CodeBlock/index.tsx +91 -35
  458. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  459. package/src/components/Collapsible/Collapsible.module.scss +29 -63
  460. package/src/components/Collapsible/index.tsx +22 -26
  461. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  462. package/src/components/ColorPicker/ColorPicker.module.scss +54 -33
  463. package/src/components/ColorPicker/index.tsx +7 -2
  464. package/src/components/Combobox/Combobox.contract.json +36 -37
  465. package/src/components/Combobox/Combobox.module.scss +61 -74
  466. package/src/components/Combobox/index.tsx +34 -6
  467. package/src/components/Command/Command.contract.json +21 -43
  468. package/src/components/Command/Command.module.scss +47 -77
  469. package/src/components/Command/index.tsx +58 -47
  470. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  471. package/src/components/ConversationList/ConversationList.module.scss +20 -78
  472. package/src/components/ConversationList/index.tsx +55 -59
  473. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  474. package/src/components/DataTable/DataTable.module.scss +81 -217
  475. package/src/components/DataTable/index.tsx +28 -32
  476. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  477. package/src/components/DatePicker/DatePicker.module.scss +66 -38
  478. package/src/components/DatePicker/index.tsx +7 -3
  479. package/src/components/Dialog/Dialog.module.scss +45 -69
  480. package/src/components/Dialog/index.tsx +47 -37
  481. package/src/components/Drawer/Drawer.contract.json +22 -36
  482. package/src/components/Drawer/Drawer.module.scss +93 -99
  483. package/src/components/Drawer/index.tsx +1 -1
  484. package/src/components/Editor/Editor.contract.json +31 -48
  485. package/src/components/Editor/Editor.module.scss +137 -220
  486. package/src/components/Editor/index.tsx +240 -179
  487. package/src/components/EmptyState/EmptyState.contract.json +31 -43
  488. package/src/components/EmptyState/EmptyState.module.scss +45 -84
  489. package/src/components/EmptyState/index.tsx +48 -23
  490. package/src/components/Field/Field.contract.json +28 -45
  491. package/src/components/Field/Field.module.scss +9 -11
  492. package/src/components/Field/index.tsx +31 -1
  493. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  494. package/src/components/Fieldset/Fieldset.module.scss +23 -8
  495. package/src/components/Form/Form.contract.json +27 -40
  496. package/src/components/Form/Form.module.scss +9 -4
  497. package/src/components/Form/index.tsx +22 -7
  498. package/src/components/Grid/Grid.contract.json +28 -64
  499. package/src/components/Grid/Grid.module.scss +159 -63
  500. package/src/components/Grid/index.tsx +114 -133
  501. package/src/components/Header/Header.contract.json +31 -67
  502. package/src/components/Header/Header.module.scss +56 -48
  503. package/src/components/Header/index.tsx +134 -121
  504. package/src/components/Icon/Icon.contract.json +22 -62
  505. package/src/components/Icon/Icon.module.scss +16 -0
  506. package/src/components/Icon/index.tsx +74 -86
  507. package/src/components/IconButton/IconButton.contract.json +34 -18
  508. package/src/components/IconButton/IconButton.module.scss +15 -26
  509. package/src/components/IconButton/index.tsx +2 -1
  510. package/src/components/Image/Image.contract.json +23 -56
  511. package/src/components/Input/Input.contract.json +26 -32
  512. package/src/components/Input/Input.module.scss +69 -56
  513. package/src/components/Input/index.tsx +1 -2
  514. package/src/components/Link/Link.contract.json +32 -52
  515. package/src/components/Link/Link.module.scss +29 -13
  516. package/src/components/Link/index.tsx +1 -1
  517. package/src/components/List/List.contract.json +23 -52
  518. package/src/components/List/List.module.scss +16 -21
  519. package/src/components/List/index.tsx +4 -10
  520. package/src/components/Listbox/Listbox.contract.json +21 -37
  521. package/src/components/Listbox/Listbox.module.scss +26 -54
  522. package/src/components/Loading/Loading.contract.json +37 -61
  523. package/src/components/Loading/Loading.module.scss +33 -40
  524. package/src/components/Loading/index.tsx +68 -97
  525. package/src/components/Main/Main.contract.json +17 -9
  526. package/src/components/Main/Main.module.scss +3 -5
  527. package/src/components/Markdown/Markdown.contract.json +22 -43
  528. package/src/components/Markdown/Markdown.module.scss +72 -182
  529. package/src/components/Markdown/index.tsx +50 -51
  530. package/src/components/Menu/Menu.contract.json +25 -41
  531. package/src/components/Menu/Menu.module.scss +63 -133
  532. package/src/components/Menu/index.tsx +57 -89
  533. package/src/components/Message/Message.contract.json +29 -52
  534. package/src/components/Message/Message.module.scss +60 -143
  535. package/src/components/Message/index.tsx +16 -6
  536. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  537. package/src/components/NavigationMenu/NavigationMenu.module.scss +123 -71
  538. package/src/components/NavigationMenu/index.tsx +105 -81
  539. package/src/components/Pagination/Pagination.contract.json +22 -40
  540. package/src/components/Pagination/Pagination.module.scss +34 -27
  541. package/src/components/Pagination/index.tsx +7 -2
  542. package/src/components/Popover/Popover.contract.json +24 -46
  543. package/src/components/Popover/Popover.module.scss +43 -78
  544. package/src/components/Progress/Progress.contract.json +32 -28
  545. package/src/components/Progress/Progress.module.scss +64 -43
  546. package/src/components/Progress/geometry.ts +41 -0
  547. package/src/components/Progress/index.tsx +44 -30
  548. package/src/components/Prompt/Prompt.contract.json +31 -47
  549. package/src/components/Prompt/Prompt.module.scss +58 -87
  550. package/src/components/Prompt/index.tsx +6 -5
  551. package/src/components/RadioGroup/RadioGroup.contract.json +23 -24
  552. package/src/components/RadioGroup/RadioGroup.module.scss +63 -83
  553. package/src/components/RadioGroup/index.tsx +7 -9
  554. package/src/components/ScrollArea/ScrollArea.contract.json +23 -40
  555. package/src/components/ScrollArea/ScrollArea.module.scss +123 -97
  556. package/src/components/ScrollArea/index.tsx +85 -67
  557. package/src/components/ScrollArea/scroll-state.ts +87 -0
  558. package/src/components/Select/Select.module.scss +55 -43
  559. package/src/components/Select/index.tsx +6 -2
  560. package/src/components/Separator/Separator.contract.json +24 -48
  561. package/src/components/Separator/Separator.module.scss +29 -19
  562. package/src/components/Separator/index.tsx +55 -51
  563. package/src/components/Sidebar/Sidebar.contract.json +42 -62
  564. package/src/components/Sidebar/Sidebar.module.scss +117 -106
  565. package/src/components/Sidebar/index.tsx +169 -162
  566. package/src/components/Skeleton/Skeleton.contract.json +28 -54
  567. package/src/components/Skeleton/Skeleton.module.scss +51 -34
  568. package/src/components/Skeleton/index.tsx +65 -72
  569. package/src/components/Slider/Slider.contract.json +27 -39
  570. package/src/components/Slider/Slider.module.scss +33 -27
  571. package/src/components/Stack/Stack.contract.json +29 -56
  572. package/src/components/Stack/Stack.module.scss +110 -38
  573. package/src/components/Stack/index.tsx +157 -127
  574. package/src/components/{Toggle/Toggle.contract.json → Switch/Switch.contract.json} +34 -47
  575. package/src/components/Switch/Switch.module.scss +255 -0
  576. package/src/components/{Toggle → Switch}/index.tsx +5 -21
  577. package/src/components/Table/Table.contract.json +28 -46
  578. package/src/components/Table/Table.module.scss +50 -129
  579. package/src/components/Table/index.tsx +13 -6
  580. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  581. package/src/components/TableOfContents/TableOfContents.module.scss +35 -182
  582. package/src/components/TableOfContents/index.tsx +26 -9
  583. package/src/components/Tabs/Tabs.contract.json +24 -45
  584. package/src/components/Tabs/Tabs.module.scss +28 -23
  585. package/src/components/Tabs/index.tsx +17 -5
  586. package/src/components/Text/Text.contract.json +30 -72
  587. package/src/components/Text/Text.module.scss +43 -7
  588. package/src/components/Text/index.tsx +136 -63
  589. package/src/components/Textarea/Textarea.contract.json +25 -43
  590. package/src/components/Textarea/Textarea.module.scss +58 -40
  591. package/src/components/Textarea/index.tsx +5 -12
  592. package/src/components/Theme/Theme.contract.json +32 -51
  593. package/src/components/Theme/context.ts +42 -0
  594. package/src/components/Theme/index.tsx +16 -310
  595. package/src/components/ThemeToggle/ThemeToggle.module.scss +89 -0
  596. package/src/components/ThemeToggle/index.tsx +180 -0
  597. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +23 -40
  598. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +24 -19
  599. package/src/components/ThinkingIndicator/index.tsx +44 -54
  600. package/src/components/Toast/Toast.contract.json +35 -61
  601. package/src/components/Toast/Toast.module.scss +62 -139
  602. package/src/components/Toggle/index.ts +7 -0
  603. package/src/components/ToggleGroup/ToggleGroup.contract.json +40 -68
  604. package/src/components/ToggleGroup/ToggleGroup.module.scss +166 -89
  605. package/src/components/ToggleGroup/index.tsx +5 -3
  606. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  607. package/src/components/Tooltip/Tooltip.module.scss +23 -39
  608. package/src/components/Tooltip/index.tsx +19 -24
  609. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  610. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +3 -0
  611. package/src/components/VisuallyHidden/index.tsx +5 -5
  612. package/src/index.ts +4 -3
  613. package/src/measurements/MeasurementTargets.module.scss +229 -0
  614. package/src/measurements/generated.ts +324 -0
  615. package/src/measurements/index.ts +8 -0
  616. package/src/measurements/measurements.json +368 -0
  617. package/src/recipes/_action.scss +138 -0
  618. package/src/recipes/_boolean-range.scss +116 -0
  619. package/src/recipes/_feedback.scss +171 -0
  620. package/src/recipes/_field.scss +102 -0
  621. package/src/recipes/_layout.scss +74 -0
  622. package/src/recipes/_navigation.scss +110 -0
  623. package/src/recipes/_overlay.scss +191 -0
  624. package/src/recipes/_popup.scss +102 -0
  625. package/src/recipes/_prose.scss +182 -0
  626. package/src/recipes/_representation.scss +193 -0
  627. package/src/recipes/_segmented.scss +26 -0
  628. package/src/recipes/_surface.scss +13 -0
  629. package/src/recipes/_table-chrome.scss +119 -0
  630. package/src/recipes/_target.scss +31 -0
  631. package/src/recipes/_typography.scss +38 -0
  632. package/src/recipes/popup.ts +12 -0
  633. package/src/recipes/table-chrome.ts +30 -0
  634. package/src/scss.d.ts +1 -1
  635. package/src/styles/globals.scss +21 -20
  636. package/src/tokens/_component-properties.scss +2 -2
  637. package/src/tokens/_computed.scss +14 -25
  638. package/src/tokens/_density.scss +41 -132
  639. package/src/tokens/_derive.scss +112 -210
  640. package/src/tokens/_measurements.catalog.generated.css +96 -0
  641. package/src/tokens/_measurements.generated.scss +617 -0
  642. package/src/tokens/_mixins.scss +7 -284
  643. package/src/tokens/_palettes.scss +39 -167
  644. package/src/tokens/_property-registrations.scss +96 -92
  645. package/src/tokens/_radius.scss +16 -70
  646. package/src/tokens/_seeds.scss +24 -23
  647. package/src/tokens/_variables.scss +338 -178
  648. package/src/utils/a11y.tsx +69 -69
  649. package/src/utils/aria.ts +3 -3
  650. package/src/utils/canonical-stamp.ts +2 -12
  651. package/src/utils/css-warning.ts +7 -7
  652. package/src/utils/env.ts +25 -0
  653. package/src/utils/keyboard-shortcuts.ts +131 -126
  654. package/src/utils/layout-spacing.ts +31 -0
  655. package/src/utils/seed-derivation.ts +144 -178
  656. package/src/utils/theme-presets.ts +58 -30
  657. package/dist/components/Theme/ThemeToggle.module.scss.js +0 -23
  658. package/dist/components/Toggle/Toggle.module.scss.cjs +0 -44
  659. package/dist/components/Toggle/Toggle.module.scss.js +0 -44
  660. package/src/components/Button/Button.contract.json +0 -218
  661. package/src/components/Card/Card.contract.json +0 -175
  662. package/src/components/DataTable/DataTable.contract.json +0 -302
  663. package/src/components/Dialog/Dialog.contract.json +0 -159
  664. package/src/components/Select/Select.contract.json +0 -259
  665. package/src/components/Switch/index.ts +0 -3
  666. package/src/components/Theme/ThemeToggle.module.scss +0 -91
  667. package/src/components/Toggle/Toggle.module.scss +0 -244
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "DatePicker",
4
- "description": "Date picker with calendar dropdown for selecting single dates or date ranges. Built on react-day-picker with seed-based theming.",
5
- "category": "forms",
4
+ "description": "Selects a date or date range from a calendar.",
5
+ "category": "inputs",
6
6
  "tags": ["date", "picker", "calendar", "range", "form", "input"],
7
7
  "status": "stable",
8
8
  "dependencies": [
@@ -165,75 +165,74 @@
165
165
  },
166
166
  "usage": {
167
167
  "when": [
168
- "Selecting a single date from a calendar",
169
- "Selecting a date range (start/end)",
170
- "Date inputs in forms",
171
- "Filtering by date or date range"
168
+ "A date the user picks off a calendar",
169
+ "A start and end date together",
170
+ "Filtering by date"
172
171
  ],
173
172
  "whenNot": [
174
- "Time-only input - use a dedicated TimePicker",
175
- "Selecting from a small set of known dates - use Select",
176
- "Free-form date entry - use Input with date masking"
173
+ "Time on its own (use a dedicated TimePicker)",
174
+ "A handful of known dates (use Select)",
175
+ "Typed date entry (use Input with a date mask)"
177
176
  ],
178
177
  "guidelines": [
179
- "Use range mode with numberOfMonths={2} for date range selection",
180
- "Use size=\"sm\" in dense toolbars so DatePicker aligns with Input, Select, Combobox, Button, and IconButton",
181
- "Add presets for common ranges (Today, Last 7 days, Last 30 days)",
182
- "Use disabledDates to prevent selecting past dates or unavailable dates",
183
- "Provide a meaningful placeholder",
184
- "DatePicker.Trigger forwards button props and defaults to type=\"button\" (safe inside forms)"
178
+ "Pair range mode with numberOfMonths={2} so both ends are visible",
179
+ "size=\"sm\" lines the trigger up with other dense toolbar controls",
180
+ "Offer presets for the common ranges: Today, Last 7 days, Last 30 days",
181
+ "disabledDates blocks past or unavailable days before the user tries",
182
+ "Placeholder names the date, not the action",
183
+ "DatePicker.Trigger defaults to type=\"button\", so it is safe inside a form"
185
184
  ],
186
185
  "accessibility": [
187
- "Full keyboard navigation within the calendar grid",
188
- "Arrow keys navigate between days",
186
+ "The calendar grid is fully keyboard navigable",
187
+ "Arrow keys move between days",
189
188
  "Escape closes the calendar",
190
- "Focus returns to trigger on close"
189
+ "Focus returns to the trigger on close"
191
190
  ]
192
191
  },
193
192
  "examples": [
194
193
  {
195
194
  "name": "Default",
196
- "description": "Single date picker with default settings",
195
+ "description": "Trigger opens one month; today is outlined.",
197
196
  "code": "<StatefulDatePicker placeholder=\"Pick a date\">\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
198
197
  },
199
198
  {
200
199
  "name": "Small Trigger",
201
- "description": "Dense toolbar date picker aligned to other small controls",
200
+ "description": "Matches the height of other sm toolbar controls.",
202
201
  "code": "<StatefulDatePicker size=\"sm\" placeholder=\"Last scanned\">\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
203
202
  },
204
203
  {
205
204
  "name": "Date Range",
206
- "description": "Range mode with dual months",
205
+ "description": "Two months side by side so both ends of the range are visible.",
207
206
  "code": "<StatefulRangePicker placeholder=\"Select date range\" numberOfMonths={2}>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulRangePicker>"
208
207
  },
209
208
  {
210
209
  "name": "Multi-Month",
211
- "description": "Single date with 3 months visible",
210
+ "description": "Three months at once, for dates far from today.",
212
211
  "code": "<StatefulDatePicker placeholder=\"Pick a date\" numberOfMonths={3}>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
213
212
  },
214
213
  {
215
214
  "name": "Disabled Dates",
216
- "description": "Past dates disabled",
215
+ "description": "Everything before today is greyed out and unclickable.",
217
216
  "code": "<StatefulDatePicker\n placeholder=\"Select a future date\"\n disabledDates={{ before: new Date() }}\n>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
218
217
  },
219
218
  {
220
219
  "name": "With Presets",
221
- "description": "Range picker with sidebar preset buttons",
220
+ "description": "Shortcut buttons beside the calendar skip the common ranges.",
222
221
  "code": "<StatefulRangePicker placeholder=\"Select date range\" numberOfMonths={2}>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <div style={{ display: 'flex', gap: '1rem' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.25rem', minWidth: '8rem' }}>\n <DatePicker.Preset range={{ from: today, to: today }}>Today</DatePicker.Preset>\n <DatePicker.Preset range={{ from: subDays(today, 7), to: today }}>Last 7 days</DatePicker.Preset>\n <DatePicker.Preset range={{ from: subDays(today, 30), to: today }}>Last 30 days</DatePicker.Preset>\n <DatePicker.Preset range={{ from: subDays(today, 90), to: today }}>Last 90 days</DatePicker.Preset>\n </div>\n <DatePicker.Calendar />\n </div>\n </DatePicker.Content>\n</StatefulRangePicker>"
223
222
  },
224
223
  {
225
224
  "name": "With Label and Helper Text",
226
- "description": "Date picker with built-in label and helper text",
227
- "code": "<StatefulDatePicker placeholder=\"Pick a date\">\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
225
+ "description": "Label above the trigger, supporting text below it.",
226
+ "code": "<StatefulDatePicker\n label=\"Renewal date\"\n placeholder=\"Pick a date\"\n helperText=\"Billing restarts on this day each month.\"\n>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
228
227
  },
229
228
  {
230
229
  "name": "Error State",
231
- "description": "Validation error with message",
230
+ "description": "Red border on the trigger, and the reason below it.",
232
231
  "code": "<DatePicker\n label=\"Start Date\"\n placeholder=\"Pick a date\"\n error=\"Please select a start date\"\n>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</DatePicker>"
233
232
  },
234
233
  {
235
234
  "name": "Disabled",
236
- "description": "Disabled date picker",
235
+ "description": "Dimmed; the calendar will not open.",
237
236
  "code": "<StatefulDatePicker placeholder=\"Pick a date\" disabled>\n <DatePicker.Trigger />\n <DatePicker.Content>\n <DatePicker.Calendar />\n </DatePicker.Content>\n</StatefulDatePicker>"
238
237
  }
239
238
  ],
@@ -1,8 +1,27 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/action";
4
+ @use "../../recipes/field";
5
+ @use "../../recipes/layout";
6
+ @use "../../recipes/popup";
7
+ @use "../../recipes/typography";
3
8
 
4
- // Form field wrapper (label + helper + error)
5
- @include form-field-wrapper;
9
+ .wrapper {
10
+ @include field.wrapper;
11
+ }
12
+
13
+ .label {
14
+ @include field.label;
15
+ }
16
+
17
+ .helper {
18
+ @include field.helper;
19
+ }
20
+
21
+ .helperError,
22
+ .errorMessage {
23
+ @include field.error;
24
+ }
6
25
 
7
26
  // ============================================
8
27
  // Trigger
@@ -11,28 +30,37 @@
11
30
  .trigger {
12
31
  @include button-reset;
13
32
  @include interactive-base;
14
- @include text-base;
15
- @include field-shell;
16
- @include control-size("md", "input");
33
+ @include field.size("md");
34
+ @include field.shell;
17
35
 
18
36
  display: inline-flex;
19
37
  align-items: center;
20
- gap: var(--fui-space-2, $fui-space-2);
38
+ gap: action.gap("md");
21
39
  width: 100%;
22
- min-width: 10rem;
40
+ min-width: layout.measure("field-minimum");
23
41
  text-align: left;
24
42
 
25
43
  &[data-popup-open] {
26
44
  border-color: var(--fui-field-border-focus, $fui-color-accent);
27
45
  }
46
+
47
+ // Error border, matching Input. Set from the wrapper's data-invalid so the
48
+ // control reads as failed, not just the message beneath it.
49
+ .wrapper[data-invalid] & {
50
+ border-color: var(--fui-color-danger-text, $fui-color-danger-text);
51
+ }
28
52
  }
29
53
 
30
54
  .triggerSm {
31
- @include control-size("sm", "input");
55
+ @include field.size("sm");
56
+
57
+ gap: action.gap("sm");
32
58
  }
33
59
 
34
60
  .triggerLg {
35
- @include control-size("lg", "input");
61
+ @include field.size("lg");
62
+
63
+ gap: action.gap("lg");
36
64
  }
37
65
 
38
66
  .triggerIcon {
@@ -42,11 +70,18 @@
42
70
  color: var(--fui-text-secondary, $fui-text-secondary);
43
71
 
44
72
  svg {
45
- width: var(--fui-icon-sm, $fui-icon-sm);
46
- height: var(--fui-icon-sm, $fui-icon-sm);
73
+ @include action.glyph("md");
47
74
  }
48
75
  }
49
76
 
77
+ .triggerSm .triggerIcon svg {
78
+ @include action.glyph("sm");
79
+ }
80
+
81
+ .triggerLg .triggerIcon svg {
82
+ @include action.glyph("lg");
83
+ }
84
+
50
85
  .triggerValue {
51
86
  flex: 1;
52
87
  min-width: 0;
@@ -77,7 +112,7 @@
77
112
  @include surface-elevated;
78
113
 
79
114
  border-color: var(--fui-form-group-border, $fui-border);
80
- padding: var(--fui-space-3, $fui-space-3);
115
+ padding: var(--fui-surface-inset-compact, 12px);
81
116
  box-shadow: var(--fui-shadow-md, $fui-shadow-md);
82
117
 
83
118
  // Animation
@@ -105,10 +140,12 @@
105
140
  // ============================================
106
141
 
107
142
  .calendar {
108
- @include text-base;
143
+ @include typography.role("body-compact");
109
144
 
110
145
  // Square size shared by weekday headers + day cells/buttons (32px grid).
111
- --_day-size: var(--fui-icon-2xl, #{$fui-icon-2xl});
146
+ --_day-size: #{action.track("md")};
147
+
148
+ color: var(--fui-text-primary, $fui-text-primary);
112
149
  }
113
150
 
114
151
  .months {
@@ -151,12 +188,9 @@
151
188
  .navButton {
152
189
  @include button-reset;
153
190
  @include interactive-base;
191
+ @include action.base;
192
+ @include action.icon-only("sm");
154
193
 
155
- display: inline-flex;
156
- align-items: center;
157
- justify-content: center;
158
- width: var(--fui-button-height-sm, $fui-button-height-sm);
159
- height: var(--fui-button-height-sm, $fui-button-height-sm);
160
194
  border-radius: var(--fui-radius-md, $fui-radius-md);
161
195
  color: var(--fui-text-secondary, $fui-text-secondary);
162
196
 
@@ -166,8 +200,7 @@
166
200
  }
167
201
 
168
202
  svg {
169
- width: var(--fui-icon-sm, $fui-icon-sm);
170
- height: var(--fui-icon-sm, $fui-icon-sm);
203
+ @include action.glyph("sm");
171
204
  }
172
205
  }
173
206
 
@@ -189,13 +222,11 @@
189
222
  }
190
223
 
191
224
  .weekday {
192
- @include text-base;
225
+ @include typography.role("ui-compact");
193
226
 
194
227
  width: var(--_day-size);
195
228
  height: var(--_day-size);
196
229
  padding: 0;
197
- font-size: var(--fui-font-size-xs, $fui-font-size-xs);
198
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
199
230
  color: var(--fui-text-tertiary, $fui-text-tertiary);
200
231
  text-align: center;
201
232
  vertical-align: middle;
@@ -251,12 +282,13 @@
251
282
  // ============================================
252
283
 
253
284
  .today > .dayButton {
254
- box-shadow: inset 0 0 0 1px var(--fui-field-border, $fui-border-strong);
285
+ box-shadow: inset 0 0 0 var(--fui-stroke-hairline, 1px)
286
+ var(--fui-field-border, $fui-border-strong);
255
287
  background-color: color-mix(in srgb, var(--fui-bg-hover, $fui-bg-hover) 55%, transparent);
256
288
  }
257
289
 
258
290
  .selected > .dayButton {
259
- @include popup-item-selected;
291
+ @include popup.selected-state;
260
292
  font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
261
293
 
262
294
  &:hover {
@@ -293,7 +325,7 @@
293
325
  &::before {
294
326
  content: "";
295
327
  position: absolute;
296
- inset: 2px 0;
328
+ inset: var(--fui-raw-space-2, 2px) 0;
297
329
  background-color: color-mix(
298
330
  in srgb,
299
331
  var(--fui-color-accent, $fui-color-accent) 10%,
@@ -314,7 +346,7 @@
314
346
  &::before {
315
347
  content: "";
316
348
  position: absolute;
317
- inset: 2px 0 2px 50%;
349
+ inset: var(--fui-raw-space-2, 2px) 0 var(--fui-raw-space-2, 2px) 50%;
318
350
  background-color: color-mix(
319
351
  in srgb,
320
352
  var(--fui-color-accent, $fui-color-accent) 10%,
@@ -326,7 +358,7 @@
326
358
  > .dayButton {
327
359
  position: relative;
328
360
  z-index: 1;
329
- @include popup-item-selected;
361
+ @include popup.selected-state;
330
362
  font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
331
363
 
332
364
  &:hover {
@@ -344,7 +376,7 @@
344
376
  &::before {
345
377
  content: "";
346
378
  position: absolute;
347
- inset: 2px 50% 2px 0;
379
+ inset: var(--fui-raw-space-2, 2px) 50% var(--fui-raw-space-2, 2px) 0;
348
380
  background-color: color-mix(
349
381
  in srgb,
350
382
  var(--fui-color-accent, $fui-color-accent) 10%,
@@ -356,7 +388,7 @@
356
388
  > .dayButton {
357
389
  position: relative;
358
390
  z-index: 1;
359
- @include popup-item-selected;
391
+ @include popup.selected-state;
360
392
  font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
361
393
 
362
394
  &:hover {
@@ -371,14 +403,10 @@
371
403
 
372
404
  .preset {
373
405
  @include button-reset;
374
- @include text-base;
406
+ @include popup.row;
375
407
 
376
- display: flex;
377
- align-items: center;
378
408
  width: 100%;
379
- padding: var(--fui-space-1, $fui-space-1) var(--fui-space-3, $fui-space-3);
380
409
  border-radius: var(--fui-radius-sm, $fui-radius-sm);
381
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
382
410
  color: var(--fui-text-primary, $fui-text-primary);
383
411
  white-space: nowrap;
384
412
  transition: background-color var(--fui-transition-fast, $fui-transition-fast);
@@ -398,7 +426,7 @@
398
426
 
399
427
  @media (prefers-contrast: more) {
400
428
  .trigger {
401
- border-width: 2px;
429
+ border-width: var(--fui-stroke-default, 2px);
402
430
  border-color: var(--fui-text-primary, $fui-text-primary);
403
431
 
404
432
  &[data-popup-open] {
@@ -407,7 +435,7 @@
407
435
  }
408
436
 
409
437
  .dayButton {
410
- border: 1px solid transparent;
438
+ border: var(--fui-stroke-hairline, 1px) solid transparent;
411
439
 
412
440
  &:focus-visible {
413
441
  border-color: var(--fui-text-primary, $fui-text-primary);
@@ -3,8 +3,10 @@
3
3
  import * as React from "react";
4
4
  import { Popover as BasePopover } from "@base-ui/react/popover";
5
5
  import { useFormFieldIds, type FormFieldProps } from "../../utils/aria";
6
+ import { POPUP_OFFSET_PX } from "../../recipes/popup";
6
7
  import { useResolvedControlSize } from "../ComponentDefaults";
7
8
  import styles from "./DatePicker.module.scss";
9
+ import { isDevelopmentBuild } from "../../utils/env";
8
10
 
9
11
  // ============================================
10
12
  // Types (self-owned — no external dependency for types)
@@ -248,7 +250,7 @@ function loadDayPickerDeps(): Promise<void> {
248
250
  _DayFlag = rdp.DayFlag as unknown as RdpEnum;
249
251
  } catch {
250
252
  _rdpFailed = true;
251
- if (process.env.NODE_ENV === "development") {
253
+ if (isDevelopmentBuild()) {
252
254
  console.warn(
253
255
  "[@usefragments/ui] DatePicker: react-day-picker is not installed. " +
254
256
  "Install it with: npm install react-day-picker"
@@ -475,7 +477,9 @@ const DatePickerRoot = React.forwardRef<HTMLDivElement, DatePickerProps>(functio
475
477
 
476
478
  return (
477
479
  <DatePickerContext.Provider value={contextValue}>
478
- <div ref={ref} className={wrapperClasses}>
480
+ {/* data-invalid lets the trigger pick up the error border; without it only
481
+ the message turns red and the control still looks valid. */}
482
+ <div ref={ref} className={wrapperClasses} data-invalid={hasError || undefined}>
479
483
  {label && (
480
484
  <span id={labelId} className={styles.label}>
481
485
  {label}
@@ -557,7 +561,7 @@ function DatePickerTrigger({
557
561
  function DatePickerContent({
558
562
  children,
559
563
  className,
560
- sideOffset = 4,
564
+ sideOffset = POPUP_OFFSET_PX,
561
565
  align = "start",
562
566
  ...htmlProps
563
567
  }: DatePickerContentProps) {
@@ -1,14 +1,13 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/action" as action;
4
+ @use "../../recipes/overlay" as overlay;
3
5
 
4
- // Backdrop overlay
5
6
  .backdrop {
6
7
  position: fixed;
8
+ z-index: var(--fui-overlay-layer-backdrop, 50);
7
9
  inset: 0;
8
10
  background-color: var(--fui-backdrop, $fui-backdrop);
9
- z-index: 50;
10
-
11
- // Animation
12
11
  opacity: 0;
13
12
  transition: opacity var(--fui-transition-normal, $fui-transition-normal);
14
13
 
@@ -22,33 +21,28 @@
22
21
  }
23
22
  }
24
23
 
25
- // Positioner centers the popup
26
24
  .positioner {
25
+ @include overlay.safe-viewport;
26
+
27
27
  position: fixed;
28
+ z-index: var(--fui-overlay-layer-modal, 51);
28
29
  inset: 0;
29
- z-index: 51;
30
30
  display: flex;
31
31
  align-items: center;
32
32
  justify-content: center;
33
- padding: var(--fui-space-2, $fui-space-2);
34
- overflow-y: auto;
33
+ padding-block: var(--_fui-overlay-safe-top) var(--_fui-overlay-safe-bottom);
34
+ padding-inline: var(--_fui-overlay-safe-left) var(--_fui-overlay-safe-right);
35
+ overflow: auto;
35
36
  }
36
37
 
37
- // The popup container
38
38
  .popup {
39
- @include surface-elevated;
40
- @include text-base;
39
+ @include overlay.modal-shell;
41
40
 
42
41
  position: relative;
43
- width: 100%;
44
- max-width: 28rem; // 448px
45
- max-height: calc(100vh - var(--fui-space-8, $fui-space-8));
46
- overflow-y: auto;
47
- box-shadow: var(--fui-shadow-md, $fui-shadow-md);
48
-
49
- // Animation
42
+ inline-size: 100%;
43
+ max-inline-size: overlay.dialog-max("md");
50
44
  opacity: 0;
51
- transform: scale(0.95) translateY(-$fui-anim-offset-md);
45
+ transform: scale(0.95) translateY(calc(-1 * var(--fui-anim-offset-md, #{$fui-anim-offset-md})));
52
46
  transition:
53
47
  opacity var(--fui-transition-normal, $fui-transition-normal),
54
48
  transform var(--fui-transition-normal, $fui-transition-normal);
@@ -60,88 +54,70 @@
60
54
 
61
55
  &[data-starting-style] {
62
56
  opacity: 0;
63
- transform: scale(0.95) translateY(-$fui-anim-offset-md);
57
+ transform: scale(0.95) translateY(calc(-1 * var(--fui-anim-offset-md, #{$fui-anim-offset-md})));
64
58
  }
65
59
 
66
60
  &[data-ending-style] {
67
61
  opacity: 0;
68
- transform: scale(0.95) translateY($fui-anim-offset-md);
62
+ transform: scale(0.95) translateY(var(--fui-anim-offset-md, #{$fui-anim-offset-md}));
69
63
  }
70
64
  }
71
65
 
72
- // Size variants
73
66
  .sm {
74
- max-width: 24rem; // 384px
67
+ max-inline-size: overlay.dialog-max("sm");
75
68
  }
76
69
 
77
70
  .md {
78
- max-width: 28rem; // 448px - default
71
+ max-inline-size: overlay.dialog-max("md");
79
72
  }
80
73
 
81
74
  .lg {
82
- max-width: 36rem; // 576px
75
+ max-inline-size: overlay.dialog-max("lg");
83
76
  }
84
77
 
85
78
  .xl {
86
- max-width: 48rem; // 768px
79
+ max-inline-size: overlay.dialog-max("xl");
87
80
  }
88
81
 
89
82
  .full {
90
- max-width: calc(100vw - var(--fui-space-8, $fui-space-8));
83
+ max-inline-size: var(--_fui-overlay-safe-inline);
91
84
  }
92
85
 
93
- // Header area
94
86
  .header {
95
- padding: var(--fui-space-3, $fui-space-3) var(--fui-space-4, $fui-space-4);
87
+ @include overlay.header;
96
88
  }
97
89
 
98
- // Title
99
90
  .title {
91
+ @include overlay.modal-title;
92
+
100
93
  margin: 0;
101
- font-size: var(--fui-font-size-lg, $fui-font-size-lg);
102
- font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
103
94
  color: var(--fui-text-primary, $fui-text-primary);
104
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
105
95
  }
106
96
 
107
- // Description
108
97
  .description {
109
- margin: var(--fui-space-1, $fui-space-1) 0 0;
110
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
98
+ @include overlay.description;
99
+
100
+ margin: 0;
111
101
  color: var(--fui-text-secondary, $fui-text-secondary);
112
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
113
102
  }
114
103
 
115
- // Body content
116
104
  .body {
117
- padding: 0 var(--fui-space-4, $fui-space-4) var(--fui-space-3, $fui-space-3);
105
+ @include overlay.body;
118
106
  }
119
107
 
120
- // Footer for actions
121
108
  .footer {
122
- display: flex;
123
- align-items: center;
124
- justify-content: flex-end;
125
- gap: var(--fui-space-1, $fui-space-1);
126
- padding: var(--fui-space-2, $fui-space-2) var(--fui-space-4, $fui-space-4);
127
- border-top: 1px solid var(--fui-border, $fui-border);
128
- background-color: var(--fui-bg-secondary, $fui-bg-secondary);
109
+ @include overlay.footer;
110
+
111
+ border-top: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
129
112
  border-radius: 0 0 var(--fui-radius-lg, $fui-radius-lg) var(--fui-radius-lg, $fui-radius-lg);
113
+ background-color: var(--fui-bg-secondary, $fui-bg-secondary);
130
114
  }
131
115
 
132
- // Close button (X in corner)
133
116
  .close {
134
117
  @include button-reset;
135
118
  @include interactive-base;
119
+ @include overlay.close;
136
120
 
137
- position: absolute;
138
- top: var(--fui-space-3, $fui-space-3);
139
- right: var(--fui-space-3, $fui-space-3);
140
- display: flex;
141
- align-items: center;
142
- justify-content: center;
143
- width: 2rem;
144
- height: 2rem;
145
121
  border-radius: var(--fui-radius-md, $fui-radius-md);
146
122
  color: var(--fui-text-secondary, $fui-text-secondary);
147
123
 
@@ -151,27 +127,27 @@
151
127
  }
152
128
 
153
129
  svg {
154
- width: 1rem;
155
- height: 1rem;
130
+ inline-size: action.icon-size("sm");
131
+ block-size: action.icon-size("sm");
156
132
  }
157
133
  }
158
134
 
159
- // ============================================
160
- // Accessibility: Reduced Motion
161
- // ============================================
135
+ .popup:has(.close) .header {
136
+ padding-inline-end: calc(
137
+ var(--fui-overlay-close-inset, var(--fui-raw-space-12, 12px)) + #{action.track("sm")} +
138
+ var(--fui-overlay-section-gap, var(--fui-raw-space-8, 8px))
139
+ );
140
+ }
162
141
 
163
142
  @media (prefers-reduced-motion: reduce) {
164
- .backdrop {
143
+ .backdrop,
144
+ .popup {
165
145
  transition: none;
166
146
  }
167
147
 
168
- .popup {
169
- transition: none;
148
+ .popup,
149
+ .popup[data-starting-style],
150
+ .popup[data-ending-style] {
170
151
  transform: none;
171
-
172
- &[data-starting-style],
173
- &[data-ending-style] {
174
- transform: none;
175
- }
176
152
  }
177
153
  }