@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
package/NOTICE CHANGED
@@ -22,3 +22,11 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
22
22
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
23
23
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
24
24
  PERFORMANCE OF THIS SOFTWARE.
25
+
26
+ ---
27
+
28
+ This package includes the Hanken Grotesk typeface (src/fonts, Fontsource's build of the Google Fonts release).
29
+
30
+ Copyright 2021 The Hanken Grotesk Project Authors (https://github.com/marcologous/hanken-grotesk)
31
+
32
+ SIL Open Font License, Version 1.1. The full text is in fonts/OFL.txt, and at https://openfontlicense.org.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @sovereignfs/ui
2
2
 
3
- Sovereign Design System — design tokens and React components for building [Sovereign](https://github.com/sovereignfs/sovereign) plugins.
3
+ Sovereign Design System — design tokens and React components for building [Sovereign](https://github.com/sovereignfs) apps.
4
4
 
5
5
  ## Installation
6
6
 
@@ -51,7 +51,7 @@ Primitive tokens --sv-grey-50 … --sv-grey-950 / --sv-space-1 … --sv-spac
51
51
  Semantic tokens --sv-color-surface / --sv-color-text-primary / --sv-shadow-card
52
52
  ```
53
53
 
54
- Plugin developers reference **semantic tokens** — never primitive colours directly. Dark mode and instance theming work by swapping semantic token values; no component changes required.
54
+ App developers reference **semantic tokens** — never primitive colours directly. Dark mode and instance theming work by swapping semantic token values; no component changes required.
55
55
 
56
56
  ## Icon component
57
57
 
@@ -66,10 +66,8 @@ Available icon names: `activity`, `alert-triangle`, `bell`, `check`, `chevron-do
66
66
  ## Documentation
67
67
 
68
68
  - [Storybook — live component & token gallery](https://sovereignfs.github.io/storybook)
69
- - [Design system reference](https://github.com/sovereignfs/sovereign/blob/main/docs/design-system.md)
70
- - [Plugin development guide](https://github.com/sovereignfs/sovereign/blob/main/docs/plugin-development.md)
71
- - [SDK stability & semver policy](https://github.com/sovereignfs/sovereign/blob/main/docs/sdk-stability.md)
69
+ - [Design system reference](../../docs/design-system.md)
72
70
 
73
71
  ## License
74
72
 
75
- AGPL-3.0-or-later
73
+ [MPL-2.0](LICENSE). The icons are derived from Lucide (ISC); see [NOTICE](NOTICE).
@@ -94,3 +94,9 @@
94
94
  white-space: nowrap;
95
95
  max-width: 100%;
96
96
  }
97
+
98
+ .trigger:focus-visible,
99
+ .tile:focus-visible {
100
+ outline: 2px solid var(--sv-color-focus-ring);
101
+ outline-offset: 2px;
102
+ }
@@ -167,3 +167,8 @@
167
167
  .destructive:active:not(:disabled) {
168
168
  background-color: color-mix(in srgb, var(--sv-color-error-surface) 85%, black);
169
169
  }
170
+
171
+ /* A `ButtonLink` is an anchor in a button's clothes: no underline, and the same height as the button beside it. */
172
+ .link {
173
+ text-decoration: none;
174
+ }
@@ -40,3 +40,9 @@
40
40
  outline: 2px solid var(--sv-color-focus-ring);
41
41
  outline-offset: 2px;
42
42
  }
43
+
44
+ @media (prefers-reduced-motion: reduce) {
45
+ .interactive {
46
+ transition: none;
47
+ }
48
+ }
@@ -179,3 +179,9 @@
179
179
  padding: var(--sv-space-3) var(--sv-space-2);
180
180
  border-radius: var(--sv-radius-md);
181
181
  }
182
+
183
+ @media (prefers-reduced-motion: reduce) {
184
+ .newTile {
185
+ transition: none;
186
+ }
187
+ }
@@ -93,3 +93,11 @@
93
93
  .trailing {
94
94
  flex-shrink: 0;
95
95
  }
96
+
97
+ @media (prefers-reduced-motion: reduce) {
98
+ .box,
99
+ .label,
100
+ .label::after {
101
+ transition: none;
102
+ }
103
+ }
@@ -109,3 +109,11 @@
109
109
  opacity: 0.5;
110
110
  cursor: not-allowed;
111
111
  }
112
+
113
+ @media (prefers-reduced-motion: reduce) {
114
+ .box,
115
+ .label,
116
+ .label::after {
117
+ transition: none;
118
+ }
119
+ }
@@ -51,3 +51,9 @@
51
51
  border-color: var(--sv-color-error-border);
52
52
  box-shadow: 0 0 0 2px var(--sv-color-error-border);
53
53
  }
54
+
55
+ @media (prefers-reduced-motion: reduce) {
56
+ .textarea {
57
+ transition: none;
58
+ }
59
+ }
@@ -130,3 +130,9 @@
130
130
  color: var(--sv-color-text-muted);
131
131
  pointer-events: none;
132
132
  }
133
+
134
+ .swatch:focus-visible,
135
+ .customWrapper:has(.customInput:focus-visible) {
136
+ outline: 2px solid var(--sv-color-focus-ring);
137
+ outline-offset: 2px;
138
+ }
@@ -120,3 +120,9 @@
120
120
  font-size: var(--sv-font-size-sm);
121
121
  text-align: center;
122
122
  }
123
+
124
+ @media (prefers-reduced-motion: reduce) {
125
+ .trigger {
126
+ transition: none;
127
+ }
128
+ }
@@ -78,3 +78,9 @@
78
78
  font-size: var(--sv-font-size-sm);
79
79
  text-align: center;
80
80
  }
