@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
@@ -3,15 +3,17 @@
3
3
  align-items: center;
4
4
  gap: var(--sv-space-2);
5
5
  padding: var(--sv-space-2);
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-md);
8
8
  background: var(--sv-color-surface);
9
9
  color: var(--sv-color-text-primary);
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
+ }
@@ -12,7 +12,7 @@
12
12
  line-height: 1.5;
13
13
  color: var(--sv-color-text-primary);
14
14
  background-color: var(--sv-color-surface);
15
- border: 1px solid var(--sv-color-border-strong);
15
+ border: var(--sv-border-width-hairline) solid var(--sv-color-border-strong);
16
16
  border-radius: var(--sv-radius-md);
17
17
  transition:
18
18
  border-color 0.15s ease,
@@ -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
+ }
@@ -4,7 +4,7 @@
4
4
  justify-content: center;
5
5
  min-width: 1.5em;
6
6
  padding: var(--sv-space-1) var(--sv-space-2);
7
- border: 1px solid var(--sv-color-border-strong);
7
+ border: var(--sv-border-width-hairline) solid var(--sv-color-border-strong);
8
8
  border-radius: var(--sv-radius-sm);
9
9
  background: var(--sv-color-surface-sunken);
10
10
  color: var(--sv-color-text-primary);
@@ -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
+ }
@@ -47,3 +47,32 @@
47
47
  padding: 0.1em 0.35em;
48
48
  border-radius: var(--sv-radius-sm);
49
49
  }
50
+
51
+ /*
52
+ * Long lines scroll inside the block rather than widening the page — a code
53
+ * sample is the most likely thing in this component to overflow its
54
+ * container, and the surrounding prose should not reflow because of it.
55
+ */
56
+ .codeBlock {
57
+ margin: 0;
58
+ padding: var(--sv-space-4);
59
+ background: var(--sv-color-surface-sunken);
60
+ border-radius: var(--sv-radius-md);
61
+ overflow-x: auto;
62
+ }
63
+
64
+ /* The block already carries the panel background and padding; the inline
65
+ `code` chrome would otherwise double up inside it. */
66
+ .codeBlock code {
67
+ background: none;
68
+ padding: 0;
69
+ border-radius: 0;
70
+ font-size: var(--sv-font-size-sm);
71
+ line-height: 1.6;
72
+ white-space: pre;
73
+ }
74
+
75
+ .root a:focus-visible {
76
+ outline: 2px solid var(--sv-color-focus-ring);
77
+ outline-offset: 2px;
78
+ }
@@ -33,6 +33,7 @@
33
33
  font: inherit;
34
34
  font-size: var(--sv-font-size-sm);
35
35
  text-align: left;
36
+ text-decoration: none;
36
37
  cursor: pointer;
37
38
  }
38
39
 
@@ -32,7 +32,7 @@
32
32
 
33
33
  .assistant .bubble {
34
34
  background: var(--sv-color-surface-raised);
35
- border: 1px solid var(--sv-color-border);
35
+ border: var(--sv-border-width-hairline) solid var(--sv-color-border);
36
36
  color: var(--sv-color-text-primary);
37
37
  border-bottom-left-radius: var(--sv-radius-sm);
38
38
  }
@@ -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);
@@ -25,13 +25,24 @@
25
25
  border-radius: var(--sv-radius-full);
26
26
  }
27
27
 
