@sovereignfs/ui 0.45.0 → 0.83.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/dist/Accordion.module.css +1 -1
- package/dist/Alert.module.css +1 -1
- package/dist/AppsLauncher.module.css +96 -0
- package/dist/Avatar.module.css +1 -1
- package/dist/Badge.module.css +30 -7
- package/dist/BalanceChip.module.css +1 -1
- package/dist/Button.module.css +18 -2
- package/dist/Card.module.css +1 -1
- package/dist/CardTile.module.css +181 -0
- package/dist/CodeTextarea.module.css +1 -1
- package/dist/Collapsible.module.css +1 -1
- package/dist/ColorPicker.module.css +132 -0
- package/dist/Combobox.module.css +2 -2
- package/dist/Command.module.css +1 -1
- package/dist/ConfirmDialog.module.css +2 -2
- package/dist/ConsentPrompt.module.css +21 -0
- package/dist/DatePicker.module.css +1 -1
- package/dist/Dialog.module.css +130 -21
- package/dist/Drawer.module.css +36 -7
- package/dist/Header.module.css +62 -0
- package/dist/HeaderFooterLayout.module.css +21 -0
- package/dist/IconPicker.module.css +1 -1
- package/dist/Input.module.css +1 -1
- package/dist/Kbd.module.css +1 -1
- package/dist/LegalLinks.module.css +24 -0
- package/dist/Markdown.module.css +73 -0
- package/dist/Menu.module.css +1 -0
- package/dist/Message.module.css +1 -1
- package/dist/MessageScroller.module.css +12 -1
- package/dist/MobileAppsDrawer.module.css +82 -0
- package/dist/MobileFooter.module.css +73 -0
- package/dist/MobileHeader.module.css +76 -0
- package/dist/NavList.module.css +130 -0
- package/dist/NavTabs.module.css +1 -1
- package/dist/NotificationsPanel.module.css +258 -0
- package/dist/OverlayHeader.module.css +1 -1
- package/dist/PageContainer.module.css +82 -0
- package/dist/PageHeader.module.css +54 -0
- package/dist/PageLayout.module.css +51 -0
- package/dist/Popover.module.css +1 -1
- package/dist/QuantityStepper.module.css +1 -1
- package/dist/Resizable.module.css +3 -3
- package/dist/RootLayout.module.css +12 -0
- package/dist/SegmentedControl.module.css +1 -1
- package/dist/Select.module.css +1 -1
- package/dist/Sheet.module.css +4 -1
- package/dist/SplitPane.module.css +4 -4
- package/dist/StatusBadge.module.css +1 -1
- package/dist/StepStrip.module.css +53 -0
- package/dist/SuggestionInput.module.css +2 -2
- package/dist/SwipableMobileCarousel.module.css +64 -0
- package/dist/SwipableMobileCarouselDots.module.css +64 -0
- package/dist/SwipableMobileCarouselSlideParts.module.css +29 -0
- package/dist/SwipeStack.module.css +101 -0
- package/dist/SystemBanner.module.css +10 -0
- package/dist/Table.module.css +2 -2
- package/dist/Tabs.module.css +1 -1
- package/dist/TagInput.module.css +2 -2
- package/dist/Textarea.module.css +9 -1
- package/dist/ThreeColumnLayout.module.css +35 -0
- package/dist/Toast.module.css +62 -3
- package/dist/Tooltip.module.css +1 -1
- package/dist/UserMenu.module.css +90 -0
- package/dist/index.d.ts +1680 -30
- package/dist/index.js +4618 -1443
- package/dist/tokens/primitives.css +36 -0
- package/dist/tokens/semantic.css +32 -0
- package/dist/tokens/theme-presets.css +33 -0
- package/package.json +32 -12
- package/src/__tests__/package-json.test.ts +8 -0
- package/src/components/Accordion/Accordion.module.css +1 -1
- package/src/components/Alert/Alert.module.css +1 -1
- package/src/components/AppsLauncher/AppsLauncher.module.css +96 -0
- package/src/components/AppsLauncher/AppsLauncher.stories.tsx +58 -0
- package/src/components/AppsLauncher/AppsLauncher.tsx +117 -0
- package/src/components/AppsLauncher/__tests__/AppsLauncher.test.tsx +52 -0
- package/src/components/Avatar/Avatar.module.css +1 -1
- package/src/components/Badge/Badge.module.css +30 -7
- package/src/components/Badge/Badge.stories.tsx +16 -4
- package/src/components/Badge/Badge.tsx +8 -11
- package/src/components/Badge/__tests__/Badge.test.tsx +4 -2
- package/src/components/BalanceChip/BalanceChip.module.css +1 -1
- package/src/components/Button/Button.module.css +18 -2
- package/src/components/Card/Card.module.css +1 -1
- package/src/components/CardTile/CardTile.module.css +181 -0
- package/src/components/CardTile/CardTile.stories.tsx +86 -0
- package/src/components/CardTile/CardTile.tsx +128 -0
- package/src/components/CardTile/__tests__/CardTile.test.tsx +56 -0
- package/src/components/CodeTextarea/CodeTextarea.module.css +1 -1
- package/src/components/Collapsible/Collapsible.module.css +1 -1
- package/src/components/ColorPicker/ColorPicker.module.css +132 -0
- package/src/components/ColorPicker/ColorPicker.stories.tsx +80 -0
- package/src/components/ColorPicker/ColorPicker.tsx +157 -0
- package/src/components/ColorPicker/__tests__/ColorPicker.test.tsx +117 -0
- package/src/components/Combobox/Combobox.module.css +2 -2
- package/src/components/Command/Command.module.css +1 -1
- package/src/components/ConfirmDialog/ConfirmDialog.module.css +2 -2
- package/src/components/ConfirmDialog/ConfirmDialog.tsx +28 -2
- package/src/components/ConfirmDialog/__tests__/ConfirmDialog.test.tsx +71 -3
- package/src/components/ConsentPrompt/ConsentPrompt.module.css +21 -0
- package/src/components/ConsentPrompt/ConsentPrompt.stories.tsx +31 -0
- package/src/components/ConsentPrompt/ConsentPrompt.tsx +66 -0
- package/src/components/ContextMenu/ContextMenu.tsx +1 -1
- package/src/components/DatePicker/DatePicker.module.css +1 -1
- package/src/components/DeviceOnlyGate/DeviceOnlyGate.tsx +58 -0
- package/src/components/DeviceOnlyGate/__tests__/DeviceOnlyGate.test.tsx +45 -0
- package/src/components/DeviceStorageKeyGate/DeviceStorageKeyGate.tsx +100 -0
- package/src/components/DeviceStorageKeyGate/__tests__/DeviceStorageKeyGate.test.tsx +119 -0
- package/src/components/Dialog/Dialog.module.css +130 -21
- package/src/components/Dialog/Dialog.stories.tsx +179 -2
- package/src/components/Dialog/Dialog.tsx +137 -94
- package/src/components/Dialog/__tests__/Dialog.test.tsx +190 -9
- package/src/components/DragHandleRow/DragHandleRow.tsx +2 -21
- package/src/components/Drawer/Drawer.module.css +36 -7
- package/src/components/Drawer/Drawer.stories.tsx +44 -0
- package/src/components/Drawer/Drawer.tsx +27 -66
- package/src/components/Drawer/__tests__/Drawer.test.tsx +55 -6
- package/src/components/GripIcon/GripIcon.tsx +27 -0
- package/src/components/Header/Header.module.css +62 -0
- package/src/components/Header/Header.stories.tsx +452 -0
- package/src/components/Header/Header.tsx +102 -0
- package/src/components/Header/__tests__/Header.test.tsx +104 -0
- package/src/components/HeaderFooterLayout/HeaderFooterLayout.module.css +21 -0
- package/src/components/HeaderFooterLayout/HeaderFooterLayout.stories.tsx +111 -0
- package/src/components/HeaderFooterLayout/HeaderFooterLayout.tsx +54 -0
- package/src/components/HeaderFooterLayout/__tests__/HeaderFooterLayout.test.tsx +58 -0
- package/src/components/Icon/icons/arrow-left-right.tsx +23 -0
- package/src/components/Icon/icons/bold.tsx +20 -0
- package/src/components/Icon/icons/calendar.tsx +4 -4
- package/src/components/Icon/icons/carrot.tsx +3 -3
- package/src/components/Icon/icons/circle-chevron-left.tsx +21 -0
- package/src/components/Icon/icons/code.tsx +21 -0
- package/src/components/Icon/icons/copy.tsx +21 -0
- package/src/components/Icon/icons/credit-card.tsx +21 -0
- package/src/components/Icon/icons/database.tsx +22 -0
- package/src/components/Icon/icons/download.tsx +22 -0
- package/src/components/Icon/icons/file-text.tsx +24 -0
- package/src/components/Icon/icons/folder-closed.tsx +21 -0
- package/src/components/Icon/icons/folder-open.tsx +20 -0
- package/src/components/Icon/icons/folder.tsx +20 -0
- package/src/components/Icon/icons/folders.tsx +21 -0
- package/src/components/Icon/icons/hat-glasses.tsx +24 -0
- package/src/components/Icon/icons/history.tsx +22 -0
- package/src/components/Icon/icons/inbox.tsx +21 -0
- package/src/components/Icon/icons/index.ts +169 -1
- package/src/components/Icon/icons/italic.tsx +22 -0
- package/src/components/Icon/icons/layers.tsx +22 -0
- package/src/components/Icon/icons/layout-dashboard.tsx +23 -0
- package/src/components/Icon/icons/layout-grid.tsx +23 -0
- package/src/components/Icon/icons/link.tsx +21 -0
- package/src/components/Icon/icons/list-ordered.tsx +25 -0
- package/src/components/Icon/icons/list.tsx +25 -0
- package/src/components/Icon/icons/luggage.tsx +24 -0
- package/src/components/Icon/icons/map-pin.tsx +21 -0
- package/src/components/Icon/icons/menu.tsx +22 -0
- package/src/components/Icon/icons/minus.tsx +20 -0
- package/src/components/Icon/icons/paint-bucket.tsx +23 -0
- package/src/components/Icon/icons/panel-left.tsx +21 -0
- package/src/components/Icon/icons/pin.tsx +21 -0
- package/src/components/Icon/icons/rectangle-ellipsis.tsx +23 -0
- package/src/components/Icon/icons/refresh-cw.tsx +23 -0
- package/src/components/Icon/icons/rotate-cw.tsx +21 -0
- package/src/components/Icon/icons/route.tsx +22 -0
- package/src/components/Icon/icons/send.tsx +21 -0
- package/src/components/Icon/icons/share-2.tsx +24 -0
- package/src/components/Icon/icons/sheet.tsx +24 -0
- package/src/components/Icon/icons/smartphone.tsx +21 -0
- package/src/components/Icon/icons/square-kanban.tsx +23 -0
- package/src/components/Icon/icons/table.tsx +23 -0
- package/src/components/Icon/icons/user-round-plus.tsx +23 -0
- package/src/components/Icon/icons/users.tsx +23 -0
- package/src/components/IconPicker/IconPicker.module.css +1 -1
- package/src/components/Input/Input.module.css +1 -1
- package/src/components/Input/Input.tsx +8 -2
- package/src/components/Kbd/Kbd.module.css +1 -1
- package/src/components/LegalLinks/LegalLinks.module.css +24 -0
- package/src/components/LegalLinks/LegalLinks.stories.tsx +22 -0
- package/src/components/LegalLinks/LegalLinks.tsx +40 -0
- package/src/components/Markdown/Markdown.module.css +73 -0
- package/src/components/Markdown/Markdown.stories.tsx +40 -0
- package/src/components/Markdown/Markdown.tsx +305 -0
- package/src/components/Markdown/__tests__/Markdown.test.tsx +144 -0
- package/src/components/Menu/Menu.module.css +1 -0
- package/src/components/Menu/Menu.tsx +72 -22
- package/src/components/Menu/__tests__/Menu.test.tsx +30 -0
- package/src/components/Menubar/Menubar.tsx +1 -1
- package/src/components/Message/Message.module.css +1 -1
- package/src/components/MessageScroller/MessageScroller.module.css +12 -1
- package/src/components/MessageScroller/MessageScroller.tsx +12 -0
- package/src/components/MobileAppsDrawer/MobileAppsDrawer.module.css +82 -0
- package/src/components/MobileAppsDrawer/MobileAppsDrawer.tsx +78 -0
- package/src/components/MobileAppsDrawer/__tests__/MobileAppsDrawer.test.tsx +80 -0
- package/src/components/MobileFooter/MobileFooter.module.css +73 -0
- package/src/components/MobileFooter/MobileFooter.stories.tsx +47 -0
- package/src/components/MobileFooter/MobileFooter.tsx +122 -0
- package/src/components/MobileFooter/__tests__/MobileFooter.test.tsx +129 -0
- package/src/components/MobileHeader/MobileHeader.module.css +76 -0
- package/src/components/MobileHeader/MobileHeader.stories.tsx +57 -0
- package/src/components/MobileHeader/MobileHeader.tsx +90 -0
- package/src/components/MobileHeader/__tests__/MobileHeader.test.tsx +113 -0
- package/src/components/NavList/NavList.module.css +130 -0
- package/src/components/NavList/NavList.tsx +136 -0
- package/src/components/NavList/__tests__/NavList.test.tsx +109 -0
- package/src/components/NavTabs/NavTabs.module.css +1 -1
- package/src/components/NavTabs/NavTabs.tsx +39 -11
- package/src/components/NotificationsPanel/NotificationsPanel.module.css +258 -0
- package/src/components/NotificationsPanel/NotificationsPanel.stories.tsx +61 -0
- package/src/components/NotificationsPanel/NotificationsPanel.tsx +187 -0
- package/src/components/NotificationsPanel/__tests__/NotificationsPanel.test.tsx +78 -0
- package/src/components/OfflineGate/OfflineGate.tsx +44 -0
- package/src/components/OfflineGate/__tests__/OfflineGate.test.tsx +66 -0
- package/src/components/OverlayHeader/OverlayHeader.module.css +1 -1
- package/src/components/OverlayHeader/OverlayHeader.tsx +19 -4
- package/src/components/OverlayHeader/__tests__/OverlayHeader.test.tsx +18 -0
- package/src/components/PageContainer/PageContainer.module.css +82 -0
- package/src/components/PageContainer/PageContainer.tsx +64 -0
- package/src/components/PageContainer/__tests__/PageContainer.test.tsx +70 -0
- package/src/components/PageHeader/PageHeader.module.css +54 -0
- package/src/components/PageHeader/PageHeader.tsx +157 -2
- package/src/components/PageHeader/__tests__/PageHeader.test.tsx +103 -0
- package/src/components/PageLayout/PageLayout.module.css +51 -0
- package/src/components/PageLayout/PageLayout.stories.tsx +73 -0
- package/src/components/PageLayout/PageLayout.tsx +51 -0
- package/src/components/PageLayout/__tests__/PageLayout.test.tsx +34 -0
- package/src/components/Popover/Popover.module.css +1 -1
- package/src/components/Popover/Popover.tsx +86 -4
- package/src/components/Popover/__tests__/Popover.test.tsx +165 -0
- package/src/components/QuantityStepper/QuantityStepper.module.css +1 -1
- package/src/components/Resizable/Resizable.module.css +3 -3
- package/src/components/ResponsiveSurface/ResponsiveSurface.tsx +24 -0
- package/src/components/ResponsiveSurface/__tests__/ResponsiveSurface.test.tsx +73 -0
- package/src/components/RootLayout/RootLayout.module.css +12 -0
- package/src/components/RootLayout/RootLayout.stories.tsx +125 -0
- package/src/components/RootLayout/RootLayout.tsx +185 -0
- package/src/components/RootLayout/__tests__/RootLayout.test.tsx +161 -0
- package/src/components/SegmentedControl/SegmentedControl.module.css +1 -1
- package/src/components/Select/Select.module.css +1 -1
- package/src/components/Sheet/Sheet.module.css +4 -1
- package/src/components/Sheet/Sheet.tsx +14 -56
- package/src/components/SplitPane/SplitPane.module.css +4 -4
- package/src/components/StatusBadge/StatusBadge.module.css +1 -1
- package/src/components/StepStrip/StepStrip.module.css +53 -0
- package/src/components/StepStrip/StepStrip.tsx +74 -0
- package/src/components/SuggestionInput/SuggestionInput.module.css +2 -2
- package/src/components/SwipableMobileCarousel/SwipableMobileCarousel.module.css +64 -0
- package/src/components/SwipableMobileCarousel/SwipableMobileCarousel.tsx +243 -0
- package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlide.tsx +35 -0
- package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideBody.tsx +42 -0
- package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideFooter.tsx +18 -0
- package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideHeader.tsx +21 -0
- package/src/components/SwipableMobileCarousel/SwipableMobileCarouselSlideParts.module.css +29 -0
- package/src/components/SwipableMobileCarousel/__tests__/SwipableMobileCarousel.test.tsx +214 -0
- package/src/components/SwipableMobileCarousel/__tests__/SwipableMobileCarouselDevGuard.test.tsx +61 -0
- package/src/components/SwipableMobileCarousel/context.ts +13 -0
- package/src/components/SwipableMobileCarouselDots/SwipableMobileCarouselDots.module.css +64 -0
- package/src/components/SwipableMobileCarouselDots/SwipableMobileCarouselDots.tsx +73 -0
- package/src/components/SwipableMobileCarouselDots/__tests__/SwipableMobileCarouselDots.test.tsx +63 -0
- package/src/components/SwipeStack/SwipeStack.module.css +101 -0
- package/src/components/SwipeStack/SwipeStack.tsx +199 -0
- package/src/components/SwipeStack/SwipeStackCard.tsx +22 -0
- package/src/components/SwipeStack/__tests__/SwipeStack.test.tsx +169 -0
- package/src/components/SystemBanner/SystemBanner.module.css +10 -0
- package/src/components/Table/Table.module.css +2 -2
- package/src/components/Tabs/Tabs.module.css +1 -1
- package/src/components/TagInput/TagInput.module.css +2 -2
- package/src/components/Textarea/Textarea.module.css +9 -1
- package/src/components/Textarea/Textarea.tsx +28 -5
- package/src/components/Textarea/__tests__/Textarea.test.tsx +23 -1
- package/src/components/ThreeColumnLayout/ThreeColumnLayout.module.css +35 -0
- package/src/components/ThreeColumnLayout/ThreeColumnLayout.stories.tsx +152 -0
- package/src/components/ThreeColumnLayout/ThreeColumnLayout.tsx +87 -0
- package/src/components/ThreeColumnLayout/__tests__/ThreeColumnLayout.test.tsx +78 -0
- package/src/components/Toast/Toast.module.css +62 -3
- package/src/components/Toast/Toast.stories.tsx +1 -1
- package/src/components/Tooltip/Tooltip.module.css +1 -1
- package/src/components/UserMenu/UserMenu.module.css +90 -0
- package/src/components/UserMenu/UserMenu.stories.tsx +49 -0
- package/src/components/UserMenu/UserMenu.tsx +132 -0
- package/src/components/UserMenu/__tests__/UserMenu.test.tsx +77 -0
- package/src/hooks/__tests__/useCarouselRouteSync.test.tsx +126 -0
- package/src/hooks/__tests__/useIsOffline.test.tsx +53 -0
- package/src/hooks/__tests__/useOfflineTileState.test.tsx +69 -0
- package/src/hooks/__tests__/usePublishShellChromeHeight.test.tsx +118 -0
- package/src/hooks/__tests__/useReorderSensors.test.ts +26 -0
- package/src/hooks/__tests__/useResponsiveLayout.test.tsx +87 -0
- package/src/hooks/__tests__/useSnapCarousel.test.tsx +175 -0
- package/src/hooks/__tests__/useSwipeReveal.test.tsx +110 -0
- package/src/hooks/__tests__/useSwipeStack.test.tsx +155 -0
- package/src/hooks/index.ts +27 -0
- package/src/hooks/useCarouselRouteSync.ts +92 -0
- package/src/hooks/useIsOffline.ts +41 -0
- package/src/hooks/useOfflineTileState.ts +45 -0
- package/src/hooks/usePublishShellChromeHeight.ts +96 -0
- package/src/hooks/useReorderSensors.ts +88 -0
- package/src/hooks/useResponsiveLayout.ts +36 -0
- package/src/hooks/useSnapCarousel.ts +284 -0
- package/src/hooks/useSwipeReveal.ts +107 -0
- package/src/hooks/useSwipeStack.ts +235 -0
- package/src/index.ts +124 -3
- package/src/overlay-shell.ts +159 -0
- package/src/stories/DesignSystemOverview.stories.tsx +933 -6
- package/src/stories/DeviceOnlyGate.stories.tsx +35 -0
- package/src/stories/DeviceStorageKeyGate.stories.tsx +57 -0
- package/src/stories/GripIcon.stories.tsx +29 -0
- package/src/stories/InteractionHooks.stories.tsx +483 -0
- package/src/stories/LayoutSystem.stories.tsx +639 -0
- package/src/stories/MenuEntries.stories.tsx +86 -0
- package/src/stories/MobilePatterns.stories.tsx +247 -2
- package/src/stories/NavList.stories.tsx +147 -0
- package/src/stories/NavTabs.stories.tsx +18 -0
- package/src/stories/OfflineGate.stories.tsx +42 -0
- package/src/stories/PageContainer.stories.tsx +82 -0
- package/src/stories/PageHeader.stories.tsx +65 -1
- package/src/stories/ResponsiveSurface.stories.tsx +47 -0
- package/src/stories/StepStrip.stories.tsx +76 -0
- package/src/stories/SwipableMobileCarousel.stories.tsx +362 -0
- package/src/stories/SwipeStack.stories.tsx +200 -0
- package/src/stories/Textarea.stories.tsx +12 -0
- package/src/stories/TokenGallery.stories.tsx +115 -0
- package/src/tokens/primitives.css +36 -0
- package/src/tokens/semantic.css +32 -0
- package/src/tokens/theme-presets.css +33 -0
- package/src/tokens/theme-presets.ts +72 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
.root {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
min-width: 100%;
|
|
5
|
+
min-height: 100%;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.header {
|
|
9
|
+
flex-shrink: 0;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.content {
|
|
13
|
+
flex: 1;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* ── Padding ────────────────────────────────────────────────────────────── */
|
|
17
|
+
/* Same four-step scale and --sv-page-gutter stand-down hook as
|
|
18
|
+
PageContainer (see that component's own CSS comment for the full
|
|
19
|
+
rationale) — kept identical so this can absorb PageContainer's role
|
|
20
|
+
later without a behavior change for existing consumers. */
|
|
21
|
+
|
|
22
|
+
.padNone {
|
|
23
|
+
padding: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.padSm {
|
|
27
|
+
padding: var(--sv-page-gutter, var(--sv-space-4));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.padMd {
|
|
31
|
+
padding: var(--sv-page-gutter, var(--sv-space-8));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.padLg {
|
|
35
|
+
padding: var(--sv-page-gutter, var(--sv-space-12));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Matches the breakpoint Dialog, MobileHeader, and MobileFooter already use. */
|
|
39
|
+
@media (max-width: 768px) {
|
|
40
|
+
.padSm {
|
|
41
|
+
padding: var(--sv-page-gutter, var(--sv-space-3));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.padMd {
|
|
45
|
+
padding: var(--sv-page-gutter, var(--sv-space-4));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.padLg {
|
|
49
|
+
padding: var(--sv-page-gutter, var(--sv-space-6));
|
|
50
|
+
}
|
|
51
|
+
}
|
package/dist/Popover.module.css
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
top: calc(100% + var(--sv-space-2));
|
|
9
9
|
z-index: 60;
|
|
10
10
|
background: var(--sv-color-surface);
|
|
11
|
-
border:
|
|
11
|
+
border: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
12
12
|
border-radius: var(--sv-radius-2xl);
|
|
13
13
|
box-shadow: var(--sv-shadow-popover);
|
|
14
14
|
/* auto, not hidden: Popover.tsx applies an inline max-height only when the
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
align-items: center;
|
|
4
4
|
gap: var(--sv-space-1);
|
|
5
5
|
padding: var(--sv-space-1);
|
|
6
|
-
border:
|
|
6
|
+
border: var(--sv-border-width-hairline) solid var(--sv-color-border-strong);
|
|
7
7
|
border-radius: var(--sv-radius-full);
|
|
8
8
|
background: var(--sv-color-surface-sunken);
|
|
9
9
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
width: 100%;
|
|
5
5
|
height: 100%;
|
|
6
6
|
min-height: 320px;
|
|
7
|
-
border:
|
|
7
|
+
border: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
8
8
|
border-radius: var(--sv-radius-lg);
|
|
9
9
|
overflow: hidden;
|
|
10
10
|
background: var(--sv-color-surface);
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
width: 12px;
|
|
28
28
|
padding: 0;
|
|
29
29
|
border: 0;
|
|
30
|
-
border-inline:
|
|
30
|
+
border-inline: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
31
31
|
cursor: col-resize;
|
|
32
32
|
background: var(--sv-color-surface-sunken);
|
|
33
33
|
}
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
width: 100%;
|
|
37
37
|
height: 12px;
|
|
38
38
|
border-inline: 0;
|
|
39
|
-
border-block:
|
|
39
|
+
border-block: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
40
40
|
cursor: row-resize;
|
|
41
41
|
}
|
|
42
42
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* A definite height, not min-height: ThreeColumnLayout/HeaderFooterLayout's
|
|
2
|
+
own .shell use height: 100% internally (fixed box, independently-
|
|
3
|
+
scrolling children via overflow-y: auto) — a percentage height only
|
|
4
|
+
resolves against an ancestor with a definite (not min-constrained)
|
|
5
|
+
height, so min-height here would leave their .shell unable to resolve
|
|
6
|
+
and collapse to content size. This doesn't clip taller content on its
|
|
7
|
+
own — nothing here sets overflow: hidden, so content taller than the
|
|
8
|
+
box simply overflows past it rather than being cut off. */
|
|
9
|
+
.root {
|
|
10
|
+
width: 100%;
|
|
11
|
+
height: 100%;
|
|
12
|
+
}
|
package/dist/Select.module.css
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
line-height: 1.5;
|
|
19
19
|
color: var(--sv-color-text-primary);
|
|
20
20
|
background-color: var(--sv-color-surface);
|
|
21
|
-
border:
|
|
21
|
+
border: var(--sv-border-width-hairline) solid var(--sv-color-border-strong);
|
|
22
22
|
border-radius: var(--sv-radius-md);
|
|
23
23
|
cursor: pointer;
|
|
24
24
|
/* Remove native OS chevron */
|
package/dist/Sheet.module.css
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/* Sheet — fills the same rect as a plugin's content area (between the shell's
|
|
2
2
|
* sticky header and footer nav — see --sv-shell-header-height /
|
|
3
|
-
* --sv-shell-footer-height, set by the shell
|
|
3
|
+
* --sv-shell-footer-height, set by the platform shell or, for a plugin that
|
|
4
|
+
* self-renders MobileHeader/MobileFooter instead (shellConfig.mobileHeader/
|
|
5
|
+
* mobileFooter: false), by that component itself — see
|
|
6
|
+
* usePublishShellChromeHeight), sliding in from an edge
|
|
4
7
|
* instead of Dialog's centered box or Drawer's partial-height sheet-over-
|
|
5
8
|
* scrim. z-index matches Dialog/Drawer's scrim so it layers consistently
|
|
6
9
|
* with any other overlay. No scrim of its own — see the component doc
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
minmax(0, calc(100% - var(--split-pane-primary-size, 50%)));
|
|
6
6
|
width: 100%;
|
|
7
7
|
min-height: 320px;
|
|
8
|
-
border:
|
|
8
|
+
border: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
9
9
|
border-radius: var(--sv-radius-lg);
|
|
10
10
|
overflow: hidden;
|
|
11
11
|
background: var(--sv-color-surface);
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
.pane + .pane {
|
|
28
|
-
border-left:
|
|
28
|
+
border-left: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
.handle {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
min-width: 12px;
|
|
35
35
|
padding: 0;
|
|
36
36
|
border: 0;
|
|
37
|
-
border-inline:
|
|
37
|
+
border-inline: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
38
38
|
cursor: col-resize;
|
|
39
39
|
background: var(--sv-color-surface-sunken);
|
|
40
40
|
}
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
.pane + .pane {
|
|
82
|
-
border-top:
|
|
82
|
+
border-top: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
83
83
|
border-left: 0;
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
min-height: 24px;
|
|
6
6
|
gap: var(--sv-space-1);
|
|
7
7
|
padding: 2px var(--sv-space-2);
|
|
8
|
-
border:
|
|
8
|
+
border: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
9
9
|
border-radius: var(--sv-radius-full);
|
|
10
10
|
font-family: var(--sv-font-family);
|
|
11
11
|
font-size: var(--sv-font-size-xs);
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
.strip {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: stretch;
|
|
4
|
+
overflow-x: auto;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.step {
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
flex-shrink: 0;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.connector {
|
|
14
|
+
width: var(--sv-space-4);
|
|
15
|
+
height: 2px;
|
|
16
|
+
flex-shrink: 0;
|
|
17
|
+
background: var(--sv-color-border);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.connectorDashed {
|
|
21
|
+
background-image: repeating-linear-gradient(
|
|
22
|
+
to right,
|
|
23
|
+
var(--sv-color-border) 0,
|
|
24
|
+
var(--sv-color-border) 4px,
|
|
25
|
+
transparent 4px,
|
|
26
|
+
transparent 7px
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.addChip {
|
|
31
|
+
all: unset;
|
|
32
|
+
box-sizing: border-box;
|
|
33
|
+
flex-shrink: 0;
|
|
34
|
+
display: flex;
|
|
35
|
+
align-items: center;
|
|
36
|
+
gap: var(--sv-space-1);
|
|
37
|
+
padding: var(--sv-space-3) var(--sv-space-4);
|
|
38
|
+
border: var(--sv-border-width-hairline) dashed var(--sv-color-border);
|
|
39
|
+
border-radius: var(--sv-radius-lg);
|
|
40
|
+
color: var(--sv-color-text-muted);
|
|
41
|
+
font-size: var(--sv-font-size-sm);
|
|
42
|
+
cursor: pointer;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.addChip:hover {
|
|
46
|
+
background: var(--sv-color-surface-sunken);
|
|
47
|
+
color: var(--sv-color-text-primary);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.addChip:focus-visible {
|
|
51
|
+
outline: 2px solid var(--sv-color-focus-ring);
|
|
52
|
+
outline-offset: 2px;
|
|
53
|
+
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
line-height: 1.5;
|
|
8
8
|
color: var(--sv-color-text-primary);
|
|
9
9
|
background-color: var(--sv-color-surface);
|
|
10
|
-
border:
|
|
10
|
+
border: var(--sv-border-width-hairline) solid var(--sv-color-border-strong);
|
|
11
11
|
border-radius: var(--sv-radius-md);
|
|
12
12
|
transition:
|
|
13
13
|
border-color 0.15s ease,
|
|
@@ -99,5 +99,5 @@
|
|
|
99
99
|
|
|
100
100
|
.divider {
|
|
101
101
|
margin: var(--sv-space-1) var(--sv-space-2);
|
|
102
|
-
border-top:
|
|
102
|
+
border-top: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
103
103
|
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
.wrap {
|
|
2
|
+
position: relative;
|
|
3
|
+
height: 100%;
|
|
4
|
+
width: 100%;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.scroller {
|
|
8
|
+
height: 100%;
|
|
9
|
+
width: 100%;
|
|
10
|
+
display: flex;
|
|
11
|
+
overflow-x: auto;
|
|
12
|
+
overflow-y: hidden;
|
|
13
|
+
scroll-snap-type: x mandatory;
|
|
14
|
+
/* Momentum + rubber-banding come from the browser's native scroll physics —
|
|
15
|
+
no hand-rolled pointer/touch dragging. Deliberately NOT
|
|
16
|
+
-webkit-overflow-scrolling: touch: that legacy iOS <13 hint promotes its
|
|
17
|
+
element to its own compositing layer for GPU-accelerated momentum
|
|
18
|
+
scroll, and that layer's paint order relative to siblings/fixed
|
|
19
|
+
descendants elsewhere in the tree isn't always reliable on real iOS
|
|
20
|
+
Safari (confirmed via sovereign-tasks' and sovereign-shopper's own
|
|
21
|
+
carousels, which hit and fixed this exact bug — a position:fixed
|
|
22
|
+
overlay opened above the scroller painted BEHIND it instead of above).
|
|
23
|
+
Removing it doesn't disable momentum scrolling on any iOS version this
|
|
24
|
+
platform realistically targets. */
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.slide {
|
|
28
|
+
flex: 0 0 100%;
|
|
29
|
+
width: 100%;
|
|
30
|
+
height: 100%;
|
|
31
|
+
min-width: 0;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
scroll-snap-align: start;
|
|
34
|
+
scroll-snap-stop: always;
|
|
35
|
+
/* Slide content is a flex column so Header/Footer stay their natural size
|
|
36
|
+
and Body (flex: 1 1 auto, min-height: 0) fills and scrolls the rest —
|
|
37
|
+
see SwipableMobileCarouselSlideParts.module.css. */
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-direction: column;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.indicatorSlot {
|
|
43
|
+
/* Overlays the bottom of .wrap rather than taking its own layout row —
|
|
44
|
+
matches both sovereign-tasks' and sovereign-shopper's existing dots
|
|
45
|
+
placement. Applied by the carousel itself around WHATEVER
|
|
46
|
+
renderIndicator returns (the default SwipableMobileCarouselDots or a
|
|
47
|
+
caller-supplied override) — a custom renderIndicator has no way to
|
|
48
|
+
import this module's locally-scoped class itself (CSS Modules classnames
|
|
49
|
+
aren't cross-file importable), so positioning must live here, not be
|
|
50
|
+
something each indicator implementation opts into. Previously this class
|
|
51
|
+
was only ever applied to the *default* indicator branch, which silently
|
|
52
|
+
left any custom renderIndicator unpositioned — a static, in-flow sibling
|
|
53
|
+
pushed below the full-height .scroller and clipped out of view instead
|
|
54
|
+
of overlaid on top of it. */
|
|
55
|
+
position: absolute;
|
|
56
|
+
left: 0;
|
|
57
|
+
right: 0;
|
|
58
|
+
bottom: var(--sv-space-3);
|
|
59
|
+
pointer-events: none;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.indicatorSlot > * {
|
|
63
|
+
pointer-events: auto;
|
|
64
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
.dots {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
justify-content: center;
|
|
5
|
+
gap: var(--sv-space-2);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* Opt-in — see the `density` prop doc comment. Shrinks both the gap and each
|
|
9
|
+
dot's own hit target (20px -> 16px) — for a carousel with enough slides
|
|
10
|
+
that even the space-1 gap alone still read as too wide. The visible 6px
|
|
11
|
+
dot is unchanged; only the surrounding tap-target box shrinks, via the
|
|
12
|
+
descendant override below rather than a second dot variant, so this stays
|
|
13
|
+
a pure CSS opt-in with no JS/prop plumbing beyond `density` itself. */
|
|
14
|
+
.dotsCompact {
|
|
15
|
+
gap: var(--sv-space-1);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.dotsCompact .dot {
|
|
19
|
+
width: 16px;
|
|
20
|
+
height: 16px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.dot {
|
|
24
|
+
/* A 6px visible dot is too small a hit target on its own — the button's
|
|
25
|
+
real box is larger (20px) with the dot itself painted by ::before and
|
|
26
|
+
centered inside, so tap area grows without changing the visible dot
|
|
27
|
+
size or the row's gap-based spacing math. */
|
|
28
|
+
position: relative;
|
|
29
|
+
width: 20px;
|
|
30
|
+
height: 20px;
|
|
31
|
+
padding: 0;
|
|
32
|
+
border: none;
|
|
33
|
+
background: transparent;
|
|
34
|
+
cursor: pointer;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.dot::before {
|
|
38
|
+
content: '';
|
|
39
|
+
position: absolute;
|
|
40
|
+
top: 50%;
|
|
41
|
+
left: 50%;
|
|
42
|
+
width: 6px;
|
|
43
|
+
height: 6px;
|
|
44
|
+
border-radius: 50%;
|
|
45
|
+
background: var(--sv-color-border-strong);
|
|
46
|
+
transform: translate(-50%, -50%);
|
|
47
|
+
transition: background 0.15s ease;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.dot:focus-visible {
|
|
51
|
+
outline: 2px solid var(--sv-color-focus-ring);
|
|
52
|
+
outline-offset: 2px;
|
|
53
|
+
border-radius: 50%;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.dotActive::before {
|
|
57
|
+
background: var(--sv-color-text-primary);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@media (hover: hover) {
|
|
61
|
+
.dot:not(.dotActive):hover::before {
|
|
62
|
+
background: var(--sv-color-text-muted);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
.header,
|
|
2
|
+
.footer {
|
|
3
|
+
flex: 0 0 auto;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.body {
|
|
7
|
+
flex: 1 1 auto;
|
|
8
|
+
min-height: 0; /* allow shrinking inside the slide's flex column, so it can scroll instead of overflowing */
|
|
9
|
+
overflow-y: auto;
|
|
10
|
+
overflow-x: hidden;
|
|
11
|
+
/* Deliberately does NOT set touch-action: pan-y here. touch-action's
|
|
12
|
+
effective value is the INTERSECTION of this element's and every
|
|
13
|
+
ancestor's value (docs/architecture-rules.md) — the ancestor .scroller
|
|
14
|
+
(SwipableMobileCarousel.module.css) needs the horizontal swipe gesture,
|
|
15
|
+
so pan-y here ∩ that horizontal handling would resolve to neither axis
|
|
16
|
+
working natively. Relying on the browser's default touch-action (auto)
|
|
17
|
+
here lets native gesture arbitration between the two nested scrollers
|
|
18
|
+
sort out which axis wins per-gesture — don't "fix" perceived nested-
|
|
19
|
+
scroll jank by adding pan-y; it silently breaks horizontal swipe instead. */
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.loading {
|
|
23
|
+
display: flex;
|
|
24
|
+
align-items: center;
|
|
25
|
+
justify-content: center;
|
|
26
|
+
height: 100%;
|
|
27
|
+
color: var(--sv-color-text-subtle);
|
|
28
|
+
font-size: var(--sv-font-size-sm);
|
|
29
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
.wrap {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
gap: var(--sv-space-3);
|
|
5
|
+
height: 100%;
|
|
6
|
+
width: 100%;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.stack {
|
|
10
|
+
position: relative;
|
|
11
|
+
flex: 1 1 auto;
|
|
12
|
+
min-height: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.peek {
|
|
16
|
+
position: absolute;
|
|
17
|
+
inset: 0;
|
|
18
|
+
transform: scale(0.94) translateY(var(--sv-space-3));
|
|
19
|
+
opacity: 0.6;
|
|
20
|
+
pointer-events: none;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.cardSlot {
|
|
24
|
+
position: absolute;
|
|
25
|
+
inset: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Styled directly rather than wrapping the Card component: Card doesn't
|
|
29
|
+
forward a ref, and this element must be the exact node useSwipeStack
|
|
30
|
+
translates/rotates as one unit — a Card wrapping an inner dragged div
|
|
31
|
+
would leave its own border/shadow visually static while only the inner
|
|
32
|
+
div moved. */
|
|
33
|
+
.card {
|
|
34
|
+
position: relative;
|
|
35
|
+
height: 100%;
|
|
36
|
+
width: 100%;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
background: var(--sv-color-surface-raised);
|
|
39
|
+
border: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
40
|
+
border-radius: var(--sv-radius-lg);
|
|
41
|
+
box-shadow: var(--sv-shadow-card);
|
|
42
|
+
touch-action: none; /* always overridden inline with useSwipeStack's computed value */
|
|
43
|
+
user-select: none;
|
|
44
|
+
cursor: grab;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.card:active {
|
|
48
|
+
cursor: grabbing;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.stamp {
|
|
52
|
+
position: absolute;
|
|
53
|
+
z-index: 1;
|
|
54
|
+
display: flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
gap: var(--sv-space-1);
|
|
57
|
+
padding: var(--sv-space-1) var(--sv-space-3);
|
|
58
|
+
border: 2px solid var(--sv-color-text-primary);
|
|
59
|
+
border-radius: var(--sv-radius-md);
|
|
60
|
+
background: var(--sv-color-surface-raised);
|
|
61
|
+
color: var(--sv-color-text-primary);
|
|
62
|
+
font-family: var(--sv-font-family);
|
|
63
|
+
font-size: var(--sv-font-size-sm);
|
|
64
|
+
font-weight: var(--sv-font-weight-semibold);
|
|
65
|
+
pointer-events: none;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.stampUp {
|
|
69
|
+
top: var(--sv-space-4);
|
|
70
|
+
left: 50%;
|
|
71
|
+
transform: translateX(-50%);
|
|
72
|
+
opacity: var(--sv-stack-progress-up, 0);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.stampDown {
|
|
76
|
+
bottom: var(--sv-space-4);
|
|
77
|
+
left: 50%;
|
|
78
|
+
transform: translateX(-50%);
|
|
79
|
+
opacity: var(--sv-stack-progress-down, 0);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.stampLeft {
|
|
83
|
+
top: var(--sv-space-4);
|
|
84
|
+
left: var(--sv-space-4);
|
|
85
|
+
transform: rotate(-8deg);
|
|
86
|
+
opacity: var(--sv-stack-progress-left, 0);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.stampRight {
|
|
90
|
+
top: var(--sv-space-4);
|
|
91
|
+
right: var(--sv-space-4);
|
|
92
|
+
transform: rotate(8deg);
|
|
93
|
+
opacity: var(--sv-stack-progress-right, 0);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.actions {
|
|
97
|
+
display: flex;
|
|
98
|
+
justify-content: center;
|
|
99
|
+
gap: var(--sv-space-2);
|
|
100
|
+
flex: 0 0 auto;
|
|
101
|
+
}
|
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
top: 0;
|
|
4
4
|
/* Sits above sidebar rail (z-index ~10) but below dialogs/overlays (z-index 100) */
|
|
5
5
|
z-index: 50;
|
|
6
|
+
/* WebKit momentum-scroll re-tiling quirk: a position: sticky element with
|
|
7
|
+
no compositing layer of its own can go stale/blank for a stretch of
|
|
8
|
+
frames during a fast scroll on iOS Safari instead of repainting at its
|
|
9
|
+
stuck position. translateZ(0) promotes it to its own layer, rasterized
|
|
10
|
+
independently of the scroller's tile grid. See
|
|
11
|
+
docs/architecture-rules.md — found and fixed across three sticky
|
|
12
|
+
elements in sovereign-tasks, applied here proactively since this
|
|
13
|
+
component is exactly the same pattern (sticky, inside scrolling
|
|
14
|
+
content). */
|
|
15
|
+
transform: translateZ(0);
|
|
6
16
|
display: flex;
|
|
7
17
|
align-items: center;
|
|
8
18
|
justify-content: center;
|
package/dist/Table.module.css
CHANGED
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
.head .row {
|
|
23
|
-
border-bottom:
|
|
23
|
+
border-bottom: var(--sv-border-width-hairline) solid var(--sv-color-border-strong);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
.body .row {
|
|
27
|
-
border-bottom:
|
|
27
|
+
border-bottom: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
.body .row:last-child {
|
package/dist/Tabs.module.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.tablist {
|
|
2
2
|
display: flex;
|
|
3
|
-
border-bottom:
|
|
3
|
+
border-bottom: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
4
4
|
/* Horizontal scroll on mobile — scrollbar hidden for clean appearance */
|
|
5
5
|
overflow-x: auto;
|
|
6
6
|
scrollbar-width: none;
|
package/dist/TagInput.module.css
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
padding: 5px var(--sv-space-2);
|
|
16
16
|
color: var(--sv-color-text-primary);
|
|
17
17
|
background: var(--sv-color-surface);
|
|
18
|
-
border:
|
|
18
|
+
border: var(--sv-border-width-hairline) solid var(--sv-color-border-strong);
|
|
19
19
|
border-radius: var(--sv-radius-md);
|
|
20
20
|
transition:
|
|
21
21
|
border-color 0.15s ease,
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
padding-inline: var(--sv-space-2) 2px;
|
|
51
51
|
color: var(--sv-color-text-primary);
|
|
52
52
|
background: var(--sv-color-surface-sunken);
|
|
53
|
-
border:
|
|
53
|
+
border: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
54
54
|
border-radius: var(--sv-radius-full);
|
|
55
55
|
font-family: var(--sv-font-family);
|
|
56
56
|
font-size: var(--sv-font-size-xs);
|
package/dist/Textarea.module.css
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
line-height: 1.5;
|
|
8
8
|
color: var(--sv-color-text-primary);
|
|
9
9
|
background-color: var(--sv-color-surface);
|
|
10
|
-
border:
|
|
10
|
+
border: var(--sv-border-width-hairline) solid var(--sv-color-border-strong);
|
|
11
11
|
border-radius: var(--sv-radius-md);
|
|
12
12
|
resize: vertical;
|
|
13
13
|
transition:
|
|
@@ -37,3 +37,11 @@
|
|
|
37
37
|
cursor: not-allowed;
|
|
38
38
|
resize: none;
|
|
39
39
|
}
|
|
40
|
+
|
|
41
|
+
/* Height is driven by the `autoGrow` layout effect (Textarea.tsx), not the
|
|
42
|
+
user — resize: none avoids a drag handle that would fight it; overflow
|
|
43
|
+
hidden avoids a scrollbar flashing on between the old and new height. */
|
|
44
|
+
.textareaAutoGrow {
|
|
45
|
+
overflow: hidden;
|
|
46
|
+
resize: none;
|
|
47
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
.shell {
|
|
2
|
+
display: flex;
|
|
3
|
+
height: 100%;
|
|
4
|
+
overflow: hidden;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.sidebar {
|
|
8
|
+
flex-shrink: 0;
|
|
9
|
+
overflow-y: auto;
|
|
10
|
+
background: var(--sv-color-surface-raised);
|
|
11
|
+
border-right: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
* `display: none`, not `width: 0` — a zero-width flex item still paints its
|
|
16
|
+
* own `border-right` as a 1px hairline down the edge of the viewport, which
|
|
17
|
+
* reads as a stray line rather than a hidden column.
|
|
18
|
+
*/
|
|
19
|
+
.sidebarHidden {
|
|
20
|
+
display: none;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.main {
|
|
24
|
+
flex: 1;
|
|
25
|
+
min-width: 0;
|
|
26
|
+
overflow-y: auto;
|
|
27
|
+
background: var(--sv-color-surface);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.detail {
|
|
31
|
+
flex-shrink: 0;
|
|
32
|
+
overflow-y: auto;
|
|
33
|
+
background: var(--sv-color-surface-raised);
|
|
34
|
+
border-left: var(--sv-border-width-hairline) solid var(--sv-color-border);
|
|
35
|
+
}
|