81
+
82
+ .input:focus-visible,
83
+ .item:focus-visible {
84
+ outline: 2px solid var(--sv-color-focus-ring);
85
+ outline-offset: -2px;
86
+ }
@@ -111,3 +111,9 @@
111
111
  opacity: 0.5;
112
112
  cursor: not-allowed;
113
113
  }
114
+
115
+ @media (prefers-reduced-motion: reduce) {
116
+ .destructiveConfirm {
117
+ transition: none;
118
+ }
119
+ }
@@ -59,3 +59,9 @@
59
59
  padding: var(--sv-space-4);
60
60
  padding-bottom: max(var(--sv-space-4), env(safe-area-inset-bottom));
61
61
  }
62
+
63
+ @media (prefers-reduced-motion: reduce) {
64
+ .trigger {
65
+ transition: none;
66
+ }
67
+ }
@@ -6,7 +6,7 @@
6
6
  * content is sparse, only hitting the cap (and scrolling internally, inside
7
7
  * `.content`) once content actually exceeds it. Before this, height was
8
8
  * fixed too, which left short-content consumers (e.g. a two-field form in
9
- * console/plugins/PluginAccessDialog.tsx) looking like a near-empty
9
+ * the Console) looking like a near-empty
10
10
  * skeleton — see docs/architecture-rules.md. `auto` goes further — content-
11
11
  * driven on BOTH width and height, each independently capped rather than
12
12
  * either being fixed — for content whose natural footprint varies enough
@@ -55,3 +55,9 @@
55
55
  .dragging {
56
56
  opacity: 0.5;
57
57
  }
58
+
59
+ @media (prefers-reduced-motion: reduce) {
60
+ .handle {
61
+ transition: none;
62
+ }
63
+ }
@@ -1,4 +1,5 @@
1
1
  .dropzone {
2
+ position: relative;
2
3
  display: flex;
3
4
  align-items: center;
4
5
  gap: var(--sv-space-4);
@@ -58,6 +59,29 @@
58
59
  color: var(--sv-color-text-muted);
59
60
  }
60
61
 
62
+ /* Hidden to the eye and not to the keyboard: `display: none` would take the input out of the tab order, and the dropzone with
63
+ it. The label around it is the visible control, and shows the focus ring above. */
61
64
  .hiddenInput {
62
- display: none;
65
+ position: absolute;
66
+ width: 1px;
67
+ height: 1px;
68
+ margin: -1px;
69
+ padding: 0;
70
+ overflow: hidden;
71
+ clip-path: inset(50%);
72
+ white-space: nowrap;
73
+ border: 0;
74
+ opacity: 0;
75
+ pointer-events: none;
76
+ }
77
+
78
+ .dropzone:has(.hiddenInput:focus-visible) {
79
+ outline: 2px solid var(--sv-color-focus-ring);
80
+ outline-offset: 2px;
81
+ }
82
+
83
+ @media (prefers-reduced-motion: reduce) {
84
+ .dropzone {
85
+ transition: none;
86
+ }
63
87
  }
@@ -60,3 +60,9 @@
60
60
  text-overflow: ellipsis;
61
61
  white-space: nowrap;
62
62
  }
63
+
64
+ .brandBadge:focus-visible,
65
+ .plugin:focus-visible {
66
+ outline: 2px solid var(--sv-color-focus-ring);
67
+ outline-offset: 2px;
68
+ }
@@ -10,8 +10,10 @@
10
10
  cursor: pointer;
