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