@sovereignfs/ui 0.83.1 → 0.89.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) hide show
  1. package/LICENSE +373 -661
  2. package/NOTICE +8 -0
  3. package/README.md +4 -6
  4. package/dist/AppsLauncher.module.css +6 -0
  5. package/dist/Button.module.css +5 -0
  6. package/dist/Card.module.css +6 -0
  7. package/dist/CardTile.module.css +6 -0
  8. package/dist/CheckableListRow.module.css +8 -0
  9. package/dist/Checkbox.module.css +8 -0
  10. package/dist/CodeTextarea.module.css +6 -0
  11. package/dist/ColorPicker.module.css +6 -0
  12. package/dist/Combobox.module.css +6 -0
  13. package/dist/Command.module.css +6 -0
  14. package/dist/ConfirmDialog.module.css +6 -0
  15. package/dist/DatePicker.module.css +6 -0
  16. package/dist/Dialog.module.css +1 -1
  17. package/dist/DragHandleRow.module.css +6 -0
  18. package/dist/FileDropzone.module.css +25 -1
  19. package/dist/Header.module.css +6 -0
  20. package/dist/IconPicker.module.css +14 -4
  21. package/dist/Input.module.css +6 -0
  22. package/dist/LegalLinks.module.css +9 -2
  23. package/dist/Markdown.module.css +5 -0
  24. package/dist/Message.module.css +9 -0
  25. package/dist/MobileAppsDrawer.module.css +9 -5
  26. package/dist/MobileFooter.module.css +6 -0
  27. package/dist/NavList.module.css +11 -2
  28. package/dist/NavTabs.module.css +7 -1
  29. package/dist/NotificationsPanel.module.css +10 -0
  30. package/dist/QrCode.module.css +17 -0
  31. package/dist/QuantityStepper.module.css +4 -2
  32. package/dist/RadioGroup.module.css +6 -0
  33. package/dist/SegmentedControl.module.css +6 -0
  34. package/dist/Select.module.css +6 -0
  35. package/dist/Sheet.module.css +16 -1
  36. package/dist/SplitPane.module.css +1 -1
  37. package/dist/StepStrip.module.css +5 -3
  38. package/dist/SuggestionInput.module.css +12 -1
  39. package/dist/SwipableMobileCarouselDots.module.css +6 -0
  40. package/dist/SystemBanner.module.css +6 -0
  41. package/dist/Tabs.module.css +6 -0
  42. package/dist/TagInput.module.css +6 -0
  43. package/dist/Textarea.module.css +6 -0
  44. package/dist/Toast.module.css +5 -0
  45. package/dist/Toggle.module.css +7 -0
  46. package/dist/Tooltip.module.css +6 -0
  47. package/dist/UserMenu.module.css +5 -0
  48. package/dist/fonts/OFL.txt +93 -0
  49. package/dist/fonts/hanken-grotesk-cyrillic-ext-wght-normal.woff2 +0 -0
  50. package/dist/fonts/hanken-grotesk-latin-ext-wght-normal.woff2 +0 -0
  51. package/dist/fonts/hanken-grotesk-latin-wght-normal.woff2 +0 -0
  52. package/dist/fonts/hanken-grotesk-vietnamese-wght-normal.woff2 +0 -0
  53. package/dist/index.d.ts +121 -43
  54. package/dist/index.js +1410 -1152
  55. package/dist/tokens/fonts.css +53 -0
  56. package/dist/tokens/primitives.css +12 -12
  57. package/dist/tokens.css +2 -1
  58. package/package.json +24 -13
  59. package/src/__tests__/motion.test.tsx +0 -105
  60. package/src/__tests__/package-json.test.ts +0 -8
  61. package/src/components/Accordion/Accordion.module.css +0 -3
  62. package/src/components/Accordion/Accordion.stories.tsx +0 -110
  63. package/src/components/Accordion/Accordion.tsx +0 -53
  64. package/src/components/Accordion/__tests__/Accordion.test.tsx +0 -61
  65. package/src/components/Alert/Alert.module.css +0 -62
  66. package/src/components/Alert/Alert.stories.tsx +0 -96
  67. package/src/components/Alert/Alert.tsx +0 -58
  68. package/src/components/Alert/__tests__/Alert.test.tsx +0 -75
  69. package/src/components/AppsLauncher/AppsLauncher.module.css +0 -96
  70. package/src/components/AppsLauncher/AppsLauncher.stories.tsx +0 -58
  71. package/src/components/AppsLauncher/AppsLauncher.tsx +0 -117
  72. package/src/components/AppsLauncher/__tests__/AppsLauncher.test.tsx +0 -52
  73. package/src/components/AspectRatio/AspectRatio.module.css +0 -15
  74. package/src/components/AspectRatio/AspectRatio.stories.tsx +0 -78
  75. package/src/components/AspectRatio/AspectRatio.tsx +0 -21
  76. package/src/components/AspectRatio/__tests__/AspectRatio.test.tsx +0 -27
  77. package/src/components/Avatar/Avatar.module.css +0 -38
  78. package/src/components/Avatar/Avatar.tsx +0 -42
  79. package/src/components/Badge/Badge.module.css +0 -177
  80. package/src/components/Badge/Badge.stories.tsx +0 -238
  81. package/src/components/Badge/Badge.tsx +0 -84
  82. package/src/components/Badge/__tests__/Badge.test.tsx +0 -90
  83. package/src/components/BalanceChip/BalanceChip.module.css +0 -32
  84. package/src/components/BalanceChip/BalanceChip.stories.tsx +0 -45
  85. package/src/components/BalanceChip/BalanceChip.tsx +0 -33
  86. package/src/components/Breadcrumb/Breadcrumb.module.css +0 -49
  87. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +0 -47
  88. package/src/components/Breadcrumb/Breadcrumb.tsx +0 -57
  89. package/src/components/Breadcrumb/__tests__/Breadcrumb.test.tsx +0 -52
  90. package/src/components/Button/Button.module.css +0 -169
  91. package/src/components/Button/Button.stories.tsx +0 -83
  92. package/src/components/Button/Button.tsx +0 -52
  93. package/src/components/Button/__tests__/Button.test.tsx +0 -66
  94. package/src/components/ButtonGroup/ButtonGroup.module.css +0 -29
  95. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -57
  96. package/src/components/ButtonGroup/ButtonGroup.tsx +0 -27
  97. package/src/components/ButtonGroup/__tests__/ButtonGroup.test.tsx +0 -29
  98. package/src/components/Calendar/Calendar.module.css +0 -126
  99. package/src/components/Calendar/Calendar.tsx +0 -213
  100. package/src/components/Calendar/__tests__/Calendar.test.tsx +0 -98
  101. package/src/components/Calendar/dateUtils.ts +0 -97
  102. package/src/components/Card/Card.module.css +0 -42
  103. package/src/components/Card/Card.tsx +0 -34
  104. package/src/components/CardTile/CardTile.module.css +0 -181
  105. package/src/components/CardTile/CardTile.stories.tsx +0 -86
  106. package/src/components/CardTile/CardTile.tsx +0 -128
  107. package/src/components/CardTile/__tests__/CardTile.test.tsx +0 -56
  108. package/src/components/CheckableListRow/CheckableListRow.module.css +0 -95
  109. package/src/components/CheckableListRow/CheckableListRow.stories.tsx +0 -99
  110. package/src/components/CheckableListRow/CheckableListRow.tsx +0 -89
  111. package/src/components/Checkbox/Checkbox.module.css +0 -111
  112. package/src/components/Checkbox/Checkbox.tsx +0 -78
  113. package/src/components/CodeTextarea/CodeTextarea.module.css +0 -53
  114. package/src/components/CodeTextarea/CodeTextarea.stories.tsx +0 -77
  115. package/src/components/CodeTextarea/CodeTextarea.tsx +0 -36
  116. package/src/components/Collapsible/Collapsible.module.css +0 -70
  117. package/src/components/Collapsible/Collapsible.stories.tsx +0 -62
  118. package/src/components/Collapsible/Collapsible.tsx +0 -66
  119. package/src/components/Collapsible/__tests__/Collapsible.test.tsx +0 -71
  120. package/src/components/ColorPicker/ColorPicker.module.css +0 -132
  121. package/src/components/ColorPicker/ColorPicker.stories.tsx +0 -80
  122. package/src/components/ColorPicker/ColorPicker.tsx +0 -157
  123. package/src/components/ColorPicker/__tests__/ColorPicker.test.tsx +0 -117
  124. package/src/components/Combobox/Combobox.module.css +0 -122
  125. package/src/components/Combobox/Combobox.stories.tsx +0 -79
  126. package/src/components/Combobox/Combobox.tsx +0 -186
  127. package/src/components/Combobox/__tests__/Combobox.test.tsx +0 -158
  128. package/src/components/Command/Command.module.css +0 -80
  129. package/src/components/Command/Command.stories.tsx +0 -104
  130. package/src/components/Command/Command.tsx +0 -168
  131. package/src/components/Command/__tests__/Command.test.tsx +0 -162
  132. package/src/components/ConfirmDialog/ConfirmDialog.module.css +0 -113
  133. package/src/components/ConfirmDialog/ConfirmDialog.tsx +0 -150
  134. package/src/components/ConfirmDialog/__tests__/ConfirmDialog.test.tsx +0 -214
  135. package/src/components/ConsentPrompt/ConsentPrompt.module.css +0 -21
  136. package/src/components/ConsentPrompt/ConsentPrompt.stories.tsx +0 -31
  137. package/src/components/ConsentPrompt/ConsentPrompt.tsx +0 -66
  138. package/src/components/ContextMenu/ContextMenu.stories.tsx +0 -81
  139. package/src/components/ContextMenu/ContextMenu.tsx +0 -100
  140. package/src/components/ContextMenu/__tests__/ContextMenu.test.tsx +0 -87
  141. package/src/components/CurrencyInput/CurrencyInput.stories.tsx +0 -50
  142. package/src/components/CurrencyInput/CurrencyInput.tsx +0 -60
  143. package/src/components/DataTable/DataTable.module.css +0 -28
  144. package/src/components/DataTable/DataTable.stories.tsx +0 -74
  145. package/src/components/DataTable/DataTable.tsx +0 -154
  146. package/src/components/DataTable/__tests__/DataTable.test.tsx +0 -123
  147. package/src/components/DatePicker/DatePicker.module.css +0 -61
  148. package/src/components/DatePicker/DatePicker.tsx +0 -103
  149. package/src/components/DatePicker/__tests__/DatePicker.test.tsx +0 -89
  150. package/src/components/DeviceOnlyGate/DeviceOnlyGate.tsx +0 -58
  151. package/src/components/DeviceOnlyGate/__tests__/DeviceOnlyGate.test.tsx +0 -45
  152. package/src/components/DeviceStorageKeyGate/DeviceStorageKeyGate.tsx +0 -100
  153. package/src/components/DeviceStorageKeyGate/__tests__/DeviceStorageKeyGate.test.tsx +0 -119
  154. package/src/components/Dialog/Dialog.module.css +0 -335
  155. package/src/components/Dialog/Dialog.stories.tsx +0 -324
  156. package/src/components/Dialog/Dialog.tsx +0 -254
  157. package/src/components/Dialog/__tests__/Dialog.test.tsx +0 -318
  158. package/src/components/DragHandleRow/DragHandleRow.module.css +0 -57
  159. package/src/components/DragHandleRow/DragHandleRow.tsx +0 -42
  160. package/src/components/Drawer/Drawer.module.css +0 -121
  161. package/src/components/Drawer/Drawer.stories.tsx +0 -132
  162. package/src/components/Drawer/Drawer.tsx +0 -175
  163. package/src/components/Drawer/__tests__/Drawer.test.tsx +0 -226
  164. package/src/components/EmptyState/EmptyState.module.css +0 -27
  165. package/src/components/EmptyState/EmptyState.tsx +0 -27
  166. package/src/components/FileDropzone/FileDropzone.module.css +0 -63
  167. package/src/components/FileDropzone/FileDropzone.tsx +0 -109
  168. package/src/components/FileDropzone/__tests__/FileDropzone.test.tsx +0 -67
  169. package/src/components/FormField/FormField.module.css +0 -33
  170. package/src/components/FormField/FormField.tsx +0 -78
  171. package/src/components/FormField/__tests__/FormField.test.tsx +0 -83
  172. package/src/components/GripIcon/GripIcon.tsx +0 -27
  173. package/src/components/Header/Header.module.css +0 -62
  174. package/src/components/Header/Header.stories.tsx +0 -452
  175. package/src/components/Header/Header.tsx +0 -102
  176. package/src/components/Header/__tests__/Header.test.tsx +0 -104
  177. package/src/components/HeaderFooterLayout/HeaderFooterLayout.module.css +0 -21
  178. package/src/components/HeaderFooterLayout/HeaderFooterLayout.stories.tsx +0 -111
  179. package/src/components/HeaderFooterLayout/HeaderFooterLayout.tsx +0 -54
  180. package/src/components/HeaderFooterLayout/__tests__/HeaderFooterLayout.test.tsx +0 -58
  181. package/src/components/HoverCard/HoverCard.module.css +0 -3
  182. package/src/components/HoverCard/HoverCard.stories.tsx +0 -66
  183. package/src/components/HoverCard/HoverCard.tsx +0 -111
  184. package/src/components/HoverCard/__tests__/HoverCard.test.tsx +0 -99
  185. package/src/components/Icon/Icon.module.css +0 -27
  186. package/src/components/Icon/Icon.stories.tsx +0 -95
  187. package/src/components/Icon/Icon.tsx +0 -43
  188. package/src/components/Icon/__tests__/Icon.test.tsx +0 -40
  189. package/src/components/Icon/icons/activity.tsx +0 -20
  190. package/src/components/Icon/icons/alert-triangle.tsx +0 -22
  191. package/src/components/Icon/icons/apple.tsx +0 -21
  192. package/src/components/Icon/icons/arrow-left-right.tsx +0 -23
  193. package/src/components/Icon/icons/banana.tsx +0 -21
  194. package/src/components/Icon/icons/beef.tsx +0 -22
  195. package/src/components/Icon/icons/beer.tsx +0 -24
  196. package/src/components/Icon/icons/bell.tsx +0 -21
  197. package/src/components/Icon/icons/bold.tsx +0 -20
  198. package/src/components/Icon/icons/calendar.tsx +0 -23
  199. package/src/components/Icon/icons/candy.tsx +0 -24
  200. package/src/components/Icon/icons/carrot.tsx +0 -22
  201. package/src/components/Icon/icons/check.tsx +0 -20
  202. package/src/components/Icon/icons/chevron-down.tsx +0 -20
  203. package/src/components/Icon/icons/chevron-left.tsx +0 -20
  204. package/src/components/Icon/icons/chevron-right.tsx +0 -20
  205. package/src/components/Icon/icons/chevron-up.tsx +0 -20
  206. package/src/components/Icon/icons/circle-check.tsx +0 -21
  207. package/src/components/Icon/icons/circle-chevron-left.tsx +0 -21
  208. package/src/components/Icon/icons/circle-x.tsx +0 -22
  209. package/src/components/Icon/icons/code.tsx +0 -21
  210. package/src/components/Icon/icons/coffee.tsx +0 -23
  211. package/src/components/Icon/icons/cookie.tsx +0 -25
  212. package/src/components/Icon/icons/copy.tsx +0 -21
  213. package/src/components/Icon/icons/credit-card.tsx +0 -21
  214. package/src/components/Icon/icons/croissant.tsx +0 -24
  215. package/src/components/Icon/icons/cup-soda.tsx +0 -23
  216. package/src/components/Icon/icons/database.tsx +0 -22
  217. package/src/components/Icon/icons/download.tsx +0 -22
  218. package/src/components/Icon/icons/drumstick.tsx +0 -21
  219. package/src/components/Icon/icons/egg.tsx +0 -20
  220. package/src/components/Icon/icons/ellipsis-vertical.tsx +0 -22
  221. package/src/components/Icon/icons/external-link.tsx +0 -22
  222. package/src/components/Icon/icons/eye-off.tsx +0 -23
  223. package/src/components/Icon/icons/eye.tsx +0 -21
  224. package/src/components/Icon/icons/file-text.tsx +0 -24
  225. package/src/components/Icon/icons/file.tsx +0 -21
  226. package/src/components/Icon/icons/fish.tsx +0 -25
  227. package/src/components/Icon/icons/folder-closed.tsx +0 -21
  228. package/src/components/Icon/icons/folder-open.tsx +0 -20
  229. package/src/components/Icon/icons/folder.tsx +0 -20
  230. package/src/components/Icon/icons/folders.tsx +0 -21
  231. package/src/components/Icon/icons/grid-2x2.tsx +0 -22
  232. package/src/components/Icon/icons/hat-glasses.tsx +0 -24
  233. package/src/components/Icon/icons/history.tsx +0 -22
  234. package/src/components/Icon/icons/house.tsx +0 -21
  235. package/src/components/Icon/icons/inbox.tsx +0 -21
  236. package/src/components/Icon/icons/index.ts +0 -394
  237. package/src/components/Icon/icons/info.tsx +0 -22
  238. package/src/components/Icon/icons/italic.tsx +0 -22
  239. package/src/components/Icon/icons/layers.tsx +0 -22
  240. package/src/components/Icon/icons/layout-dashboard.tsx +0 -23
  241. package/src/components/Icon/icons/layout-grid.tsx +0 -23
  242. package/src/components/Icon/icons/link.tsx +0 -21
  243. package/src/components/Icon/icons/list-ordered.tsx +0 -25
  244. package/src/components/Icon/icons/list.tsx +0 -25
  245. package/src/components/Icon/icons/lock.tsx +0 -21
  246. package/src/components/Icon/icons/log-out.tsx +0 -22
  247. package/src/components/Icon/icons/luggage.tsx +0 -24
  248. package/src/components/Icon/icons/mail.tsx +0 -21
  249. package/src/components/Icon/icons/map-pin.tsx +0 -21
  250. package/src/components/Icon/icons/menu.tsx +0 -22
  251. package/src/components/Icon/icons/milk.tsx +0 -22
  252. package/src/components/Icon/icons/minus.tsx +0 -20
  253. package/src/components/Icon/icons/package.tsx +0 -23
  254. package/src/components/Icon/icons/paint-bucket.tsx +0 -23
  255. package/src/components/Icon/icons/panel-left.tsx +0 -21
  256. package/src/components/Icon/icons/pencil.tsx +0 -21
  257. package/src/components/Icon/icons/pin.tsx +0 -21
  258. package/src/components/Icon/icons/pizza.tsx +0 -24
  259. package/src/components/Icon/icons/plus.tsx +0 -21
  260. package/src/components/Icon/icons/rectangle-ellipsis.tsx +0 -23
  261. package/src/components/Icon/icons/refresh-cw.tsx +0 -23
  262. package/src/components/Icon/icons/rotate-ccw.tsx +0 -21
  263. package/src/components/Icon/icons/rotate-cw.tsx +0 -21
  264. package/src/components/Icon/icons/route.tsx +0 -22
  265. package/src/components/Icon/icons/salad.tsx +0 -24
  266. package/src/components/Icon/icons/search.tsx +0 -21
  267. package/src/components/Icon/icons/send.tsx +0 -21
  268. package/src/components/Icon/icons/settings.tsx +0 -21
  269. package/src/components/Icon/icons/share-2.tsx +0 -24
  270. package/src/components/Icon/icons/sheet.tsx +0 -24
  271. package/src/components/Icon/icons/shield.tsx +0 -20
  272. package/src/components/Icon/icons/shopping-basket.tsx +0 -26
  273. package/src/components/Icon/icons/sliders-horizontal.tsx +0 -28
  274. package/src/components/Icon/icons/smartphone.tsx +0 -21
  275. package/src/components/Icon/icons/snowflake.tsx +0 -31
  276. package/src/components/Icon/icons/spray-can.tsx +0 -29
  277. package/src/components/Icon/icons/square-kanban.tsx +0 -23
  278. package/src/components/Icon/icons/table.tsx +0 -23
  279. package/src/components/Icon/icons/trash-2.tsx +0 -24
  280. package/src/components/Icon/icons/upload.tsx +0 -22
  281. package/src/components/Icon/icons/user-round-plus.tsx +0 -23
  282. package/src/components/Icon/icons/user.tsx +0 -21
  283. package/src/components/Icon/icons/users.tsx +0 -23
  284. package/src/components/Icon/icons/wine.tsx +0 -23
  285. package/src/components/Icon/icons/x.tsx +0 -21
  286. package/src/components/IconPicker/IconPicker.module.css +0 -63
  287. package/src/components/IconPicker/IconPicker.stories.tsx +0 -84
  288. package/src/components/IconPicker/IconPicker.tsx +0 -90
  289. package/src/components/Input/Input.module.css +0 -52
  290. package/src/components/Input/Input.stories.tsx +0 -86
  291. package/src/components/Input/Input.tsx +0 -20
  292. package/src/components/Input/__tests__/Input.test.tsx +0 -22
  293. package/src/components/Item/Item.module.css +0 -70
  294. package/src/components/Item/Item.stories.tsx +0 -62
  295. package/src/components/Item/Item.tsx +0 -54
  296. package/src/components/Item/__tests__/Item.test.tsx +0 -39
  297. package/src/components/Kbd/Kbd.module.css +0 -14
  298. package/src/components/Kbd/Kbd.stories.tsx +0 -32
  299. package/src/components/Kbd/Kbd.tsx +0 -12
  300. package/src/components/Kbd/__tests__/Kbd.test.tsx +0 -14
  301. package/src/components/Label/Label.module.css +0 -11
  302. package/src/components/Label/Label.stories.tsx +0 -40
  303. package/src/components/Label/Label.tsx +0 -24
  304. package/src/components/Label/__tests__/Label.test.tsx +0 -32
  305. package/src/components/LegalLinks/LegalLinks.module.css +0 -24
  306. package/src/components/LegalLinks/LegalLinks.stories.tsx +0 -22
  307. package/src/components/LegalLinks/LegalLinks.tsx +0 -40
  308. package/src/components/Markdown/Markdown.module.css +0 -73
  309. package/src/components/Markdown/Markdown.stories.tsx +0 -40
  310. package/src/components/Markdown/Markdown.tsx +0 -305
  311. package/src/components/Markdown/__tests__/Markdown.test.tsx +0 -144
  312. package/src/components/Marker/Marker.module.css +0 -33
  313. package/src/components/Marker/Marker.stories.tsx +0 -39
  314. package/src/components/Marker/Marker.tsx +0 -34
  315. package/src/components/Marker/__tests__/Marker.test.tsx +0 -23
  316. package/src/components/MemberMultiSelect/MemberMultiSelect.module.css +0 -27
  317. package/src/components/MemberMultiSelect/MemberMultiSelect.stories.tsx +0 -74
  318. package/src/components/MemberMultiSelect/MemberMultiSelect.tsx +0 -67
  319. package/src/components/Menu/Menu.module.css +0 -90
  320. package/src/components/Menu/Menu.tsx +0 -209
  321. package/src/components/Menu/__tests__/Menu.test.tsx +0 -227
  322. package/src/components/Menubar/Menubar.stories.tsx +0 -52
  323. package/src/components/Menubar/Menubar.tsx +0 -42
  324. package/src/components/Menubar/__tests__/Menubar.test.tsx +0 -45
  325. package/src/components/Message/Message.module.css +0 -99
  326. package/src/components/Message/Message.stories.tsx +0 -79
  327. package/src/components/Message/Message.tsx +0 -41
  328. package/src/components/Message/__tests__/Message.test.tsx +0 -46
  329. package/src/components/MessageScroller/MessageScroller.module.css +0 -65
  330. package/src/components/MessageScroller/MessageScroller.stories.tsx +0 -84
  331. package/src/components/MessageScroller/MessageScroller.tsx +0 -84
  332. package/src/components/MessageScroller/__tests__/MessageScroller.test.tsx +0 -105
  333. package/src/components/MobileAppsDrawer/MobileAppsDrawer.module.css +0 -82
  334. package/src/components/MobileAppsDrawer/MobileAppsDrawer.tsx +0 -78
  335. package/src/components/MobileAppsDrawer/__tests__/MobileAppsDrawer.test.tsx +0 -80
  336. package/src/components/MobileFooter/MobileFooter.module.css +0 -73
  337. package/src/components/MobileFooter/MobileFooter.stories.tsx +0 -47
  338. package/src/components/MobileFooter/MobileFooter.tsx +0 -122
  339. package/src/components/MobileFooter/__tests__/MobileFooter.test.tsx +0 -129
  340. package/src/components/MobileHeader/MobileHeader.module.css +0 -76
  341. package/src/components/MobileHeader/MobileHeader.stories.tsx +0 -57
  342. package/src/components/MobileHeader/MobileHeader.tsx +0 -90
  343. package/src/components/MobileHeader/__tests__/MobileHeader.test.tsx +0 -113
  344. package/src/components/NavList/NavList.module.css +0 -130
  345. package/src/components/NavList/NavList.tsx +0 -136
  346. package/src/components/NavList/__tests__/NavList.test.tsx +0 -109
  347. package/src/components/NavTabs/NavTabs.module.css +0 -50
  348. package/src/components/NavTabs/NavTabs.tsx +0 -61
  349. package/src/components/NavigationMenu/NavigationMenu.module.css +0 -53
  350. package/src/components/NavigationMenu/NavigationMenu.stories.tsx +0 -58
  351. package/src/components/NavigationMenu/NavigationMenu.tsx +0 -125
  352. package/src/components/NavigationMenu/__tests__/NavigationMenu.test.tsx +0 -93
  353. package/src/components/NotificationsPanel/NotificationsPanel.module.css +0 -258
  354. package/src/components/NotificationsPanel/NotificationsPanel.stories.tsx +0 -61
  355. package/src/components/NotificationsPanel/NotificationsPanel.tsx +0 -187
  356. package/src/components/NotificationsPanel/__tests__/NotificationsPanel.test.tsx +0 -78
  357. package/src/components/OfflineGate/OfflineGate.tsx +0 -44
  358. package/src/components/OfflineGate/__tests__/OfflineGate.test.tsx +0 -66
  359. package/src/components/OverlayHeader/OverlayHeader.module.css +0 -98
  360. package/src/components/OverlayHeader/OverlayHeader.tsx +0 -77
  361. package/src/components/OverlayHeader/__tests__/OverlayHeader.test.tsx +0 -69
  362. package/src/components/PageContainer/PageContainer.module.css +0 -82
  363. package/src/components/PageContainer/PageContainer.tsx +0 -64
  364. package/src/components/PageContainer/__tests__/PageContainer.test.tsx +0 -70
  365. package/src/components/PageHeader/PageHeader.module.css +0 -86
  366. package/src/components/PageHeader/PageHeader.tsx +0 -176
  367. package/src/components/PageHeader/__tests__/PageHeader.test.tsx +0 -103
  368. package/src/components/PageLayout/PageLayout.module.css +0 -51
  369. package/src/components/PageLayout/PageLayout.stories.tsx +0 -73
  370. package/src/components/PageLayout/PageLayout.tsx +0 -51
  371. package/src/components/PageLayout/__tests__/PageLayout.test.tsx +0 -34
  372. package/src/components/Pagination/Pagination.module.css +0 -98
  373. package/src/components/Pagination/Pagination.stories.tsx +0 -49
  374. package/src/components/Pagination/Pagination.tsx +0 -87
  375. package/src/components/Pagination/__tests__/Pagination.test.tsx +0 -56
  376. package/src/components/Popover/Popover.module.css +0 -74
  377. package/src/components/Popover/Popover.stories.tsx +0 -357
  378. package/src/components/Popover/Popover.tsx +0 -290
  379. package/src/components/Popover/__tests__/Popover.test.tsx +0 -263
  380. package/src/components/Progress/Progress.module.css +0 -20
  381. package/src/components/Progress/Progress.stories.tsx +0 -40
  382. package/src/components/Progress/Progress.tsx +0 -35
  383. package/src/components/Progress/__tests__/Progress.test.tsx +0 -31
  384. package/src/components/QuantityStepper/QuantityStepper.module.css +0 -67
  385. package/src/components/QuantityStepper/QuantityStepper.stories.tsx +0 -79
  386. package/src/components/QuantityStepper/QuantityStepper.tsx +0 -107
  387. package/src/components/RadioGroup/RadioGroup.module.css +0 -88
  388. package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -69
  389. package/src/components/RadioGroup/RadioGroup.tsx +0 -99
  390. package/src/components/RadioGroup/__tests__/RadioGroup.test.tsx +0 -59
  391. package/src/components/Resizable/Resizable.module.css +0 -70
  392. package/src/components/Resizable/Resizable.stories.tsx +0 -82
  393. package/src/components/Resizable/Resizable.tsx +0 -313
  394. package/src/components/Resizable/__tests__/Resizable.test.tsx +0 -128
  395. package/src/components/ResponsiveSurface/ResponsiveSurface.tsx +0 -24
  396. package/src/components/ResponsiveSurface/__tests__/ResponsiveSurface.test.tsx +0 -73
  397. package/src/components/RootLayout/RootLayout.module.css +0 -12
  398. package/src/components/RootLayout/RootLayout.stories.tsx +0 -125
  399. package/src/components/RootLayout/RootLayout.tsx +0 -185
  400. package/src/components/RootLayout/__tests__/RootLayout.test.tsx +0 -161
  401. package/src/components/ScrollArea/ScrollArea.module.css +0 -20
  402. package/src/components/ScrollArea/ScrollArea.stories.tsx +0 -57
  403. package/src/components/ScrollArea/ScrollArea.tsx +0 -27
  404. package/src/components/ScrollArea/__tests__/ScrollArea.test.tsx +0 -39
  405. package/src/components/SegmentedControl/SegmentedControl.module.css +0 -55
  406. package/src/components/SegmentedControl/SegmentedControl.stories.tsx +0 -118
  407. package/src/components/SegmentedControl/SegmentedControl.tsx +0 -56
  408. package/src/components/SegmentedControl/__tests__/SegmentedControl.test.tsx +0 -63
  409. package/src/components/Select/Select.module.css +0 -82
  410. package/src/components/Select/Select.stories.tsx +0 -115
  411. package/src/components/Select/Select.tsx +0 -48
  412. package/src/components/Select/__tests__/Select.test.tsx +0 -59
  413. package/src/components/Sheet/Sheet.module.css +0 -58
  414. package/src/components/Sheet/Sheet.tsx +0 -109
  415. package/src/components/Sheet/__tests__/Sheet.test.tsx +0 -99
  416. package/src/components/Slider/Slider.module.css +0 -95
  417. package/src/components/Slider/Slider.stories.tsx +0 -64
  418. package/src/components/Slider/Slider.tsx +0 -77
  419. package/src/components/Slider/__tests__/Slider.test.tsx +0 -45
  420. package/src/components/Spinner/Spinner.module.css +0 -39
  421. package/src/components/Spinner/Spinner.tsx +0 -23
  422. package/src/components/SplitMethodSelector/SplitMethodSelector.stories.tsx +0 -33
  423. package/src/components/SplitMethodSelector/SplitMethodSelector.tsx +0 -43
  424. package/src/components/SplitPane/SplitPane.module.css +0 -85
  425. package/src/components/SplitPane/SplitPane.stories.tsx +0 -160
  426. package/src/components/SplitPane/SplitPane.tsx +0 -149
  427. package/src/components/SplitPane/__tests__/SplitPane.test.tsx +0 -51
  428. package/src/components/StatusBadge/StatusBadge.module.css +0 -59
  429. package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -74
  430. package/src/components/StatusBadge/StatusBadge.tsx +0 -65
  431. package/src/components/StepStrip/StepStrip.module.css +0 -53
  432. package/src/components/StepStrip/StepStrip.tsx +0 -74
  433. package/src/components/SuggestionInput/SuggestionInput.module.css +0 -103
  434. package/src/components/SuggestionInput/SuggestionInput.stories.tsx +0 -144
  435. package/src/components/SuggestionInput/SuggestionInput.tsx +0 -207
  436. package/src/components/SwipableMobileCarousel/SwipableMobileCarousel.module.css +0 -64
  437. package/src/components/SwipableMobileCarousel/SwipableMobileCarousel.tsx +0 -243
  438. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlide.tsx +0 -35
  439. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideBody.tsx +0 -42
  440. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideFooter.tsx +0 -18
  441. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideHeader.tsx +0 -21
  442. package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideParts.module.css +0 -29
  443. package/src/components/SwipableMobileCarousel/__tests__/SwipableMobileCarousel.test.tsx +0 -214
  444. package/src/components/SwipableMobileCarousel/__tests__/SwipableMobileCarouselDevGuard.test.tsx +0 -61
  445. package/src/components/SwipableMobileCarousel/context.ts +0 -13
  446. package/src/components/SwipableMobileCarouselDots/SwipableMobileCarouselDots.module.css +0 -64
  447. package/src/components/SwipableMobileCarouselDots/SwipableMobileCarouselDots.tsx +0 -73
  448. package/src/components/SwipableMobileCarouselDots/__tests__/SwipableMobileCarouselDots.test.tsx +0 -63
  449. package/src/components/SwipeStack/SwipeStack.module.css +0 -101
  450. package/src/components/SwipeStack/SwipeStack.tsx +0 -199
  451. package/src/components/SwipeStack/SwipeStackCard.tsx +0 -22
  452. package/src/components/SwipeStack/__tests__/SwipeStack.test.tsx +0 -169
  453. package/src/components/SystemBanner/SystemBanner.module.css +0 -79
  454. package/src/components/SystemBanner/SystemBanner.stories.tsx +0 -86
  455. package/src/components/SystemBanner/SystemBanner.tsx +0 -50
  456. package/src/components/SystemBanner/__tests__/SystemBanner.test.tsx +0 -50
  457. package/src/components/Table/Table.module.css +0 -45
  458. package/src/components/Table/Table.stories.tsx +0 -125
  459. package/src/components/Table/Table.tsx +0 -51
  460. package/src/components/Table/__tests__/Table.test.tsx +0 -50
  461. package/src/components/Tabs/Tabs.module.css +0 -56
  462. package/src/components/Tabs/Tabs.stories.tsx +0 -100
  463. package/src/components/Tabs/Tabs.tsx +0 -46
  464. package/src/components/Tabs/__tests__/Tabs.test.tsx +0 -45
  465. package/src/components/TagInput/TagInput.module.css +0 -141
  466. package/src/components/TagInput/TagInput.stories.tsx +0 -109
  467. package/src/components/TagInput/TagInput.tsx +0 -174
  468. package/src/components/TagInput/__tests__/TagInput.test.tsx +0 -69
  469. package/src/components/Textarea/Textarea.module.css +0 -47
  470. package/src/components/Textarea/Textarea.tsx +0 -38
  471. package/src/components/Textarea/__tests__/Textarea.test.tsx +0 -51
  472. package/src/components/ThreeColumnLayout/ThreeColumnLayout.module.css +0 -35
  473. package/src/components/ThreeColumnLayout/ThreeColumnLayout.stories.tsx +0 -152
  474. package/src/components/ThreeColumnLayout/ThreeColumnLayout.tsx +0 -87
  475. package/src/components/ThreeColumnLayout/__tests__/ThreeColumnLayout.test.tsx +0 -78
  476. package/src/components/Toast/Toast.module.css +0 -191
  477. package/src/components/Toast/Toast.stories.tsx +0 -191
  478. package/src/components/Toast/Toast.tsx +0 -139
  479. package/src/components/Toggle/Toggle.module.css +0 -57
  480. package/src/components/Toggle/Toggle.stories.tsx +0 -95
  481. package/src/components/Toggle/Toggle.tsx +0 -39
  482. package/src/components/Toggle/__tests__/Toggle.test.tsx +0 -47
  483. package/src/components/Tooltip/Tooltip.module.css +0 -56
  484. package/src/components/Tooltip/Tooltip.tsx +0 -30
  485. package/src/components/Typography/Typography.module.css +0 -47
  486. package/src/components/Typography/Typography.stories.tsx +0 -62
  487. package/src/components/Typography/Typography.tsx +0 -30
  488. package/src/components/Typography/__tests__/Typography.test.tsx +0 -34
  489. package/src/components/UserMenu/UserMenu.module.css +0 -90
  490. package/src/components/UserMenu/UserMenu.stories.tsx +0 -49
  491. package/src/components/UserMenu/UserMenu.tsx +0 -132
  492. package/src/components/UserMenu/__tests__/UserMenu.test.tsx +0 -77
  493. package/src/css-modules.d.ts +0 -4
  494. package/src/hooks/__tests__/useCarouselRouteSync.test.tsx +0 -126
  495. package/src/hooks/__tests__/useDoubleTap.test.tsx +0 -117
  496. package/src/hooks/__tests__/useIsMobile.test.tsx +0 -80
  497. package/src/hooks/__tests__/useIsOffline.test.tsx +0 -53
  498. package/src/hooks/__tests__/useLongPress.test.tsx +0 -158
  499. package/src/hooks/__tests__/useOfflineTileState.test.tsx +0 -69
  500. package/src/hooks/__tests__/usePublishShellChromeHeight.test.tsx +0 -118
  501. package/src/hooks/__tests__/useReorderSensors.test.ts +0 -26
  502. package/src/hooks/__tests__/useResponsiveLayout.test.tsx +0 -87
  503. package/src/hooks/__tests__/useSnapCarousel.test.tsx +0 -175
  504. package/src/hooks/__tests__/useSwipeReveal.test.tsx +0 -110
  505. package/src/hooks/__tests__/useSwipeStack.test.tsx +0 -155
  506. package/src/hooks/index.ts +0 -33
  507. package/src/hooks/useCarouselRouteSync.ts +0 -92
  508. package/src/hooks/useCommitOnEnterOrBlur.ts +0 -39
  509. package/src/hooks/useDoubleTap.ts +0 -91
  510. package/src/hooks/useIsMobile.ts +0 -33
  511. package/src/hooks/useIsOffline.ts +0 -41
  512. package/src/hooks/useLongPress.ts +0 -185
  513. package/src/hooks/useOfflineTileState.ts +0 -45
  514. package/src/hooks/usePublishShellChromeHeight.ts +0 -96
  515. package/src/hooks/useReorderSensors.ts +0 -88
  516. package/src/hooks/useResponsiveLayout.ts +0 -36
  517. package/src/hooks/useSnapCarousel.ts +0 -284
  518. package/src/hooks/useSwipeReveal.ts +0 -107
  519. package/src/hooks/useSwipeStack.ts +0 -235
  520. package/src/index.ts +0 -311
  521. package/src/motion.ts +0 -78
  522. package/src/overlay-shell.ts +0 -159
  523. package/src/scroll-lock.ts +0 -22
  524. package/src/stories/Avatar.stories.tsx +0 -44
  525. package/src/stories/Card.stories.tsx +0 -35
  526. package/src/stories/Checkbox.stories.tsx +0 -45
  527. package/src/stories/DesignSystemOverview.stories.tsx +0 -3793
  528. package/src/stories/DeviceOnlyGate.stories.tsx +0 -35
  529. package/src/stories/DeviceStorageKeyGate.stories.tsx +0 -57
  530. package/src/stories/DragHandleRow.stories.tsx +0 -41
  531. package/src/stories/EmptyState.stories.tsx +0 -33
  532. package/src/stories/FileDropzone.stories.tsx +0 -69
  533. package/src/stories/FormField.stories.tsx +0 -47
  534. package/src/stories/GripIcon.stories.tsx +0 -29
  535. package/src/stories/InteractionHooks.stories.tsx +0 -925
  536. package/src/stories/LayoutSystem.stories.tsx +0 -639
  537. package/src/stories/MenuEntries.stories.tsx +0 -86
  538. package/src/stories/MobilePatterns.stories.tsx +0 -1536
  539. package/src/stories/NavList.stories.tsx +0 -147
  540. package/src/stories/NavTabs.stories.tsx +0 -53
  541. package/src/stories/OfflineGate.stories.tsx +0 -42
  542. package/src/stories/PageContainer.stories.tsx +0 -82
  543. package/src/stories/PageHeader.stories.tsx +0 -95
  544. package/src/stories/ResponsiveSurface.stories.tsx +0 -47
  545. package/src/stories/Spinner.stories.tsx +0 -25
  546. package/src/stories/StepStrip.stories.tsx +0 -76
  547. package/src/stories/SwipableMobileCarousel.stories.tsx +0 -362
  548. package/src/stories/SwipeStack.stories.tsx +0 -200
  549. package/src/stories/Textarea.stories.tsx +0 -63
  550. package/src/stories/TokenGallery.stories.tsx +0 -652
  551. package/src/stories/Tooltip.stories.tsx +0 -59
  552. package/src/tokens/primitives.css +0 -168
  553. package/src/tokens/semantic.css +0 -162
  554. package/src/tokens/theme-presets.css +0 -33
  555. package/src/tokens/theme-presets.ts +0 -72
  556. package/src/tokens.css +0 -5
