@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.
- package/LICENSE +373 -661
- package/NOTICE +8 -0
- package/README.md +4 -6
- package/dist/AppsLauncher.module.css +6 -0
- package/dist/Button.module.css +5 -0
- package/dist/Card.module.css +6 -0
- package/dist/CardTile.module.css +6 -0
- package/dist/CheckableListRow.module.css +8 -0
- package/dist/Checkbox.module.css +8 -0
- package/dist/CodeTextarea.module.css +6 -0
- package/dist/ColorPicker.module.css +6 -0
- package/dist/Combobox.module.css +6 -0
- package/dist/Command.module.css +6 -0
- package/dist/ConfirmDialog.module.css +6 -0
- package/dist/DatePicker.module.css +6 -0
- package/dist/Dialog.module.css +1 -1
- package/dist/DragHandleRow.module.css +6 -0
- package/dist/FileDropzone.module.css +25 -1
- package/dist/Header.module.css +6 -0
- package/dist/IconPicker.module.css +14 -4
- package/dist/Input.module.css +6 -0
- package/dist/LegalLinks.module.css +9 -2
- package/dist/Markdown.module.css +5 -0
- package/dist/Message.module.css +9 -0
- package/dist/MobileAppsDrawer.module.css +9 -5
- package/dist/MobileFooter.module.css +6 -0
- package/dist/NavList.module.css +11 -2
- package/dist/NavTabs.module.css +7 -1
- package/dist/NotificationsPanel.module.css +10 -0
- package/dist/QrCode.module.css +17 -0
- package/dist/QuantityStepper.module.css +4 -2
- package/dist/RadioGroup.module.css +6 -0
- package/dist/SegmentedControl.module.css +6 -0
- package/dist/Select.module.css +6 -0
- package/dist/Sheet.module.css +16 -1
- package/dist/SplitPane.module.css +1 -1
- package/dist/StepStrip.module.css +5 -3
- package/dist/SuggestionInput.module.css +12 -1
- package/dist/SwipableMobileCarouselDots.module.css +6 -0
- package/dist/SystemBanner.module.css +6 -0
- package/dist/Tabs.module.css +6 -0
- package/dist/TagInput.module.css +6 -0
- package/dist/Textarea.module.css +6 -0
- package/dist/Toast.module.css +5 -0
- package/dist/Toggle.module.css +7 -0
- package/dist/Tooltip.module.css +6 -0
- package/dist/UserMenu.module.css +5 -0
- package/dist/fonts/OFL.txt +93 -0
- package/dist/fonts/hanken-grotesk-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/hanken-grotesk-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/hanken-grotesk-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/hanken-grotesk-vietnamese-wght-normal.woff2 +0 -0
- package/dist/index.d.ts +121 -43
- package/dist/index.js +1410 -1152
- package/dist/tokens/fonts.css +53 -0
- package/dist/tokens/primitives.css +12 -12
- package/dist/tokens.css +2 -1
- package/package.json +24 -13
- package/src/__tests__/motion.test.tsx +0 -105
- package/src/__tests__/package-json.test.ts +0 -8
- package/src/components/Accordion/Accordion.module.css +0 -3
- package/src/components/Accordion/Accordion.stories.tsx +0 -110
- package/src/components/Accordion/Accordion.tsx +0 -53
- package/src/components/Accordion/__tests__/Accordion.test.tsx +0 -61
- package/src/components/Alert/Alert.module.css +0 -62
- package/src/components/Alert/Alert.stories.tsx +0 -96
- package/src/components/Alert/Alert.tsx +0 -58
- package/src/components/Alert/__tests__/Alert.test.tsx +0 -75
- package/src/components/AppsLauncher/AppsLauncher.module.css +0 -96
- package/src/components/AppsLauncher/AppsLauncher.stories.tsx +0 -58
- package/src/components/AppsLauncher/AppsLauncher.tsx +0 -117
- package/src/components/AppsLauncher/__tests__/AppsLauncher.test.tsx +0 -52
- package/src/components/AspectRatio/AspectRatio.module.css +0 -15
- package/src/components/AspectRatio/AspectRatio.stories.tsx +0 -78
- package/src/components/AspectRatio/AspectRatio.tsx +0 -21
- package/src/components/AspectRatio/__tests__/AspectRatio.test.tsx +0 -27
- package/src/components/Avatar/Avatar.module.css +0 -38
- package/src/components/Avatar/Avatar.tsx +0 -42
- package/src/components/Badge/Badge.module.css +0 -177
- package/src/components/Badge/Badge.stories.tsx +0 -238
- package/src/components/Badge/Badge.tsx +0 -84
- package/src/components/Badge/__tests__/Badge.test.tsx +0 -90
- package/src/components/BalanceChip/BalanceChip.module.css +0 -32
- package/src/components/BalanceChip/BalanceChip.stories.tsx +0 -45
- package/src/components/BalanceChip/BalanceChip.tsx +0 -33
- package/src/components/Breadcrumb/Breadcrumb.module.css +0 -49
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +0 -47
- package/src/components/Breadcrumb/Breadcrumb.tsx +0 -57
- package/src/components/Breadcrumb/__tests__/Breadcrumb.test.tsx +0 -52
- package/src/components/Button/Button.module.css +0 -169
- package/src/components/Button/Button.stories.tsx +0 -83
- package/src/components/Button/Button.tsx +0 -52
- package/src/components/Button/__tests__/Button.test.tsx +0 -66
- package/src/components/ButtonGroup/ButtonGroup.module.css +0 -29
- package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -57
- package/src/components/ButtonGroup/ButtonGroup.tsx +0 -27
- package/src/components/ButtonGroup/__tests__/ButtonGroup.test.tsx +0 -29
- package/src/components/Calendar/Calendar.module.css +0 -126
- package/src/components/Calendar/Calendar.tsx +0 -213
- package/src/components/Calendar/__tests__/Calendar.test.tsx +0 -98
- package/src/components/Calendar/dateUtils.ts +0 -97
- package/src/components/Card/Card.module.css +0 -42
- package/src/components/Card/Card.tsx +0 -34
- package/src/components/CardTile/CardTile.module.css +0 -181
- package/src/components/CardTile/CardTile.stories.tsx +0 -86
- package/src/components/CardTile/CardTile.tsx +0 -128
- package/src/components/CardTile/__tests__/CardTile.test.tsx +0 -56
- package/src/components/CheckableListRow/CheckableListRow.module.css +0 -95
- package/src/components/CheckableListRow/CheckableListRow.stories.tsx +0 -99
- package/src/components/CheckableListRow/CheckableListRow.tsx +0 -89
- package/src/components/Checkbox/Checkbox.module.css +0 -111
- package/src/components/Checkbox/Checkbox.tsx +0 -78
- package/src/components/CodeTextarea/CodeTextarea.module.css +0 -53
- package/src/components/CodeTextarea/CodeTextarea.stories.tsx +0 -77
- package/src/components/CodeTextarea/CodeTextarea.tsx +0 -36
- package/src/components/Collapsible/Collapsible.module.css +0 -70
- package/src/components/Collapsible/Collapsible.stories.tsx +0 -62
- package/src/components/Collapsible/Collapsible.tsx +0 -66
- package/src/components/Collapsible/__tests__/Collapsible.test.tsx +0 -71
- package/src/components/ColorPicker/ColorPicker.module.css +0 -132
- package/src/components/ColorPicker/ColorPicker.stories.tsx +0 -80
- package/src/components/ColorPicker/ColorPicker.tsx +0 -157
- package/src/components/ColorPicker/__tests__/ColorPicker.test.tsx +0 -117
- package/src/components/Combobox/Combobox.module.css +0 -122
- package/src/components/Combobox/Combobox.stories.tsx +0 -79
- package/src/components/Combobox/Combobox.tsx +0 -186
- package/src/components/Combobox/__tests__/Combobox.test.tsx +0 -158
- package/src/components/Command/Command.module.css +0 -80
- package/src/components/Command/Command.stories.tsx +0 -104
- package/src/components/Command/Command.tsx +0 -168
- package/src/components/Command/__tests__/Command.test.tsx +0 -162
- package/src/components/ConfirmDialog/ConfirmDialog.module.css +0 -113
- package/src/components/ConfirmDialog/ConfirmDialog.tsx +0 -150
- package/src/components/ConfirmDialog/__tests__/ConfirmDialog.test.tsx +0 -214
- package/src/components/ConsentPrompt/ConsentPrompt.module.css +0 -21
- package/src/components/ConsentPrompt/ConsentPrompt.stories.tsx +0 -31
- package/src/components/ConsentPrompt/ConsentPrompt.tsx +0 -66
- package/src/components/ContextMenu/ContextMenu.stories.tsx +0 -81
- package/src/components/ContextMenu/ContextMenu.tsx +0 -100
- package/src/components/ContextMenu/__tests__/ContextMenu.test.tsx +0 -87
- package/src/components/CurrencyInput/CurrencyInput.stories.tsx +0 -50
- package/src/components/CurrencyInput/CurrencyInput.tsx +0 -60
- package/src/components/DataTable/DataTable.module.css +0 -28
- package/src/components/DataTable/DataTable.stories.tsx +0 -74
- package/src/components/DataTable/DataTable.tsx +0 -154
- package/src/components/DataTable/__tests__/DataTable.test.tsx +0 -123
- package/src/components/DatePicker/DatePicker.module.css +0 -61
- package/src/components/DatePicker/DatePicker.tsx +0 -103
- package/src/components/DatePicker/__tests__/DatePicker.test.tsx +0 -89
- package/src/components/DeviceOnlyGate/DeviceOnlyGate.tsx +0 -58
- package/src/components/DeviceOnlyGate/__tests__/DeviceOnlyGate.test.tsx +0 -45
- package/src/components/DeviceStorageKeyGate/DeviceStorageKeyGate.tsx +0 -100
- package/src/components/DeviceStorageKeyGate/__tests__/DeviceStorageKeyGate.test.tsx +0 -119
- package/src/components/Dialog/Dialog.module.css +0 -335
- package/src/components/Dialog/Dialog.stories.tsx +0 -324
- package/src/components/Dialog/Dialog.tsx +0 -254
- package/src/components/Dialog/__tests__/Dialog.test.tsx +0 -318
- package/src/components/DragHandleRow/DragHandleRow.module.css +0 -57
- package/src/components/DragHandleRow/DragHandleRow.tsx +0 -42
- package/src/components/Drawer/Drawer.module.css +0 -121
- package/src/components/Drawer/Drawer.stories.tsx +0 -132
- package/src/components/Drawer/Drawer.tsx +0 -175
- package/src/components/Drawer/__tests__/Drawer.test.tsx +0 -226
- package/src/components/EmptyState/EmptyState.module.css +0 -27
- package/src/components/EmptyState/EmptyState.tsx +0 -27
- package/src/components/FileDropzone/FileDropzone.module.css +0 -63
- package/src/components/FileDropzone/FileDropzone.tsx +0 -109
- package/src/components/FileDropzone/__tests__/FileDropzone.test.tsx +0 -67
- package/src/components/FormField/FormField.module.css +0 -33
- package/src/components/FormField/FormField.tsx +0 -78
- package/src/components/FormField/__tests__/FormField.test.tsx +0 -83
- package/src/components/GripIcon/GripIcon.tsx +0 -27
- package/src/components/Header/Header.module.css +0 -62
- package/src/components/Header/Header.stories.tsx +0 -452
- package/src/components/Header/Header.tsx +0 -102
- package/src/components/Header/__tests__/Header.test.tsx +0 -104
- package/src/components/HeaderFooterLayout/HeaderFooterLayout.module.css +0 -21
- package/src/components/HeaderFooterLayout/HeaderFooterLayout.stories.tsx +0 -111
- package/src/components/HeaderFooterLayout/HeaderFooterLayout.tsx +0 -54
- package/src/components/HeaderFooterLayout/__tests__/HeaderFooterLayout.test.tsx +0 -58
- package/src/components/HoverCard/HoverCard.module.css +0 -3
- package/src/components/HoverCard/HoverCard.stories.tsx +0 -66
- package/src/components/HoverCard/HoverCard.tsx +0 -111
- package/src/components/HoverCard/__tests__/HoverCard.test.tsx +0 -99
- package/src/components/Icon/Icon.module.css +0 -27
- package/src/components/Icon/Icon.stories.tsx +0 -95
- package/src/components/Icon/Icon.tsx +0 -43
- package/src/components/Icon/__tests__/Icon.test.tsx +0 -40
- package/src/components/Icon/icons/activity.tsx +0 -20
- package/src/components/Icon/icons/alert-triangle.tsx +0 -22
- package/src/components/Icon/icons/apple.tsx +0 -21
- package/src/components/Icon/icons/arrow-left-right.tsx +0 -23
- package/src/components/Icon/icons/banana.tsx +0 -21
- package/src/components/Icon/icons/beef.tsx +0 -22
- package/src/components/Icon/icons/beer.tsx +0 -24
- package/src/components/Icon/icons/bell.tsx +0 -21
- package/src/components/Icon/icons/bold.tsx +0 -20
- package/src/components/Icon/icons/calendar.tsx +0 -23
- package/src/components/Icon/icons/candy.tsx +0 -24
- package/src/components/Icon/icons/carrot.tsx +0 -22
- package/src/components/Icon/icons/check.tsx +0 -20
- package/src/components/Icon/icons/chevron-down.tsx +0 -20
- package/src/components/Icon/icons/chevron-left.tsx +0 -20
- package/src/components/Icon/icons/chevron-right.tsx +0 -20
- package/src/components/Icon/icons/chevron-up.tsx +0 -20
- package/src/components/Icon/icons/circle-check.tsx +0 -21
- package/src/components/Icon/icons/circle-chevron-left.tsx +0 -21
- package/src/components/Icon/icons/circle-x.tsx +0 -22
- package/src/components/Icon/icons/code.tsx +0 -21
- package/src/components/Icon/icons/coffee.tsx +0 -23
- package/src/components/Icon/icons/cookie.tsx +0 -25
- package/src/components/Icon/icons/copy.tsx +0 -21
- package/src/components/Icon/icons/credit-card.tsx +0 -21
- package/src/components/Icon/icons/croissant.tsx +0 -24
- package/src/components/Icon/icons/cup-soda.tsx +0 -23
- package/src/components/Icon/icons/database.tsx +0 -22
- package/src/components/Icon/icons/download.tsx +0 -22
- package/src/components/Icon/icons/drumstick.tsx +0 -21
- package/src/components/Icon/icons/egg.tsx +0 -20
- package/src/components/Icon/icons/ellipsis-vertical.tsx +0 -22
- package/src/components/Icon/icons/external-link.tsx +0 -22
- package/src/components/Icon/icons/eye-off.tsx +0 -23
- package/src/components/Icon/icons/eye.tsx +0 -21
- package/src/components/Icon/icons/file-text.tsx +0 -24
- package/src/components/Icon/icons/file.tsx +0 -21
- package/src/components/Icon/icons/fish.tsx +0 -25
- package/src/components/Icon/icons/folder-closed.tsx +0 -21
- package/src/components/Icon/icons/folder-open.tsx +0 -20
- package/src/components/Icon/icons/folder.tsx +0 -20
- package/src/components/Icon/icons/folders.tsx +0 -21
- package/src/components/Icon/icons/grid-2x2.tsx +0 -22
- package/src/components/Icon/icons/hat-glasses.tsx +0 -24
- package/src/components/Icon/icons/history.tsx +0 -22
- package/src/components/Icon/icons/house.tsx +0 -21
- package/src/components/Icon/icons/inbox.tsx +0 -21
- package/src/components/Icon/icons/index.ts +0 -394
- package/src/components/Icon/icons/info.tsx +0 -22
- package/src/components/Icon/icons/italic.tsx +0 -22
- package/src/components/Icon/icons/layers.tsx +0 -22
- package/src/components/Icon/icons/layout-dashboard.tsx +0 -23
- package/src/components/Icon/icons/layout-grid.tsx +0 -23
- package/src/components/Icon/icons/link.tsx +0 -21
- package/src/components/Icon/icons/list-ordered.tsx +0 -25
- package/src/components/Icon/icons/list.tsx +0 -25
- package/src/components/Icon/icons/lock.tsx +0 -21
- package/src/components/Icon/icons/log-out.tsx +0 -22
- package/src/components/Icon/icons/luggage.tsx +0 -24
- package/src/components/Icon/icons/mail.tsx +0 -21
- package/src/components/Icon/icons/map-pin.tsx +0 -21
- package/src/components/Icon/icons/menu.tsx +0 -22
- package/src/components/Icon/icons/milk.tsx +0 -22
- package/src/components/Icon/icons/minus.tsx +0 -20
- package/src/components/Icon/icons/package.tsx +0 -23
- package/src/components/Icon/icons/paint-bucket.tsx +0 -23
- package/src/components/Icon/icons/panel-left.tsx +0 -21
- package/src/components/Icon/icons/pencil.tsx +0 -21
- package/src/components/Icon/icons/pin.tsx +0 -21
- package/src/components/Icon/icons/pizza.tsx +0 -24
- package/src/components/Icon/icons/plus.tsx +0 -21
- package/src/components/Icon/icons/rectangle-ellipsis.tsx +0 -23
- package/src/components/Icon/icons/refresh-cw.tsx +0 -23
- package/src/components/Icon/icons/rotate-ccw.tsx +0 -21
- package/src/components/Icon/icons/rotate-cw.tsx +0 -21
- package/src/components/Icon/icons/route.tsx +0 -22
- package/src/components/Icon/icons/salad.tsx +0 -24
- package/src/components/Icon/icons/search.tsx +0 -21
- package/src/components/Icon/icons/send.tsx +0 -21
- package/src/components/Icon/icons/settings.tsx +0 -21
- package/src/components/Icon/icons/share-2.tsx +0 -24
- package/src/components/Icon/icons/sheet.tsx +0 -24
- package/src/components/Icon/icons/shield.tsx +0 -20
- package/src/components/Icon/icons/shopping-basket.tsx +0 -26
- package/src/components/Icon/icons/sliders-horizontal.tsx +0 -28
- package/src/components/Icon/icons/smartphone.tsx +0 -21
- package/src/components/Icon/icons/snowflake.tsx +0 -31
- package/src/components/Icon/icons/spray-can.tsx +0 -29
- package/src/components/Icon/icons/square-kanban.tsx +0 -23
- package/src/components/Icon/icons/table.tsx +0 -23
- package/src/components/Icon/icons/trash-2.tsx +0 -24
- package/src/components/Icon/icons/upload.tsx +0 -22
- package/src/components/Icon/icons/user-round-plus.tsx +0 -23
- package/src/components/Icon/icons/user.tsx +0 -21
- package/src/components/Icon/icons/users.tsx +0 -23
- package/src/components/Icon/icons/wine.tsx +0 -23
- package/src/components/Icon/icons/x.tsx +0 -21
- package/src/components/IconPicker/IconPicker.module.css +0 -63
- package/src/components/IconPicker/IconPicker.stories.tsx +0 -84
- package/src/components/IconPicker/IconPicker.tsx +0 -90
- package/src/components/Input/Input.module.css +0 -52
- package/src/components/Input/Input.stories.tsx +0 -86
- package/src/components/Input/Input.tsx +0 -20
- package/src/components/Input/__tests__/Input.test.tsx +0 -22
- package/src/components/Item/Item.module.css +0 -70
- package/src/components/Item/Item.stories.tsx +0 -62
- package/src/components/Item/Item.tsx +0 -54
- package/src/components/Item/__tests__/Item.test.tsx +0 -39
- package/src/components/Kbd/Kbd.module.css +0 -14
- package/src/components/Kbd/Kbd.stories.tsx +0 -32
- package/src/components/Kbd/Kbd.tsx +0 -12
- package/src/components/Kbd/__tests__/Kbd.test.tsx +0 -14
- package/src/components/Label/Label.module.css +0 -11
- package/src/components/Label/Label.stories.tsx +0 -40
- package/src/components/Label/Label.tsx +0 -24
- package/src/components/Label/__tests__/Label.test.tsx +0 -32
- package/src/components/LegalLinks/LegalLinks.module.css +0 -24
- package/src/components/LegalLinks/LegalLinks.stories.tsx +0 -22
- package/src/components/LegalLinks/LegalLinks.tsx +0 -40
- package/src/components/Markdown/Markdown.module.css +0 -73
- package/src/components/Markdown/Markdown.stories.tsx +0 -40
- package/src/components/Markdown/Markdown.tsx +0 -305
- package/src/components/Markdown/__tests__/Markdown.test.tsx +0 -144
- package/src/components/Marker/Marker.module.css +0 -33
- package/src/components/Marker/Marker.stories.tsx +0 -39
- package/src/components/Marker/Marker.tsx +0 -34
- package/src/components/Marker/__tests__/Marker.test.tsx +0 -23
- package/src/components/MemberMultiSelect/MemberMultiSelect.module.css +0 -27
- package/src/components/MemberMultiSelect/MemberMultiSelect.stories.tsx +0 -74
- package/src/components/MemberMultiSelect/MemberMultiSelect.tsx +0 -67
- package/src/components/Menu/Menu.module.css +0 -90
- package/src/components/Menu/Menu.tsx +0 -209
- package/src/components/Menu/__tests__/Menu.test.tsx +0 -227
- package/src/components/Menubar/Menubar.stories.tsx +0 -52
- package/src/components/Menubar/Menubar.tsx +0 -42
- package/src/components/Menubar/__tests__/Menubar.test.tsx +0 -45
- package/src/components/Message/Message.module.css +0 -99
- package/src/components/Message/Message.stories.tsx +0 -79
- package/src/components/Message/Message.tsx +0 -41
- package/src/components/Message/__tests__/Message.test.tsx +0 -46
- package/src/components/MessageScroller/MessageScroller.module.css +0 -65
- package/src/components/MessageScroller/MessageScroller.stories.tsx +0 -84
- package/src/components/MessageScroller/MessageScroller.tsx +0 -84
- package/src/components/MessageScroller/__tests__/MessageScroller.test.tsx +0 -105
- package/src/components/MobileAppsDrawer/MobileAppsDrawer.module.css +0 -82
- package/src/components/MobileAppsDrawer/MobileAppsDrawer.tsx +0 -78
- package/src/components/MobileAppsDrawer/__tests__/MobileAppsDrawer.test.tsx +0 -80
- package/src/components/MobileFooter/MobileFooter.module.css +0 -73
- package/src/components/MobileFooter/MobileFooter.stories.tsx +0 -47
- package/src/components/MobileFooter/MobileFooter.tsx +0 -122
- package/src/components/MobileFooter/__tests__/MobileFooter.test.tsx +0 -129
- package/src/components/MobileHeader/MobileHeader.module.css +0 -76
- package/src/components/MobileHeader/MobileHeader.stories.tsx +0 -57
- package/src/components/MobileHeader/MobileHeader.tsx +0 -90
- package/src/components/MobileHeader/__tests__/MobileHeader.test.tsx +0 -113
- package/src/components/NavList/NavList.module.css +0 -130
- package/src/components/NavList/NavList.tsx +0 -136
- package/src/components/NavList/__tests__/NavList.test.tsx +0 -109
- package/src/components/NavTabs/NavTabs.module.css +0 -50
- package/src/components/NavTabs/NavTabs.tsx +0 -61
- package/src/components/NavigationMenu/NavigationMenu.module.css +0 -53
- package/src/components/NavigationMenu/NavigationMenu.stories.tsx +0 -58
- package/src/components/NavigationMenu/NavigationMenu.tsx +0 -125
- package/src/components/NavigationMenu/__tests__/NavigationMenu.test.tsx +0 -93
- package/src/components/NotificationsPanel/NotificationsPanel.module.css +0 -258
- package/src/components/NotificationsPanel/NotificationsPanel.stories.tsx +0 -61
- package/src/components/NotificationsPanel/NotificationsPanel.tsx +0 -187
- package/src/components/NotificationsPanel/__tests__/NotificationsPanel.test.tsx +0 -78
- package/src/components/OfflineGate/OfflineGate.tsx +0 -44
- package/src/components/OfflineGate/__tests__/OfflineGate.test.tsx +0 -66
- package/src/components/OverlayHeader/OverlayHeader.module.css +0 -98
- package/src/components/OverlayHeader/OverlayHeader.tsx +0 -77
- package/src/components/OverlayHeader/__tests__/OverlayHeader.test.tsx +0 -69
- package/src/components/PageContainer/PageContainer.module.css +0 -82
- package/src/components/PageContainer/PageContainer.tsx +0 -64
- package/src/components/PageContainer/__tests__/PageContainer.test.tsx +0 -70
- package/src/components/PageHeader/PageHeader.module.css +0 -86
- package/src/components/PageHeader/PageHeader.tsx +0 -176
- package/src/components/PageHeader/__tests__/PageHeader.test.tsx +0 -103
- package/src/components/PageLayout/PageLayout.module.css +0 -51
- package/src/components/PageLayout/PageLayout.stories.tsx +0 -73
- package/src/components/PageLayout/PageLayout.tsx +0 -51
- package/src/components/PageLayout/__tests__/PageLayout.test.tsx +0 -34
- package/src/components/Pagination/Pagination.module.css +0 -98
- package/src/components/Pagination/Pagination.stories.tsx +0 -49
- package/src/components/Pagination/Pagination.tsx +0 -87
- package/src/components/Pagination/__tests__/Pagination.test.tsx +0 -56
- package/src/components/Popover/Popover.module.css +0 -74
- package/src/components/Popover/Popover.stories.tsx +0 -357
- package/src/components/Popover/Popover.tsx +0 -290
- package/src/components/Popover/__tests__/Popover.test.tsx +0 -263
- package/src/components/Progress/Progress.module.css +0 -20
- package/src/components/Progress/Progress.stories.tsx +0 -40
- package/src/components/Progress/Progress.tsx +0 -35
- package/src/components/Progress/__tests__/Progress.test.tsx +0 -31
- package/src/components/QuantityStepper/QuantityStepper.module.css +0 -67
- package/src/components/QuantityStepper/QuantityStepper.stories.tsx +0 -79
- package/src/components/QuantityStepper/QuantityStepper.tsx +0 -107
- package/src/components/RadioGroup/RadioGroup.module.css +0 -88
- package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -69
- package/src/components/RadioGroup/RadioGroup.tsx +0 -99
- package/src/components/RadioGroup/__tests__/RadioGroup.test.tsx +0 -59
- package/src/components/Resizable/Resizable.module.css +0 -70
- package/src/components/Resizable/Resizable.stories.tsx +0 -82
- package/src/components/Resizable/Resizable.tsx +0 -313
- package/src/components/Resizable/__tests__/Resizable.test.tsx +0 -128
- package/src/components/ResponsiveSurface/ResponsiveSurface.tsx +0 -24
- package/src/components/ResponsiveSurface/__tests__/ResponsiveSurface.test.tsx +0 -73
- package/src/components/RootLayout/RootLayout.module.css +0 -12
- package/src/components/RootLayout/RootLayout.stories.tsx +0 -125
- package/src/components/RootLayout/RootLayout.tsx +0 -185
- package/src/components/RootLayout/__tests__/RootLayout.test.tsx +0 -161
- package/src/components/ScrollArea/ScrollArea.module.css +0 -20
- package/src/components/ScrollArea/ScrollArea.stories.tsx +0 -57
- package/src/components/ScrollArea/ScrollArea.tsx +0 -27
- package/src/components/ScrollArea/__tests__/ScrollArea.test.tsx +0 -39
- package/src/components/SegmentedControl/SegmentedControl.module.css +0 -55
- package/src/components/SegmentedControl/SegmentedControl.stories.tsx +0 -118
- package/src/components/SegmentedControl/SegmentedControl.tsx +0 -56
- package/src/components/SegmentedControl/__tests__/SegmentedControl.test.tsx +0 -63
- package/src/components/Select/Select.module.css +0 -82
- package/src/components/Select/Select.stories.tsx +0 -115
- package/src/components/Select/Select.tsx +0 -48
- package/src/components/Select/__tests__/Select.test.tsx +0 -59
- package/src/components/Sheet/Sheet.module.css +0 -58
- package/src/components/Sheet/Sheet.tsx +0 -109
- package/src/components/Sheet/__tests__/Sheet.test.tsx +0 -99
- package/src/components/Slider/Slider.module.css +0 -95
- package/src/components/Slider/Slider.stories.tsx +0 -64
- package/src/components/Slider/Slider.tsx +0 -77
- package/src/components/Slider/__tests__/Slider.test.tsx +0 -45
- package/src/components/Spinner/Spinner.module.css +0 -39
- package/src/components/Spinner/Spinner.tsx +0 -23
- package/src/components/SplitMethodSelector/SplitMethodSelector.stories.tsx +0 -33
- package/src/components/SplitMethodSelector/SplitMethodSelector.tsx +0 -43
- package/src/components/SplitPane/SplitPane.module.css +0 -85
- package/src/components/SplitPane/SplitPane.stories.tsx +0 -160
- package/src/components/SplitPane/SplitPane.tsx +0 -149
- package/src/components/SplitPane/__tests__/SplitPane.test.tsx +0 -51
- package/src/components/StatusBadge/StatusBadge.module.css +0 -59
- package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -74
- package/src/components/StatusBadge/StatusBadge.tsx +0 -65
- package/src/components/StepStrip/StepStrip.module.css +0 -53
- package/src/components/StepStrip/StepStrip.tsx +0 -74
- package/src/components/SuggestionInput/SuggestionInput.module.css +0 -103
- package/src/components/SuggestionInput/SuggestionInput.stories.tsx +0 -144
- package/src/components/SuggestionInput/SuggestionInput.tsx +0 -207
- package/src/components/SwipableMobileCarousel/SwipableMobileCarousel.module.css +0 -64
- package/src/components/SwipableMobileCarousel/SwipableMobileCarousel.tsx +0 -243
- package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlide.tsx +0 -35
- package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideBody.tsx +0 -42
- package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideFooter.tsx +0 -18
- package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideHeader.tsx +0 -21
- package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideParts.module.css +0 -29
- package/src/components/SwipableMobileCarousel/__tests__/SwipableMobileCarousel.test.tsx +0 -214
- package/src/components/SwipableMobileCarousel/__tests__/SwipableMobileCarouselDevGuard.test.tsx +0 -61
- package/src/components/SwipableMobileCarousel/context.ts +0 -13
- package/src/components/SwipableMobileCarouselDots/SwipableMobileCarouselDots.module.css +0 -64
- package/src/components/SwipableMobileCarouselDots/SwipableMobileCarouselDots.tsx +0 -73
- package/src/components/SwipableMobileCarouselDots/__tests__/SwipableMobileCarouselDots.test.tsx +0 -63
- package/src/components/SwipeStack/SwipeStack.module.css +0 -101
- package/src/components/SwipeStack/SwipeStack.tsx +0 -199
- package/src/components/SwipeStack/SwipeStackCard.tsx +0 -22
- package/src/components/SwipeStack/__tests__/SwipeStack.test.tsx +0 -169
- package/src/components/SystemBanner/SystemBanner.module.css +0 -79
- package/src/components/SystemBanner/SystemBanner.stories.tsx +0 -86
- package/src/components/SystemBanner/SystemBanner.tsx +0 -50
- package/src/components/SystemBanner/__tests__/SystemBanner.test.tsx +0 -50
- package/src/components/Table/Table.module.css +0 -45
- package/src/components/Table/Table.stories.tsx +0 -125
- package/src/components/Table/Table.tsx +0 -51
- package/src/components/Table/__tests__/Table.test.tsx +0 -50
- package/src/components/Tabs/Tabs.module.css +0 -56
- package/src/components/Tabs/Tabs.stories.tsx +0 -100
- package/src/components/Tabs/Tabs.tsx +0 -46
- package/src/components/Tabs/__tests__/Tabs.test.tsx +0 -45
- package/src/components/TagInput/TagInput.module.css +0 -141
- package/src/components/TagInput/TagInput.stories.tsx +0 -109
- package/src/components/TagInput/TagInput.tsx +0 -174
- package/src/components/TagInput/__tests__/TagInput.test.tsx +0 -69
- package/src/components/Textarea/Textarea.module.css +0 -47
- package/src/components/Textarea/Textarea.tsx +0 -38
- package/src/components/Textarea/__tests__/Textarea.test.tsx +0 -51
- package/src/components/ThreeColumnLayout/ThreeColumnLayout.module.css +0 -35
- package/src/components/ThreeColumnLayout/ThreeColumnLayout.stories.tsx +0 -152
- package/src/components/ThreeColumnLayout/ThreeColumnLayout.tsx +0 -87
- package/src/components/ThreeColumnLayout/__tests__/ThreeColumnLayout.test.tsx +0 -78
- package/src/components/Toast/Toast.module.css +0 -191
- package/src/components/Toast/Toast.stories.tsx +0 -191
- package/src/components/Toast/Toast.tsx +0 -139
- package/src/components/Toggle/Toggle.module.css +0 -57
- package/src/components/Toggle/Toggle.stories.tsx +0 -95
- package/src/components/Toggle/Toggle.tsx +0 -39
- package/src/components/Toggle/__tests__/Toggle.test.tsx +0 -47
- package/src/components/Tooltip/Tooltip.module.css +0 -56
- package/src/components/Tooltip/Tooltip.tsx +0 -30
- package/src/components/Typography/Typography.module.css +0 -47
- package/src/components/Typography/Typography.stories.tsx +0 -62
- package/src/components/Typography/Typography.tsx +0 -30
- package/src/components/Typography/__tests__/Typography.test.tsx +0 -34
- package/src/components/UserMenu/UserMenu.module.css +0 -90
- package/src/components/UserMenu/UserMenu.stories.tsx +0 -49
- package/src/components/UserMenu/UserMenu.tsx +0 -132
- package/src/components/UserMenu/__tests__/UserMenu.test.tsx +0 -77
- package/src/css-modules.d.ts +0 -4
- package/src/hooks/__tests__/useCarouselRouteSync.test.tsx +0 -126
- package/src/hooks/__tests__/useDoubleTap.test.tsx +0 -117
- package/src/hooks/__tests__/useIsMobile.test.tsx +0 -80
- package/src/hooks/__tests__/useIsOffline.test.tsx +0 -53
- package/src/hooks/__tests__/useLongPress.test.tsx +0 -158
- package/src/hooks/__tests__/useOfflineTileState.test.tsx +0 -69
- package/src/hooks/__tests__/usePublishShellChromeHeight.test.tsx +0 -118
- package/src/hooks/__tests__/useReorderSensors.test.ts +0 -26
- package/src/hooks/__tests__/useResponsiveLayout.test.tsx +0 -87
- package/src/hooks/__tests__/useSnapCarousel.test.tsx +0 -175
- package/src/hooks/__tests__/useSwipeReveal.test.tsx +0 -110
- package/src/hooks/__tests__/useSwipeStack.test.tsx +0 -155
- package/src/hooks/index.ts +0 -33
- package/src/hooks/useCarouselRouteSync.ts +0 -92
- package/src/hooks/useCommitOnEnterOrBlur.ts +0 -39
- package/src/hooks/useDoubleTap.ts +0 -91
- package/src/hooks/useIsMobile.ts +0 -33
- package/src/hooks/useIsOffline.ts +0 -41
- package/src/hooks/useLongPress.ts +0 -185
- package/src/hooks/useOfflineTileState.ts +0 -45
- package/src/hooks/usePublishShellChromeHeight.ts +0 -96
- package/src/hooks/useReorderSensors.ts +0 -88
- package/src/hooks/useResponsiveLayout.ts +0 -36
- package/src/hooks/useSnapCarousel.ts +0 -284
- package/src/hooks/useSwipeReveal.ts +0 -107
- package/src/hooks/useSwipeStack.ts +0 -235
- package/src/index.ts +0 -311
- package/src/motion.ts +0 -78
- package/src/overlay-shell.ts +0 -159
- package/src/scroll-lock.ts +0 -22
- package/src/stories/Avatar.stories.tsx +0 -44
- package/src/stories/Card.stories.tsx +0 -35
- package/src/stories/Checkbox.stories.tsx +0 -45
- package/src/stories/DesignSystemOverview.stories.tsx +0 -3793
- package/src/stories/DeviceOnlyGate.stories.tsx +0 -35
- package/src/stories/DeviceStorageKeyGate.stories.tsx +0 -57
- package/src/stories/DragHandleRow.stories.tsx +0 -41
- package/src/stories/EmptyState.stories.tsx +0 -33
- package/src/stories/FileDropzone.stories.tsx +0 -69
- package/src/stories/FormField.stories.tsx +0 -47
- package/src/stories/GripIcon.stories.tsx +0 -29
- package/src/stories/InteractionHooks.stories.tsx +0 -925
- package/src/stories/LayoutSystem.stories.tsx +0 -639
- package/src/stories/MenuEntries.stories.tsx +0 -86
- package/src/stories/MobilePatterns.stories.tsx +0 -1536
- package/src/stories/NavList.stories.tsx +0 -147
- package/src/stories/NavTabs.stories.tsx +0 -53
- package/src/stories/OfflineGate.stories.tsx +0 -42
- package/src/stories/PageContainer.stories.tsx +0 -82
- package/src/stories/PageHeader.stories.tsx +0 -95
- package/src/stories/ResponsiveSurface.stories.tsx +0 -47
- package/src/stories/Spinner.stories.tsx +0 -25
- package/src/stories/StepStrip.stories.tsx +0 -76
- package/src/stories/SwipableMobileCarousel.stories.tsx +0 -362
- package/src/stories/SwipeStack.stories.tsx +0 -200
- package/src/stories/Textarea.stories.tsx +0 -63
- package/src/stories/TokenGallery.stories.tsx +0 -652
- package/src/stories/Tooltip.stories.tsx +0 -59
- package/src/tokens/primitives.css +0 -168
- package/src/tokens/semantic.css +0 -162
- package/src/tokens/theme-presets.css +0 -33
- package/src/tokens/theme-presets.ts +0 -72
- package/src/tokens.css +0 -5
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
-
import { NavList } from '../components/NavList/NavList';
|
|
3
|
-
|
|
4
|
-
const overviewGroup = {
|
|
5
|
-
id: 'overview',
|
|
6
|
-
items: [
|
|
7
|
-
{ id: 'overview', label: 'Overview', href: '#overview', icon: 'layout-dashboard' as const },
|
|
8
|
-
],
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
const peopleGroup = {
|
|
12
|
-
id: 'people',
|
|
13
|
-
label: 'People',
|
|
14
|
-
items: [
|
|
15
|
-
{ id: 'users', label: 'Users', href: '#users', icon: 'users' as const },
|
|
16
|
-
{ id: 'groups', label: 'Groups', href: '#groups', icon: 'layers' as const },
|
|
17
|
-
],
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
const appsGroup = {
|
|
21
|
-
id: 'apps',
|
|
22
|
-
label: 'Apps',
|
|
23
|
-
items: [
|
|
24
|
-
{ id: 'plugins', label: 'Apps', href: '#plugins', icon: 'layout-grid' as const },
|
|
25
|
-
{ id: 'entitlements', label: 'Entitlements', href: '#entitlements', icon: 'shield' as const },
|
|
26
|
-
],
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const meta = {
|
|
30
|
-
title: 'Components/NavList',
|
|
31
|
-
component: NavList,
|
|
32
|
-
parameters: { layout: 'padded' },
|
|
33
|
-
args: {
|
|
34
|
-
groups: [overviewGroup, peopleGroup, appsGroup],
|
|
35
|
-
variant: 'static',
|
|
36
|
-
'aria-label': 'Example sections',
|
|
37
|
-
},
|
|
38
|
-
} satisfies Meta<typeof NavList>;
|
|
39
|
-
|
|
40
|
-
export default meta;
|
|
41
|
-
type Story = StoryObj<typeof meta>;
|
|
42
|
-
|
|
43
|
-
/** Desktop sidebar shape — active row highlighted, no chevron. */
|
|
44
|
-
export const StaticActiveItem: Story = {
|
|
45
|
-
args: {
|
|
46
|
-
groups: [
|
|
47
|
-
{
|
|
48
|
-
id: 'overview',
|
|
49
|
-
items: [
|
|
50
|
-
{
|
|
51
|
-
id: 'overview',
|
|
52
|
-
label: 'Overview',
|
|
53
|
-
href: '#overview',
|
|
54
|
-
icon: 'layout-dashboard',
|
|
55
|
-
active: true,
|
|
56
|
-
},
|
|
57
|
-
],
|
|
58
|
-
},
|
|
59
|
-
peopleGroup,
|
|
60
|
-
appsGroup,
|
|
61
|
-
],
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* `density="compact"` — shrinks row height/padding for a short, always-
|
|
67
|
-
* visible `static` list (e.g. Warden's sidebar "New chat"/"Providers"/
|
|
68
|
-
* "Models" rows above its longer session list), where the default's full
|
|
69
|
-
* touch-target height reads as needlessly spaced out. Only meaningful with
|
|
70
|
-
* `variant="static"`; every other story on this page stays at the default
|
|
71
|
-
* density, unaffected.
|
|
72
|
-
*/
|
|
73
|
-
export const CompactDensity: Story = {
|
|
74
|
-
args: {
|
|
75
|
-
density: 'compact',
|
|
76
|
-
groups: [
|
|
77
|
-
{
|
|
78
|
-
id: 'primary',
|
|
79
|
-
items: [
|
|
80
|
-
{ id: 'new', label: 'New chat', href: '#new', icon: 'plus' },
|
|
81
|
-
{ id: 'providers', label: 'Providers', href: '#providers', icon: 'link' },
|
|
82
|
-
{ id: 'models', label: 'Models', href: '#models', icon: 'layers' },
|
|
83
|
-
],
|
|
84
|
-
},
|
|
85
|
-
],
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
/** Mobile index shape — every row gets a trailing chevron, no active state; tapping navigates to a full-screen section. */
|
|
90
|
-
export const Drilldown: Story = {
|
|
91
|
-
args: { variant: 'drilldown' },
|
|
92
|
-
parameters: { viewport: { defaultViewport: 'mobile' } },
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
/** `group.label` omitted entirely renders a flat list with no section headers. */
|
|
96
|
-
export const Ungrouped: Story = {
|
|
97
|
-
args: {
|
|
98
|
-
groups: [
|
|
99
|
-
{
|
|
100
|
-
id: 'flat',
|
|
101
|
-
items: [
|
|
102
|
-
{ id: 'a', label: 'First', href: '#a', icon: 'house' },
|
|
103
|
-
{ id: 'b', label: 'Second', href: '#b', icon: 'settings' },
|
|
104
|
-
],
|
|
105
|
-
},
|
|
106
|
-
],
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
/** Simulates a consumer swapping in a client-side router link (e.g. Next's `<Link>`) instead of a plain `<a>`. */
|
|
111
|
-
export const WithCustomLinkRenderer: Story = {
|
|
112
|
-
args: {
|
|
113
|
-
groups: [
|
|
114
|
-
{
|
|
115
|
-
id: 'overview',
|
|
116
|
-
items: [
|
|
117
|
-
{
|
|
118
|
-
id: 'overview',
|
|
119
|
-
label: 'Overview',
|
|
120
|
-
href: '#overview',
|
|
121
|
-
icon: 'layout-dashboard',
|
|
122
|
-
active: true,
|
|
123
|
-
},
|
|
124
|
-
],
|
|
125
|
-
},
|
|
126
|
-
peopleGroup,
|
|
127
|
-
],
|
|
128
|
-
renderLink: (item, linkProps) => (
|
|
129
|
-
<button
|
|
130
|
-
type="button"
|
|
131
|
-
className={linkProps.className}
|
|
132
|
-
aria-current={linkProps['aria-current']}
|
|
133
|
-
onClick={() => console.log(`client-side navigate to ${item.href}`)}
|
|
134
|
-
style={{
|
|
135
|
-
background: 'none',
|
|
136
|
-
border: 'none',
|
|
137
|
-
cursor: 'pointer',
|
|
138
|
-
font: 'inherit',
|
|
139
|
-
textAlign: 'left',
|
|
140
|
-
width: '100%',
|
|
141
|
-
}}
|
|
142
|
-
>
|
|
143
|
-
{linkProps.children}
|
|
144
|
-
</button>
|
|
145
|
-
),
|
|
146
|
-
},
|
|
147
|
-
};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
-
import { NavTabs } from '../components/NavTabs/NavTabs';
|
|
3
|
-
|
|
4
|
-
const items = [
|
|
5
|
-
{ label: 'Overview', href: '#overview', active: true },
|
|
6
|
-
{ label: 'Users', href: '#users' },
|
|
7
|
-
{ label: 'Plugins', href: '#plugins' },
|
|
8
|
-
{ label: 'Settings', href: '#settings' },
|
|
9
|
-
];
|
|
10
|
-
|
|
11
|
-
const meta = {
|
|
12
|
-
title: 'Components/NavTabs',
|
|
13
|
-
component: NavTabs,
|
|
14
|
-
parameters: { layout: 'padded' },
|
|
15
|
-
args: { items },
|
|
16
|
-
} satisfies Meta<typeof NavTabs>;
|
|
17
|
-
|
|
18
|
-
export default meta;
|
|
19
|
-
type Story = StoryObj<typeof meta>;
|
|
20
|
-
|
|
21
|
-
export const Default: Story = {};
|
|
22
|
-
|
|
23
|
-
export const ManyTabs: Story = {
|
|
24
|
-
args: {
|
|
25
|
-
items: [
|
|
26
|
-
{ label: 'Profile', href: '#profile', active: true },
|
|
27
|
-
{ label: 'Security', href: '#security' },
|
|
28
|
-
{ label: 'Notifications', href: '#notifications' },
|
|
29
|
-
{ label: 'Preferences', href: '#preferences' },
|
|
30
|
-
{ label: 'Data & Privacy', href: '#data' },
|
|
31
|
-
{ label: 'Sessions', href: '#sessions' },
|
|
32
|
-
],
|
|
33
|
-
},
|
|
34
|
-
parameters: { viewport: { defaultViewport: 'mobile' } },
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
/** Simulates a consumer swapping in a client-side router link (e.g. Next's
|
|
38
|
-
* `<Link replace>` inside an overlay-shell plugin) instead of a plain `<a>`. */
|
|
39
|
-
export const WithCustomLinkRenderer: Story = {
|
|
40
|
-
args: {
|
|
41
|
-
renderLink: (item, linkProps) => (
|
|
42
|
-
<button
|
|
43
|
-
type="button"
|
|
44
|
-
className={linkProps.className}
|
|
45
|
-
aria-current={linkProps['aria-current']}
|
|
46
|
-
onClick={() => console.log(`client-side navigate to ${item.href}`)}
|
|
47
|
-
style={{ background: 'none', border: 'none', cursor: 'pointer', font: 'inherit' }}
|
|
48
|
-
>
|
|
49
|
-
{linkProps.children}
|
|
50
|
-
</button>
|
|
51
|
-
),
|
|
52
|
-
},
|
|
53
|
-
};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
-
import { OfflineGate } from '../components/OfflineGate/OfflineGate';
|
|
3
|
-
import { EmptyState } from '../components/EmptyState/EmptyState';
|
|
4
|
-
|
|
5
|
-
const sampleContent = (
|
|
6
|
-
<div style={{ padding: 'var(--sv-space-4)' }}>
|
|
7
|
-
<p style={{ margin: 0, fontFamily: 'var(--sv-font-family)' }}>
|
|
8
|
-
The wrapped content — a user list, a settings form, anything that shouldn’t operate
|
|
9
|
-
against a stale cached snapshot.
|
|
10
|
-
</p>
|
|
11
|
-
</div>
|
|
12
|
-
);
|
|
13
|
-
|
|
14
|
-
const meta = {
|
|
15
|
-
title: 'Components/OfflineGate',
|
|
16
|
-
component: OfflineGate,
|
|
17
|
-
parameters: { layout: 'padded' },
|
|
18
|
-
} satisfies Meta<typeof OfflineGate>;
|
|
19
|
-
|
|
20
|
-
export default meta;
|
|
21
|
-
type Story = StoryObj<typeof meta>;
|
|
22
|
-
|
|
23
|
-
// `OfflineGate` reads the live `useIsOffline()` hook, which Storybook can't
|
|
24
|
-
// drive via args — toggle DevTools > Network > Offline (or throttling) in this
|
|
25
|
-
// preview to see it swap `children` for the blocked state below.
|
|
26
|
-
export const Default: Story = {
|
|
27
|
-
args: { children: sampleContent, surfaceName: 'Console' },
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
// The offline state is not independently controllable here (same reason as
|
|
31
|
-
// Default), so this renders the exact EmptyState output OfflineGate produces
|
|
32
|
-
// when useIsOffline() is true, for visual review without a live toggle.
|
|
33
|
-
export const OfflineState: Story = {
|
|
34
|
-
args: { children: sampleContent, surfaceName: 'Console' },
|
|
35
|
-
render: () => (
|
|
36
|
-
<EmptyState
|
|
37
|
-
icon="alert-triangle"
|
|
38
|
-
heading="You're offline"
|
|
39
|
-
description="Console needs a connection — reconnect to continue."
|
|
40
|
-
/>
|
|
41
|
-
),
|
|
42
|
-
};
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
-
import { PageContainer } from '../components/PageContainer/PageContainer';
|
|
3
|
-
|
|
4
|
-
const demoBlock = (
|
|
5
|
-
<div
|
|
6
|
-
style={{
|
|
7
|
-
background: 'var(--sv-color-surface-raised)',
|
|
8
|
-
border: '1px dashed var(--sv-color-border)',
|
|
9
|
-
borderRadius: 'var(--sv-radius-md)',
|
|
10
|
-
padding: 'var(--sv-space-4)',
|
|
11
|
-
}}
|
|
12
|
-
>
|
|
13
|
-
Page content goes here. This component supplies the page's gutter and constrains its width
|
|
14
|
-
— the runtime shell contributes neither.
|
|
15
|
-
</div>
|
|
16
|
-
);
|
|
17
|
-
|
|
18
|
-
const meta = {
|
|
19
|
-
title: 'Components/PageContainer',
|
|
20
|
-
component: PageContainer,
|
|
21
|
-
parameters: {
|
|
22
|
-
layout: 'fullscreen',
|
|
23
|
-
docs: {
|
|
24
|
-
description: {
|
|
25
|
-
component:
|
|
26
|
-
'The wrapper every plugin page renders through. `padding` is the page gutter (the ' +
|
|
27
|
-
'runtime shell no longer applies one) and `maxWidth` constrains content, padding ' +
|
|
28
|
-
'included. Both default to the common case: a full-width page with the standard ' +
|
|
29
|
-
'32px/16px gutter.',
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
args: { children: demoBlock },
|
|
34
|
-
} satisfies Meta<typeof PageContainer>;
|
|
35
|
-
|
|
36
|
-
export default meta;
|
|
37
|
-
type Story = StoryObj<typeof meta>;
|
|
38
|
-
|
|
39
|
-
/** Defaults: full width, `md` gutter. */
|
|
40
|
-
export const Default: Story = {};
|
|
41
|
-
|
|
42
|
-
// ── maxWidth ──────────────────────────────────────────────────────────────
|
|
43
|
-
|
|
44
|
-
export const WidthSmall: Story = { args: { maxWidth: 'sm' } };
|
|
45
|
-
export const WidthMedium: Story = { args: { maxWidth: 'md' } };
|
|
46
|
-
export const WidthLarge: Story = { args: { maxWidth: 'lg' } };
|
|
47
|
-
|
|
48
|
-
// ── padding ───────────────────────────────────────────────────────────────
|
|
49
|
-
|
|
50
|
-
/** For a page whose ancestor already supplies the gutter, or a full-bleed layout. */
|
|
51
|
-
export const PaddingNone: Story = { args: { padding: 'none' } };
|
|
52
|
-
export const PaddingSmall: Story = { args: { padding: 'sm' } };
|
|
53
|
-
export const PaddingLarge: Story = { args: { padding: 'lg' } };
|
|
54
|
-
|
|
55
|
-
/** Every gutter step tightens below 768px. */
|
|
56
|
-
export const MobileViewport: Story = {
|
|
57
|
-
args: { maxWidth: 'md' },
|
|
58
|
-
parameters: { viewport: { defaultViewport: 'mobile1' } },
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* An ancestor that already pads its content sets `--sv-page-gutter: 0` and
|
|
63
|
-
* PageContainer stands its own gutter down — how `Dialog` keeps an overlay
|
|
64
|
-
* plugin from being padded twice when the same page renders inside it.
|
|
65
|
-
*/
|
|
66
|
-
export const GutterSuppressedByAncestor: Story = {
|
|
67
|
-
args: { maxWidth: 'md' },
|
|
68
|
-
decorators: [
|
|
69
|
-
(Story) => (
|
|
70
|
-
<div
|
|
71
|
-
style={{
|
|
72
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- CSS custom property
|
|
73
|
-
['--sv-page-gutter' as any]: '0px',
|
|
74
|
-
border: '1px solid var(--sv-color-border)',
|
|
75
|
-
padding: 'var(--sv-space-6)',
|
|
76
|
-
}}
|
|
77
|
-
>
|
|
78
|
-
<Story />
|
|
79
|
-
</div>
|
|
80
|
-
),
|
|
81
|
-
],
|
|
82
|
-
};
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
-
import { PageHeader } from '../components/PageHeader/PageHeader';
|
|
3
|
-
import { Button } from '../components/Button/Button';
|
|
4
|
-
|
|
5
|
-
const meta = {
|
|
6
|
-
title: 'Components/PageHeader',
|
|
7
|
-
component: PageHeader,
|
|
8
|
-
parameters: {
|
|
9
|
-
layout: 'padded',
|
|
10
|
-
docs: {
|
|
11
|
-
description: {
|
|
12
|
-
component:
|
|
13
|
-
"A page's title section. Web: title + description on the left, action on the right. Mobile: an optional back button, a single-line title (description drops out), the same action slot, and an optional vertical-ellipsis menu trigger — a compact single row, generalized from Kanban's own hand-rolled MobileBoardHeader. The web/mobile fork is ResponsiveSurface; only one tree is ever mounted.",
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
} satisfies Meta<typeof PageHeader>;
|
|
18
|
-
|
|
19
|
-
export default meta;
|
|
20
|
-
type Story = StoryObj<typeof meta>;
|
|
21
|
-
|
|
22
|
-
export const Default: Story = {
|
|
23
|
-
args: { title: 'Users' },
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export const WithDescription: Story = {
|
|
27
|
-
args: {
|
|
28
|
-
title: 'Users',
|
|
29
|
-
description: 'Manage who has access to this instance.',
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export const WithAction: Story = {
|
|
34
|
-
args: {
|
|
35
|
-
title: 'Users',
|
|
36
|
-
description: 'Manage who has access to this instance.',
|
|
37
|
-
action: <Button size="sm">Invite user</Button>,
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
/** A leading icon before the title text, on both breakpoints — e.g. a
|
|
42
|
-
* folder-detail page pairing `folder-open` with the folder's own name. */
|
|
43
|
-
export const WithIcon: Story = {
|
|
44
|
-
args: {
|
|
45
|
-
title: 'Handbook',
|
|
46
|
-
icon: 'folder-open',
|
|
47
|
-
action: <Button size="sm">Share</Button>,
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
/** For use under a shell/plugin that already renders its own `<h1>` — e.g.
|
|
52
|
-
* Console's per-page headers sitting below `<h1>Console</h1>`. Visually
|
|
53
|
-
* identical to the default story; only the rendered tag changes. */
|
|
54
|
-
export const NestedHeadingLevel: Story = {
|
|
55
|
-
args: {
|
|
56
|
-
title: 'Users',
|
|
57
|
-
description: 'Manage who has access to this instance.',
|
|
58
|
-
headingLevel: 2,
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
/** Below the mobile breakpoint: description drops out of the compact row
|
|
63
|
-
* (generalized from Kanban's own hand-rolled MobileBoardHeader, which has
|
|
64
|
-
* no subtitle handling either), action stays — same content, adapts itself
|
|
65
|
-
* if it needs to look different at this width. */
|
|
66
|
-
export const Mobile: Story = {
|
|
67
|
-
parameters: { viewport: { defaultViewport: 'mobile1' } },
|
|
68
|
-
args: {
|
|
69
|
-
title: 'Users',
|
|
70
|
-
description: 'Manage who has access to this instance.',
|
|
71
|
-
action: <Button size="sm">Invite user</Button>,
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
/** onBack shows a back button to the left of the title — mobile only, no
|
|
76
|
-
* web equivalent. */
|
|
77
|
-
export const MobileWithBack: Story = {
|
|
78
|
-
parameters: { viewport: { defaultViewport: 'mobile1' } },
|
|
79
|
-
args: {
|
|
80
|
-
title: 'Sv Wallet',
|
|
81
|
-
onBack: () => undefined,
|
|
82
|
-
},
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
/** onMenuClick shows a vertical-ellipsis trigger at the far right — mobile
|
|
86
|
-
* only, no web equivalent. Typically opens a drawer/menu; PageHeader has no
|
|
87
|
-
* opinion on what it contains. */
|
|
88
|
-
export const MobileWithMenu: Story = {
|
|
89
|
-
parameters: { viewport: { defaultViewport: 'mobile1' } },
|
|
90
|
-
args: {
|
|
91
|
-
title: 'Sovereign Platform',
|
|
92
|
-
onBack: () => undefined,
|
|
93
|
-
onMenuClick: () => undefined,
|
|
94
|
-
},
|
|
95
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
-
import { ResponsiveSurface } from '../components/ResponsiveSurface/ResponsiveSurface';
|
|
3
|
-
|
|
4
|
-
function demoTree(label: string) {
|
|
5
|
-
return (
|
|
6
|
-
<div
|
|
7
|
-
style={{
|
|
8
|
-
padding: 'var(--sv-space-6)',
|
|
9
|
-
textAlign: 'center',
|
|
10
|
-
fontFamily: 'var(--sv-font-family)',
|
|
11
|
-
fontSize: 'var(--sv-font-size-sm)',
|
|
12
|
-
color: 'var(--sv-color-text-primary)',
|
|
13
|
-
border: '1px dashed var(--sv-color-border)',
|
|
14
|
-
borderRadius: 'var(--sv-radius-md)',
|
|
15
|
-
}}
|
|
16
|
-
>
|
|
17
|
-
{label}
|
|
18
|
-
</div>
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const meta = {
|
|
23
|
-
title: 'Components/ResponsiveSurface',
|
|
24
|
-
component: ResponsiveSurface,
|
|
25
|
-
parameters: {
|
|
26
|
-
layout: 'padded',
|
|
27
|
-
docs: {
|
|
28
|
-
description: {
|
|
29
|
-
component:
|
|
30
|
-
'Renders an entirely different component tree below a breakpoint, not a CSS squeeze of the same one — only the active side is ever mounted. See also the useResponsiveLayout hook for non-JSX values.',
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
args: {
|
|
35
|
-
web: demoTree('Web tree — e.g. a three-column layout'),
|
|
36
|
-
mobile: demoTree('Mobile tree — an entirely different component'),
|
|
37
|
-
},
|
|
38
|
-
} satisfies Meta<typeof ResponsiveSurface>;
|
|
39
|
-
|
|
40
|
-
export default meta;
|
|
41
|
-
type Story = StoryObj<typeof meta>;
|
|
42
|
-
|
|
43
|
-
export const Default: Story = {};
|
|
44
|
-
|
|
45
|
-
export const MobileViewport: Story = {
|
|
46
|
-
parameters: { viewport: { defaultViewport: 'mobile1' } },
|
|
47
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
-
import { Spinner } from '../components/Spinner/Spinner';
|
|
3
|
-
|
|
4
|
-
const meta = {
|
|
5
|
-
title: 'Components/Spinner',
|
|
6
|
-
component: Spinner,
|
|
7
|
-
parameters: { layout: 'centered' },
|
|
8
|
-
} satisfies Meta<typeof Spinner>;
|
|
9
|
-
|
|
10
|
-
export default meta;
|
|
11
|
-
type Story = StoryObj<typeof meta>;
|
|
12
|
-
|
|
13
|
-
export const Default: Story = {};
|
|
14
|
-
export const Small: Story = { args: { size: 'sm' } };
|
|
15
|
-
export const Large: Story = { args: { size: 'lg' } };
|
|
16
|
-
|
|
17
|
-
export const AllSizes: Story = {
|
|
18
|
-
render: () => (
|
|
19
|
-
<div style={{ display: 'flex', alignItems: 'center', gap: 16 }}>
|
|
20
|
-
<Spinner size="sm" />
|
|
21
|
-
<Spinner size="md" />
|
|
22
|
-
<Spinner size="lg" />
|
|
23
|
-
</div>
|
|
24
|
-
),
|
|
25
|
-
};
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react';
|
|
2
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
3
|
-
import { StepStrip, type StepStripItem } from '../components/StepStrip/StepStrip';
|
|
4
|
-
|
|
5
|
-
const meta: Meta<typeof StepStrip> = {
|
|
6
|
-
title: 'Components/StepStrip',
|
|
7
|
-
component: StepStrip,
|
|
8
|
-
parameters: { layout: 'padded' },
|
|
9
|
-
tags: ['autodocs'],
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export default meta;
|
|
13
|
-
type Story = StoryObj<typeof StepStrip>;
|
|
14
|
-
|
|
15
|
-
interface Stop extends StepStripItem {
|
|
16
|
-
label: string;
|
|
17
|
-
sublabel: string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const STOPS: Stop[] = [
|
|
21
|
-
{ id: 'lisbon', label: 'Lisbon', sublabel: 'Aug 26 – 28 · 2 days' },
|
|
22
|
-
{ id: 'porto', label: 'Porto', sublabel: 'Aug 28 – 30 · 2 days' },
|
|
23
|
-
];
|
|
24
|
-
|
|
25
|
-
const chipStyle = (isActive: boolean) => ({
|
|
26
|
-
boxSizing: 'border-box' as const,
|
|
27
|
-
minWidth: '160px',
|
|
28
|
-
padding: 'var(--sv-space-3) var(--sv-space-4)',
|
|
29
|
-
borderRadius: 'var(--sv-radius-lg)',
|
|
30
|
-
border: `1px solid ${isActive ? 'var(--sv-color-text-primary)' : 'var(--sv-color-border)'}`,
|
|
31
|
-
background: isActive ? 'var(--sv-color-text-primary)' : 'var(--sv-color-surface-raised)',
|
|
32
|
-
color: isActive ? 'var(--sv-color-surface)' : 'var(--sv-color-text-primary)',
|
|
33
|
-
cursor: 'pointer',
|
|
34
|
-
textAlign: 'left' as const,
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
function StopStripDemo() {
|
|
38
|
-
const [activeId, setActiveId] = useState<string>('lisbon');
|
|
39
|
-
|
|
40
|
-
return (
|
|
41
|
-
<StepStrip
|
|
42
|
-
items={STOPS}
|
|
43
|
-
activeId={activeId}
|
|
44
|
-
aria-label="Trip stops"
|
|
45
|
-
onAdd={() => alert('Add a stop')}
|
|
46
|
-
addLabel="Add a stop"
|
|
47
|
-
renderItem={(stop, { isActive }) => (
|
|
48
|
-
<button type="button" style={chipStyle(isActive)} onClick={() => setActiveId(stop.id)}>
|
|
49
|
-
<div style={{ fontWeight: 600, fontSize: 'var(--sv-font-size-sm)' }}>{stop.label}</div>
|
|
50
|
-
<div style={{ fontSize: 'var(--sv-font-size-xs)', opacity: 0.8 }}>{stop.sublabel}</div>
|
|
51
|
-
</button>
|
|
52
|
-
)}
|
|
53
|
-
/>
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export const Default: Story = {
|
|
58
|
-
render: () => <StopStripDemo />,
|
|
59
|
-
name: 'Stop strip (click to select, trailing add chip)',
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export const NoAddAffordance: Story = {
|
|
63
|
-
render: () => (
|
|
64
|
-
<StepStrip
|
|
65
|
-
items={STOPS}
|
|
66
|
-
activeId="porto"
|
|
67
|
-
aria-label="Trip stops"
|
|
68
|
-
renderItem={(stop, { isActive }) => (
|
|
69
|
-
<div style={chipStyle(isActive)}>
|
|
70
|
-
<div style={{ fontWeight: 600, fontSize: 'var(--sv-font-size-sm)' }}>{stop.label}</div>
|
|
71
|
-
<div style={{ fontSize: 'var(--sv-font-size-xs)', opacity: 0.8 }}>{stop.sublabel}</div>
|
|
72
|
-
</div>
|
|
73
|
-
)}
|
|
74
|
-
/>
|
|
75
|
-
),
|
|
76
|
-
};
|