@sovereignfs/ui 0.54.0 → 0.89.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/LICENSE +373 -661
  2. package/NOTICE +8 -0
  3. package/README.md +4 -6
  4. package/dist/Accordion.module.css +1 -1
  5. package/dist/Alert.module.css +1 -1
  6. package/dist/AppsLauncher.module.css +102 -0
  7. package/dist/Avatar.module.css +1 -1
  8. package/dist/Badge.module.css +30 -7
  9. package/dist/BalanceChip.module.css +1 -1
  10. package/dist/Button.module.css +23 -2
  11. package/dist/Card.module.css +7 -1
  12. package/dist/CardTile.module.css +187 -0
  13. package/dist/CheckableListRow.module.css +8 -0
  14. package/dist/Checkbox.module.css +8 -0
  15. package/dist/CodeTextarea.module.css +7 -1
  16. package/dist/Collapsible.module.css +1 -1
  17. package/dist/ColorPicker.module.css +138 -0
  18. package/dist/Combobox.module.css +8 -2
  19. package/dist/Command.module.css +7 -1
  20. package/dist/ConfirmDialog.module.css +8 -2
  21. package/dist/ConsentPrompt.module.css +21 -0
  22. package/dist/DatePicker.module.css +7 -1
  23. package/dist/Dialog.module.css +130 -21
  24. package/dist/DragHandleRow.module.css +6 -0
  25. package/dist/Drawer.module.css +36 -7
  26. package/dist/FileDropzone.module.css +25 -1
  27. package/dist/Header.module.css +68 -0
  28. package/dist/HeaderFooterLayout.module.css +21 -0
  29. package/dist/IconPicker.module.css +15 -5
  30. package/dist/Input.module.css +7 -1
  31. package/dist/Kbd.module.css +1 -1
  32. package/dist/LegalLinks.module.css +9 -2
  33. package/dist/Markdown.module.css +29 -0
  34. package/dist/Menu.module.css +1 -0
  35. package/dist/Message.module.css +10 -1
  36. package/dist/MessageScroller.module.css +12 -1
  37. package/dist/MobileAppsDrawer.module.css +19 -14
  38. package/dist/MobileFooter.module.css +7 -1
  39. package/dist/MobileHeader.module.css +14 -1
  40. package/dist/NavList.module.css +139 -0
  41. package/dist/NavTabs.module.css +8 -2
  42. package/dist/NotificationsPanel.module.css +268 -0
  43. package/dist/OverlayHeader.module.css +1 -1
  44. package/dist/PageContainer.module.css +62 -0
  45. package/dist/PageHeader.module.css +54 -0
  46. package/dist/PageLayout.module.css +51 -0
  47. package/dist/Popover.module.css +1 -1
  48. package/dist/QrCode.module.css +17 -0
  49. package/dist/QuantityStepper.module.css +5 -3
  50. package/dist/RadioGroup.module.css +6 -0
  51. package/dist/Resizable.module.css +3 -3
  52. package/dist/RootLayout.module.css +12 -0
  53. package/dist/SegmentedControl.module.css +7 -1
  54. package/dist/Select.module.css +7 -1
  55. package/dist/Sheet.module.css +20 -2
  56. package/dist/SplitPane.module.css +5 -5
  57. package/dist/StatusBadge.module.css +1 -1
  58. package/dist/StepStrip.module.css +55 -0
  59. package/dist/SuggestionInput.module.css +14 -3
  60. package/dist/SwipableMobileCarousel.module.css +12 -3
  61. package/dist/SwipableMobileCarouselDots.module.css +21 -0
  62. package/dist/SwipeStack.module.css +101 -0
  63. package/dist/SystemBanner.module.css +16 -0
  64. package/dist/Table.module.css +2 -2
  65. package/dist/Tabs.module.css +7 -1
  66. package/dist/TagInput.module.css +8 -2
  67. package/dist/Textarea.module.css +15 -1
  68. package/dist/ThreeColumnLayout.module.css +35 -0
  69. package/dist/Toast.module.css +67 -3
  70. package/dist/Toggle.module.css +7 -0
  71. package/dist/Tooltip.module.css +7 -1
  72. package/dist/UserMenu.module.css +95 -0
  73. package/dist/fonts/OFL.txt +93 -0
  74. package/dist/fonts/hanken-grotesk-cyrillic-ext-wght-normal.woff2 +0 -0
  75. package/dist/fonts/hanken-grotesk-latin-ext-wght-normal.woff2 +0 -0
  76. package/dist/fonts/hanken-grotesk-latin-wght-normal.woff2 +0 -0
  77. package/dist/fonts/hanken-grotesk-vietnamese-wght-normal.woff2 +0 -0
  78. package/dist/index.d.ts +1156 -76
  79. package/dist/index.js +4223 -1513
  80. package/dist/tokens/fonts.css +53 -0
  81. package/dist/tokens/primitives.css +23 -12
  82. package/dist/tokens/semantic.css +32 -0
  83. package/dist/tokens/theme-presets.css +33 -0
  84. package/dist/tokens.css +2 -1
  85. package/package.json +46 -19
  86. package/src/__tests__/motion.test.tsx +0 -105
  87. package/src/components/Accordion/Accordion.module.css +0 -3
  88. package/src/components/Accordion/Accordion.stories.tsx +0 -110
  89. package/src/components/Accordion/Accordion.tsx +0 -53
  90. package/src/components/Accordion/__tests__/Accordion.test.tsx +0 -61
  91. package/src/components/Alert/Alert.module.css +0 -62
  92. package/src/components/Alert/Alert.stories.tsx +0 -96
  93. package/src/components/Alert/Alert.tsx +0 -58
  94. package/src/components/Alert/__tests__/Alert.test.tsx +0 -75
  95. package/src/components/AspectRatio/AspectRatio.module.css +0 -15
  96. package/src/components/AspectRatio/AspectRatio.stories.tsx +0 -78
  97. package/src/components/AspectRatio/AspectRatio.tsx +0 -21
  98. package/src/components/AspectRatio/__tests__/AspectRatio.test.tsx +0 -27
  99. package/src/components/Avatar/Avatar.module.css +0 -38
  100. package/src/components/Avatar/Avatar.tsx +0 -42
  101. package/src/components/Badge/Badge.module.css +0 -154
  102. package/src/components/Badge/Badge.stories.tsx +0 -226
  103. package/src/components/Badge/Badge.tsx +0 -81
  104. package/src/components/Badge/__tests__/Badge.test.tsx +0 -88
  105. package/src/components/BalanceChip/BalanceChip.module.css +0 -32
  106. package/src/components/BalanceChip/BalanceChip.stories.tsx +0 -45
  107. package/src/components/BalanceChip/BalanceChip.tsx +0 -33
  108. package/src/components/Breadcrumb/Breadcrumb.module.css +0 -49
  109. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +0 -47
  110. package/src/components/Breadcrumb/Breadcrumb.tsx +0 -57
  111. package/src/components/Breadcrumb/__tests__/Breadcrumb.test.tsx +0 -52
  112. package/src/components/Button/Button.module.css +0 -153
  113. package/src/components/Button/Button.stories.tsx +0 -83
  114. package/src/components/Button/Button.tsx +0 -52
  115. package/src/components/Button/__tests__/Button.test.tsx +0 -66
  116. package/src/components/ButtonGroup/ButtonGroup.module.css +0 -29
  117. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -57
  118. package/src/components/ButtonGroup/ButtonGroup.tsx +0 -27
  119. package/src/components/ButtonGroup/__tests__/ButtonGroup.test.tsx +0 -29
  120. package/src/components/Calendar/Calendar.module.css +0 -126
  121. package/src/components/Calendar/Calendar.tsx +0 -213
  122. package/src/components/Calendar/__tests__/Calendar.test.tsx +0 -98
  123. package/src/components/Calendar/dateUtils.ts +0 -97
  124. package/src/components/Card/Card.module.css +0 -42
  125. package/src/components/Card/Card.tsx +0 -34
  126. package/src/components/CheckableListRow/CheckableListRow.module.css +0 -95
  127. package/src/components/CheckableListRow/CheckableListRow.stories.tsx +0 -99
  128. package/src/components/CheckableListRow/CheckableListRow.tsx +0 -89
  129. package/src/components/Checkbox/Checkbox.module.css +0 -111
  130. package/src/components/Checkbox/Checkbox.tsx +0 -78
  131. package/src/components/CodeTextarea/CodeTextarea.module.css +0 -53
  132. package/src/components/CodeTextarea/CodeTextarea.stories.tsx +0 -77
  133. package/src/components/CodeTextarea/CodeTextarea.tsx +0 -36
  134. package/src/components/Collapsible/Collapsible.module.css +0 -70
  135. package/src/components/Collapsible/Collapsible.stories.tsx +0 -62
  136. package/src/components/Collapsible/Collapsible.tsx +0 -66
  137. package/src/components/Collapsible/__tests__/Collapsible.test.tsx +0 -71
  138. package/src/components/Combobox/Combobox.module.css +0 -122
  139. package/src/components/Combobox/Combobox.stories.tsx +0 -79
  140. package/src/components/Combobox/Combobox.tsx +0 -186
  141. package/src/components/Combobox/__tests__/Combobox.test.tsx +0 -158
  142. package/src/components/Command/Command.module.css +0 -80
  143. package/src/components/Command/Command.stories.tsx +0 -104
  144. package/src/components/Command/Command.tsx +0 -168
  145. package/src/components/Command/__tests__/Command.test.tsx +0 -162
  146. package/src/components/ConfirmDialog/ConfirmDialog.module.css +0 -113
  147. package/src/components/ConfirmDialog/ConfirmDialog.tsx +0 -124
  148. package/src/components/ConfirmDialog/__tests__/ConfirmDialog.test.tsx +0 -146
  149. package/src/components/ContextMenu/ContextMenu.stories.tsx +0 -81
  150. package/src/components/ContextMenu/ContextMenu.tsx +0 -100
  151. package/src/components/ContextMenu/__tests__/ContextMenu.test.tsx +0 -87
  152. package/src/components/CurrencyInput/CurrencyInput.stories.tsx +0 -50
  153. package/src/components/CurrencyInput/CurrencyInput.tsx +0 -60
  154. package/src/components/DataTable/DataTable.module.css +0 -28
  155. package/src/components/DataTable/DataTable.stories.tsx +0 -74
  156. package/src/components/DataTable/DataTable.tsx +0 -154
  157. package/src/components/DataTable/__tests__/DataTable.test.tsx +0 -123
  158. package/src/components/DatePicker/DatePicker.module.css +0 -61
  159. package/src/components/DatePicker/DatePicker.tsx +0 -103
  160. package/src/components/DatePicker/__tests__/DatePicker.test.tsx +0 -89
  161. package/src/components/DeviceOnlyGate/DeviceOnlyGate.tsx +0 -58
  162. package/src/components/DeviceOnlyGate/__tests__/DeviceOnlyGate.test.tsx +0 -45
  163. package/src/components/DeviceStorageKeyGate/DeviceStorageKeyGate.tsx +0 -100
  164. package/src/components/DeviceStorageKeyGate/__tests__/DeviceStorageKeyGate.test.tsx +0 -119
  165. package/src/components/Dialog/Dialog.module.css +0 -226
  166. package/src/components/Dialog/Dialog.stories.tsx +0 -147
  167. package/src/components/Dialog/Dialog.tsx +0 -160
  168. package/src/components/Dialog/__tests__/Dialog.test.tsx +0 -137
  169. package/src/components/DragHandleRow/DragHandleRow.module.css +0 -57
  170. package/src/components/DragHandleRow/DragHandleRow.tsx +0 -61
  171. package/src/components/Drawer/Drawer.module.css +0 -92
  172. package/src/components/Drawer/Drawer.stories.tsx +0 -132
  173. package/src/components/Drawer/Drawer.tsx +0 -176
  174. package/src/components/Drawer/__tests__/Drawer.test.tsx +0 -199
  175. package/src/components/EmptyState/EmptyState.module.css +0 -27
  176. package/src/components/EmptyState/EmptyState.tsx +0 -27
  177. package/src/components/FileDropzone/FileDropzone.module.css +0 -63
  178. package/src/components/FileDropzone/FileDropzone.tsx +0 -109
  179. package/src/components/FileDropzone/__tests__/FileDropzone.test.tsx +0 -67
  180. package/src/components/FormField/FormField.module.css +0 -33
  181. package/src/components/FormField/FormField.tsx +0 -78
  182. package/src/components/FormField/__tests__/FormField.test.tsx +0 -83
  183. package/src/components/HoverCard/HoverCard.module.css +0 -3
  184. package/src/components/HoverCard/HoverCard.stories.tsx +0 -66
  185. package/src/components/HoverCard/HoverCard.tsx +0 -111
  186. package/src/components/HoverCard/__tests__/HoverCard.test.tsx +0 -99
  187. package/src/components/Icon/Icon.module.css +0 -27
  188. package/src/components/Icon/Icon.stories.tsx +0 -95
  189. package/src/components/Icon/Icon.tsx +0 -43
  190. package/src/components/Icon/__tests__/Icon.test.tsx +0 -40
  191. package/src/components/Icon/icons/activity.tsx +0 -20
  192. package/src/components/Icon/icons/alert-triangle.tsx +0 -22
  193. package/src/components/Icon/icons/apple.tsx +0 -21
  194. package/src/components/Icon/icons/banana.tsx +0 -21
  195. package/src/components/Icon/icons/beef.tsx +0 -22
  196. package/src/components/Icon/icons/beer.tsx +0 -24
  197. package/src/components/Icon/icons/bell.tsx +0 -21
  198. package/src/components/Icon/icons/calendar.tsx +0 -23
  199. package/src/components/Icon/icons/candy.tsx +0 -24
  200. package/src/components/Icon/icons/carrot.tsx +0 -22
  201. package/src/components/Icon/icons/check.tsx +0 -20
  202. package/src/components/Icon/icons/chevron-down.tsx +0 -20
  203. package/src/components/Icon/icons/chevron-left.tsx +0 -20
  204. package/src/components/Icon/icons/chevron-right.tsx +0 -20
  205. package/src/components/Icon/icons/chevron-up.tsx +0 -20
  206. package/src/components/Icon/icons/circle-check.tsx +0 -21
  207. package/src/components/Icon/icons/circle-x.tsx +0 -22
  208. package/src/components/Icon/icons/coffee.tsx +0 -23
  209. package/src/components/Icon/icons/cookie.tsx +0 -25
  210. package/src/components/Icon/icons/croissant.tsx +0 -24
  211. package/src/components/Icon/icons/cup-soda.tsx +0 -23
  212. package/src/components/Icon/icons/drumstick.tsx +0 -21
  213. package/src/components/Icon/icons/egg.tsx +0 -20
  214. package/src/components/Icon/icons/ellipsis-vertical.tsx +0 -22
  215. package/src/components/Icon/icons/external-link.tsx +0 -22
  216. package/src/components/Icon/icons/eye-off.tsx +0 -23
  217. package/src/components/Icon/icons/eye.tsx +0 -21
  218. package/src/components/Icon/icons/file.tsx +0 -21
  219. package/src/components/Icon/icons/fish.tsx +0 -25
  220. package/src/components/Icon/icons/grid-2x2.tsx +0 -22
  221. package/src/components/Icon/icons/house.tsx +0 -21
  222. package/src/components/Icon/icons/index.ts +0 -234
  223. package/src/components/Icon/icons/info.tsx +0 -22
  224. package/src/components/Icon/icons/lock.tsx +0 -21
  225. package/src/components/Icon/icons/log-out.tsx +0 -22
  226. package/src/components/Icon/icons/mail.tsx +0 -21
  227. package/src/components/Icon/icons/menu.tsx +0 -22
  228. package/src/components/Icon/icons/milk.tsx +0 -22
  229. package/src/components/Icon/icons/package.tsx +0 -23
  230. package/src/components/Icon/icons/pencil.tsx +0 -21
  231. package/src/components/Icon/icons/pizza.tsx +0 -24
  232. package/src/components/Icon/icons/plus.tsx +0 -21
  233. package/src/components/Icon/icons/rotate-ccw.tsx +0 -21
  234. package/src/components/Icon/icons/salad.tsx +0 -24
  235. package/src/components/Icon/icons/search.tsx +0 -21
  236. package/src/components/Icon/icons/settings.tsx +0 -21
  237. package/src/components/Icon/icons/shield.tsx +0 -20
  238. package/src/components/Icon/icons/shopping-basket.tsx +0 -26
  239. package/src/components/Icon/icons/sliders-horizontal.tsx +0 -28
  240. package/src/components/Icon/icons/smartphone.tsx +0 -21
  241. package/src/components/Icon/icons/snowflake.tsx +0 -31
  242. package/src/components/Icon/icons/spray-can.tsx +0 -29
  243. package/src/components/Icon/icons/trash-2.tsx +0 -24
  244. package/src/components/Icon/icons/upload.tsx +0 -22
  245. package/src/components/Icon/icons/user.tsx +0 -21
  246. package/src/components/Icon/icons/wine.tsx +0 -23
  247. package/src/components/Icon/icons/x.tsx +0 -21
  248. package/src/components/IconPicker/IconPicker.module.css +0 -63
  249. package/src/components/IconPicker/IconPicker.stories.tsx +0 -84
  250. package/src/components/IconPicker/IconPicker.tsx +0 -90
  251. package/src/components/Input/Input.module.css +0 -52
  252. package/src/components/Input/Input.stories.tsx +0 -86
  253. package/src/components/Input/Input.tsx +0 -14
  254. package/src/components/Input/__tests__/Input.test.tsx +0 -22
  255. package/src/components/Item/Item.module.css +0 -70
  256. package/src/components/Item/Item.stories.tsx +0 -62
  257. package/src/components/Item/Item.tsx +0 -54
  258. package/src/components/Item/__tests__/Item.test.tsx +0 -39
  259. package/src/components/Kbd/Kbd.module.css +0 -14
  260. package/src/components/Kbd/Kbd.stories.tsx +0 -32
  261. package/src/components/Kbd/Kbd.tsx +0 -12
  262. package/src/components/Kbd/__tests__/Kbd.test.tsx +0 -14
  263. package/src/components/Label/Label.module.css +0 -11
  264. package/src/components/Label/Label.stories.tsx +0 -40
  265. package/src/components/Label/Label.tsx +0 -24
  266. package/src/components/Label/__tests__/Label.test.tsx +0 -32
  267. package/src/components/LegalLinks/LegalLinks.module.css +0 -24
  268. package/src/components/LegalLinks/LegalLinks.stories.tsx +0 -22
  269. package/src/components/LegalLinks/LegalLinks.tsx +0 -40
  270. package/src/components/Markdown/Markdown.module.css +0 -49
  271. package/src/components/Markdown/Markdown.stories.tsx +0 -30
  272. package/src/components/Markdown/Markdown.tsx +0 -168
  273. package/src/components/Marker/Marker.module.css +0 -33
  274. package/src/components/Marker/Marker.stories.tsx +0 -39
  275. package/src/components/Marker/Marker.tsx +0 -34
  276. package/src/components/Marker/__tests__/Marker.test.tsx +0 -23
  277. package/src/components/MemberMultiSelect/MemberMultiSelect.module.css +0 -27
  278. package/src/components/MemberMultiSelect/MemberMultiSelect.stories.tsx +0 -74
  279. package/src/components/MemberMultiSelect/MemberMultiSelect.tsx +0 -67
  280. package/src/components/Menu/Menu.module.css +0 -89
  281. package/src/components/Menu/Menu.tsx +0 -159
  282. package/src/components/Menu/__tests__/Menu.test.tsx +0 -197
  283. package/src/components/Menubar/Menubar.stories.tsx +0 -52
  284. package/src/components/Menubar/Menubar.tsx +0 -42
  285. package/src/components/Menubar/__tests__/Menubar.test.tsx +0 -45
  286. package/src/components/Message/Message.module.css +0 -99
  287. package/src/components/Message/Message.stories.tsx +0 -79
  288. package/src/components/Message/Message.tsx +0 -41
  289. package/src/components/Message/__tests__/Message.test.tsx +0 -46
  290. package/src/components/MessageScroller/MessageScroller.module.css +0 -54
  291. package/src/components/MessageScroller/MessageScroller.stories.tsx +0 -84
  292. package/src/components/MessageScroller/MessageScroller.tsx +0 -72
  293. package/src/components/MessageScroller/__tests__/MessageScroller.test.tsx +0 -105
  294. package/src/components/MobileAppsDrawer/MobileAppsDrawer.module.css +0 -81
  295. package/src/components/MobileAppsDrawer/MobileAppsDrawer.tsx +0 -78
  296. package/src/components/MobileAppsDrawer/__tests__/MobileAppsDrawer.test.tsx +0 -80
  297. package/src/components/MobileFooter/MobileFooter.module.css +0 -73
  298. package/src/components/MobileFooter/MobileFooter.stories.tsx +0 -47
  299. package/src/components/MobileFooter/MobileFooter.tsx +0 -109
  300. package/src/components/MobileFooter/__tests__/MobileFooter.test.tsx +0 -71
  301. package/src/components/MobileHeader/MobileHeader.module.css +0 -63
  302. package/src/components/MobileHeader/MobileHeader.stories.tsx +0 -57
  303. package/src/components/MobileHeader/MobileHeader.tsx +0 -77
  304. package/src/components/MobileHeader/__tests__/MobileHeader.test.tsx +0 -58
  305. package/src/components/NavTabs/NavTabs.module.css +0 -50
  306. package/src/components/NavTabs/NavTabs.tsx +0 -61
  307. package/src/components/NavigationMenu/NavigationMenu.module.css +0 -53
  308. package/src/components/NavigationMenu/NavigationMenu.stories.tsx +0 -58
  309. package/src/components/NavigationMenu/NavigationMenu.tsx +0 -125
  310. package/src/components/NavigationMenu/__tests__/NavigationMenu.test.tsx +0 -93
  311. package/src/components/OfflineGate/OfflineGate.tsx +0 -44
  312. package/src/components/OfflineGate/__tests__/OfflineGate.test.tsx +0 -66
  313. package/src/components/OverlayHeader/OverlayHeader.module.css +0 -98
  314. package/src/components/OverlayHeader/OverlayHeader.tsx +0 -62
  315. package/src/components/OverlayHeader/__tests__/OverlayHeader.test.tsx +0 -51
  316. package/src/components/PageContainer/PageContainer.module.css +0 -20
  317. package/src/components/PageContainer/PageContainer.tsx +0 -31
  318. package/src/components/PageContainer/__tests__/PageContainer.test.tsx +0 -37
  319. package/src/components/PageHeader/PageHeader.module.css +0 -32
  320. package/src/components/PageHeader/PageHeader.tsx +0 -35
  321. package/src/components/Pagination/Pagination.module.css +0 -98
  322. package/src/components/Pagination/Pagination.stories.tsx +0 -49
  323. package/src/components/Pagination/Pagination.tsx +0 -87
  324. package/src/components/Pagination/__tests__/Pagination.test.tsx +0 -56
  325. package/src/components/Popover/Popover.module.css +0 -74
  326. package/src/components/Popover/Popover.stories.tsx +0 -357
  327. package/src/components/Popover/Popover.tsx +0 -208
  328. package/src/components/Popover/__tests__/Popover.test.tsx +0 -98
  329. package/src/components/Progress/Progress.module.css +0 -20
  330. package/src/components/Progress/Progress.stories.tsx +0 -40
  331. package/src/components/Progress/Progress.tsx +0 -35
  332. package/src/components/Progress/__tests__/Progress.test.tsx +0 -31
  333. package/src/components/QuantityStepper/QuantityStepper.module.css +0 -67
  334. package/src/components/QuantityStepper/QuantityStepper.stories.tsx +0 -79
  335. package/src/components/QuantityStepper/QuantityStepper.tsx +0 -107
  336. package/src/components/RadioGroup/RadioGroup.module.css +0 -88
  337. package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -69
  338. package/src/components/RadioGroup/RadioGroup.tsx +0 -99
  339. package/src/components/RadioGroup/__tests__/RadioGroup.test.tsx +0 -59
  340. package/src/components/Resizable/Resizable.module.css +0 -70
  341. package/src/components/Resizable/Resizable.stories.tsx +0 -82
  342. package/src/components/Resizable/Resizable.tsx +0 -313
  343. package/src/components/Resizable/__tests__/Resizable.test.tsx +0 -128
  344. package/src/components/ResponsiveSurface/ResponsiveSurface.tsx +0 -24
  345. package/src/components/ResponsiveSurface/__tests__/ResponsiveSurface.test.tsx +0 -73
  346. package/src/components/ScrollArea/ScrollArea.module.css +0 -20
  347. package/src/components/ScrollArea/ScrollArea.stories.tsx +0 -57
  348. package/src/components/ScrollArea/ScrollArea.tsx +0 -27
  349. package/src/components/ScrollArea/__tests__/ScrollArea.test.tsx +0 -39
  350. package/src/components/SegmentedControl/SegmentedControl.module.css +0 -55
  351. package/src/components/SegmentedControl/SegmentedControl.stories.tsx +0 -118
  352. package/src/components/SegmentedControl/SegmentedControl.tsx +0 -56
  353. package/src/components/SegmentedControl/__tests__/SegmentedControl.test.tsx +0 -63
  354. package/src/components/Select/Select.module.css +0 -82
  355. package/src/components/Select/Select.stories.tsx +0 -115
  356. package/src/components/Select/Select.tsx +0 -48
  357. package/src/components/Select/__tests__/Select.test.tsx +0 -59
  358. package/src/components/Sheet/Sheet.module.css +0 -55
  359. package/src/components/Sheet/Sheet.tsx +0 -109
  360. package/src/components/Sheet/__tests__/Sheet.test.tsx +0 -99
  361. package/src/components/Slider/Slider.module.css +0 -95
  362. package/src/components/Slider/Slider.stories.tsx +0 -64
  363. package/src/components/Slider/Slider.tsx +0 -77
  364. package/src/components/Slider/__tests__/Slider.test.tsx +0 -45
  365. package/src/components/Spinner/Spinner.module.css +0 -39
  366. package/src/components/Spinner/Spinner.tsx +0 -23
  367. package/src/components/SplitMethodSelector/SplitMethodSelector.stories.tsx +0 -33
  368. package/src/components/SplitMethodSelector/SplitMethodSelector.tsx +0 -43
  369. package/src/components/SplitPane/SplitPane.module.css +0 -85
  370. package/src/components/SplitPane/SplitPane.stories.tsx +0 -160
  371. package/src/components/SplitPane/SplitPane.tsx +0 -149
  372. package/src/components/SplitPane/__tests__/SplitPane.test.tsx +0 -51
  373. package/src/components/StatusBadge/StatusBadge.module.css +0 -59
  374. package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -74
  375. package/src/components/StatusBadge/StatusBadge.tsx +0 -65
  376. package/src/components/SuggestionInput/SuggestionInput.module.css +0 -103
  377. package/src/components/SuggestionInput/SuggestionInput.stories.tsx +0 -144
  378. package/src/components/SuggestionInput/SuggestionInput.tsx +0 -207
  379. package/src/components/SwipableMobileCarousel/SwipableMobileCarousel.module.css +0 -55
  380. package/src/components/SwipableMobileCarousel/SwipableMobileCarousel.tsx +0 -227
  381. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlide.tsx +0 -35
  382. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideBody.tsx +0 -42
  383. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideFooter.tsx +0 -18
  384. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideHeader.tsx +0 -21
  385. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideParts.module.css +0 -29
  386. package/src/components/SwipableMobileCarousel/__tests__/SwipableMobileCarousel.test.tsx +0 -133
  387. package/src/components/SwipableMobileCarousel/__tests__/SwipableMobileCarouselDevGuard.test.tsx +0 -61
  388. package/src/components/SwipableMobileCarousel/context.ts +0 -13
  389. package/src/components/SwipableMobileCarouselDots/SwipableMobileCarouselDots.module.css +0 -49
  390. package/src/components/SwipableMobileCarouselDots/SwipableMobileCarouselDots.tsx +0 -62
  391. package/src/components/SwipableMobileCarouselDots/__tests__/SwipableMobileCarouselDots.test.tsx +0 -63
  392. package/src/components/SystemBanner/SystemBanner.module.css +0 -69
  393. package/src/components/SystemBanner/SystemBanner.stories.tsx +0 -86
  394. package/src/components/SystemBanner/SystemBanner.tsx +0 -50
  395. package/src/components/SystemBanner/__tests__/SystemBanner.test.tsx +0 -50
  396. package/src/components/Table/Table.module.css +0 -45
  397. package/src/components/Table/Table.stories.tsx +0 -125
  398. package/src/components/Table/Table.tsx +0 -51
  399. package/src/components/Table/__tests__/Table.test.tsx +0 -50
  400. package/src/components/Tabs/Tabs.module.css +0 -56
  401. package/src/components/Tabs/Tabs.stories.tsx +0 -100
  402. package/src/components/Tabs/Tabs.tsx +0 -46
  403. package/src/components/Tabs/__tests__/Tabs.test.tsx +0 -45
  404. package/src/components/TagInput/TagInput.module.css +0 -141
  405. package/src/components/TagInput/TagInput.stories.tsx +0 -109
  406. package/src/components/TagInput/TagInput.tsx +0 -174
  407. package/src/components/TagInput/__tests__/TagInput.test.tsx +0 -69
  408. package/src/components/Textarea/Textarea.module.css +0 -39
  409. package/src/components/Textarea/Textarea.tsx +0 -15
  410. package/src/components/Textarea/__tests__/Textarea.test.tsx +0 -29
  411. package/src/components/Toast/Toast.module.css +0 -132
  412. package/src/components/Toast/Toast.stories.tsx +0 -191
  413. package/src/components/Toast/Toast.tsx +0 -139
  414. package/src/components/Toggle/Toggle.module.css +0 -57
  415. package/src/components/Toggle/Toggle.stories.tsx +0 -95
  416. package/src/components/Toggle/Toggle.tsx +0 -39
  417. package/src/components/Toggle/__tests__/Toggle.test.tsx +0 -47
  418. package/src/components/Tooltip/Tooltip.module.css +0 -56
  419. package/src/components/Tooltip/Tooltip.tsx +0 -30
  420. package/src/components/Typography/Typography.module.css +0 -47
  421. package/src/components/Typography/Typography.stories.tsx +0 -62
  422. package/src/components/Typography/Typography.tsx +0 -30
  423. package/src/components/Typography/__tests__/Typography.test.tsx +0 -34
  424. package/src/css-modules.d.ts +0 -4
  425. package/src/hooks/__tests__/useCarouselRouteSync.test.tsx +0 -126
  426. package/src/hooks/__tests__/useDoubleTap.test.tsx +0 -117
  427. package/src/hooks/__tests__/useIsMobile.test.tsx +0 -80
  428. package/src/hooks/__tests__/useIsOffline.test.tsx +0 -53
  429. package/src/hooks/__tests__/useLongPress.test.tsx +0 -158
  430. package/src/hooks/__tests__/useOfflineTileState.test.tsx +0 -69
  431. package/src/hooks/__tests__/useResponsiveLayout.test.tsx +0 -87
  432. package/src/hooks/__tests__/useSnapCarousel.test.tsx +0 -93
  433. package/src/hooks/__tests__/useSwipeReveal.test.tsx +0 -110
  434. package/src/hooks/index.ts +0 -24
  435. package/src/hooks/useCarouselRouteSync.ts +0 -92
  436. package/src/hooks/useCommitOnEnterOrBlur.ts +0 -39
  437. package/src/hooks/useDoubleTap.ts +0 -91
  438. package/src/hooks/useIsMobile.ts +0 -33
  439. package/src/hooks/useIsOffline.ts +0 -41
  440. package/src/hooks/useLongPress.ts +0 -185
  441. package/src/hooks/useOfflineTileState.ts +0 -45
  442. package/src/hooks/useResponsiveLayout.ts +0 -36
  443. package/src/hooks/useSnapCarousel.ts +0 -79
  444. package/src/hooks/useSwipeReveal.ts +0 -107
  445. package/src/index.ts +0 -251
  446. package/src/motion.ts +0 -78
  447. package/src/overlay-shell.ts +0 -94
  448. package/src/scroll-lock.ts +0 -22
  449. package/src/stories/Avatar.stories.tsx +0 -44
  450. package/src/stories/Card.stories.tsx +0 -35
  451. package/src/stories/Checkbox.stories.tsx +0 -45
  452. package/src/stories/DesignSystemOverview.stories.tsx +0 -3187
  453. package/src/stories/DeviceOnlyGate.stories.tsx +0 -35
  454. package/src/stories/DeviceStorageKeyGate.stories.tsx +0 -57
  455. package/src/stories/DragHandleRow.stories.tsx +0 -41
  456. package/src/stories/EmptyState.stories.tsx +0 -33
  457. package/src/stories/FileDropzone.stories.tsx +0 -69
  458. package/src/stories/FormField.stories.tsx +0 -47
  459. package/src/stories/InteractionHooks.stories.tsx +0 -925
  460. package/src/stories/MobilePatterns.stories.tsx +0 -1536
  461. package/src/stories/NavTabs.stories.tsx +0 -53
  462. package/src/stories/OfflineGate.stories.tsx +0 -42
  463. package/src/stories/PageContainer.stories.tsx +0 -37
  464. package/src/stories/PageHeader.stories.tsx +0 -42
  465. package/src/stories/ResponsiveSurface.stories.tsx +0 -47
  466. package/src/stories/Spinner.stories.tsx +0 -25
  467. package/src/stories/SwipableMobileCarousel.stories.tsx +0 -304
  468. package/src/stories/Textarea.stories.tsx +0 -51
  469. package/src/stories/TokenGallery.stories.tsx +0 -602
  470. package/src/stories/Tooltip.stories.tsx +0 -59
  471. package/src/tokens/primitives.css +0 -157
  472. package/src/tokens/semantic.css +0 -130
  473. package/src/tokens.css +0 -5
