@sekiui/elements 0.0.55 → 0.0.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/index.js +1053 -91
- package/dist/cdn/p-BJCq8m2o.js +138 -0
- package/dist/cdn/p-BfRJQMIU.js +111 -0
- package/dist/cdn/{p-bMBhrs0a.js → p-Bp7tjKwQ.js} +427 -7
- package/dist/cdn/seki-button.js +1 -1
- package/dist/cdn/seki-card-action.d.ts +11 -0
- package/dist/cdn/seki-card-action.js +38 -0
- package/dist/cdn/seki-card-content.d.ts +11 -0
- package/dist/cdn/seki-card-content.js +38 -0
- package/dist/cdn/seki-card-description.d.ts +11 -0
- package/dist/cdn/seki-card-description.js +38 -0
- package/dist/cdn/seki-card-footer.d.ts +11 -0
- package/dist/cdn/seki-card-footer.js +44 -0
- package/dist/cdn/seki-card-header.d.ts +11 -0
- package/dist/cdn/seki-card-header.js +38 -0
- package/dist/cdn/seki-card-title.d.ts +11 -0
- package/dist/cdn/seki-card-title.js +59 -0
- package/dist/cdn/seki-card.d.ts +11 -0
- package/dist/cdn/seki-card.js +39 -0
- package/dist/cdn/seki-field-description.js +2 -2
- package/dist/cdn/seki-field-error.js +2 -2
- package/dist/cdn/seki-field-group.js +2 -2
- package/dist/cdn/seki-field-label.js +2 -2
- package/dist/cdn/seki-field-legend.js +2 -2
- package/dist/cdn/seki-field.js +2 -2
- package/dist/cdn/seki-fieldset.js +2 -2
- package/dist/cdn/seki-input.js +2 -2
- package/dist/cdn/seki-select-content.js +1 -1
- package/dist/cdn/seki-select-group.js +2 -2
- package/dist/cdn/seki-select-option.js +2 -2
- package/dist/cdn/seki-select-trigger.js +1 -1
- package/dist/cdn/seki-select.js +2 -2
- package/dist/cdn/seki-sidebar-content.d.ts +11 -0
- package/dist/cdn/seki-sidebar-content.js +38 -0
- package/dist/cdn/seki-sidebar-footer.d.ts +11 -0
- package/dist/cdn/seki-sidebar-footer.js +38 -0
- package/dist/cdn/seki-sidebar-group.d.ts +11 -0
- package/dist/cdn/seki-sidebar-group.js +131 -0
- package/dist/cdn/seki-sidebar-header.d.ts +11 -0
- package/dist/cdn/seki-sidebar-header.js +38 -0
- package/dist/cdn/seki-sidebar-menu-item.d.ts +11 -0
- package/dist/cdn/seki-sidebar-menu-item.js +200 -0
- package/dist/cdn/seki-sidebar-menu-sub.d.ts +11 -0
- package/dist/cdn/seki-sidebar-menu-sub.js +123 -0
- package/dist/cdn/seki-sidebar-menu.d.ts +11 -0
- package/dist/cdn/seki-sidebar-menu.js +38 -0
- package/dist/cdn/seki-sidebar-trigger.d.ts +11 -0
- package/dist/cdn/seki-sidebar-trigger.js +109 -0
- package/dist/cdn/seki-sidebar.d.ts +11 -0
- package/dist/cdn/seki-sidebar.js +380 -0
- package/dist/cdn/seki-skeleton.js +2 -2
- package/dist/cdn/seki-switch.js +1 -1
- package/dist/cdn/seki-tooltip.js +1 -1
- package/dist/cjs/{index-Dd6_-KaR.js → index-tQYksITZ.js} +426 -6
- package/dist/cjs/index.cjs.js +1115 -63
- package/dist/cjs/keyboard-Cjl5HYES.js +142 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/seki-button.cjs.entry.js +1 -1
- package/dist/cjs/seki-card-action.cjs.entry.js +17 -0
- package/dist/cjs/seki-card-content.cjs.entry.js +17 -0
- package/dist/cjs/seki-card-description.cjs.entry.js +17 -0
- package/dist/cjs/seki-card-footer.cjs.entry.js +22 -0
- package/dist/cjs/seki-card-header.cjs.entry.js +17 -0
- package/dist/cjs/seki-card-title.cjs.entry.js +37 -0
- package/dist/cjs/seki-card.cjs.entry.js +17 -0
- package/dist/cjs/seki-field-description.cjs.entry.js +2 -2
- package/dist/cjs/seki-field-error.cjs.entry.js +2 -2
- package/dist/cjs/seki-field-group.cjs.entry.js +2 -2
- package/dist/cjs/seki-field-label.cjs.entry.js +2 -2
- package/dist/cjs/seki-field-legend.cjs.entry.js +2 -2
- package/dist/cjs/seki-field.cjs.entry.js +2 -2
- package/dist/cjs/seki-fieldset.cjs.entry.js +2 -2
- package/dist/cjs/seki-input.cjs.entry.js +2 -2
- package/dist/cjs/seki-select-content.cjs.entry.js +1 -1
- package/dist/cjs/seki-select-group.cjs.entry.js +2 -2
- package/dist/cjs/seki-select-option.cjs.entry.js +2 -2
- package/dist/cjs/seki-select-trigger.cjs.entry.js +1 -1
- package/dist/cjs/seki-select.cjs.entry.js +2 -2
- package/dist/cjs/seki-sidebar-content.cjs.entry.js +20 -0
- package/dist/cjs/seki-sidebar-footer.cjs.entry.js +20 -0
- package/dist/cjs/seki-sidebar-group.cjs.entry.js +105 -0
- package/dist/cjs/seki-sidebar-header.cjs.entry.js +20 -0
- package/dist/cjs/seki-sidebar-menu-item.cjs.entry.js +174 -0
- package/dist/cjs/seki-sidebar-menu-sub.cjs.entry.js +99 -0
- package/dist/cjs/seki-sidebar-menu.cjs.entry.js +20 -0
- package/dist/cjs/seki-sidebar-trigger.cjs.entry.js +86 -0
- package/dist/cjs/seki-sidebar.cjs.entry.js +342 -0
- package/dist/cjs/seki-skeleton.cjs.entry.js +2 -2
- package/dist/cjs/seki-switch.cjs.entry.js +81 -3
- package/dist/cjs/seki-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/sekiui.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +16 -0
- package/dist/collection/components/card/seki-card-action.js +50 -0
- package/dist/collection/components/card/seki-card-content.js +51 -0
- package/dist/collection/components/card/seki-card-description.js +48 -0
- package/dist/collection/components/card/seki-card-footer.js +83 -0
- package/dist/collection/components/card/seki-card-header.js +54 -0
- package/dist/collection/components/card/seki-card-title.js +95 -0
- package/dist/collection/components/card/seki-card.a11y.js +363 -0
- package/dist/collection/components/card/seki-card.css +608 -0
- package/dist/collection/components/card/seki-card.js +72 -0
- package/dist/collection/components/field/seki-field.js +1 -1
- package/dist/collection/components/field-description/seki-field-description.js +1 -1
- package/dist/collection/components/field-error/seki-field-error.js +1 -1
- package/dist/collection/components/field-group/seki-field-group.js +1 -1
- package/dist/collection/components/field-label/seki-field-label.js +1 -1
- package/dist/collection/components/field-legend/seki-field-legend.js +1 -1
- package/dist/collection/components/fieldset/seki-fieldset.js +1 -1
- package/dist/collection/components/input/seki-input.js +1 -1
- package/dist/collection/components/select/seki-select.js +1 -1
- package/dist/collection/components/select-group/seki-select-group.js +1 -1
- package/dist/collection/components/select-option/seki-select-option.js +1 -1
- package/dist/collection/components/sidebar/seki-sidebar-content.css +82 -0
- package/dist/collection/components/sidebar/seki-sidebar-content.js +33 -0
- package/dist/collection/components/sidebar/seki-sidebar-footer.css +44 -0
- package/dist/collection/components/sidebar/seki-sidebar-footer.js +31 -0
- package/dist/collection/components/sidebar/seki-sidebar-group.css +158 -0
- package/dist/collection/components/sidebar/seki-sidebar-group.js +300 -0
- package/dist/collection/components/sidebar/seki-sidebar-header.css +44 -0
- package/dist/collection/components/sidebar/seki-sidebar-header.js +32 -0
- package/dist/collection/components/sidebar/seki-sidebar-menu-item.css +196 -0
- package/dist/collection/components/sidebar/seki-sidebar-menu-item.js +403 -0
- package/dist/collection/components/sidebar/seki-sidebar-menu-sub.css +357 -0
- package/dist/collection/components/sidebar/seki-sidebar-menu-sub.js +256 -0
- package/dist/collection/components/sidebar/seki-sidebar-menu.css +25 -0
- package/dist/collection/components/sidebar/seki-sidebar-menu.js +32 -0
- package/dist/collection/components/sidebar/seki-sidebar-trigger.css +68 -0
- package/dist/collection/components/sidebar/seki-sidebar-trigger.js +175 -0
- package/dist/collection/components/sidebar/seki-sidebar.css +352 -0
- package/dist/collection/components/sidebar/seki-sidebar.js +812 -0
- package/dist/collection/components/sidebar/types.js +18 -0
- package/dist/collection/components/skeleton/seki-skeleton.js +1 -1
- package/dist/collection/index.js +7 -0
- package/dist/collection/services/focus.js +192 -0
- package/dist/collection/services/index.js +7 -0
- package/dist/collection/services/keyboard.js +136 -0
- package/dist/collection/services/media-query.js +254 -0
- package/dist/collection/types.js +41 -0
- package/dist/collection/utils/a11y.js +291 -0
- package/dist/collection/utils/common.js +286 -0
- package/dist/components/index.js +1053 -91
- package/dist/components/p-BJCq8m2o.js +138 -0
- package/dist/components/{p-QhPshhKB.js → p-BzYKy7d3.js} +427 -7
- package/dist/components/p-DwTISp-i.js +111 -0
- package/dist/components/seki-button.js +1 -1
- package/dist/components/seki-card-action.d.ts +11 -0
- package/dist/components/seki-card-action.js +38 -0
- package/dist/components/seki-card-content.d.ts +11 -0
- package/dist/components/seki-card-content.js +38 -0
- package/dist/components/seki-card-description.d.ts +11 -0
- package/dist/components/seki-card-description.js +38 -0
- package/dist/components/seki-card-footer.d.ts +11 -0
- package/dist/components/seki-card-footer.js +44 -0
- package/dist/components/seki-card-header.d.ts +11 -0
- package/dist/components/seki-card-header.js +38 -0
- package/dist/components/seki-card-title.d.ts +11 -0
- package/dist/components/seki-card-title.js +59 -0
- package/dist/components/seki-card.d.ts +11 -0
- package/dist/components/seki-card.js +39 -0
- package/dist/components/seki-field-description.js +2 -2
- package/dist/components/seki-field-error.js +2 -2
- package/dist/components/seki-field-group.js +2 -2
- package/dist/components/seki-field-label.js +2 -2
- package/dist/components/seki-field-legend.js +2 -2
- package/dist/components/seki-field.js +2 -2
- package/dist/components/seki-fieldset.js +2 -2
- package/dist/components/seki-input.js +2 -2
- package/dist/components/seki-select-content.js +1 -1
- package/dist/components/seki-select-group.js +2 -2
- package/dist/components/seki-select-option.js +2 -2
- package/dist/components/seki-select-trigger.js +1 -1
- package/dist/components/seki-select.js +2 -2
- package/dist/components/seki-sidebar-content.d.ts +11 -0
- package/dist/components/seki-sidebar-content.js +38 -0
- package/dist/components/seki-sidebar-footer.d.ts +11 -0
- package/dist/components/seki-sidebar-footer.js +38 -0
- package/dist/components/seki-sidebar-group.d.ts +11 -0
- package/dist/components/seki-sidebar-group.js +131 -0
- package/dist/components/seki-sidebar-header.d.ts +11 -0
- package/dist/components/seki-sidebar-header.js +38 -0
- package/dist/components/seki-sidebar-menu-item.d.ts +11 -0
- package/dist/components/seki-sidebar-menu-item.js +200 -0
- package/dist/components/seki-sidebar-menu-sub.d.ts +11 -0
- package/dist/components/seki-sidebar-menu-sub.js +123 -0
- package/dist/components/seki-sidebar-menu.d.ts +11 -0
- package/dist/components/seki-sidebar-menu.js +38 -0
- package/dist/components/seki-sidebar-trigger.d.ts +11 -0
- package/dist/components/seki-sidebar-trigger.js +109 -0
- package/dist/components/seki-sidebar.d.ts +11 -0
- package/dist/components/seki-sidebar.js +380 -0
- package/dist/components/seki-skeleton.js +2 -2
- package/dist/components/seki-switch.js +1 -1
- package/dist/components/seki-tooltip.js +1 -1
- package/dist/esm/{index-CuXbV_yz.js → index-Dfzpqq0a.js} +426 -6
- package/dist/esm/index.js +1053 -63
- package/dist/esm/keyboard-BJCq8m2o.js +138 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/seki-button.entry.js +1 -1
- package/dist/esm/seki-card-action.entry.js +15 -0
- package/dist/esm/seki-card-content.entry.js +15 -0
- package/dist/esm/seki-card-description.entry.js +15 -0
- package/dist/esm/seki-card-footer.entry.js +20 -0
- package/dist/esm/seki-card-header.entry.js +15 -0
- package/dist/esm/seki-card-title.entry.js +35 -0
- package/dist/esm/seki-card.entry.js +15 -0
- package/dist/esm/seki-field-description.entry.js +2 -2
- package/dist/esm/seki-field-error.entry.js +2 -2
- package/dist/esm/seki-field-group.entry.js +2 -2
- package/dist/esm/seki-field-label.entry.js +2 -2
- package/dist/esm/seki-field-legend.entry.js +2 -2
- package/dist/esm/seki-field.entry.js +2 -2
- package/dist/esm/seki-fieldset.entry.js +2 -2
- package/dist/esm/seki-input.entry.js +2 -2
- package/dist/esm/seki-select-content.entry.js +1 -1
- package/dist/esm/seki-select-group.entry.js +2 -2
- package/dist/esm/seki-select-option.entry.js +2 -2
- package/dist/esm/seki-select-trigger.entry.js +1 -1
- package/dist/esm/seki-select.entry.js +2 -2
- package/dist/esm/seki-sidebar-content.entry.js +18 -0
- package/dist/esm/seki-sidebar-footer.entry.js +18 -0
- package/dist/esm/seki-sidebar-group.entry.js +103 -0
- package/dist/esm/seki-sidebar-header.entry.js +18 -0
- package/dist/esm/seki-sidebar-menu-item.entry.js +172 -0
- package/dist/esm/seki-sidebar-menu-sub.entry.js +97 -0
- package/dist/esm/seki-sidebar-menu.entry.js +18 -0
- package/dist/esm/seki-sidebar-trigger.entry.js +84 -0
- package/dist/esm/seki-sidebar.entry.js +340 -0
- package/dist/esm/seki-skeleton.entry.js +2 -2
- package/dist/esm/seki-switch.entry.js +84 -2
- package/dist/esm/seki-tooltip.entry.js +1 -1
- package/dist/esm/sekiui.js +3 -3
- package/dist/sekiui/index.esm.js +1 -1
- package/dist/sekiui/p-01cfb4e7.entry.js +1 -0
- package/dist/sekiui/{p-431f46a1.entry.js → p-042ec460.entry.js} +1 -1
- package/dist/sekiui/{p-a36f1ac4.entry.js → p-10c008fc.entry.js} +1 -1
- package/dist/sekiui/p-352bd295.entry.js +1 -0
- package/dist/sekiui/p-37c5f4d9.entry.js +1 -0
- package/dist/sekiui/p-40fb71d6.entry.js +1 -0
- package/dist/sekiui/{p-eefbc037.entry.js → p-44191aed.entry.js} +1 -1
- package/dist/sekiui/{p-81709fc2.entry.js → p-4423d621.entry.js} +1 -1
- package/dist/sekiui/{p-e679d501.entry.js → p-4636588f.entry.js} +1 -1
- package/dist/sekiui/p-471b97a5.entry.js +1 -0
- package/dist/sekiui/{p-de4735fb.entry.js → p-56f0d754.entry.js} +1 -1
- package/dist/sekiui/p-5bc0f5aa.entry.js +1 -0
- package/dist/sekiui/p-6164cd8a.entry.js +1 -0
- package/dist/sekiui/{p-0fba4e2d.entry.js → p-635f4098.entry.js} +1 -1
- package/dist/sekiui/{p-434be19f.entry.js → p-743fc6d9.entry.js} +1 -1
- package/dist/sekiui/p-83e65cbe.entry.js +1 -0
- package/dist/sekiui/p-8b7bd061.entry.js +1 -0
- package/dist/sekiui/p-8d9a4878.entry.js +1 -0
- package/dist/sekiui/p-9cb9cdfe.entry.js +1 -0
- package/dist/sekiui/p-9f2d95d7.entry.js +1 -0
- package/dist/sekiui/p-BJCq8m2o.js +1 -0
- package/dist/sekiui/p-Dfzpqq0a.js +2 -0
- package/dist/sekiui/p-a1a71958.entry.js +1 -0
- package/dist/sekiui/{p-bf942ad5.entry.js → p-a71e0c55.entry.js} +1 -1
- package/dist/sekiui/{p-6ff91f7f.entry.js → p-ae227955.entry.js} +1 -1
- package/dist/sekiui/{p-80a41058.entry.js → p-b365f5fb.entry.js} +1 -1
- package/dist/sekiui/{p-6bde807e.entry.js → p-b387a2a5.entry.js} +1 -1
- package/dist/sekiui/p-b8590f4d.entry.js +1 -0
- package/dist/sekiui/p-c98b6d6a.entry.js +1 -0
- package/dist/sekiui/{p-7c2245be.entry.js → p-d73cdb9a.entry.js} +1 -1
- package/dist/sekiui/{p-a56602b3.entry.js → p-d96e770e.entry.js} +1 -1
- package/dist/sekiui/p-e62dd89b.entry.js +1 -0
- package/dist/sekiui/{p-386c00ac.entry.js → p-e7bb140c.entry.js} +1 -1
- package/dist/sekiui/{p-6e238adf.entry.js → p-eecc18f3.entry.js} +1 -1
- package/dist/sekiui/p-ff636955.entry.js +1 -0
- package/dist/sekiui/sekiui.esm.js +1 -1
- package/dist/types/components/card/seki-card-action.d.ts +16 -0
- package/dist/types/components/card/seki-card-content.d.ts +17 -0
- package/dist/types/components/card/seki-card-description.d.ts +14 -0
- package/dist/types/components/card/seki-card-footer.d.ts +24 -0
- package/dist/types/components/card/seki-card-header.d.ts +20 -0
- package/dist/types/components/card/seki-card-title.d.ts +20 -0
- package/dist/types/components/card/seki-card.a11y.d.ts +1 -0
- package/dist/types/components/card/seki-card.d.ts +23 -0
- package/dist/types/components/sidebar/seki-sidebar-content.d.ts +18 -0
- package/dist/types/components/sidebar/seki-sidebar-footer.d.ts +16 -0
- package/dist/types/components/sidebar/seki-sidebar-group.d.ts +81 -0
- package/dist/types/components/sidebar/seki-sidebar-header.d.ts +17 -0
- package/dist/types/components/sidebar/seki-sidebar-menu-item.d.ts +104 -0
- package/dist/types/components/sidebar/seki-sidebar-menu-sub.d.ts +81 -0
- package/dist/types/components/sidebar/seki-sidebar-menu.d.ts +17 -0
- package/dist/types/components/sidebar/seki-sidebar-trigger.d.ts +53 -0
- package/dist/types/components/sidebar/seki-sidebar.d.ts +185 -0
- package/dist/types/components/sidebar/types.d.ts +245 -0
- package/dist/types/components.d.ts +899 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/services/focus.d.ts +74 -0
- package/dist/types/services/index.d.ts +7 -0
- package/dist/types/services/keyboard.d.ts +74 -0
- package/dist/types/services/media-query.d.ts +121 -0
- package/dist/types/types.d.ts +105 -0
- package/dist/types/utils/a11y.d.ts +130 -0
- package/dist/types/utils/common.d.ts +142 -0
- package/package.json +2 -1
- package/dist/sekiui/p-9fe07f6e.entry.js +0 -1
- package/dist/sekiui/p-CuXbV_yz.js +0 -2
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sidebar Component Type Definitions
|
|
3
|
+
* @module sidebar/types
|
|
4
|
+
*
|
|
5
|
+
* Complete TypeScript interfaces and types for the sidebar component system.
|
|
6
|
+
* These types are used throughout the component implementation, tests, and exported
|
|
7
|
+
* to the npm package for consumer IDE autocomplete support.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* SidebarState - Core state object managed by the sidebar provider
|
|
11
|
+
* Defines the complete state of the sidebar including collapse state, layout variant,
|
|
12
|
+
* and responsive configuration.
|
|
13
|
+
*/
|
|
14
|
+
export interface SidebarState {
|
|
15
|
+
/** Whether sidebar is open/expanded (true) or closed/collapsed (false) */
|
|
16
|
+
isOpen: boolean;
|
|
17
|
+
/** Collapse mechanism: 'offcanvas' (slides), 'icon' (shrinks to icons), 'none' (fixed) */
|
|
18
|
+
collapseMode: 'offcanvas' | 'icon' | 'none';
|
|
19
|
+
/** Layout variant: 'sidebar' (standard), 'floating' (detached), 'inset' (integrated) */
|
|
20
|
+
variant: 'sidebar' | 'floating' | 'inset';
|
|
21
|
+
/** Whether viewport is mobile (<mobileBreakpoint) */
|
|
22
|
+
isMobile: boolean;
|
|
23
|
+
/** localStorage key for state persistence */
|
|
24
|
+
persistenceKey: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Default sidebar state values
|
|
28
|
+
*/
|
|
29
|
+
export declare const DEFAULT_SIDEBAR_STATE: SidebarState;
|
|
30
|
+
/**
|
|
31
|
+
* SidebarProps - Properties for the main seki-sidebar component
|
|
32
|
+
*/
|
|
33
|
+
export interface SidebarProps {
|
|
34
|
+
/** Layout variant: standard, floating (detached), or inset */
|
|
35
|
+
variant?: 'sidebar' | 'floating' | 'inset';
|
|
36
|
+
/** Collapse mechanism: offcanvas (slides), icon (shrinks), or none (fixed) */
|
|
37
|
+
collapseMode?: 'offcanvas' | 'icon' | 'none';
|
|
38
|
+
/** Initial open/closed state */
|
|
39
|
+
defaultOpen?: boolean;
|
|
40
|
+
/** Persist state to localStorage */
|
|
41
|
+
persistent?: boolean;
|
|
42
|
+
/** Viewport width for mobile detection (px) */
|
|
43
|
+
mobileBreakpoint?: number;
|
|
44
|
+
/** Position: left or right side of viewport */
|
|
45
|
+
side?: 'left' | 'right';
|
|
46
|
+
/** Storage key for persisted state */
|
|
47
|
+
persistenceKey?: string;
|
|
48
|
+
/** Callback fired when open state changes */
|
|
49
|
+
onOpenChange?: (isOpen: boolean) => void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* SidebarTriggerProps - Properties for the seki-sidebar-trigger component
|
|
53
|
+
*/
|
|
54
|
+
export interface SidebarTriggerProps {
|
|
55
|
+
/** Accessibility label for the button */
|
|
56
|
+
ariaLabel?: string;
|
|
57
|
+
/** Icon name or SVG path (optional) */
|
|
58
|
+
icon?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* SidebarGroupProps - Properties for the seki-sidebar-group component
|
|
62
|
+
*/
|
|
63
|
+
export interface SidebarGroupProps {
|
|
64
|
+
/** Section header text (optional) */
|
|
65
|
+
title?: string;
|
|
66
|
+
/** Allow collapsing this group */
|
|
67
|
+
collapsible?: boolean;
|
|
68
|
+
/** Initial collapsed state */
|
|
69
|
+
defaultCollapsed?: boolean;
|
|
70
|
+
/** Optional action button configuration */
|
|
71
|
+
action?: {
|
|
72
|
+
icon: string;
|
|
73
|
+
label: string;
|
|
74
|
+
onClick: () => void;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* SidebarMenuItemProps - Properties for the seki-sidebar-menu-item component
|
|
79
|
+
*/
|
|
80
|
+
export interface SidebarMenuItemProps {
|
|
81
|
+
/** Navigation URL (optional) */
|
|
82
|
+
href?: string;
|
|
83
|
+
/** Link target: _blank, _self, etc. */
|
|
84
|
+
target?: string;
|
|
85
|
+
/** Disable interaction */
|
|
86
|
+
disabled?: boolean;
|
|
87
|
+
/** Highlight as current page */
|
|
88
|
+
isActive?: boolean;
|
|
89
|
+
/** Badge indicator for the item */
|
|
90
|
+
badge?: {
|
|
91
|
+
text: string;
|
|
92
|
+
variant?: 'default' | 'secondary' | 'destructive';
|
|
93
|
+
};
|
|
94
|
+
/** Accessibility label override */
|
|
95
|
+
ariaLabel?: string;
|
|
96
|
+
/** ARIA current value for active items */
|
|
97
|
+
ariaCurrentValue?: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';
|
|
98
|
+
/** Callback fired on click */
|
|
99
|
+
onClick?: (event: MouseEvent) => void;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* SidebarMenuSubProps - Properties for the seki-sidebar-menu-sub component
|
|
103
|
+
*/
|
|
104
|
+
export interface SidebarMenuSubProps {
|
|
105
|
+
/** Label for the submenu (shown when expanded) */
|
|
106
|
+
label?: string;
|
|
107
|
+
/** Initial collapsed state */
|
|
108
|
+
defaultCollapsed?: boolean;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* MenuItem - Individual navigation item with optional nesting
|
|
112
|
+
*/
|
|
113
|
+
export interface MenuItem {
|
|
114
|
+
/** Unique identifier */
|
|
115
|
+
id: string;
|
|
116
|
+
/** Display text */
|
|
117
|
+
label: string;
|
|
118
|
+
/** Navigation URL (optional) */
|
|
119
|
+
href?: string;
|
|
120
|
+
/** Icon name or SVG path (optional) */
|
|
121
|
+
icon?: string;
|
|
122
|
+
/** Badge indicator (optional) */
|
|
123
|
+
badge?: {
|
|
124
|
+
text: string;
|
|
125
|
+
variant?: 'default' | 'secondary' | 'destructive';
|
|
126
|
+
};
|
|
127
|
+
/** Highlight as current page */
|
|
128
|
+
isActive?: boolean;
|
|
129
|
+
/** Prevent interaction */
|
|
130
|
+
disabled?: boolean;
|
|
131
|
+
/** Nested menu items */
|
|
132
|
+
children?: MenuItem[];
|
|
133
|
+
/** Custom click handler */
|
|
134
|
+
onClick?: (item: MenuItem) => void;
|
|
135
|
+
/** Accessibility label (optional) */
|
|
136
|
+
ariaLabel?: string;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* MenuGroup - Container for related menu items with optional header
|
|
140
|
+
*/
|
|
141
|
+
export interface MenuGroup {
|
|
142
|
+
/** Unique identifier */
|
|
143
|
+
id: string;
|
|
144
|
+
/** Section header text (optional) */
|
|
145
|
+
title?: string;
|
|
146
|
+
/** List of menu items in this group */
|
|
147
|
+
items: MenuItem[];
|
|
148
|
+
/** Allow collapsing this group */
|
|
149
|
+
collapsible?: boolean;
|
|
150
|
+
/** Current collapsed state */
|
|
151
|
+
isCollapsed?: boolean;
|
|
152
|
+
/** Optional action button */
|
|
153
|
+
action?: {
|
|
154
|
+
icon: string;
|
|
155
|
+
onClick: () => void;
|
|
156
|
+
ariaLabel: string;
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Event detail payloads for sidebar custom events
|
|
161
|
+
*/
|
|
162
|
+
/** Detail payload for openChange event */
|
|
163
|
+
export interface OpenChangeDetail {
|
|
164
|
+
isOpen: boolean;
|
|
165
|
+
}
|
|
166
|
+
/** Detail payload for variantChange event */
|
|
167
|
+
export interface VariantChangeDetail {
|
|
168
|
+
variant: 'sidebar' | 'floating' | 'inset';
|
|
169
|
+
}
|
|
170
|
+
/** Detail payload for collapseModeChange event */
|
|
171
|
+
export interface CollapseModeChangeDetail {
|
|
172
|
+
collapseMode: 'offcanvas' | 'icon' | 'none';
|
|
173
|
+
}
|
|
174
|
+
/** Detail payload for mobileStateChange event */
|
|
175
|
+
export interface MobileStateChangeDetail {
|
|
176
|
+
isMobile: boolean;
|
|
177
|
+
}
|
|
178
|
+
/** Detail payload for collapsedChange event (on groups) */
|
|
179
|
+
export interface CollapsedChangeDetail {
|
|
180
|
+
isCollapsed: boolean;
|
|
181
|
+
}
|
|
182
|
+
/** Detail payload for navigate event (on menu items) */
|
|
183
|
+
export interface NavigateDetail {
|
|
184
|
+
href: string;
|
|
185
|
+
target?: string;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Component instance types for TypeScript consumers
|
|
189
|
+
*/
|
|
190
|
+
export interface SidebarElement extends HTMLElement {
|
|
191
|
+
/** Current sidebar state */
|
|
192
|
+
getState(): SidebarState;
|
|
193
|
+
/** Update sidebar state */
|
|
194
|
+
setState(state: Partial<SidebarState>): Promise<void>;
|
|
195
|
+
/** Open the sidebar (set isOpen=true) */
|
|
196
|
+
open(): Promise<void>;
|
|
197
|
+
/** Close the sidebar (set isOpen=false) */
|
|
198
|
+
close(): Promise<void>;
|
|
199
|
+
/** Toggle the sidebar open/closed state */
|
|
200
|
+
toggle(): Promise<void>;
|
|
201
|
+
}
|
|
202
|
+
export interface SidebarTriggerElement extends HTMLElement {
|
|
203
|
+
readonly ariaExpanded: string | null;
|
|
204
|
+
}
|
|
205
|
+
export interface SidebarGroupElement extends HTMLElement {
|
|
206
|
+
/** Get current collapsed state */
|
|
207
|
+
isCollapsed(): boolean;
|
|
208
|
+
/** Set collapsed state */
|
|
209
|
+
setCollapsed(collapsed: boolean): Promise<void>;
|
|
210
|
+
}
|
|
211
|
+
export interface SidebarMenuItemElement extends HTMLElement {
|
|
212
|
+
readonly ariaCurrent: string | null;
|
|
213
|
+
}
|
|
214
|
+
export interface SidebarMenuSubElement extends HTMLElement {
|
|
215
|
+
readonly ariaExpanded: string | null;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Event handler type for media query changes
|
|
219
|
+
*/
|
|
220
|
+
export type MediaQueryChangeHandler = (mq: {
|
|
221
|
+
matches: boolean;
|
|
222
|
+
}) => void;
|
|
223
|
+
/**
|
|
224
|
+
* MediaQueryList-like interface for browser compatibility
|
|
225
|
+
*/
|
|
226
|
+
export interface MediaQueryListCompat {
|
|
227
|
+
matches: boolean;
|
|
228
|
+
addEventListener: (event: string, handler: MediaQueryChangeHandler) => void;
|
|
229
|
+
removeListener: (handler: MediaQueryChangeHandler) => void;
|
|
230
|
+
addListener: (handler: MediaQueryChangeHandler) => void;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* ResizeObserver-like interface for browser compatibility
|
|
234
|
+
*/
|
|
235
|
+
export interface ResizeObserverCompat {
|
|
236
|
+
disconnect: () => void;
|
|
237
|
+
observe: (element: HTMLElement) => void;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Stencil Context type for sidebar state distribution
|
|
241
|
+
*/
|
|
242
|
+
export interface SidebarContextValue {
|
|
243
|
+
state: SidebarState;
|
|
244
|
+
setState: (partial: Partial<SidebarState>) => Promise<void>;
|
|
245
|
+
}
|