11
11
  }
12
12
 
13
- .trigger:hover {
14
- background: var(--sv-color-surface-sunken);
13
+ @media (hover: hover) {
14
+ .trigger:hover {
15
+ background: var(--sv-color-surface-sunken);
16
+ }
15
17
  }
16
18
 
17
19
  .trigger:disabled {
@@ -54,10 +56,18 @@
54
56
  cursor: pointer;
55
57
  }
56
58
 
57
- .option:hover {
58
- background: var(--sv-color-surface-sunken);
59
+ @media (hover: hover) {
60
+ .option:hover {
61
+ background: var(--sv-color-surface-sunken);
62
+ }
59
63
  }
60
64
 
61
65
  .optionSelected {
62
66
  background: var(--sv-color-accent-subtle);
63
67
  }
68
+
69
+ .trigger:focus-visible,
70
+ .option:focus-visible {
71
+ outline: 2px solid var(--sv-color-focus-ring);
72
+ outline-offset: -2px;
73
+ }
@@ -50,3 +50,9 @@
50
50
  opacity: 0.5;
51
51
  cursor: not-allowed;
52
52
  }
53
+
54
+ @media (prefers-reduced-motion: reduce) {
55
+ .input {
56
+ transition: none;
57
+ }
58
+ }
@@ -15,10 +15,17 @@
15
15
  text-decoration-color: var(--sv-color-border);
16
16
  }
17
17
 
18
- .link:hover {
19
- color: var(--sv-color-text-primary);
18
+ @media (hover: hover) {
19
+ .link:hover {
20
+ color: var(--sv-color-text-primary);
21
+ }
20
22
  }
21
23
 
22
24
  .dot {
23
25
  color: var(--sv-color-border);
24
26
  }
27
+
28
+ .link:focus-visible {
29
+ outline: 2px solid var(--sv-color-focus-ring);
30
+ outline-offset: 2px;
31
+ }
@@ -71,3 +71,8 @@
71
71
  line-height: 1.6;
72
72
  white-space: pre;
73
73
  }
74
+
75
+ .root a:focus-visible {
76
+ outline: 2px solid var(--sv-color-focus-ring);
77
+ outline-offset: 2px;
78
+ }
@@ -45,8 +45,17 @@
45
45
  border-bottom-left-radius: var(--sv-radius-sm);
46
46
  }
47
47
 
48
+ /*
49
+ * Wraps rather than overflowing. A turn can carry several actions plus a
50
+ * caption (which model answered, and when), and on a phone-width column
51
+ * that row is easily wider than the message list — an unwrapped row put a
52
+ * horizontal scrollbar on the conversation and clipped the last action off
53
+ * the edge, where it could not be reached at all.
54
+ */
48
55
  .actions {
49
56
  display: flex;
57
+ flex-wrap: wrap;
58
+ align-items: center;
50
59
  gap: var(--sv-space-2);
51
60
  margin-top: var(--sv-space-1);
52
61
  font-size: var(--sv-font-size-caption);
@@ -1,8 +1,6 @@
1
- /* Matches the runtime shell's own Apps drawer grid exactly
2
- (runtime/app/(platform)/_components/MobileNav.module.css's .drawerGrid/
3
- .drawerGridItem/.drawerGridIcon/.drawerGridName) — this component is
4
- meant to replace that hand-rolled markup for any consumer building its
5
- own Apps-style launcher. No header row — see the component's own doc
1
+ /* Matches the shell's own Apps drawer grid exactly — this component is
2
+ meant to replace hand-rolled markup for any consumer building its own
3
+ Apps-style launcher. No header row — see the component's own doc
6
4
  comment for why. */
7
5
 
8
6
  .grid {
@@ -80,3 +78,9 @@
80
78
  word-break: break-word;
81
79
  max-width: 80px;
82
80
  }
81
+
82
+ @media (prefers-reduced-motion: reduce) {
83
+ .gridIcon {
84
+ transition: none;
85
+ }
86
+ }
@@ -71,3 +71,9 @@
71
71
  position: relative;
72
72
  z-index: 1;
73
73
  }
74
+
75
+ @media (prefers-reduced-motion: reduce) {
76
+ .navItem {
77
+ transition: none;
78
+ }
79
+ }
@@ -65,9 +65,12 @@
65
65
  color 0.1s ease;
66
66
  }
67
67
 