@@ -0,0 +1,268 @@
1
+ .trigger {
2
+ position: relative;
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ flex-shrink: 0;
7
+ width: 28px;
8
+ height: 28px;
9
+ padding: 0;
10
+ border: none;
11
+ border-radius: var(--sv-radius-md);
12
+ background: transparent;
13
+ color: var(--sv-color-text-primary);
14
+ cursor: pointer;
15
+ }
16
+
17
+ @media (hover: hover) {
18
+ .trigger:hover {
19
+ background: var(--sv-color-surface-sunken);
20
+ }
21
+ }
22
+
23
+ .badge {
24
+ position: absolute;
25
+ top: 2px;
26
+ right: 2px;
27
+ min-width: 14px;
28
+ height: 14px;
29
+ padding: 0 3px;
30
+ background: var(--sv-color-error-text);
31
+ color: white;
32
+ border-radius: var(--sv-radius-full);
33
+ font-size: 9px;
34
+ font-weight: 700;
35
+ line-height: 14px;
36
+ text-align: center;
37
+ pointer-events: none;
38
+ }
39
+
40
+ /* ── Header ─────────────────────────────────────────────────────────────── */
41
+
42
+ .header {
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: space-between;
46
+ gap: var(--sv-space-2);
47
+ padding: var(--sv-space-3) var(--sv-space-3) var(--sv-space-3) var(--sv-space-4);
48
+ border-bottom: var(--sv-border-width-hairline) solid var(--sv-color-border);
49
+ }
50
+
51
+ .headerTitle {
52
+ font-size: var(--sv-font-size-sm);
53
+ font-weight: var(--sv-font-weight-semibold);
54
+ color: var(--sv-color-text-primary);
55
+ flex: 1;
56
+ }
57
+
58
+ .headerActions {
59
+ display: flex;
60
+ align-items: center;
61
+ gap: var(--sv-space-2);
62
+ }
63
+
64
+ .actionBtn {
65
+ background: none;
66
+ border: none;
67
+ padding: 0;
68
+ cursor: pointer;
69
+ font-size: var(--sv-font-size-caption);
70
+ color: var(--sv-color-text-muted);
71
+ white-space: nowrap;
72
+ }
73
+
74
+ @media (hover: hover) {
75
+ .actionBtn:hover {
76
+ color: var(--sv-color-text-primary);
77
+ }
78
+ }
79
+
80
+ .closeBtn {
81
+ display: flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ width: 24px;
85
+ height: 24px;
86
+ padding: 0;
87
+ border: none;
88
+ border-radius: var(--sv-radius-sm);
89
+ background: none;
90
+ color: var(--sv-color-text-muted);
91
+ cursor: pointer;
92
+ }
93
+
94
+ @media (hover: hover) {
95
+ .closeBtn:hover {
96
+ color: var(--sv-color-text-primary);
97
+ background: var(--sv-color-surface-sunken);
98
+ }
99
+ }
100
+
101
+ /* ── List ───────────────────────────────────────────────────────────────── */
102
+
103
+ .list {
104
+ list-style: none;
105
+ margin: 0;
106
+ padding: 0;
107
+ max-height: 420px;
108
+ overflow-y: auto;
109
+ }
110
+
111
+ /* ── Empty state ────────────────────────────────────────────────────────── */
112
+
113
+ .empty {
114
+ display: flex;
115
+ flex-direction: column;
116
+ align-items: center;
117
+ gap: var(--sv-space-3);
118
+ padding: var(--sv-space-10) var(--sv-space-4);
119
+ }
120
+
121
+ .emptyIcon {
122
+ display: flex;
123
+ align-items: center;
124
+ justify-content: center;
125
+ width: 44px;
126
+ height: 44px;
127
+ border-radius: var(--sv-radius-full);
128
+ background: var(--sv-color-surface-sunken);
129
+ color: var(--sv-color-text-muted);
130
+ }
131
+
132
+ .emptyText {
133
+ font-size: var(--sv-font-size-sm);
134
+ color: var(--sv-color-text-muted);
135
+ }
136
+
137
+ /* ── Notification item ─────────────────────────────────────────────────── */
138
+
139
+ .item {
140
+ display: flex;
141
+ align-items: flex-start;
142
+ gap: var(--sv-space-3);
143
+ padding: var(--sv-space-3);
144
+ border-bottom: var(--sv-border-width-hairline) solid var(--sv-color-border);
145
+ }
146
+
147
+ .item:last-child {
148
+ border-bottom: none;
149
+ }
150
+
151
+ .categoryIcon {
152
+ display: flex;
153
+ align-items: center;
154
+ justify-content: center;
155
+ flex: none;
156
+ width: 32px;
157
+ height: 32px;
158
+ border-radius: var(--sv-radius-full);
159
+ margin-top: 1px;
160
+ background: var(--sv-color-surface-sunken);
161
+ color: var(--sv-color-text-muted);
162
+ }
163
+
164
+ .itemBody {
165
+ flex: 1 1 auto;
166
+ min-width: 0;
167
+ display: flex;
168
+ flex-direction: column;
169
+ gap: 2px;
170
+ }
171
+
172
+ .itemTitle {
173
+ display: block;
174
+ width: 100%;
175
+ border: none;
176
+ padding: 0;
177
+ background: none;
178
+ font: inherit;
179
+ font-size: var(--sv-font-size-sm);
180
+ font-weight: var(--sv-font-weight-semibold);
181
+ color: var(--sv-color-text-primary);
182
+ text-decoration: none;
183
+ text-align: left;
184
+ line-height: 1.4;
185
+ cursor: pointer;
186
+ }
187
+
188
+ @media (hover: hover) {
189
+ a.itemTitle:hover,
190
+ button.itemTitle:hover {
191
+ text-decoration: underline;
192
+ }
193
+ }
194
+
195
+ .itemRead .itemTitle {
196
+ color: var(--sv-color-text-subtle);
197
+ cursor: default;
198
+ }
199
+
200
+ .itemTime {
201
+ font-size: var(--sv-font-size-caption);
202
+ color: var(--sv-color-text-muted);
203
+ }
204
+
205
+ .itemEnd {
206
+ display: flex;
207
+ align-items: center;
208
+ gap: var(--sv-space-2);
209
+ flex: none;
210
+ padding-top: 2px;
211
+ }
212
+
213
+ .unreadDot {
214
+ display: block;
215
+ width: 7px;
216
+ height: 7px;
217
+ border-radius: var(--sv-radius-full);
218
+ background: var(--sv-color-accent);
219
+ flex: none;
220
+ }
221
+
222
+ .dismissBtn {
223
+ display: flex;
224
+ align-items: center;
225
+ justify-content: center;
226
+ width: 20px;
227
+ height: 20px;
228
+ padding: 0;
229
+ border: none;
230
+ border-radius: var(--sv-radius-sm);
231
+ background: none;
232
+ color: var(--sv-color-text-muted);
233
+ cursor: pointer;
234
+ }
235
+
236
+ @media (hover: hover) {
237
+ .dismissBtn:hover {
238
+ color: var(--sv-color-text-primary);
239
+ background: var(--sv-color-surface-sunken);
240
+ }
241
+ }
242
+
243
+ .viewAll {
244
+ display: block;
245
+ text-align: center;
246
+ padding: var(--sv-space-2) var(--sv-space-3);
247
+ border-top: var(--sv-border-width-hairline) solid var(--sv-color-border);
248
+ font-size: var(--sv-font-size-caption);
249
+ color: var(--sv-color-text-muted);
250
+ text-decoration: none;
251
+ }
252
+
253
+ @media (hover: hover) {
254
+ .viewAll:hover {
255
+ color: var(--sv-color-text-primary);
256
+ background: var(--sv-color-surface-sunken);
257
+ }
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
+ }
@@ -6,7 +6,7 @@
6
6
  .header {
7
7
  flex-shrink: 0;
8
8
  background: var(--sv-color-surface);
9
- border-bottom: 1px solid var(--sv-color-border);
9
+ border-bottom: var(--sv-border-width-hairline) solid var(--sv-color-border);
10
10
  }