@@ -1,70 +0,0 @@
1
- .root {
2
- display: flex;
3
- align-items: center;
4
- gap: var(--sv-space-3);
5
- width: 100%;
6
- padding: var(--sv-space-3);
7
- border: none;
8
- border-radius: var(--sv-radius-md);
9
- background: transparent;
10
- text-align: left;
11
- font-family: var(--sv-font-family);
12
- color: inherit;
13
- }
14
-
15
- .interactive {
16
- cursor: pointer;
17
- }
18
-
19
- @media (hover: hover) {
20
- .interactive:not(:disabled):hover {
21
- background: var(--sv-color-surface-sunken);
22
- }
23
- }
24
-
25
- .interactive:focus-visible {
26
- outline: 2px solid var(--sv-color-focus-ring);
27
- outline-offset: -2px;
28
- }
29
-
30
- .interactive:disabled {
31
- opacity: 0.5;
32
- cursor: not-allowed;
33
- }
34
-
35
- @media (pointer: coarse) {
36
- .root {
37
- min-height: var(--sv-touch-target-min, 44px);
38
- }
39
- }
40
-
41
- .leading,
42
- .trailing {
43
- flex-shrink: 0;
44
- display: flex;
45
- align-items: center;
46
- }
47
-
48
- .content {
49
- display: flex;
50
- flex-direction: column;
51
- min-width: 0;
52
- flex: 1;
53
- }
54
-
55
- .title {
56
- font-size: var(--sv-font-size-sm);
57
- font-weight: var(--sv-font-weight-medium);
58
- color: var(--sv-color-text-primary);
59
- overflow: hidden;
60
- text-overflow: ellipsis;
61
- white-space: nowrap;
62
- }
63
-
64
- .description {
65
- font-size: var(--sv-font-size-caption);
66
- color: var(--sv-color-text-muted);
67
- overflow: hidden;
68
- text-overflow: ellipsis;
69
- white-space: nowrap;
70
- }
@@ -1,62 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { Item } from './Item';
3
- import { Icon } from '../Icon/Icon';
4
-
5
- const meta = {
6
- title: 'Components/Item',
7
- component: Item,
8
- parameters: { layout: 'padded' },
9
- args: {
10
- title: 'Notifications',
11
- },
12
- } satisfies Meta<typeof Item>;
13
-
14
- export default meta;
15
- type Story = StoryObj<typeof meta>;
16
-
17
- // ---------------------------------------------------------------------------
18
-
19
- export const Default: Story = {};
20
-
21
- export const WithDescription: Story = {
22
- args: { description: 'Manage email and push alerts' },
23
- };
24
-
25
- export const Interactive: Story = {
26
- args: {
27
- description: 'Manage email and push alerts',
28
- leading: <Icon name="bell" aria-hidden />,
29
- trailing: <Icon name="chevron-right" size="sm" aria-hidden />,
30
- onClick: () => {},
31
- },
32
- };
33
-
34
- export const Disabled: Story = {
35
- args: {
36
- description: 'Requires admin role',
37
- onClick: () => {},
38
- disabled: true,
39
- },
40
- };
41
-
42
- export const List: Story = {
43
- render: () => (
44
- <div style={{ display: 'flex', flexDirection: 'column', gap: 2 }}>
45
- <Item
46
- title="Notifications"
47
- description="Manage email and push alerts"
48
- leading={<Icon name="bell" aria-hidden />}
49
- trailing={<Icon name="chevron-right" size="sm" aria-hidden />}
50
- onClick={() => {}}
51
- />
52
- <Item
53
- title="Privacy"
54
- description="Control what others can see"
55
- leading={<Icon name="shield" aria-hidden />}
56
- trailing={<Icon name="chevron-right" size="sm" aria-hidden />}
57
- onClick={() => {}}
58
- />
59
- <Item title="Sign out" leading={<Icon name="log-out" aria-hidden />} onClick={() => {}} />
60
- </div>
61
- ),
62
- };
@@ -1,54 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- import styles from './Item.module.css';
3
-
4
- export interface ItemProps {
5
- leading?: ReactNode;
6
- title: ReactNode;
7
- description?: ReactNode;
8
- trailing?: ReactNode;
9
- /** Renders as a button when given; a plain row otherwise. */
10
- onClick?: () => void;
11
- disabled?: boolean;
12
- className?: string;
13
- }
14
-
15
- /**
16
- * Item — generic row primitive: leading slot, title + optional description,
17
- * trailing slot. The building block for settings rows, list rows, and
18
- * menu-adjacent rows that don't fit `Menu`'s own item shape.
19
- */
20
- export function Item({
21
- leading,
22
- title,
23
- description,
24
- trailing,
25
- onClick,
26
- disabled,
27
- className,
28
- }: ItemProps) {
29
- const interactive = Boolean(onClick);
30
- const classes = [styles.root, interactive ? styles.interactive : '', className]
31
- .filter(Boolean)
32
- .join(' ');
33
-
34
- const content = (
35
- <>
36
- {leading && <span className={styles.leading}>{leading}</span>}
37
- <span className={styles.content}>
38
- <span className={styles.title}>{title}</span>
39
- {description && <span className={styles.description}>{description}</span>}
40
- </span>
41
- {trailing && <span className={styles.trailing}>{trailing}</span>}
42
- </>
43
- );
44
-
45
- if (interactive) {
46
- return (
47
- <button type="button" onClick={onClick} disabled={disabled} className={classes}>
48
- {content}
49
- </button>
50
- );
51
- }
52
-
53
- return <div className={classes}>{content}</div>;
54
- }
@@ -1,39 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { afterEach, describe, expect, it, vi } from 'vitest';
3
- import { cleanup, render, screen, fireEvent } from '@testing-library/react';
4
- import { Item } from '../Item';
5
-
6
- afterEach(cleanup);
7
-
8
- describe('Item', () => {
9
- it('renders as a plain row when no onClick is given', () => {
10
- render(<Item title="Notifications" description="Manage email and push alerts" />);
11
- expect(screen.queryByRole('button')).toBeNull();
12
- expect(screen.getByText('Notifications')).toBeDefined();
13
- expect(screen.getByText('Manage email and push alerts')).toBeDefined();
14
- });
15
-
16
- it('renders as a button and fires onClick when given', () => {
17
- const onClick = vi.fn();
18
- render(<Item title="Notifications" onClick={onClick} />);
19
- fireEvent.click(screen.getByRole('button', { name: 'Notifications' }));
20
- expect(onClick).toHaveBeenCalled();
21
- });
22
-
23
- it('renders leading and trailing slots', () => {
24
- render(
25
- <Item
26
- title="Notifications"
27
- leading={<span data-testid="leading">icon</span>}
28
- trailing={<span data-testid="trailing">chevron</span>}
29
- />,
30
- );
31
- expect(screen.getByTestId('leading')).toBeDefined();
32
- expect(screen.getByTestId('trailing')).toBeDefined();
33
- });
34
-
35
- it('disables the button when disabled is set', () => {
36
- render(<Item title="Notifications" onClick={() => {}} disabled />);
37
- expect(screen.getByRole('button')).toHaveProperty('disabled', true);
38
- });
39
- });
@@ -1,14 +0,0 @@
1
- .kbd {
2
- display: inline-flex;
3
- align-items: center;
4
- justify-content: center;
5
- min-width: 1.5em;
6
- padding: var(--sv-space-1) var(--sv-space-2);
7
- border: var(--sv-border-width-hairline) solid var(--sv-color-border-strong);
8
- border-radius: var(--sv-radius-sm);
9
- background: var(--sv-color-surface-sunken);
10
- color: var(--sv-color-text-primary);
11
- font-family: var(--sv-font-family-mono);
12
- font-size: var(--sv-font-size-xs);
13
- line-height: 1;
14
- }
@@ -1,32 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { Kbd } from './Kbd';
3
-
4
- const meta = {
5
- title: 'Components/Kbd',
6
- component: Kbd,
7
- parameters: { layout: 'padded' },
8
- args: { children: '⌘K' },
9
- } satisfies Meta<typeof Kbd>;
10
-
11
- export default meta;
12
- type Story = StoryObj<typeof meta>;
13
-
14
- // ---------------------------------------------------------------------------
15
-
16
- export const Default: Story = {};
17
-
18
- export const Letter: Story = {
19
- args: { children: 'S' },
20
- };
21
-
22
- export const Sequence: Story = {
23
- render: () => (
24
- <span style={{ display: 'inline-flex', alignItems: 'center', gap: 4 }}>
25
- <Kbd>Ctrl</Kbd>
26
- <span>+</span>
27
- <Kbd>Shift</Kbd>
28
- <span>+</span>
29
- <Kbd>P</Kbd>
30
- </span>
31
- ),
32
- };
@@ -1,12 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- import styles from './Kbd.module.css';
3
-
4
- export interface KbdProps {
5
- children: ReactNode;
6
- className?: string;
7
- }
8
-
9
- /** Kbd — inline keyboard-key styling. Renders a real `<kbd>` element. */
10
- export function Kbd({ children, className }: KbdProps) {
11
- return <kbd className={[styles.kbd, className].filter(Boolean).join(' ')}>{children}</kbd>;
12
- }
@@ -1,14 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { afterEach, describe, expect, it } from 'vitest';
3
- import { cleanup, render, screen } from '@testing-library/react';
4
- import { Kbd } from '../Kbd';
5
-
6
- afterEach(cleanup);
7
-
8
- describe('Kbd', () => {
9
- it('renders a real <kbd> element', () => {
10
- render(<Kbd>⌘K</Kbd>);
11
- const el = screen.getByText('⌘K');
12
- expect(el.tagName).toBe('KBD');
13
- });
14
- });
@@ -1,11 +0,0 @@
1
- .label {
2
- font-size: var(--sv-font-size-sm);
3
- font-weight: var(--sv-font-weight-medium);
4
- color: var(--sv-color-text-primary);
5
- cursor: default;
6
- }
7
-
8
- .disabled {
9
- opacity: 0.5;
10
- cursor: not-allowed;
11
- }
@@ -1,40 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { Label } from './Label';
3
-
4
- const meta = {
5
- title: 'Components/Label',
6
- component: Label,
7
- parameters: { layout: 'padded' },
8
- args: { children: 'Label text' },
9
- } satisfies Meta<typeof Label>;
10
-
11
- export default meta;
12
- type Story = StoryObj<typeof meta>;
13
-
14
- // ---------------------------------------------------------------------------
15
-
16
- export const Default: Story = {};
17
-
18
- export const Disabled: Story = {
19
- args: { disabled: true },
20
- };
21
-
22
- export const WithControl: Story = {
23
- render: () => (
24
- <div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>
25
- <Label htmlFor="example-input">Email address</Label>
26
- <input
27
- id="example-input"
28
- type="email"
29
- placeholder="you@example.com"
30
- style={{
31
- padding: 'var(--sv-space-2) var(--sv-space-3)',
32
- border: '1px solid var(--sv-color-border-strong)',
33
- borderRadius: 'var(--sv-radius-md)',
34
- fontFamily: 'var(--sv-font-family)',
35
- fontSize: 'var(--sv-font-size-sm)',
36
- }}
37
- />
38
- </div>
39
- ),
40
- };
@@ -1,24 +0,0 @@
1
- import type { LabelHTMLAttributes } from 'react';
2
- import styles from './Label.module.css';
3
-
4
- export interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
5
- disabled?: boolean;
6
- }
7
-
8
- /**
9
- * Label — standalone accessible form label, independent of `FormField`.
10
- * Use `FormField` when a control needs hint/error text too; use `Label`
11
- * directly for a bare label (e.g. next to a `Checkbox` group heading).
12
- */
13
- export function Label({ disabled, className, children, ...rest }: LabelProps) {
14
- return (
15
- <label
16
- className={[styles.label, disabled ? styles.disabled : '', className]
17
- .filter(Boolean)
18
- .join(' ')}
19
- {...rest}
20
- >
21
- {children}
22
- </label>
23
- );
24
- }
@@ -1,32 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { afterEach, describe, expect, it } from 'vitest';
3
- import { cleanup, render, screen } from '@testing-library/react';
4
- import { Label } from '../Label';
5
-
6
- afterEach(cleanup);
7
-
8
- describe('Label', () => {
9
- it('renders a real <label> element', () => {
10
- render(<Label htmlFor="agree">I agree</Label>);
11
- expect(screen.getByText('I agree').tagName).toBe('LABEL');
12
- });
13
-
14
- it('associates with a control via htmlFor', () => {
15
- render(
16
- <>
17
- <Label htmlFor="agree">I agree to the terms</Label>
18
- <input id="agree" type="checkbox" />
19
- </>,
20
- );
21
- expect(screen.getByLabelText('I agree to the terms')).toBeDefined();
22
- });
23
-
24
- it('applies disabled styling without disabling the underlying element', () => {
25
- render(
26
- <Label htmlFor="agree" disabled>
27
- I agree
28
- </Label>,
29
- );
30
- expect(screen.getByText('I agree').className).toContain('disabled');
31
- });
32
- });
@@ -1,24 +0,0 @@
1
- .root {
2
- margin: var(--sv-space-5) 0 0;
3
- display: flex;
4
- align-items: center;
5
- justify-content: center;
6
- gap: var(--sv-space-2);
7
- font-size: var(--sv-font-size-xs);
8
- color: var(--sv-color-text-muted);
9
- }
10
-
11
- .link {
12
- color: var(--sv-color-text-muted);
13
- text-decoration: underline;
14
- text-underline-offset: 2px;
15
- text-decoration-color: var(--sv-color-border);
16
- }
17
-
18
- .link:hover {
19
- color: var(--sv-color-text-primary);
20
- }
21
-
22
- .dot {
23
- color: var(--sv-color-border);
24
- }
@@ -1,22 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { LegalLinks } from './LegalLinks';
3
-
4
- const meta = {
5
- title: 'Components/LegalLinks',
6
- component: LegalLinks,
7
- parameters: { layout: 'padded' },
8
- } satisfies Meta<typeof LegalLinks>;
9
-
10
- export default meta;
11
- type Story = StoryObj<typeof meta>;
12
-
13
- // ---------------------------------------------------------------------------
14
-
15
- export const Default: Story = {};
16
-
17
- export const CustomHrefs: Story = {
18
- args: {
19
- privacyHref: 'https://example.com/legal/privacy',
20
- tosHref: 'https://example.com/legal/tos',
21
- },
22
- };
@@ -1,40 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- import styles from './LegalLinks.module.css';
3
-
4
- export interface LegalLinksProps {
5
- privacyHref?: string;
6
- tosHref?: string;
7
- /** Renders a linked item. Defaults to a plain `<a href>`, which causes a
8
- * full page reload — pass Next's `<Link>` (or equivalent) to keep
9
- * navigation client-side. Not needed for a full-reload navigation away
10
- * from a standalone auth page, but matters if this is ever mounted inside
11
- * an SPA-like shell. */
12
- renderLink?: (href: string, label: string) => ReactNode;
13
- className?: string;
14
- }
15
-
16
- export function LegalLinks({
17
- privacyHref = '/privacy',
18
- tosHref = '/tos',
19
- renderLink,
20
- className,
21
- }: LegalLinksProps) {
22
- const link = (href: string, label: string) =>
23
- renderLink ? (
24
- renderLink(href, label)
25
- ) : (
26
- <a href={href} className={styles.link}>
27
- {label}
28
- </a>
29
- );
30
-
31
- return (
32
- <p className={[styles.root, className].filter(Boolean).join(' ')}>
33
- {link(privacyHref, 'Privacy Policy')}
34
- <span aria-hidden="true" className={styles.dot}>
35
- ·
36
- </span>
37
- {link(tosHref, 'Terms of Service')}
38
- </p>
39
- );
40
- }
@@ -1,73 +0,0 @@
1
- /* Spacing lives on this wrapper div, not on the Typography-rendered tag
2
- inside it — Typography's own variants reset margin: 0, which would tie
3
- for CSS specificity against a bare `.root > * + *` sibling rule and make
4
- the outcome depend on module load order. A dedicated class avoids that. */
5
- .block {
6
- margin-top: var(--sv-space-4);
7
- }
8
-
9
- .block:first-child {
10
- margin-top: 0;
11
- }
12
-
13
- .block[data-heading] {
14
- margin-top: var(--sv-space-8);
15
- }
16
-
17
- .block[data-heading]:first-child {
18
- margin-top: 0;
19
- }
20
-
21
- .blockquote {
22
- margin: 0;
23
- padding: var(--sv-space-4);
24
- border-left: 3px solid var(--sv-color-border);
25
- background: var(--sv-color-surface-sunken);
26
- border-radius: var(--sv-radius-sm);
27
- }
28
-
29
- .list {
30
- margin: 0;
31
- padding-left: var(--sv-space-6);
32
- display: flex;
33
- flex-direction: column;
34
- gap: var(--sv-space-2);
35
- }
36
-
37
- .root a {
38
- color: var(--sv-color-text-primary);
39
- text-decoration: underline;
40
- text-underline-offset: 2px;
41
- }
42
-
43
- .root code {
44
- font-family: var(--sv-font-family-mono);
45
- font-size: 0.9em;
46
- background: var(--sv-color-surface-sunken);
47
- padding: 0.1em 0.35em;
48
- border-radius: var(--sv-radius-sm);
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
- }
@@ -1,40 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { Markdown } from './Markdown';
3
-
4
- const sample = `# Privacy Policy
5
-
6
- This document describes the built-in, default behavior of **Sovereign**.
7
-
8
- > Replaced content from an operator overrides this default.
9
-
10
- ## What we collect
11
-
12
- - **Email address** and password.
13
- - *Time zone*, detected automatically at signup.
14
-
15
- See the [project source](https://github.com/sovereignfs/sovereign) for details.
16
- `;
17
-
18
- const meta = {
19
- title: 'Components/Markdown',
20
- component: Markdown,
21
- parameters: { layout: 'padded' },
22
- args: { content: sample },
23
- } satisfies Meta<typeof Markdown>;
24
-
25
- export default meta;
26
- type Story = StoryObj<typeof meta>;
27
-
28
- // ---------------------------------------------------------------------------
29
-
30
- export const Default: Story = {};
31
-
32
- /** `preserveLineBreaks` — for plain, user-typed multi-line text (a card
33
- * description, a comment body) rather than authored long-form markdown.
34
- * Without it, every line below would collapse into one run-on paragraph. */
35
- export const PreserveLineBreaks: Story = {
36
- args: {
37
- content: 'Line one.\nLine two.\nLine three — each stays on its own line.',
38
- preserveLineBreaks: true,
39
- },
40
- };