@usefragments/ui 1.6.0 → 2.0.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 (685) hide show
  1. package/README.md +54 -66
  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/nav-glyph.cjs +139 -0
  6. package/dist/assets/nav-glyph.d.ts +28 -0
  7. package/dist/assets/nav-glyph.d.ts.map +1 -0
  8. package/dist/assets/nav-glyph.js +139 -0
  9. package/dist/assets/nav-glyph.module.scss.cjs +71 -0
  10. package/dist/assets/nav-glyph.module.scss.js +71 -0
  11. package/dist/assets/ui.css +6885 -6308
  12. package/dist/blocks/components/StatsCard.d.ts +1 -1
  13. package/dist/blocks/components/StatsCard.d.ts.map +1 -1
  14. package/dist/chart.cjs +24 -6
  15. package/dist/chart.js +24 -6
  16. package/dist/codeblock.cjs +76 -43
  17. package/dist/codeblock.js +71 -38
  18. package/dist/colorpicker.cjs +4 -1
  19. package/dist/colorpicker.js +4 -1
  20. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  21. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  22. package/dist/components/Alert/Alert.module.scss.cjs +23 -20
  23. package/dist/components/Alert/Alert.module.scss.js +23 -20
  24. package/dist/components/Alert/index.cjs +20 -8
  25. package/dist/components/Alert/index.d.ts +17 -11
  26. package/dist/components/Alert/index.d.ts.map +1 -1
  27. package/dist/components/Alert/index.js +20 -8
  28. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  29. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  30. package/dist/components/AppShell/index.cjs +2 -2
  31. package/dist/components/AppShell/index.js +2 -2
  32. package/dist/components/Avatar/Avatar.module.scss.cjs +14 -14
  33. package/dist/components/Avatar/Avatar.module.scss.js +14 -14
  34. package/dist/components/Badge/Badge.module.scss.cjs +33 -31
  35. package/dist/components/Badge/Badge.module.scss.js +33 -31
  36. package/dist/components/Badge/index.cjs +13 -3
  37. package/dist/components/Badge/index.d.ts +18 -13
  38. package/dist/components/Badge/index.d.ts.map +1 -1
  39. package/dist/components/Badge/index.js +13 -3
  40. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  41. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  42. package/dist/components/Box/Box.module.scss.cjs +152 -152
  43. package/dist/components/Box/Box.module.scss.js +152 -152
  44. package/dist/components/Box/index.cjs +64 -75
  45. package/dist/components/Box/index.d.ts +16 -16
  46. package/dist/components/Box/index.d.ts.map +1 -1
  47. package/dist/components/Box/index.js +64 -75
  48. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +11 -8
  49. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +11 -8
  50. package/dist/components/Breadcrumbs/index.cjs +1 -1
  51. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  52. package/dist/components/Breadcrumbs/index.js +1 -1
  53. package/dist/components/Button/Button.module.scss.cjs +36 -27
  54. package/dist/components/Button/Button.module.scss.js +36 -27
  55. package/dist/components/Button/index.cjs +20 -4
  56. package/dist/components/Button/index.d.ts +18 -10
  57. package/dist/components/Button/index.d.ts.map +1 -1
  58. package/dist/components/Button/index.js +20 -4
  59. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  60. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  61. package/dist/components/Card/Card.module.scss.cjs +31 -26
  62. package/dist/components/Card/Card.module.scss.js +32 -27
  63. package/dist/components/Card/index.cjs +16 -3
  64. package/dist/components/Card/index.d.ts +23 -15
  65. package/dist/components/Card/index.d.ts.map +1 -1
  66. package/dist/components/Card/index.js +16 -3
  67. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  68. package/dist/components/Chart/Chart.module.scss.js +15 -15
  69. package/dist/components/Chart/index.d.ts.map +1 -1
  70. package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
  71. package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
  72. package/dist/components/Checkbox/index.cjs +4 -4
  73. package/dist/components/Checkbox/index.d.ts +4 -6
  74. package/dist/components/Checkbox/index.d.ts.map +1 -1
  75. package/dist/components/Checkbox/index.js +4 -4
  76. package/dist/components/Chip/Chip.module.scss.cjs +19 -19
  77. package/dist/components/Chip/Chip.module.scss.js +19 -19
  78. package/dist/components/Chip/index.cjs +3 -3
  79. package/dist/components/Chip/index.d.ts +8 -3
  80. package/dist/components/Chip/index.d.ts.map +1 -1
  81. package/dist/components/Chip/index.js +3 -3
  82. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +26 -23
  83. package/dist/components/CodeBlock/CodeBlock.module.scss.js +26 -23
  84. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  85. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  86. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  87. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  88. package/dist/components/CodeBlock/index.d.ts +20 -5
  89. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  90. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
  91. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
  92. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
  93. package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
  94. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  95. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
  96. package/dist/components/Combobox/Combobox.module.scss.js +21 -21
  97. package/dist/components/Combobox/index.cjs +26 -6
  98. package/dist/components/Combobox/index.d.ts.map +1 -1
  99. package/dist/components/Combobox/index.js +26 -6
  100. package/dist/components/Command/Command.module.scss.cjs +14 -11
  101. package/dist/components/Command/Command.module.scss.js +14 -11
  102. package/dist/components/Command/index.cjs +28 -16
  103. package/dist/components/Command/index.d.ts +8 -3
  104. package/dist/components/Command/index.d.ts.map +1 -1
  105. package/dist/components/Command/index.js +28 -16
  106. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  107. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  108. package/dist/components/ConversationList/index.cjs +2 -2
  109. package/dist/components/ConversationList/index.js +2 -2
  110. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  111. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  112. package/dist/components/DataTable/DataTable.icons.js +6 -33
  113. package/dist/components/DataTable/DataTable.module.scss.cjs +31 -28
  114. package/dist/components/DataTable/DataTable.module.scss.js +31 -28
  115. package/dist/components/DataTable/DataTable.virtual.d.ts.map +1 -1
  116. package/dist/components/DataTable/index.d.ts.map +1 -1
  117. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  118. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  119. package/dist/components/DatePicker/index.d.ts.map +1 -1
  120. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  121. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  122. package/dist/components/Dialog/index.cjs +13 -16
  123. package/dist/components/Dialog/index.d.ts +11 -10
  124. package/dist/components/Dialog/index.d.ts.map +1 -1
  125. package/dist/components/Dialog/index.js +13 -16
  126. package/dist/components/Drawer/Drawer.module.scss.cjs +39 -39
  127. package/dist/components/Drawer/Drawer.module.scss.js +40 -40
  128. package/dist/components/Drawer/index.cjs +2 -2
  129. package/dist/components/Drawer/index.d.ts +5 -4
  130. package/dist/components/Drawer/index.d.ts.map +1 -1
  131. package/dist/components/Drawer/index.js +2 -2
  132. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  133. package/dist/components/Editor/Editor.module.scss.js +17 -17
  134. package/dist/components/Editor/index.d.ts +10 -10
  135. package/dist/components/Editor/index.d.ts.map +1 -1
  136. package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -8
  137. package/dist/components/EmptyState/EmptyState.module.scss.js +11 -8
  138. package/dist/components/EmptyState/index.cjs +13 -6
  139. package/dist/components/EmptyState/index.d.ts +13 -5
  140. package/dist/components/EmptyState/index.d.ts.map +1 -1
  141. package/dist/components/EmptyState/index.js +13 -6
  142. package/dist/components/Field/Field.module.scss.cjs +5 -5
  143. package/dist/components/Field/Field.module.scss.js +5 -5
  144. package/dist/components/Field/index.cjs +9 -1
  145. package/dist/components/Field/index.d.ts.map +1 -1
  146. package/dist/components/Field/index.js +9 -1
  147. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  148. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  149. package/dist/components/Grid/Grid.module.scss.cjs +54 -54
  150. package/dist/components/Grid/Grid.module.scss.js +54 -54
  151. package/dist/components/Grid/index.cjs +1 -1
  152. package/dist/components/Grid/index.js +1 -1
  153. package/dist/components/Header/Header.module.scss.cjs +33 -33
  154. package/dist/components/Header/Header.module.scss.js +33 -33
  155. package/dist/components/Header/index.cjs +17 -38
  156. package/dist/components/Header/index.d.ts +15 -11
  157. package/dist/components/Header/index.d.ts.map +1 -1
  158. package/dist/components/Header/index.js +17 -38
  159. package/dist/components/Icon/Icon.module.scss.cjs +30 -33
  160. package/dist/components/Icon/Icon.module.scss.js +30 -33
  161. package/dist/components/Icon/index.cjs +15 -14
  162. package/dist/components/Icon/index.d.ts +23 -12
  163. package/dist/components/Icon/index.d.ts.map +1 -1
  164. package/dist/components/Icon/index.js +15 -14
  165. package/dist/components/IconButton/IconButton.module.scss.cjs +12 -12
  166. package/dist/components/IconButton/IconButton.module.scss.js +12 -12
  167. package/dist/components/IconButton/index.cjs +2 -1
  168. package/dist/components/IconButton/index.d.ts +4 -4
  169. package/dist/components/IconButton/index.d.ts.map +1 -1
  170. package/dist/components/IconButton/index.js +2 -1
  171. package/dist/components/Image/Image.module.scss.cjs +27 -27
  172. package/dist/components/Image/Image.module.scss.js +27 -27
  173. package/dist/components/Input/Input.module.scss.cjs +15 -21
  174. package/dist/components/Input/Input.module.scss.js +15 -21
  175. package/dist/components/Input/index.cjs +2 -14
  176. package/dist/components/Input/index.d.ts +0 -2
  177. package/dist/components/Input/index.d.ts.map +1 -1
  178. package/dist/components/Input/index.js +2 -14
  179. package/dist/components/Link/Link.module.scss.cjs +26 -14
  180. package/dist/components/Link/Link.module.scss.js +26 -14
  181. package/dist/components/Link/index.cjs +13 -2
  182. package/dist/components/Link/index.d.ts +11 -4
  183. package/dist/components/Link/index.d.ts.map +1 -1
  184. package/dist/components/Link/index.js +13 -2
  185. package/dist/components/List/List.module.scss.cjs +23 -19
  186. package/dist/components/List/List.module.scss.js +23 -19
  187. package/dist/components/List/index.cjs +7 -7
  188. package/dist/components/List/index.d.ts +10 -7
  189. package/dist/components/List/index.d.ts.map +1 -1
  190. package/dist/components/List/index.js +7 -7
  191. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  192. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  193. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  194. package/dist/components/Loading/Loading.module.scss.js +34 -34
  195. package/dist/components/Loading/index.cjs +5 -5
  196. package/dist/components/Loading/index.d.ts +8 -7
  197. package/dist/components/Loading/index.d.ts.map +1 -1
  198. package/dist/components/Loading/index.js +5 -5
  199. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  200. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  201. package/dist/components/Markdown/index.d.ts +2 -2
  202. package/dist/components/Markdown/index.d.ts.map +1 -1
  203. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  204. package/dist/components/Menu/Menu.module.scss.js +14 -14
  205. package/dist/components/Message/Message.module.scss.cjs +20 -20
  206. package/dist/components/Message/Message.module.scss.js +20 -20
  207. package/dist/components/Message/index.cjs +1 -1
  208. package/dist/components/Message/index.d.ts +1 -1
  209. package/dist/components/Message/index.js +1 -1
  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 +10 -10
  217. package/dist/components/Pagination/Pagination.module.scss.js +10 -10
  218. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  219. package/dist/components/Popover/Popover.module.scss.js +10 -10
  220. package/dist/components/Progress/Progress.module.scss.cjs +28 -25
  221. package/dist/components/Progress/Progress.module.scss.js +28 -25
  222. package/dist/components/Progress/index.cjs +21 -12
  223. package/dist/components/Progress/index.d.ts +10 -6
  224. package/dist/components/Progress/index.d.ts.map +1 -1
  225. package/dist/components/Progress/index.js +21 -12
  226. package/dist/components/Prompt/Prompt.module.scss.cjs +30 -30
  227. package/dist/components/Prompt/Prompt.module.scss.js +30 -30
  228. package/dist/components/Prompt/index.cjs +7 -7
  229. package/dist/components/Prompt/index.d.ts +11 -9
  230. package/dist/components/Prompt/index.d.ts.map +1 -1
  231. package/dist/components/Prompt/index.js +7 -7
  232. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +20 -17
  233. package/dist/components/RadioGroup/RadioGroup.module.scss.js +20 -17
  234. package/dist/components/RadioGroup/index.cjs +10 -5
  235. package/dist/components/RadioGroup/index.d.ts +11 -7
  236. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  237. package/dist/components/RadioGroup/index.js +10 -5
  238. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
  239. package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
  240. package/dist/components/ScrollArea/index.d.ts +4 -4
  241. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  242. package/dist/components/ScrollArea/scroll-state.d.ts +5 -5
  243. package/dist/components/Select/Select.module.scss.cjs +21 -21
  244. package/dist/components/Select/Select.module.scss.js +21 -21
  245. package/dist/components/Select/index.cjs +26 -20
  246. package/dist/components/Select/index.d.ts +5 -5
  247. package/dist/components/Select/index.d.ts.map +1 -1
  248. package/dist/components/Select/index.js +26 -20
  249. package/dist/components/Separator/Separator.module.scss.cjs +25 -19
  250. package/dist/components/Separator/Separator.module.scss.js +25 -19
  251. package/dist/components/Separator/index.cjs +10 -8
  252. package/dist/components/Separator/index.d.ts +4 -2
  253. package/dist/components/Separator/index.d.ts.map +1 -1
  254. package/dist/components/Separator/index.js +10 -8
  255. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  256. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  257. package/dist/components/Sidebar/index.cjs +15 -38
  258. package/dist/components/Sidebar/index.d.ts +19 -19
  259. package/dist/components/Sidebar/index.d.ts.map +1 -1
  260. package/dist/components/Sidebar/index.js +15 -38
  261. package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -46
  262. package/dist/components/Skeleton/Skeleton.module.scss.js +50 -46
  263. package/dist/components/Skeleton/index.cjs +7 -7
  264. package/dist/components/Skeleton/index.d.ts +8 -7
  265. package/dist/components/Skeleton/index.d.ts.map +1 -1
  266. package/dist/components/Skeleton/index.js +7 -7
  267. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  268. package/dist/components/Slider/Slider.module.scss.js +12 -12
  269. package/dist/components/Stack/Stack.module.scss.cjs +25 -25
  270. package/dist/components/Stack/Stack.module.scss.js +25 -25
  271. package/dist/components/Stack/index.cjs +1 -1
  272. package/dist/components/Stack/index.js +1 -1
  273. package/dist/components/Switch/Switch.module.scss.cjs +9 -9
  274. package/dist/components/Switch/Switch.module.scss.js +9 -9
  275. package/dist/components/Table/Table.module.scss.cjs +19 -19
  276. package/dist/components/Table/Table.module.scss.js +19 -19
  277. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  278. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  279. package/dist/components/TableOfContents/index.cjs +14 -10
  280. package/dist/components/TableOfContents/index.d.ts +5 -3
  281. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  282. package/dist/components/TableOfContents/index.js +14 -10
  283. package/dist/components/Tabs/Tabs.module.scss.cjs +18 -18
  284. package/dist/components/Tabs/Tabs.module.scss.js +18 -18
  285. package/dist/components/Tabs/index.cjs +30 -11
  286. package/dist/components/Tabs/index.d.ts +8 -6
  287. package/dist/components/Tabs/index.d.ts.map +1 -1
  288. package/dist/components/Tabs/index.js +30 -11
  289. package/dist/components/Text/Text.module.scss.cjs +109 -97
  290. package/dist/components/Text/Text.module.scss.js +109 -97
  291. package/dist/components/Text/index.cjs +45 -41
  292. package/dist/components/Text/index.d.ts +24 -19
  293. package/dist/components/Text/index.d.ts.map +1 -1
  294. package/dist/components/Text/index.js +45 -41
  295. package/dist/components/Textarea/Textarea.module.scss.cjs +22 -28
  296. package/dist/components/Textarea/Textarea.module.scss.js +22 -28
  297. package/dist/components/Textarea/index.cjs +3 -10
  298. package/dist/components/Textarea/index.d.ts +0 -2
  299. package/dist/components/Textarea/index.d.ts.map +1 -1
  300. package/dist/components/Textarea/index.js +3 -10
  301. package/dist/components/Theme/index.cjs +22 -5
  302. package/dist/components/Theme/index.d.ts +6 -12
  303. package/dist/components/Theme/index.d.ts.map +1 -1
  304. package/dist/components/Theme/index.js +22 -5
  305. package/dist/components/ThemeToggle/ThemeButton.cjs +51 -0
  306. package/dist/components/ThemeToggle/ThemeButton.d.ts +16 -0
  307. package/dist/components/ThemeToggle/ThemeButton.d.ts.map +1 -0
  308. package/dist/components/ThemeToggle/ThemeButton.js +34 -0
  309. package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +6 -6
  310. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +6 -6
  311. package/dist/components/ThemeToggle/icons.cjs +48 -0
  312. package/dist/components/ThemeToggle/icons.d.ts +10 -0
  313. package/dist/components/ThemeToggle/icons.d.ts.map +1 -0
  314. package/dist/components/ThemeToggle/icons.js +48 -0
  315. package/dist/components/ThemeToggle/index.cjs +6 -50
  316. package/dist/components/ThemeToggle/index.d.ts +5 -3
  317. package/dist/components/ThemeToggle/index.d.ts.map +1 -1
  318. package/dist/components/ThemeToggle/index.js +3 -47
  319. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +18 -15
  320. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +18 -15
  321. package/dist/components/ThinkingIndicator/index.cjs +7 -8
  322. package/dist/components/ThinkingIndicator/index.d.ts +6 -5
  323. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  324. package/dist/components/ThinkingIndicator/index.js +7 -8
  325. package/dist/components/Toast/Toast.module.scss.cjs +28 -29
  326. package/dist/components/Toast/Toast.module.scss.js +29 -30
  327. package/dist/components/Toast/index.cjs +28 -30
  328. package/dist/components/Toast/index.d.ts +9 -8
  329. package/dist/components/Toast/index.d.ts.map +1 -1
  330. package/dist/components/Toast/index.js +28 -30
  331. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +21 -19
  332. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +22 -20
  333. package/dist/components/ToggleGroup/index.cjs +4 -5
  334. package/dist/components/ToggleGroup/index.d.ts +7 -6
  335. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  336. package/dist/components/ToggleGroup/index.js +4 -5
  337. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  338. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  339. package/dist/components/Tooltip/index.cjs +24 -40
  340. package/dist/components/Tooltip/index.d.ts +4 -4
  341. package/dist/components/Tooltip/index.d.ts.map +1 -1
  342. package/dist/components/Tooltip/index.js +24 -40
  343. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  344. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  345. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  346. package/dist/data-table-virtual.cjs +3 -2
  347. package/dist/data-table-virtual.js +3 -2
  348. package/dist/data-table.cjs +3 -2
  349. package/dist/data-table.js +3 -2
  350. package/dist/datepicker.cjs +26 -13
  351. package/dist/datepicker.js +26 -13
  352. package/dist/editor.cjs +68 -28
  353. package/dist/editor.js +68 -28
  354. package/dist/index.cjs +6 -2
  355. package/dist/index.d.ts +9 -9
  356. package/dist/index.d.ts.map +1 -1
  357. package/dist/index.js +8 -4
  358. package/dist/markdown.cjs +21 -29
  359. package/dist/markdown.js +21 -29
  360. package/dist/measurements/generated.cjs +46 -94
  361. package/dist/measurements/generated.d.ts +44 -92
  362. package/dist/measurements/generated.d.ts.map +1 -1
  363. package/dist/measurements/generated.js +46 -94
  364. package/dist/measurements/index.d.ts +1 -1
  365. package/dist/measurements/index.d.ts.map +1 -1
  366. package/dist/utils/a11y.cjs +5 -2
  367. package/dist/utils/a11y.d.ts +5 -5
  368. package/dist/utils/a11y.d.ts.map +1 -1
  369. package/dist/utils/a11y.js +5 -2
  370. package/dist/utils/canonical-stamp.cjs +2 -8
  371. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  372. package/dist/utils/canonical-stamp.js +1 -7
  373. package/dist/utils/css-warning.cjs +1 -1
  374. package/dist/utils/css-warning.js +1 -1
  375. package/dist/utils/env.cjs +17 -0
  376. package/dist/utils/env.d.ts +3 -0
  377. package/dist/utils/env.d.ts.map +1 -0
  378. package/dist/utils/env.js +17 -0
  379. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  380. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  381. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  382. package/dist/utils/keyboard-shortcuts.js +3 -10
  383. package/dist/utils/seed-derivation.cjs +10 -7
  384. package/dist/utils/seed-derivation.d.ts +1 -3
  385. package/dist/utils/seed-derivation.d.ts.map +1 -1
  386. package/dist/utils/seed-derivation.js +10 -7
  387. package/dist/utils/theme-presets.cjs +5 -10
  388. package/dist/utils/theme-presets.d.ts +1 -2
  389. package/dist/utils/theme-presets.d.ts.map +1 -1
  390. package/dist/utils/theme-presets.js +5 -10
  391. package/fragments.json +1 -1
  392. package/package.json +9 -10
  393. package/src/assets/fragments-logo.tsx +2 -2
  394. package/src/assets/fragments-wordmark.tsx +4 -2
  395. package/src/assets/nav-glyph.module.scss +166 -0
  396. package/src/assets/nav-glyph.tsx +188 -0
  397. package/src/components/Accordion/Accordion.contract.json +24 -48
  398. package/src/components/Accordion/Accordion.module.scss +5 -3
  399. package/src/components/Alert/Alert.contract.json +49 -65
  400. package/src/components/Alert/Alert.module.scss +57 -47
  401. package/src/components/Alert/index.tsx +72 -39
  402. package/src/components/AppShell/AppShell.contract.json +34 -51
  403. package/src/components/AppShell/AppShell.module.scss +99 -54
  404. package/src/components/AppShell/index.tsx +2 -2
  405. package/src/components/Avatar/Avatar.contract.json +31 -48
  406. package/src/components/Avatar/Avatar.module.scss +4 -2
  407. package/src/components/Badge/Badge.contract.json +86 -55
  408. package/src/components/Badge/Badge.module.scss +80 -48
  409. package/src/components/Badge/index.tsx +34 -17
  410. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  411. package/src/components/BentoGrid/BentoGrid.module.scss +4 -8
  412. package/src/components/Box/Box.contract.json +40 -148
  413. package/src/components/Box/Box.module.scss +7 -6
  414. package/src/components/Box/index.tsx +92 -99
  415. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  416. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +27 -12
  417. package/src/components/Breadcrumbs/index.tsx +5 -1
  418. package/src/components/Button/Button.module.scss +261 -185
  419. package/src/components/Button/index.tsx +41 -28
  420. package/src/components/ButtonGroup/ButtonGroup.contract.json +34 -49
  421. package/src/components/ButtonGroup/ButtonGroup.module.scss +8 -6
  422. package/src/components/Card/Card.consumer-fixture.module.scss +5 -2
  423. package/src/components/Card/Card.module.scss +97 -76
  424. package/src/components/Card/index.tsx +44 -20
  425. package/src/components/Chart/Chart.contract.json +21 -29
  426. package/src/components/Chart/Chart.module.scss +6 -5
  427. package/src/components/Chart/index.tsx +36 -6
  428. package/src/components/Checkbox/Checkbox.contract.json +28 -27
  429. package/src/components/Checkbox/Checkbox.module.scss +47 -54
  430. package/src/components/Checkbox/index.tsx +10 -10
  431. package/src/components/Chip/Chip.contract.json +38 -45
  432. package/src/components/Chip/Chip.module.scss +24 -23
  433. package/src/components/Chip/index.tsx +12 -7
  434. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  435. package/src/components/CodeBlock/CodeBlock.module.scss +75 -73
  436. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  437. package/src/components/CodeBlock/index.tsx +114 -51
  438. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  439. package/src/components/Collapsible/Collapsible.module.scss +1 -7
  440. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  441. package/src/components/ColorPicker/ColorPicker.module.scss +34 -24
  442. package/src/components/ColorPicker/index.tsx +6 -1
  443. package/src/components/Combobox/Combobox.contract.json +36 -37
  444. package/src/components/Combobox/Combobox.module.scss +16 -19
  445. package/src/components/Combobox/index.tsx +41 -6
  446. package/src/components/Command/Command.contract.json +28 -44
  447. package/src/components/Command/Command.module.scss +19 -21
  448. package/src/components/Command/index.tsx +64 -47
  449. package/src/components/ComponentDefaults/ComponentDefaults.contract.json +91 -0
  450. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  451. package/src/components/ConversationList/ConversationList.module.scss +2 -3
  452. package/src/components/ConversationList/index.tsx +2 -2
  453. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  454. package/src/components/DataTable/DataTable.module.scss +24 -17
  455. package/src/components/DataTable/DataTable.virtual.tsx +3 -2
  456. package/src/components/DataTable/index.tsx +9 -8
  457. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  458. package/src/components/DatePicker/DatePicker.module.scss +41 -44
  459. package/src/components/DatePicker/index.tsx +23 -9
  460. package/src/components/Dialog/Dialog.module.scss +26 -32
  461. package/src/components/Dialog/index.tsx +51 -39
  462. package/src/components/Drawer/Drawer.contract.json +28 -42
  463. package/src/components/Drawer/Drawer.module.scss +123 -64
  464. package/src/components/Drawer/index.tsx +7 -5
  465. package/src/components/Editor/Editor.contract.json +32 -49
  466. package/src/components/Editor/Editor.module.scss +60 -25
  467. package/src/components/Editor/index.tsx +240 -179
  468. package/src/components/EmptyState/EmptyState.contract.json +33 -45
  469. package/src/components/EmptyState/EmptyState.module.scss +37 -21
  470. package/src/components/EmptyState/index.tsx +56 -23
  471. package/src/components/Field/Field.contract.json +28 -46
  472. package/src/components/Field/Field.module.scss +2 -1
  473. package/src/components/Field/index.tsx +5 -1
  474. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  475. package/src/components/Fieldset/Fieldset.module.scss +15 -7
  476. package/src/components/Form/Form.contract.json +23 -23
  477. package/src/components/Grid/Grid.contract.json +28 -64
  478. package/src/components/Grid/Grid.module.scss +2 -2
  479. package/src/components/Grid/index.tsx +10 -10
  480. package/src/components/Header/Header.contract.json +31 -67
  481. package/src/components/Header/Header.module.scss +57 -54
  482. package/src/components/Header/index.tsx +134 -122
  483. package/src/components/Icon/Icon.contract.json +37 -81
  484. package/src/components/Icon/Icon.module.scss +13 -12
  485. package/src/components/Icon/index.tsx +31 -31
  486. package/src/components/IconButton/IconButton.contract.json +37 -21
  487. package/src/components/IconButton/IconButton.module.scss +19 -11
  488. package/src/components/IconButton/index.tsx +6 -5
  489. package/src/components/Image/Image.contract.json +23 -56
  490. package/src/components/Input/Input.contract.json +25 -44
  491. package/src/components/Input/Input.module.scss +6 -55
  492. package/src/components/Input/index.tsx +2 -18
  493. package/src/components/Link/Link.contract.json +46 -58
  494. package/src/components/Link/Link.module.scss +41 -10
  495. package/src/components/Link/index.tsx +27 -6
  496. package/src/components/List/List.contract.json +33 -62
  497. package/src/components/List/List.module.scss +10 -5
  498. package/src/components/List/index.tsx +17 -13
  499. package/src/components/Listbox/Listbox.contract.json +21 -37
  500. package/src/components/Listbox/Listbox.module.scss +14 -20
  501. package/src/components/Loading/Loading.contract.json +41 -65
  502. package/src/components/Loading/Loading.module.scss +37 -31
  503. package/src/components/Loading/index.tsx +15 -14
  504. package/src/components/Main/Main.contract.json +17 -9
  505. package/src/components/Markdown/Markdown.contract.json +22 -43
  506. package/src/components/Markdown/Markdown.module.scss +45 -6
  507. package/src/components/Markdown/index.tsx +48 -49
  508. package/src/components/Menu/Menu.contract.json +30 -46
  509. package/src/components/Menu/Menu.module.scss +32 -16
  510. package/src/components/Message/Message.contract.json +31 -54
  511. package/src/components/Message/Message.module.scss +18 -9
  512. package/src/components/Message/index.tsx +2 -2
  513. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  514. package/src/components/NavigationMenu/NavigationMenu.module.scss +66 -66
  515. package/src/components/NavigationMenu/index.tsx +105 -81
  516. package/src/components/Pagination/Pagination.contract.json +22 -40
  517. package/src/components/Pagination/Pagination.module.scss +9 -16
  518. package/src/components/Popover/Popover.contract.json +28 -50
  519. package/src/components/Popover/Popover.module.scss +30 -28
  520. package/src/components/Progress/Progress.contract.json +39 -35
  521. package/src/components/Progress/Progress.module.scss +16 -10
  522. package/src/components/Progress/index.tsx +34 -16
  523. package/src/components/Prompt/Prompt.contract.json +40 -56
  524. package/src/components/Prompt/Prompt.module.scss +49 -48
  525. package/src/components/Prompt/index.tsx +17 -15
  526. package/src/components/RadioGroup/RadioGroup.contract.json +29 -28
  527. package/src/components/RadioGroup/RadioGroup.module.scss +50 -45
  528. package/src/components/RadioGroup/index.tsx +23 -10
  529. package/src/components/ScrollArea/ScrollArea.contract.json +18 -19
  530. package/src/components/ScrollArea/ScrollArea.module.scss +45 -48
  531. package/src/components/ScrollArea/index.tsx +16 -16
  532. package/src/components/ScrollArea/scroll-state.ts +24 -24
  533. package/src/components/Select/Select.module.scss +20 -19
  534. package/src/components/Select/index.tsx +26 -24
  535. package/src/components/Separator/Separator.contract.json +29 -53
  536. package/src/components/Separator/Separator.module.scss +24 -40
  537. package/src/components/Separator/index.tsx +16 -11
  538. package/src/components/Sidebar/Sidebar.contract.json +35 -67
  539. package/src/components/Sidebar/Sidebar.module.scss +94 -88
  540. package/src/components/Sidebar/index.tsx +167 -167
  541. package/src/components/Skeleton/Skeleton.contract.json +34 -60
  542. package/src/components/Skeleton/Skeleton.module.scss +50 -26
  543. package/src/components/Skeleton/index.tsx +16 -15
  544. package/src/components/Slider/Slider.contract.json +27 -39
  545. package/src/components/Slider/Slider.module.scss +9 -22
  546. package/src/components/Stack/Stack.contract.json +30 -57
  547. package/src/components/Stack/Stack.module.scss +26 -24
  548. package/src/components/Stack/index.tsx +3 -3
  549. package/src/components/Switch/Switch.contract.json +33 -46
  550. package/src/components/Switch/Switch.module.scss +106 -59
  551. package/src/components/Table/Table.contract.json +28 -46
  552. package/src/components/Table/Table.module.scss +24 -16
  553. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  554. package/src/components/TableOfContents/TableOfContents.module.scss +17 -13
  555. package/src/components/TableOfContents/index.tsx +27 -10
  556. package/src/components/Tabs/Tabs.contract.json +35 -56
  557. package/src/components/Tabs/Tabs.module.scss +27 -31
  558. package/src/components/Tabs/index.tsx +30 -15
  559. package/src/components/Text/Text.contract.json +52 -72
  560. package/src/components/Text/Text.module.scss +34 -18
  561. package/src/components/Text/index.tsx +123 -83
  562. package/src/components/Textarea/Textarea.contract.json +24 -55
  563. package/src/components/Textarea/Textarea.module.scss +22 -52
  564. package/src/components/Textarea/index.tsx +3 -14
  565. package/src/components/Theme/Theme.contract.json +35 -53
  566. package/src/components/Theme/index.tsx +41 -13
  567. package/src/components/ThemeToggle/ThemeButton.tsx +49 -0
  568. package/src/components/ThemeToggle/ThemeToggle.module.scss +20 -27
  569. package/src/components/ThemeToggle/icons.tsx +46 -0
  570. package/src/components/ThemeToggle/index.tsx +9 -55
  571. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +34 -50
  572. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +9 -7
  573. package/src/components/ThinkingIndicator/index.tsx +12 -14
  574. package/src/components/Toast/Toast.contract.json +55 -49
  575. package/src/components/Toast/Toast.module.scss +50 -105
  576. package/src/components/Toast/index.tsx +39 -34
  577. package/src/components/ToggleGroup/ToggleGroup.contract.json +39 -40
  578. package/src/components/ToggleGroup/ToggleGroup.module.scss +30 -27
  579. package/src/components/ToggleGroup/index.tsx +11 -11
  580. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  581. package/src/components/Tooltip/Tooltip.module.scss +16 -10
  582. package/src/components/Tooltip/index.tsx +19 -24
  583. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  584. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +4 -14
  585. package/src/components/VisuallyHidden/index.tsx +5 -5
  586. package/src/index.ts +16 -12
  587. package/src/measurements/MeasurementTargets.module.scss +6 -7
  588. package/src/measurements/generated.ts +46 -97
  589. package/src/measurements/index.ts +0 -1
  590. package/src/measurements/measurements.json +44 -116
  591. package/src/recipes/_action.scss +4 -4
  592. package/src/recipes/_boolean-range.scss +12 -16
  593. package/src/recipes/_feedback.scss +17 -16
  594. package/src/recipes/_field.scss +28 -16
  595. package/src/recipes/_layout.scss +14 -7
  596. package/src/recipes/_navigation.scss +84 -29
  597. package/src/recipes/_overlay.scss +143 -43
  598. package/src/recipes/_popup.scss +54 -34
  599. package/src/recipes/_prose.scss +48 -28
  600. package/src/recipes/_representation.scss +10 -9
  601. package/src/recipes/_segmented.scss +1 -1
  602. package/src/recipes/_table-chrome.scss +42 -17
  603. package/src/recipes/_target.scss +2 -4
  604. package/src/recipes/_typography.scss +10 -0
  605. package/src/scss.d.ts +1 -1
  606. package/src/styles/globals.scss +31 -25
  607. package/src/tokens/_component-properties.scss +19 -1
  608. package/src/tokens/_computed.scss +32 -49
  609. package/src/tokens/_derive.scss +112 -210
  610. package/src/tokens/_measurements.catalog.generated.css +62 -44
  611. package/src/tokens/_measurements.generated.scss +119 -249
  612. package/src/tokens/_mixins.scss +49 -48
  613. package/src/tokens/_palettes.scss +39 -167
  614. package/src/tokens/_property-registrations.scss +9 -0
  615. package/src/tokens/_seeds.scss +20 -31
  616. package/src/tokens/_variables.scss +251 -94
  617. package/src/utils/a11y.tsx +69 -69
  618. package/src/utils/aria.ts +3 -3
  619. package/src/utils/canonical-stamp.ts +2 -12
  620. package/src/utils/css-warning.ts +7 -7
  621. package/src/utils/env.ts +25 -0
  622. package/src/utils/keyboard-shortcuts.ts +131 -126
  623. package/src/utils/seed-derivation.ts +11 -14
  624. package/src/utils/theme-presets.ts +5 -12
  625. package/dist/blocks/AccountSettings.block.d.ts +0 -3
  626. package/dist/blocks/AccountSettings.block.d.ts.map +0 -1
  627. package/dist/blocks/ActivityFeedSkeleton.block.d.ts +0 -3
  628. package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +0 -1
  629. package/dist/blocks/BlogEditor.block.d.ts +0 -3
  630. package/dist/blocks/BlogEditor.block.d.ts.map +0 -1
  631. package/dist/blocks/ChatInterface.block.d.ts +0 -3
  632. package/dist/blocks/ChatInterface.block.d.ts.map +0 -1
  633. package/dist/blocks/ChatMessages.block.d.ts +0 -3
  634. package/dist/blocks/ChatMessages.block.d.ts.map +0 -1
  635. package/dist/blocks/CheckoutForm.block.d.ts +0 -3
  636. package/dist/blocks/CheckoutForm.block.d.ts.map +0 -1
  637. package/dist/blocks/CommandPalette.block.d.ts +0 -3
  638. package/dist/blocks/CommandPalette.block.d.ts.map +0 -1
  639. package/dist/blocks/ContactForm.block.d.ts +0 -3
  640. package/dist/blocks/ContactForm.block.d.ts.map +0 -1
  641. package/dist/blocks/DashboardPage.block.d.ts +0 -3
  642. package/dist/blocks/DashboardPage.block.d.ts.map +0 -1
  643. package/dist/blocks/DashboardSkeleton.block.d.ts +0 -3
  644. package/dist/blocks/DashboardSkeleton.block.d.ts.map +0 -1
  645. package/dist/blocks/DataTable.block.d.ts +0 -3
  646. package/dist/blocks/DataTable.block.d.ts.map +0 -1
  647. package/dist/blocks/EmptyState.block.d.ts +0 -3
  648. package/dist/blocks/EmptyState.block.d.ts.map +0 -1
  649. package/dist/blocks/FAQSection.block.d.ts +0 -3
  650. package/dist/blocks/FAQSection.block.d.ts.map +0 -1
  651. package/dist/blocks/FeatureGrid.block.d.ts +0 -3
  652. package/dist/blocks/FeatureGrid.block.d.ts.map +0 -1
  653. package/dist/blocks/HeroSection.block.d.ts +0 -3
  654. package/dist/blocks/HeroSection.block.d.ts.map +0 -1
  655. package/dist/blocks/NavigationHeader.block.d.ts +0 -3
  656. package/dist/blocks/NavigationHeader.block.d.ts.map +0 -1
  657. package/dist/blocks/PaginatedTable.block.d.ts +0 -3
  658. package/dist/blocks/PaginatedTable.block.d.ts.map +0 -1
  659. package/dist/blocks/PricingComparison.block.d.ts +0 -3
  660. package/dist/blocks/PricingComparison.block.d.ts.map +0 -1
  661. package/dist/blocks/ProductCard.block.d.ts +0 -3
  662. package/dist/blocks/ProductCard.block.d.ts.map +0 -1
  663. package/dist/blocks/RegistrationForm.block.d.ts +0 -3
  664. package/dist/blocks/RegistrationForm.block.d.ts.map +0 -1
  665. package/dist/blocks/SettingsDrawer.block.d.ts +0 -3
  666. package/dist/blocks/SettingsDrawer.block.d.ts.map +0 -1
  667. package/dist/blocks/SettingsPanel.block.d.ts +0 -3
  668. package/dist/blocks/SettingsPanel.block.d.ts.map +0 -1
  669. package/dist/blocks/ShoppingCart.block.d.ts +0 -3
  670. package/dist/blocks/ShoppingCart.block.d.ts.map +0 -1
  671. package/dist/blocks/StatsCardSkeleton.block.d.ts +0 -3
  672. package/dist/blocks/StatsCardSkeleton.block.d.ts.map +0 -1
  673. package/dist/blocks/TableSkeleton.block.d.ts +0 -3
  674. package/dist/blocks/TableSkeleton.block.d.ts.map +0 -1
  675. package/dist/blocks/ThinkingStates.block.d.ts +0 -3
  676. package/dist/blocks/ThinkingStates.block.d.ts.map +0 -1
  677. package/dist/components/Toggle/index.d.ts +0 -3
  678. package/dist/components/Toggle/index.d.ts.map +0 -1
  679. package/src/components/Button/Button.contract.json +0 -218
  680. package/src/components/Card/Card.contract.json +0 -175
  681. package/src/components/DataTable/DataTable.contract.json +0 -302
  682. package/src/components/Dialog/Dialog.contract.json +0 -159
  683. package/src/components/Select/Select.contract.json +0 -259
  684. package/src/components/Toggle/index.ts +0 -7
  685. package/src/tokens/_density.scss +0 -85
