@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,14 +1,9 @@
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",
@@ -27,25 +22,14 @@
27
22
  "description": "Semantic variant 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
29
  "description": "Size for avatar/button variants",
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 variants 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
99
  "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>"
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 variant=\"heading\" width={200} />\n <Skeleton variant=\"text\" width=\"100%\" />\n <Skeleton variant=\"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 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>"
135
112
  }
136
113
  ],
137
114
  "relations": [
@@ -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,30 +1,48 @@
1
- @use '../../tokens/variables' as *;
1
+ @use "../../tokens/variables" as *;
2
+ @use "../../recipes/representation" as representation;
2
3
 
3
4
  // ============================================
4
5
  // Skeleton Component Styles
5
6
  // ============================================
6
7
 
7
- // Animation
8
- @keyframes skeleton-pulse {
9
- 0%, 100% {
10
- opacity: 1;
8
+ // Animation — a highlight travelling across the placeholder, not the whole
9
+ // block fading out. A pulsing opacity spends half its cycle invisible on a
10
+ // light surface; the shimmer keeps the missing fact legible the entire time.
11
+ @keyframes skeleton-shimmer {
12
+ from {
13
+ background-position: 120% 0;
11
14
  }
12
- 50% {
13
- opacity: 0.5;
15
+ to {
16
+ background-position: -120% 0;
14
17
  }
15
18
  }
16
19
 
17
20
  // Base skeleton
18
21
  .skeleton {
19
22
  display: block;
20
- background-color: var(--fui-bg-tertiary, #{$fui-bg-tertiary});
21
- animation: skeleton-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
23
+ background-color: var(--fui-skeleton, #{$fui-bg-tertiary});
24
+ background-image: linear-gradient(
25
+ 90deg,
26
+ var(--fui-skeleton, #{$fui-bg-tertiary}) 0%,
27
+ var(--fui-skeleton-hi, #{$fui-bg-secondary}) 45%,
28
+ var(--fui-skeleton, #{$fui-bg-tertiary}) 90%
29
+ );
30
+ background-size: 240% 100%;
31
+ animation: skeleton-shimmer var(--fui-duration-shimmer, $fui-duration-shimmer) linear infinite;
22
32
  border-radius: var(--fui-radius-md, #{$fui-radius-md});
23
33
  }
24
34
 
25
35
  // Static (no animation)
26
36
  .static {
27
37
  animation: none;
38
+ background-image: none;
39
+ }
40
+
41
+ @media (prefers-reduced-motion: reduce) {
42
+ .skeleton {
43
+ animation: none;
44
+ background-image: none;
45
+ }
28
46
  }
29
47
 
30
48
  // Fill parent
@@ -56,20 +74,10 @@
56
74
  border-radius: var(--fui-radius-full, #{$fui-radius-full});
57
75
  }
58
76
 
59
- // Avatar sizes (rem on a 14px root: 1rem = 14px)
60
- .avatar-sm {
61
- width: var(--fui-space-4, #{$fui-space-4}); // 28px
62
- height: var(--fui-space-4, #{$fui-space-4});
63
- }
64
-
65
- .avatar-md {
66
- width: 2.5rem; // 35px (no clean ladder step between space-4=28 and space-6=42)
67
- height: 2.5rem;
68
- }
69
-
70
- .avatar-lg {
71
- width: var(--fui-space-6, #{$fui-space-6}); // 42px
72
- height: var(--fui-space-6, #{$fui-space-6});
77
+ @each $size in ("sm", "md", "lg") {
78
+ .avatar-#{$size} {
79
+ @include representation.skeleton("avatar", $size);
80
+ }
73
81
  }
74
82
 
75
83
  // Button - matches button heights
@@ -77,28 +85,36 @@
77
85
  border-radius: var(--fui-radius-md, #{$fui-radius-md});
78
86
  }
79
87
 
88
+ @each $size in ("sm", "md", "lg") {
89
+ .button-#{$size} {
90
+ @include representation.skeleton("button", $size);
91
+ }
92
+ }
93
+
80
94
  .button-sm {
81
- height: var(--fui-button-height-sm, #{$fui-button-height-sm});
82
- width: 5rem; // 70px default width
95
+ inline-size: var(--fui-raw-space-64, 64px);
83
96
  }
84
97
 
85
98
  .button-md {
86
- height: var(--fui-button-height-md, #{$fui-button-height-md});
87
- width: 6rem; // 84px default width
99
+ inline-size: calc(var(--fui-raw-space-64, 64px) + var(--fui-raw-space-16, 16px));
88
100
  }
89
101
 
90
102
  .button-lg {
91
- height: var(--fui-button-height-lg, #{$fui-button-height-lg});
92
- width: 7rem; // 98px default width
103
+ inline-size: calc(var(--fui-raw-space-64, 64px) + var(--fui-raw-space-32, 32px));
93
104
  }
94
105
 
95
106
  // Input - matches input field height
96
107
  .input {
97
- height: var(--fui-input-height, #{$fui-input-height});
98
- width: 100%;
108
+ inline-size: 100%;
99
109
  border-radius: var(--fui-radius-md, #{$fui-radius-md});
100
110
  }
101
111
 
112
+ @each $size in ("sm", "md", "lg") {
113
+ .input-#{$size} {
114
+ @include representation.skeleton("field", $size);
115
+ }
116
+ }
117
+
102
118
  // Rect - generic rectangle (no preset dimensions)
103
119
  .rect {
104
120
  // Uses explicit width/height from props or fill
@@ -139,18 +155,19 @@
139
155
  }
140
156
 
141
157
  .gap-sm {
142
- gap: var(--fui-space-2, #{$fui-space-2}); // 14px
158
+ gap: var(--fui-raw-space-8, 8px);
143
159
  }
144
160
 
145
161
  .gap-md {
146
- gap: var(--fui-space-3, #{$fui-space-3}); // 21px
162
+ gap: var(--fui-raw-space-12, 12px);
147
163
  }
148
164
 
149
165
  .textLine {
150
166
  height: 1em;
151
167
  width: 100%;
152
168
  background-color: var(--fui-bg-tertiary, #{$fui-bg-tertiary});
153
- animation: skeleton-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
169
+ animation: skeleton-pulse var(--fui-duration-shimmer, $fui-duration-shimmer)
170
+ cubic-bezier(0.4, 0, 0.6, 1) infinite;
154
171
  border-radius: var(--fui-radius-sm, #{$fui-radius-sm});
155
172
  }
156
173
 
@@ -1,19 +1,19 @@
1
- import * as React from 'react';
2
- import styles from './Skeleton.module.scss';
1
+ import * as React from "react";
2
+ import styles from "./Skeleton.module.scss";
3
3
 
4
4
  // ============================================
5
5
  // Types
6
6
  // ============================================
7
7
 
8
8
  export type SkeletonVariant =
9
- | 'text' // Single line of text, height: 1em
10
- | 'heading' // Heading text, height: 1.5em
11
- | 'avatar' // Circular, uses size prop
12
- | 'button' // Button shape, uses size prop
13
- | 'input' // Form input height
14
- | 'rect'; // Rectangle, requires explicit dimensions or fill
9
+ | "text" // Single line of text, height: 1em
10
+ | "heading" // Heading text, height: 1.5em
11
+ | "avatar" // Circular, uses size prop
12
+ | "button" // Button shape, uses size prop
13
+ | "input" // Form input height
14
+ | "rect"; // Rectangle, requires explicit dimensions or fill
15
15
 
16
- export type SkeletonSize = 'sm' | 'md' | 'lg';
16
+ export type SkeletonSize = "sm" | "md" | "lg";
17
17
 
18
18
  export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
19
19
  /**
@@ -22,7 +22,7 @@ export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
22
22
  */
23
23
  variant?: SkeletonVariant;
24
24
  /**
25
- * Size variant for avatar/button. Ignored for text/heading/input.
25
+ * Size variant for avatar, button, and input placeholders.
26
26
  * @default 'md'
27
27
  */
28
28
  size?: SkeletonSize;
@@ -42,7 +42,7 @@ export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
42
42
  /**
43
43
  * Border radius override. Auto-determined for most variants.
44
44
  */
45
- radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
45
+ radius?: "none" | "sm" | "md" | "lg" | "full";
46
46
  /**
47
47
  * Disable animation for reduced motion preference.
48
48
  * @default false
@@ -50,7 +50,7 @@ export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
50
50
  static?: boolean;
51
51
  }
52
52
 
53
- export interface SkeletonTextProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
53
+ export interface SkeletonTextProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
54
54
  /** Number of text lines to render */
55
55
  lines?: number;
56
56
  /**
@@ -60,59 +60,60 @@ export interface SkeletonTextProps extends Omit<React.HTMLAttributes<HTMLDivElem
60
60
  */
61
61
  lastLineWidth?: number;
62
62
  /** Gap between lines. Uses spacing tokens. */
63
- gap?: 'sm' | 'md';
63
+ gap?: "sm" | "md";
64
64
  }
65
65
 
66
66
  // ============================================
67
67
  // Component
68
68
  // ============================================
69
69
 
70
- const SkeletonBase = React.forwardRef<HTMLDivElement, SkeletonProps>(
71
- function SkeletonBase(
72
- {
73
- variant = 'rect',
74
- size = 'md',
75
- width,
76
- height,
77
- fill = false,
78
- radius,
79
- static: isStatic = false,
80
- className,
81
- ...htmlProps
82
- },
83
- ref
84
- ) {
85
- const classes = [
86
- styles.skeleton,
87
- styles[variant],
88
- variant === 'avatar' && styles[`avatar-${size}`],
89
- variant === 'button' && styles[`button-${size}`],
90
- fill && styles.fill,
91
- radius && styles[`radius-${radius}`],
92
- isStatic && styles.static,
93
- className,
94
- ].filter(Boolean).join(' ');
95
-
96
- const style: React.CSSProperties = {};
97
-
98
- if (width !== undefined) {
99
- style.width = typeof width === 'number' ? `${width}px` : width;
100
- }
101
- if (height !== undefined) {
102
- style.height = typeof height === 'number' ? `${height}px` : height;
103
- }
70
+ const SkeletonBase = React.forwardRef<HTMLDivElement, SkeletonProps>(function SkeletonBase(
71
+ {
72
+ variant = "rect",
73
+ size = "md",
74
+ width,
75
+ height,
76
+ fill = false,
77
+ radius,
78
+ static: isStatic = false,
79
+ className,
80
+ ...htmlProps
81
+ },
82
+ ref
83
+ ) {
84
+ const classes = [
85
+ styles.skeleton,
86
+ styles[variant],
87
+ variant === "avatar" && styles[`avatar-${size}`],
88
+ variant === "button" && styles[`button-${size}`],
89
+ variant === "input" && styles[`input-${size}`],
90
+ fill && styles.fill,
91
+ radius && styles[`radius-${radius}`],
92
+ isStatic && styles.static,
93
+ className,
94
+ ]
95
+ .filter(Boolean)
96
+ .join(" ");
104
97
 
105
- return (
106
- <div
107
- ref={ref}
108
- {...htmlProps}
109
- className={classes}
110
- style={Object.keys(style).length > 0 ? style : undefined}
111
- aria-hidden="true"
112
- />
113
- );
98
+ const style: React.CSSProperties = {};
99
+
100
+ if (width !== undefined) {
101
+ style.width = typeof width === "number" ? `${width}px` : width;
102
+ }
103
+ if (height !== undefined) {
104
+ style.height = typeof height === "number" ? `${height}px` : height;
114
105
  }
115
- );
106
+
107
+ return (
108
+ <div
109
+ ref={ref}
110
+ {...htmlProps}
111
+ className={classes}
112
+ style={Object.keys(style).length > 0 ? style : undefined}
113
+ aria-hidden="true"
114
+ />
115
+ );
116
+ });
116
117
 
117
118
  // ============================================
118
119
  // Skeleton.Text - Multi-line text skeleton
@@ -121,15 +122,13 @@ const SkeletonBase = React.forwardRef<HTMLDivElement, SkeletonProps>(
121
122
  function SkeletonText({
122
123
  lines = 3,
123
124
  lastLineWidth = 80,
124
- gap = 'sm',
125
+ gap = "sm",
125
126
  className,
126
127
  ...htmlProps
127
128
  }: SkeletonTextProps) {
128
- const containerClasses = [
129
- styles.textContainer,
130
- styles[`gap-${gap}`],
131
- className,
132
- ].filter(Boolean).join(' ');
129
+ const containerClasses = [styles.textContainer, styles[`gap-${gap}`], className]
130
+ .filter(Boolean)
131
+ .join(" ");
133
132
 
134
133
  return (
135
134
  <div {...htmlProps} className={containerClasses} aria-hidden="true">
@@ -152,21 +151,15 @@ function SkeletonText({
152
151
  // ============================================
153
152
 
154
153
  function SkeletonCircle({
155
- size = 'md',
154
+ size = "md",
156
155
  className,
157
156
  }: {
158
157
  size?: SkeletonSize | number;
159
158
  className?: string;
160
159
  }) {
161
- if (typeof size === 'number') {
160
+ if (typeof size === "number") {
162
161
  return (
163
- <SkeletonBase
164
- variant="rect"
165
- width={size}
166
- height={size}
167
- radius="full"
168
- className={className}
169
- />
162
+ <SkeletonBase variant="rect" width={size} height={size} radius="full" className={className} />
170
163
  );
171
164
  }
172
165
  return <SkeletonBase variant="avatar" size={size} className={className} />;
@@ -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",