@wallarm-org/design-system 0.46.0-rc-feature-progress.1 → 0.47.0-rc-feature-shell.1
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/components/AppShell/AppShell.js +1 -1
- package/dist/components/AppShell/AppShellRemote.js +1 -1
- package/dist/components/AppShell/story-content/_storyAccountDropdown.d.ts +8 -0
- package/dist/components/AppShell/story-content/_storyAccountDropdown.js +189 -0
- package/dist/components/AppShell/story-content/_storyNavConfigs.js +12 -5
- package/dist/components/AppShell/story-content/_storyQuickHelpDropdown.d.ts +1 -0
- package/dist/components/AppShell/story-content/_storyQuickHelpDropdown.js +130 -0
- package/dist/components/AppShell/story-content/index.d.ts +2 -0
- package/dist/components/AppShell/story-content/index.js +3 -1
- package/dist/components/NavPanel/NavPanel.js +3 -3
- package/dist/components/NavPanel/NavPanelBack.js +1 -1
- package/dist/components/NavPanel/NavPanelGroupContent.js +1 -1
- package/dist/components/NavPanel/NavPanelGroupLabel.js +2 -2
- package/dist/components/NavPanel/NavPanelSectionHeader.js +1 -1
- package/dist/components/NavPanel/classes.js +6 -6
- package/dist/components/ProductNav/ProductNavPanel.js +35 -37
- package/dist/components/RemoteShell/RemoteShell.js +1 -1
- package/dist/components/RemoteShell/RemoteShellContent.js +1 -1
- package/dist/icons/Book.d.ts +3 -0
- package/dist/icons/Book.js +12 -0
- package/dist/icons/LifeBuoy.d.ts +3 -0
- package/dist/icons/LifeBuoy.js +12 -0
- package/dist/icons/LogOut.d.ts +3 -0
- package/dist/icons/LogOut.js +12 -0
- package/dist/icons/NotebookText.d.ts +3 -0
- package/dist/icons/NotebookText.js +12 -0
- package/dist/icons/PanelLeftDashed.d.ts +3 -0
- package/dist/icons/PanelLeftDashed.js +12 -0
- package/dist/icons/index.d.ts +5 -0
- package/dist/icons/index.js +6 -1
- package/dist/metadata/components.json +3 -3
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ const AppShell = ({ ref, className, children, 'data-testid': testId, ...props })
|
|
|
8
8
|
ref: ref,
|
|
9
9
|
"data-slot": "app-shell",
|
|
10
10
|
"data-testid": testId,
|
|
11
|
-
className: cn('grid h-screen [grid-template-areas:"header_header""rail_remote"] [grid-template-columns:auto_1fr] [grid-template-rows:auto_1fr] bg-bg-surface-5', className),
|
|
11
|
+
className: cn('grid h-screen overscroll-none [grid-template-areas:"header_header""rail_remote"] [grid-template-columns:auto_1fr] [grid-template-rows:auto_1fr] bg-bg-surface-5', className),
|
|
12
12
|
children: children
|
|
13
13
|
})
|
|
14
14
|
});
|
|
@@ -8,7 +8,7 @@ const AppShellRemote = ({ ref, className, children, ...props })=>{
|
|
|
8
8
|
ref: ref,
|
|
9
9
|
"data-slot": "app-shell-remote",
|
|
10
10
|
"data-testid": testId,
|
|
11
|
-
className: cn('[grid-area:remote] overflow-auto rounded-tl-12 border border-border-primary-light bg-bg-page-bg', className),
|
|
11
|
+
className: cn('[grid-area:remote] overflow-auto overscroll-none rounded-tl-12 border border-border-primary-light bg-bg-page-bg', className),
|
|
12
12
|
children: children
|
|
13
13
|
});
|
|
14
14
|
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Theme } from '../../ThemeProvider';
|
|
2
|
+
export type SidebarMode = 'adaptive' | 'expanded';
|
|
3
|
+
export declare const AccountDropdown: ({ sidebarMode, onSidebarModeChange, theme, onThemeChange, }: {
|
|
4
|
+
sidebarMode: SidebarMode;
|
|
5
|
+
onSidebarModeChange: (mode: SidebarMode) => void;
|
|
6
|
+
theme: Theme;
|
|
7
|
+
onThemeChange: (theme: Theme) => void;
|
|
8
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Check, LogOut, PanelLeftDashed, PencilRuler, Settings, User } from "../../../icons/index.js";
|
|
3
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuItemIcon, DropdownMenuItemText, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuTrigger, DropdownMenuTriggerItem } from "../../DropdownMenu/index.js";
|
|
4
|
+
import { NavRailItem } from "../../NavRail/index.js";
|
|
5
|
+
import { HStack, VStack } from "../../Stack/index.js";
|
|
6
|
+
import { Text } from "../../Text/index.js";
|
|
7
|
+
const USER_NAME = 'Meow Meow';
|
|
8
|
+
const USER_EMAIL = 'meow@meow.com';
|
|
9
|
+
const THEME_LABELS = {
|
|
10
|
+
light: 'Light',
|
|
11
|
+
dark: 'Dark'
|
|
12
|
+
};
|
|
13
|
+
const SIDEBAR_MODE_LABELS = {
|
|
14
|
+
adaptive: 'Adaptive',
|
|
15
|
+
expanded: 'Always expanded'
|
|
16
|
+
};
|
|
17
|
+
const AccountDropdown = ({ sidebarMode, onSidebarModeChange, theme, onThemeChange })=>/*#__PURE__*/ jsxs(DropdownMenu, {
|
|
18
|
+
positioning: {
|
|
19
|
+
placement: 'right-end',
|
|
20
|
+
gutter: 8
|
|
21
|
+
},
|
|
22
|
+
children: [
|
|
23
|
+
/*#__PURE__*/ jsx(DropdownMenuTrigger, {
|
|
24
|
+
asChild: true,
|
|
25
|
+
children: /*#__PURE__*/ jsx(NavRailItem, {
|
|
26
|
+
icon: User,
|
|
27
|
+
label: USER_NAME
|
|
28
|
+
})
|
|
29
|
+
}),
|
|
30
|
+
/*#__PURE__*/ jsxs(DropdownMenuContent, {
|
|
31
|
+
className: "w-256",
|
|
32
|
+
children: [
|
|
33
|
+
/*#__PURE__*/ jsx("div", {
|
|
34
|
+
className: "rounded-6 border border-border-primary-light bg-states-primary-hover px-8 py-8 mb-4",
|
|
35
|
+
children: /*#__PURE__*/ jsxs(HStack, {
|
|
36
|
+
gap: 8,
|
|
37
|
+
align: "start",
|
|
38
|
+
children: [
|
|
39
|
+
/*#__PURE__*/ jsx("div", {
|
|
40
|
+
children: /*#__PURE__*/ jsx(User, {})
|
|
41
|
+
}),
|
|
42
|
+
/*#__PURE__*/ jsxs(VStack, {
|
|
43
|
+
gap: 0,
|
|
44
|
+
children: [
|
|
45
|
+
/*#__PURE__*/ jsx(Text, {
|
|
46
|
+
size: "sm",
|
|
47
|
+
color: "primary",
|
|
48
|
+
children: USER_NAME
|
|
49
|
+
}),
|
|
50
|
+
/*#__PURE__*/ jsx(Text, {
|
|
51
|
+
size: "xs",
|
|
52
|
+
color: "secondary",
|
|
53
|
+
children: USER_EMAIL
|
|
54
|
+
})
|
|
55
|
+
]
|
|
56
|
+
})
|
|
57
|
+
]
|
|
58
|
+
})
|
|
59
|
+
}),
|
|
60
|
+
/*#__PURE__*/ jsxs(DropdownMenuItem, {
|
|
61
|
+
children: [
|
|
62
|
+
/*#__PURE__*/ jsx(DropdownMenuItemIcon, {
|
|
63
|
+
children: /*#__PURE__*/ jsx(Settings, {})
|
|
64
|
+
}),
|
|
65
|
+
/*#__PURE__*/ jsx(DropdownMenuItemText, {
|
|
66
|
+
children: "Profile settings"
|
|
67
|
+
})
|
|
68
|
+
]
|
|
69
|
+
}),
|
|
70
|
+
/*#__PURE__*/ jsxs(DropdownMenu, {
|
|
71
|
+
children: [
|
|
72
|
+
/*#__PURE__*/ jsxs(DropdownMenuTriggerItem, {
|
|
73
|
+
children: [
|
|
74
|
+
/*#__PURE__*/ jsx(DropdownMenuItemIcon, {
|
|
75
|
+
children: /*#__PURE__*/ jsx(PencilRuler, {})
|
|
76
|
+
}),
|
|
77
|
+
/*#__PURE__*/ jsxs(DropdownMenuItemText, {
|
|
78
|
+
children: [
|
|
79
|
+
"Theme:",
|
|
80
|
+
' ',
|
|
81
|
+
/*#__PURE__*/ jsx(Text, {
|
|
82
|
+
size: "sm",
|
|
83
|
+
weight: "medium",
|
|
84
|
+
style: {
|
|
85
|
+
display: 'inline'
|
|
86
|
+
},
|
|
87
|
+
children: THEME_LABELS[theme]
|
|
88
|
+
})
|
|
89
|
+
]
|
|
90
|
+
})
|
|
91
|
+
]
|
|
92
|
+
}),
|
|
93
|
+
/*#__PURE__*/ jsxs(DropdownMenuContent, {
|
|
94
|
+
className: "w-200",
|
|
95
|
+
children: [
|
|
96
|
+
/*#__PURE__*/ jsxs(DropdownMenuItem, {
|
|
97
|
+
onSelect: ()=>onThemeChange('light'),
|
|
98
|
+
children: [
|
|
99
|
+
/*#__PURE__*/ jsx(DropdownMenuItemText, {
|
|
100
|
+
children: "Light"
|
|
101
|
+
}),
|
|
102
|
+
'light' === theme && /*#__PURE__*/ jsx(DropdownMenuShortcut, {
|
|
103
|
+
children: /*#__PURE__*/ jsx(Check, {})
|
|
104
|
+
})
|
|
105
|
+
]
|
|
106
|
+
}),
|
|
107
|
+
/*#__PURE__*/ jsxs(DropdownMenuItem, {
|
|
108
|
+
onSelect: ()=>onThemeChange('dark'),
|
|
109
|
+
children: [
|
|
110
|
+
/*#__PURE__*/ jsx(DropdownMenuItemText, {
|
|
111
|
+
children: "Dark"
|
|
112
|
+
}),
|
|
113
|
+
'dark' === theme && /*#__PURE__*/ jsx(DropdownMenuShortcut, {
|
|
114
|
+
children: /*#__PURE__*/ jsx(Check, {})
|
|
115
|
+
})
|
|
116
|
+
]
|
|
117
|
+
})
|
|
118
|
+
]
|
|
119
|
+
})
|
|
120
|
+
]
|
|
121
|
+
}),
|
|
122
|
+
/*#__PURE__*/ jsxs(DropdownMenu, {
|
|
123
|
+
children: [
|
|
124
|
+
/*#__PURE__*/ jsxs(DropdownMenuTriggerItem, {
|
|
125
|
+
children: [
|
|
126
|
+
/*#__PURE__*/ jsx(DropdownMenuItemIcon, {
|
|
127
|
+
children: /*#__PURE__*/ jsx(PanelLeftDashed, {})
|
|
128
|
+
}),
|
|
129
|
+
/*#__PURE__*/ jsxs(DropdownMenuItemText, {
|
|
130
|
+
children: [
|
|
131
|
+
"Sidebar mode:",
|
|
132
|
+
' ',
|
|
133
|
+
/*#__PURE__*/ jsx(Text, {
|
|
134
|
+
size: "sm",
|
|
135
|
+
weight: "medium",
|
|
136
|
+
style: {
|
|
137
|
+
display: 'inline'
|
|
138
|
+
},
|
|
139
|
+
children: SIDEBAR_MODE_LABELS[sidebarMode]
|
|
140
|
+
})
|
|
141
|
+
]
|
|
142
|
+
})
|
|
143
|
+
]
|
|
144
|
+
}),
|
|
145
|
+
/*#__PURE__*/ jsxs(DropdownMenuContent, {
|
|
146
|
+
className: "w-200",
|
|
147
|
+
children: [
|
|
148
|
+
/*#__PURE__*/ jsxs(DropdownMenuItem, {
|
|
149
|
+
onSelect: ()=>onSidebarModeChange('adaptive'),
|
|
150
|
+
children: [
|
|
151
|
+
/*#__PURE__*/ jsx(DropdownMenuItemText, {
|
|
152
|
+
children: "Adaptive"
|
|
153
|
+
}),
|
|
154
|
+
'adaptive' === sidebarMode && /*#__PURE__*/ jsx(DropdownMenuShortcut, {
|
|
155
|
+
children: /*#__PURE__*/ jsx(Check, {})
|
|
156
|
+
})
|
|
157
|
+
]
|
|
158
|
+
}),
|
|
159
|
+
/*#__PURE__*/ jsxs(DropdownMenuItem, {
|
|
160
|
+
onSelect: ()=>onSidebarModeChange('expanded'),
|
|
161
|
+
children: [
|
|
162
|
+
/*#__PURE__*/ jsx(DropdownMenuItemText, {
|
|
163
|
+
children: "Always expanded"
|
|
164
|
+
}),
|
|
165
|
+
'expanded' === sidebarMode && /*#__PURE__*/ jsx(DropdownMenuShortcut, {
|
|
166
|
+
children: /*#__PURE__*/ jsx(Check, {})
|
|
167
|
+
})
|
|
168
|
+
]
|
|
169
|
+
})
|
|
170
|
+
]
|
|
171
|
+
})
|
|
172
|
+
]
|
|
173
|
+
}),
|
|
174
|
+
/*#__PURE__*/ jsx(DropdownMenuSeparator, {}),
|
|
175
|
+
/*#__PURE__*/ jsxs(DropdownMenuItem, {
|
|
176
|
+
children: [
|
|
177
|
+
/*#__PURE__*/ jsx(DropdownMenuItemIcon, {
|
|
178
|
+
children: /*#__PURE__*/ jsx(LogOut, {})
|
|
179
|
+
}),
|
|
180
|
+
/*#__PURE__*/ jsx(DropdownMenuItemText, {
|
|
181
|
+
children: "Sign out"
|
|
182
|
+
})
|
|
183
|
+
]
|
|
184
|
+
})
|
|
185
|
+
]
|
|
186
|
+
})
|
|
187
|
+
]
|
|
188
|
+
});
|
|
189
|
+
export { AccountDropdown };
|
|
@@ -43,30 +43,36 @@ const edgeNavConfig = {
|
|
|
43
43
|
type: 'link',
|
|
44
44
|
id: 'dp-overview',
|
|
45
45
|
label: 'Overview',
|
|
46
|
-
path: 'overview'
|
|
46
|
+
path: 'overview',
|
|
47
|
+
icon: CircleDashed
|
|
47
48
|
},
|
|
48
49
|
{
|
|
49
50
|
type: 'link',
|
|
50
51
|
id: 'dp-nodes',
|
|
51
52
|
label: 'Nodes',
|
|
52
|
-
path: 'nodes'
|
|
53
|
+
path: 'nodes',
|
|
54
|
+
icon: CircleDashed
|
|
53
55
|
},
|
|
54
56
|
{
|
|
55
57
|
type: 'link',
|
|
56
58
|
id: 'dp-services',
|
|
57
59
|
label: 'Services',
|
|
58
|
-
path: 'services'
|
|
60
|
+
path: 'services',
|
|
61
|
+
icon: CircleDashed,
|
|
62
|
+
dividerAfter: true
|
|
59
63
|
},
|
|
60
64
|
{
|
|
61
65
|
type: 'link',
|
|
62
66
|
id: 'dp-govern',
|
|
63
67
|
label: 'Govern',
|
|
64
|
-
path: 'govern'
|
|
68
|
+
path: 'govern',
|
|
69
|
+
icon: CircleDashed
|
|
65
70
|
},
|
|
66
71
|
{
|
|
67
72
|
type: 'group',
|
|
68
73
|
id: 'dp-operations',
|
|
69
74
|
label: 'Operations',
|
|
75
|
+
icon: CircleDashed,
|
|
70
76
|
children: [
|
|
71
77
|
{
|
|
72
78
|
type: 'link',
|
|
@@ -89,7 +95,8 @@ const edgeNavConfig = {
|
|
|
89
95
|
id: 'dashboards',
|
|
90
96
|
label: 'Dashboards',
|
|
91
97
|
path: 'dashboards',
|
|
92
|
-
icon: CircleDashed
|
|
98
|
+
icon: CircleDashed,
|
|
99
|
+
dividerAfter: true
|
|
93
100
|
},
|
|
94
101
|
{
|
|
95
102
|
type: 'section-header',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const QuickHelpDropdown: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Activity, Book, CircleHelp, LifeBuoy, NotebookText, SquareArrowOutUpRight } from "../../../icons/index.js";
|
|
3
|
+
import { Button } from "../../Button/index.js";
|
|
4
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuItemContent, DropdownMenuItemIcon, DropdownMenuItemText, DropdownMenuSeparator, DropdownMenuTrigger } from "../../DropdownMenu/index.js";
|
|
5
|
+
import { Text } from "../../Text/index.js";
|
|
6
|
+
const QuickHelpDropdown = ()=>/*#__PURE__*/ jsxs(DropdownMenu, {
|
|
7
|
+
positioning: {
|
|
8
|
+
placement: 'bottom-end',
|
|
9
|
+
gutter: 4
|
|
10
|
+
},
|
|
11
|
+
children: [
|
|
12
|
+
/*#__PURE__*/ jsx(DropdownMenuTrigger, {
|
|
13
|
+
asChild: true,
|
|
14
|
+
children: /*#__PURE__*/ jsx(Button, {
|
|
15
|
+
variant: "ghost",
|
|
16
|
+
size: "small",
|
|
17
|
+
color: "neutral",
|
|
18
|
+
"aria-label": "Quick Help",
|
|
19
|
+
children: /*#__PURE__*/ jsx(CircleHelp, {})
|
|
20
|
+
})
|
|
21
|
+
}),
|
|
22
|
+
/*#__PURE__*/ jsxs(DropdownMenuContent, {
|
|
23
|
+
className: "w-320",
|
|
24
|
+
children: [
|
|
25
|
+
/*#__PURE__*/ jsxs(DropdownMenuItem, {
|
|
26
|
+
onSelect: ()=>window.open('https://docs.wallarm.com/', '_blank'),
|
|
27
|
+
children: [
|
|
28
|
+
/*#__PURE__*/ jsx(DropdownMenuItemIcon, {
|
|
29
|
+
children: /*#__PURE__*/ jsx(Book, {})
|
|
30
|
+
}),
|
|
31
|
+
/*#__PURE__*/ jsxs(DropdownMenuItemContent, {
|
|
32
|
+
children: [
|
|
33
|
+
/*#__PURE__*/ jsx(DropdownMenuItemText, {
|
|
34
|
+
children: "Documentation"
|
|
35
|
+
}),
|
|
36
|
+
/*#__PURE__*/ jsx(Text, {
|
|
37
|
+
size: "xs",
|
|
38
|
+
color: "secondary",
|
|
39
|
+
children: "Setup, deployment, and how-tos"
|
|
40
|
+
})
|
|
41
|
+
]
|
|
42
|
+
})
|
|
43
|
+
]
|
|
44
|
+
}),
|
|
45
|
+
/*#__PURE__*/ jsxs(DropdownMenuItem, {
|
|
46
|
+
onSelect: ()=>window.open('https://status.wallarm.com/', '_blank'),
|
|
47
|
+
children: [
|
|
48
|
+
/*#__PURE__*/ jsx(DropdownMenuItemIcon, {
|
|
49
|
+
children: /*#__PURE__*/ jsx(Activity, {})
|
|
50
|
+
}),
|
|
51
|
+
/*#__PURE__*/ jsxs(DropdownMenuItemContent, {
|
|
52
|
+
children: [
|
|
53
|
+
/*#__PURE__*/ jsx(DropdownMenuItemText, {
|
|
54
|
+
children: "Service status"
|
|
55
|
+
}),
|
|
56
|
+
/*#__PURE__*/ jsx(Text, {
|
|
57
|
+
size: "xs",
|
|
58
|
+
color: "secondary",
|
|
59
|
+
children: "Live uptime and alerts"
|
|
60
|
+
})
|
|
61
|
+
]
|
|
62
|
+
})
|
|
63
|
+
]
|
|
64
|
+
}),
|
|
65
|
+
/*#__PURE__*/ jsxs(DropdownMenuItem, {
|
|
66
|
+
onSelect: ()=>window.open('mailto:support@wallarm.com'),
|
|
67
|
+
children: [
|
|
68
|
+
/*#__PURE__*/ jsx(DropdownMenuItemIcon, {
|
|
69
|
+
children: /*#__PURE__*/ jsx(LifeBuoy, {})
|
|
70
|
+
}),
|
|
71
|
+
/*#__PURE__*/ jsxs(DropdownMenuItemContent, {
|
|
72
|
+
children: [
|
|
73
|
+
/*#__PURE__*/ jsx(DropdownMenuItemText, {
|
|
74
|
+
children: "Support"
|
|
75
|
+
}),
|
|
76
|
+
/*#__PURE__*/ jsx(Text, {
|
|
77
|
+
size: "xs",
|
|
78
|
+
color: "secondary",
|
|
79
|
+
children: "Talk to our team"
|
|
80
|
+
})
|
|
81
|
+
]
|
|
82
|
+
})
|
|
83
|
+
]
|
|
84
|
+
}),
|
|
85
|
+
/*#__PURE__*/ jsxs(DropdownMenuItem, {
|
|
86
|
+
onSelect: ()=>window.open('https://lab.wallarm.com', '_blank'),
|
|
87
|
+
children: [
|
|
88
|
+
/*#__PURE__*/ jsx(DropdownMenuItemIcon, {
|
|
89
|
+
children: /*#__PURE__*/ jsx(NotebookText, {})
|
|
90
|
+
}),
|
|
91
|
+
/*#__PURE__*/ jsxs(DropdownMenuItemContent, {
|
|
92
|
+
children: [
|
|
93
|
+
/*#__PURE__*/ jsx(DropdownMenuItemText, {
|
|
94
|
+
children: "Blog"
|
|
95
|
+
}),
|
|
96
|
+
/*#__PURE__*/ jsx(Text, {
|
|
97
|
+
size: "xs",
|
|
98
|
+
color: "secondary",
|
|
99
|
+
children: "Security news and updates"
|
|
100
|
+
})
|
|
101
|
+
]
|
|
102
|
+
})
|
|
103
|
+
]
|
|
104
|
+
}),
|
|
105
|
+
/*#__PURE__*/ jsx(DropdownMenuSeparator, {}),
|
|
106
|
+
/*#__PURE__*/ jsxs(DropdownMenuItem, {
|
|
107
|
+
onSelect: ()=>window.open('https://playground.wallarm.com', '_blank'),
|
|
108
|
+
children: [
|
|
109
|
+
/*#__PURE__*/ jsx(DropdownMenuItemIcon, {
|
|
110
|
+
children: /*#__PURE__*/ jsx(SquareArrowOutUpRight, {})
|
|
111
|
+
}),
|
|
112
|
+
/*#__PURE__*/ jsxs(DropdownMenuItemContent, {
|
|
113
|
+
children: [
|
|
114
|
+
/*#__PURE__*/ jsx(DropdownMenuItemText, {
|
|
115
|
+
children: "Wallarm Playground"
|
|
116
|
+
}),
|
|
117
|
+
/*#__PURE__*/ jsx(Text, {
|
|
118
|
+
size: "xs",
|
|
119
|
+
color: "secondary",
|
|
120
|
+
children: "Try the platform without any setup"
|
|
121
|
+
})
|
|
122
|
+
]
|
|
123
|
+
})
|
|
124
|
+
]
|
|
125
|
+
})
|
|
126
|
+
]
|
|
127
|
+
})
|
|
128
|
+
]
|
|
129
|
+
});
|
|
130
|
+
export { QuickHelpDropdown };
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { AccountDropdown, type SidebarMode } from './_storyAccountDropdown';
|
|
1
2
|
export { ConfigRemote } from './_storyConfigRenderer';
|
|
2
3
|
export { HomeContent } from './_storyHomeContent';
|
|
3
4
|
export { aiHypervisorNavConfig, edgeNavConfig, infraDiscoveryNavConfig, securityTestingNavConfig, settingsNavConfig, } from './_storyNavConfigs';
|
|
5
|
+
export { QuickHelpDropdown } from './_storyQuickHelpDropdown';
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { AccountDropdown } from "./_storyAccountDropdown.js";
|
|
1
2
|
import { ConfigRemote } from "./_storyConfigRenderer.js";
|
|
2
3
|
import { HomeContent } from "./_storyHomeContent.js";
|
|
3
4
|
import { aiHypervisorNavConfig, edgeNavConfig, infraDiscoveryNavConfig, securityTestingNavConfig, settingsNavConfig } from "./_storyNavConfigs.js";
|
|
4
|
-
|
|
5
|
+
import { QuickHelpDropdown } from "./_storyQuickHelpDropdown.js";
|
|
6
|
+
export { AccountDropdown, ConfigRemote, HomeContent, QuickHelpDropdown, aiHypervisorNavConfig, edgeNavConfig, infraDiscoveryNavConfig, securityTestingNavConfig, settingsNavConfig };
|
|
@@ -65,10 +65,10 @@ const NavPanel = ({ ref, className, children, resizable = false, 'data-testid':
|
|
|
65
65
|
style: {
|
|
66
66
|
width
|
|
67
67
|
},
|
|
68
|
-
className: cn('relative h-full shrink-0 border-r border-border-primary pt-8', isResizing && 'select-none', className),
|
|
68
|
+
className: cn('relative h-full shrink-0 border-r border-border-primary-light pt-8', isResizing && 'select-none', className),
|
|
69
69
|
children: [
|
|
70
70
|
/*#__PURE__*/ jsx("div", {
|
|
71
|
-
className: "flex h-full flex-col gap-2 overflow-y-auto [scrollbar-width:thin] px-8 pb-8",
|
|
71
|
+
className: "flex h-full flex-col gap-2 overflow-y-auto overscroll-none [scrollbar-width:thin] px-8 pb-8",
|
|
72
72
|
children: children
|
|
73
73
|
}),
|
|
74
74
|
/*#__PURE__*/ jsx(NavPanelResizeHandle, {})
|
|
@@ -84,7 +84,7 @@ const NavPanel = ({ ref, className, children, resizable = false, 'data-testid':
|
|
|
84
84
|
"aria-label": ariaLabel,
|
|
85
85
|
"data-slot": "nav-panel",
|
|
86
86
|
"data-testid": testId,
|
|
87
|
-
className: cn('flex h-full w-[216px] shrink-0 flex-col gap-2 overflow-y-auto [scrollbar-width:thin] border-r border-border-primary p-8', className),
|
|
87
|
+
className: cn('flex h-full w-[216px] shrink-0 flex-col gap-2 overflow-y-auto overscroll-none [scrollbar-width:thin] border-r border-border-primary-light p-8', className),
|
|
88
88
|
children: children
|
|
89
89
|
})
|
|
90
90
|
});
|
|
@@ -11,7 +11,7 @@ const NavPanelBack = ({ ref, className, children, ...props })=>{
|
|
|
11
11
|
type: "button",
|
|
12
12
|
"data-slot": "nav-panel-back",
|
|
13
13
|
"data-testid": testId,
|
|
14
|
-
className: cn('overlay flex h-32 shrink-0 w-full cursor-pointer items-center gap-8 rounded-6 p-8 text-sm text-text-
|
|
14
|
+
className: cn('overlay flex h-32 shrink-0 w-full cursor-pointer items-center gap-8 rounded-6 p-8 text-sm text-text-primary opacity-64 transition-colors outline-none hover:opacity-100 hover:overlay-states-primary-hover focus-visible:opacity-100 focus-visible:overlay-states-primary-hover active:overlay-states-primary-pressed', className),
|
|
15
15
|
children: [
|
|
16
16
|
/*#__PURE__*/ jsx(CornerUpLeft, {
|
|
17
17
|
size: "md"
|
|
@@ -16,7 +16,7 @@ const NavPanelGroupContent = ({ ref, className, children, ...props })=>{
|
|
|
16
16
|
className: cn('relative grid transition-[grid-template-rows] duration-150 ease-out', expanded ? 'grid-rows-[1fr] mt-2' : 'grid-rows-[0fr]', className),
|
|
17
17
|
children: [
|
|
18
18
|
/*#__PURE__*/ jsx("div", {
|
|
19
|
-
className: "absolute top-0 bottom-0 w-px bg-border-primary",
|
|
19
|
+
className: "absolute top-0 bottom-0 w-px bg-border-primary-light",
|
|
20
20
|
style: {
|
|
21
21
|
left: 16 * depth + 8 * parentDepth
|
|
22
22
|
}
|
|
@@ -20,7 +20,7 @@ const NavPanelGroupLabel = ({ ref, icon: Icon, className, children, ...props })=
|
|
|
20
20
|
style: {
|
|
21
21
|
paddingLeft: 8 + 24 * depth
|
|
22
22
|
},
|
|
23
|
-
className: cn('overlay flex h-32 shrink-0 w-full cursor-pointer items-center gap-8 rounded-6 py-8 pr-8 text-sm text-text-
|
|
23
|
+
className: cn('overlay flex h-32 shrink-0 w-full cursor-pointer items-center gap-8 rounded-6 py-8 pr-8 text-sm text-text-primary opacity-64 transition-colors outline-none hover:opacity-100 hover:overlay-states-primary-hover focus-visible:opacity-100 focus-visible:overlay-states-primary-hover active:overlay-states-primary-pressed', className),
|
|
24
24
|
children: [
|
|
25
25
|
Icon && /*#__PURE__*/ jsx("span", {
|
|
26
26
|
className: "flex shrink-0 items-center justify-center",
|
|
@@ -38,7 +38,7 @@ const NavPanelGroupLabel = ({ ref, icon: Icon, className, children, ...props })=
|
|
|
38
38
|
children: children
|
|
39
39
|
}),
|
|
40
40
|
/*#__PURE__*/ jsx(ChevronRight, {
|
|
41
|
-
size: "
|
|
41
|
+
size: "xs",
|
|
42
42
|
className: cn('shrink-0 transition-transform duration-150', expanded && 'rotate-90')
|
|
43
43
|
})
|
|
44
44
|
]
|
|
@@ -9,7 +9,7 @@ const NavPanelSectionHeader = ({ ref, className, children, ...props })=>{
|
|
|
9
9
|
ref: ref,
|
|
10
10
|
"data-slot": "nav-panel-section-header",
|
|
11
11
|
"data-testid": testId,
|
|
12
|
-
className: cn('flex shrink-0 items-center px-8 pt-
|
|
12
|
+
className: cn('flex h-26 shrink-0 items-center px-8 pt-8 pb-2', className),
|
|
13
13
|
children: /*#__PURE__*/ jsx(Text, {
|
|
14
14
|
size: "xs",
|
|
15
15
|
weight: "medium",
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { cva } from "class-variance-authority";
|
|
2
|
-
const navPanelItemVariants = cva('overlay flex h-32 shrink-0 w-full cursor-pointer items-center gap-8 rounded-6 p-8 text-sm transition-colors outline-none', {
|
|
2
|
+
const navPanelItemVariants = cva('overlay flex h-32 shrink-0 w-full cursor-pointer items-center gap-8 rounded-6 p-8 text-sm text-text-primary transition-colors outline-none', {
|
|
3
3
|
variants: {
|
|
4
4
|
active: {
|
|
5
|
-
true: 'overlay-states-primary-active font-semibold
|
|
6
|
-
false: '
|
|
5
|
+
true: 'overlay-states-primary-active font-semibold',
|
|
6
|
+
false: 'opacity-64 hover:opacity-100 hover:overlay-states-primary-hover focus-visible:opacity-100 focus-visible:overlay-states-primary-hover active:overlay-states-primary-pressed'
|
|
7
7
|
}
|
|
8
8
|
},
|
|
9
9
|
defaultVariants: {
|
|
10
10
|
active: false
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
const navPanelGroupItemVariants = cva('overlay flex h-32 shrink-0 w-full cursor-pointer items-center gap-8 rounded-6 py-8 pr-8 text-sm transition-colors outline-none', {
|
|
13
|
+
const navPanelGroupItemVariants = cva('overlay flex h-32 shrink-0 w-full cursor-pointer items-center gap-8 rounded-6 py-8 pr-8 text-sm text-text-primary transition-colors outline-none', {
|
|
14
14
|
variants: {
|
|
15
15
|
active: {
|
|
16
|
-
true: 'overlay-states-primary-active font-semibold
|
|
17
|
-
false: '
|
|
16
|
+
true: 'overlay-states-primary-active font-semibold',
|
|
17
|
+
false: 'opacity-64 hover:opacity-100 hover:overlay-states-primary-hover focus-visible:opacity-100 focus-visible:overlay-states-primary-hover active:overlay-states-primary-pressed'
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
defaultVariants: {
|
|
@@ -3,17 +3,17 @@ import { NavPanel, NavPanelBack, NavPanelDivider, NavPanelGroup, NavPanelGroupCo
|
|
|
3
3
|
import { findDrillNode } from "./navUtils.js";
|
|
4
4
|
import { useProductNavContext } from "./ProductNavContext.js";
|
|
5
5
|
function renderNavItems(items, activeItemId, onNavigate, onDrillClick, level = 'root') {
|
|
6
|
-
|
|
6
|
+
const result = [];
|
|
7
|
+
for (const item of items){
|
|
7
8
|
if ('link' === item.type) {
|
|
8
9
|
const Item = 'group' === level ? NavPanelGroupItem : NavPanelItem;
|
|
9
|
-
|
|
10
|
+
result.push(/*#__PURE__*/ jsx(Item, {
|
|
10
11
|
icon: item.icon,
|
|
11
12
|
active: activeItemId === item.id,
|
|
12
13
|
onClick: ()=>onNavigate(item.path),
|
|
13
14
|
children: item.label
|
|
14
|
-
}, item.id);
|
|
15
|
-
}
|
|
16
|
-
if ('group' === item.type) return /*#__PURE__*/ jsxs(NavPanelGroup, {
|
|
15
|
+
}, item.id));
|
|
16
|
+
} else if ('group' === item.type) result.push(/*#__PURE__*/ jsxs(NavPanelGroup, {
|
|
17
17
|
defaultExpanded: item.defaultExpanded,
|
|
18
18
|
children: [
|
|
19
19
|
/*#__PURE__*/ jsx(NavPanelGroupLabel, {
|
|
@@ -24,55 +24,53 @@ function renderNavItems(items, activeItemId, onNavigate, onDrillClick, level = '
|
|
|
24
24
|
children: renderNavItems(item.children, activeItemId, onNavigate, onDrillClick, 'group')
|
|
25
25
|
})
|
|
26
26
|
]
|
|
27
|
-
}, item.id);
|
|
28
|
-
if ('section-header' === item.type)
|
|
27
|
+
}, item.id));
|
|
28
|
+
else if ('section-header' === item.type) result.push(/*#__PURE__*/ jsx(NavPanelSectionHeader, {
|
|
29
29
|
children: item.label
|
|
30
|
-
}, item.id);
|
|
31
|
-
if ('drill' === item.type) {
|
|
30
|
+
}, item.id));
|
|
31
|
+
else if ('drill' === item.type) {
|
|
32
32
|
const Item = 'group' === level ? NavPanelGroupItem : NavPanelItem;
|
|
33
|
-
|
|
33
|
+
result.push(/*#__PURE__*/ jsx(Item, {
|
|
34
34
|
icon: item.icon,
|
|
35
35
|
active: activeItemId === item.id,
|
|
36
36
|
onClick: ()=>onDrillClick?.(item),
|
|
37
37
|
children: item.label
|
|
38
|
-
}, item.id);
|
|
38
|
+
}, item.id));
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
}
|
|
40
|
+
if (item.dividerAfter) result.push(/*#__PURE__*/ jsx(NavPanelDivider, {}, `divider-${item.id}`));
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
42
43
|
}
|
|
43
44
|
const ProductNavPanel = ({ resizable })=>{
|
|
44
45
|
const { config, navStack, effectiveActiveItemId, navigate, drillInto, goBack, drillLevel } = useProductNavContext();
|
|
45
46
|
const currentEntry = navStack[Math.min(drillLevel, navStack.length - 1)];
|
|
46
|
-
if (0 === drillLevel) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
resizable: resizable,
|
|
56
|
-
children: [
|
|
57
|
-
/*#__PURE__*/ jsx(NavPanelHeader, {
|
|
58
|
-
children: config.productLabel
|
|
59
|
-
}),
|
|
60
|
-
itemsWithDividers
|
|
61
|
-
]
|
|
62
|
-
});
|
|
63
|
-
}
|
|
47
|
+
if (0 === drillLevel) return /*#__PURE__*/ jsxs(NavPanel, {
|
|
48
|
+
resizable: resizable,
|
|
49
|
+
children: [
|
|
50
|
+
/*#__PURE__*/ jsx(NavPanelHeader, {
|
|
51
|
+
children: config.productLabel
|
|
52
|
+
}),
|
|
53
|
+
renderNavItems(config.items, effectiveActiveItemId, navigate, drillInto)
|
|
54
|
+
]
|
|
55
|
+
});
|
|
64
56
|
const parentEntry = navStack[drillLevel - 1];
|
|
65
57
|
const drillNode = findDrillNode(parentEntry.items, parentEntry.activeItemId);
|
|
66
58
|
const backLabel = drillNode?.label ?? 'Back';
|
|
67
59
|
return /*#__PURE__*/ jsxs(NavPanel, {
|
|
68
60
|
resizable: resizable,
|
|
69
61
|
children: [
|
|
70
|
-
/*#__PURE__*/
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
62
|
+
/*#__PURE__*/ jsxs("div", {
|
|
63
|
+
className: "sticky top-0 z-10 flex flex-col gap-2 bg-bg-surface-1",
|
|
64
|
+
children: [
|
|
65
|
+
/*#__PURE__*/ jsx(NavPanelHeader, {
|
|
66
|
+
children: currentEntry.title
|
|
67
|
+
}),
|
|
68
|
+
/*#__PURE__*/ jsx(NavPanelBack, {
|
|
69
|
+
onClick: goBack,
|
|
70
|
+
children: backLabel
|
|
71
|
+
}),
|
|
72
|
+
/*#__PURE__*/ jsx(NavPanelDivider, {})
|
|
73
|
+
]
|
|
76
74
|
}),
|
|
77
75
|
renderNavItems(currentEntry.items, effectiveActiveItemId, navigate, drillInto)
|
|
78
76
|
]
|
|
@@ -8,7 +8,7 @@ const RemoteShell = ({ ref, className, children, 'data-testid': testId, ...props
|
|
|
8
8
|
ref: ref,
|
|
9
9
|
"data-slot": "remote-shell",
|
|
10
10
|
"data-testid": testId,
|
|
11
|
-
className: cn('grid h-full overflow-hidden [grid-template-areas:"panel_breadcrumb""panel_content"] [grid-template-columns:auto_1fr] [grid-template-rows:auto_1fr]', className),
|
|
11
|
+
className: cn('grid h-full overflow-hidden overscroll-none [grid-template-areas:"panel_breadcrumb""panel_content"] [grid-template-columns:auto_1fr] [grid-template-rows:auto_1fr]', className),
|
|
12
12
|
children: children
|
|
13
13
|
})
|
|
14
14
|
});
|
|
@@ -8,7 +8,7 @@ const RemoteShellContent = ({ ref, className, children, ...props })=>{
|
|
|
8
8
|
ref: ref,
|
|
9
9
|
"data-slot": "remote-shell-content",
|
|
10
10
|
"data-testid": testId,
|
|
11
|
-
className: cn('[grid-area:content] min-h-0 overflow-auto px-24 py-16 [scrollbar-width:thin]', className),
|
|
11
|
+
className: cn('[grid-area:content] min-h-0 overflow-auto overscroll-none px-24 py-16 [scrollbar-width:thin]', className),
|
|
12
12
|
children: children
|
|
13
13
|
});
|
|
14
14
|
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SvgIcon } from "./SvgIcon.js";
|
|
3
|
+
const Book = (props)=>/*#__PURE__*/ jsx(SvgIcon, {
|
|
4
|
+
...props,
|
|
5
|
+
viewBox: "0 0 24 24",
|
|
6
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
7
|
+
d: "M11 21C11 20.4696 10.7891 19.961 10.4141 19.5859C10.039 19.2109 9.53043 19 9 19H2C1.44772 19 1 18.5523 1 18V3C1 2.44772 1.44772 2 2 2H8C9.32608 2 10.5975 2.52716 11.5352 3.46484C11.7036 3.63332 11.8587 3.81256 12 4.00098C12.1413 3.81256 12.2964 3.63332 12.4648 3.46484C13.4025 2.52716 14.6739 2 16 2H22C22.5523 2 23 2.44772 23 3V18C23 18.5523 22.5523 19 22 19H15C14.4696 19 13.961 19.2109 13.5859 19.5859C13.2109 19.961 13 20.4696 13 21C13 21.5523 12.5523 22 12 22C11.4477 22 11 21.5523 11 21ZM3 17H9C9.70844 17 10.397 17.1889 11 17.5371V7C11 6.20435 10.6837 5.44152 10.1211 4.87891C9.55849 4.3163 8.79565 4 8 4H3V17ZM13 17.5371C13.603 17.1889 14.2916 17 15 17H21V4H16C15.2044 4 14.4415 4.3163 13.8789 4.87891C13.3163 5.44152 13 6.20435 13 7V17.5371Z",
|
|
8
|
+
fill: "currentColor"
|
|
9
|
+
})
|
|
10
|
+
});
|
|
11
|
+
Book.displayName = 'BookIcon';
|
|
12
|
+
export { Book };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SvgIcon } from "./SvgIcon.js";
|
|
3
|
+
const LifeBuoy = (props)=>/*#__PURE__*/ jsx(SvgIcon, {
|
|
4
|
+
...props,
|
|
5
|
+
viewBox: "0 0 24 24",
|
|
6
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
7
|
+
d: "M7 12C7 10.9808 7.30454 10.0327 7.82812 9.24219L4.96875 6.38281C3.73712 7.92249 3 9.87498 3 12C3 14.1247 3.7374 16.0766 4.96875 17.6162L7.82812 14.7568C7.30481 13.9665 7 13.0189 7 12ZM14.7568 16.1709C13.9664 16.6944 13.0191 17 12 17C10.9806 17 10.0327 16.6947 9.24219 16.1709L6.38281 19.0303C7.92256 20.2621 9.87476 21 12 21C14.125 21 16.0766 20.2619 17.6162 19.0303L14.7568 16.1709ZM12 3C9.87498 3 7.92249 3.73712 6.38281 4.96875L9.24219 7.82812C10.0327 7.30454 10.9808 7 12 7C13.0189 7 13.9665 7.30481 14.7568 7.82812L17.6162 4.96875C16.0766 3.7374 14.1247 3 12 3ZM9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12C15 10.3432 13.6568 9 12 9C10.3432 9 9.00001 10.3432 9 12ZM17 12C17 13.0191 16.6944 13.9664 16.1709 14.7568L19.0303 17.6162C20.2619 16.0766 21 14.125 21 12C21 9.87476 20.2621 7.92256 19.0303 6.38281L16.1709 9.24219C16.6947 10.0327 17 10.9807 17 12ZM23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12C1 5.92487 5.92487 1 12 1C18.0751 1 23 5.92487 23 12Z",
|
|
8
|
+
fill: "currentColor"
|
|
9
|
+
})
|
|
10
|
+
});
|
|
11
|
+
LifeBuoy.displayName = 'LifeBuoyIcon';
|
|
12
|
+
export { LifeBuoy };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SvgIcon } from "./SvgIcon.js";
|
|
3
|
+
const LogOut = (props)=>/*#__PURE__*/ jsx(SvgIcon, {
|
|
4
|
+
...props,
|
|
5
|
+
viewBox: "0 0 24 24",
|
|
6
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
7
|
+
d: "M9 2C9.55228 2 10 2.44772 10 3C10 3.55228 9.55228 4 9 4H5C4.73478 4 4.4805 4.10543 4.29297 4.29297C4.10543 4.4805 4 4.73478 4 5V19C4 19.2652 4.10543 19.5195 4.29297 19.707C4.48051 19.8946 4.73478 20 5 20H9C9.55228 20 10 20.4477 10 21C10 21.5523 9.55228 22 9 22H5C4.20435 22 3.44152 21.6837 2.87891 21.1211C2.3163 20.5585 2 19.7957 2 19V5C2 4.20435 2.3163 3.44152 2.87891 2.87891C3.44152 2.3163 4.20435 2 5 2H9ZM15.293 6.29297C15.6835 5.90244 16.3165 5.90244 16.707 6.29297L21.707 11.293C21.7548 11.3408 21.7976 11.3935 21.835 11.4502C21.8597 11.4877 21.8812 11.5266 21.9004 11.5664C21.9222 11.6116 21.9412 11.6584 21.9561 11.707C21.9623 11.7273 21.9668 11.748 21.9717 11.7686C21.9893 11.8429 22 11.9202 22 12C22 12.0563 21.9933 12.1112 21.9844 12.165C21.9772 12.2078 21.9688 12.2503 21.9561 12.292C21.9412 12.3407 21.9222 12.3874 21.9004 12.4326C21.8936 12.4468 21.8864 12.4607 21.8789 12.4746C21.851 12.5262 21.8184 12.5745 21.7822 12.6201C21.7586 12.6498 21.7345 12.6796 21.707 12.707L16.707 17.707C16.3165 18.0976 15.6835 18.0976 15.293 17.707C14.9024 17.3165 14.9024 16.6835 15.293 16.293L18.5859 13H9C8.44772 13 8 12.5523 8 12C8 11.4477 8.44772 11 9 11H18.5859L15.293 7.70703C14.9024 7.31651 14.9024 6.68349 15.293 6.29297Z",
|
|
8
|
+
fill: "currentColor"
|
|
9
|
+
})
|
|
10
|
+
});
|
|
11
|
+
LogOut.displayName = 'LogOutIcon';
|
|
12
|
+
export { LogOut };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SvgIcon } from "./SvgIcon.js";
|
|
3
|
+
const NotebookText = (props)=>/*#__PURE__*/ jsx(SvgIcon, {
|
|
4
|
+
...props,
|
|
5
|
+
viewBox: "0 0 24 24",
|
|
6
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
7
|
+
d: "M19 4C19 3.44772 18.5523 3 18 3H6C5.44772 3 5 3.44772 5 4V5H6C6.55228 5 7 5.44772 7 6C7 6.55228 6.55228 7 6 7H5V9H6C6.55228 9 7 9.44771 7 10C7 10.5523 6.55228 11 6 11H5V13H6C6.55228 13 7 13.4477 7 14C7 14.5523 6.55228 15 6 15H5V17H6C6.55228 17 7 17.4477 7 18C7 18.5523 6.55228 19 6 19H5V20C5 20.5523 5.44771 21 6 21H18C18.5523 21 19 20.5523 19 20V4ZM14 15C14.5523 15 15 15.4477 15 16C15 16.5523 14.5523 17 14 17H9.5C8.94772 17 8.5 16.5523 8.5 16C8.5 15.4477 8.94772 15 9.5 15H14ZM16 11C16.5523 11 17 11.4477 17 12C17 12.5523 16.5523 13 16 13H9.5C8.94772 13 8.5 12.5523 8.5 12C8.5 11.4477 8.94772 11 9.5 11H16ZM14.5 7C15.0523 7 15.5 7.44772 15.5 8C15.5 8.55228 15.0523 9 14.5 9H9.5C8.94772 9 8.5 8.55228 8.5 8C8.5 7.44772 8.94772 7 9.5 7H14.5ZM21 20C21 21.6569 19.6569 23 18 23H6C4.34315 23 3 21.6569 3 20V19H2C1.44772 19 1 18.5523 1 18C1 17.4477 1.44772 17 2 17H3V15H2C1.44772 15 1 14.5523 1 14C1 13.4477 1.44772 13 2 13H3V11H2C1.44772 11 1 10.5523 1 10C1 9.44771 1.44772 9 2 9H3V7H2C1.44772 7 1 6.55228 1 6C1 5.44772 1.44772 5 2 5H3V4C3 2.34315 4.34315 1 6 1H18C19.6569 1 21 2.34315 21 4V20Z",
|
|
8
|
+
fill: "currentColor"
|
|
9
|
+
})
|
|
10
|
+
});
|
|
11
|
+
NotebookText.displayName = 'NotebookTextIcon';
|
|
12
|
+
export { NotebookText };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SvgIcon } from "./SvgIcon.js";
|
|
3
|
+
const PanelLeftDashed = (props)=>/*#__PURE__*/ jsx(SvgIcon, {
|
|
4
|
+
...props,
|
|
5
|
+
viewBox: "0 0 24 24",
|
|
6
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
7
|
+
d: "M8 15V14C8 13.4477 8.44772 13 9 13C9.55228 13 10 13.4477 10 14V15C10 15.5523 9.55228 16 9 16C8.44772 16 8 15.5523 8 15ZM8 10V9C8 8.44772 8.44772 8 9 8C9.55228 8 10 8.44772 10 9V10C10 10.5523 9.55228 11 9 11C8.44772 11 8 10.5523 8 10ZM8 5V4H5C4.44772 4 4 4.44772 4 5V19C4 19.5523 4.44771 20 5 20H8V19C8 18.4477 8.44772 18 9 18C9.55228 18 10 18.4477 10 19V20H19C19.5523 20 20 19.5523 20 19V5C20 4.44771 19.5523 4 19 4H10V5C10 5.55228 9.55228 6 9 6C8.44772 6 8 5.55228 8 5ZM22 19C22 20.6569 20.6569 22 19 22H5C3.34315 22 2 20.6569 2 19V5C2 3.34315 3.34315 2 5 2H19C20.6569 2 22 3.34315 22 5V19Z",
|
|
8
|
+
fill: "currentColor"
|
|
9
|
+
})
|
|
10
|
+
});
|
|
11
|
+
PanelLeftDashed.displayName = 'PanelLeftDashedIcon';
|
|
12
|
+
export { PanelLeftDashed };
|
package/dist/icons/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export { ArrowUp } from './ArrowUp';
|
|
|
11
11
|
export { ArrowUpLeft } from './ArrowUpLeft';
|
|
12
12
|
export { ArrowUpRight } from './ArrowUpRight';
|
|
13
13
|
export { Bell } from './Bell';
|
|
14
|
+
export { Book } from './Book';
|
|
14
15
|
export { Calendar } from './Calendar';
|
|
15
16
|
export { CalendarCheck } from './CalendarCheck';
|
|
16
17
|
export { CalendarCheck2 } from './CalendarCheck2';
|
|
@@ -109,11 +110,13 @@ export { LayoutPanelLeft } from './LayoutPanelLeft';
|
|
|
109
110
|
export { LayoutPanelTop } from './LayoutPanelTop';
|
|
110
111
|
export { LayoutTemplate } from './LayoutTemplate';
|
|
111
112
|
export { LibraryBig } from './LibraryBig';
|
|
113
|
+
export { LifeBuoy } from './LifeBuoy';
|
|
112
114
|
export { Link } from './Link';
|
|
113
115
|
export { Loader } from './Loader';
|
|
114
116
|
export { LoaderCircle } from './LoaderCircle';
|
|
115
117
|
export { Lock } from './Lock';
|
|
116
118
|
export { LockOpen } from './LockOpen';
|
|
119
|
+
export { LogOut } from './LogOut';
|
|
117
120
|
export { MapPin } from './MapPin';
|
|
118
121
|
export { Maximize } from './Maximize';
|
|
119
122
|
export { Maximize2 } from './Maximize2';
|
|
@@ -131,10 +134,12 @@ export { MoveDown } from './MoveDown';
|
|
|
131
134
|
export { MoveUp } from './MoveUp';
|
|
132
135
|
export { MoveVertical } from './MoveVertical';
|
|
133
136
|
export { NotebookPen } from './NotebookPen';
|
|
137
|
+
export { NotebookText } from './NotebookText';
|
|
134
138
|
export { NotepadText } from './NotepadText';
|
|
135
139
|
export { OctagonAlert } from './OctagonAlert';
|
|
136
140
|
export { PanelBottom } from './PanelBottom';
|
|
137
141
|
export { PanelBottomOpen } from './PanelBottomOpen';
|
|
142
|
+
export { PanelLeftDashed } from './PanelLeftDashed';
|
|
138
143
|
export { PanelRight } from './PanelRight';
|
|
139
144
|
export { PanelRightAnimated, type PanelRightAnimatedProps } from './PanelRightAnimated';
|
|
140
145
|
export { PanelRightClose } from './PanelRightClose';
|
package/dist/icons/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { ArrowUp } from "./ArrowUp.js";
|
|
|
11
11
|
import { ArrowUpLeft } from "./ArrowUpLeft.js";
|
|
12
12
|
import { ArrowUpRight } from "./ArrowUpRight.js";
|
|
13
13
|
import { Bell } from "./Bell.js";
|
|
14
|
+
import { Book } from "./Book.js";
|
|
14
15
|
import { Calendar } from "./Calendar.js";
|
|
15
16
|
import { CalendarCheck } from "./CalendarCheck.js";
|
|
16
17
|
import { CalendarCheck2 } from "./CalendarCheck2.js";
|
|
@@ -109,11 +110,13 @@ import { LayoutPanelLeft } from "./LayoutPanelLeft.js";
|
|
|
109
110
|
import { LayoutPanelTop } from "./LayoutPanelTop.js";
|
|
110
111
|
import { LayoutTemplate } from "./LayoutTemplate.js";
|
|
111
112
|
import { LibraryBig } from "./LibraryBig.js";
|
|
113
|
+
import { LifeBuoy } from "./LifeBuoy.js";
|
|
112
114
|
import { Link } from "./Link.js";
|
|
113
115
|
import { Loader } from "./Loader.js";
|
|
114
116
|
import { LoaderCircle } from "./LoaderCircle.js";
|
|
115
117
|
import { Lock } from "./Lock.js";
|
|
116
118
|
import { LockOpen } from "./LockOpen.js";
|
|
119
|
+
import { LogOut } from "./LogOut.js";
|
|
117
120
|
import { MapPin } from "./MapPin.js";
|
|
118
121
|
import { Maximize } from "./Maximize.js";
|
|
119
122
|
import { Maximize2 } from "./Maximize2.js";
|
|
@@ -131,10 +134,12 @@ import { MoveDown } from "./MoveDown.js";
|
|
|
131
134
|
import { MoveUp } from "./MoveUp.js";
|
|
132
135
|
import { MoveVertical } from "./MoveVertical.js";
|
|
133
136
|
import { NotebookPen } from "./NotebookPen.js";
|
|
137
|
+
import { NotebookText } from "./NotebookText.js";
|
|
134
138
|
import { NotepadText } from "./NotepadText.js";
|
|
135
139
|
import { OctagonAlert } from "./OctagonAlert.js";
|
|
136
140
|
import { PanelBottom } from "./PanelBottom.js";
|
|
137
141
|
import { PanelBottomOpen } from "./PanelBottomOpen.js";
|
|
142
|
+
import { PanelLeftDashed } from "./PanelLeftDashed.js";
|
|
138
143
|
import { PanelRight } from "./PanelRight.js";
|
|
139
144
|
import { PanelRightAnimated } from "./PanelRightAnimated.js";
|
|
140
145
|
import { PanelRightClose } from "./PanelRightClose.js";
|
|
@@ -180,4 +185,4 @@ import { X } from "./X.js";
|
|
|
180
185
|
import { Zap } from "./Zap.js";
|
|
181
186
|
import { ZoomIn } from "./ZoomIn.js";
|
|
182
187
|
import { ZoomOut } from "./ZoomOut.js";
|
|
183
|
-
export { Activity, Alt, ArrowBigUp, ArrowBigUpDash, ArrowDown, ArrowDownLeft, ArrowDownRight, ArrowLeft, ArrowRight, ArrowUp, ArrowUpLeft, ArrowUpRight, Bell, Calendar, CalendarCheck, CalendarCheck2, CalendarClock, CalendarCog, CalendarDays, CalendarFold, CalendarHeart, CalendarMinus, CalendarMinus2, CalendarOff, CalendarPlus, CalendarPlus2, CalendarRange, CalendarSearch, CalendarX, CalendarX2, Check, CheckCheck, CheckboxIndeterminate, ChevronDown, ChevronFirst, ChevronLast, ChevronLeft, ChevronRight, ChevronUp, ChevronUpDown, ChevronsDown, ChevronsLeft, ChevronsRight, ChevronsUp, Circle, CircleArrowDown, CircleArrowLeft, CircleArrowOutDownLeft, CircleArrowOutDownRight, CircleArrowOutUpLeft, CircleArrowOutUpRight, CircleArrowRight, CircleArrowUp, CircleCheck, CircleCheckBig, CircleChevronDown, CircleChevronLeft, CircleChevronRight, CircleChevronUp, CircleDashed, CircleDotDashed, CircleEllipsis, CircleHelp, CirclePlus, Clock, Command, Copy, CornerUpLeft, CornerUpRight, Ctrl, Dot, Earth, EarthLock, Ellipsis, EyeOff, Filter, FilterX, Folder, FunnelPlus, GitCommitHorizontal, GitCommitVertical, GitCompare, GitCompareArrows, GitFork, GitGraph, GitMerge, GitPullRequest, GitPullRequestArrow, GitPullRequestClosed, GitPullRequestCreate, GitPullRequestCreateArrow, GitPullRequestDraft, Globe, GlobeLock, GripVertical, History, Home, Info, KeyRound, KeySquare, Keyboard, Layers, Layers2, Layers3, LayoutDashboard, LayoutGrid, LayoutList, LayoutPanelLeft, LayoutPanelTop, LayoutTemplate, LibraryBig, Link, Loader, LoaderCircle, Lock, LockOpen, MapPin, Maximize, Maximize2, Megaphone, MegaphoneOff, MessageSquare, MessageSquareText, MessageSquareWarning, MessageSquareX, MessagesSquare, Minus, Mouse, Move3D, MoveDown, MoveUp, MoveVertical, NotebookPen, NotepadText, OctagonAlert, PanelBottom, PanelBottomOpen, PanelRight, PanelRightAnimated, PanelRightClose, PanelRightDashed, PanelRightOpen, Paperclip, Pen, PenLine, PenOff, PenTool, Pencil, PencilLine, PencilOff, PencilRuler, Pentagon, Pin, PinOff, Plus, Quote, Redo, Redo2, RedoDot, RefreshCcw, RefreshCwOff, Search, Settings, Sheet, Shift, Skull, SlidersHorizontal, SlidersVertical, Space, SquareArrowOutUpRight, Trash, Trash2, TriangleAlert, Undo, Undo2, UndoDot, User, Wrench, X, Zap, ZoomIn, ZoomOut };
|
|
188
|
+
export { Activity, Alt, ArrowBigUp, ArrowBigUpDash, ArrowDown, ArrowDownLeft, ArrowDownRight, ArrowLeft, ArrowRight, ArrowUp, ArrowUpLeft, ArrowUpRight, Bell, Book, Calendar, CalendarCheck, CalendarCheck2, CalendarClock, CalendarCog, CalendarDays, CalendarFold, CalendarHeart, CalendarMinus, CalendarMinus2, CalendarOff, CalendarPlus, CalendarPlus2, CalendarRange, CalendarSearch, CalendarX, CalendarX2, Check, CheckCheck, CheckboxIndeterminate, ChevronDown, ChevronFirst, ChevronLast, ChevronLeft, ChevronRight, ChevronUp, ChevronUpDown, ChevronsDown, ChevronsLeft, ChevronsRight, ChevronsUp, Circle, CircleArrowDown, CircleArrowLeft, CircleArrowOutDownLeft, CircleArrowOutDownRight, CircleArrowOutUpLeft, CircleArrowOutUpRight, CircleArrowRight, CircleArrowUp, CircleCheck, CircleCheckBig, CircleChevronDown, CircleChevronLeft, CircleChevronRight, CircleChevronUp, CircleDashed, CircleDotDashed, CircleEllipsis, CircleHelp, CirclePlus, Clock, Command, Copy, CornerUpLeft, CornerUpRight, Ctrl, Dot, Earth, EarthLock, Ellipsis, EyeOff, Filter, FilterX, Folder, FunnelPlus, GitCommitHorizontal, GitCommitVertical, GitCompare, GitCompareArrows, GitFork, GitGraph, GitMerge, GitPullRequest, GitPullRequestArrow, GitPullRequestClosed, GitPullRequestCreate, GitPullRequestCreateArrow, GitPullRequestDraft, Globe, GlobeLock, GripVertical, History, Home, Info, KeyRound, KeySquare, Keyboard, Layers, Layers2, Layers3, LayoutDashboard, LayoutGrid, LayoutList, LayoutPanelLeft, LayoutPanelTop, LayoutTemplate, LibraryBig, LifeBuoy, Link, Loader, LoaderCircle, Lock, LockOpen, LogOut, MapPin, Maximize, Maximize2, Megaphone, MegaphoneOff, MessageSquare, MessageSquareText, MessageSquareWarning, MessageSquareX, MessagesSquare, Minus, Mouse, Move3D, MoveDown, MoveUp, MoveVertical, NotebookPen, NotebookText, NotepadText, OctagonAlert, PanelBottom, PanelBottomOpen, PanelLeftDashed, PanelRight, PanelRightAnimated, PanelRightClose, PanelRightDashed, PanelRightOpen, Paperclip, Pen, PenLine, PenOff, PenTool, Pencil, PencilLine, PencilOff, PencilRuler, Pentagon, Pin, PinOff, Plus, Quote, Redo, Redo2, RedoDot, RefreshCcw, RefreshCwOff, Search, Settings, Sheet, Shift, Skull, SlidersHorizontal, SlidersVertical, Space, SquareArrowOutUpRight, Trash, Trash2, TriangleAlert, Undo, Undo2, UndoDot, User, Wrench, X, Zap, ZoomIn, ZoomOut };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
3
|
-
"generatedAt": "2026-05-
|
|
2
|
+
"version": "0.46.0",
|
|
3
|
+
"generatedAt": "2026-05-26T00:20:03.149Z",
|
|
4
4
|
"components": [
|
|
5
5
|
{
|
|
6
6
|
"name": "Accordion",
|
|
@@ -4436,7 +4436,7 @@
|
|
|
4436
4436
|
"examples": [
|
|
4437
4437
|
{
|
|
4438
4438
|
"name": "Basic",
|
|
4439
|
-
"code": "() => {\n const pathname = useLocationPathname();\n const activeProduct = deriveProduct(pathname);\n const [sidebarMode, setSidebarMode] = useState<SidebarMode>('adaptive');\n const collapsed = sidebarMode === 'adaptive' && activeProduct !== 'home';\n\n return (\n <AppShell>\n <AppShellHeader>\n <TopHeader>\n <TopHeaderLogo href='/'>\n <Logo size='md' />\n </TopHeaderLogo>\n <TopHeaderActions>\n <Button variant='ghost' size='small' color='neutral'>\n <Code size='s' color='secondary'>\n Search Wallarm\n </Code>\n <Kbd size='small'>⌘K</Kbd>\n </Button>\n <TopHeaderSeparator />\n <Button variant='ghost' size='small' color='neutral'>\n Tenant Name\n <Code size='s' color='secondary'>\n
|
|
4439
|
+
"code": "() => {\n const pathname = useLocationPathname();\n const activeProduct = deriveProduct(pathname);\n const [sidebarMode, setSidebarMode] = useState<SidebarMode>('adaptive');\n const { theme, setTheme } = useTheme();\n const collapsed = sidebarMode === 'adaptive' && activeProduct !== 'home';\n\n return (\n <AppShell>\n <AppShellHeader>\n <TopHeader>\n <TopHeaderLogo href='/'>\n <Logo size='md' />\n </TopHeaderLogo>\n\n <TopHeaderActions>\n <Button variant='ghost' size='small' color='neutral'>\n <Code size='s' color='secondary'>\n Search Wallarm\n </Code>\n <Kbd size='small'>⌘K</Kbd>\n </Button>\n\n <TopHeaderSeparator />\n\n <Button variant='ghost' size='small' color='neutral'>\n <Text size='xs' weight='medium'>\n Tenant Name\n </Text>\n <span className='text-text-tertiary'>•</span>\n <Code size='s' color='secondary'>\n 12345\n </Code>\n <ChevronUpDown className='!icon-sm' />\n </Button>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant='ghost' size='small' color='neutral' aria-label='Wallarm Updates'>\n <Bell />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Wallarm updates</TooltipContent>\n </Tooltip>\n\n <QuickHelpDropdown />\n </TopHeaderActions>\n </TopHeader>\n </AppShellHeader>\n\n <AppShellRail>\n <NavRail collapsed={collapsed}>\n <NavRailBody>\n <NavRailItem\n icon={Home}\n label='Home'\n shortcut={['G', 'H']}\n active={activeProduct === 'home'}\n onClick={() => navigateToProduct('home')}\n />\n <NavRailSeparator />\n <NavRailItem\n icon={CircleDashed}\n label='Edge'\n shortcut={['G', 'E']}\n active={activeProduct === 'edge'}\n onClick={() => navigateToProduct('edge')}\n />\n <NavRailItem\n icon={CircleDashed}\n label='AI Hypervisor'\n shortcut={['G', 'A']}\n active={activeProduct === 'ai-hypervisor'}\n onClick={() => navigateToProduct('ai-hypervisor')}\n />\n <NavRailItem\n icon={CircleDashed}\n label='Infra Discovery'\n shortcut={['G', 'I']}\n active={activeProduct === 'infra-discovery'}\n onClick={() => navigateToProduct('infra-discovery')}\n />\n <NavRailItem\n icon={CircleDashed}\n label='Security Testing'\n shortcut={['G', 'T']}\n active={activeProduct === 'security-testing'}\n onClick={() => navigateToProduct('security-testing')}\n />\n </NavRailBody>\n <NavRailFooter>\n <NavRailItem\n icon={Settings}\n label='Settings'\n shortcut={['G', 'S']}\n active={activeProduct === 'settings'}\n onClick={() => navigateToProduct('settings')}\n />\n <AccountDropdown\n sidebarMode={sidebarMode}\n onSidebarModeChange={setSidebarMode}\n theme={theme}\n onThemeChange={setTheme}\n />\n </NavRailFooter>\n </NavRail>\n </AppShellRail>\n\n <AppShellRemote>\n <RemoteForProduct product={activeProduct} />\n </AppShellRemote>\n </AppShell>\n );\n}"
|
|
4440
4440
|
}
|
|
4441
4441
|
]
|
|
4442
4442
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wallarm-org/design-system",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.47.0-rc-feature-shell.1",
|
|
4
4
|
"description": "Core design system library with React components and Storybook documentation",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|