28
+ /* Bottom-anchors a conversation that doesn't fill the container: this
29
+ leading item claims all leftover main-axis space, pushing the real
30
+ messages down to the bottom edge. Once messages overflow, it has no
31
+ free space left to grow into and collapses to 0 — normal top-to-bottom
32
+ scrolling is unaffected either way, since `justify-content` never
33
+ changes from its default `flex-start`. */
34
+ .spacer {
35
+ flex: 1 0 0%;
36
+ min-height: 0;
37
+ }
38
+
28
39
  .jumpButton {
29
40
  position: absolute;
30
41
  bottom: var(--sv-space-3);
31
42
  left: 50%;
32
43
  transform: translateX(-50%);
33
44
  padding: var(--sv-space-1) var(--sv-space-3);
34
- border: 1px solid var(--sv-color-border);
45
+ border: var(--sv-border-width-hairline) solid var(--sv-color-border);
35
46
  border-radius: var(--sv-radius-full);
36
47
  background: var(--sv-color-surface-raised);
37
48
  box-shadow: var(--sv-shadow-popover);
@@ -1,22 +1,21 @@
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 {
9
7
  list-style: none;
10
8
  margin: 0;
11
- /* Drawer's own grab handle already reserves a 44px touch target above this
12
- — no extra top padding needed beyond a touch of breathing room. Bottom
13
- gets noticeably more: with no header row to separate the grid from the
14
- handle, a tight top/bottom balance read as top-heavy (grid crowding the
15
- handle isn't the issue; the *last* row crowding the panel's bottom
16
- edge/safe-area is). Drawer's own panel already adds
17
- env(safe-area-inset-bottom) below everything, so this is on top of that,
18
- not instead of it. */
19
- padding: var(--sv-space-1) var(--sv-space-4) var(--sv-space-10);
9
+ /* Matches the reference `.drawerGrid`'s own padding exactly — its
10
+ surrounding `Drawer` also has no header row (no `title` passed either),
11
+ so "no header row" can't actually explain padding this component used
12
+ to carry well past the reference's own (`--sv-space-1`/`--sv-space-10`
13
+ vs the reference's `--sv-space-2`/`--sv-space-6`) — found live, this
14
+ component's grid visibly read as more tightly hugging the handle and
15
+ noticeably more padded at the bottom than the reference's side by side.
16
+ Drawer's own panel already adds env(safe-area-inset-bottom) below
17
+ everything, so this is on top of that, not instead of it. */
18
+ padding: var(--sv-space-2) var(--sv-space-4) var(--sv-space-6);
20
19
  display: grid;
21
20
  grid-template-columns: repeat(3, 1fr);
22
21
  row-gap: var(--sv-space-5);
@@ -79,3 +78,9 @@
79
78
  word-break: break-word;
80
79
  max-width: 80px;
81
80
  }
81
+
82
+ @media (prefers-reduced-motion: reduce) {
83
+ .gridIcon {
84
+ transition: none;
85
+ }
86
+ }
@@ -12,7 +12,7 @@
12
12
  padding: 0 var(--sv-space-4);
13
13
  padding-bottom: max(var(--sv-space-2), env(safe-area-inset-bottom));
14
14
  background-color: var(--sv-color-surface);
15
- border-top: 1px solid var(--sv-color-border);
15
+ border-top: var(--sv-border-width-hairline) solid var(--sv-color-border);
16
16
  position: relative;
17
17
  z-index: 101;
18
18
  }
@@ -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
+ }
@@ -16,10 +16,23 @@
16
16
  padding-right: max(var(--sv-space-4), env(safe-area-inset-right));
17
17
  padding-left: max(var(--sv-space-4), env(safe-area-inset-left));
18
18
  background-color: var(--sv-color-surface);
19
- border-bottom: 1px solid var(--sv-color-border);
19
+ border-bottom: var(--sv-border-width-hairline) solid var(--sv-color-border);
20
20
  position: sticky;
21
21
  top: 0;
22
22
  z-index: 101;
23
+ /* WebKit momentum-scroll re-tiling quirk: a position: sticky element with
24
+ no compositing layer of its own can go stale/blank for a stretch of
25
+ frames during a fast scroll on iOS Safari instead of repainting at its
26
+ stuck position — only reachable when a consumer mounts this component
27
+ inside its own scrolling container (the platform shell's own mobile
28
+ header sits in a separate, non-scrolling grid row, so this is a no-op
29
+ there; a plugin self-rendering this via shellConfig.mobileHeader: false
30
+ inside a scrollable page is exactly the case this protects). Found and
31
+ fixed across three sticky elements in sovereign-tasks before being
32
+ applied here proactively — see docs/architecture-rules.md.
33
+ translateZ(0) promotes it to its own layer, rasterized independently of
34
+ the scroller's tile grid. */
35
+ transform: translateZ(0);
23
36
  }
24
37
 
