@sovereignfs/ui 0.54.0 → 0.89.1

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 (473) hide show
  1. package/LICENSE +373 -661
  2. package/NOTICE +8 -0
  3. package/README.md +4 -6
  4. package/dist/Accordion.module.css +1 -1
  5. package/dist/Alert.module.css +1 -1
  6. package/dist/AppsLauncher.module.css +102 -0
  7. package/dist/Avatar.module.css +1 -1
  8. package/dist/Badge.module.css +30 -7
  9. package/dist/BalanceChip.module.css +1 -1
  10. package/dist/Button.module.css +23 -2
  11. package/dist/Card.module.css +7 -1
  12. package/dist/CardTile.module.css +187 -0
  13. package/dist/CheckableListRow.module.css +8 -0
  14. package/dist/Checkbox.module.css +8 -0
  15. package/dist/CodeTextarea.module.css +7 -1
  16. package/dist/Collapsible.module.css +1 -1
  17. package/dist/ColorPicker.module.css +138 -0
  18. package/dist/Combobox.module.css +8 -2
  19. package/dist/Command.module.css +7 -1
  20. package/dist/ConfirmDialog.module.css +8 -2
  21. package/dist/ConsentPrompt.module.css +21 -0
  22. package/dist/DatePicker.module.css +7 -1
  23. package/dist/Dialog.module.css +130 -21
  24. package/dist/DragHandleRow.module.css +6 -0
  25. package/dist/Drawer.module.css +36 -7
  26. package/dist/FileDropzone.module.css +25 -1
  27. package/dist/Header.module.css +68 -0
  28. package/dist/HeaderFooterLayout.module.css +21 -0
  29. package/dist/IconPicker.module.css +15 -5
  30. package/dist/Input.module.css +7 -1
  31. package/dist/Kbd.module.css +1 -1
  32. package/dist/LegalLinks.module.css +9 -2
  33. package/dist/Markdown.module.css +29 -0
  34. package/dist/Menu.module.css +1 -0
  35. package/dist/Message.module.css +10 -1
  36. package/dist/MessageScroller.module.css +12 -1
  37. package/dist/MobileAppsDrawer.module.css +19 -14
  38. package/dist/MobileFooter.module.css +7 -1
  39. package/dist/MobileHeader.module.css +14 -1
  40. package/dist/NavList.module.css +139 -0
  41. package/dist/NavTabs.module.css +8 -2
  42. package/dist/NotificationsPanel.module.css +268 -0
  43. package/dist/OverlayHeader.module.css +1 -1
  44. package/dist/PageContainer.module.css +62 -0
  45. package/dist/PageHeader.module.css +54 -0
  46. package/dist/PageLayout.module.css +51 -0
  47. package/dist/Popover.module.css +1 -1
  48. package/dist/QrCode.module.css +17 -0
  49. package/dist/QuantityStepper.module.css +5 -3
  50. package/dist/RadioGroup.module.css +6 -0
  51. package/dist/Resizable.module.css +3 -3
  52. package/dist/RootLayout.module.css +12 -0
  53. package/dist/SegmentedControl.module.css +7 -1
  54. package/dist/Select.module.css +7 -1
  55. package/dist/Sheet.module.css +20 -2
  56. package/dist/SplitPane.module.css +5 -5
  57. package/dist/StatusBadge.module.css +1 -1
  58. package/dist/StepStrip.module.css +55 -0
  59. package/dist/SuggestionInput.module.css +14 -3
  60. package/dist/SwipableMobileCarousel.module.css +12 -3
  61. package/dist/SwipableMobileCarouselDots.module.css +21 -0
  62. package/dist/SwipeStack.module.css +101 -0
  63. package/dist/SystemBanner.module.css +16 -0
  64. package/dist/Table.module.css +2 -2
  65. package/dist/Tabs.module.css +7 -1
  66. package/dist/TagInput.module.css +8 -2
  67. package/dist/Textarea.module.css +15 -1
  68. package/dist/ThreeColumnLayout.module.css +35 -0
  69. package/dist/Toast.module.css +67 -3
  70. package/dist/Toggle.module.css +7 -0
  71. package/dist/Tooltip.module.css +7 -1
  72. package/dist/UserMenu.module.css +95 -0
  73. package/dist/fonts/OFL.txt +93 -0
  74. package/dist/fonts/hanken-grotesk-cyrillic-ext-wght-normal.woff2 +0 -0
  75. package/dist/fonts/hanken-grotesk-latin-ext-wght-normal.woff2 +0 -0
  76. package/dist/fonts/hanken-grotesk-latin-wght-normal.woff2 +0 -0
  77. package/dist/fonts/hanken-grotesk-vietnamese-wght-normal.woff2 +0 -0
  78. package/dist/index.d.ts +1156 -76
  79. package/dist/index.js +4223 -1513
  80. package/dist/tokens/fonts.css +53 -0
  81. package/dist/tokens/primitives.css +23 -12
  82. package/dist/tokens/semantic.css +32 -0
  83. package/dist/tokens/theme-presets.css +33 -0
  84. package/dist/tokens.css +2 -1
  85. package/package.json +46 -19
  86. package/src/__tests__/motion.test.tsx +0 -105
  87. package/src/components/Accordion/Accordion.module.css +0 -3
  88. package/src/components/Accordion/Accordion.stories.tsx +0 -110
  89. package/src/components/Accordion/Accordion.tsx +0 -53
  90. package/src/components/Accordion/__tests__/Accordion.test.tsx +0 -61
  91. package/src/components/Alert/Alert.module.css +0 -62
  92. package/src/components/Alert/Alert.stories.tsx +0 -96
  93. package/src/components/Alert/Alert.tsx +0 -58
  94. package/src/components/Alert/__tests__/Alert.test.tsx +0 -75
  95. package/src/components/AspectRatio/AspectRatio.module.css +0 -15
  96. package/src/components/AspectRatio/AspectRatio.stories.tsx +0 -78
  97. package/src/components/AspectRatio/AspectRatio.tsx +0 -21
  98. package/src/components/AspectRatio/__tests__/AspectRatio.test.tsx +0 -27
  99. package/src/components/Avatar/Avatar.module.css +0 -38
  100. package/src/components/Avatar/Avatar.tsx +0 -42
  101. package/src/components/Badge/Badge.module.css +0 -154
  102. package/src/components/Badge/Badge.stories.tsx +0 -226
  103. package/src/components/Badge/Badge.tsx +0 -81
  104. package/src/components/Badge/__tests__/Badge.test.tsx +0 -88
  105. package/src/components/BalanceChip/BalanceChip.module.css +0 -32
  106. package/src/components/BalanceChip/BalanceChip.stories.tsx +0 -45
  107. package/src/components/BalanceChip/BalanceChip.tsx +0 -33
  108. package/src/components/Breadcrumb/Breadcrumb.module.css +0 -49
  109. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +0 -47
  110. package/src/components/Breadcrumb/Breadcrumb.tsx +0 -57
  111. package/src/components/Breadcrumb/__tests__/Breadcrumb.test.tsx +0 -52
  112. package/src/components/Button/Button.module.css +0 -153
  113. package/src/components/Button/Button.stories.tsx +0 -83
  114. package/src/components/Button/Button.tsx +0 -52
  115. package/src/components/Button/__tests__/Button.test.tsx +0 -66
  116. package/src/components/ButtonGroup/ButtonGroup.module.css +0 -29
  117. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -57
  118. package/src/components/ButtonGroup/ButtonGroup.tsx +0 -27
  119. package/src/components/ButtonGroup/__tests__/ButtonGroup.test.tsx +0 -29
  120. package/src/components/Calendar/Calendar.module.css +0 -126
  121. package/src/components/Calendar/Calendar.tsx +0 -213
  122. package/src/components/Calendar/__tests__/Calendar.test.tsx +0 -98
  123. package/src/components/Calendar/dateUtils.ts +0 -97
  124. package/src/components/Card/Card.module.css +0 -42
  125. package/src/components/Card/Card.tsx +0 -34
  126. package/src/components/CheckableListRow/CheckableListRow.module.css +0 -95
  127. package/src/components/CheckableListRow/CheckableListRow.stories.tsx +0 -99
  128. package/src/components/CheckableListRow/CheckableListRow.tsx +0 -89
  129. package/src/components/Checkbox/Checkbox.module.css +0 -111
  130. package/src/components/Checkbox/Checkbox.tsx +0 -78
  131. package/src/components/CodeTextarea/CodeTextarea.module.css +0 -53
  132. package/src/components/CodeTextarea/CodeTextarea.stories.tsx +0 -77
  133. package/src/components/CodeTextarea/CodeTextarea.tsx +0 -36
  134. package/src/components/Collapsible/Collapsible.module.css +0 -70
  135. package/src/components/Collapsible/Collapsible.stories.tsx +0 -62
  136. package/src/components/Collapsible/Collapsible.tsx +0 -66
  137. package/src/components/Collapsible/__tests__/Collapsible.test.tsx +0 -71
  138. package/src/components/Combobox/Combobox.module.css +0 -122
  139. package/src/components/Combobox/Combobox.stories.tsx +0 -79
  140. package/src/components/Combobox/Combobox.tsx +0 -186
  141. package/src/components/Combobox/__tests__/Combobox.test.tsx +0 -158
  142. package/src/components/Command/Command.module.css +0 -80
  143. package/src/components/Command/Command.stories.tsx +0 -104
  144. package/src/components/Command/Command.tsx +0 -168
  145. package/src/components/Command/__tests__/Command.test.tsx +0 -162
  146. package/src/components/ConfirmDialog/ConfirmDialog.module.css +0 -113
  147. package/src/components/ConfirmDialog/ConfirmDialog.tsx +0 -124
  148. package/src/components/ConfirmDialog/__tests__/ConfirmDialog.test.tsx +0 -146
  149. package/src/components/ContextMenu/ContextMenu.stories.tsx +0 -81
  150. package/src/components/ContextMenu/ContextMenu.tsx +0 -100
  151. package/src/components/ContextMenu/__tests__/ContextMenu.test.tsx +0 -87
  152. package/src/components/CurrencyInput/CurrencyInput.stories.tsx +0 -50
  153. package/src/components/CurrencyInput/CurrencyInput.tsx +0 -60
  154. package/src/components/DataTable/DataTable.module.css +0 -28
  155. package/src/components/DataTable/DataTable.stories.tsx +0 -74
  156. package/src/components/DataTable/DataTable.tsx +0 -154
  157. package/src/components/DataTable/__tests__/DataTable.test.tsx +0 -123
  158. package/src/components/DatePicker/DatePicker.module.css +0 -61
  159. package/src/components/DatePicker/DatePicker.tsx +0 -103
  160. package/src/components/DatePicker/__tests__/DatePicker.test.tsx +0 -89
  161. package/src/components/DeviceOnlyGate/DeviceOnlyGate.tsx +0 -58
  162. package/src/components/DeviceOnlyGate/__tests__/DeviceOnlyGate.test.tsx +0 -45
  163. package/src/components/DeviceStorageKeyGate/DeviceStorageKeyGate.tsx +0 -100
  164. package/src/components/DeviceStorageKeyGate/__tests__/DeviceStorageKeyGate.test.tsx +0 -119
  165. package/src/components/Dialog/Dialog.module.css +0 -226
  166. package/src/components/Dialog/Dialog.stories.tsx +0 -147
  167. package/src/components/Dialog/Dialog.tsx +0 -160
  168. package/src/components/Dialog/__tests__/Dialog.test.tsx +0 -137
  169. package/src/components/DragHandleRow/DragHandleRow.module.css +0 -57
  170. package/src/components/DragHandleRow/DragHandleRow.tsx +0 -61
  171. package/src/components/Drawer/Drawer.module.css +0 -92
  172. package/src/components/Drawer/Drawer.stories.tsx +0 -132
  173. package/src/components/Drawer/Drawer.tsx +0 -176
  174. package/src/components/Drawer/__tests__/Drawer.test.tsx +0 -199
  175. package/src/components/EmptyState/EmptyState.module.css +0 -27
  176. package/src/components/EmptyState/EmptyState.tsx +0 -27
  177. package/src/components/FileDropzone/FileDropzone.module.css +0 -63
  178. package/src/components/FileDropzone/FileDropzone.tsx +0 -109
  179. package/src/components/FileDropzone/__tests__/FileDropzone.test.tsx +0 -67
  180. package/src/components/FormField/FormField.module.css +0 -33
  181. package/src/components/FormField/FormField.tsx +0 -78
  182. package/src/components/FormField/__tests__/FormField.test.tsx +0 -83
  183. package/src/components/HoverCard/HoverCard.module.css +0 -3
  184. package/src/components/HoverCard/HoverCard.stories.tsx +0 -66
  185. package/src/components/HoverCard/HoverCard.tsx +0 -111
  186. package/src/components/HoverCard/__tests__/HoverCard.test.tsx +0 -99
  187. package/src/components/Icon/Icon.module.css +0 -27
  188. package/src/components/Icon/Icon.stories.tsx +0 -95
  189. package/src/components/Icon/Icon.tsx +0 -43
  190. package/src/components/Icon/__tests__/Icon.test.tsx +0 -40
  191. package/src/components/Icon/icons/activity.tsx +0 -20
  192. package/src/components/Icon/icons/alert-triangle.tsx +0 -22
  193. package/src/components/Icon/icons/apple.tsx +0 -21
  194. package/src/components/Icon/icons/banana.tsx +0 -21
  195. package/src/components/Icon/icons/beef.tsx +0 -22
  196. package/src/components/Icon/icons/beer.tsx +0 -24
  197. package/src/components/Icon/icons/bell.tsx +0 -21
  198. package/src/components/Icon/icons/calendar.tsx +0 -23
  199. package/src/components/Icon/icons/candy.tsx +0 -24
  200. package/src/components/Icon/icons/carrot.tsx +0 -22
  201. package/src/components/Icon/icons/check.tsx +0 -20
  202. package/src/components/Icon/icons/chevron-down.tsx +0 -20
  203. package/src/components/Icon/icons/chevron-left.tsx +0 -20
  204. package/src/components/Icon/icons/chevron-right.tsx +0 -20
  205. package/src/components/Icon/icons/chevron-up.tsx +0 -20
  206. package/src/components/Icon/icons/circle-check.tsx +0 -21
  207. package/src/components/Icon/icons/circle-x.tsx +0 -22
  208. package/src/components/Icon/icons/coffee.tsx +0 -23
  209. package/src/components/Icon/icons/cookie.tsx +0 -25
  210. package/src/components/Icon/icons/croissant.tsx +0 -24
  211. package/src/components/Icon/icons/cup-soda.tsx +0 -23
  212. package/src/components/Icon/icons/drumstick.tsx +0 -21
  213. package/src/components/Icon/icons/egg.tsx +0 -20
  214. package/src/components/Icon/icons/ellipsis-vertical.tsx +0 -22
  215. package/src/components/Icon/icons/external-link.tsx +0 -22
  216. package/src/components/Icon/icons/eye-off.tsx +0 -23
  217. package/src/components/Icon/icons/eye.tsx +0 -21
  218. package/src/components/Icon/icons/file.tsx +0 -21
  219. package/src/components/Icon/icons/fish.tsx +0 -25
  220. package/src/components/Icon/icons/grid-2x2.tsx +0 -22
  221. package/src/components/Icon/icons/house.tsx +0 -21
  222. package/src/components/Icon/icons/index.ts +0 -234
  223. package/src/components/Icon/icons/info.tsx +0 -22
  224. package/src/components/Icon/icons/lock.tsx +0 -21
  225. package/src/components/Icon/icons/log-out.tsx +0 -22
  226. package/src/components/Icon/icons/mail.tsx +0 -21
  227. package/src/components/Icon/icons/menu.tsx +0 -22
  228. package/src/components/Icon/icons/milk.tsx +0 -22
  229. package/src/components/Icon/icons/package.tsx +0 -23
  230. package/src/components/Icon/icons/pencil.tsx +0 -21
  231. package/src/components/Icon/icons/pizza.tsx +0 -24
  232. package/src/components/Icon/icons/plus.tsx +0 -21
  233. package/src/components/Icon/icons/rotate-ccw.tsx +0 -21
  234. package/src/components/Icon/icons/salad.tsx +0 -24
  235. package/src/components/Icon/icons/search.tsx +0 -21
  236. package/src/components/Icon/icons/settings.tsx +0 -21
  237. package/src/components/Icon/icons/shield.tsx +0 -20
  238. package/src/components/Icon/icons/shopping-basket.tsx +0 -26
  239. package/src/components/Icon/icons/sliders-horizontal.tsx +0 -28
  240. package/src/components/Icon/icons/smartphone.tsx +0 -21
  241. package/src/components/Icon/icons/snowflake.tsx +0 -31
  242. package/src/components/Icon/icons/spray-can.tsx +0 -29
  243. package/src/components/Icon/icons/trash-2.tsx +0 -24
  244. package/src/components/Icon/icons/upload.tsx +0 -22
  245. package/src/components/Icon/icons/user.tsx +0 -21
  246. package/src/components/Icon/icons/wine.tsx +0 -23
  247. package/src/components/Icon/icons/x.tsx +0 -21
  248. package/src/components/IconPicker/IconPicker.module.css +0 -63
  249. package/src/components/IconPicker/IconPicker.stories.tsx +0 -84
  250. package/src/components/IconPicker/IconPicker.tsx +0 -90
  251. package/src/components/Input/Input.module.css +0 -52
  252. package/src/components/Input/Input.stories.tsx +0 -86
  253. package/src/components/Input/Input.tsx +0 -14
  254. package/src/components/Input/__tests__/Input.test.tsx +0 -22
  255. package/src/components/Item/Item.module.css +0 -70
  256. package/src/components/Item/Item.stories.tsx +0 -62
  257. package/src/components/Item/Item.tsx +0 -54
  258. package/src/components/Item/__tests__/Item.test.tsx +0 -39
  259. package/src/components/Kbd/Kbd.module.css +0 -14
  260. package/src/components/Kbd/Kbd.stories.tsx +0 -32
  261. package/src/components/Kbd/Kbd.tsx +0 -12
  262. package/src/components/Kbd/__tests__/Kbd.test.tsx +0 -14
  263. package/src/components/Label/Label.module.css +0 -11
  264. package/src/components/Label/Label.stories.tsx +0 -40
  265. package/src/components/Label/Label.tsx +0 -24
  266. package/src/components/Label/__tests__/Label.test.tsx +0 -32
  267. package/src/components/LegalLinks/LegalLinks.module.css +0 -24
  268. package/src/components/LegalLinks/LegalLinks.stories.tsx +0 -22
  269. package/src/components/LegalLinks/LegalLinks.tsx +0 -40
  270. package/src/components/Markdown/Markdown.module.css +0 -49
  271. package/src/components/Markdown/Markdown.stories.tsx +0 -30
  272. package/src/components/Markdown/Markdown.tsx +0 -168
  273. package/src/components/Marker/Marker.module.css +0 -33
  274. package/src/components/Marker/Marker.stories.tsx +0 -39
  275. package/src/components/Marker/Marker.tsx +0 -34
  276. package/src/components/Marker/__tests__/Marker.test.tsx +0 -23
  277. package/src/components/MemberMultiSelect/MemberMultiSelect.module.css +0 -27
  278. package/src/components/MemberMultiSelect/MemberMultiSelect.stories.tsx +0 -74
  279. package/src/components/MemberMultiSelect/MemberMultiSelect.tsx +0 -67
  280. package/src/components/Menu/Menu.module.css +0 -89
  281. package/src/components/Menu/Menu.tsx +0 -159
  282. package/src/components/Menu/__tests__/Menu.test.tsx +0 -197
  283. package/src/components/Menubar/Menubar.stories.tsx +0 -52
  284. package/src/components/Menubar/Menubar.tsx +0 -42
  285. package/src/components/Menubar/__tests__/Menubar.test.tsx +0 -45
  286. package/src/components/Message/Message.module.css +0 -99
  287. package/src/components/Message/Message.stories.tsx +0 -79
  288. package/src/components/Message/Message.tsx +0 -41
  289. package/src/components/Message/__tests__/Message.test.tsx +0 -46
  290. package/src/components/MessageScroller/MessageScroller.module.css +0 -54
  291. package/src/components/MessageScroller/MessageScroller.stories.tsx +0 -84
  292. package/src/components/MessageScroller/MessageScroller.tsx +0 -72
  293. package/src/components/MessageScroller/__tests__/MessageScroller.test.tsx +0 -105
  294. package/src/components/MobileAppsDrawer/MobileAppsDrawer.module.css +0 -81
  295. package/src/components/MobileAppsDrawer/MobileAppsDrawer.tsx +0 -78
  296. package/src/components/MobileAppsDrawer/__tests__/MobileAppsDrawer.test.tsx +0 -80
  297. package/src/components/MobileFooter/MobileFooter.module.css +0 -73
  298. package/src/components/MobileFooter/MobileFooter.stories.tsx +0 -47
  299. package/src/components/MobileFooter/MobileFooter.tsx +0 -109
  300. package/src/components/MobileFooter/__tests__/MobileFooter.test.tsx +0 -71
  301. package/src/components/MobileHeader/MobileHeader.module.css +0 -63
  302. package/src/components/MobileHeader/MobileHeader.stories.tsx +0 -57
  303. package/src/components/MobileHeader/MobileHeader.tsx +0 -77
  304. package/src/components/MobileHeader/__tests__/MobileHeader.test.tsx +0 -58
  305. package/src/components/NavTabs/NavTabs.module.css +0 -50
  306. package/src/components/NavTabs/NavTabs.tsx +0 -61
  307. package/src/components/NavigationMenu/NavigationMenu.module.css +0 -53
  308. package/src/components/NavigationMenu/NavigationMenu.stories.tsx +0 -58
  309. package/src/components/NavigationMenu/NavigationMenu.tsx +0 -125
  310. package/src/components/NavigationMenu/__tests__/NavigationMenu.test.tsx +0 -93
  311. package/src/components/OfflineGate/OfflineGate.tsx +0 -44
  312. package/src/components/OfflineGate/__tests__/OfflineGate.test.tsx +0 -66
  313. package/src/components/OverlayHeader/OverlayHeader.module.css +0 -98
  314. package/src/components/OverlayHeader/OverlayHeader.tsx +0 -62
  315. package/src/components/OverlayHeader/__tests__/OverlayHeader.test.tsx +0 -51
  316. package/src/components/PageContainer/PageContainer.module.css +0 -20
  317. package/src/components/PageContainer/PageContainer.tsx +0 -31
  318. package/src/components/PageContainer/__tests__/PageContainer.test.tsx +0 -37
  319. package/src/components/PageHeader/PageHeader.module.css +0 -32
  320. package/src/components/PageHeader/PageHeader.tsx +0 -35
  321. package/src/components/Pagination/Pagination.module.css +0 -98
  322. package/src/components/Pagination/Pagination.stories.tsx +0 -49
  323. package/src/components/Pagination/Pagination.tsx +0 -87
  324. package/src/components/Pagination/__tests__/Pagination.test.tsx +0 -56
  325. package/src/components/Popover/Popover.module.css +0 -74
  326. package/src/components/Popover/Popover.stories.tsx +0 -357
  327. package/src/components/Popover/Popover.tsx +0 -208
  328. package/src/components/Popover/__tests__/Popover.test.tsx +0 -98
  329. package/src/components/Progress/Progress.module.css +0 -20
  330. package/src/components/Progress/Progress.stories.tsx +0 -40
  331. package/src/components/Progress/Progress.tsx +0 -35
  332. package/src/components/Progress/__tests__/Progress.test.tsx +0 -31
  333. package/src/components/QuantityStepper/QuantityStepper.module.css +0 -67
  334. package/src/components/QuantityStepper/QuantityStepper.stories.tsx +0 -79
  335. package/src/components/QuantityStepper/QuantityStepper.tsx +0 -107
  336. package/src/components/RadioGroup/RadioGroup.module.css +0 -88
  337. package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -69
  338. package/src/components/RadioGroup/RadioGroup.tsx +0 -99
  339. package/src/components/RadioGroup/__tests__/RadioGroup.test.tsx +0 -59
  340. package/src/components/Resizable/Resizable.module.css +0 -70
  341. package/src/components/Resizable/Resizable.stories.tsx +0 -82
  342. package/src/components/Resizable/Resizable.tsx +0 -313
  343. package/src/components/Resizable/__tests__/Resizable.test.tsx +0 -128
  344. package/src/components/ResponsiveSurface/ResponsiveSurface.tsx +0 -24
  345. package/src/components/ResponsiveSurface/__tests__/ResponsiveSurface.test.tsx +0 -73
  346. package/src/components/ScrollArea/ScrollArea.module.css +0 -20
  347. package/src/components/ScrollArea/ScrollArea.stories.tsx +0 -57
  348. package/src/components/ScrollArea/ScrollArea.tsx +0 -27
  349. package/src/components/ScrollArea/__tests__/ScrollArea.test.tsx +0 -39
  350. package/src/components/SegmentedControl/SegmentedControl.module.css +0 -55
  351. package/src/components/SegmentedControl/SegmentedControl.stories.tsx +0 -118
  352. package/src/components/SegmentedControl/SegmentedControl.tsx +0 -56
  353. package/src/components/SegmentedControl/__tests__/SegmentedControl.test.tsx +0 -63
  354. package/src/components/Select/Select.module.css +0 -82
  355. package/src/components/Select/Select.stories.tsx +0 -115
  356. package/src/components/Select/Select.tsx +0 -48
  357. package/src/components/Select/__tests__/Select.test.tsx +0 -59
  358. package/src/components/Sheet/Sheet.module.css +0 -55
  359. package/src/components/Sheet/Sheet.tsx +0 -109
  360. package/src/components/Sheet/__tests__/Sheet.test.tsx +0 -99
  361. package/src/components/Slider/Slider.module.css +0 -95
  362. package/src/components/Slider/Slider.stories.tsx +0 -64
  363. package/src/components/Slider/Slider.tsx +0 -77
  364. package/src/components/Slider/__tests__/Slider.test.tsx +0 -45
  365. package/src/components/Spinner/Spinner.module.css +0 -39
  366. package/src/components/Spinner/Spinner.tsx +0 -23
  367. package/src/components/SplitMethodSelector/SplitMethodSelector.stories.tsx +0 -33
  368. package/src/components/SplitMethodSelector/SplitMethodSelector.tsx +0 -43
  369. package/src/components/SplitPane/SplitPane.module.css +0 -85
  370. package/src/components/SplitPane/SplitPane.stories.tsx +0 -160
  371. package/src/components/SplitPane/SplitPane.tsx +0 -149
  372. package/src/components/SplitPane/__tests__/SplitPane.test.tsx +0 -51
  373. package/src/components/StatusBadge/StatusBadge.module.css +0 -59
  374. package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -74
  375. package/src/components/StatusBadge/StatusBadge.tsx +0 -65
  376. package/src/components/SuggestionInput/SuggestionInput.module.css +0 -103
  377. package/src/components/SuggestionInput/SuggestionInput.stories.tsx +0 -144
  378. package/src/components/SuggestionInput/SuggestionInput.tsx +0 -207
  379. package/src/components/SwipableMobileCarousel/SwipableMobileCarousel.module.css +0 -55
  380. package/src/components/SwipableMobileCarousel/SwipableMobileCarousel.tsx +0 -227
  381. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlide.tsx +0 -35
  382. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideBody.tsx +0 -42
  383. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideFooter.tsx +0 -18
  384. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideHeader.tsx +0 -21
  385. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideParts.module.css +0 -29
  386. package/src/components/SwipableMobileCarousel/__tests__/SwipableMobileCarousel.test.tsx +0 -133
  387. package/src/components/SwipableMobileCarousel/__tests__/SwipableMobileCarouselDevGuard.test.tsx +0 -61
  388. package/src/components/SwipableMobileCarousel/context.ts +0 -13
  389. package/src/components/SwipableMobileCarouselDots/SwipableMobileCarouselDots.module.css +0 -49
  390. package/src/components/SwipableMobileCarouselDots/SwipableMobileCarouselDots.tsx +0 -62
  391. package/src/components/SwipableMobileCarouselDots/__tests__/SwipableMobileCarouselDots.test.tsx +0 -63
  392. package/src/components/SystemBanner/SystemBanner.module.css +0 -69
  393. package/src/components/SystemBanner/SystemBanner.stories.tsx +0 -86
  394. package/src/components/SystemBanner/SystemBanner.tsx +0 -50
  395. package/src/components/SystemBanner/__tests__/SystemBanner.test.tsx +0 -50
  396. package/src/components/Table/Table.module.css +0 -45
  397. package/src/components/Table/Table.stories.tsx +0 -125
  398. package/src/components/Table/Table.tsx +0 -51
  399. package/src/components/Table/__tests__/Table.test.tsx +0 -50
  400. package/src/components/Tabs/Tabs.module.css +0 -56
  401. package/src/components/Tabs/Tabs.stories.tsx +0 -100
  402. package/src/components/Tabs/Tabs.tsx +0 -46
  403. package/src/components/Tabs/__tests__/Tabs.test.tsx +0 -45
  404. package/src/components/TagInput/TagInput.module.css +0 -141
  405. package/src/components/TagInput/TagInput.stories.tsx +0 -109
  406. package/src/components/TagInput/TagInput.tsx +0 -174
  407. package/src/components/TagInput/__tests__/TagInput.test.tsx +0 -69
  408. package/src/components/Textarea/Textarea.module.css +0 -39
  409. package/src/components/Textarea/Textarea.tsx +0 -15
  410. package/src/components/Textarea/__tests__/Textarea.test.tsx +0 -29
  411. package/src/components/Toast/Toast.module.css +0 -132
  412. package/src/components/Toast/Toast.stories.tsx +0 -191
  413. package/src/components/Toast/Toast.tsx +0 -139
  414. package/src/components/Toggle/Toggle.module.css +0 -57
  415. package/src/components/Toggle/Toggle.stories.tsx +0 -95
  416. package/src/components/Toggle/Toggle.tsx +0 -39
  417. package/src/components/Toggle/__tests__/Toggle.test.tsx +0 -47
  418. package/src/components/Tooltip/Tooltip.module.css +0 -56
  419. package/src/components/Tooltip/Tooltip.tsx +0 -30
  420. package/src/components/Typography/Typography.module.css +0 -47
  421. package/src/components/Typography/Typography.stories.tsx +0 -62
  422. package/src/components/Typography/Typography.tsx +0 -30
  423. package/src/components/Typography/__tests__/Typography.test.tsx +0 -34
  424. package/src/css-modules.d.ts +0 -4
  425. package/src/hooks/__tests__/useCarouselRouteSync.test.tsx +0 -126
  426. package/src/hooks/__tests__/useDoubleTap.test.tsx +0 -117
  427. package/src/hooks/__tests__/useIsMobile.test.tsx +0 -80
  428. package/src/hooks/__tests__/useIsOffline.test.tsx +0 -53
  429. package/src/hooks/__tests__/useLongPress.test.tsx +0 -158
  430. package/src/hooks/__tests__/useOfflineTileState.test.tsx +0 -69
  431. package/src/hooks/__tests__/useResponsiveLayout.test.tsx +0 -87
  432. package/src/hooks/__tests__/useSnapCarousel.test.tsx +0 -93
  433. package/src/hooks/__tests__/useSwipeReveal.test.tsx +0 -110
  434. package/src/hooks/index.ts +0 -24
  435. package/src/hooks/useCarouselRouteSync.ts +0 -92
  436. package/src/hooks/useCommitOnEnterOrBlur.ts +0 -39
  437. package/src/hooks/useDoubleTap.ts +0 -91
  438. package/src/hooks/useIsMobile.ts +0 -33
  439. package/src/hooks/useIsOffline.ts +0 -41
  440. package/src/hooks/useLongPress.ts +0 -185
  441. package/src/hooks/useOfflineTileState.ts +0 -45
  442. package/src/hooks/useResponsiveLayout.ts +0 -36
  443. package/src/hooks/useSnapCarousel.ts +0 -79
  444. package/src/hooks/useSwipeReveal.ts +0 -107
  445. package/src/index.ts +0 -251
  446. package/src/motion.ts +0 -78
  447. package/src/overlay-shell.ts +0 -94
  448. package/src/scroll-lock.ts +0 -22
  449. package/src/stories/Avatar.stories.tsx +0 -44
  450. package/src/stories/Card.stories.tsx +0 -35
  451. package/src/stories/Checkbox.stories.tsx +0 -45
  452. package/src/stories/DesignSystemOverview.stories.tsx +0 -3187
  453. package/src/stories/DeviceOnlyGate.stories.tsx +0 -35
  454. package/src/stories/DeviceStorageKeyGate.stories.tsx +0 -57
  455. package/src/stories/DragHandleRow.stories.tsx +0 -41
  456. package/src/stories/EmptyState.stories.tsx +0 -33
  457. package/src/stories/FileDropzone.stories.tsx +0 -69
  458. package/src/stories/FormField.stories.tsx +0 -47
  459. package/src/stories/InteractionHooks.stories.tsx +0 -925
  460. package/src/stories/MobilePatterns.stories.tsx +0 -1536
  461. package/src/stories/NavTabs.stories.tsx +0 -53
  462. package/src/stories/OfflineGate.stories.tsx +0 -42
  463. package/src/stories/PageContainer.stories.tsx +0 -37
  464. package/src/stories/PageHeader.stories.tsx +0 -42
  465. package/src/stories/ResponsiveSurface.stories.tsx +0 -47
  466. package/src/stories/Spinner.stories.tsx +0 -25
  467. package/src/stories/SwipableMobileCarousel.stories.tsx +0 -304
  468. package/src/stories/Textarea.stories.tsx +0 -51
  469. package/src/stories/TokenGallery.stories.tsx +0 -602
  470. package/src/stories/Tooltip.stories.tsx +0 -59
  471. package/src/tokens/primitives.css +0 -157
  472. package/src/tokens/semantic.css +0 -130
  473. package/src/tokens.css +0 -5