11
11
 
12
12
  .row {
@@ -1,8 +1,20 @@
1
1
  .container {
2
2
  width: 100%;
3
3
  margin-inline: auto;
4
+ /* Declared explicitly rather than inherited from a host reset: `maxWidth`
5
+ and `padding` land on this same element, so whether the max-width bound
6
+ includes the padding must not depend on whether the consuming app ships
7
+ a global `box-sizing` reset. @sovereignfs/ui is usable standalone
8
+ (task 9.17), where no such reset is guaranteed. Same reason Input,
9
+ Select, Combobox, DatePicker, and FileDropzone each set it locally. */
10
+ box-sizing: border-box;
4
11
  }
5
12
 
13
+ /* ── Max width ──────────────────────────────────────────────────────────── */
14
+
15
+ /* Outer bound, padding included (see box-sizing above): `md` + `padding="md"`
16
+ yields a 960px box with 896px of content, not 1024px. */
17
+
6
18
  .sm {
7
19
  max-width: 640px;
8
20
  }
@@ -18,3 +30,53 @@
18
30
  .full {
19
31
  max-width: none;
20
32
  }
33
+
34
+ /* ── Padding ────────────────────────────────────────────────────────────── */
35
+
36
+ /* The page gutter, owned by the plugin rather than the runtime shell
37
+ (task 9.25). `md` reproduces the exact values the shell used to apply
38
+ (--sv-space-8 desktop / --sv-space-4 mobile), so a bare <PageContainer>
39
+ renders identically to a pre-9.25 plugin that relied on the shell.
40
+
41
+ A fixed four-step scale, deliberately: the review behind task 9.18 found
42
+ four different ad-hoc padding combinations across plugins, and a free-form
43
+ value would relocate that inconsistency from CSS modules into JSX.
44
+
45
+ --sv-page-gutter is the stand-down hook for an ancestor that *already*
46
+ supplies the gutter: Dialog sets it to 0 on its content region, so an
47
+ overlay plugin whose page is one tree rendered into two hosts — the
48
+ Dialog on soft navigation, the runtime shell on a hard load — is padded
49
+ exactly once in both, with no prop threading and no knowledge of which
50
+ host it is in. Setting it to anything other than 0 defeats the fixed
51
+ scale above and is not a supported use. */
52
+
53
+ .padNone {
54
+ padding: 0;
55
+ }
56
+
57
+ .padSm {
58
+ padding: var(--sv-page-gutter, var(--sv-space-4));
59
+ }
60
+
61
+ .padMd {
62
+ padding: var(--sv-page-gutter, var(--sv-space-8));
63
+ }
64
+
65
+ .padLg {
66
+ padding: var(--sv-page-gutter, var(--sv-space-12));
67
+ }
68
+
69
+ /* Matches the breakpoint Dialog, MobileHeader, and MobileFooter already use. */
70
+ @media (max-width: 768px) {
71
+ .padSm {
72
+ padding: var(--sv-page-gutter, var(--sv-space-3));
73
+ }
74
+
75
+ .padMd {
76
+ padding: var(--sv-page-gutter, var(--sv-space-4));
77
+ }
78
+
79
+ .padLg {
80
+ padding: var(--sv-page-gutter, var(--sv-space-6));
81
+ }
82
+ }
@@ -13,6 +13,17 @@
13
13
  min-width: 0;
14
14
  }
