@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
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
A single selectable option inside a `MenuRadioGroup`.
|
|
4
|
+
|
|
5
|
+
Wraps bits-ui's `DropdownMenu.RadioItem`. Only one radio item within the
|
|
6
|
+
same `MenuRadioGroup` can be checked at a time; selecting one unchecks any
|
|
7
|
+
previously-checked sibling. Renders a leading radio indicator that fills
|
|
8
|
+
in when selected.
|
|
9
|
+
|
|
10
|
+
Contrast with `MenuCheckboxItem`, whose checked state is independent of any
|
|
11
|
+
sibling item.
|
|
12
|
+
|
|
13
|
+
@see https://m3.material.io/components/menus/guidelines
|
|
14
|
+
-->
|
|
15
|
+
<script lang="ts">
|
|
16
|
+
import { DropdownMenu } from 'bits-ui';
|
|
17
|
+
import Icon from '../../../utils/icon/Icon.svelte';
|
|
18
|
+
import Layer from '../../../utils/Layer.svelte';
|
|
19
|
+
import { menu as menuCls } from './theme.js';
|
|
20
|
+
import type { MenuRadioItemProps } from './types.js';
|
|
21
|
+
|
|
22
|
+
let {
|
|
23
|
+
value,
|
|
24
|
+
disabled = false,
|
|
25
|
+
closeOnSelect = true,
|
|
26
|
+
helper,
|
|
27
|
+
children,
|
|
28
|
+
class: className
|
|
29
|
+
}: MenuRadioItemProps = $props();
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<DropdownMenu.RadioItem {value} {disabled} {closeOnSelect}>
|
|
33
|
+
{#snippet child({ props, checked })}
|
|
34
|
+
{@const cls = menuCls({ checked })}
|
|
35
|
+
<div {...props} class={cls.item({ class: className })}>
|
|
36
|
+
<Icon
|
|
37
|
+
name={checked ? 'radio_button_checked' : 'radio_button_unchecked'}
|
|
38
|
+
class={cls.indicator()}
|
|
39
|
+
/>
|
|
40
|
+
<div class={cls.itemContent()}>
|
|
41
|
+
{@render children()}
|
|
42
|
+
{#if helper}
|
|
43
|
+
<span class={cls.helper()}>{helper}</span>
|
|
44
|
+
{/if}
|
|
45
|
+
</div>
|
|
46
|
+
<Layer />
|
|
47
|
+
</div>
|
|
48
|
+
{/snippet}
|
|
49
|
+
</DropdownMenu.RadioItem>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { MenuRadioItemProps } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* A single selectable option inside a `MenuRadioGroup`.
|
|
4
|
+
*
|
|
5
|
+
* Wraps bits-ui's `DropdownMenu.RadioItem`. Only one radio item within the
|
|
6
|
+
* same `MenuRadioGroup` can be checked at a time; selecting one unchecks any
|
|
7
|
+
* previously-checked sibling. Renders a leading radio indicator that fills
|
|
8
|
+
* in when selected.
|
|
9
|
+
*
|
|
10
|
+
* Contrast with `MenuCheckboxItem`, whose checked state is independent of any
|
|
11
|
+
* sibling item.
|
|
12
|
+
*
|
|
13
|
+
* @see https://m3.material.io/components/menus/guidelines
|
|
14
|
+
*/
|
|
15
|
+
declare const MenuRadioItem: import("svelte").Component<MenuRadioItemProps, {}, "">;
|
|
16
|
+
type MenuRadioItem = ReturnType<typeof MenuRadioItem>;
|
|
17
|
+
export default MenuRadioItem;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
A `MenuItem`-like row that opens a nested submenu panel on hover or press,
|
|
4
|
+
instead of firing a selection itself.
|
|
5
|
+
|
|
6
|
+
Wraps bits-ui's `DropdownMenu.Sub` + `SubTrigger` + `SubContent`. The
|
|
7
|
+
trigger row (`iconProps`/`helper`/`children` label) behaves like a
|
|
8
|
+
`MenuItem`; pass the nested rows — `MenuItem`, `MenuCheckboxItem`,
|
|
9
|
+
`MenuRadioItem`, `MenuGroup`, more `MenuSub`, etc. — as `submenu`.
|
|
10
|
+
|
|
11
|
+
@example
|
|
12
|
+
```svelte
|
|
13
|
+
<Menu label="File">
|
|
14
|
+
<MenuItem iconProps={{ name: 'draft' }}>New</MenuItem>
|
|
15
|
+
<MenuSub iconProps={{ name: 'ios_share' }}>
|
|
16
|
+
Share
|
|
17
|
+
{#snippet submenu()}
|
|
18
|
+
<MenuItem>Email</MenuItem>
|
|
19
|
+
<MenuItem>Link</MenuItem>
|
|
20
|
+
{/snippet}
|
|
21
|
+
</MenuSub>
|
|
22
|
+
</Menu>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
@see https://m3.material.io/components/menus/guidelines
|
|
26
|
+
-->
|
|
27
|
+
<script lang="ts">
|
|
28
|
+
import { DropdownMenu } from 'bits-ui';
|
|
29
|
+
import clsx from 'clsx';
|
|
30
|
+
import Icon from '../../../utils/icon/Icon.svelte';
|
|
31
|
+
import Layer from '../../../utils/Layer.svelte';
|
|
32
|
+
import { menu as menuCls } from './theme.js';
|
|
33
|
+
import { enterExit } from '../../../animation/enterExit.js';
|
|
34
|
+
import { easeEmphasizedDecel } from '../../../animation/easing.js';
|
|
35
|
+
import type { MenuSubProps } from './types.js';
|
|
36
|
+
|
|
37
|
+
let {
|
|
38
|
+
iconProps,
|
|
39
|
+
disabled = false,
|
|
40
|
+
helper,
|
|
41
|
+
children,
|
|
42
|
+
submenu,
|
|
43
|
+
open = $bindable(false),
|
|
44
|
+
class: className,
|
|
45
|
+
submenuClass
|
|
46
|
+
}: MenuSubProps = $props();
|
|
47
|
+
|
|
48
|
+
const cls = $derived(menuCls());
|
|
49
|
+
</script>
|
|
50
|
+
|
|
51
|
+
<DropdownMenu.Sub bind:open>
|
|
52
|
+
<DropdownMenu.SubTrigger {disabled}>
|
|
53
|
+
{#snippet child({ props })}
|
|
54
|
+
<div {...props} class={cls.item({ class: className })}>
|
|
55
|
+
{#if iconProps}
|
|
56
|
+
<Icon class={cls.icon()} {...iconProps} />
|
|
57
|
+
{/if}
|
|
58
|
+
<div class={cls.itemContent()}>
|
|
59
|
+
{@render children()}
|
|
60
|
+
{#if helper}
|
|
61
|
+
<span class={cls.helper()}>{helper}</span>
|
|
62
|
+
{/if}
|
|
63
|
+
</div>
|
|
64
|
+
<Icon name="chevron_right" class={cls.rightSlot()} />
|
|
65
|
+
<Layer />
|
|
66
|
+
</div>
|
|
67
|
+
{/snippet}
|
|
68
|
+
</DropdownMenu.SubTrigger>
|
|
69
|
+
|
|
70
|
+
<DropdownMenu.Portal>
|
|
71
|
+
<DropdownMenu.SubContent forceMount sideOffset={4} class="z-100">
|
|
72
|
+
{#snippet child({ wrapperProps, props, open: isOpen })}
|
|
73
|
+
{#if isOpen}
|
|
74
|
+
<div {...wrapperProps} class={wrapperProps.class as any}>
|
|
75
|
+
<div
|
|
76
|
+
{...props}
|
|
77
|
+
class={clsx(cls.content(), props.class as any, submenuClass)}
|
|
78
|
+
transition:enterExit={{
|
|
79
|
+
duration: 200,
|
|
80
|
+
easing: easeEmphasizedDecel,
|
|
81
|
+
mode: 'scale'
|
|
82
|
+
}}
|
|
83
|
+
>
|
|
84
|
+
{@render submenu()}
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
{/if}
|
|
88
|
+
{/snippet}
|
|
89
|
+
</DropdownMenu.SubContent>
|
|
90
|
+
</DropdownMenu.Portal>
|
|
91
|
+
</DropdownMenu.Sub>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { MenuSubProps } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* A `MenuItem`-like row that opens a nested submenu panel on hover or press,
|
|
4
|
+
* instead of firing a selection itself.
|
|
5
|
+
*
|
|
6
|
+
* Wraps bits-ui's `DropdownMenu.Sub` + `SubTrigger` + `SubContent`. The
|
|
7
|
+
* trigger row (`iconProps`/`helper`/`children` label) behaves like a
|
|
8
|
+
* `MenuItem`; pass the nested rows — `MenuItem`, `MenuCheckboxItem`,
|
|
9
|
+
* `MenuRadioItem`, `MenuGroup`, more `MenuSub`, etc. — as `submenu`.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```svelte
|
|
13
|
+
* <Menu label="File">
|
|
14
|
+
* <MenuItem iconProps={{ name: 'draft' }}>New</MenuItem>
|
|
15
|
+
* <MenuSub iconProps={{ name: 'ios_share' }}>
|
|
16
|
+
* Share
|
|
17
|
+
* {#snippet submenu()}
|
|
18
|
+
* <MenuItem>Email</MenuItem>
|
|
19
|
+
* <MenuItem>Link</MenuItem>
|
|
20
|
+
* {/snippet}
|
|
21
|
+
* </MenuSub>
|
|
22
|
+
* </Menu>
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @see https://m3.material.io/components/menus/guidelines
|
|
26
|
+
*/
|
|
27
|
+
declare const MenuSub: import("svelte").Component<MenuSubProps, {}, "open">;
|
|
28
|
+
type MenuSub = ReturnType<typeof MenuSub>;
|
|
29
|
+
export default MenuSub;
|
|
@@ -1,2 +1,9 @@
|
|
|
1
|
+
export * from './menu-item/index.js';
|
|
2
|
+
export * from './theme.js';
|
|
1
3
|
export * from './types.js';
|
|
2
4
|
export { default as Menu } from './Menu.svelte';
|
|
5
|
+
export { default as MenuCheckboxItem } from './MenuCheckboxItem.svelte';
|
|
6
|
+
export { default as MenuGroup } from './MenuGroup.svelte';
|
|
7
|
+
export { default as MenuRadioGroup } from './MenuRadioGroup.svelte';
|
|
8
|
+
export { default as MenuRadioItem } from './MenuRadioItem.svelte';
|
|
9
|
+
export { default as MenuSub } from './MenuSub.svelte';
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
// THIS FILE IS AUTO-GENERATED BY scripts/generate-components-index.ts - DO NOT EDIT MANUALLY
|
|
2
|
+
// folder re-exports (export everything from these folders)
|
|
3
|
+
export * from './menu-item/index.js';
|
|
2
4
|
// re-export TS/JS modules from this folder
|
|
5
|
+
export * from './theme.js';
|
|
3
6
|
export * from './types.js';
|
|
4
7
|
// default exports for components in this folder
|
|
5
8
|
export { default as Menu } from './Menu.svelte';
|
|
9
|
+
export { default as MenuCheckboxItem } from './MenuCheckboxItem.svelte';
|
|
10
|
+
export { default as MenuGroup } from './MenuGroup.svelte';
|
|
11
|
+
export { default as MenuRadioGroup } from './MenuRadioGroup.svelte';
|
|
12
|
+
export { default as MenuRadioItem } from './MenuRadioItem.svelte';
|
|
13
|
+
export { default as MenuSub } from './MenuSub.svelte';
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
A single interactive row inside a `Menu`.
|
|
4
|
+
|
|
5
|
+
`MenuItem` is the leaf node of the menu system. It wraps bits-ui's
|
|
6
|
+
`DropdownMenu.Item` so each row automatically gets keyboard navigation,
|
|
7
|
+
focus management, and the ARIA `menuitem` role.
|
|
8
|
+
|
|
9
|
+
Pass `onclick` (or `onSelect`) for the action; use `iconProps` for a
|
|
10
|
+
leading icon and `helper` for a supporting line below the label.
|
|
11
|
+
|
|
12
|
+
Contrast with `Menu`, which is just the shell (open state + floating panel),
|
|
13
|
+
and `ContextMenu`, which owns its own item list and is right-click triggered.
|
|
14
|
+
|
|
15
|
+
@see https://m3.material.io/components/menus/guidelines
|
|
16
|
+
-->
|
|
17
|
+
<script lang="ts">
|
|
18
|
+
import type { MenuItemProps } from './types.js';
|
|
19
|
+
import type { DropdownMenuItemProps } from 'bits-ui';
|
|
20
|
+
import Icon from '../../../../utils/icon/Icon.svelte';
|
|
21
|
+
import Layer from '../../../../utils/Layer.svelte';
|
|
22
|
+
import { DropdownMenu } from 'bits-ui';
|
|
23
|
+
import { menu as menuCls } from '../theme.js';
|
|
24
|
+
|
|
25
|
+
let {
|
|
26
|
+
iconProps,
|
|
27
|
+
disabled = false,
|
|
28
|
+
onclick,
|
|
29
|
+
onSelect,
|
|
30
|
+
isGap,
|
|
31
|
+
selected,
|
|
32
|
+
helper,
|
|
33
|
+
children,
|
|
34
|
+
class: className,
|
|
35
|
+
...restProps
|
|
36
|
+
}: MenuItemProps & DropdownMenuItemProps = $props();
|
|
37
|
+
|
|
38
|
+
// bits-ui fires onSelect at the Item level; avoid wiring onclick to the
|
|
39
|
+
// native button as well or it would fire twice on every click.
|
|
40
|
+
const handleSelect = $derived(onSelect ?? (onclick ? () => onclick() : undefined));
|
|
41
|
+
|
|
42
|
+
const cls = $derived(menuCls({ selected }));
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
{#if !isGap}
|
|
46
|
+
<DropdownMenu.Item
|
|
47
|
+
{...restProps}
|
|
48
|
+
{disabled}
|
|
49
|
+
onSelect={handleSelect}
|
|
50
|
+
class={cls.item({ class: className as string })}
|
|
51
|
+
>
|
|
52
|
+
{#if iconProps}
|
|
53
|
+
<Icon class={cls.icon()} {...iconProps} />
|
|
54
|
+
{/if}
|
|
55
|
+
|
|
56
|
+
<div class={cls.itemContent()}>
|
|
57
|
+
{@render children()}
|
|
58
|
+
{#if helper}
|
|
59
|
+
<span class={cls.helper()}>
|
|
60
|
+
{helper}
|
|
61
|
+
</span>
|
|
62
|
+
{/if}
|
|
63
|
+
</div>
|
|
64
|
+
<Layer />
|
|
65
|
+
</DropdownMenu.Item>
|
|
66
|
+
{:else}
|
|
67
|
+
<!-- Render as a gap -->
|
|
68
|
+
<DropdownMenu.Item>
|
|
69
|
+
<hr class="h-1" />
|
|
70
|
+
</DropdownMenu.Item>
|
|
71
|
+
{/if}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { MenuItemProps } from './types.js';
|
|
2
|
-
type
|
|
2
|
+
import type { DropdownMenuItemProps } from 'bits-ui';
|
|
3
|
+
type $$ComponentProps = MenuItemProps & DropdownMenuItemProps;
|
|
3
4
|
/**
|
|
4
5
|
* A single interactive row inside a `Menu`.
|
|
5
6
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IconProps } from '
|
|
1
|
+
import type { IconProps } from '../../../../utils/icon/types.js';
|
|
2
2
|
import type { Snippet } from 'svelte';
|
|
3
3
|
/**
|
|
4
4
|
* Props for the MenuItem component.
|
|
@@ -33,4 +33,8 @@ export interface MenuItemProps {
|
|
|
33
33
|
* The content of the menu item, typically a label.
|
|
34
34
|
*/
|
|
35
35
|
children: Snippet;
|
|
36
|
+
/**
|
|
37
|
+
* Whether this item is in fact a gap
|
|
38
|
+
*/
|
|
39
|
+
isGap?: boolean;
|
|
36
40
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
2
|
+
/**
|
|
3
|
+
* Shared styling for every row-shaped element inside a `Menu`'s floating
|
|
4
|
+
* panel: `MenuItem`, `MenuCheckboxItem`, `MenuRadioItem`, and `MenuSub`'s
|
|
5
|
+
* trigger row all pull from this one `tv()` so they stay visually identical.
|
|
6
|
+
*/
|
|
7
|
+
export type MenuVariants = VariantProps<typeof menu>;
|
|
8
|
+
export declare const menu: import("tailwind-variants").TVReturnType<{
|
|
9
|
+
selected: {
|
|
10
|
+
true: {
|
|
11
|
+
item: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
checked: {
|
|
15
|
+
true: {
|
|
16
|
+
indicator: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
}, {
|
|
20
|
+
content: string;
|
|
21
|
+
item: string;
|
|
22
|
+
icon: string;
|
|
23
|
+
indicator: string;
|
|
24
|
+
itemContent: string;
|
|
25
|
+
helper: string;
|
|
26
|
+
rightSlot: string;
|
|
27
|
+
groupHeading: string;
|
|
28
|
+
}, undefined, {
|
|
29
|
+
selected: {
|
|
30
|
+
true: {
|
|
31
|
+
item: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
checked: {
|
|
35
|
+
true: {
|
|
36
|
+
indicator: string;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}, {
|
|
40
|
+
content: string;
|
|
41
|
+
item: string;
|
|
42
|
+
icon: string;
|
|
43
|
+
indicator: string;
|
|
44
|
+
itemContent: string;
|
|
45
|
+
helper: string;
|
|
46
|
+
rightSlot: string;
|
|
47
|
+
groupHeading: string;
|
|
48
|
+
}, import("tailwind-variants").TVReturnTypeLike<{
|
|
49
|
+
selected: {
|
|
50
|
+
true: {
|
|
51
|
+
item: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
checked: {
|
|
55
|
+
true: {
|
|
56
|
+
indicator: string;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
}, {
|
|
60
|
+
content: string;
|
|
61
|
+
item: string;
|
|
62
|
+
icon: string;
|
|
63
|
+
indicator: string;
|
|
64
|
+
itemContent: string;
|
|
65
|
+
helper: string;
|
|
66
|
+
rightSlot: string;
|
|
67
|
+
groupHeading: string;
|
|
68
|
+
}>>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
export const menu = tv({
|
|
3
|
+
slots: {
|
|
4
|
+
content: `
|
|
5
|
+
bg-md-sys-color-surface-container-high shadow-elevation-3
|
|
6
|
+
ring-md-sys-color-outline/10 max-w-sm min-w-48 gap-1
|
|
7
|
+
overflow-y-auto rounded-lg px-2 py-1
|
|
8
|
+
`,
|
|
9
|
+
item: `
|
|
10
|
+
rounded-sm h-11 relative flex w-full cursor-pointer items-center gap-2 px-3 py-2
|
|
11
|
+
md-sys-typescale-body-medium whitespace-nowrap text-md-sys-color-on-surface
|
|
12
|
+
hover:bg-md-sys-color-on-surface/8 data-[highlighted]:bg-md-sys-color-on-surface/8
|
|
13
|
+
focus-visible:outline-2 focus-visible:outline-offset-2
|
|
14
|
+
focus-visible:outline-md-sys-color-primary
|
|
15
|
+
data-[disabled]:cursor-not-allowed data-[disabled]:opacity-38
|
|
16
|
+
`,
|
|
17
|
+
icon: 'text-md-sys-color-on-surface-variant size-5 text-[20px] shrink-0',
|
|
18
|
+
indicator: 'size-5 text-[20px] shrink-0 text-md-sys-color-on-surface-variant',
|
|
19
|
+
itemContent: 'flex flex-1 flex-col gap-1 text-left min-w-0',
|
|
20
|
+
helper: 'md-sys-typescale-body-medium text-md-sys-color-on-surface-variant',
|
|
21
|
+
rightSlot: 'text-md-sys-color-on-surface-variant size-5 text-[20px] shrink-0',
|
|
22
|
+
groupHeading: 'px-3 pt-2 pb-1 md-sys-typescale-label-medium text-md-sys-color-primary'
|
|
23
|
+
},
|
|
24
|
+
variants: {
|
|
25
|
+
selected: {
|
|
26
|
+
true: {
|
|
27
|
+
item: 'bg-md-sys-color-secondary-container rounded-lg text-md-sys-color-on-secondary-container'
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
checked: {
|
|
31
|
+
true: {
|
|
32
|
+
indicator: 'text-md-sys-color-primary'
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { IconProps } from '../../../utils/icon/types.js';
|
|
1
2
|
import type { Snippet } from 'svelte';
|
|
2
3
|
/**
|
|
3
4
|
* Props for the Menu component.
|
|
@@ -18,9 +19,11 @@ export type MenuProps = {
|
|
|
18
19
|
children: Snippet;
|
|
19
20
|
/**
|
|
20
21
|
* Custom trigger element. When omitted, a default filled `Button` labelled
|
|
21
|
-
* by `label` is used.
|
|
22
|
+
* by `label` is used. Receives the trigger's props — spread them onto the
|
|
23
|
+
* rendered element/component so bits-ui doesn't wrap it in its own
|
|
24
|
+
* `<button>` (which would nest buttons).
|
|
22
25
|
*/
|
|
23
|
-
trigger?: Snippet
|
|
26
|
+
trigger?: Snippet<[Record<string, unknown>]>;
|
|
24
27
|
/**
|
|
25
28
|
* Label for the default button trigger. Ignored when `trigger` is provided.
|
|
26
29
|
* @default 'Open menu'
|
|
@@ -38,3 +41,111 @@ export type MenuProps = {
|
|
|
38
41
|
/** Additional CSS classes applied to the floating content panel. */
|
|
39
42
|
class?: string;
|
|
40
43
|
};
|
|
44
|
+
/**
|
|
45
|
+
* Props for `MenuGroup`, which wraps related `MenuItem`s (or
|
|
46
|
+
* `MenuCheckboxItem`/`MenuRadioItem`s) under an optional heading so screen
|
|
47
|
+
* readers announce them as a labelled set.
|
|
48
|
+
*/
|
|
49
|
+
export type MenuGroupProps = {
|
|
50
|
+
/** Optional label rendered above the group's items. */
|
|
51
|
+
heading?: string;
|
|
52
|
+
/** Items inside the group. */
|
|
53
|
+
children: Snippet;
|
|
54
|
+
/** Additional CSS classes applied to the group container. */
|
|
55
|
+
class?: string;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Props for `MenuRadioGroup`, which restricts its `MenuRadioItem` children
|
|
59
|
+
* to a single selected value at a time.
|
|
60
|
+
*/
|
|
61
|
+
export type MenuRadioGroupProps = {
|
|
62
|
+
/**
|
|
63
|
+
* The value of the currently selected radio item.
|
|
64
|
+
* Supports two-way binding with `bind:value`.
|
|
65
|
+
*/
|
|
66
|
+
value?: string;
|
|
67
|
+
/** Called when the selected value changes. */
|
|
68
|
+
onValueChange?: (value: string) => void;
|
|
69
|
+
/** `MenuRadioItem`s inside the group. */
|
|
70
|
+
children: Snippet;
|
|
71
|
+
/** Additional CSS classes applied to the group container. */
|
|
72
|
+
class?: string;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Props for a single option inside a `MenuRadioGroup`.
|
|
76
|
+
*/
|
|
77
|
+
export type MenuRadioItemProps = {
|
|
78
|
+
/** The value this item represents within its `MenuRadioGroup`. */
|
|
79
|
+
value: string;
|
|
80
|
+
/**
|
|
81
|
+
* Whether the item is disabled.
|
|
82
|
+
* @default false
|
|
83
|
+
*/
|
|
84
|
+
disabled?: boolean;
|
|
85
|
+
/** Optional supporting text shown below the label. */
|
|
86
|
+
helper?: string;
|
|
87
|
+
/** The item's label. */
|
|
88
|
+
children: Snippet;
|
|
89
|
+
/**
|
|
90
|
+
* Whether the menu closes when this item is selected.
|
|
91
|
+
* @default true
|
|
92
|
+
*/
|
|
93
|
+
closeOnSelect?: boolean;
|
|
94
|
+
/** Additional CSS classes applied to the item row. */
|
|
95
|
+
class?: string;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Props for a toggleable option inside a `Menu`, independent of any other
|
|
99
|
+
* item (unlike `MenuRadioItem`, any number of `MenuCheckboxItem`s can be
|
|
100
|
+
* checked at once).
|
|
101
|
+
*/
|
|
102
|
+
export type MenuCheckboxItemProps = {
|
|
103
|
+
/**
|
|
104
|
+
* The checked state. Supports two-way binding with `bind:checked`.
|
|
105
|
+
* @default false
|
|
106
|
+
*/
|
|
107
|
+
checked?: boolean;
|
|
108
|
+
/** Called when the checked state changes. */
|
|
109
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
110
|
+
/**
|
|
111
|
+
* Whether the item is disabled.
|
|
112
|
+
* @default false
|
|
113
|
+
*/
|
|
114
|
+
disabled?: boolean;
|
|
115
|
+
/** Optional supporting text shown below the label. */
|
|
116
|
+
helper?: string;
|
|
117
|
+
/** The item's label. */
|
|
118
|
+
children: Snippet;
|
|
119
|
+
/**
|
|
120
|
+
* Whether the menu closes when this item is selected.
|
|
121
|
+
* @default true
|
|
122
|
+
*/
|
|
123
|
+
closeOnSelect?: boolean;
|
|
124
|
+
/** Additional CSS classes applied to the item row. */
|
|
125
|
+
class?: string;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Props for `MenuSub`, a `MenuItem`-like row that opens a nested submenu
|
|
129
|
+
* panel on hover/click instead of firing a selection.
|
|
130
|
+
*/
|
|
131
|
+
export type MenuSubProps = {
|
|
132
|
+
/** Props for the trigger row's leading icon. */
|
|
133
|
+
iconProps?: IconProps;
|
|
134
|
+
/**
|
|
135
|
+
* Whether the submenu trigger is disabled.
|
|
136
|
+
* @default false
|
|
137
|
+
*/
|
|
138
|
+
disabled?: boolean;
|
|
139
|
+
/** Optional supporting text shown below the trigger's label. */
|
|
140
|
+
helper?: string;
|
|
141
|
+
/** The trigger row's label. */
|
|
142
|
+
children: Snippet;
|
|
143
|
+
/** Items rendered inside the nested submenu panel. */
|
|
144
|
+
submenu: Snippet;
|
|
145
|
+
/** Controlled open state for the submenu. */
|
|
146
|
+
open?: boolean;
|
|
147
|
+
/** Additional CSS classes applied to the trigger row. */
|
|
148
|
+
class?: string;
|
|
149
|
+
/** Additional CSS classes applied to the submenu's floating panel. */
|
|
150
|
+
submenuClass?: string;
|
|
151
|
+
};
|