25
38
  .brandGroup {
@@ -0,0 +1,139 @@
1
+ .nav {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--sv-space-5);
5
+ width: 100%;
6
+ }
7
+
8
+ .group {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 2px;
12
+ }
13
+
14
+ .groupLabel {
15
+ padding: 0 var(--sv-space-3);
16
+ margin-bottom: var(--sv-space-1);
17
+ font-size: var(--sv-font-size-xs);
18
+ font-weight: var(--sv-font-weight-semibold);
19
+ letter-spacing: 0.04em;
20
+ text-transform: uppercase;
21
+ color: var(--sv-color-text-muted);
22
+ }
23
+
24
+ .row {
25
+ display: flex;
26
+ align-items: center;
27
+ gap: var(--sv-space-3);
28
+ min-height: var(--sv-touch-target-min);
29
+ padding: var(--sv-space-2) var(--sv-space-3);
30
+ border-radius: var(--sv-radius-md);
31
+ color: var(--sv-color-text-muted);
32
+ text-decoration: none;
33
+ font-size: var(--sv-font-size-sm);
34
+ font-weight: var(--sv-font-weight-medium);
35
+ }
36
+
37
+ .icon {
38
+ flex-shrink: 0;
39
+ }
40
+
41
+ .label {
42
+ flex: 1;
43
+ min-width: 0;
44
+ overflow: hidden;
45
+ text-overflow: ellipsis;
46
+ white-space: nowrap;
47
+ }
48
+
49
+ .badge {
50
+ flex-shrink: 0;
51
+ color: var(--sv-color-text-muted);
52
+ font-size: var(--sv-font-size-xs);
53
+ }
54
+
55
+ .chevron {
56
+ flex-shrink: 0;
57
+ color: var(--sv-color-text-muted);
58
+ }
59
+
60
+ /* ── static (desktop sidebar) ─────────────────────────────────────────── */
61
+
62
+ .static .row {
63
+ transition:
64
+ background-color 0.1s ease,
65
+ color 0.1s ease;
66
+ }
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. */
71
+ @media (hover: hover) {
72
+ .static .row:hover {
73
+ background-color: color-mix(in srgb, var(--sv-color-accent) 6%, transparent);
74
+ color: var(--sv-color-text-primary);
75
+ }
76
+ }
77
+
78
+ .static .row:focus-visible {
79
+ outline: 2px solid var(--sv-color-focus-ring);
80
+ outline-offset: -2px;
81
+ }
82
+
83
+ .static .rowActive {
84
+ background-color: var(--sv-color-accent-subtle);
85
+ color: var(--sv-color-text-primary);
86
+ font-weight: var(--sv-font-weight-semibold);
87
+ }
88
+
89
+ .static .rowActive .icon {
90
+ color: var(--sv-color-text-primary);
91
+ }
92
+
93
+ /* Only meaningful combined with .static — see NavListProps.density's own
94
+ doc comment for why .drilldown rows never shrink. */
95
+ .compact.static .row {
96
+ min-height: 0;
97
+ padding: var(--sv-space-2) var(--sv-space-3);
98
+ }
99
+
100
+ /* ── drilldown (mobile index) — grouped card, native-Settings-app rows ──── */
101
+
102
+ .drilldown .group {
103
+ gap: 0;
104
+ border: 1px solid var(--sv-color-border);
105
+ border-radius: var(--sv-radius-lg);
106
+ overflow: hidden;
107
+ background-color: var(--sv-color-surface-raised);
108
+ }
109
+
110
+ .drilldown .row {
111
+ border-radius: 0;
112
+ padding: var(--sv-space-3) var(--sv-space-4);
113
+ color: var(--sv-color-text-primary);
114
+ }
115
+
116
+ .drilldown .row:not(:last-child) {
117
+ border-bottom: var(--sv-border-width-hairline) solid var(--sv-color-border);
118
+ }
119
+
120
+ @media (hover: hover) {
121
+ .drilldown .row:hover {
122
+ background-color: var(--sv-color-surface-sunken);
123
+ }
124
+ }
125
+
126
+ .drilldown .row:focus-visible {
127
+ outline: 2px solid var(--sv-color-focus-ring);
128
+ outline-offset: -2px;
129
+ }
130
+
131
+ .drilldown .icon {
132
+ color: var(--sv-color-text-muted);
133
+ }
134
+
135
+ @media (prefers-reduced-motion: reduce) {
136
+ .static .row {
137
+ transition: none;
138
+ }
139
+ }
@@ -2,7 +2,7 @@
2
2
  display: flex;
3
3
  flex-wrap: wrap;
4
4
  gap: 0;
5
- border-bottom: 1px solid var(--sv-color-border);
5
+ border-bottom: var(--sv-border-width-hairline) solid var(--sv-color-border);
6
6
  }
7
7
 
8
8
  .link {
@@ -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
+ }