15
15
 
16
+ /* Wraps the optional icon + `.title` so the icon sizes/aligns itself
17
+ without touching `.title`'s own rules — every existing icon-less usage
18
+ renders identically, since a single flex child behaves the same as a
19
+ non-flex one. */
20
+ .titleRow {
21
+ display: flex;
22
+ align-items: center;
23
+ gap: var(--sv-space-2);
24
+ color: var(--sv-color-text-primary);
25
+ }
26
+
16
27
  .title {
17
28
  margin: 0;
18
29
  font-size: var(--sv-font-size-2xl);
@@ -30,3 +41,46 @@
30
41
  .action {
31
42
  flex-shrink: 0;
32
43
  }
44
+
45
+ /* ── Mobile ─────────────────────────────────────────────────────────────── */
46
+ /* A compact single row — back (optional) + title + action (optional) —
47
+ generalized from Kanban's own hand-rolled MobileBoardHeader. Deliberately
48
+ no description handling and no border; stays consistent with .header's
49
+ own minimal, borderless treatment, just tighter. */
50
+
51
+ .mobileHeader {
52
+ display: flex;
53
+ align-items: center;
54
+ gap: var(--sv-space-2);
55
+ margin-bottom: var(--sv-space-3);
56
+ }
57
+
58
+ .mobileBack {
59
+ flex-shrink: 0;
60
+ }
61
+
62
+ .mobileTitleIcon {
63
+ flex-shrink: 0;
64
+ color: var(--sv-color-text-primary);
65
+ }
66
+
67
+ .mobileTitle {
68
+ flex: 1;
69
+ min-width: 0;
70
+ margin: 0;
71
+ overflow: hidden;
72
+ text-overflow: ellipsis;
73
+ white-space: nowrap;
74
+ font-size: var(--sv-font-size-md);
75
+ font-weight: var(--sv-font-weight-semibold);
76
+ color: var(--sv-color-text-primary);
77
+ line-height: 1.2;
78
+ }
79
+
80
+ .mobileAction {
81
+ flex-shrink: 0;
82
+ }
83
+
84
+ .mobileMenu {
85
+ flex-shrink: 0;
86
+ }
@@ -0,0 +1,51 @@
1
+ .root {
2
+ display: flex;
3
+ flex-direction: column;
4
+ min-width: 100%;
5
+ min-height: 100%;
6
+ }
7
+
8
+ .header {
9
+ flex-shrink: 0;
10
+ }
11
+
12
+ .content {
13
+ flex: 1;
14
+ }
15
+
16
+ /* ── Padding ────────────────────────────────────────────────────────────── */
17
+ /* Same four-step scale and --sv-page-gutter stand-down hook as
18
+ PageContainer (see that component's own CSS comment for the full
19
+ rationale) — kept identical so this can absorb PageContainer's role
20
+ later without a behavior change for existing consumers. */
21
+
22
+ .padNone {
23
+ padding: 0;
24
+ }
25
+
26
+ .padSm {
27
+ padding: var(--sv-page-gutter, var(--sv-space-4));
28
+ }
29
+
30
+ .padMd {
31
+ padding: var(--sv-page-gutter, var(--sv-space-8));
32
+ }
33
+
34
+ .padLg {
35
+ padding: var(--sv-page-gutter, var(--sv-space-12));
36
+ }
37
+
38
+ /* Matches the breakpoint Dialog, MobileHeader, and MobileFooter already use. */
39
+ @media (max-width: 768px) {
40
+ .padSm {
41
+ padding: var(--sv-page-gutter, var(--sv-space-3));
42
+ }
43
+
44
+ .padMd {
45
+ padding: var(--sv-page-gutter, var(--sv-space-4));
46
+ }
47
+
48
+ .padLg {
49
+ padding: var(--sv-page-gutter, var(--sv-space-6));
50
+ }
51
+ }
@@ -8,7 +8,7 @@
8
8
  top: calc(100% + var(--sv-space-2));
9
9
  z-index: 60;
10
10
  background: var(--sv-color-surface);
11
- border: 1px solid var(--sv-color-border);
11
+ border: var(--sv-border-width-hairline) solid var(--sv-color-border);
12
12
  border-radius: var(--sv-radius-2xl);
13
13
  box-shadow: var(--sv-shadow-popover);
14
14
  /* auto, not hidden: Popover.tsx applies an inline max-height only when the
@@ -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
+ }
@@ -3,7 +3,7 @@
3
3
  align-items: center;
4
4
  gap: var(--sv-space-1);
5
5
  padding: var(--sv-space-1);
6
- border: 1px solid var(--sv-color-border-strong);
6
+ border: var(--sv-border-width-hairline) solid var(--sv-color-border-strong);
7
7
  border-radius: var(--sv-radius-full);
8
8
  background: var(--sv-color-surface-sunken);
9
9
  }
@@ -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
+ }
@@ -4,7 +4,7 @@
4
4
  width: 100%;
5
5
  height: 100%;
6
6
  min-height: 320px;
7
- border: 1px solid var(--sv-color-border);
7
+ border: var(--sv-border-width-hairline) solid var(--sv-color-border);
8
8
  border-radius: var(--sv-radius-lg);
9
9
  overflow: hidden;
10
10
  background: var(--sv-color-surface);
@@ -27,7 +27,7 @@
27
27
  width: 12px;
28
28
  padding: 0;
29
29
  border: 0;
30
- border-inline: 1px solid var(--sv-color-border);
30
+ border-inline: var(--sv-border-width-hairline) solid var(--sv-color-border);
31
31
  cursor: col-resize;
32
32
  background: var(--sv-color-surface-sunken);
33
33
  }
@@ -36,7 +36,7 @@
36
36
  width: 100%;
37
37
  height: 12px;
38
38
  border-inline: 0;
39
- border-block: 1px solid var(--sv-color-border);
39
+ border-block: var(--sv-border-width-hairline) solid var(--sv-color-border);
40
40
  cursor: row-resize;
41
41
  }
42
42
 
@@ -0,0 +1,12 @@
1
+ /* A definite height, not min-height: ThreeColumnLayout/HeaderFooterLayout's
2
+ own .shell use height: 100% internally (fixed box, independently-
3
+ scrolling children via overflow-y: auto) — a percentage height only
4
+ resolves against an ancestor with a definite (not min-constrained)
5
+ height, so min-height here would leave their .shell unable to resolve
6
+ and collapse to content size. This doesn't clip taller content on its
7
+ own — nothing here sets overflow: hidden, so content taller than the
8
+ box simply overflows past it rather than being cut off. */
9
+ .root {
10
+ width: 100%;
11
+ height: 100%;
12
+ }
@@ -2,7 +2,7 @@
2
2
  display: inline-flex;
3
3
  background: var(--sv-color-surface-sunken);
4
4
  border-radius: var(--sv-radius-full);
5
- border: 1px solid var(--sv-color-border);
5
+ border: var(--sv-border-width-hairline) solid var(--sv-color-border);
6
6
  padding: 2px;
7
7
  gap: 2px;
8
8
  }
