sveltacular 0.0.77 → 1.0.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 +142 -15
- package/dist/forms/base-input-wrapper.svelte +99 -0
- package/dist/forms/base-input-wrapper.svelte.d.ts +15 -0
- package/dist/forms/bool-box/bool-box.svelte +30 -16
- package/dist/forms/bool-box/bool-box.svelte.d.ts +9 -23
- package/dist/forms/button/button.svelte +153 -89
- package/dist/forms/button/button.svelte.d.ts +25 -31
- package/dist/forms/check-box/check-box-group.svelte +63 -29
- package/dist/forms/check-box/check-box-group.svelte.d.ts +11 -29
- package/dist/forms/check-box/check-box.svelte +57 -33
- package/dist/forms/check-box/check-box.svelte.d.ts +15 -27
- package/dist/forms/check-box/index.d.ts +2 -0
- package/dist/forms/check-box/index.js +2 -0
- package/dist/forms/combo/new-or-existing-combo.svelte +37 -18
- package/dist/forms/combo/new-or-existing-combo.svelte.d.ts +15 -27
- package/dist/forms/combo-box/combo-box.svelte +655 -0
- package/dist/forms/combo-box/combo-box.svelte.d.ts +62 -0
- package/dist/forms/combo-box/index.d.ts +1 -0
- package/dist/forms/combo-box/index.js +1 -0
- package/dist/forms/date-box/date-box.svelte +80 -51
- package/dist/forms/date-box/date-box.svelte.d.ts +21 -34
- package/dist/forms/file-area/file-area.svelte +109 -57
- package/dist/forms/file-area/file-area.svelte.d.ts +12 -24
- package/dist/forms/file-box/file-box.svelte +40 -21
- package/dist/forms/file-box/file-box.svelte.d.ts +14 -27
- package/dist/forms/form-field.svelte +18 -13
- package/dist/forms/form-field.svelte.d.ts +8 -20
- package/dist/forms/form-footer.svelte +6 -3
- package/dist/forms/form-footer.svelte.d.ts +6 -28
- package/dist/forms/form-header.svelte +15 -4
- package/dist/forms/form-header.svelte.d.ts +8 -20
- package/dist/forms/form-label.svelte +15 -6
- package/dist/forms/form-label.svelte.d.ts +8 -21
- package/dist/forms/form-section.svelte +15 -4
- package/dist/forms/form-section.svelte.d.ts +8 -20
- package/dist/forms/form.svelte +30 -13
- package/dist/forms/form.svelte.d.ts +11 -24
- package/dist/forms/index.d.ts +26 -0
- package/dist/forms/index.js +31 -0
- package/dist/forms/info-box/info-box.svelte +19 -8
- package/dist/forms/info-box/info-box.svelte.d.ts +8 -21
- package/dist/forms/list-box/index.d.ts +2 -0
- package/dist/forms/list-box/index.js +1 -0
- package/dist/forms/list-box/list-box.svelte +190 -109
- package/dist/forms/list-box/list-box.svelte.d.ts +16 -28
- package/dist/forms/money-box/money-box.svelte +223 -176
- package/dist/forms/money-box/money-box.svelte.d.ts +16 -30
- package/dist/forms/number-box/number-box.svelte +84 -60
- package/dist/forms/number-box/number-box.svelte.d.ts +17 -30
- package/dist/forms/phone-box/index.d.ts +1 -0
- package/dist/forms/phone-box/index.js +1 -0
- package/dist/forms/phone-box/phone-box.svelte +152 -114
- package/dist/forms/phone-box/phone-box.svelte.d.ts +8 -22
- package/dist/forms/radio-group/index.d.ts +2 -0
- package/dist/forms/radio-group/index.js +2 -0
- package/dist/forms/radio-group/radio-box.svelte +23 -8
- package/dist/forms/radio-group/radio-box.svelte.d.ts +10 -21
- package/dist/forms/radio-group/radio-group.svelte +27 -13
- package/dist/forms/radio-group/radio-group.svelte.d.ts +10 -23
- package/dist/forms/slider/slider.svelte +210 -0
- package/dist/forms/slider/slider.svelte.d.ts +17 -0
- package/dist/forms/switch-box/switch-box.svelte +35 -21
- package/dist/forms/switch-box/switch-box.svelte.d.ts +9 -22
- package/dist/forms/text-area/text-area.svelte +89 -15
- package/dist/forms/text-area/text-area.svelte.d.ts +15 -25
- package/dist/forms/text-box/text-box.svelte +253 -75
- package/dist/forms/text-box/text-box.svelte.d.ts +28 -38
- package/dist/forms/time-box/time-box.svelte +67 -0
- package/dist/forms/time-box/time-box.svelte.d.ts +12 -0
- package/dist/forms/url-box/url-box.svelte +32 -18
- package/dist/forms/url-box/url-box.svelte.d.ts +9 -22
- package/dist/forms/validation.d.ts +60 -0
- package/dist/forms/validation.js +123 -0
- package/dist/generic/address/address.svelte +22 -11
- package/dist/generic/address/address.svelte.d.ts +9 -21
- package/dist/generic/avatar/avatar.svelte +86 -0
- package/dist/generic/avatar/avatar.svelte.d.ts +10 -0
- package/dist/generic/badge/badge.svelte +82 -0
- package/dist/generic/badge/badge.svelte.d.ts +11 -0
- package/dist/generic/card/card-container.svelte +41 -12
- package/dist/generic/card/card-container.svelte.d.ts +8 -20
- package/dist/generic/card/card.svelte +47 -27
- package/dist/generic/card/card.svelte.d.ts +9 -21
- package/dist/generic/card/index.d.ts +3 -0
- package/dist/generic/card/index.js +2 -0
- package/dist/generic/chip/chip.svelte +90 -0
- package/dist/generic/chip/chip.svelte.d.ts +11 -0
- package/dist/generic/date/date-time.svelte +86 -58
- package/dist/generic/date/date-time.svelte.d.ts +10 -22
- package/dist/generic/divider/divider.svelte.d.ts +22 -21
- package/dist/generic/dot/dot.svelte +13 -4
- package/dist/generic/dot/dot.svelte.d.ts +7 -19
- package/dist/generic/dropdown-item/dropdown-item.svelte +24 -12
- package/dist/generic/dropdown-item/dropdown-item.svelte.d.ts +10 -23
- package/dist/generic/email/email.svelte +6 -4
- package/dist/generic/email/email.svelte.d.ts +5 -17
- package/dist/generic/empty/empty.svelte +57 -26
- package/dist/generic/empty/empty.svelte.d.ts +11 -23
- package/dist/generic/header/header.svelte +26 -10
- package/dist/generic/header/header.svelte.d.ts +10 -22
- package/dist/generic/index.d.ts +28 -0
- package/dist/generic/index.js +31 -0
- package/dist/generic/link/link.svelte +20 -7
- package/dist/generic/link/link.svelte.d.ts +11 -23
- package/dist/generic/list/index.d.ts +4 -0
- package/dist/generic/list/index.js +3 -0
- package/dist/generic/list/list-item.svelte +17 -13
- package/dist/generic/list/list-item.svelte.d.ts +6 -17
- package/dist/generic/list/list.d.ts +2 -2
- package/dist/generic/list/list.svelte +28 -15
- package/dist/generic/list/list.svelte.d.ts +9 -21
- package/dist/generic/menu/menu.svelte +163 -54
- package/dist/generic/menu/menu.svelte.d.ts +16 -26
- package/dist/generic/notice/notice.svelte +119 -80
- package/dist/generic/notice/notice.svelte.d.ts +17 -28
- package/dist/generic/overlay.svelte +40 -14
- package/dist/generic/overlay.svelte.d.ts +9 -21
- package/dist/generic/panel/panel.svelte +16 -6
- package/dist/generic/panel/panel.svelte.d.ts +8 -20
- package/dist/generic/phone/phone.svelte +30 -20
- package/dist/generic/phone/phone.svelte.d.ts +6 -18
- package/dist/generic/pill/pill.svelte +47 -33
- package/dist/generic/pill/pill.svelte.d.ts +10 -23
- package/dist/generic/popover/popover.svelte +226 -0
- package/dist/generic/popover/popover.svelte.d.ts +15 -0
- package/dist/generic/rating/rating.svelte +85 -0
- package/dist/generic/rating/rating.svelte.d.ts +11 -0
- package/dist/generic/scorecard/scorecard.svelte +34 -18
- package/dist/generic/scorecard/scorecard.svelte.d.ts +9 -21
- package/dist/generic/section/section.svelte +28 -9
- package/dist/generic/section/section.svelte.d.ts +11 -23
- package/dist/generic/spinner/spinner.svelte +64 -0
- package/dist/generic/spinner/spinner.svelte.d.ts +8 -0
- package/dist/generic/theme-provider/index.d.ts +1 -0
- package/dist/generic/theme-provider/index.js +1 -0
- package/dist/generic/theme-provider/theme-provider-demo.svelte +182 -0
- package/dist/generic/theme-provider/theme-provider-demo.svelte.d.ts +3 -0
- package/dist/generic/theme-provider/theme-provider.svelte +83 -0
- package/dist/generic/theme-provider/theme-provider.svelte.d.ts +44 -0
- package/dist/generic/toaster/toaster.svelte +31 -6
- package/dist/generic/toaster/toaster.svelte.d.ts +7 -17
- package/dist/generic/tooltip/tooltip.svelte +389 -0
- package/dist/generic/tooltip/tooltip.svelte.d.ts +21 -0
- package/dist/helpers/ago.d.ts +6 -0
- package/dist/helpers/ago.js +6 -0
- package/dist/helpers/animation-actions.d.ts +124 -0
- package/dist/helpers/animation-actions.js +299 -0
- package/dist/helpers/animations.d.ts +198 -0
- package/dist/helpers/animations.js +280 -0
- package/dist/helpers/announcer.d.ts +118 -0
- package/dist/helpers/announcer.js +250 -0
- package/dist/helpers/copy-to-clipboard.svelte.d.ts +5 -0
- package/dist/helpers/copy-to-clipboard.svelte.js +28 -0
- package/dist/helpers/debounce.d.ts +7 -0
- package/dist/helpers/debounce.js +7 -0
- package/dist/helpers/focus.d.ts +123 -0
- package/dist/helpers/focus.js +335 -0
- package/dist/helpers/fuzzy-search.d.ts +41 -0
- package/dist/helpers/fuzzy-search.js +114 -0
- package/dist/helpers/index.d.ts +24 -0
- package/dist/helpers/index.js +24 -0
- package/dist/helpers/navigate-to.d.ts +4 -0
- package/dist/helpers/navigate-to.js +4 -0
- package/dist/helpers/positioning.d.ts +97 -0
- package/dist/helpers/positioning.js +230 -0
- package/dist/helpers/round-to-decimals.d.ts +7 -5
- package/dist/helpers/round-to-decimals.js +7 -5
- package/dist/helpers/spring.svelte.d.ts +97 -0
- package/dist/helpers/spring.svelte.js +216 -0
- package/dist/helpers/subscribable.d.ts +1 -1
- package/dist/helpers/theme.svelte.d.ts +63 -0
- package/dist/helpers/theme.svelte.js +123 -0
- package/dist/helpers/unique-id.d.ts +4 -0
- package/dist/helpers/unique-id.js +4 -0
- package/dist/helpers/use-position.svelte.d.ts +96 -0
- package/dist/helpers/use-position.svelte.js +189 -0
- package/dist/helpers/use-virtual-list.svelte.d.ts +121 -0
- package/dist/helpers/use-virtual-list.svelte.js +239 -0
- package/dist/icons/angle-right-icon.svelte +2 -1
- package/dist/icons/angle-right-icon.svelte.d.ts +16 -14
- package/dist/icons/angle-up-icon.svelte.d.ts +22 -21
- package/dist/icons/check-icon.svelte.d.ts +22 -21
- package/dist/icons/copy-icon.svelte +46 -0
- package/dist/icons/copy-icon.svelte.d.ts +6 -0
- package/dist/icons/envelope-icon.svelte.d.ts +22 -21
- package/dist/icons/folder-open-icon.svelte.d.ts +22 -21
- package/dist/icons/hamburger-icon.svelte.d.ts +22 -21
- package/dist/icons/home-icon.svelte +2 -1
- package/dist/icons/home-icon.svelte.d.ts +16 -14
- package/dist/icons/index.d.ts +13 -0
- package/dist/icons/index.js +13 -0
- package/dist/icons/link-icon.svelte.d.ts +22 -21
- package/dist/icons/mobile-phone-icon.svelte.d.ts +22 -21
- package/dist/icons/phone-icon.svelte.d.ts +22 -21
- package/dist/icons/svg-icon.svelte +46 -10
- package/dist/icons/svg-icon.svelte.d.ts +13 -25
- package/dist/icons/upload-icon.svelte.d.ts +22 -21
- package/dist/images/icon.svelte +9 -3
- package/dist/images/icon.svelte.d.ts +6 -18
- package/dist/images/image.svelte +28 -8
- package/dist/images/image.svelte.d.ts +14 -28
- package/dist/images/index.d.ts +2 -0
- package/dist/images/index.js +2 -0
- package/dist/index.d.ts +13 -122
- package/dist/index.js +27 -135
- package/dist/layout/flex-col.svelte +65 -16
- package/dist/layout/flex-col.svelte.d.ts +12 -24
- package/dist/layout/flex-item.svelte +13 -3
- package/dist/layout/flex-item.svelte.d.ts +8 -20
- package/dist/layout/flex-row.svelte +70 -15
- package/dist/layout/flex-row.svelte.d.ts +14 -26
- package/dist/layout/grid.svelte +7 -1
- package/dist/layout/grid.svelte.d.ts +6 -28
- package/dist/layout/index.d.ts +4 -0
- package/dist/layout/index.js +4 -0
- package/dist/modals/alert.svelte +42 -28
- package/dist/modals/alert.svelte.d.ts +13 -26
- package/dist/modals/confirm.svelte +54 -37
- package/dist/modals/confirm.svelte.d.ts +16 -29
- package/dist/modals/dialog-body.svelte +10 -4
- package/dist/modals/dialog-body.svelte.d.ts +6 -28
- package/dist/modals/dialog-close-button.svelte +15 -9
- package/dist/modals/dialog-close-button.svelte.d.ts +6 -19
- package/dist/modals/dialog-footer.svelte +6 -3
- package/dist/modals/dialog-footer.svelte.d.ts +6 -28
- package/dist/modals/dialog-header.svelte +13 -1
- package/dist/modals/dialog-header.svelte.d.ts +7 -28
- package/dist/modals/dialog-window.svelte +42 -14
- package/dist/modals/dialog-window.svelte.d.ts +9 -19
- package/dist/modals/index.d.ts +9 -0
- package/dist/modals/index.js +9 -0
- package/dist/modals/modal.svelte +88 -23
- package/dist/modals/modal.svelte.d.ts +14 -24
- package/dist/modals/prompt.svelte +71 -49
- package/dist/modals/prompt.svelte.d.ts +19 -32
- package/dist/navigation/accordion/accordion.svelte +104 -0
- package/dist/navigation/accordion/accordion.svelte.d.ts +9 -0
- package/dist/navigation/app-bar/app-bar.svelte +26 -12
- package/dist/navigation/app-bar/app-bar.svelte.d.ts +10 -22
- package/dist/navigation/app-bar/app-branding.svelte +10 -5
- package/dist/navigation/app-bar/app-branding.svelte.d.ts +6 -17
- package/dist/navigation/app-bar/app-logo.svelte +20 -5
- package/dist/navigation/app-bar/app-logo.svelte.d.ts +9 -21
- package/dist/navigation/app-bar/app-nav-item.svelte +26 -13
- package/dist/navigation/app-bar/app-nav-item.svelte.d.ts +9 -22
- package/dist/navigation/app-bar/app-nav.svelte +39 -12
- package/dist/navigation/app-bar/app-nav.svelte.d.ts +8 -20
- package/dist/navigation/app-bar/index.d.ts +5 -0
- package/dist/navigation/app-bar/index.js +5 -0
- package/dist/navigation/breadcrumbs/breadcrumbs.svelte +54 -27
- package/dist/navigation/breadcrumbs/breadcrumbs.svelte.d.ts +12 -23
- package/dist/navigation/command-palette/command-palette.svelte +758 -0
- package/dist/navigation/command-palette/command-palette.svelte.d.ts +65 -0
- package/dist/navigation/command-palette/index.d.ts +2 -0
- package/dist/navigation/command-palette/index.js +1 -0
- package/dist/navigation/context-menu/README.md +146 -0
- package/dist/navigation/context-menu/context-menu-divider.svelte +21 -0
- package/dist/navigation/context-menu/context-menu-divider.svelte.d.ts +18 -0
- package/dist/navigation/context-menu/context-menu-item.svelte +268 -0
- package/dist/navigation/context-menu/context-menu-item.svelte.d.ts +19 -0
- package/dist/navigation/context-menu/context-menu.svelte +226 -0
- package/dist/navigation/context-menu/context-menu.svelte.d.ts +38 -0
- package/dist/navigation/context-menu/index.d.ts +3 -0
- package/dist/navigation/context-menu/index.js +3 -0
- package/dist/navigation/drawer/drawer.svelte +137 -0
- package/dist/navigation/drawer/drawer.svelte.d.ts +11 -0
- package/dist/navigation/dropdown-button/dropdown-button.svelte +58 -19
- package/dist/navigation/dropdown-button/dropdown-button.svelte.d.ts +10 -22
- package/dist/navigation/index.d.ts +11 -0
- package/dist/navigation/index.js +14 -0
- package/dist/navigation/pagination/pagination.svelte +55 -37
- package/dist/navigation/pagination/pagination.svelte.d.ts +10 -23
- package/dist/navigation/side-bar/side-bar.svelte +18 -9
- package/dist/navigation/side-bar/side-bar.svelte.d.ts +7 -19
- package/dist/navigation/tabs/index.d.ts +4 -0
- package/dist/navigation/tabs/index.js +3 -0
- package/dist/navigation/tabs/tab-context.d.ts +12 -6
- package/dist/navigation/tabs/tab-group.svelte +268 -52
- package/dist/navigation/tabs/tab-group.svelte.d.ts +9 -22
- package/dist/navigation/tabs/tab.svelte +64 -33
- package/dist/navigation/tabs/tab.svelte.d.ts +11 -24
- package/dist/navigation/wizard/index.d.ts +3 -0
- package/dist/navigation/wizard/index.js +2 -0
- package/dist/navigation/wizard/wizard-context.d.ts +13 -8
- package/dist/navigation/wizard/wizard-step.svelte +38 -13
- package/dist/navigation/wizard/wizard-step.svelte.d.ts +8 -20
- package/dist/navigation/wizard/wizard.svelte +123 -81
- package/dist/navigation/wizard/wizard.svelte.d.ts +15 -28
- package/dist/placeholders/index.d.ts +6 -0
- package/dist/placeholders/index.js +6 -0
- package/dist/placeholders/loading.svelte +39 -23
- package/dist/placeholders/loading.svelte.d.ts +10 -19
- package/dist/placeholders/progress.svelte +7 -6
- package/dist/placeholders/progress.svelte.d.ts +5 -17
- package/dist/placeholders/skeleton-input.svelte +66 -38
- package/dist/placeholders/skeleton-input.svelte.d.ts +5 -17
- package/dist/placeholders/skeleton-paragraph.svelte +25 -0
- package/dist/placeholders/skeleton-paragraph.svelte.d.ts +8 -0
- package/dist/placeholders/skeleton-table.svelte +75 -0
- package/dist/placeholders/skeleton-table.svelte.d.ts +8 -0
- package/dist/placeholders/skeleton-text.svelte +46 -15
- package/dist/placeholders/skeleton-text.svelte.d.ts +7 -19
- package/dist/tables/cell-renderers.d.ts +24 -0
- package/dist/tables/cell-renderers.js +228 -0
- package/dist/tables/data-grid.svelte +332 -118
- package/dist/tables/data-grid.svelte.d.ts +34 -35
- package/dist/tables/index.d.ts +10 -0
- package/dist/tables/index.js +12 -0
- package/dist/tables/table-caption.svelte +13 -4
- package/dist/tables/table-caption.svelte.d.ts +8 -20
- package/dist/tables/table-cell.svelte +45 -14
- package/dist/tables/table-cell.svelte.d.ts +10 -21
- package/dist/tables/table-context.svelte.d.ts +32 -0
- package/dist/tables/table-context.svelte.js +160 -0
- package/dist/tables/table-header-cell.svelte +158 -18
- package/dist/tables/table-header-cell.svelte.d.ts +15 -21
- package/dist/tables/table-header.svelte +31 -6
- package/dist/tables/table-header.svelte.d.ts +7 -28
- package/dist/tables/table-row.svelte +87 -7
- package/dist/tables/table-row.svelte.d.ts +10 -28
- package/dist/tables/table.svelte +61 -2
- package/dist/tables/table.svelte.d.ts +13 -28
- package/dist/test-utils/accessibility-helpers.d.ts +80 -0
- package/dist/test-utils/accessibility-helpers.js +220 -0
- package/dist/test-utils/index.d.ts +8 -0
- package/dist/test-utils/index.js +8 -0
- package/dist/test-utils/mock-helpers.d.ts +68 -0
- package/dist/test-utils/mock-helpers.js +165 -0
- package/dist/test-utils/render-helpers.d.ts +55 -0
- package/dist/test-utils/render-helpers.js +114 -0
- package/dist/test-utils/setup.d.ts +5 -0
- package/dist/test-utils/setup.js +91 -0
- package/dist/test-utils/test-data.d.ts +102 -0
- package/dist/test-utils/test-data.js +99 -0
- package/dist/timeline/index.d.ts +2 -0
- package/dist/timeline/index.js +2 -0
- package/dist/timeline/timeline-item.svelte +26 -9
- package/dist/timeline/timeline-item.svelte.d.ts +13 -25
- package/dist/timeline/timeline.svelte +12 -6
- package/dist/timeline/timeline.svelte.d.ts +6 -28
- package/dist/types/data.d.ts +61 -0
- package/dist/types/date.d.ts +1 -1
- package/dist/types/form.d.ts +20 -2
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +5 -0
- package/dist/types/size.d.ts +22 -0
- package/dist/types/size.js +22 -0
- package/dist/typography/code-block.svelte +89 -10
- package/dist/typography/code-block.svelte.d.ts +7 -19
- package/dist/typography/code.svelte +89 -0
- package/dist/typography/code.svelte.d.ts +7 -0
- package/dist/typography/headline.svelte +29 -9
- package/dist/typography/headline.svelte.d.ts +8 -20
- package/dist/typography/index.d.ts +6 -0
- package/dist/typography/index.js +6 -0
- package/dist/typography/paragraph.svelte +18 -10
- package/dist/typography/paragraph.svelte.d.ts +6 -28
- package/dist/typography/subtitle.svelte +18 -4
- package/dist/typography/subtitle.svelte.d.ts +8 -20
- package/dist/typography/text.svelte +20 -5
- package/dist/typography/text.svelte.d.ts +9 -21
- package/package.json +31 -21
- package/dist/navigation/accordian/accordian.svelte +0 -62
- package/dist/navigation/accordian/accordian.svelte.d.ts +0 -21
- package/dist/tables/table-body.svelte +0 -3
- package/dist/tables/table-body.svelte.d.ts +0 -29
- package/dist/tables/table-footer-cell.svelte +0 -22
- package/dist/tables/table-footer-cell.svelte.d.ts +0 -20
- package/dist/tables/table-footer-row.svelte +0 -3
- package/dist/tables/table-footer-row.svelte.d.ts +0 -29
- package/dist/tables/table-footer.svelte +0 -13
- package/dist/tables/table-footer.svelte.d.ts +0 -29
- package/dist/tables/table-header-row.svelte +0 -4
- package/dist/tables/table-header-row.svelte.d.ts +0 -29
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
/**
|
|
3
|
+
* Command item interface
|
|
4
|
+
*/
|
|
5
|
+
export interface Command {
|
|
6
|
+
/** Unique identifier for the command */
|
|
7
|
+
id: string;
|
|
8
|
+
/** Display label for the command */
|
|
9
|
+
label: string;
|
|
10
|
+
/** Optional description/subtitle */
|
|
11
|
+
description?: string;
|
|
12
|
+
/** Optional icon (snippet or string class name) */
|
|
13
|
+
icon?: Snippet | string;
|
|
14
|
+
/** Group this command belongs to */
|
|
15
|
+
group?: string;
|
|
16
|
+
/** Keywords for better search matching */
|
|
17
|
+
keywords?: string[];
|
|
18
|
+
/** Custom data to pass to onSelect handler */
|
|
19
|
+
data?: any;
|
|
20
|
+
/** Whether this command is disabled */
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
/** Action to perform when selected */
|
|
23
|
+
action?: () => void | Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export interface CommandGroup {
|
|
26
|
+
/** Group identifier */
|
|
27
|
+
id: string;
|
|
28
|
+
/** Group display name */
|
|
29
|
+
label: string;
|
|
30
|
+
/** Group priority for ordering */
|
|
31
|
+
priority?: number;
|
|
32
|
+
}
|
|
33
|
+
interface Props {
|
|
34
|
+
/** List of available commands */
|
|
35
|
+
commands?: Command[];
|
|
36
|
+
/** Command groups configuration */
|
|
37
|
+
groups?: CommandGroup[];
|
|
38
|
+
/** Whether the palette is open */
|
|
39
|
+
open?: boolean;
|
|
40
|
+
/** Placeholder text for search input */
|
|
41
|
+
placeholder?: string;
|
|
42
|
+
/** Show recent commands at the top */
|
|
43
|
+
showRecent?: boolean;
|
|
44
|
+
/** Maximum recent commands to show */
|
|
45
|
+
maxRecent?: number;
|
|
46
|
+
/** Keyboard shortcut to open (default: 'k' for Cmd/Ctrl+K) */
|
|
47
|
+
shortcut?: string;
|
|
48
|
+
/** Modifier key for shortcut (default: 'meta' for Cmd/Ctrl) */
|
|
49
|
+
shortcutModifier?: 'meta' | 'ctrl' | 'alt' | 'shift';
|
|
50
|
+
/** Enable keyboard shortcut */
|
|
51
|
+
enableShortcut?: boolean;
|
|
52
|
+
/** Empty state message */
|
|
53
|
+
emptyMessage?: string;
|
|
54
|
+
/** Blur background when open */
|
|
55
|
+
blur?: boolean;
|
|
56
|
+
/** Callback when a command is selected */
|
|
57
|
+
onSelect?: (command: Command) => void;
|
|
58
|
+
/** Callback when palette opens */
|
|
59
|
+
onOpen?: () => void;
|
|
60
|
+
/** Callback when palette closes */
|
|
61
|
+
onClose?: () => void;
|
|
62
|
+
}
|
|
63
|
+
declare const CommandPalette: import("svelte").Component<Props, {}, "open">;
|
|
64
|
+
type CommandPalette = ReturnType<typeof CommandPalette>;
|
|
65
|
+
export default CommandPalette;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as CommandPalette } from './command-palette.svelte';
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Context Menu Component
|
|
2
|
+
|
|
3
|
+
A fully-featured right-click menu component with keyboard navigation and nested submenus.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- ✅ Right-click trigger with contextmenu event
|
|
8
|
+
- ✅ Full keyboard navigation (↑↓←→, Home, End, Enter, Space, Escape)
|
|
9
|
+
- ✅ Nested submenus with multi-level support
|
|
10
|
+
- ✅ Auto-positioning with viewport collision detection
|
|
11
|
+
- ✅ Fully accessible (ARIA roles, keyboard support)
|
|
12
|
+
- ✅ Visual states: hover, focus, disabled, danger
|
|
13
|
+
- ✅ Icon support
|
|
14
|
+
- ✅ Click outside to close
|
|
15
|
+
|
|
16
|
+
## Basic Usage
|
|
17
|
+
|
|
18
|
+
```svelte
|
|
19
|
+
<script>
|
|
20
|
+
import { ContextMenu, ContextMenuItem, ContextMenuDivider } from 'sveltacular';
|
|
21
|
+
|
|
22
|
+
let menu;
|
|
23
|
+
|
|
24
|
+
function showMenu(event) {
|
|
25
|
+
event.preventDefault();
|
|
26
|
+
menu.show(event);
|
|
27
|
+
}
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<div oncontextmenu={showMenu}>
|
|
31
|
+
Right-click me
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<ContextMenu bind:this={menu}>
|
|
35
|
+
<ContextMenuItem onClick={() => console.log('New')}>
|
|
36
|
+
New File
|
|
37
|
+
</ContextMenuItem>
|
|
38
|
+
<ContextMenuItem onClick={() => console.log('Open')}>
|
|
39
|
+
Open
|
|
40
|
+
</ContextMenuItem>
|
|
41
|
+
<ContextMenuDivider />
|
|
42
|
+
<ContextMenuItem onClick={() => console.log('Delete')} danger>
|
|
43
|
+
Delete
|
|
44
|
+
</ContextMenuItem>
|
|
45
|
+
</ContextMenu>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## With Icons
|
|
49
|
+
|
|
50
|
+
```svelte
|
|
51
|
+
<ContextMenuItem onClick={() => console.log('Copy')}>
|
|
52
|
+
{#snippet icon()}
|
|
53
|
+
<CopyIcon />
|
|
54
|
+
{/snippet}
|
|
55
|
+
Copy
|
|
56
|
+
</ContextMenuItem>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Nested Submenus
|
|
60
|
+
|
|
61
|
+
```svelte
|
|
62
|
+
<ContextMenuItem>
|
|
63
|
+
{#snippet submenu()}
|
|
64
|
+
<ContextMenuItem onClick={() => console.log('Option 1')}>
|
|
65
|
+
Option 1
|
|
66
|
+
</ContextMenuItem>
|
|
67
|
+
<ContextMenuItem onClick={() => console.log('Option 2')}>
|
|
68
|
+
Option 2
|
|
69
|
+
</ContextMenuItem>
|
|
70
|
+
{/snippet}
|
|
71
|
+
More Options
|
|
72
|
+
</ContextMenuItem>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Props
|
|
76
|
+
|
|
77
|
+
### ContextMenu
|
|
78
|
+
|
|
79
|
+
| Prop | Type | Default | Description |
|
|
80
|
+
|------|------|---------|-------------|
|
|
81
|
+
| `onOpen` | `() => void` | `undefined` | Callback when menu opens |
|
|
82
|
+
| `onClose` | `() => void` | `undefined` | Callback when menu closes |
|
|
83
|
+
| `closeOnClick` | `boolean` | `true` | Auto-close menu when item is clicked |
|
|
84
|
+
|
|
85
|
+
### ContextMenuItem
|
|
86
|
+
|
|
87
|
+
| Prop | Type | Default | Description |
|
|
88
|
+
|------|------|---------|-------------|
|
|
89
|
+
| `onClick` | `() => void` | `undefined` | Callback when item is clicked |
|
|
90
|
+
| `disabled` | `boolean` | `false` | Disable the menu item |
|
|
91
|
+
| `danger` | `boolean` | `false` | Style as destructive action (red) |
|
|
92
|
+
| `icon` | `Snippet` | `undefined` | Optional icon snippet |
|
|
93
|
+
| `submenu` | `Snippet` | `undefined` | Optional submenu content |
|
|
94
|
+
|
|
95
|
+
## Methods
|
|
96
|
+
|
|
97
|
+
### show(event)
|
|
98
|
+
|
|
99
|
+
Show the context menu at the event position.
|
|
100
|
+
|
|
101
|
+
```svelte
|
|
102
|
+
menu.show(event);
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### hide()
|
|
106
|
+
|
|
107
|
+
Hide the context menu.
|
|
108
|
+
|
|
109
|
+
```svelte
|
|
110
|
+
menu.hide();
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Keyboard Navigation
|
|
114
|
+
|
|
115
|
+
- **↑ / ↓** - Navigate between items
|
|
116
|
+
- **→** - Open submenu
|
|
117
|
+
- **←** - Close submenu
|
|
118
|
+
- **Enter / Space** - Activate item
|
|
119
|
+
- **Escape** - Close menu
|
|
120
|
+
- **Home** - Jump to first item
|
|
121
|
+
- **End** - Jump to last item
|
|
122
|
+
|
|
123
|
+
## Accessibility
|
|
124
|
+
|
|
125
|
+
- Uses ARIA `menu` and `menuitem` roles
|
|
126
|
+
- Full keyboard navigation support
|
|
127
|
+
- Focus management for submenus
|
|
128
|
+
- Screen reader compatible
|
|
129
|
+
- WCAG 2.1 AA compliant
|
|
130
|
+
|
|
131
|
+
## Testing
|
|
132
|
+
|
|
133
|
+
See `CONTEXT_MENU_TESTING.md` for comprehensive testing guide with 50+ test checkpoints.
|
|
134
|
+
|
|
135
|
+
## Note on Storybook
|
|
136
|
+
|
|
137
|
+
Due to limitations in the Storybook Svelte CSF parser with advanced Svelte 5 syntax, this component does not have interactive Storybook stories. However, the component is fully functional and can be tested in your application or by following the testing guide.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
**Component Version:** 1.0.0
|
|
142
|
+
**Last Updated:** January 3, 2026
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* ContextMenuDivider Component
|
|
4
|
+
*
|
|
5
|
+
* Visual separator for context menu items.
|
|
6
|
+
*
|
|
7
|
+
* @component
|
|
8
|
+
*/
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<div class="context-menu-divider" role="separator" aria-orientation="horizontal"></div>
|
|
12
|
+
|
|
13
|
+
<style>.context-menu-divider {
|
|
14
|
+
height: 1px;
|
|
15
|
+
margin: 0.25rem 0;
|
|
16
|
+
background-color: var(--form-input-border, #e5e7eb);
|
|
17
|
+
}</style>
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
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> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const ContextMenuDivider: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type ContextMenuDivider = InstanceType<typeof ContextMenuDivider>;
|
|
18
|
+
export default ContextMenuDivider;
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* ContextMenuItem Component
|
|
4
|
+
*
|
|
5
|
+
* Individual item in a context menu. Can contain a submenu.
|
|
6
|
+
*
|
|
7
|
+
* @component
|
|
8
|
+
*/
|
|
9
|
+
import type { Snippet } from 'svelte';
|
|
10
|
+
import { getContext } from 'svelte';
|
|
11
|
+
import AngleRightIcon from '../../icons/angle-right-icon.svelte';
|
|
12
|
+
|
|
13
|
+
let {
|
|
14
|
+
onClick = undefined,
|
|
15
|
+
disabled = false,
|
|
16
|
+
danger = false,
|
|
17
|
+
icon = undefined,
|
|
18
|
+
submenu = undefined,
|
|
19
|
+
children
|
|
20
|
+
}: {
|
|
21
|
+
onClick?: (() => void) | undefined;
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
danger?: boolean;
|
|
24
|
+
icon?: Snippet | undefined;
|
|
25
|
+
submenu?: Snippet | undefined;
|
|
26
|
+
children: Snippet;
|
|
27
|
+
} = $props();
|
|
28
|
+
|
|
29
|
+
let showSubmenu = $state(false);
|
|
30
|
+
let itemRef: HTMLDivElement | null = null;
|
|
31
|
+
let submenuRef = $state<HTMLDivElement | null>(null);
|
|
32
|
+
let submenuTimeout: number | null = null;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Handle item click
|
|
36
|
+
*/
|
|
37
|
+
function handleClick(event: Event) {
|
|
38
|
+
if (disabled) {
|
|
39
|
+
event.preventDefault();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// If there's a submenu, toggle it instead of closing
|
|
44
|
+
if (submenu) {
|
|
45
|
+
event.stopPropagation();
|
|
46
|
+
showSubmenu = !showSubmenu;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
onClick?.();
|
|
51
|
+
|
|
52
|
+
// Get the context menu and tell it to close
|
|
53
|
+
const contextMenu = getContext('contextMenu') as any;
|
|
54
|
+
if (contextMenu?.handleItemClick) {
|
|
55
|
+
contextMenu.handleItemClick();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Handle keyboard interaction
|
|
61
|
+
*/
|
|
62
|
+
function handleKeyDown(event: KeyboardEvent) {
|
|
63
|
+
if (disabled) return;
|
|
64
|
+
|
|
65
|
+
switch (event.key) {
|
|
66
|
+
case 'Enter':
|
|
67
|
+
case ' ':
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
handleClick(event);
|
|
70
|
+
break;
|
|
71
|
+
|
|
72
|
+
case 'ArrowRight':
|
|
73
|
+
if (submenu) {
|
|
74
|
+
event.preventDefault();
|
|
75
|
+
event.stopPropagation();
|
|
76
|
+
showSubmenu = true;
|
|
77
|
+
// Focus first item in submenu
|
|
78
|
+
setTimeout(() => {
|
|
79
|
+
const firstItem = submenuRef?.querySelector('[role="menuitem"]') as HTMLElement;
|
|
80
|
+
firstItem?.focus();
|
|
81
|
+
}, 0);
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
|
|
85
|
+
case 'ArrowLeft':
|
|
86
|
+
if (showSubmenu) {
|
|
87
|
+
event.preventDefault();
|
|
88
|
+
event.stopPropagation();
|
|
89
|
+
showSubmenu = false;
|
|
90
|
+
itemRef?.focus();
|
|
91
|
+
}
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Show submenu on hover
|
|
98
|
+
*/
|
|
99
|
+
function handleMouseEnter() {
|
|
100
|
+
if (submenu && !disabled) {
|
|
101
|
+
if (submenuTimeout) {
|
|
102
|
+
clearTimeout(submenuTimeout);
|
|
103
|
+
}
|
|
104
|
+
submenuTimeout = window.setTimeout(() => {
|
|
105
|
+
showSubmenu = true;
|
|
106
|
+
}, 200);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Hide submenu on leave
|
|
112
|
+
*/
|
|
113
|
+
function handleMouseLeave() {
|
|
114
|
+
if (submenuTimeout) {
|
|
115
|
+
clearTimeout(submenuTimeout);
|
|
116
|
+
submenuTimeout = null;
|
|
117
|
+
}
|
|
118
|
+
// Don't hide if mouse is over submenu
|
|
119
|
+
if (submenu) {
|
|
120
|
+
setTimeout(() => {
|
|
121
|
+
const isOverSubmenu = submenuRef?.matches(':hover');
|
|
122
|
+
if (!isOverSubmenu) {
|
|
123
|
+
showSubmenu = false;
|
|
124
|
+
}
|
|
125
|
+
}, 100);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Position submenu
|
|
131
|
+
*/
|
|
132
|
+
function getSubmenuPosition() {
|
|
133
|
+
if (!itemRef) return 'left: 100%; top: 0;';
|
|
134
|
+
|
|
135
|
+
const rect = itemRef.getBoundingClientRect();
|
|
136
|
+
const viewportWidth = window.innerWidth;
|
|
137
|
+
|
|
138
|
+
// Check if submenu would go off right edge
|
|
139
|
+
const wouldOverflow = rect.right + 200 > viewportWidth; // Assume 200px submenu width
|
|
140
|
+
|
|
141
|
+
if (wouldOverflow) {
|
|
142
|
+
return 'right: 100%; top: 0;';
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return 'left: 100%; top: 0;';
|
|
146
|
+
}
|
|
147
|
+
</script>
|
|
148
|
+
|
|
149
|
+
<div
|
|
150
|
+
bind:this={itemRef}
|
|
151
|
+
class="context-menu-item"
|
|
152
|
+
class:disabled
|
|
153
|
+
class:danger
|
|
154
|
+
class:has-submenu={!!submenu}
|
|
155
|
+
role="menuitem"
|
|
156
|
+
tabindex={disabled ? -1 : 0}
|
|
157
|
+
aria-disabled={disabled}
|
|
158
|
+
onclick={handleClick}
|
|
159
|
+
onkeydown={handleKeyDown}
|
|
160
|
+
onmouseenter={handleMouseEnter}
|
|
161
|
+
onmouseleave={handleMouseLeave}
|
|
162
|
+
>
|
|
163
|
+
{#if icon}
|
|
164
|
+
<span class="icon" aria-hidden="true">
|
|
165
|
+
{@render icon()}
|
|
166
|
+
</span>
|
|
167
|
+
{/if}
|
|
168
|
+
|
|
169
|
+
<span class="label">
|
|
170
|
+
{@render children()}
|
|
171
|
+
</span>
|
|
172
|
+
|
|
173
|
+
{#if submenu}
|
|
174
|
+
<span class="arrow" aria-hidden="true">
|
|
175
|
+
<AngleRightIcon />
|
|
176
|
+
</span>
|
|
177
|
+
|
|
178
|
+
{#if showSubmenu}
|
|
179
|
+
<div
|
|
180
|
+
bind:this={submenuRef}
|
|
181
|
+
class="submenu"
|
|
182
|
+
role="menu"
|
|
183
|
+
aria-orientation="vertical"
|
|
184
|
+
style={getSubmenuPosition()}
|
|
185
|
+
>
|
|
186
|
+
{@render submenu()}
|
|
187
|
+
</div>
|
|
188
|
+
{/if}
|
|
189
|
+
{/if}
|
|
190
|
+
</div>
|
|
191
|
+
|
|
192
|
+
<style>.context-menu-item {
|
|
193
|
+
position: relative;
|
|
194
|
+
display: flex;
|
|
195
|
+
align-items: center;
|
|
196
|
+
gap: 0.75rem;
|
|
197
|
+
padding: 0.5rem 0.75rem;
|
|
198
|
+
cursor: pointer;
|
|
199
|
+
color: var(--form-input-fg, #000);
|
|
200
|
+
font-size: 0.875rem;
|
|
201
|
+
transition: background-color 0.15s ease;
|
|
202
|
+
outline: none;
|
|
203
|
+
}
|
|
204
|
+
.context-menu-item:hover:not(.disabled) {
|
|
205
|
+
background-color: var(--form-input-selected-bg, #0066cc);
|
|
206
|
+
color: var(--form-input-selected-fg, white);
|
|
207
|
+
}
|
|
208
|
+
.context-menu-item:focus-visible {
|
|
209
|
+
background-color: var(--form-input-selected-bg, #0066cc);
|
|
210
|
+
color: var(--form-input-selected-fg, white);
|
|
211
|
+
outline: 2px solid var(--focus-ring-color, #0066cc);
|
|
212
|
+
outline-offset: -2px;
|
|
213
|
+
}
|
|
214
|
+
.context-menu-item.disabled {
|
|
215
|
+
opacity: 0.5;
|
|
216
|
+
cursor: not-allowed;
|
|
217
|
+
}
|
|
218
|
+
.context-menu-item.danger {
|
|
219
|
+
color: var(--danger-color, #dc2626);
|
|
220
|
+
}
|
|
221
|
+
.context-menu-item.danger:hover:not(.disabled), .context-menu-item.danger:focus-visible {
|
|
222
|
+
background-color: var(--danger-color, #dc2626);
|
|
223
|
+
color: white;
|
|
224
|
+
}
|
|
225
|
+
.context-menu-item .icon {
|
|
226
|
+
display: flex;
|
|
227
|
+
align-items: center;
|
|
228
|
+
justify-content: center;
|
|
229
|
+
width: 1rem;
|
|
230
|
+
height: 1rem;
|
|
231
|
+
flex-shrink: 0;
|
|
232
|
+
}
|
|
233
|
+
.context-menu-item .label {
|
|
234
|
+
flex: 1;
|
|
235
|
+
white-space: nowrap;
|
|
236
|
+
}
|
|
237
|
+
.context-menu-item .arrow {
|
|
238
|
+
display: flex;
|
|
239
|
+
align-items: center;
|
|
240
|
+
justify-content: center;
|
|
241
|
+
width: 1rem;
|
|
242
|
+
height: 1rem;
|
|
243
|
+
flex-shrink: 0;
|
|
244
|
+
margin-left: auto;
|
|
245
|
+
}
|
|
246
|
+
.context-menu-item .submenu {
|
|
247
|
+
position: absolute;
|
|
248
|
+
z-index: 10001;
|
|
249
|
+
min-width: 12rem;
|
|
250
|
+
background: var(--form-input-bg, white);
|
|
251
|
+
border: 1px solid var(--form-input-border, #ccc);
|
|
252
|
+
border-radius: var(--border-radius-md, 0.375rem);
|
|
253
|
+
box-shadow: var(--shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.1));
|
|
254
|
+
padding: 0.25rem 0;
|
|
255
|
+
animation: fadeIn 0.15s ease;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
@keyframes fadeIn {
|
|
259
|
+
from {
|
|
260
|
+
opacity: 0;
|
|
261
|
+
transform: scale(0.95);
|
|
262
|
+
}
|
|
263
|
+
to {
|
|
264
|
+
opacity: 1;
|
|
265
|
+
transform: scale(1);
|
|
266
|
+
}
|
|
267
|
+
}</style>
|
|
268
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ContextMenuItem Component
|
|
3
|
+
*
|
|
4
|
+
* Individual item in a context menu. Can contain a submenu.
|
|
5
|
+
*
|
|
6
|
+
* @component
|
|
7
|
+
*/
|
|
8
|
+
import type { Snippet } from 'svelte';
|
|
9
|
+
type $$ComponentProps = {
|
|
10
|
+
onClick?: (() => void) | undefined;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
danger?: boolean;
|
|
13
|
+
icon?: Snippet | undefined;
|
|
14
|
+
submenu?: Snippet | undefined;
|
|
15
|
+
children: Snippet;
|
|
16
|
+
};
|
|
17
|
+
declare const ContextMenuItem: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
18
|
+
type ContextMenuItem = ReturnType<typeof ContextMenuItem>;
|
|
19
|
+
export default ContextMenuItem;
|