68
+ /* The sidebar this sits in is the raised surface, which in a dark theme is the sunken surface's own colour, so
69
+ neither the hover nor the current row could be told from the rest with it: both are a tint of the accent,
70
+ which shows on either. */
68
71
  @media (hover: hover) {
69
72
  .static .row:hover {
70
- background-color: var(--sv-color-surface-sunken);
73
+ background-color: color-mix(in srgb, var(--sv-color-accent) 6%, transparent);
71
74
  color: var(--sv-color-text-primary);
72
75
  }
73
76
  }
@@ -78,7 +81,7 @@
78
81
  }
79
82
 
80
83
  .static .rowActive {
81
- background-color: var(--sv-color-surface-sunken);
84
+ background-color: var(--sv-color-accent-subtle);
82
85
  color: var(--sv-color-text-primary);
83
86
  font-weight: var(--sv-font-weight-semibold);
84
87
  }
@@ -128,3 +131,9 @@
128
131
  .drilldown .icon {
129
132
  color: var(--sv-color-text-muted);
130
133
  }
134
+
135
+ @media (prefers-reduced-motion: reduce) {
136
+ .static .row {
137
+ transition: none;
138
+ }
139
+ }
@@ -35,7 +35,7 @@
35
35
  border-bottom-color: var(--sv-color-text-primary);
36
36
  }
37
37
 
38
- @media (max-width: 640px) {
38
+ @media (max-width: 768px) {
39
39
  .nav {
40
40
  flex-wrap: nowrap;
41
41
  overflow-x: auto;
@@ -48,3 +48,9 @@
48
48
  display: none;
49
49
  }
50
50
  }
51
+
52
+ @media (prefers-reduced-motion: reduce) {
53
+ .link {
54
+ transition: none;
55
+ }
56
+ }
@@ -256,3 +256,13 @@
256
256
  background: var(--sv-color-surface-sunken);
257
257
  }
258
258
  }
259
+
260
+ .trigger:focus-visible,
261
+ .actionBtn:focus-visible,
262
+ .closeBtn:focus-visible,
263
+ .itemTitle:focus-visible,
264
+ .dismissBtn:focus-visible,
265
+ .viewAll:focus-visible {
266
+ outline: 2px solid var(--sv-color-focus-ring);
267
+ outline-offset: 2px;
268
+ }
@@ -0,0 +1,17 @@
1
+ /* A QR code is read by a camera, not a person, so it is black on white in every theme. */
2
+ .qr {
3
+ display: inline-block;
4
+ padding: var(--sv-space-2);
5
+ border-radius: var(--sv-radius-md);
6
+ background: var(--sv-white);
7
+ line-height: 0;
8
+ }
9
+
10
+ .qr svg {
11
+ width: 11rem;
12
+ height: 11rem;
13
+ }
14
+
15
+ .qr path {
16
+ fill: var(--sv-black);
17
+ }
@@ -22,8 +22,10 @@
22
22
  cursor: pointer;
23
23
  }
24
24
 
25
- .button:hover:not(:disabled) {
26
- background: var(--sv-color-surface);
25
+ @media (hover: hover) {
26
+ .button:hover:not(:disabled) {
27
+ background: var(--sv-color-surface);
28
+ }
27
29
  }
28
30
 
29
31
  .button:disabled {
@@ -86,3 +86,9 @@
86
86
  opacity: 0.5;
87
87
  cursor: not-allowed;
88
88
  }
89
+
90
+ @media (prefers-reduced-motion: reduce) {
91
+ .circle {
92
+ transition: none;
93
+ }
94
+ }
@@ -53,3 +53,9 @@
53
53
  color: var(--sv-color-text-primary);
54
54
  }
55
55
  }
56
+
57
+ @media (prefers-reduced-motion: reduce) {
58
+ .segment {
59
+ transition: none;
60
+ }
61
+ }
@@ -80,3 +80,9 @@
80
80
  width: 10px;
81
81
  height: 10px;
82
82
  }
83
+
84
+ @media (prefers-reduced-motion: reduce) {
85
+ .select {
86
+ transition: none;
87
+ }
88
+ }
@@ -54,5 +54,20 @@
54
54
  .content {
55
55
  flex: 1 1 auto;
56
56
  overflow-y: auto;
57
- overscroll-behavior: contain;
57
+ /* `none`, not `contain`: `contain` only stops scroll *chaining* to the
58
+ parent — the panel itself still rubber-bands, which is a real bug for
59
+ any caller-supplied content that puts a sticky element inside this
60
+ scroll container (a documented, supported pattern — see this file's own
61
+ `.content` comment above and Sheet.tsx's remark that "any content-owned
62
+ internal sticky positioning... resolves against this same scrolling
63
+ ancestor"). Confirmed live: sovereign-tasks' TaskDetailPane renders a
64
+ `position: sticky` header inside a Sheet on mobile, and pulling down at
65
+ the top of its scroll content dragged that header down with the bounce,
66
+ exposing blank panel background above it — the identical symptom
67
+ Dialog.module.css's own `.content` already documents and fixes with
68
+ `none` ("the panel itself still bounces, which reveals white
69
+ panel-background between OverlayHeader and the sticky tab strip on iOS
70
+ PWA"). A bounded overlay panel has no legitimate reason to bounce at
71
+ all, so `none` costs nothing functionally — same reasoning as Dialog. */
72
+ overscroll-behavior: none;
58
73
  }