@@ -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
+ }
@@ -18,7 +18,7 @@
18
18
  line-height: 1.5;
19
19
  color: var(--sv-color-text-primary);
20
20
  background-color: var(--sv-color-surface);
21
- border: 1px solid var(--sv-color-border-strong);
21
+ border: var(--sv-border-width-hairline) solid var(--sv-color-border-strong);
22
22
  border-radius: var(--sv-radius-md);
23
23
  cursor: pointer;
24
24
  /* Remove native OS chevron */
@@ -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
+ }
@@ -1,6 +1,9 @@
1
1
  /* Sheet — fills the same rect as a plugin's content area (between the shell's
2
2
  * sticky header and footer nav — see --sv-shell-header-height /
3
- * --sv-shell-footer-height, set by the shell), sliding in from an edge
3
+ * --sv-shell-footer-height, set by the platform shell or, for a plugin that
4
+ * self-renders MobileHeader/MobileFooter instead (shellConfig.mobileHeader/
5
+ * mobileFooter: false), by that component itself — see
6
+ * usePublishShellChromeHeight), sliding in from an edge
4
7
  * instead of Dialog's centered box or Drawer's partial-height sheet-over-
5
8
  * scrim. z-index matches Dialog/Drawer's scrim so it layers consistently
6
9
  * with any other overlay. No scrim of its own — see the component doc
@@ -51,5 +54,20 @@
51
54
  .content {
52
55
  flex: 1 1 auto;
53
56
  overflow-y: auto;
54
- 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;
55
73
  }
@@ -5,7 +5,7 @@
5
5
  minmax(0, calc(100% - var(--split-pane-primary-size, 50%)));
6
6
  width: 100%;
7
7
  min-height: 320px;
8
- border: 1px solid var(--sv-color-border);
8
+ border: var(--sv-border-width-hairline) solid var(--sv-color-border);
9
9
  border-radius: var(--sv-radius-lg);
10
10
  overflow: hidden;
11
11
  background: var(--sv-color-surface);
@@ -25,7 +25,7 @@
25
25
  }
26
26
 
27
27
  .pane + .pane {
28
- border-left: 1px solid var(--sv-color-border);
28
+ border-left: var(--sv-border-width-hairline) solid var(--sv-color-border);
29
29
  }
30
30
 
31
31
  .handle {
@@ -34,7 +34,7 @@
34
34
  min-width: 12px;
35
35
  padding: 0;
36
36
  border: 0;
37
- border-inline: 1px solid var(--sv-color-border);
37
+ border-inline: var(--sv-border-width-hairline) solid var(--sv-color-border);
38
38
  cursor: col-resize;
39
39
  background: var(--sv-color-surface-sunken);
40
40
  }
@@ -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;
@@ -79,7 +79,7 @@
79
79
  }
80
80
 
81
81
  .pane + .pane {
82
- border-top: 1px solid var(--sv-color-border);
82
+ border-top: var(--sv-border-width-hairline) solid var(--sv-color-border);
83
83
  border-left: 0;
84
84
  }
85
85
  }
@@ -5,7 +5,7 @@
5
5
  min-height: 24px;
6
6
  gap: var(--sv-space-1);
7
7
  padding: 2px var(--sv-space-2);
8
- border: 1px solid var(--sv-color-border);
8
+ border: var(--sv-border-width-hairline) solid var(--sv-color-border);
9
9
  border-radius: var(--sv-radius-full);
10
10
  font-family: var(--sv-font-family);
11
11
  font-size: var(--sv-font-size-xs);