@stachelock/ui 0.6.18 → 0.7.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/dist/composables/index.js +44 -40
- package/dist/index.js +2471 -1973
- package/dist/src/components/layouts/NestedNavigationItem.d.ts +112 -0
- package/dist/src/components/layouts/NestedSidebar.d.ts +162 -0
- package/dist/src/components/layouts/index.d.ts +2 -0
- package/dist/src/composables/index.d.ts +1 -0
- package/dist/src/composables/useSidebarNavigation.d.ts +129 -0
- package/dist/src/views/layouts/index.d.ts +1 -0
- package/dist/style.css +1 -1
- package/dist/useSidebarNavigation-DbXCVGYg.js +291 -0
- package/package.json +1 -1
- package/dist/useCollectionEditor-BYyoAT0U.js +0 -121
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Component } from 'vue';
|
|
2
|
+
|
|
3
|
+
export interface NestedNavItem {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
path: string;
|
|
7
|
+
icon?: Component;
|
|
8
|
+
badge?: string;
|
|
9
|
+
badgeTheme?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
children?: NestedNavItem[];
|
|
12
|
+
/** Custom metadata */
|
|
13
|
+
meta?: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export type NavigationTier = 0 | 1 | 2;
|
|
16
|
+
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
17
|
+
/** Unique identifier */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Display name */
|
|
20
|
+
name: string;
|
|
21
|
+
/** Route path or URL */
|
|
22
|
+
href: string;
|
|
23
|
+
/** Icon component */
|
|
24
|
+
icon?: Component | undefined;
|
|
25
|
+
/** Current tier level (0, 1, or 2) */
|
|
26
|
+
tier?: NavigationTier | undefined;
|
|
27
|
+
/** Child navigation items */
|
|
28
|
+
children?: NestedNavItem[] | undefined;
|
|
29
|
+
/** Whether this item is currently active */
|
|
30
|
+
isActive?: boolean | undefined;
|
|
31
|
+
/** Show only icons (collapsed mode) */
|
|
32
|
+
iconOnly?: boolean | undefined;
|
|
33
|
+
/** Badge text */
|
|
34
|
+
badge?: string | undefined;
|
|
35
|
+
/** Badge color theme */
|
|
36
|
+
badgeTheme?: "primary" | "secondary" | "success" | "warning" | "danger" | undefined;
|
|
37
|
+
/** Whether item is disabled */
|
|
38
|
+
disabled?: boolean | undefined;
|
|
39
|
+
/** Set of expanded item IDs (for controlled state) */
|
|
40
|
+
expandedItems?: Set<string> | undefined;
|
|
41
|
+
/** Current route path (for active state detection) */
|
|
42
|
+
currentPath?: string | undefined;
|
|
43
|
+
}>, {
|
|
44
|
+
tier: number;
|
|
45
|
+
isActive: boolean;
|
|
46
|
+
iconOnly: boolean;
|
|
47
|
+
badgeTheme: string;
|
|
48
|
+
disabled: boolean;
|
|
49
|
+
}>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
50
|
+
toggle: (itemId: string, isExpanded: boolean) => void;
|
|
51
|
+
navigate: (path: string, item: NestedNavItem) => void;
|
|
52
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
53
|
+
/** Unique identifier */
|
|
54
|
+
id: string;
|
|
55
|
+
/** Display name */
|
|
56
|
+
name: string;
|
|
57
|
+
/** Route path or URL */
|
|
58
|
+
href: string;
|
|
59
|
+
/** Icon component */
|
|
60
|
+
icon?: Component | undefined;
|
|
61
|
+
/** Current tier level (0, 1, or 2) */
|
|
62
|
+
tier?: NavigationTier | undefined;
|
|
63
|
+
/** Child navigation items */
|
|
64
|
+
children?: NestedNavItem[] | undefined;
|
|
65
|
+
/** Whether this item is currently active */
|
|
66
|
+
isActive?: boolean | undefined;
|
|
67
|
+
/** Show only icons (collapsed mode) */
|
|
68
|
+
iconOnly?: boolean | undefined;
|
|
69
|
+
/** Badge text */
|
|
70
|
+
badge?: string | undefined;
|
|
71
|
+
/** Badge color theme */
|
|
72
|
+
badgeTheme?: "primary" | "secondary" | "success" | "warning" | "danger" | undefined;
|
|
73
|
+
/** Whether item is disabled */
|
|
74
|
+
disabled?: boolean | undefined;
|
|
75
|
+
/** Set of expanded item IDs (for controlled state) */
|
|
76
|
+
expandedItems?: Set<string> | undefined;
|
|
77
|
+
/** Current route path (for active state detection) */
|
|
78
|
+
currentPath?: string | undefined;
|
|
79
|
+
}>, {
|
|
80
|
+
tier: number;
|
|
81
|
+
isActive: boolean;
|
|
82
|
+
iconOnly: boolean;
|
|
83
|
+
badgeTheme: string;
|
|
84
|
+
disabled: boolean;
|
|
85
|
+
}>>> & Readonly<{
|
|
86
|
+
onToggle?: ((itemId: string, isExpanded: boolean) => any) | undefined;
|
|
87
|
+
onNavigate?: ((path: string, item: NestedNavItem) => any) | undefined;
|
|
88
|
+
}>, {
|
|
89
|
+
disabled: boolean;
|
|
90
|
+
isActive: boolean;
|
|
91
|
+
iconOnly: boolean;
|
|
92
|
+
badgeTheme: 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
|
|
93
|
+
tier: NavigationTier;
|
|
94
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
95
|
+
export default _default;
|
|
96
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
97
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
98
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
99
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
100
|
+
} : {
|
|
101
|
+
type: import('vue').PropType<T[K]>;
|
|
102
|
+
required: true;
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
type __VLS_WithDefaults<P, D> = {
|
|
106
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
107
|
+
default: D[K];
|
|
108
|
+
}> : P[K];
|
|
109
|
+
};
|
|
110
|
+
type __VLS_Prettify<T> = {
|
|
111
|
+
[K in keyof T]: T[K];
|
|
112
|
+
} & {};
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { Component } from 'vue';
|
|
2
|
+
|
|
3
|
+
export interface NavigationGroup {
|
|
4
|
+
/** Group title (optional) */
|
|
5
|
+
title?: string;
|
|
6
|
+
/** Items in this group */
|
|
7
|
+
items: SidebarNavigationItem[];
|
|
8
|
+
}
|
|
9
|
+
export interface SidebarNavigationItem {
|
|
10
|
+
/** Unique identifier */
|
|
11
|
+
id: string;
|
|
12
|
+
/** Display name */
|
|
13
|
+
name: string;
|
|
14
|
+
/** Route path */
|
|
15
|
+
path: string;
|
|
16
|
+
/** Icon component */
|
|
17
|
+
icon?: Component;
|
|
18
|
+
/** Badge configuration */
|
|
19
|
+
badge?: {
|
|
20
|
+
text: string;
|
|
21
|
+
theme?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
|
|
22
|
+
};
|
|
23
|
+
/** Whether item is disabled */
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
/** Child items for nesting */
|
|
26
|
+
children?: SidebarNavigationItem[];
|
|
27
|
+
/** Group this item belongs to */
|
|
28
|
+
group?: string;
|
|
29
|
+
/** Custom metadata */
|
|
30
|
+
meta?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
declare function openMobile(): void;
|
|
33
|
+
declare function closeMobile(): void;
|
|
34
|
+
declare function toggleCollapsed(): void;
|
|
35
|
+
declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
36
|
+
/** Navigation items */
|
|
37
|
+
items: SidebarNavigationItem[];
|
|
38
|
+
/** Optional navigation groups (if not using item.group) */
|
|
39
|
+
groups?: NavigationGroup[] | undefined;
|
|
40
|
+
/** Current route path */
|
|
41
|
+
currentPath?: string | undefined;
|
|
42
|
+
/** Background color for sidebar */
|
|
43
|
+
backgroundColor?: string | undefined;
|
|
44
|
+
/** Whether sidebar is collapsible */
|
|
45
|
+
collapsible?: boolean | undefined;
|
|
46
|
+
/** Initial collapsed state */
|
|
47
|
+
initialCollapsed?: boolean | undefined;
|
|
48
|
+
/** Wide sidebar width (expanded) */
|
|
49
|
+
wideWidth?: string | undefined;
|
|
50
|
+
/** Narrow sidebar width (collapsed) */
|
|
51
|
+
narrowWidth?: string | undefined;
|
|
52
|
+
/** Show mobile menu button */
|
|
53
|
+
showMobileMenuButton?: boolean | undefined;
|
|
54
|
+
/** Persist expanded items to localStorage */
|
|
55
|
+
persistExpanded?: boolean | undefined;
|
|
56
|
+
/** Storage key for persistence */
|
|
57
|
+
storageKey?: string | undefined;
|
|
58
|
+
/** Auto-expand parents of active item */
|
|
59
|
+
autoExpandActive?: boolean | undefined;
|
|
60
|
+
}>, {
|
|
61
|
+
currentPath: string;
|
|
62
|
+
backgroundColor: string;
|
|
63
|
+
collapsible: boolean;
|
|
64
|
+
initialCollapsed: boolean;
|
|
65
|
+
wideWidth: string;
|
|
66
|
+
narrowWidth: string;
|
|
67
|
+
showMobileMenuButton: boolean;
|
|
68
|
+
persistExpanded: boolean;
|
|
69
|
+
storageKey: string;
|
|
70
|
+
autoExpandActive: boolean;
|
|
71
|
+
}>>, {
|
|
72
|
+
openMobile: typeof openMobile;
|
|
73
|
+
closeMobile: typeof closeMobile;
|
|
74
|
+
toggleCollapsed: typeof toggleCollapsed;
|
|
75
|
+
expandAll: () => void;
|
|
76
|
+
collapseAll: () => void;
|
|
77
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
78
|
+
navigate: (path: string, item: SidebarNavigationItem) => void;
|
|
79
|
+
"update:collapsed": (isCollapsed: boolean) => void;
|
|
80
|
+
"update:mobileOpen": (isOpen: boolean) => void;
|
|
81
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
82
|
+
/** Navigation items */
|
|
83
|
+
items: SidebarNavigationItem[];
|
|
84
|
+
/** Optional navigation groups (if not using item.group) */
|
|
85
|
+
groups?: NavigationGroup[] | undefined;
|
|
86
|
+
/** Current route path */
|
|
87
|
+
currentPath?: string | undefined;
|
|
88
|
+
/** Background color for sidebar */
|
|
89
|
+
backgroundColor?: string | undefined;
|
|
90
|
+
/** Whether sidebar is collapsible */
|
|
91
|
+
collapsible?: boolean | undefined;
|
|
92
|
+
/** Initial collapsed state */
|
|
93
|
+
initialCollapsed?: boolean | undefined;
|
|
94
|
+
/** Wide sidebar width (expanded) */
|
|
95
|
+
wideWidth?: string | undefined;
|
|
96
|
+
/** Narrow sidebar width (collapsed) */
|
|
97
|
+
narrowWidth?: string | undefined;
|
|
98
|
+
/** Show mobile menu button */
|
|
99
|
+
showMobileMenuButton?: boolean | undefined;
|
|
100
|
+
/** Persist expanded items to localStorage */
|
|
101
|
+
persistExpanded?: boolean | undefined;
|
|
102
|
+
/** Storage key for persistence */
|
|
103
|
+
storageKey?: string | undefined;
|
|
104
|
+
/** Auto-expand parents of active item */
|
|
105
|
+
autoExpandActive?: boolean | undefined;
|
|
106
|
+
}>, {
|
|
107
|
+
currentPath: string;
|
|
108
|
+
backgroundColor: string;
|
|
109
|
+
collapsible: boolean;
|
|
110
|
+
initialCollapsed: boolean;
|
|
111
|
+
wideWidth: string;
|
|
112
|
+
narrowWidth: string;
|
|
113
|
+
showMobileMenuButton: boolean;
|
|
114
|
+
persistExpanded: boolean;
|
|
115
|
+
storageKey: string;
|
|
116
|
+
autoExpandActive: boolean;
|
|
117
|
+
}>>> & Readonly<{
|
|
118
|
+
onNavigate?: ((path: string, item: SidebarNavigationItem) => any) | undefined;
|
|
119
|
+
"onUpdate:collapsed"?: ((isCollapsed: boolean) => any) | undefined;
|
|
120
|
+
"onUpdate:mobileOpen"?: ((isOpen: boolean) => any) | undefined;
|
|
121
|
+
}>, {
|
|
122
|
+
backgroundColor: string;
|
|
123
|
+
collapsible: boolean;
|
|
124
|
+
currentPath: string;
|
|
125
|
+
initialCollapsed: boolean;
|
|
126
|
+
wideWidth: string;
|
|
127
|
+
narrowWidth: string;
|
|
128
|
+
showMobileMenuButton: boolean;
|
|
129
|
+
persistExpanded: boolean;
|
|
130
|
+
storageKey: string;
|
|
131
|
+
autoExpandActive: boolean;
|
|
132
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>, {
|
|
133
|
+
logo?(_: {}): any;
|
|
134
|
+
footer?(_: {
|
|
135
|
+
isCollapsed: boolean;
|
|
136
|
+
}): any;
|
|
137
|
+
header?(_: {}): any;
|
|
138
|
+
default?(_: {}): any;
|
|
139
|
+
}>;
|
|
140
|
+
export default _default;
|
|
141
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
142
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
143
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
144
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
145
|
+
} : {
|
|
146
|
+
type: import('vue').PropType<T[K]>;
|
|
147
|
+
required: true;
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
type __VLS_WithDefaults<P, D> = {
|
|
151
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
152
|
+
default: D[K];
|
|
153
|
+
}> : P[K];
|
|
154
|
+
};
|
|
155
|
+
type __VLS_Prettify<T> = {
|
|
156
|
+
[K in keyof T]: T[K];
|
|
157
|
+
} & {};
|
|
158
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
159
|
+
new (): {
|
|
160
|
+
$slots: S;
|
|
161
|
+
};
|
|
162
|
+
};
|
|
@@ -5,6 +5,8 @@ export { default as HeaderLayout } from './HeaderLayout';
|
|
|
5
5
|
export { default as InfoCard } from './InfoCard';
|
|
6
6
|
export { default as NavigationGroup } from './NavigationGroup';
|
|
7
7
|
export { default as NavigationItem } from './NavigationItem';
|
|
8
|
+
export { default as NestedNavigationItem } from './NestedNavigationItem';
|
|
9
|
+
export { default as NestedSidebar } from './NestedSidebar';
|
|
8
10
|
export { default as ProfileHeaderAvatar } from './ProfileHeaderAvatar';
|
|
9
11
|
export { default as ProjectLogo } from './ProjectLogo';
|
|
10
12
|
export { default as PropsTable } from './PropsTable';
|
|
@@ -6,6 +6,7 @@ export * from './useMap';
|
|
|
6
6
|
export * from './useModal';
|
|
7
7
|
export * from './useNotifications';
|
|
8
8
|
export * from './useScreenSize';
|
|
9
|
+
export * from './useSidebarNavigation';
|
|
9
10
|
export * from './useSimpleTabs';
|
|
10
11
|
export * from './useStringTransform';
|
|
11
12
|
export * from './useTabs';
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { Ref, ComputedRef } from 'vue';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Navigation item structure for nested sidebar
|
|
5
|
+
*/
|
|
6
|
+
export interface SidebarNavItem {
|
|
7
|
+
/** Unique identifier */
|
|
8
|
+
id: string;
|
|
9
|
+
/** Display name */
|
|
10
|
+
name: string;
|
|
11
|
+
/** Route path or URL */
|
|
12
|
+
path: string;
|
|
13
|
+
/** Icon component (Vue component) */
|
|
14
|
+
icon?: unknown;
|
|
15
|
+
/** Badge text */
|
|
16
|
+
badge?: string;
|
|
17
|
+
/** Badge color theme */
|
|
18
|
+
badgeTheme?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
|
|
19
|
+
/** Whether item is disabled */
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
/** Child navigation items (for nesting) */
|
|
22
|
+
children?: SidebarNavItem[];
|
|
23
|
+
/** Custom metadata */
|
|
24
|
+
meta?: Record<string, unknown>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Navigation tier levels
|
|
28
|
+
*/
|
|
29
|
+
export type NavigationTier = 0 | 1 | 2;
|
|
30
|
+
/**
|
|
31
|
+
* Options for useSidebarNavigation composable
|
|
32
|
+
*/
|
|
33
|
+
export interface UseSidebarNavigationOptions {
|
|
34
|
+
/** Navigation items */
|
|
35
|
+
items: SidebarNavItem[];
|
|
36
|
+
/** Initial route path */
|
|
37
|
+
initialPath?: string;
|
|
38
|
+
/** Auto-expand parents of active item */
|
|
39
|
+
autoExpandActive?: boolean;
|
|
40
|
+
/** Allow multiple sections to be expanded */
|
|
41
|
+
allowMultipleExpanded?: boolean;
|
|
42
|
+
/** Persist expanded state to localStorage */
|
|
43
|
+
persistExpanded?: boolean;
|
|
44
|
+
/** Storage key for persisted state */
|
|
45
|
+
storageKey?: string;
|
|
46
|
+
/** Callback when navigation occurs */
|
|
47
|
+
onNavigate?: (path: string, item: SidebarNavItem) => void;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Return type for useSidebarNavigation composable
|
|
51
|
+
*/
|
|
52
|
+
export interface UseSidebarNavigationReturn {
|
|
53
|
+
/** Current navigation items */
|
|
54
|
+
items: ComputedRef<SidebarNavItem[]>;
|
|
55
|
+
/** Set of expanded item IDs */
|
|
56
|
+
expandedItems: Ref<Set<string>>;
|
|
57
|
+
/** Current active path */
|
|
58
|
+
currentPath: Ref<string>;
|
|
59
|
+
/** Whether mobile sidebar is open */
|
|
60
|
+
isMobileOpen: Ref<boolean>;
|
|
61
|
+
/** Whether sidebar is collapsed (icon only) */
|
|
62
|
+
isCollapsed: Ref<boolean>;
|
|
63
|
+
/** Toggle an item's expanded state */
|
|
64
|
+
toggleItem: (itemId: string) => void;
|
|
65
|
+
/** Expand an item */
|
|
66
|
+
expandItem: (itemId: string) => void;
|
|
67
|
+
/** Collapse an item */
|
|
68
|
+
collapseItem: (itemId: string) => void;
|
|
69
|
+
/** Expand all items */
|
|
70
|
+
expandAll: () => void;
|
|
71
|
+
/** Collapse all items */
|
|
72
|
+
collapseAll: () => void;
|
|
73
|
+
/** Set current path and auto-expand parents */
|
|
74
|
+
setCurrentPath: (path: string) => void;
|
|
75
|
+
/** Navigate to a path */
|
|
76
|
+
navigate: (path: string, item: SidebarNavItem) => void;
|
|
77
|
+
/** Open mobile sidebar */
|
|
78
|
+
openMobile: () => void;
|
|
79
|
+
/** Close mobile sidebar */
|
|
80
|
+
closeMobile: () => void;
|
|
81
|
+
/** Toggle mobile sidebar */
|
|
82
|
+
toggleMobile: () => void;
|
|
83
|
+
/** Toggle collapsed state */
|
|
84
|
+
toggleCollapsed: () => void;
|
|
85
|
+
/** Check if an item is active */
|
|
86
|
+
isItemActive: (item: SidebarNavItem) => boolean;
|
|
87
|
+
/** Check if an item has an active child */
|
|
88
|
+
hasActiveChild: (item: SidebarNavItem) => boolean;
|
|
89
|
+
/** Get all parent IDs for a given path */
|
|
90
|
+
getParentIds: (path: string) => string[];
|
|
91
|
+
/** Find an item by path */
|
|
92
|
+
findItemByPath: (path: string) => SidebarNavItem | undefined;
|
|
93
|
+
/** Get flat list of all items */
|
|
94
|
+
flatItems: ComputedRef<SidebarNavItem[]>;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Composable for managing nested sidebar navigation
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* const {
|
|
102
|
+
* items,
|
|
103
|
+
* expandedItems,
|
|
104
|
+
* currentPath,
|
|
105
|
+
* toggleItem,
|
|
106
|
+
* navigate,
|
|
107
|
+
* } = useSidebarNavigation({
|
|
108
|
+
* items: navigationItems,
|
|
109
|
+
* initialPath: route.path,
|
|
110
|
+
* autoExpandActive: true,
|
|
111
|
+
* });
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export declare function useSidebarNavigation(options: UseSidebarNavigationOptions): UseSidebarNavigationReturn;
|
|
115
|
+
/**
|
|
116
|
+
* Build navigation tree from flat items with parent references
|
|
117
|
+
*/
|
|
118
|
+
export declare function buildNavigationTree(items: Array<SidebarNavItem & {
|
|
119
|
+
parent?: string;
|
|
120
|
+
}>): SidebarNavItem[];
|
|
121
|
+
/**
|
|
122
|
+
* Create a navigation item with defaults
|
|
123
|
+
*/
|
|
124
|
+
export declare function createNavItem(id: string, name: string, path: string, options?: Partial<SidebarNavItem>): SidebarNavItem;
|
|
125
|
+
/**
|
|
126
|
+
* Sort navigation items by a key
|
|
127
|
+
*/
|
|
128
|
+
export declare function sortNavItems(items: SidebarNavItem[], key?: keyof SidebarNavItem, direction?: 'asc' | 'desc'): SidebarNavItem[];
|
|
129
|
+
export default useSidebarNavigation;
|
|
@@ -3,4 +3,5 @@ export { default as DashboardLayoutPage } from './DashboardLayoutPage';
|
|
|
3
3
|
export { default as HeaderLayoutPage } from './HeaderLayoutPage';
|
|
4
4
|
export { default as NavigationGroupPage } from './NavigationGroupPage';
|
|
5
5
|
export { default as NavigationItemPage } from './NavigationItemPage';
|
|
6
|
+
export { default as NestedSidebarPage } from './NestedSidebarPage';
|
|
6
7
|
export { default as SplitPanelLayoutPage } from './SplitPanelLayoutPage';
|