@noxlovette/material 0.3.2 → 0.4.0
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/README.md +1 -0
- package/dist/actions/index.d.ts +1 -0
- package/dist/actions/index.js +1 -0
- package/dist/actions/rovingFocusGroup.d.ts +20 -0
- package/dist/actions/rovingFocusGroup.js +82 -0
- package/dist/components/badge/theme.d.ts +8 -8
- package/dist/components/buttons/button-group/ButtonGroup.stories.svelte +83 -0
- package/dist/components/buttons/button-group/ButtonGroup.stories.svelte.d.ts +19 -0
- package/dist/components/buttons/button-group/ButtonGroup.svelte +10 -29
- package/dist/components/buttons/button-group/ButtonGroup.svelte.d.ts +7 -3
- package/dist/components/buttons/button-group/index.d.ts +0 -1
- package/dist/components/buttons/button-group/index.js +3 -1
- package/dist/components/buttons/button-group/theme.d.ts +17 -103
- package/dist/components/buttons/button-group/theme.js +7 -35
- package/dist/components/buttons/button-group/types.d.ts +9 -20
- package/dist/components/buttons/connected/ConnectedButtonGroup.stories.svelte +118 -0
- package/dist/components/buttons/connected/ConnectedButtonGroup.stories.svelte.d.ts +19 -0
- package/dist/components/buttons/connected/ConnectedButtonGroup.svelte +52 -0
- package/dist/components/buttons/connected/ConnectedButtonGroup.svelte.d.ts +12 -0
- package/dist/components/buttons/connected/ConnectedButtonGroupItem.svelte +37 -0
- package/dist/components/buttons/connected/ConnectedButtonGroupItem.svelte.d.ts +9 -0
- package/dist/components/buttons/connected/index.d.ts +3 -1
- package/dist/components/buttons/connected/index.js +3 -1
- package/dist/components/buttons/connected/theme.d.ts +125 -0
- package/dist/components/buttons/connected/theme.js +38 -0
- package/dist/components/buttons/connected/types.d.ts +32 -13
- package/dist/components/buttons/index.d.ts +1 -0
- package/dist/components/buttons/index.js +1 -0
- package/dist/components/buttons/split-button/SplitButton.stories.svelte +103 -0
- package/dist/components/buttons/split-button/SplitButton.stories.svelte.d.ts +19 -0
- package/dist/components/buttons/split-button/SplitButton.svelte +104 -0
- package/dist/components/buttons/split-button/SplitButton.svelte.d.ts +19 -0
- package/dist/components/buttons/split-button/index.d.ts +3 -0
- package/dist/components/{containers/panes → buttons/split-button}/index.js +1 -3
- package/dist/components/buttons/split-button/theme.d.ts +35 -0
- package/dist/components/buttons/split-button/theme.js +26 -0
- package/dist/components/buttons/split-button/types.d.ts +33 -0
- package/dist/components/buttons/theme.d.ts +142 -142
- package/dist/components/buttons/theme.js +2 -2
- package/dist/components/cards/Card.stories.svelte +58 -0
- package/dist/components/cards/Card.stories.svelte.d.ts +2 -17
- package/dist/components/cards/Card.svelte +76 -8
- package/dist/components/cards/theme.d.ts +26 -14
- package/dist/components/cards/theme.js +5 -1
- package/dist/components/cards/types.d.ts +39 -1
- package/dist/components/chips/Chip.stories.svelte +64 -0
- package/dist/components/chips/Chip.stories.svelte.d.ts +19 -0
- package/dist/components/chips/Chip.svelte +115 -0
- package/dist/components/chips/Chip.svelte.d.ts +14 -0
- package/dist/components/chips/index.d.ts +3 -0
- package/dist/components/chips/index.js +6 -0
- package/dist/components/chips/theme.d.ts +78 -0
- package/dist/components/chips/theme.js +72 -0
- package/dist/components/chips/types.d.ts +43 -0
- package/dist/components/containers/action-rail/ActionRail.stories.svelte +36 -0
- package/dist/components/containers/{panes/SinglePane.stories.svelte.d.ts → action-rail/ActionRail.stories.svelte.d.ts} +4 -4
- package/dist/components/containers/action-rail/ActionRail.svelte +35 -0
- package/dist/components/containers/action-rail/ActionRail.svelte.d.ts +17 -0
- package/dist/components/containers/action-rail/index.d.ts +3 -0
- package/dist/components/containers/action-rail/index.js +6 -0
- package/dist/components/containers/action-rail/theme.d.ts +45 -0
- package/dist/components/containers/action-rail/theme.js +26 -0
- package/dist/components/containers/action-rail/types.d.ts +20 -0
- package/dist/components/containers/action-rail/types.js +1 -0
- package/dist/components/containers/app/App.svelte +6 -6
- package/dist/components/containers/app/App.svelte.d.ts +4 -2
- package/dist/components/containers/app/theme.d.ts +1 -1
- package/dist/components/containers/app/types.d.ts +9 -4
- package/dist/components/containers/bottom-sheet/BottomSheet.stories.svelte +1 -1
- package/dist/components/containers/bottom-sheet/BottomSheet.svelte +1 -1
- package/dist/components/containers/context-menu/ContextMenu.stories.svelte +44 -0
- package/dist/components/containers/context-menu/ContextMenu.svelte +21 -5
- package/dist/components/containers/context-menu/ContextMenu.svelte.d.ts +11 -0
- package/dist/components/containers/context-menu/theme.d.ts +20 -2
- package/dist/components/containers/context-menu/theme.js +31 -8
- package/dist/components/containers/context-menu/types.d.ts +14 -2
- package/dist/components/containers/dialogue/theme.d.ts +20 -20
- package/dist/components/containers/divider/theme.d.ts +17 -17
- package/dist/components/containers/index.d.ts +2 -3
- package/dist/components/containers/index.js +2 -3
- package/dist/components/containers/link-preview/theme.d.ts +11 -11
- package/dist/components/containers/list/ListItem.stories.svelte +100 -0
- package/dist/components/containers/list/ListItem.stories.svelte.d.ts +19 -0
- package/dist/components/containers/list/theme.d.ts +14 -14
- package/dist/components/containers/list/theme.js +3 -3
- package/dist/components/containers/menu/Menu.stories.svelte +105 -3
- package/dist/components/containers/menu/Menu.stories.svelte.d.ts +2 -17
- package/dist/components/containers/menu/Menu.svelte +9 -7
- package/dist/components/containers/menu/MenuCheckboxItem.svelte +55 -0
- package/dist/components/containers/menu/MenuCheckboxItem.svelte.d.ts +25 -0
- package/dist/components/containers/menu/MenuGroup.svelte +43 -0
- package/dist/components/containers/menu/MenuGroup.svelte.d.ts +28 -0
- package/dist/components/containers/menu/MenuRadioGroup.svelte +39 -0
- package/dist/components/containers/menu/MenuRadioGroup.svelte.d.ts +27 -0
- package/dist/components/containers/menu/MenuRadioItem.svelte +49 -0
- package/dist/components/containers/menu/MenuRadioItem.svelte.d.ts +17 -0
- package/dist/components/containers/menu/MenuSub.svelte +91 -0
- package/dist/components/containers/menu/MenuSub.svelte.d.ts +29 -0
- package/dist/components/containers/menu/index.d.ts +7 -0
- package/dist/components/containers/menu/index.js +8 -0
- package/dist/components/containers/menu/menu-item/MenuItem.svelte +71 -0
- package/dist/components/containers/{menu-item → menu/menu-item}/MenuItem.svelte.d.ts +2 -1
- package/dist/components/containers/{menu-item → menu/menu-item}/types.d.ts +5 -1
- package/dist/components/containers/menu/menu-item/types.js +1 -0
- package/dist/components/containers/menu/theme.d.ts +68 -0
- package/dist/components/containers/menu/theme.js +36 -0
- package/dist/components/containers/menu/types.d.ts +113 -2
- package/dist/components/containers/pane/DraggablePane.stories.svelte +199 -0
- package/dist/components/containers/pane/DraggablePane.stories.svelte.d.ts +4 -0
- package/dist/components/containers/pane/DraggablePane.svelte +533 -0
- package/dist/components/containers/pane/DraggablePane.svelte.d.ts +29 -0
- package/dist/components/containers/pane/Pane.stories.svelte +104 -0
- package/dist/components/containers/pane/Pane.stories.svelte.d.ts +19 -0
- package/dist/components/containers/pane/Pane.svelte +78 -0
- package/dist/components/containers/pane/Pane.svelte.d.ts +18 -0
- package/dist/components/containers/pane/PaneGrid.stories.svelte +134 -0
- package/dist/components/containers/pane/PaneGrid.stories.svelte.d.ts +19 -0
- package/dist/components/containers/pane/PaneGrid.svelte +43 -0
- package/dist/components/containers/pane/PaneGrid.svelte.d.ts +13 -0
- package/dist/components/containers/pane/PaneHandle.svelte +90 -0
- package/dist/components/containers/pane/PaneHandle.svelte.d.ts +12 -0
- package/dist/components/containers/pane/dragStore.svelte.d.ts +16 -0
- package/dist/components/containers/pane/dragStore.svelte.js +38 -0
- package/dist/components/containers/pane/index.d.ts +8 -0
- package/dist/components/containers/pane/index.js +11 -0
- package/dist/components/containers/pane/resizeStore.svelte.d.ts +10 -0
- package/dist/components/containers/pane/resizeStore.svelte.js +30 -0
- package/dist/components/containers/pane/theme.d.ts +571 -0
- package/dist/components/containers/pane/theme.js +211 -0
- package/dist/components/containers/pane/types.d.ts +249 -0
- package/dist/components/containers/pane/types.js +1 -0
- package/dist/components/containers/popover/Popover.stories.svelte +4 -4
- package/dist/components/containers/popover/Popover.svelte +3 -1
- package/dist/components/containers/popover/theme.d.ts +20 -20
- package/dist/components/containers/popover/types.d.ts +6 -2
- package/dist/components/containers/scroll-area/theme.d.ts +2 -2
- package/dist/components/containers/side-sheet/SideSheet.stories.svelte +16 -24
- package/dist/components/containers/side-sheet/SideSheet.svelte +73 -7
- package/dist/components/containers/side-sheet/SideSheet.svelte.d.ts +5 -0
- package/dist/components/containers/stack/theme.d.ts +44 -44
- package/dist/components/date/DateField.stories.svelte +57 -0
- package/dist/components/{containers/panes/SplitPane.stories.svelte.d.ts → date/DateField.stories.svelte.d.ts} +4 -4
- package/dist/components/date/DateField.svelte +11 -2
- package/dist/components/date/DateRangeField.stories.svelte +53 -0
- package/dist/components/{containers/panes/SupportingPane.stories.svelte.d.ts → date/DateRangeField.stories.svelte.d.ts} +4 -4
- package/dist/components/date/DateRangeField.svelte +2 -1
- package/dist/components/date/theme.d.ts +73 -4
- package/dist/components/date/theme.js +95 -26
- package/dist/components/date/types.d.ts +5 -0
- package/dist/components/forms/checkbox/Checkbox.svelte +7 -9
- package/dist/components/forms/checkbox/theme.d.ts +8 -8
- package/dist/components/forms/checkbox/theme.js +31 -9
- package/dist/components/forms/command/Command.stories.svelte +86 -0
- package/dist/components/forms/command/Command.stories.svelte.d.ts +19 -0
- package/dist/components/forms/command/theme.d.ts +35 -35
- package/dist/components/forms/command/theme.js +4 -4
- package/dist/components/forms/pin/theme.d.ts +2 -2
- package/dist/components/forms/radio-group/theme.d.ts +2 -2
- package/dist/components/forms/search/theme.d.ts +8 -8
- package/dist/components/forms/select/Select.svelte +3 -2
- package/dist/components/forms/select/theme.d.ts +26 -2
- package/dist/components/forms/select/theme.js +56 -22
- package/dist/components/forms/slider/theme.d.ts +20 -20
- package/dist/components/forms/switch/theme.d.ts +2 -2
- package/dist/components/forms/textfield/Textfield.stories.svelte +22 -0
- package/dist/components/forms/textfield/Textfield.svelte +10 -1
- package/dist/components/forms/textfield/theme.d.ts +44 -2
- package/dist/components/forms/textfield/theme.js +56 -16
- package/dist/components/forms/toggle-group/ToggleGroup.svelte +2 -2
- package/dist/components/forms/toggle-group/ToggleGroup.svelte.d.ts +2 -2
- package/dist/components/forms/toggle-group/ToggleGroupItem.svelte +1 -1
- package/dist/components/forms/toggle-group/ToggleGroupItem.svelte.d.ts +1 -1
- package/dist/components/forms/toggle-group/theme.d.ts +16 -16
- package/dist/components/forms/toggle-group/types.d.ts +2 -2
- package/dist/components/forms/tooltip/Tooltip.stories.svelte +90 -0
- package/dist/components/forms/tooltip/Tooltip.stories.svelte.d.ts +19 -0
- package/dist/components/forms/tooltip/Tooltip.svelte +5 -4
- package/dist/components/forms/tooltip/theme.d.ts +5 -2
- package/dist/components/forms/tooltip/theme.js +6 -5
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/misc/Avatar.stories.svelte +63 -0
- package/dist/components/misc/Avatar.stories.svelte.d.ts +19 -0
- package/dist/components/misc/Avatar.svelte +35 -10
- package/dist/components/misc/DicebearAvatarBuilder.d.ts +59 -0
- package/dist/components/misc/DicebearAvatarBuilder.js +115 -0
- package/dist/components/misc/ThemeSettings.svelte +1 -1
- package/dist/components/misc/ThemeSwitcher.svelte +2 -2
- package/dist/components/misc/dicebearStyles.d.ts +21 -0
- package/dist/components/misc/dicebearStyles.js +169 -0
- package/dist/components/misc/index.d.ts +3 -0
- package/dist/components/misc/index.js +3 -0
- package/dist/components/misc/materialAvatarPalette.d.ts +6 -0
- package/dist/components/misc/materialAvatarPalette.js +44 -0
- package/dist/components/misc/theme.d.ts +20 -2
- package/dist/components/misc/theme.js +9 -3
- package/dist/components/misc/types.d.ts +20 -2
- package/dist/components/nav/appbar/AppBar.stories.svelte +1 -1
- package/dist/components/nav/appbar/AppBar.svelte +46 -15
- package/dist/components/nav/appbar/AppBar.svelte.d.ts +5 -0
- package/dist/components/nav/appbar/theme.d.ts +20 -14
- package/dist/components/nav/appbar/theme.js +11 -7
- package/dist/components/nav/appbar/types.d.ts +3 -1
- package/dist/components/nav/breadcrumb/Breadcrumb.stories.svelte +50 -0
- package/dist/components/nav/breadcrumb/Breadcrumb.stories.svelte.d.ts +19 -0
- package/dist/components/nav/breadcrumb/Breadcrumb.svelte +46 -0
- package/dist/components/nav/breadcrumb/Breadcrumb.svelte.d.ts +13 -0
- package/dist/components/nav/breadcrumb/index.d.ts +3 -0
- package/dist/components/nav/breadcrumb/index.js +6 -0
- package/dist/components/nav/breadcrumb/theme.d.ts +84 -0
- package/dist/components/nav/breadcrumb/theme.js +35 -0
- package/dist/components/nav/breadcrumb/types.d.ts +14 -0
- package/dist/components/nav/breadcrumb/types.js +1 -0
- package/dist/components/nav/index.d.ts +1 -0
- package/dist/components/nav/index.js +1 -0
- package/dist/components/nav/navbar/theme.d.ts +19 -19
- package/dist/components/nav/rail/Rail.stories.svelte +1 -5
- package/dist/components/nav/rail/Rail.svelte +3 -25
- package/dist/components/nav/rail/theme.d.ts +4 -4
- package/dist/components/nav/rail/types.d.ts +0 -5
- package/dist/components/nav/tabs/TabHolder.svelte +2 -1
- package/dist/components/nav/tabs/theme.d.ts +21 -21
- package/dist/components/nav/tabs/theme.js +6 -0
- package/dist/components/nav/tabs/types.d.ts +2 -2
- package/dist/components/pill/theme.d.ts +35 -35
- package/dist/components/snackbar/theme.d.ts +8 -8
- package/dist/components/table/Table.stories.svelte +267 -0
- package/dist/components/table/Table.stories.svelte.d.ts +19 -0
- package/dist/components/table/Table.svelte +1 -1
- package/dist/components/table/TableBody.svelte +16 -3
- package/dist/components/table/TableBody.svelte.d.ts +5 -1
- package/dist/components/table/TableRow.svelte +1 -1
- package/dist/components/table/theme.d.ts +2 -2
- package/dist/components/table/theme.js +2 -2
- package/dist/components/table/types.d.ts +7 -0
- package/dist/components/time/theme.d.ts +29 -29
- package/dist/components/time/theme.js +2 -2
- package/dist/components/toolbar/Toolbar.stories.svelte +71 -0
- package/dist/components/toolbar/Toolbar.stories.svelte.d.ts +19 -0
- package/dist/components/toolbar/Toolbar.svelte +19 -3
- package/dist/components/toolbar/Toolbar.svelte.d.ts +8 -2
- package/dist/components/toolbar/ToolbarButton.svelte +28 -4
- package/dist/components/toolbar/ToolbarDivider.svelte +4 -3
- package/dist/components/toolbar/ToolbarGroup.svelte +7 -2
- package/dist/components/toolbar/ToolbarGroupItem.svelte +29 -4
- package/dist/components/toolbar/ToolbarSection.svelte +35 -0
- package/dist/components/toolbar/ToolbarSection.svelte.d.ts +9 -0
- package/dist/components/toolbar/ToolbarSpacer.svelte +18 -0
- package/dist/components/toolbar/ToolbarSpacer.svelte.d.ts +9 -0
- package/dist/components/toolbar/index.d.ts +2 -0
- package/dist/components/toolbar/index.js +2 -0
- package/dist/components/toolbar/theme.d.ts +36 -21
- package/dist/components/toolbar/theme.js +27 -11
- package/dist/components/toolbar/types.d.ts +37 -4
- package/dist/components/typography/body/theme.d.ts +14 -14
- package/dist/components/typography/display/theme.d.ts +14 -14
- package/dist/components/typography/headline/theme.d.ts +14 -14
- package/dist/components/typography/kbd/Kbd.stories.svelte +41 -0
- package/dist/components/typography/kbd/Kbd.stories.svelte.d.ts +19 -0
- package/dist/components/typography/kbd/theme.d.ts +9 -9
- package/dist/components/typography/kbd/theme.js +2 -2
- package/dist/components/typography/label/theme.d.ts +14 -14
- package/dist/components/typography/title/theme.d.ts +14 -14
- package/dist/styles/component.css +126 -4
- package/dist/styles/motion.css +6 -3
- package/dist/utils/Layer.svelte +7 -3
- package/dist/utils/Theme.svelte +20 -20
- package/dist/utils/ThemeScript.svelte +1 -1
- package/dist/utils/icon/theme.d.ts +14 -14
- package/package.json +38 -37
- package/bin/install-skill.js +0 -29
- package/dist/components/buttons/button-group/ButtonGroupItem.svelte +0 -41
- package/dist/components/buttons/button-group/ButtonGroupItem.svelte.d.ts +0 -8
- package/dist/components/buttons/connected/ConnectedButtons.svelte +0 -14
- package/dist/components/buttons/connected/ConnectedButtons.svelte.d.ts +0 -8
- package/dist/components/containers/menu-item/MenuItem.svelte +0 -74
- package/dist/components/containers/merger/InputMerger.svelte +0 -29
- package/dist/components/containers/merger/InputMerger.svelte.d.ts +0 -14
- package/dist/components/containers/merger/index.d.ts +0 -1
- package/dist/components/containers/merger/index.js +0 -3
- package/dist/components/containers/panes/SinglePane.stories.svelte +0 -67
- package/dist/components/containers/panes/SinglePane.svelte +0 -32
- package/dist/components/containers/panes/SinglePane.svelte.d.ts +0 -5
- package/dist/components/containers/panes/SplitPane.stories.svelte +0 -124
- package/dist/components/containers/panes/SplitPane.svelte +0 -144
- package/dist/components/containers/panes/SplitPane.svelte.d.ts +0 -8
- package/dist/components/containers/panes/SupportingPane.stories.svelte +0 -113
- package/dist/components/containers/panes/SupportingPane.svelte +0 -175
- package/dist/components/containers/panes/SupportingPane.svelte.d.ts +0 -9
- package/dist/components/containers/panes/index.d.ts +0 -5
- package/dist/components/containers/panes/theme.d.ts +0 -490
- package/dist/components/containers/panes/theme.js +0 -185
- package/dist/components/containers/panes/types.d.ts +0 -108
- package/dist/components/nav/rail/RailNavContext.svelte +0 -14
- package/dist/components/nav/rail/RailNavContext.svelte.d.ts +0 -8
- /package/dist/components/{containers/menu-item → buttons/split-button}/types.js +0 -0
- /package/dist/components/{containers/panes → chips}/types.js +0 -0
- /package/dist/components/containers/{menu-item → menu/menu-item}/index.d.ts +0 -0
- /package/dist/components/containers/{menu-item → menu/menu-item}/index.js +0 -0
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
@component
|
|
3
|
-
SplitPane provides a two-column layout. Set `resizable={false}` for a static,
|
|
4
|
-
non-draggable sidebar (e.g. a docs nav) instead of a user-resizable split.
|
|
5
|
-
-->
|
|
6
|
-
<script lang="ts">
|
|
7
|
-
import type { SplitPaneProps } from './types.js';
|
|
8
|
-
import { splitPane } from './theme.js';
|
|
9
|
-
import { onDestroy, onMount } from 'svelte';
|
|
10
|
-
import clsx from 'clsx';
|
|
11
|
-
|
|
12
|
-
let dragging = $state(false);
|
|
13
|
-
|
|
14
|
-
let {
|
|
15
|
-
left,
|
|
16
|
-
right,
|
|
17
|
-
leftWidth = $bindable(396),
|
|
18
|
-
full = true,
|
|
19
|
-
rounded = true,
|
|
20
|
-
resizable = true,
|
|
21
|
-
minLeft = 280,
|
|
22
|
-
maxLeft = 720,
|
|
23
|
-
storageKey = 'splitpane:leftWidth',
|
|
24
|
-
persist = true,
|
|
25
|
-
onPaddingChange,
|
|
26
|
-
anchor = 'viewport',
|
|
27
|
-
mobilePane = 'right',
|
|
28
|
-
class: className,
|
|
29
|
-
leftClass,
|
|
30
|
-
rightClass
|
|
31
|
-
}: SplitPaneProps = $props();
|
|
32
|
-
|
|
33
|
-
const {
|
|
34
|
-
base,
|
|
35
|
-
left: lCls,
|
|
36
|
-
right: rCls,
|
|
37
|
-
handle: hCls,
|
|
38
|
-
handleGrip
|
|
39
|
-
} = $derived(splitPane({ full, anchor, rounded }));
|
|
40
|
-
|
|
41
|
-
const leftMobileClass = $derived(
|
|
42
|
-
mobilePane === 'left' ? 'block w-full md:w-[var(--splitpane-left-width)]' : ''
|
|
43
|
-
);
|
|
44
|
-
const rightMobileClass = $derived(mobilePane === 'left' ? 'hidden md:flex' : '');
|
|
45
|
-
|
|
46
|
-
const leftOffset = $derived(anchor === 'viewport' ? 'var(--splitpane-offset, 0px)' : '0px');
|
|
47
|
-
const handleOffset = $derived(
|
|
48
|
-
anchor === 'viewport'
|
|
49
|
-
? 'calc(var(--splitpane-left-width) + var(--splitpane-offset, 0px))'
|
|
50
|
-
: 'var(--splitpane-left-width)'
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
const clampWidth = (next: number) => Math.min(maxLeft, Math.max(minLeft, next));
|
|
54
|
-
|
|
55
|
-
const footerPaddingOffset = 80;
|
|
56
|
-
|
|
57
|
-
let dragStartX = 0;
|
|
58
|
-
let dragStartWidth = 0;
|
|
59
|
-
let mounted = false;
|
|
60
|
-
|
|
61
|
-
const startDrag = (event: PointerEvent) => {
|
|
62
|
-
dragging = true;
|
|
63
|
-
dragStartX = event.clientX;
|
|
64
|
-
dragStartWidth = leftWidth;
|
|
65
|
-
(event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
const moveDrag = (event: PointerEvent) => {
|
|
69
|
-
if (!dragging) return;
|
|
70
|
-
const delta = event.clientX - dragStartX;
|
|
71
|
-
leftWidth = clampWidth(dragStartWidth + delta);
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
const endDrag = () => {
|
|
75
|
-
dragging = false;
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
onMount(() => {
|
|
79
|
-
mounted = true;
|
|
80
|
-
|
|
81
|
-
if (resizable && persist && typeof localStorage !== 'undefined') {
|
|
82
|
-
const stored = Number(localStorage.getItem(storageKey));
|
|
83
|
-
if (!Number.isNaN(stored)) {
|
|
84
|
-
leftWidth = clampWidth(stored);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
onPaddingChange?.(leftWidth + footerPaddingOffset);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
onDestroy(() => {
|
|
92
|
-
onPaddingChange?.(0);
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
$effect(() => {
|
|
96
|
-
if (!mounted) return;
|
|
97
|
-
onPaddingChange?.(leftWidth + footerPaddingOffset);
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
$effect(() => {
|
|
101
|
-
if (!resizable || !persist || typeof localStorage === 'undefined') return;
|
|
102
|
-
localStorage.setItem(storageKey, String(leftWidth));
|
|
103
|
-
});
|
|
104
|
-
</script>
|
|
105
|
-
|
|
106
|
-
<div class={base({ class: clsx(className) })} style={`--splitpane-left-width: ${leftWidth}px;`}>
|
|
107
|
-
<!-- LEFT PANE -->
|
|
108
|
-
<div
|
|
109
|
-
class={lCls({ class: clsx(leftClass, leftMobileClass) })}
|
|
110
|
-
style={mobilePane === 'left'
|
|
111
|
-
? `left: ${leftOffset};`
|
|
112
|
-
: `width: var(--splitpane-left-width); left: ${leftOffset};`}
|
|
113
|
-
>
|
|
114
|
-
{@render left()}
|
|
115
|
-
</div>
|
|
116
|
-
|
|
117
|
-
<!-- DRAG HANDLE -->
|
|
118
|
-
{#if resizable}
|
|
119
|
-
<div
|
|
120
|
-
class={hCls()}
|
|
121
|
-
role="separator"
|
|
122
|
-
aria-orientation="vertical"
|
|
123
|
-
aria-valuenow={leftWidth}
|
|
124
|
-
aria-valuemin={minLeft}
|
|
125
|
-
aria-valuemax={maxLeft}
|
|
126
|
-
style={anchor === 'sticky' ? undefined : `left: ${handleOffset};`}
|
|
127
|
-
onpointerdown={startDrag}
|
|
128
|
-
onpointermove={moveDrag}
|
|
129
|
-
onpointerup={endDrag}
|
|
130
|
-
onpointercancel={endDrag}
|
|
131
|
-
>
|
|
132
|
-
<div
|
|
133
|
-
class={handleGrip({
|
|
134
|
-
class: clsx(dragging && 'w-0.5')
|
|
135
|
-
})}
|
|
136
|
-
></div>
|
|
137
|
-
</div>
|
|
138
|
-
{/if}
|
|
139
|
-
|
|
140
|
-
<!-- RIGHT PANE -->
|
|
141
|
-
<div class={rCls({ class: clsx(rightClass, rightMobileClass) })}>
|
|
142
|
-
{@render right()}
|
|
143
|
-
</div>
|
|
144
|
-
</div>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { SplitPaneProps } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* SplitPane provides a two-column layout. Set `resizable={false}` for a static,
|
|
4
|
-
* non-draggable sidebar (e.g. a docs nav) instead of a user-resizable split.
|
|
5
|
-
*/
|
|
6
|
-
declare const SplitPane: import("svelte").Component<SplitPaneProps, {}, "leftWidth">;
|
|
7
|
-
type SplitPane = ReturnType<typeof SplitPane>;
|
|
8
|
-
export default SplitPane;
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
<script module lang="ts">
|
|
2
|
-
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
-
import SupportingPane from './SupportingPane.svelte';
|
|
4
|
-
|
|
5
|
-
const { Story } = defineMeta({
|
|
6
|
-
title: 'Containers/Supporting Pane',
|
|
7
|
-
component: SupportingPane,
|
|
8
|
-
argTypes: {
|
|
9
|
-
anchor: {
|
|
10
|
-
control: 'select',
|
|
11
|
-
options: ['viewport', 'parent']
|
|
12
|
-
},
|
|
13
|
-
position: {
|
|
14
|
-
control: 'select',
|
|
15
|
-
options: ['left', 'right']
|
|
16
|
-
},
|
|
17
|
-
centered: { control: 'boolean' },
|
|
18
|
-
rounded: { control: 'boolean' },
|
|
19
|
-
full: { control: 'boolean' },
|
|
20
|
-
gap: {
|
|
21
|
-
control: 'select',
|
|
22
|
-
options: ['none', 'sm', 'md', 'lg']
|
|
23
|
-
},
|
|
24
|
-
collapsible: { control: 'boolean' },
|
|
25
|
-
supportingWidth: { control: 'number' },
|
|
26
|
-
mobileSheet: { control: 'boolean' }
|
|
27
|
-
},
|
|
28
|
-
args: {
|
|
29
|
-
anchor: 'parent',
|
|
30
|
-
position: 'right',
|
|
31
|
-
centered: false,
|
|
32
|
-
rounded: false,
|
|
33
|
-
full: false,
|
|
34
|
-
gap: 'md',
|
|
35
|
-
collapsible: false,
|
|
36
|
-
supportingWidth: 320,
|
|
37
|
-
mobileSheet: false
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
</script>
|
|
41
|
-
|
|
42
|
-
<!--
|
|
43
|
-
anchor="parent" demos meaningfully in a bounded box (classic sticky-while-
|
|
44
|
-
scrolling-the-page behaviour). anchor="viewport" — used by the docs pages'
|
|
45
|
-
own "On this page" TOC — fixes the supporting pane to the true browser edge,
|
|
46
|
-
which only reads correctly on a real scrolling page, not inside Storybook's
|
|
47
|
-
iframe canvas.
|
|
48
|
-
-->
|
|
49
|
-
<Story name="Playground">
|
|
50
|
-
{#snippet template(args)}
|
|
51
|
-
<SupportingPane {...args}>
|
|
52
|
-
{#snippet main()}
|
|
53
|
-
<div class="flex flex-col gap-4 p-4">
|
|
54
|
-
{#each Array(6) as _, i}
|
|
55
|
-
<div class="bg-md-sys-color-surface-container-high rounded-lg p-6">
|
|
56
|
-
Main content block {i + 1}
|
|
57
|
-
</div>
|
|
58
|
-
{/each}
|
|
59
|
-
</div>
|
|
60
|
-
{/snippet}
|
|
61
|
-
{#snippet supporting()}
|
|
62
|
-
<div class="bg-md-sys-color-surface-container rounded-lg p-4">
|
|
63
|
-
<p class="md-sys-typescale-title-small mb-2">Supporting content</p>
|
|
64
|
-
<p class="text-md-sys-color-on-surface-variant text-sm">
|
|
65
|
-
Fixed-width side panel — e.g. a table of contents or contextual actions.
|
|
66
|
-
</p>
|
|
67
|
-
</div>
|
|
68
|
-
{/snippet}
|
|
69
|
-
</SupportingPane>
|
|
70
|
-
{/snippet}
|
|
71
|
-
</Story>
|
|
72
|
-
|
|
73
|
-
<Story name="Collapsible" asChild>
|
|
74
|
-
<SupportingPane anchor="parent" position="right" collapsible>
|
|
75
|
-
{#snippet main()}
|
|
76
|
-
<div class="flex flex-col gap-4 p-4">
|
|
77
|
-
{#each Array(4) as _, i}
|
|
78
|
-
<div class="bg-md-sys-color-surface-container-high rounded-lg p-6">
|
|
79
|
-
Main content block {i + 1}
|
|
80
|
-
</div>
|
|
81
|
-
{/each}
|
|
82
|
-
</div>
|
|
83
|
-
{/snippet}
|
|
84
|
-
{#snippet supporting()}
|
|
85
|
-
<div class="bg-md-sys-color-surface-container rounded-lg p-4">
|
|
86
|
-
<p class="md-sys-typescale-title-small mb-2">Collapsible panel</p>
|
|
87
|
-
<p class="text-md-sys-color-on-surface-variant text-sm">
|
|
88
|
-
A toggle button appears over the main pane to hide/show this panel (desktop only).
|
|
89
|
-
</p>
|
|
90
|
-
</div>
|
|
91
|
-
{/snippet}
|
|
92
|
-
</SupportingPane>
|
|
93
|
-
</Story>
|
|
94
|
-
|
|
95
|
-
<Story name="Position Left" asChild>
|
|
96
|
-
<SupportingPane anchor="parent" position="left">
|
|
97
|
-
{#snippet main()}
|
|
98
|
-
<div class="flex flex-col gap-4 p-4">
|
|
99
|
-
{#each Array(4) as _, i}
|
|
100
|
-
<div class="bg-md-sys-color-surface-container-high rounded-lg p-6">
|
|
101
|
-
Main content block {i + 1}
|
|
102
|
-
</div>
|
|
103
|
-
{/each}
|
|
104
|
-
</div>
|
|
105
|
-
{/snippet}
|
|
106
|
-
{#snippet supporting()}
|
|
107
|
-
<div class="bg-md-sys-color-surface-container rounded-lg p-4">
|
|
108
|
-
<p class="md-sys-typescale-title-small mb-2">Supporting content</p>
|
|
109
|
-
<p class="text-md-sys-color-on-surface-variant text-sm">Panel rendered on the left.</p>
|
|
110
|
-
</div>
|
|
111
|
-
{/snippet}
|
|
112
|
-
</SupportingPane>
|
|
113
|
-
</Story>
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
@component
|
|
3
|
-
SupportingPane provides a layout with a main content area and a supporting side pane.
|
|
4
|
-
|
|
5
|
-
@see https://m3.material.io/foundations/layout/canonical-layouts/supporting-pane
|
|
6
|
-
-->
|
|
7
|
-
<script lang="ts">
|
|
8
|
-
import clsx from 'clsx';
|
|
9
|
-
import type { SupportingPaneProps } from './types.js';
|
|
10
|
-
import { supportingPane } from './theme.js';
|
|
11
|
-
import ButtonIcon from '../../buttons/ButtonIcon.svelte';
|
|
12
|
-
import {
|
|
13
|
-
easeEmphasized,
|
|
14
|
-
easeEmphasizedAccel,
|
|
15
|
-
easeEmphasizedDecel
|
|
16
|
-
} from '../../../animation/easing.js';
|
|
17
|
-
import { fade } from 'svelte/transition';
|
|
18
|
-
import type { TransitionConfig } from 'svelte/transition';
|
|
19
|
-
|
|
20
|
-
function slideWidth(node: HTMLElement): TransitionConfig {
|
|
21
|
-
const width = node.offsetWidth;
|
|
22
|
-
return {
|
|
23
|
-
duration: 500,
|
|
24
|
-
easing: easeEmphasized,
|
|
25
|
-
css: (t) => `width: ${t * width}px; min-width: 0; overflow: hidden;`
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function sheetIn(_node: HTMLElement): TransitionConfig {
|
|
30
|
-
return {
|
|
31
|
-
duration: 500,
|
|
32
|
-
easing: easeEmphasizedDecel,
|
|
33
|
-
css: (t) => `transform: translateY(${(1 - t) * 100}%);`
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function sheetOut(_node: HTMLElement): TransitionConfig {
|
|
38
|
-
return {
|
|
39
|
-
duration: 280,
|
|
40
|
-
easing: easeEmphasizedAccel,
|
|
41
|
-
css: (t) => `transform: translateY(${(1 - t) * 100}%);`
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const {
|
|
46
|
-
main,
|
|
47
|
-
supporting,
|
|
48
|
-
anchor = 'viewport',
|
|
49
|
-
position = 'right',
|
|
50
|
-
centered = false,
|
|
51
|
-
rounded = true,
|
|
52
|
-
gap = 'md',
|
|
53
|
-
class: className,
|
|
54
|
-
mainClass,
|
|
55
|
-
full = true,
|
|
56
|
-
supportingClass,
|
|
57
|
-
collapsible,
|
|
58
|
-
supportingWidth = 320,
|
|
59
|
-
supportingTop = 0,
|
|
60
|
-
mobileSheet = false,
|
|
61
|
-
mobileSheetIcon = 'info',
|
|
62
|
-
mobileTriggerClass
|
|
63
|
-
}: SupportingPaneProps = $props();
|
|
64
|
-
|
|
65
|
-
let supportingVisible = $state(true);
|
|
66
|
-
let mobileSheetOpen = $state(false);
|
|
67
|
-
let isLargeScreen = $state(false);
|
|
68
|
-
const supportingId = 'supporting-pane';
|
|
69
|
-
|
|
70
|
-
$effect(() => {
|
|
71
|
-
const mq = window.matchMedia('(min-width: 1024px)');
|
|
72
|
-
isLargeScreen = mq.matches;
|
|
73
|
-
const handler = (e: MediaQueryListEvent) => {
|
|
74
|
-
isLargeScreen = e.matches;
|
|
75
|
-
};
|
|
76
|
-
mq.addEventListener('change', handler);
|
|
77
|
-
return () => mq.removeEventListener('change', handler);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
const {
|
|
81
|
-
base,
|
|
82
|
-
main: mainCls,
|
|
83
|
-
supporting: supportingCls
|
|
84
|
-
} = $derived(supportingPane({ anchor, position, centered, full, rounded, gap }));
|
|
85
|
-
|
|
86
|
-
const cssVars = $derived(
|
|
87
|
-
anchor === 'viewport'
|
|
88
|
-
? `--supporting-pane-width: ${supportingWidth}px; --supporting-pane-top: ${supportingTop}px;`
|
|
89
|
-
: ''
|
|
90
|
-
);
|
|
91
|
-
|
|
92
|
-
const mainViewportStyle = $derived(
|
|
93
|
-
anchor === 'viewport' && isLargeScreen
|
|
94
|
-
? `transition: margin-${position === 'right' ? 'right' : 'left'} ${supportingVisible ? '500ms' : '280ms'} cubic-bezier(0.2, 0, 0, 1); margin-${position === 'right' ? 'right' : 'left'}: ${supportingVisible ? supportingWidth : 0}px;`
|
|
95
|
-
: ''
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
const inlineSupportingClass = $derived(mobileSheet ? 'hidden lg:block' : '');
|
|
99
|
-
</script>
|
|
100
|
-
|
|
101
|
-
<div class={base({ class: clsx(className) })} style={cssVars}>
|
|
102
|
-
<div class={mainCls({ class: clsx('relative', mainClass) })} style={mainViewportStyle}>
|
|
103
|
-
{#if collapsible}
|
|
104
|
-
<div class="top-3 right-3 z-10 hidden h-12 w-12 lg:absolute lg:block">
|
|
105
|
-
<ButtonIcon
|
|
106
|
-
type="button"
|
|
107
|
-
variant="elevated"
|
|
108
|
-
tooltipContent={supportingVisible ? 'Скрыть панель' : 'Показать панель'}
|
|
109
|
-
size="xs"
|
|
110
|
-
iconProps={{
|
|
111
|
-
name: supportingVisible ? 'right_panel_close' : 'right_panel_open'
|
|
112
|
-
}}
|
|
113
|
-
aria-controls={supportingId}
|
|
114
|
-
aria-expanded={supportingVisible}
|
|
115
|
-
aria-label={supportingVisible ? 'Hide supporting pane' : 'Show supporting pane'}
|
|
116
|
-
onclick={() => {
|
|
117
|
-
supportingVisible = !supportingVisible;
|
|
118
|
-
}}
|
|
119
|
-
/>
|
|
120
|
-
</div>
|
|
121
|
-
{/if}
|
|
122
|
-
{@render main()}
|
|
123
|
-
{#if mobileSheet}
|
|
124
|
-
<ButtonIcon
|
|
125
|
-
class={clsx('fixed right-4 bottom-6 z-30 lg:hidden', mobileTriggerClass)}
|
|
126
|
-
type="button"
|
|
127
|
-
variant="tonal"
|
|
128
|
-
iconProps={{ name: mobileSheetIcon }}
|
|
129
|
-
aria-label="Open supporting panel"
|
|
130
|
-
onclick={() => (mobileSheetOpen = true)}
|
|
131
|
-
/>
|
|
132
|
-
{/if}
|
|
133
|
-
</div>
|
|
134
|
-
|
|
135
|
-
{#if supportingVisible}
|
|
136
|
-
<aside
|
|
137
|
-
transition:slideWidth
|
|
138
|
-
id={supportingId}
|
|
139
|
-
class={supportingCls({
|
|
140
|
-
class: clsx(supportingClass, inlineSupportingClass)
|
|
141
|
-
})}
|
|
142
|
-
data-position={position}
|
|
143
|
-
>
|
|
144
|
-
{@render supporting()}
|
|
145
|
-
</aside>
|
|
146
|
-
{/if}
|
|
147
|
-
</div>
|
|
148
|
-
|
|
149
|
-
{#if mobileSheet && mobileSheetOpen}
|
|
150
|
-
<!-- Scrim -->
|
|
151
|
-
<div
|
|
152
|
-
class="bg-md-sys-color-scrim/40 fixed inset-0 z-40 lg:hidden"
|
|
153
|
-
transition:fade={{ duration: 220 }}
|
|
154
|
-
onclick={() => (mobileSheetOpen = false)}
|
|
155
|
-
aria-hidden="true"
|
|
156
|
-
></div>
|
|
157
|
-
|
|
158
|
-
<!-- Sheet -->
|
|
159
|
-
<div
|
|
160
|
-
class="bg-md-sys-color-surface-container-low fixed inset-x-0 bottom-0 z-50 max-h-[85dvh] scrollbar-none overflow-y-auto rounded-t-[28px] pb-[env(safe-area-inset-bottom)] lg:hidden"
|
|
161
|
-
in:sheetIn
|
|
162
|
-
out:sheetOut
|
|
163
|
-
role="dialog"
|
|
164
|
-
aria-modal="true"
|
|
165
|
-
>
|
|
166
|
-
<button
|
|
167
|
-
class="flex w-full cursor-pointer items-center justify-center pt-4 pb-2"
|
|
168
|
-
aria-label="Close supporting panel"
|
|
169
|
-
onclick={() => (mobileSheetOpen = false)}
|
|
170
|
-
>
|
|
171
|
-
<div class="bg-md-sys-color-on-surface-variant/40 h-1 w-8 rounded-full"></div>
|
|
172
|
-
</button>
|
|
173
|
-
{@render supporting()}
|
|
174
|
-
</div>
|
|
175
|
-
{/if}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { SupportingPaneProps } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* SupportingPane provides a layout with a main content area and a supporting side pane.
|
|
4
|
-
*
|
|
5
|
-
* @see https://m3.material.io/foundations/layout/canonical-layouts/supporting-pane
|
|
6
|
-
*/
|
|
7
|
-
declare const SupportingPane: import("svelte").Component<SupportingPaneProps, {}, "">;
|
|
8
|
-
type SupportingPane = ReturnType<typeof SupportingPane>;
|
|
9
|
-
export default SupportingPane;
|