@@ -1,19 +1,14 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Skeleton",
4
- "description": "Placeholder loading state for content",
4
+ "description": "Holds the shape of content that has not arrived yet.",
5
5
  "category": "feedback",
6
- "tags": [
7
- "loading",
8
- "placeholder",
9
- "skeleton",
10
- "shimmer"
11
- ],
6
+ "tags": ["loading", "placeholder", "skeleton", "shimmer"],
12
7
  "status": "stable",
13
8
  "sourcePath": "src/components/Skeleton/index.tsx",
14
9
  "exportName": "Skeleton",
15
10
  "propsSummary": [
16
- "variant: text|heading|avatar|button|input|rect (default: rect)",
11
+ "shape: text|heading|avatar|button|input|rect (default: rect)",
17
12
  "size: sm|md|lg (default: md)",
18
13
  "width: union",
19
14
  "height: union",
@@ -22,30 +17,19 @@
22
17
  "static: boolean (default: false)"
23
18
  ],
24
19
  "props": {
25
- "variant": {
20
+ "shape": {
26
21
  "type": "enum",
27
- "description": "Semantic variant that auto-sizes",
22
+ "description": "Semantic shape that auto-sizes",
28
23
  "default": "rect",
29
24
  "required": false,
30
- "values": [
31
- "text",
32
- "heading",
33
- "avatar",
34
- "button",
35
- "input",
36
- "rect"
37
- ]
25
+ "values": ["text", "heading", "avatar", "button", "input", "rect"]
38
26
  },
39
27
  "size": {
40
28
  "type": "enum",
41
- "description": "Size for avatar/button variants",
29
+ "description": "Size for avatar/button shapes",
42
30
  "default": "md",
43
31
  "required": false,
44
- "values": [
45
- "sm",
46
- "md",
47
- "lg"
48
- ]
32
+ "values": ["sm", "md", "lg"]
49
33
  },
50
34
  "width": {
51
35
  "type": "union",
@@ -67,13 +51,7 @@
67
51
  "type": "enum",
68
52
  "description": "Border radius override",
69
53
  "required": false,
70
- "values": [
71
- "sm",
72
- "md",
73
- "lg",
74
- "none",
75
- "full"
76
- ]
54
+ "values": ["sm", "md", "lg", "none", "full"]
77
55
  },
78
56
  "static": {
79
57
  "type": "boolean",
@@ -84,54 +62,53 @@
84
62
  },
85
63
  "usage": {
86
64
  "when": [
87
- "Content is loading asynchronously",
88
- "Preventing layout shift during data fetching",
89
- "Providing visual feedback that content is coming",
90
- "Improving perceived performance"
65
+ "Content is still being fetched",
66
+ "You want to stop the layout jumping when it lands",
67
+ "Making a wait feel shorter than it is"
91
68
  ],
92
69
  "whenNot": [
93
- "Short loading times (< 300ms)",
94
- "When spinner is more appropriate",
95
- "Background operations without visible impact"
70
+ "Waits under about 300ms",
71
+ "A spinner says it better",
72
+ "Work the user cannot see anyway"
96
73
  ],
97
74
  "guidelines": [
98
- "Match skeleton shape to expected content",
99
- "Use semantic variants (text, heading, avatar) for consistency",
100
- "Maintain similar dimensions to loaded content",
101
- "Avoid too many skeleton elements - simplify complex layouts",
102
- "Skeleton and Skeleton.Text forward DOM props (id, aria-*, data-*, handlers)"
75
+ "Match the shape and size of the real content",
76
+ "Prefer the text, heading, and avatar shapes over hand-rolled boxes",
77
+ "Give Skeleton.Text an ancestor with a real width — percentage lines collapse without one",
78
+ "A few big shapes beat many small ones",
79
+ "Skeleton and Skeleton.Text forward id, aria-*, data-* and handlers"
103
80
  ],
104
81
  "accessibility": [
105
- "Skeletons are decorative - use aria-hidden",
106
- "Announce loading state separately if needed",
107
- "Ensure sufficient contrast for the animation"
82
+ "Skeletons are decoration hide them with aria-hidden",
83
+ "Announce the loading state separately if it matters",
84
+ "Keep the pulse subtle but visible against the surface"
108
85
  ]
109
86
  },
110
87
  "examples": [
111
88
  {
112
89
  "name": "Default",
113
- "description": "Basic rectangle skeleton",
90
+ "description": "One rectangle at an explicit size.",
114
91
  "code": "<Skeleton width={200} height={20} />"
115
92
  },
116
93
  {
117
94
  "name": "Text Lines",
118
- "description": "Multi-line text placeholder",
119
- "code": "<Skeleton.Text lines={3} />"
95
+ "description": "Stacked lines that fill the width they are given.",
96
+ "code": "<div style={{ width: 260 }}>\n <Skeleton.Text lines={3} />\n</div>"
120
97
  },
121
98
  {
122
- "name": "Semantic Variants",
123
- "description": "Pre-configured shapes for common elements",
124
- "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--fui-space-2)' }}>\n <Skeleton variant=\"heading\" width={200} />\n <Skeleton variant=\"text\" width=\"100%\" />\n <Skeleton variant=\"text\" width=\"80%\" />\n</div>"
99
+ "name": "Semantic Shapes",
100
+ "description": "Heading sits taller than the body lines under it.",
101
+ "code": "<div\n style={{\n width: 260,\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--fui-space-2)',\n }}\n>\n <Skeleton shape=\"heading\" width={200} />\n <Skeleton shape=\"text\" width=\"100%\" />\n <Skeleton shape=\"text\" width=\"80%\" />\n</div>"
125
102
  },
126
103
  {
127
104
  "name": "Avatar Skeleton",
128
- "description": "Circular placeholder for avatars",
105
+ "description": "Circles matching the three avatar sizes.",
129
106
  "code": "<div style={{ display: 'flex', gap: 'var(--fui-space-1)', alignItems: 'center' }}>\n <Skeleton.Circle size=\"sm\" />\n <Skeleton.Circle size=\"md\" />\n <Skeleton.Circle size=\"lg\" />\n</div>"
130
107
  },
131
108
  {
132
109
  "name": "Card Skeleton",
133
- "description": "Composed skeleton for a card layout",
134
- "code": "<div style={{ width: 300, padding: 'var(--fui-space-2)', border: '1px solid var(--fui-border)', borderRadius: 'var(--fui-radius-lg)' }}>\n <Skeleton variant=\"rect\" height={120} radius=\"md\" />\n <div style={{ marginTop: 'var(--fui-space-2)' }}>\n <Skeleton variant=\"heading\" width=\"60%\" />\n </div>\n <div style={{ marginTop: 'var(--fui-space-1)' }}>\n <Skeleton.Text lines={2} />\n </div>\n</div>"
110
+ "description": "Media, title, then body — the card before it loads.",
111
+ "code": "<div\n style={{\n width: 300,\n padding: 'var(--fui-space-2)',\n border: '1px solid var(--fui-border)',\n borderRadius: 'var(--fui-radius-lg)',\n }}\n>\n <Skeleton shape=\"rect\" height={120} radius=\"md\" />\n <div style={{ marginTop: 'var(--fui-space-2)' }}>\n <Skeleton shape=\"heading\" width=\"60%\" />\n </div>\n <div style={{ marginTop: 'var(--fui-space-1)' }}>\n <Skeleton.Text lines={2} />\n </div>\n</div>"
135
112
  }
136
113
  ],
137
114
  "relations": [
@@ -143,7 +120,7 @@
143
120
  ],
144
121
  "contract": {
145
122
  "propsSummary": [
146
- "variant: text|heading|avatar|button|input|rect",
123
+ "shape: text|heading|avatar|button|input|rect",
147
124
  "size: sm|md|lg (for avatar/button)",
148
125
  "width/height: custom dimensions",
149
126
  "fill: boolean - fill parent",
@@ -152,10 +129,7 @@
152
129
  },
153
130
  "ai": {
154
131
  "compositionPattern": "compound",
155
- "subComponents": [
156
- "Text",
157
- "Circle"
158
- ]
132
+ "subComponents": ["Text", "Circle"]
159
133
  },
160
134
  "provenance": {
161
135
  "source": "migrated",
@@ -1,55 +1,72 @@
1
1
  @use "../../tokens/variables" as *;
2
+ @use "../../tokens/measurements.generated" as measurements;
2
3
  @use "../../recipes/representation" as representation;
3
4
 
4
5
  // ============================================
5
6
  // Skeleton Component Styles
6
7
  // ============================================
7
8
 
8
- // Animation
9
- @keyframes skeleton-pulse {
10
- 0%,
11
- 100% {
12
- opacity: 1;
9
+ // Animation — a highlight travelling across the placeholder, not the whole
10
+ // block fading out. A pulsing opacity spends half its cycle invisible on a
11
+ // light surface; the shimmer keeps the missing fact legible the entire time.
12
+ @keyframes skeleton-shimmer {
13
+ from {
14
+ background-position: 120% 0;
13
15
  }
14
- 50% {
15
- opacity: 0.5;
16
+ to {
17
+ background-position: -120% 0;
16
18
  }
17
19
  }
18
20
 
19
21
  // Base skeleton
20
22
  .skeleton {
21
23
  display: block;
22
- background-color: var(--fui-bg-tertiary, #{$fui-bg-tertiary});
23
- animation: skeleton-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
24
+ background-color: var(--fui-skeleton, #{$fui-bg-tertiary});
25
+ background-image: linear-gradient(
26
+ 90deg,
27
+ var(--fui-skeleton, #{$fui-bg-tertiary}) 0%,
28
+ var(--fui-skeleton-hi, #{$fui-bg-secondary}) 45%,
29
+ var(--fui-skeleton, #{$fui-bg-tertiary}) 90%
30
+ );
31
+ background-size: 240% 100%;
32
+ animation: skeleton-shimmer var(--fui-duration-shimmer, $fui-duration-shimmer) linear infinite;
24
33
  border-radius: var(--fui-radius-md, #{$fui-radius-md});
25
34
  }
26
35
 
27
36
  // Static (no animation)
28
37
  .static {
29
38
  animation: none;
39
+ background-image: none;
40
+ }
41
+
42
+ @media (prefers-reduced-motion: reduce) {
43
+ .skeleton {
44
+ animation: none;
45
+ background-image: none;
46
+ }
30
47
  }
31
48
 
32
49
  // Fill parent
33
50
  .fill {
34
- width: 100%;
35
- height: 100%;
51
+ inline-size: 100%;
52
+ block-size: 100%;
36
53
  }
37
54
 
38
55
  // ============================================
39
- // Semantic Variants
56
+ // Semantic shapes
40
57
  // ============================================
41
58
 
42
59
  // Text - single line of body text
43
60
  .text {
44
- height: 1em;
45
- width: 100%;
61
+ block-size: 1em;
62
+ inline-size: 100%;
46
63
  border-radius: var(--fui-radius-sm, #{$fui-radius-sm});
47
64
  }
48
65
 
49
66
  // Heading - taller for headings
50
67
  .heading {
51
- height: 1.5em;
52
- width: 100%;
68
+ block-size: 1.5em;
69
+ inline-size: 100%;
53
70
  border-radius: var(--fui-radius-sm, #{$fui-radius-sm});
54
71
  }
55
72
 
@@ -76,15 +93,21 @@
76
93
  }
77
94
 
78
95
  .button-sm {
79
- inline-size: var(--fui-raw-space-64, 64px);
96
+ inline-size: var(--fui-raw-space-64, #{measurements.raw-space(64)});
80
97
  }
81
98
 
82
99
  .button-md {
83
- inline-size: calc(var(--fui-raw-space-64, 64px) + var(--fui-raw-space-16, 16px));
100
+ inline-size: calc(
101
+ var(--fui-raw-space-64, #{measurements.raw-space(64)}) +
102
+ var(--fui-raw-space-16, #{measurements.raw-space(16)})
103
+ );
84
104
  }
85
105
 
86
106
  .button-lg {
87
- inline-size: calc(var(--fui-raw-space-64, 64px) + var(--fui-raw-space-32, 32px));
107
+ inline-size: calc(
108
+ var(--fui-raw-space-64, #{measurements.raw-space(64)}) +
109
+ var(--fui-raw-space-32, #{measurements.raw-space(32)})
110
+ );
88
111
  }
89
112
 
90
113
  // Input - matches input field height
@@ -109,7 +132,7 @@
109
132
  // ============================================
110
133
 
111
134
  .radius-none {
112
- border-radius: 0;
135
+ border-radius: var(--fui-radius-none, #{$fui-radius-none});
113
136
  }
114
137
 
115
138
  .radius-sm {
@@ -135,22 +158,23 @@
135
158
  .textContainer {
136
159
  display: flex;
137
160
  flex-direction: column;
138
- width: 100%;
161
+ inline-size: 100%;
139
162
  }
140
163
 
141
164
  .gap-sm {
142
- gap: var(--fui-raw-space-8, 8px);
165
+ gap: var(--fui-raw-space-8, #{measurements.raw-space(8)});
143
166
  }
144
167
 
145
168
  .gap-md {
146
- gap: var(--fui-raw-space-12, 12px);
169
+ gap: var(--fui-raw-space-12, #{measurements.raw-space(12)});
147
170
  }
148
171
 
149
172
  .textLine {
150
- height: 1em;
151
- width: 100%;
173
+ block-size: 1em;
174
+ inline-size: 100%;
152
175
  background-color: var(--fui-bg-tertiary, #{$fui-bg-tertiary});
153
- animation: skeleton-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
176
+ animation: skeleton-pulse var(--fui-duration-shimmer, $fui-duration-shimmer)
177
+ cubic-bezier(0.4, 0, 0.6, 1) infinite;
154
178
  border-radius: var(--fui-radius-sm, #{$fui-radius-sm});
155
179
  }
156
180
 
@@ -5,7 +5,7 @@ import styles from "./Skeleton.module.scss";
5
5
  // Types
6
6
  // ============================================
7
7
 
8
- export type SkeletonVariant =
8
+ export type SkeletonShape =
9
9
  | "text" // Single line of text, height: 1em
10
10
  | "heading" // Heading text, height: 1.5em
11
11
  | "avatar" // Circular, uses size prop
@@ -17,21 +17,22 @@ export type SkeletonSize = "sm" | "md" | "lg";
17
17
 
18
18
  export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
19
19
  /**
20
- * Semantic variant that auto-sizes based on design tokens.
20
+ * Semantic shape that auto-sizes from the design tokens. Not chrome, so it
21
+ * is `shape`, not `variant`.
21
22
  * @default 'rect'
22
23
  */
23
- variant?: SkeletonVariant;
24
+ shape?: SkeletonShape;
24
25
  /**
25
- * Size variant for avatar, button, and input placeholders.
26
+ * Size for the avatar, button, and input shapes.
26
27
  * @default 'md'
27
28
  */
28
29
  size?: SkeletonSize;
29
30
  /**
30
- * Width in pixels or CSS value. Auto-determined for most variants.
31
+ * Width in pixels or CSS value. Auto-determined for most shapes.
31
32
  */
32
33
  width?: number | string;
33
34
  /**
34
- * Height in pixels or CSS value. Auto-determined for semantic variants.
35
+ * Height in pixels or CSS value. Auto-determined for semantic shapes.
35
36
  */
36
37
  height?: number | string;
37
38
  /**
@@ -40,7 +41,7 @@ export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
40
41
  */
41
42
  fill?: boolean;
42
43
  /**
43
- * Border radius override. Auto-determined for most variants.
44
+ * Border radius override. Auto-determined for most shapes.
44
45
  */
45
46
  radius?: "none" | "sm" | "md" | "lg" | "full";
46
47
  /**
@@ -69,7 +70,7 @@ export interface SkeletonTextProps extends Omit<React.HTMLAttributes<HTMLDivElem
69
70
 
70
71
  const SkeletonBase = React.forwardRef<HTMLDivElement, SkeletonProps>(function SkeletonBase(
71
72
  {
72
- variant = "rect",
73
+ shape = "rect",
73
74
  size = "md",
74
75
  width,
75
76
  height,
@@ -83,10 +84,10 @@ const SkeletonBase = React.forwardRef<HTMLDivElement, SkeletonProps>(function Sk
83
84
  ) {
84
85
  const classes = [
85
86
  styles.skeleton,
86
- styles[variant],
87
- variant === "avatar" && styles[`avatar-${size}`],
88
- variant === "button" && styles[`button-${size}`],
89
- variant === "input" && styles[`input-${size}`],
87
+ styles[shape],
88
+ shape === "avatar" && styles[`avatar-${size}`],
89
+ shape === "button" && styles[`button-${size}`],
90
+ shape === "input" && styles[`input-${size}`],
90
91
  fill && styles.fill,
91
92
  radius && styles[`radius-${radius}`],
92
93
  isStatic && styles.static,
@@ -147,7 +148,7 @@ function SkeletonText({
147
148
  }
148
149
 
149
150
  // ============================================
150
- // Skeleton.Circle - Shorthand for avatar variant
151
+ // Skeleton.Circle - Shorthand for the avatar shape
151
152
  // ============================================
152
153
 
153
154
  function SkeletonCircle({
@@ -159,10 +160,10 @@ function SkeletonCircle({
159
160
  }) {
160
161
  if (typeof size === "number") {
161
162
  return (
162
- <SkeletonBase variant="rect" width={size} height={size} radius="full" className={className} />
163
+ <SkeletonBase shape="rect" width={size} height={size} radius="full" className={className} />
163
164
  );
164
165
  }
165
- return <SkeletonBase variant="avatar" size={size} className={className} />;
166
+ return <SkeletonBase shape="avatar" size={size} className={className} />;
166
167
  }
167
168
 
168
169
  // ============================================
@@ -1,15 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Slider",
4
- "description": "Range input control for selecting a numeric value within a defined range. Supports labels, value display, and custom step intervals.",
5
- "category": "forms",
6
- "tags": [
7
- "slider",
8
- "range",
9
- "input",
10
- "number",
11
- "control"
12
- ],
4
+ "description": "Selects a numeric value within a defined range.",
5
+ "category": "inputs",
6
+ "tags": ["slider", "range", "input", "number", "control"],
13
7
  "status": "stable",
14
8
  "sourcePath": "src/components/Slider/index.tsx",
15
9
  "exportName": "Slider",
@@ -141,63 +135,63 @@
141
135
  },
142
136
  "usage": {
143
137
  "when": [
144
- "Selecting a value from a continuous range",
145
- "Volume or brightness controls",
146
- "Price range filters",
147
- "Settings that benefit from visual feedback"
138
+ "Any value along a range, where roughly right is good enough",
139
+ "Volume, brightness, opacity",
140
+ "Price and range filters",
141
+ "The effect is visible as the user drags"
148
142
  ],
149
143
  "whenNot": [
150
- "Precise numeric input (use Input type=\"number\")",
151
- "Discrete options (use RadioGroup or Select)",
152
- "Yes/no choices (use Switch)"
144
+ "An exact number matters (use Input type=\"number\")",
145
+ "A handful of fixed choices (use RadioGroup or Select)",
146
+ "On or off (use Switch)"
153
147
  ],
154
148
  "guidelines": [
155
- "Always provide a label describing what the slider controls",
156
- "Show the current value when precision matters",
157
- "Use appropriate min/max values for the context",
158
- "Consider step size for usability"
149
+ "Label what the track controls",
150
+ "Turn on showValue whenever the number matters",
151
+ "Set min and max to the real limits, not 0-100 by habit",
152
+ "Pick a step the user can actually land on"
159
153
  ],
160
154
  "accessibility": [
161
- "Label is associated with the slider",
162
- "Keyboard accessible with arrow keys",
163
- "Current value is announced to screen readers",
164
- "Uses native slider semantics"
155
+ "Label is tied to the track",
156
+ "Arrow keys move the thumb",
157
+ "The current value is announced",
158
+ "Native slider semantics throughout"
165
159
  ]
166
160
  },
167
161
  "examples": [
168
162
  {
169
163
  "name": "Default",
170
- "description": "Basic slider with label",
164
+ "description": "0-100 with no number shown.",
171
165
  "code": "<div style={{ width: '300px' }}>\n <Slider label=\"Volume\" defaultValue={50} />\n</div>"
172
166
  },
173
167
  {
174
168
  "name": "With Value Display",
175
- "description": "Shows current value alongside the slider",
169
+ "description": "showValue prints the number opposite the label.",
176
170
  "code": "<div style={{ width: '300px' }}>\n <Slider\n label=\"Brightness\"\n defaultValue={75}\n showValue\n valueSuffix=\"%\"\n />\n</div>"
177
171
  },
178
172
  {
179
173
  "name": "Custom Range",
180
- "description": "Custom min, max, and step values",
174
+ "description": "min, max and step bound the track to real-world units.",
181
175
  "code": "<div style={{ width: '300px', display: 'flex', flexDirection: 'column', gap: '16px' }}>\n <Slider\n label=\"Temperature\"\n min={60}\n max={80}\n step={1}\n defaultValue={72}\n showValue\n valueSuffix=\"°F\"\n />\n <Slider\n label=\"Font Size\"\n min={12}\n max={32}\n step={2}\n defaultValue={16}\n showValue\n valueSuffix=\"px\"\n />\n</div>"
182
176
  },
183
177
  {
184
178
  "name": "Controlled",
185
- "description": "Controlled slider with external state",
179
+ "description": "The parent owns the value and can react to every move.",
186
180
  "code": "<ControlledSliderDemo />"
187
181
  },
188
182
  {
189
183
  "name": "Drag Value Bubble",
190
- "description": "Shows a floating value bubble while the thumb is being dragged",
184
+ "description": "The number floats above the thumb only while dragging.",
191
185
  "code": "<div style={{ width: '300px' }}>\n <Slider\n label=\"Mix\"\n defaultValue={40}\n showValueOnDrag\n valueSuffix=\"%\"\n />\n</div>"
192
186
  },
193
187
  {
194
188
  "name": "With Helper Text",
195
- "description": "Slider with helper text guidance",
189
+ "description": "A line below the track explains the trade-off.",
196
190
  "code": "<div style={{ width: '300px' }}>\n <Slider\n label=\"Quality\"\n defaultValue={80}\n showValue\n valueSuffix=\"%\"\n helperText=\"Higher quality increases file size\"\n />\n</div>"
197
191
  },
198
192
  {
199
193
  "name": "Disabled",
200
- "description": "Disabled slider",
194
+ "description": "Dimmed; the thumb will not move.",
201
195
  "code": "<div style={{ width: '300px' }}>\n <Slider\n label=\"Locked Setting\"\n defaultValue={30}\n showValue\n disabled\n />\n</div>"
202
196
  }
203
197
  ],
@@ -227,17 +221,11 @@
227
221
  "showValueOnDrag: boolean - show value bubble during drag",
228
222
  "valueSuffix: string - unit suffix"
229
223
  ],
230
- "a11yRules": [
231
- "A11Y_LABEL_REQUIRED",
232
- "A11Y_KEYBOARD_ACCESSIBLE",
233
- "A11Y_TARGET_SIZE_MIN"
234
- ]
224
+ "a11yRules": ["A11Y_LABEL_REQUIRED", "A11Y_KEYBOARD_ACCESSIBLE", "A11Y_TARGET_SIZE_MIN"]
235
225
  },
236
226
  "ai": {
237
227
  "compositionPattern": "compound",
238
- "subComponents": [
239
- "Root"
240
- ]
228
+ "subComponents": ["Root"]
241
229
  },
242
230
  "provenance": {
243
231
  "source": "migrated",
@@ -45,20 +45,21 @@
45
45
  position: relative;
46
46
  width: 100%;
47
47
  background-color: var(--fui-form-group-bg, $fui-bg-secondary);
48
- box-shadow: inset 0 0 0 1px var(--fui-form-group-border, $fui-border);
48
+ box-shadow: inset 0 0 0 var(--fui-stroke-hairline, 1px) var(--fui-form-group-border, $fui-border);
49
49
  border-radius: var(--fui-radius-full, $fui-radius-full);
50
50
  cursor: pointer;
51
51
 
52
52
  &[data-disabled] {
53
- opacity: 0.5;
54
- cursor: not-allowed;
53
+ @include disabled-state;
55
54
  }
55
+
56
+ @include high-contrast-outline;
56
57
  }
57
58
 
58
59
  .indicator {
59
60
  position: absolute;
60
61
  height: 100%;
61
- background-color: var(--fui-field-selection-border, $fui-color-accent);
62
+ background-color: var(--fui-color-accent, $fui-color-accent);
62
63
  border-radius: var(--fui-radius-full, $fui-radius-full);
63
64
  }
64
65
 
@@ -67,7 +68,7 @@
67
68
  @include target.hit-area("compact");
68
69
 
69
70
  background-color: var(--fui-bg-primary, $fui-bg-primary);
70
- border: var(--fui-stroke-hairline, 1px) solid var(--fui-field-selection-border, $fui-color-accent);
71
+ border: var(--fui-stroke-hairline, 1px) solid var(--fui-color-accent, $fui-color-accent);
71
72
  border-radius: var(--fui-radius-full, $fui-radius-full);
72
73
  box-shadow: var(--fui-shadow-sm, $fui-shadow-sm);
73
74
  cursor: grab;
@@ -89,13 +90,14 @@
89
90
  }
90
91
 
91
92
  &[data-disabled] {
92
- cursor: not-allowed;
93
- opacity: 0.5;
93
+ @include disabled-state;
94
94
  }
95
95
 
96
96
  @media (pointer: coarse) {
97
97
  --_fui-target-hit-size: #{target.hit-size("touch")};
98
98
  }
99
+
100
+ @include high-contrast-outline;
99
101
  }
100
102
 
101
103
  .helper {
@@ -127,21 +129,6 @@
127
129
  var(--fui-color-danger-text, $fui-color-danger-text);
128
130
  }
129
131
 
130
- // ============================================
131
- // Accessibility: High Contrast Mode
132
- // ============================================
133
-
134
- @media (prefers-contrast: more) {
135
- .track {
136
- border: var(--fui-stroke-hairline, 1px) solid var(--fui-text-primary, $fui-text-primary);
137
- }
138
-
139
- .thumb {
140
- outline: var(--fui-stroke-default, 2px) solid var(--fui-text-primary, $fui-text-primary);
141
- outline-offset: var(--fui-stroke-hairline, 1px);
142
- }
143
- }
144
-
145
132
  // ============================================
146
133
  // Accessibility: Reduced Motion
147
134
  // ============================================