@@ -63,7 +63,7 @@
63
63
  outline-offset: -2px;
64
64
  }
65
65
 
66
- @media (max-width: 720px) {
66
+ @media (max-width: 768px) {
67
67
  .splitPane,
68
68
  .splitPane:not(:has(.handle)) {
69
69
  grid-template-columns: 1fr;
@@ -42,9 +42,11 @@
42
42
  cursor: pointer;
43
43
  }
44
44
 
45
- .addChip:hover {
46
- background: var(--sv-color-surface-sunken);
47
- color: var(--sv-color-text-primary);
45
+ @media (hover: hover) {
46
+ .addChip:hover {
47
+ background: var(--sv-color-surface-sunken);
48
+ color: var(--sv-color-text-primary);
49
+ }
48
50
  }
49
51
 
50
52
  .addChip:focus-visible {
@@ -67,11 +67,16 @@
67
67
  cursor: pointer;
68
68
  }
69
69
 
70
- .option:hover,
71
70
  .optionActive {
72
71
  background: var(--sv-color-surface-sunken);
73
72
  }
74
73
 
74
+ @media (hover: hover) {
75
+ .option:hover {
76
+ background: var(--sv-color-surface-sunken);
77
+ }
78
+ }
79
+
75
80
  .optionIcon {
76
81
  display: flex;
77
82
  align-items: center;
@@ -101,3 +106,9 @@
101
106
  margin: var(--sv-space-1) var(--sv-space-2);
102
107
  border-top: var(--sv-border-width-hairline) solid var(--sv-color-border);
103
108
  }
109
+
110
+ @media (prefers-reduced-motion: reduce) {
111
+ .input {
112
+ transition: none;
113
+ }
114
+ }
@@ -62,3 +62,9 @@
62
62
  background: var(--sv-color-text-muted);
63
63
  }
64
64
  }
65
+
66
+ @media (prefers-reduced-motion: reduce) {
67
+ .dot::before {
68
+ transition: none;
69
+ }
70
+ }
@@ -77,3 +77,9 @@
77
77
  color: var(--sv-color-error-text);
78
78
  border-bottom-color: var(--sv-color-error-border);
79
79
  }
80
+
81
+ @media (prefers-reduced-motion: reduce) {
82
+ .dismiss {
83
+ transition: none;
84
+ }
85
+ }
@@ -54,3 +54,9 @@
54
54
  color: var(--sv-color-text-primary);
55
55
  }
56
56
  }
57
+
58
+ @media (prefers-reduced-motion: reduce) {
59
+ .tab {
60
+ transition: none;
61
+ }
62
+ }
@@ -139,3 +139,9 @@
139
139
  font-size: var(--sv-font-size-md);
140
140
  }
141
141
  }
142
+
143
+ @media (prefers-reduced-motion: reduce) {
144
+ .control {
145
+ transition: none;
146
+ }
147
+ }
@@ -45,3 +45,9 @@
45
45
  overflow: hidden;
46
46
  resize: none;
47
47
  }
48
+
49
+ @media (prefers-reduced-motion: reduce) {
50
+ .textarea {
51
+ transition: none;
52
+ }
53
+ }
@@ -183,6 +183,11 @@
183
183
  }
184
184
  }
185
185
 
186
+ .close:focus-visible {
187
+ outline: 2px solid var(--sv-color-focus-ring);
188
+ outline-offset: 2px;
189
+ }
190
+
186
191
  @media (prefers-reduced-motion: reduce) {
187
192
  .toast,
188
193
  .toast.exiting {
@@ -55,3 +55,10 @@
55
55
  .off .thumb {
56
56
  transform: translateX(0);
57
57
  }
58
+
59
+ @media (prefers-reduced-motion: reduce) {
60
+ .track,
61
+ .thumb {
62
+ transition: none;
63
+ }
64
+ }