@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
|
@@ -2,16 +2,16 @@ import { type VariantProps } from 'tailwind-variants';
|
|
|
2
2
|
export type LinkPreviewVariants = VariantProps<typeof linkPreview>;
|
|
3
3
|
export declare const linkPreview: import("tailwind-variants").TVReturnType<{
|
|
4
4
|
[key: string]: {
|
|
5
|
-
[key: string]: import("tailwind-
|
|
6
|
-
base?: import("tailwind-
|
|
7
|
-
content?: import("tailwind-
|
|
5
|
+
[key: string]: import("tailwind-variants").ClassValue | {
|
|
6
|
+
base?: import("tailwind-variants").ClassValue;
|
|
7
|
+
content?: import("tailwind-variants").ClassValue;
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
10
|
} | {
|
|
11
11
|
[x: string]: {
|
|
12
|
-
[x: string]: import("tailwind-
|
|
13
|
-
base?: import("tailwind-
|
|
14
|
-
content?: import("tailwind-
|
|
12
|
+
[x: string]: import("tailwind-variants").ClassValue | {
|
|
13
|
+
base?: import("tailwind-variants").ClassValue;
|
|
14
|
+
content?: import("tailwind-variants").ClassValue;
|
|
15
15
|
};
|
|
16
16
|
};
|
|
17
17
|
} | {}, {
|
|
@@ -19,15 +19,15 @@ export declare const linkPreview: import("tailwind-variants").TVReturnType<{
|
|
|
19
19
|
content: string;
|
|
20
20
|
}, undefined, {
|
|
21
21
|
[key: string]: {
|
|
22
|
-
[key: string]: import("tailwind-
|
|
23
|
-
base?: import("tailwind-
|
|
24
|
-
content?: import("tailwind-
|
|
22
|
+
[key: string]: import("tailwind-variants").ClassValue | {
|
|
23
|
+
base?: import("tailwind-variants").ClassValue;
|
|
24
|
+
content?: import("tailwind-variants").ClassValue;
|
|
25
25
|
};
|
|
26
26
|
};
|
|
27
27
|
} | {}, {
|
|
28
28
|
base: string;
|
|
29
29
|
content: string;
|
|
30
|
-
}, import("tailwind-variants").
|
|
30
|
+
}, import("tailwind-variants").TVReturnTypeLike<unknown, {
|
|
31
31
|
base: string;
|
|
32
32
|
content: string;
|
|
33
|
-
}
|
|
33
|
+
}>>;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import ListItem from './ListItem.svelte';
|
|
4
|
+
import Icon from '../../../utils/icon/Icon.svelte';
|
|
5
|
+
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
title: 'Containers/List Item',
|
|
8
|
+
component: ListItem,
|
|
9
|
+
argTypes: {
|
|
10
|
+
headline: { control: 'text' },
|
|
11
|
+
overline: { control: 'text' },
|
|
12
|
+
supporting: { control: 'text' },
|
|
13
|
+
selected: { control: 'boolean' }
|
|
14
|
+
},
|
|
15
|
+
args: {
|
|
16
|
+
headline: 'Headline',
|
|
17
|
+
overline: '',
|
|
18
|
+
supporting: '',
|
|
19
|
+
selected: false
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<Story name="Playground">
|
|
25
|
+
{#snippet template(args)}
|
|
26
|
+
<ul class="w-80">
|
|
27
|
+
<ListItem
|
|
28
|
+
headline={args.headline}
|
|
29
|
+
overline={args.overline}
|
|
30
|
+
supporting={args.supporting}
|
|
31
|
+
selected={args.selected}
|
|
32
|
+
/>
|
|
33
|
+
</ul>
|
|
34
|
+
{/snippet}
|
|
35
|
+
</Story>
|
|
36
|
+
|
|
37
|
+
<Story name="One Line" asChild>
|
|
38
|
+
<ul class="w-80">
|
|
39
|
+
<ListItem headline="Headline" />
|
|
40
|
+
</ul>
|
|
41
|
+
</Story>
|
|
42
|
+
|
|
43
|
+
<Story name="Two Line" asChild>
|
|
44
|
+
<ul class="w-80">
|
|
45
|
+
<ListItem headline="Headline" supporting="Supporting text that describes the item" />
|
|
46
|
+
</ul>
|
|
47
|
+
</Story>
|
|
48
|
+
|
|
49
|
+
<Story name="Three Line" asChild>
|
|
50
|
+
<ul class="w-80">
|
|
51
|
+
<ListItem
|
|
52
|
+
overline="Overline"
|
|
53
|
+
headline="Headline"
|
|
54
|
+
supporting="Supporting text that spans up to two lines before it gets clipped"
|
|
55
|
+
/>
|
|
56
|
+
</ul>
|
|
57
|
+
</Story>
|
|
58
|
+
|
|
59
|
+
<Story name="With Leading Icon" asChild>
|
|
60
|
+
<ul class="w-80">
|
|
61
|
+
<ListItem headline="Headline" supporting="Supporting text">
|
|
62
|
+
{#snippet leading()}
|
|
63
|
+
<Icon name="folder" />
|
|
64
|
+
{/snippet}
|
|
65
|
+
</ListItem>
|
|
66
|
+
</ul>
|
|
67
|
+
</Story>
|
|
68
|
+
|
|
69
|
+
<Story name="With Trailing and Badge" asChild>
|
|
70
|
+
<ul class="w-80">
|
|
71
|
+
<ListItem headline="Headline" supporting="Supporting text" badge={3}>
|
|
72
|
+
{#snippet leading()}
|
|
73
|
+
<Icon name="inbox" />
|
|
74
|
+
{/snippet}
|
|
75
|
+
{#snippet trailing()}
|
|
76
|
+
<Icon name="chevron_right" />
|
|
77
|
+
{/snippet}
|
|
78
|
+
</ListItem>
|
|
79
|
+
</ul>
|
|
80
|
+
</Story>
|
|
81
|
+
|
|
82
|
+
<Story name="Selected" asChild>
|
|
83
|
+
<ul class="w-80">
|
|
84
|
+
<ListItem headline="Headline" supporting="Supporting text" selected>
|
|
85
|
+
{#snippet leading()}
|
|
86
|
+
<Icon name="check_circle" />
|
|
87
|
+
{/snippet}
|
|
88
|
+
</ListItem>
|
|
89
|
+
</ul>
|
|
90
|
+
</Story>
|
|
91
|
+
|
|
92
|
+
<Story name="As Link" asChild>
|
|
93
|
+
<ul class="w-80">
|
|
94
|
+
<ListItem headline="Headline" supporting="Navigates on click" href="#">
|
|
95
|
+
{#snippet leading()}
|
|
96
|
+
<Icon name="link" />
|
|
97
|
+
{/snippet}
|
|
98
|
+
</ListItem>
|
|
99
|
+
</ul>
|
|
100
|
+
</Story>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import ListItem from './ListItem.svelte';
|
|
2
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
3
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
+
$$bindings?: Bindings;
|
|
5
|
+
} & Exports;
|
|
6
|
+
(internal: unknown, props: {
|
|
7
|
+
$$events?: Events;
|
|
8
|
+
$$slots?: Slots;
|
|
9
|
+
}): Exports & {
|
|
10
|
+
$set?: any;
|
|
11
|
+
$on?: any;
|
|
12
|
+
};
|
|
13
|
+
z_$$bindings?: Bindings;
|
|
14
|
+
}
|
|
15
|
+
declare const ListItem: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
16
|
+
[evt: string]: CustomEvent<any>;
|
|
17
|
+
}, {}, {}, string>;
|
|
18
|
+
type ListItem = InstanceType<typeof ListItem>;
|
|
19
|
+
export default ListItem;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare const listiem: import("tailwind-variants").TVReturnType<{
|
|
2
2
|
lines: {
|
|
3
|
-
1:
|
|
4
|
-
2:
|
|
5
|
-
3:
|
|
3
|
+
1: "h-14";
|
|
4
|
+
2: "h-18";
|
|
5
|
+
3: "h-22";
|
|
6
6
|
};
|
|
7
7
|
selected: {
|
|
8
8
|
true: {
|
|
@@ -10,7 +10,7 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
|
|
|
10
10
|
headline: string;
|
|
11
11
|
trailing: string;
|
|
12
12
|
};
|
|
13
|
-
false:
|
|
13
|
+
false: "";
|
|
14
14
|
};
|
|
15
15
|
}, {
|
|
16
16
|
base: string;
|
|
@@ -22,9 +22,9 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
|
|
|
22
22
|
trailing: string;
|
|
23
23
|
}, undefined, {
|
|
24
24
|
lines: {
|
|
25
|
-
1:
|
|
26
|
-
2:
|
|
27
|
-
3:
|
|
25
|
+
1: "h-14";
|
|
26
|
+
2: "h-18";
|
|
27
|
+
3: "h-22";
|
|
28
28
|
};
|
|
29
29
|
selected: {
|
|
30
30
|
true: {
|
|
@@ -32,7 +32,7 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
|
|
|
32
32
|
headline: string;
|
|
33
33
|
trailing: string;
|
|
34
34
|
};
|
|
35
|
-
false:
|
|
35
|
+
false: "";
|
|
36
36
|
};
|
|
37
37
|
}, {
|
|
38
38
|
base: string;
|
|
@@ -42,11 +42,11 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
|
|
|
42
42
|
headline: string;
|
|
43
43
|
supporting: string;
|
|
44
44
|
trailing: string;
|
|
45
|
-
}, import("tailwind-variants").
|
|
45
|
+
}, import("tailwind-variants").TVReturnTypeLike<{
|
|
46
46
|
lines: {
|
|
47
|
-
1:
|
|
48
|
-
2:
|
|
49
|
-
3:
|
|
47
|
+
1: "h-14";
|
|
48
|
+
2: "h-18";
|
|
49
|
+
3: "h-22";
|
|
50
50
|
};
|
|
51
51
|
selected: {
|
|
52
52
|
true: {
|
|
@@ -54,7 +54,7 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
|
|
|
54
54
|
headline: string;
|
|
55
55
|
trailing: string;
|
|
56
56
|
};
|
|
57
|
-
false:
|
|
57
|
+
false: "";
|
|
58
58
|
};
|
|
59
59
|
}, {
|
|
60
60
|
base: string;
|
|
@@ -64,4 +64,4 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
|
|
|
64
64
|
headline: string;
|
|
65
65
|
supporting: string;
|
|
66
66
|
trailing: string;
|
|
67
|
-
}
|
|
67
|
+
}>>;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { tv } from 'tailwind-variants';
|
|
2
2
|
export const listiem = tv({
|
|
3
3
|
slots: {
|
|
4
|
-
base: 'bg-md-sys-color-surface text-sys-color-on-surface-variant state-layer disabled:before:bg-md-sys-color-on-surface/10 md-sys-state-focus-indicator px-4 py-2 gap-4 items-center relative flex rounded-lg before:rounded-lg w-full',
|
|
4
|
+
base: 'bg-md-sys-color-surface text-md-sys-color-on-surface-variant state-layer disabled:before:bg-md-sys-color-on-surface/10 md-sys-state-focus-indicator px-4 py-2 gap-4 items-center relative flex rounded-lg before:rounded-lg w-full',
|
|
5
5
|
leading: 'inline-flex items-start',
|
|
6
6
|
body: 'min-w-0',
|
|
7
7
|
overline: 'md-sys-typescale-label-small line-clamp-1',
|
|
8
8
|
headline: 'text-md-sys-color-on-surface md-sys-typescale-body-large line-clamp-1',
|
|
9
|
-
supporting: 'md-sys-typescale-
|
|
10
|
-
trailing: '
|
|
9
|
+
supporting: 'md-sys-typescale-body-medium line-clamp-2',
|
|
10
|
+
trailing: 'inline-flex ml-auto'
|
|
11
11
|
},
|
|
12
12
|
variants: {
|
|
13
13
|
lines: {
|
|
@@ -7,7 +7,12 @@
|
|
|
7
7
|
<script module lang="ts">
|
|
8
8
|
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
9
9
|
import Menu from './Menu.svelte';
|
|
10
|
-
import MenuItem from '
|
|
10
|
+
import MenuItem from './menu-item/MenuItem.svelte';
|
|
11
|
+
import MenuGroup from './MenuGroup.svelte';
|
|
12
|
+
import MenuRadioGroup from './MenuRadioGroup.svelte';
|
|
13
|
+
import MenuRadioItem from './MenuRadioItem.svelte';
|
|
14
|
+
import MenuCheckboxItem from './MenuCheckboxItem.svelte';
|
|
15
|
+
import MenuSub from './MenuSub.svelte';
|
|
11
16
|
import ButtonIcon from '../../buttons/ButtonIcon.svelte';
|
|
12
17
|
import { Divider } from '../../../index.js';
|
|
13
18
|
|
|
@@ -25,6 +30,14 @@
|
|
|
25
30
|
});
|
|
26
31
|
</script>
|
|
27
32
|
|
|
33
|
+
<script lang="ts">
|
|
34
|
+
let sortBy = $state('name');
|
|
35
|
+
let showHidden = $state(true);
|
|
36
|
+
let showExtensions = $state(false);
|
|
37
|
+
let kitchenSinkSort = $state('date');
|
|
38
|
+
let kitchenSinkWordWrap = $state(true);
|
|
39
|
+
</script>
|
|
40
|
+
|
|
28
41
|
<Story name="Playground">
|
|
29
42
|
{#snippet template(args)}
|
|
30
43
|
<div class="p-6">
|
|
@@ -40,8 +53,8 @@
|
|
|
40
53
|
<Story name="With Custom Trigger" asChild>
|
|
41
54
|
<div class="p-6">
|
|
42
55
|
<Menu align="end">
|
|
43
|
-
{#snippet trigger()}
|
|
44
|
-
<ButtonIcon iconProps={{ name: 'more_vert' }} variant="text" />
|
|
56
|
+
{#snippet trigger(triggerProps)}
|
|
57
|
+
<ButtonIcon iconProps={{ name: 'more_vert' }} variant="text" {...triggerProps} />
|
|
45
58
|
{/snippet}
|
|
46
59
|
<MenuItem iconProps={{ name: 'edit' }}>Edit</MenuItem>
|
|
47
60
|
<MenuItem iconProps={{ name: 'archive' }} helper="Move to archive folder">Archive</MenuItem>
|
|
@@ -60,3 +73,92 @@
|
|
|
60
73
|
</Menu>
|
|
61
74
|
</div>
|
|
62
75
|
</Story>
|
|
76
|
+
|
|
77
|
+
<Story name="With Groups" asChild>
|
|
78
|
+
<div class="p-6">
|
|
79
|
+
<Menu label="Sort by">
|
|
80
|
+
<MenuGroup heading="Name">
|
|
81
|
+
<MenuItem>A to Z</MenuItem>
|
|
82
|
+
<MenuItem>Z to A</MenuItem>
|
|
83
|
+
</MenuGroup>
|
|
84
|
+
<Divider class="my-1" />
|
|
85
|
+
<MenuGroup heading="Date">
|
|
86
|
+
<MenuItem>Newest first</MenuItem>
|
|
87
|
+
<MenuItem>Oldest first</MenuItem>
|
|
88
|
+
</MenuGroup>
|
|
89
|
+
</Menu>
|
|
90
|
+
</div>
|
|
91
|
+
</Story>
|
|
92
|
+
|
|
93
|
+
<Story name="With Checkboxes" asChild>
|
|
94
|
+
<div class="p-6">
|
|
95
|
+
<Menu label="View">
|
|
96
|
+
<MenuCheckboxItem bind:checked={showHidden}>Show hidden files</MenuCheckboxItem>
|
|
97
|
+
<MenuCheckboxItem bind:checked={showExtensions}>Show file extensions</MenuCheckboxItem>
|
|
98
|
+
<MenuCheckboxItem disabled>Show system files</MenuCheckboxItem>
|
|
99
|
+
</Menu>
|
|
100
|
+
</div>
|
|
101
|
+
</Story>
|
|
102
|
+
|
|
103
|
+
<Story name="With Radio Group" asChild>
|
|
104
|
+
<div class="p-6">
|
|
105
|
+
<Menu label="Sort by">
|
|
106
|
+
<MenuRadioGroup bind:value={sortBy}>
|
|
107
|
+
<MenuRadioItem value="name">Name</MenuRadioItem>
|
|
108
|
+
<MenuRadioItem value="date">Date modified</MenuRadioItem>
|
|
109
|
+
<MenuRadioItem value="size">Size</MenuRadioItem>
|
|
110
|
+
</MenuRadioGroup>
|
|
111
|
+
</Menu>
|
|
112
|
+
</div>
|
|
113
|
+
</Story>
|
|
114
|
+
|
|
115
|
+
<Story name="With Submenu" asChild>
|
|
116
|
+
<div class="p-6">
|
|
117
|
+
<Menu label="File">
|
|
118
|
+
<MenuItem iconProps={{ name: 'draft' }}>New</MenuItem>
|
|
119
|
+
<MenuItem iconProps={{ name: 'folder' }}>Open</MenuItem>
|
|
120
|
+
<MenuSub iconProps={{ name: 'ios_share' }}>
|
|
121
|
+
Share
|
|
122
|
+
{#snippet submenu()}
|
|
123
|
+
<MenuItem iconProps={{ name: 'mail' }}>Email</MenuItem>
|
|
124
|
+
<MenuItem iconProps={{ name: 'link' }}>Copy link</MenuItem>
|
|
125
|
+
<MenuSub iconProps={{ name: 'chat' }}>
|
|
126
|
+
Message
|
|
127
|
+
{#snippet submenu()}
|
|
128
|
+
<MenuItem>SMS</MenuItem>
|
|
129
|
+
<MenuItem>Direct message</MenuItem>
|
|
130
|
+
{/snippet}
|
|
131
|
+
</MenuSub>
|
|
132
|
+
{/snippet}
|
|
133
|
+
</MenuSub>
|
|
134
|
+
<Divider class="my-1" />
|
|
135
|
+
<MenuItem iconProps={{ name: 'delete' }}>Delete</MenuItem>
|
|
136
|
+
</Menu>
|
|
137
|
+
</div>
|
|
138
|
+
</Story>
|
|
139
|
+
|
|
140
|
+
<Story name="Kitchen Sink" asChild>
|
|
141
|
+
<div class="p-6">
|
|
142
|
+
<Menu label="Document">
|
|
143
|
+
<MenuGroup heading="Sort by">
|
|
144
|
+
<MenuRadioGroup bind:value={kitchenSinkSort}>
|
|
145
|
+
<MenuRadioItem value="name">Name</MenuRadioItem>
|
|
146
|
+
<MenuRadioItem value="date">Date modified</MenuRadioItem>
|
|
147
|
+
</MenuRadioGroup>
|
|
148
|
+
</MenuGroup>
|
|
149
|
+
<Divider class="my-1" />
|
|
150
|
+
<MenuGroup heading="View">
|
|
151
|
+
<MenuCheckboxItem bind:checked={kitchenSinkWordWrap}>Word wrap</MenuCheckboxItem>
|
|
152
|
+
</MenuGroup>
|
|
153
|
+
<Divider class="my-1" />
|
|
154
|
+
<MenuSub iconProps={{ name: 'ios_share' }}>
|
|
155
|
+
Share
|
|
156
|
+
{#snippet submenu()}
|
|
157
|
+
<MenuItem iconProps={{ name: 'mail' }}>Email</MenuItem>
|
|
158
|
+
<MenuItem iconProps={{ name: 'link' }}>Copy link</MenuItem>
|
|
159
|
+
{/snippet}
|
|
160
|
+
</MenuSub>
|
|
161
|
+
<MenuItem iconProps={{ name: 'delete' }} disabled>Delete</MenuItem>
|
|
162
|
+
</Menu>
|
|
163
|
+
</div>
|
|
164
|
+
</Story>
|
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
import Menu from './Menu.svelte';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
$$bindings?: Bindings;
|
|
5
|
-
} & Exports;
|
|
6
|
-
(internal: unknown, props: {
|
|
7
|
-
$$events?: Events;
|
|
8
|
-
$$slots?: Slots;
|
|
9
|
-
}): Exports & {
|
|
10
|
-
$set?: any;
|
|
11
|
-
$on?: any;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
declare const Menu: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
16
|
-
[evt: string]: CustomEvent<any>;
|
|
17
|
-
}, {}, {}, string>;
|
|
18
|
-
type Menu = InstanceType<typeof Menu>;
|
|
2
|
+
declare const Menu: import("svelte").Component<Record<string, never>, {}, "">;
|
|
3
|
+
type Menu = ReturnType<typeof Menu>;
|
|
19
4
|
export default Menu;
|
|
@@ -35,22 +35,24 @@ Contrast with `MenuItem` (a single interactive row inside the panel) and
|
|
|
35
35
|
|
|
36
36
|
<DropdownMenu.Root bind:open>
|
|
37
37
|
<DropdownMenu.Trigger>
|
|
38
|
-
{#
|
|
39
|
-
{
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
{#snippet child({ props })}
|
|
39
|
+
{#if trigger}
|
|
40
|
+
{@render trigger(props)}
|
|
41
|
+
{:else}
|
|
42
|
+
<Button variant="filled" {...props}>{label}</Button>
|
|
43
|
+
{/if}
|
|
44
|
+
{/snippet}
|
|
43
45
|
</DropdownMenu.Trigger>
|
|
44
46
|
|
|
45
47
|
<DropdownMenu.Portal>
|
|
46
|
-
<DropdownMenu.Content forceMount {align} sideOffset={4} class="z-
|
|
48
|
+
<DropdownMenu.Content forceMount {align} sideOffset={4} class="z-100">
|
|
47
49
|
{#snippet child({ wrapperProps, props, open: isOpen })}
|
|
48
50
|
{#if isOpen}
|
|
49
51
|
<div {...wrapperProps} class={wrapperProps.class as any}>
|
|
50
52
|
<div
|
|
51
53
|
{...props}
|
|
52
54
|
class={clsx(
|
|
53
|
-
'bg-md-sys-color-surface-container-high shadow-elevation-3 ring-md-sys-color-outline/10 max-w-sm min-w-48 overflow-
|
|
55
|
+
'bg-md-sys-color-surface-container-high shadow-elevation-3 ring-md-sys-color-outline/10 max-w-sm min-w-48 gap-1 overflow-y-auto rounded-lg px-2 py-1',
|
|
54
56
|
props.class as any,
|
|
55
57
|
contentClass
|
|
56
58
|
)}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
A toggleable option inside a `Menu`.
|
|
4
|
+
|
|
5
|
+
Wraps bits-ui's `DropdownMenu.CheckboxItem`. Unlike `MenuRadioItem`, its
|
|
6
|
+
checked state is independent of any sibling item, so any number of
|
|
7
|
+
`MenuCheckboxItem`s can be checked at once. Renders a leading checkbox
|
|
8
|
+
indicator that fills in when checked.
|
|
9
|
+
|
|
10
|
+
@example
|
|
11
|
+
```svelte
|
|
12
|
+
<script>
|
|
13
|
+
let showHidden = $state(false);
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<Menu label="View">
|
|
17
|
+
<MenuCheckboxItem bind:checked={showHidden}>Show hidden files</MenuCheckboxItem>
|
|
18
|
+
</Menu>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
@see https://m3.material.io/components/menus/guidelines
|
|
22
|
+
-->
|
|
23
|
+
<script lang="ts">
|
|
24
|
+
import { DropdownMenu } from 'bits-ui';
|
|
25
|
+
import Icon from '../../../utils/icon/Icon.svelte';
|
|
26
|
+
import Layer from '../../../utils/Layer.svelte';
|
|
27
|
+
import { menu as menuCls } from './theme.js';
|
|
28
|
+
import type { MenuCheckboxItemProps } from './types.js';
|
|
29
|
+
|
|
30
|
+
let {
|
|
31
|
+
checked = $bindable(false),
|
|
32
|
+
onCheckedChange,
|
|
33
|
+
disabled = false,
|
|
34
|
+
closeOnSelect = true,
|
|
35
|
+
helper,
|
|
36
|
+
children,
|
|
37
|
+
class: className
|
|
38
|
+
}: MenuCheckboxItemProps = $props();
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<DropdownMenu.CheckboxItem bind:checked {onCheckedChange} {disabled} {closeOnSelect}>
|
|
42
|
+
{#snippet child({ props, checked })}
|
|
43
|
+
{@const cls = menuCls({ checked })}
|
|
44
|
+
<div {...props} class={cls.item({ class: className })}>
|
|
45
|
+
<Icon name={checked ? 'check_box' : 'check_box_outline_blank'} class={cls.indicator()} />
|
|
46
|
+
<div class={cls.itemContent()}>
|
|
47
|
+
{@render children()}
|
|
48
|
+
{#if helper}
|
|
49
|
+
<span class={cls.helper()}>{helper}</span>
|
|
50
|
+
{/if}
|
|
51
|
+
</div>
|
|
52
|
+
<Layer />
|
|
53
|
+
</div>
|
|
54
|
+
{/snippet}
|
|
55
|
+
</DropdownMenu.CheckboxItem>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { MenuCheckboxItemProps } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* A toggleable option inside a `Menu`.
|
|
4
|
+
*
|
|
5
|
+
* Wraps bits-ui's `DropdownMenu.CheckboxItem`. Unlike `MenuRadioItem`, its
|
|
6
|
+
* checked state is independent of any sibling item, so any number of
|
|
7
|
+
* `MenuCheckboxItem`s can be checked at once. Renders a leading checkbox
|
|
8
|
+
* indicator that fills in when checked.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```svelte
|
|
12
|
+
* <script>
|
|
13
|
+
* let showHidden = $state(false);
|
|
14
|
+
* </script>
|
|
15
|
+
*
|
|
16
|
+
* <Menu label="View">
|
|
17
|
+
* <MenuCheckboxItem bind:checked={showHidden}>Show hidden files</MenuCheckboxItem>
|
|
18
|
+
* </Menu>
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @see https://m3.material.io/components/menus/guidelines
|
|
22
|
+
*/
|
|
23
|
+
declare const MenuCheckboxItem: import("svelte").Component<MenuCheckboxItemProps, {}, "checked">;
|
|
24
|
+
type MenuCheckboxItem = ReturnType<typeof MenuCheckboxItem>;
|
|
25
|
+
export default MenuCheckboxItem;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
Groups related rows inside a `Menu` under an optional heading.
|
|
4
|
+
|
|
5
|
+
Wraps bits-ui's `DropdownMenu.Group` (and `DropdownMenu.GroupHeading` when
|
|
6
|
+
`heading` is supplied) so screen readers announce the rows as a labelled
|
|
7
|
+
set. Purely organizational — it renders no interactive behavior of its own.
|
|
8
|
+
|
|
9
|
+
@example
|
|
10
|
+
```svelte
|
|
11
|
+
<Menu label="Sort by">
|
|
12
|
+
<MenuGroup heading="Name">
|
|
13
|
+
<MenuItem>A to Z</MenuItem>
|
|
14
|
+
<MenuItem>Z to A</MenuItem>
|
|
15
|
+
</MenuGroup>
|
|
16
|
+
<Divider class="my-1" />
|
|
17
|
+
<MenuGroup heading="Date">
|
|
18
|
+
<MenuItem>Newest first</MenuItem>
|
|
19
|
+
<MenuItem>Oldest first</MenuItem>
|
|
20
|
+
</MenuGroup>
|
|
21
|
+
</Menu>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
@see https://m3.material.io/components/menus/guidelines
|
|
25
|
+
-->
|
|
26
|
+
<script lang="ts">
|
|
27
|
+
import { DropdownMenu } from 'bits-ui';
|
|
28
|
+
import { menu as menuCls } from './theme.js';
|
|
29
|
+
import type { MenuGroupProps } from './types.js';
|
|
30
|
+
|
|
31
|
+
let { heading, children, class: className }: MenuGroupProps = $props();
|
|
32
|
+
|
|
33
|
+
const cls = $derived(menuCls());
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<DropdownMenu.Group class={className}>
|
|
37
|
+
{#if heading}
|
|
38
|
+
<DropdownMenu.GroupHeading class={cls.groupHeading()}>
|
|
39
|
+
{heading}
|
|
40
|
+
</DropdownMenu.GroupHeading>
|
|
41
|
+
{/if}
|
|
42
|
+
{@render children()}
|
|
43
|
+
</DropdownMenu.Group>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { MenuGroupProps } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Groups related rows inside a `Menu` under an optional heading.
|
|
4
|
+
*
|
|
5
|
+
* Wraps bits-ui's `DropdownMenu.Group` (and `DropdownMenu.GroupHeading` when
|
|
6
|
+
* `heading` is supplied) so screen readers announce the rows as a labelled
|
|
7
|
+
* set. Purely organizational — it renders no interactive behavior of its own.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```svelte
|
|
11
|
+
* <Menu label="Sort by">
|
|
12
|
+
* <MenuGroup heading="Name">
|
|
13
|
+
* <MenuItem>A to Z</MenuItem>
|
|
14
|
+
* <MenuItem>Z to A</MenuItem>
|
|
15
|
+
* </MenuGroup>
|
|
16
|
+
* <Divider class="my-1" />
|
|
17
|
+
* <MenuGroup heading="Date">
|
|
18
|
+
* <MenuItem>Newest first</MenuItem>
|
|
19
|
+
* <MenuItem>Oldest first</MenuItem>
|
|
20
|
+
* </MenuGroup>
|
|
21
|
+
* </Menu>
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @see https://m3.material.io/components/menus/guidelines
|
|
25
|
+
*/
|
|
26
|
+
declare const MenuGroup: import("svelte").Component<MenuGroupProps, {}, "">;
|
|
27
|
+
type MenuGroup = ReturnType<typeof MenuGroup>;
|
|
28
|
+
export default MenuGroup;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
Restricts a set of `MenuRadioItem`s to a single selected value at a time.
|
|
4
|
+
|
|
5
|
+
Wraps bits-ui's `DropdownMenu.RadioGroup`. Bind `value` to drive the
|
|
6
|
+
selection externally, or leave it uncontrolled and read `onValueChange`.
|
|
7
|
+
|
|
8
|
+
@example
|
|
9
|
+
```svelte
|
|
10
|
+
<script>
|
|
11
|
+
let sortBy = $state('name');
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<Menu label="Sort by">
|
|
15
|
+
<MenuRadioGroup bind:value={sortBy}>
|
|
16
|
+
<MenuRadioItem value="name">Name</MenuRadioItem>
|
|
17
|
+
<MenuRadioItem value="date">Date modified</MenuRadioItem>
|
|
18
|
+
<MenuRadioItem value="size">Size</MenuRadioItem>
|
|
19
|
+
</MenuRadioGroup>
|
|
20
|
+
</Menu>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
@see https://m3.material.io/components/menus/guidelines
|
|
24
|
+
-->
|
|
25
|
+
<script lang="ts">
|
|
26
|
+
import { DropdownMenu } from 'bits-ui';
|
|
27
|
+
import type { MenuRadioGroupProps } from './types.js';
|
|
28
|
+
|
|
29
|
+
let {
|
|
30
|
+
value = $bindable(''),
|
|
31
|
+
onValueChange,
|
|
32
|
+
children,
|
|
33
|
+
class: className
|
|
34
|
+
}: MenuRadioGroupProps = $props();
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<DropdownMenu.RadioGroup bind:value {onValueChange} class={className}>
|
|
38
|
+
{@render children()}
|
|
39
|
+
</DropdownMenu.RadioGroup>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { MenuRadioGroupProps } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Restricts a set of `MenuRadioItem`s to a single selected value at a time.
|
|
4
|
+
*
|
|
5
|
+
* Wraps bits-ui's `DropdownMenu.RadioGroup`. Bind `value` to drive the
|
|
6
|
+
* selection externally, or leave it uncontrolled and read `onValueChange`.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```svelte
|
|
10
|
+
* <script>
|
|
11
|
+
* let sortBy = $state('name');
|
|
12
|
+
* </script>
|
|
13
|
+
*
|
|
14
|
+
* <Menu label="Sort by">
|
|
15
|
+
* <MenuRadioGroup bind:value={sortBy}>
|
|
16
|
+
* <MenuRadioItem value="name">Name</MenuRadioItem>
|
|
17
|
+
* <MenuRadioItem value="date">Date modified</MenuRadioItem>
|
|
18
|
+
* <MenuRadioItem value="size">Size</MenuRadioItem>
|
|
19
|
+
* </MenuRadioGroup>
|
|
20
|
+
* </Menu>
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @see https://m3.material.io/components/menus/guidelines
|
|
24
|
+
*/
|
|
25
|
+
declare const MenuRadioGroup: import("svelte").Component<MenuRadioGroupProps, {}, "value">;
|
|
26
|
+
type MenuRadioGroup = ReturnType<typeof MenuRadioGroup>;
|
|
27
|
+
export default MenuRadioGroup;
|