@@ -1,602 +0,0 @@
1
- import { useEffect, useRef, useState } from 'react';
2
- import type { Meta, StoryObj } from '@storybook/react-vite';
3
-
4
- // ---------------------------------------------------------------------------
5
- // Token Gallery — live rendering of every CSS custom property tier.
6
- // Values are read from the computed style at render time so they always
7
- // reflect the actual loaded CSS, not a hardcoded snapshot. Toggle dark mode
8
- // via the Themes toolbar to compare both theme values side-by-side.
9
- // ---------------------------------------------------------------------------
10
-
11
- const SEMANTIC_COLORS = [
12
- '--sv-color-surface',
13
- '--sv-color-surface-sunken',
14
- '--sv-color-surface-raised',
15
- '--sv-color-text-primary',
16
- '--sv-color-text-muted',
17
- '--sv-color-text-subtle',
18
- '--sv-color-text-on-accent',
19
- '--sv-color-border',
20
- '--sv-color-border-strong',
21
- '--sv-color-accent',
22
- '--sv-color-accent-hover',
23
- '--sv-color-accent-subtle',
24
- '--sv-color-focus-ring',
25
- '--sv-color-error-surface',
26
- '--sv-color-error-text',
27
- '--sv-color-error-border',
28
- '--sv-color-error-solid',
29
- '--sv-color-warning-surface',
30
- '--sv-color-warning-text',
31
- '--sv-color-warning-border',
32
- '--sv-color-success-surface',
33
- '--sv-color-success-text',
34
- '--sv-color-success-border',
35
- '--sv-color-success-solid',
36
- '--sv-color-text-on-error',
37
- '--sv-color-text-on-success',
38
- '--sv-color-info-surface',
39
- '--sv-color-info-text',
40
- '--sv-color-info-border',
41
- '--sv-color-scrim',
42
- ];
43
-
44
- const SPACE_TOKENS = [
45
- '--sv-space-1',
46
- '--sv-space-2',
47
- '--sv-space-3',
48
- '--sv-space-4',
49
- '--sv-space-5',
50
- '--sv-space-6',
51
- '--sv-space-8',
52
- '--sv-space-10',
53
- '--sv-space-12',
54
- '--sv-space-16',
55
- ];
56
-
57
- const RADIUS_TOKENS = [
58
- '--sv-radius-sm',
59
- '--sv-radius-md',
60
- '--sv-radius-lg',
61
- '--sv-radius-xl',
62
- '--sv-radius-2xl',
63
- '--sv-radius-3xl',
64
- '--sv-radius-full',
65
- ];
66
- // RFC 0077 — instance corner-radius presets. Base px values mirror
67
- // primitives.css's own comments (sm 6px, md 8px, xl 12px at scale 1).
68
- //
69
- // Each swatch's radius is computed here in JS rather than by overriding
70
- // --sv-radius-scale on a local wrapper and letting --sv-radius-md etc.
71
- // recompute from it. That would be the more elegant approach, but CSS custom
72
- // properties don't support it: a custom property that references another
73
- // custom property inside calc() (--sv-radius-md: calc(var(--sv-radius-scale)
74
- // * 0.5rem)) has that inner reference resolved once, at the element where
75
- // --sv-radius-md itself is *declared* (:root in primitives.css) — not at
76
- // wherever it's later consumed via var(). A descendant overriding
77
- // --sv-radius-scale doesn't reach back and change --sv-radius-md's
78
- // already-fixed value (confirmed empirically — this isn't a guess). The
79
- // production mechanism (instance-provider.tsx) still works fine: its
80
- // override is injected as another :root { } rule, the *same* cascade node
81
- // primitives.css declares --sv-radius-md at, not a descendant — but a
82
- // side-by-side, multi-preset comparison on one page has no such single
83
- // :root to share, so the swatches below compute the resulting px directly.
84
- const RADIUS_PRESETS = [
85
- { preset: 'none', scale: 0 },
86
- { preset: 'xs', scale: 0.35 },
87
- { preset: 's', scale: 0.65 },
88
- { preset: 'm', scale: 1 },
89
- { preset: 'l', scale: 2.75 },
90
- ] as const;
91
-
92
- const RADIUS_BASE_PX = { sm: 6, md: 8, xl: 12 };
93
-
94
- const ICON_SIZE_TOKENS = [
95
- '--sv-icon-size-xs',
96
- '--sv-icon-size-sm',
97
- '--sv-icon-size-md',
98
- '--sv-icon-size-lg',
99
- ];
100
-
101
- const FONT_SIZE_TOKENS = [
102
- '--sv-font-size-label',
103
- '--sv-font-size-xs',
104
- '--sv-font-size-caption',
105
- '--sv-font-size-sm',
106
- '--sv-font-size-md',
107
- '--sv-font-size-lg',
108
- '--sv-font-size-xl',
109
- '--sv-font-size-2xl',
110
- ];
111
-
112
- // Task 10.2 — in-app text-size control. --sv-text-size-scale is theme-stable
113
- // like --sv-radius-scale, but unlike radius (a calc() chain resolved once at
114
- // :root's declaration site — see the RADIUS_PRESETS comment below), rem units
115
- // genuinely re-resolve against the root element's live computed font-size, so
116
- // these swatches compute the result directly in JS rather than needing a real
117
- // [data-text-size] toggle on the document root.
118
- const TEXT_SIZE_PRESETS = [
119
- { preset: 'default', scale: 1 },
120
- { preset: 'large', scale: 1.125 },
121
- { preset: 'larger', scale: 1.25 },
122
- ] as const;
123
-
124
- const TEXT_SIZE_BASE_PX = { md: 16, lg: 18, '2xl': 24 };
125
-
126
- const FONT_WEIGHT_TOKENS = [
127
- '--sv-font-weight-normal',
128
- '--sv-font-weight-medium',
129
- '--sv-font-weight-semibold',
130
- '--sv-font-weight-bold',
131
- ];
132
-
133
- const SHADOW_TOKENS = [
134
- '--sv-shadow-card',
135
- '--sv-shadow-hover',
136
- '--sv-shadow-popover',
137
- '--sv-shadow-overlay',
138
- '--sv-shadow-control',
139
- ];
140
-
141
- // Realistic duration+easing pairings, not every combination — matches how
142
- // Dialog/Drawer actually use these tokens (see motion.ts).
143
- const MOTION_PAIRS: { durationToken: string; easeToken: string; use: string }[] = [
144
- {
145
- durationToken: '--sv-motion-duration-fast',
146
- easeToken: '--sv-motion-ease-out',
147
- use: 'micro-interaction',
148
- },
149
- {
150
- durationToken: '--sv-motion-duration-base',
151
- easeToken: '--sv-motion-ease-out',
152
- use: 'Dialog / Drawer entrance',
153
- },
154
- {
155
- durationToken: '--sv-motion-duration-slow',
156
- easeToken: '--sv-motion-ease-in-out',
157
- use: 'larger surface / longer travel',
158
- },
159
- {
160
- durationToken: '--sv-motion-duration-base',
161
- easeToken: '--sv-motion-ease-spring',
162
- use: 'emphasis (use sparingly)',
163
- },
164
- ];
165
-
166
- // ---------------------------------------------------------------------------
167
-
168
- const row: React.CSSProperties = {
169
- display: 'flex',
170
- alignItems: 'center',
171
- gap: '12px',
172
- padding: '6px 0',
173
- borderBottom: '1px solid var(--sv-color-border)',
174
- };
175
-
176
- const label: React.CSSProperties = {
177
- fontFamily: 'monospace',
178
- fontSize: '13px',
179
- color: 'var(--sv-color-text-primary)',
180
- minWidth: '300px',
181
- };
182
-
183
- const value: React.CSSProperties = {
184
- fontFamily: 'monospace',
185
- fontSize: '12px',
186
- color: 'var(--sv-color-text-muted)',
187
- flex: 1,
188
- };
189
-
190
- // ---------------------------------------------------------------------------
191
-
192
- function ColorRow({ token }: { token: string }) {
193
- const computed =
194
- typeof window !== 'undefined'
195
- ? getComputedStyle(document.documentElement).getPropertyValue(token).trim()
196
- : '';
197
- const swatch: React.CSSProperties = {
198
- width: 28,
199
- height: 28,
200
- borderRadius: 4,
201
- background: `var(${token})`,
202
- border: '1px solid var(--sv-color-border)',
203
- flexShrink: 0,
204
- };
205
- return (
206
- <div style={row}>
207
- <div style={swatch} />
208
- <span style={label}>{token}</span>
209
- <span style={value}>{computed}</span>
210
- </div>
211
- );
212
- }
213
-
214
- function ScaleRow({
215
- token,
216
- renderPreview,
217
- }: {
218
- token: string;
219
- renderPreview: (v: string) => React.ReactNode;
220
- }) {
221
- const computed =
222
- typeof window !== 'undefined'
223
- ? getComputedStyle(document.documentElement).getPropertyValue(token).trim()
224
- : '';
225
- return (
226
- <div style={row}>
227
- {renderPreview(computed)}
228
- <span style={label}>{token}</span>
229
- <span style={value}>{computed}</span>
230
- </div>
231
- );
232
- }
233
-
234
- // Radius tokens are calc() expressions since RFC 0077 (proportional to
235
- // --sv-radius-scale) — reading the raw custom property text now shows the
236
- // unresolved formula (e.g. "calc(1 * 0.375rem)"), not a pixel value. Render
237
- // the swatch, then read the browser's own computed border-radius off it
238
- // (a real CSS property, so calc() is fully resolved) instead of ScaleRow's
239
- // getPropertyValue text read.
240
- function RadiusScaleRow({ token }: { token: string }) {
241
- const ref = useRef<HTMLDivElement>(null);
242
- const [resolved, setResolved] = useState('');
243
- useEffect(() => {
244
- if (ref.current) setResolved(getComputedStyle(ref.current).borderRadius);
245
- }, []);
246
- return (
247
- <div style={row}>
248
- <div
249
- ref={ref}
250
- style={{
251
- width: 40,
252
- height: 24,
253
- background: 'var(--sv-color-accent)',
254
- borderRadius: `var(${token})`,
255
- flexShrink: 0,
256
- }}
257
- />
258
- <span style={label}>{token}</span>
259
- <span style={value}>{resolved}</span>
260
- </div>
261
- );
262
- }
263
-
264
- function TextSizePresetRow({ preset, scale }: { preset: string; scale: number }) {
265
- return (
266
- <div style={row}>
267
- <div style={{ display: 'flex', gap: 12, alignItems: 'baseline', flexShrink: 0, width: 180 }}>
268
- <span
269
- style={{
270
- fontSize: `${scale * TEXT_SIZE_BASE_PX.md}px`,
271
- color: 'var(--sv-color-text-primary)',
272
- }}
273
- title="body (--sv-font-size-md)"
274
- >
275
- Aa
276
- </span>
277
- <span
278
- style={{
279
- fontSize: `${scale * TEXT_SIZE_BASE_PX.lg}px`,
280
- color: 'var(--sv-color-text-primary)',
281
- }}
282
- title="large (--sv-font-size-lg)"
283
- >
284
- Aa
285
- </span>
286
- <span
287
- style={{
288
- fontSize: `${scale * TEXT_SIZE_BASE_PX['2xl']}px`,
289
- color: 'var(--sv-color-text-primary)',
290
- }}
291
- title="heading (--sv-font-size-2xl)"
292
- >
293
- Aa
294
- </span>
295
- </div>
296
- <span style={label}>{preset}</span>
297
- <span style={value}>scale {scale}</span>
298
- </div>
299
- );
300
- }
301
-
302
- function RadiusPresetRow({ preset, scale }: { preset: string; scale: number }) {
303
- return (
304
- <div style={row}>
305
- <div style={{ display: 'flex', gap: 12, alignItems: 'center', flexShrink: 0 }}>
306
- <div
307
- style={{
308
- width: 56,
309
- height: 40,
310
- background: 'var(--sv-color-surface-sunken)',
311
- border: '1px solid var(--sv-color-border)',
312
- borderRadius: `${scale * RADIUS_BASE_PX.xl}px`,
313
- }}
314
- title="card (--sv-radius-xl)"
315
- />
316
- <div
317
- style={{
318
- width: 64,
319
- height: 36,
320
- background: 'var(--sv-color-accent)',
321
- borderRadius: `${scale * RADIUS_BASE_PX.md}px`,
322
- }}
323
- title="button, 36px tall (--sv-radius-md)"
324
- />
325
- <div
326
- style={{
327
- width: 48,
328
- height: 18,
329
- background: 'var(--sv-color-accent-subtle)',
330
- borderRadius: `${scale * RADIUS_BASE_PX.sm}px`,
331
- }}
332
- title="badge, 18px tall (--sv-radius-sm)"
333
- />
334
- </div>
335
- <span style={label}>{preset}</span>
336
- <span style={value}>scale {scale}</span>
337
- </div>
338
- );
339
- }
340
-
341
- // Auto-loops so the duration/easing is visible without needing to interact —
342
- // same technique Dialog/Drawer use for their own open/close transition
343
- // (see motion.ts), just driven by a timer instead of an `open` prop.
344
- function MotionRow({ durationToken, easeToken, use }: (typeof MOTION_PAIRS)[number]) {
345
- const [toggled, setToggled] = useState(false);
346
- useEffect(() => {
347
- const id = setInterval(() => setToggled((v) => !v), 900);
348
- return () => clearInterval(id);
349
- }, []);
350
- return (
351
- <div style={row}>
352
- <div
353
- style={{
354
- position: 'relative',
355
- width: 120,
356
- height: 24,
357
- background: 'var(--sv-color-surface-sunken)',
358
- borderRadius: 4,
359
- flexShrink: 0,
360
- }}
361
- >
362
- <div
363
- style={{
364
- position: 'absolute',
365
- top: 2,
366
- left: 2,
367
- width: 20,
368
- height: 20,
369
- borderRadius: '50%',
370
- background: 'var(--sv-color-accent)',
371
- transform: `translateX(${toggled ? 96 : 0}px)`,
372
- transition: `transform var(${durationToken}) var(${easeToken})`,
373
- }}
374
- />
375
- </div>
376
- <span style={label}>
377
- {durationToken} · {easeToken}
378
- </span>
379
- <span style={value}>{use}</span>
380
- </div>
381
- );
382
- }
383
-
384
- function Section({ title, children }: { title: string; children: React.ReactNode }) {
385
- return (
386
- <section style={{ marginBottom: 40 }}>
387
- <h2
388
- style={{
389
- fontFamily: 'var(--sv-font-family)',
390
- fontSize: 18,
391
- fontWeight: 600,
392
- color: 'var(--sv-color-text-primary)',
393
- marginBottom: 12,
394
- borderBottom: '2px solid var(--sv-color-accent)',
395
- paddingBottom: 4,
396
- }}
397
- >
398
- {title}
399
- </h2>
400
- {children}
401
- </section>
402
- );
403
- }
404
-
405
- // ---------------------------------------------------------------------------
406
-
407
- function TokenGalleryComponent() {
408
- return (
409
- <div
410
- style={{
411
- padding: 24,
412
- background: 'var(--sv-color-surface)',
413
- minHeight: '100vh',
414
- fontFamily: 'var(--sv-font-family)',
415
- }}
416
- >
417
- <h1
418
- style={{
419
- fontSize: 24,
420
- fontWeight: 700,
421
- color: 'var(--sv-color-text-primary)',
422
- marginBottom: 8,
423
- }}
424
- >
425
- Sovereign Design Token Gallery
426
- </h1>
427
- <p style={{ color: 'var(--sv-color-text-muted)', marginBottom: 32, fontSize: 14 }}>
428
- All values are read live from computed styles — they reflect the actual loaded CSS, not a
429
- hardcoded snapshot. Use the Themes toolbar above to switch dark mode.
430
- </p>
431
-
432
- <Section title="Semantic colours">
433
- {SEMANTIC_COLORS.map((t) => (
434
- <ColorRow key={t} token={t} />
435
- ))}
436
- </Section>
437
-
438
- <Section title="Space scale">
439
- {SPACE_TOKENS.map((t) => (
440
- <ScaleRow
441
- key={t}
442
- token={t}
443
- renderPreview={(_v) => (
444
- <div
445
- style={{
446
- width: `var(${t})`,
447
- height: 16,
448
- background: 'var(--sv-color-accent)',
449
- flexShrink: 0,
450
- minWidth: 4,
451
- }}
452
- />
453
- )}
454
- />
455
- ))}
456
- </Section>
457
-
458
- <Section title="Font weight scale">
459
- {FONT_WEIGHT_TOKENS.map((t) => (
460
- <ScaleRow
461
- key={t}
462
- token={t}
463
- renderPreview={(_v) => (
464
- <span
465
- style={{
466
- fontFamily: 'var(--sv-font-family)',
467
- fontSize: 'var(--sv-font-size-md)',
468
- fontWeight: `var(${t})`,
469
- color: 'var(--sv-color-text-primary)',
470
- minWidth: 100,
471
- }}
472
- >
473
- Sovereign
474
- </span>
475
- )}
476
- />
477
- ))}
478
- </Section>
479
-
480
- <Section title="Typography scale">
481
- {FONT_SIZE_TOKENS.map((t) => (
482
- <ScaleRow
483
- key={t}
484
- token={t}
485
- renderPreview={(_v) => (
486
- <span
487
- style={{
488
- fontSize: `var(${t})`,
489
- color: 'var(--sv-color-text-primary)',
490
- minWidth: 100,
491
- lineHeight: 1,
492
- }}
493
- >
494
- Aa
495
- </span>
496
- )}
497
- />
498
- ))}
499
- </Section>
500
-
501
- <Section title="Text-size presets (task 10.2)">
502
- <p style={{ color: 'var(--sv-color-text-muted)', fontSize: 13, marginBottom: 12 }}>
503
- Account → Preferences → Appearance. Overrides <code>--sv-text-size-scale</code> via{' '}
504
- <code>[data-text-size]</code> on <code>&lt;html&gt;</code> — every rem-based token above
505
- (font sizes, but also spacing and radii) scales with it, since the root element&apos;s
506
- font-size is what rem resolves against. Discharges the accessibility debt from disabling
507
- pinch-zoom (<code>runtime/app/layout.tsx</code>).
508
- </p>
509
- {TEXT_SIZE_PRESETS.map((p) => (
510
- <TextSizePresetRow key={p.preset} preset={p.preset} scale={p.scale} />
511
- ))}
512
- </Section>
513
-
514
- <Section title="Radius scale">
515
- {RADIUS_TOKENS.map((t) => (
516
- <RadiusScaleRow key={t} token={t} />
517
- ))}
518
- </Section>
519
-
520
- <Section title="Radius presets (RFC 0077)">
521
- <p style={{ color: 'var(--sv-color-text-muted)', fontSize: 13, marginBottom: 12 }}>
522
- Instance-level corner-radius intensity — Console → Instance identity, or{' '}
523
- <code>INSTANCE_RADIUS</code>. Overrides <code>--sv-radius-scale</code>; every{' '}
524
- <code>--sv-radius-*</code> token above stays proportional to it. Note how the button
525
- swatch clips to a full pill by L — <code>border-radius</code>&apos;s own half-height
526
- clamp, not a separate mechanism.
527
- </p>
528
- {RADIUS_PRESETS.map((p) => (
529
- <RadiusPresetRow key={p.preset} preset={p.preset} scale={p.scale} />
530
- ))}
531
- </Section>
532
-
533
- <Section title="Icon sizes">
534
- {ICON_SIZE_TOKENS.map((t) => (
535
- <ScaleRow
536
- key={t}
537
- token={t}
538
- renderPreview={(_v) => (
539
- <div
540
- style={{
541
- width: `var(${t})`,
542
- height: `var(${t})`,
543
- background: 'var(--sv-color-accent)',
544
- borderRadius: 2,
545
- flexShrink: 0,
546
- }}
547
- />
548
- )}
549
- />
550
- ))}
551
- </Section>
552
-
553
- <Section title="Shadows">
554
- {SHADOW_TOKENS.map((t) => (
555
- <ScaleRow
556
- key={t}
557
- token={t}
558
- renderPreview={(_v) => (
559
- <div
560
- style={{
561
- width: 48,
562
- height: 28,
563
- background: 'var(--sv-color-surface-raised)',
564
- boxShadow: `var(${t})`,
565
- borderRadius: 4,
566
- flexShrink: 0,
567
- }}
568
- />
569
- )}
570
- />
571
- ))}
572
- </Section>
573
-
574
- <Section title="Motion">
575
- {MOTION_PAIRS.map((pair) => (
576
- <MotionRow key={`${pair.durationToken}-${pair.easeToken}`} {...pair} />
577
- ))}
578
- </Section>
579
- </div>
580
- );
581
- }
582
-
583
- // ---------------------------------------------------------------------------
584
-
585
- const meta = {
586
- title: 'Design Tokens/Token Gallery',
587
- component: TokenGalleryComponent,
588
- parameters: {
589
- layout: 'fullscreen',
590
- docs: {
591
- description: {
592
- component:
593
- 'Live gallery of every `--sv-*` CSS custom property. Values are read from `getComputedStyle` at render time — toggle dark mode via the Themes toolbar to see both themes.',
594
- },
595
- },
596
- },
597
- } satisfies Meta<typeof TokenGalleryComponent>;
598
-
599
- export default meta;
600
- type Story = StoryObj<typeof meta>;
601
-
602
- export const AllTokens: Story = {};
@@ -1,59 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { Tooltip } from '../components/Tooltip/Tooltip';
3
- import { Button } from '../components/Button/Button';
4
- import { Icon } from '../components/Icon/Icon';
5
-
6
- const meta = {
7
- title: 'Components/Tooltip',
8
- component: Tooltip,
9
- parameters: { layout: 'centered' },
10
- } satisfies Meta<typeof Tooltip>;
11
-
12
- export default meta;
13
- type Story = StoryObj<typeof meta>;
14
-
15
- export const Default: Story = {
16
- args: {
17
- content: 'This is a tooltip',
18
- children: <Button variant="secondary">Hover me</Button>,
19
- },
20
- };
21
-
22
- export const OnIcon: Story = {
23
- args: {
24
- content: 'More information',
25
- children: (
26
- <span style={{ color: 'var(--sv-color-text-muted)', cursor: 'default' }}>
27
- <Icon name="info" size="md" aria-label="Info" />
28
- </span>
29
- ),
30
- },
31
- };
32
-
33
- export const Sides: Story = {
34
- args: { content: '', children: <span /> },
35
- render: () => (
36
- <div style={{ display: 'flex', gap: 48, alignItems: 'center', padding: 48 }}>
37
- <Tooltip content="Top" side="top">
38
- <Button variant="ghost" size="sm">
39
- Top
40
- </Button>
41
- </Tooltip>
42
- <Tooltip content="Bottom" side="bottom">
43
- <Button variant="ghost" size="sm">
44
- Bottom
45
- </Button>
46
- </Tooltip>
47
- <Tooltip content="Left" side="left">
48
- <Button variant="ghost" size="sm">
49
- Left
50
- </Button>
51
- </Tooltip>
52
- <Tooltip content="Right" side="right">
53
- <Button variant="ghost" size="sm">
54
- Right
55
- </Button>
56
- </Tooltip>
57
- </div>
58
- ),
59
- };