sonance-brand-mcp 1.2.4 → 1.3.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/assets/components/alert-dialog.stories.tsx +142 -0
- package/dist/assets/components/alert-dialog.tsx +142 -0
- package/dist/assets/components/aspect-ratio.stories.tsx +67 -0
- package/dist/assets/components/aspect-ratio.tsx +8 -0
- package/dist/assets/components/avatar.tsx +64 -20
- package/dist/assets/components/carousel.stories.tsx +158 -0
- package/dist/assets/components/carousel.tsx +262 -0
- package/dist/assets/components/chart.stories.tsx +376 -0
- package/dist/assets/components/chart.tsx +384 -0
- package/dist/assets/components/checkbox.tsx +12 -2
- package/dist/assets/components/code.tsx +22 -20
- package/dist/assets/components/collapsible.stories.tsx +128 -0
- package/dist/assets/components/collapsible.tsx +10 -0
- package/dist/assets/components/command.stories.tsx +183 -0
- package/dist/assets/components/command.tsx +170 -0
- package/dist/assets/components/context-menu.stories.tsx +159 -0
- package/dist/assets/components/context-menu.tsx +218 -0
- package/dist/assets/components/divider.tsx +38 -35
- package/dist/assets/components/dropdown-menu.tsx +217 -0
- package/dist/assets/components/hover-card.stories.tsx +113 -0
- package/dist/assets/components/hover-card.tsx +35 -0
- package/dist/assets/components/kbd.tsx +6 -6
- package/dist/assets/components/menubar.stories.tsx +208 -0
- package/dist/assets/components/menubar.tsx +251 -0
- package/dist/assets/components/navigation-menu.stories.tsx +237 -0
- package/dist/assets/components/navigation-menu.tsx +135 -0
- package/dist/assets/components/resizable.stories.tsx +197 -0
- package/dist/assets/components/resizable.tsx +47 -0
- package/dist/assets/components/scroll-area.stories.tsx +123 -0
- package/dist/assets/components/scroll-area.tsx +48 -0
- package/dist/assets/components/scroll-shadow.tsx +29 -7
- package/dist/assets/components/separator.tsx +32 -0
- package/dist/assets/components/sheet.tsx +141 -0
- package/dist/assets/components/sidebar.stories.tsx +351 -0
- package/dist/assets/components/sidebar.tsx +760 -0
- package/dist/assets/components/toggle-group.stories.tsx +153 -0
- package/dist/assets/components/toggle-group.tsx +61 -0
- package/dist/assets/components/toggle.stories.tsx +77 -0
- package/dist/assets/components/toggle.tsx +46 -0
- package/dist/assets/components/tooltip.tsx +23 -90
- package/dist/assets/globals.css +30 -0
- package/dist/assets/logos/40th-anniversary/Sonance_40_Logo_CMYK_BEAM_BLUE_40_AND_BEAM_DARK.png +0 -0
- package/dist/assets/logos/Sonance logo dark mode.png +0 -0
- package/dist/assets/logos/Sonance logo light mode.png +0 -0
- package/dist/assets/logos/blaze/BlazeBySonance_Logo_Lockup_2C_Light_RGB_05162025.png +0 -0
- package/dist/assets/logos/blaze/BlazeBySonance_Logo_Lockup_3C_Dark_RGB_05162025.png +0 -0
- package/dist/assets/logos/blaze/BlazeBySonance_Logo_Lockup_White_RGB_05162025.png +0 -0
- package/dist/assets/logos/iport/IPORT_Sonance_LockUp_2C_Dark_RGB.png +0 -0
- package/dist/assets/logos/iport/IPORT_Sonance_LockUp_2C_Light_RGB.png +0 -0
- package/dist/assets/logos/james/James_Logo_Black_CMYK.png +0 -0
- package/dist/assets/logos/james/James_Logo_Black_RGB.png +0 -0
- package/dist/assets/logos/james/James_Logo_LtGray_CMYK.png +0 -0
- package/dist/assets/logos/james/James_Logo_LtGray_RGB.png +0 -0
- package/dist/assets/logos/james/James_Logo_Polished_RGB.png +0 -0
- package/dist/assets/logos/james/James_Logo_Reverse_CMYK.png +0 -0
- package/dist/assets/logos/james/James_Logo_Reverse_RGB.png +0 -0
- package/dist/assets/logos/james/James_Logo_White_CMYK.png +0 -0
- package/dist/assets/logos/life-is-better/Sonance_LifeisBetter_Dark_RGB.png +0 -0
- package/dist/assets/logos/life-is-better/Sonance_LifeisBetter_Light_RGB.png +0 -0
- package/dist/assets/logos/my-sonance/My.Sonance_Logo_2C_Dark_RGB.png +0 -0
- package/dist/assets/logos/my-sonance/My.Sonance_Logo_2C_Light_RGB.png +0 -0
- package/dist/assets/logos/my-sonance/My.Sonance_Logo_2C_Reverse_RGB.png +0 -0
- package/dist/assets/logos/my-sonance/My.Sonance_Logo_Black_RGB.png +0 -0
- package/dist/assets/logos/my-sonance/My.Sonance_Logo_Reverse_RGB.png +0 -0
- package/dist/assets/logos/sonance/Sonance_Logo_2C_Dark_RGB.png +0 -0
- package/dist/assets/logos/sonance/Sonance_Logo_2C_Light_RGB.png +0 -0
- package/dist/assets/logos/sonance/Sonance_Logo_2C_Reverse_RGB.png +0 -0
- package/dist/assets/logos/sonance/Sonance_Logo_Black_RGB.png +0 -0
- package/dist/assets/logos/sonance/Sonance_Logo_Grayscale_RGB.png +0 -0
- package/dist/assets/logos/sonance/Sonance_Logo_Reverse_RGB.png +0 -0
- package/dist/assets/logos/sonance-academy/SonanceAcademy_Logo_Dark_CMYK.png +0 -0
- package/dist/assets/logos/sonance-academy/SonanceAcademy_Logo_Light_CMYK.png +0 -0
- package/dist/assets/logos/sonance-iport/Sonance_IPORT_LockUp_3C_Dark_RGB.png +0 -0
- package/dist/assets/logos/sonance-iport/Sonance_IPORT_LockUp_3C_Light_RGB.png +0 -0
- package/dist/assets/logos/sonance-iport/Sonance_IPORT_LockUp_3C_Reverse_RGB.png +0 -0
- package/dist/assets/logos/sonance-iport/Sonance_IPORT_LockUp_Black_RGB.png +0 -0
- package/dist/assets/logos/sonance-iport/Sonance_IPORT_LockUp_Grayscale_RGB.png +0 -0
- package/dist/assets/logos/sonance-iport/Sonance_IPORT_LockUp_Reverse_RGB.png +0 -0
- package/dist/assets/logos/sonance-james/Sonance_James_Lockup_Dark.png +0 -0
- package/dist/assets/logos/sonance-james/Sonance_James_Lockup_Light.png +0 -0
- package/dist/assets/logos/sonance-james-iport/Sonance_James_IPORT_LockupStacked_Dark.png +0 -0
- package/dist/assets/logos/sonance-james-iport/Sonance_James_IPORT_LockupStacked_Light.png +0 -0
- package/dist/assets/logos/sonance-james-iport/Sonance_James_IPORT_Lockup_Dark.png +0 -0
- package/dist/assets/logos/sonance-james-iport/Sonance_James_IPORT_Lockup_Light.png +0 -0
- package/dist/assets/logos/trufig/TrufigLogo_Black.png +0 -0
- package/dist/assets/logos/trufig/TrufigLogo_Light.png +0 -0
- package/dist/assets/logos/trufig/TrufigWatermark_Black.png +0 -0
- package/dist/assets/logos/trufig/TrufigWatermark_Light.png +0 -0
- package/dist/index.js +416 -17
- package/package.json +1 -1
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
4
|
+
import {
|
|
5
|
+
Home,
|
|
6
|
+
Settings,
|
|
7
|
+
Users,
|
|
8
|
+
HelpCircle,
|
|
9
|
+
Search,
|
|
10
|
+
ChevronDown,
|
|
11
|
+
LogOut,
|
|
12
|
+
Plus,
|
|
13
|
+
} from "lucide-react";
|
|
14
|
+
import {
|
|
15
|
+
Sidebar,
|
|
16
|
+
SidebarContent,
|
|
17
|
+
SidebarFooter,
|
|
18
|
+
SidebarGroup,
|
|
19
|
+
SidebarGroupContent,
|
|
20
|
+
SidebarGroupLabel,
|
|
21
|
+
SidebarHeader,
|
|
22
|
+
SidebarInput,
|
|
23
|
+
SidebarMenu,
|
|
24
|
+
SidebarMenuButton,
|
|
25
|
+
SidebarMenuItem,
|
|
26
|
+
SidebarMenuSub,
|
|
27
|
+
SidebarMenuSubButton,
|
|
28
|
+
SidebarMenuSubItem,
|
|
29
|
+
SidebarProvider,
|
|
30
|
+
SidebarRail,
|
|
31
|
+
SidebarSeparator,
|
|
32
|
+
SidebarTrigger,
|
|
33
|
+
SidebarInset,
|
|
34
|
+
} from "./sidebar";
|
|
35
|
+
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./collapsible";
|
|
36
|
+
import { Avatar } from "./avatar";
|
|
37
|
+
|
|
38
|
+
const meta: Meta<typeof Sidebar> = {
|
|
39
|
+
title: "Components/Layout/Sidebar",
|
|
40
|
+
component: Sidebar,
|
|
41
|
+
parameters: {
|
|
42
|
+
layout: "fullscreen",
|
|
43
|
+
},
|
|
44
|
+
tags: ["autodocs"],
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export default meta;
|
|
48
|
+
type Story = StoryObj<typeof Sidebar>;
|
|
49
|
+
|
|
50
|
+
const mainNavItems = [
|
|
51
|
+
{ icon: Home, label: "Dashboard", href: "#" },
|
|
52
|
+
{ icon: Users, label: "Customers", href: "#" },
|
|
53
|
+
{ icon: Settings, label: "Settings", href: "#" },
|
|
54
|
+
{ icon: HelpCircle, label: "Help", href: "#" },
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
const productItems = [
|
|
58
|
+
{ label: "Architectural", href: "#", isActive: true },
|
|
59
|
+
{ label: "Outdoor", href: "#" },
|
|
60
|
+
{ label: "Invisible Series", href: "#" },
|
|
61
|
+
{ label: "Amplifiers", href: "#" },
|
|
62
|
+
];
|
|
63
|
+
|
|
64
|
+
export const Default: Story = {
|
|
65
|
+
render: () => (
|
|
66
|
+
<SidebarProvider>
|
|
67
|
+
<div className="flex min-h-[600px] w-full">
|
|
68
|
+
<Sidebar>
|
|
69
|
+
<SidebarHeader>
|
|
70
|
+
<div className="flex items-center gap-2 px-2 py-1">
|
|
71
|
+
<div className="flex h-8 w-8 items-center justify-center rounded-sm bg-primary text-primary-foreground font-medium">
|
|
72
|
+
S
|
|
73
|
+
</div>
|
|
74
|
+
<span className="font-medium text-foreground">Sonance</span>
|
|
75
|
+
</div>
|
|
76
|
+
</SidebarHeader>
|
|
77
|
+
<SidebarContent>
|
|
78
|
+
<SidebarGroup>
|
|
79
|
+
<SidebarGroupLabel>Navigation</SidebarGroupLabel>
|
|
80
|
+
<SidebarGroupContent>
|
|
81
|
+
<SidebarMenu>
|
|
82
|
+
{mainNavItems.map((item) => (
|
|
83
|
+
<SidebarMenuItem key={item.label}>
|
|
84
|
+
<SidebarMenuButton asChild>
|
|
85
|
+
<a href={item.href}>
|
|
86
|
+
<item.icon />
|
|
87
|
+
<span>{item.label}</span>
|
|
88
|
+
</a>
|
|
89
|
+
</SidebarMenuButton>
|
|
90
|
+
</SidebarMenuItem>
|
|
91
|
+
))}
|
|
92
|
+
</SidebarMenu>
|
|
93
|
+
</SidebarGroupContent>
|
|
94
|
+
</SidebarGroup>
|
|
95
|
+
<SidebarSeparator />
|
|
96
|
+
<SidebarGroup>
|
|
97
|
+
<Collapsible defaultOpen className="group/collapsible">
|
|
98
|
+
<SidebarGroupLabel asChild>
|
|
99
|
+
<CollapsibleTrigger className="flex w-full items-center">
|
|
100
|
+
Products
|
|
101
|
+
<ChevronDown className="ml-auto h-4 w-4 transition-transform group-data-[state=open]/collapsible:rotate-180" />
|
|
102
|
+
</CollapsibleTrigger>
|
|
103
|
+
</SidebarGroupLabel>
|
|
104
|
+
<CollapsibleContent>
|
|
105
|
+
<SidebarGroupContent>
|
|
106
|
+
<SidebarMenu>
|
|
107
|
+
{productItems.map((item) => (
|
|
108
|
+
<SidebarMenuItem key={item.label}>
|
|
109
|
+
<SidebarMenuButton asChild isActive={item.isActive}>
|
|
110
|
+
<a href={item.href}>
|
|
111
|
+
<span>{item.label}</span>
|
|
112
|
+
</a>
|
|
113
|
+
</SidebarMenuButton>
|
|
114
|
+
</SidebarMenuItem>
|
|
115
|
+
))}
|
|
116
|
+
</SidebarMenu>
|
|
117
|
+
</SidebarGroupContent>
|
|
118
|
+
</CollapsibleContent>
|
|
119
|
+
</Collapsible>
|
|
120
|
+
</SidebarGroup>
|
|
121
|
+
</SidebarContent>
|
|
122
|
+
<SidebarFooter>
|
|
123
|
+
<SidebarMenu>
|
|
124
|
+
<SidebarMenuItem>
|
|
125
|
+
<SidebarMenuButton>
|
|
126
|
+
<Avatar fallback="John Doe" size="sm" />
|
|
127
|
+
<span>John Doe</span>
|
|
128
|
+
</SidebarMenuButton>
|
|
129
|
+
</SidebarMenuItem>
|
|
130
|
+
</SidebarMenu>
|
|
131
|
+
</SidebarFooter>
|
|
132
|
+
<SidebarRail />
|
|
133
|
+
</Sidebar>
|
|
134
|
+
<SidebarInset>
|
|
135
|
+
<header className="flex h-14 items-center gap-4 border-b border-border px-4">
|
|
136
|
+
<SidebarTrigger />
|
|
137
|
+
<h1 className="text-lg font-medium">Dashboard</h1>
|
|
138
|
+
</header>
|
|
139
|
+
<div className="flex-1 p-6">
|
|
140
|
+
<p className="text-foreground-secondary">
|
|
141
|
+
Main content area. Press ⌘B to toggle the sidebar.
|
|
142
|
+
</p>
|
|
143
|
+
</div>
|
|
144
|
+
</SidebarInset>
|
|
145
|
+
</div>
|
|
146
|
+
</SidebarProvider>
|
|
147
|
+
),
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
export const WithSearch: Story = {
|
|
151
|
+
render: () => (
|
|
152
|
+
<SidebarProvider>
|
|
153
|
+
<div className="flex min-h-[600px] w-full">
|
|
154
|
+
<Sidebar>
|
|
155
|
+
<SidebarHeader>
|
|
156
|
+
<div className="flex items-center gap-2 px-2 py-1">
|
|
157
|
+
<div className="flex h-8 w-8 items-center justify-center rounded-sm bg-primary text-primary-foreground font-medium">
|
|
158
|
+
S
|
|
159
|
+
</div>
|
|
160
|
+
<span className="font-medium text-foreground">Sonance</span>
|
|
161
|
+
</div>
|
|
162
|
+
<div className="relative px-2">
|
|
163
|
+
<Search className="absolute left-4 top-1/2 h-4 w-4 -translate-y-1/2 text-foreground-muted" />
|
|
164
|
+
<SidebarInput placeholder="Search..." className="pl-8" />
|
|
165
|
+
</div>
|
|
166
|
+
</SidebarHeader>
|
|
167
|
+
<SidebarContent>
|
|
168
|
+
<SidebarGroup>
|
|
169
|
+
<SidebarGroupLabel>Main</SidebarGroupLabel>
|
|
170
|
+
<SidebarGroupContent>
|
|
171
|
+
<SidebarMenu>
|
|
172
|
+
{mainNavItems.map((item) => (
|
|
173
|
+
<SidebarMenuItem key={item.label}>
|
|
174
|
+
<SidebarMenuButton asChild tooltip={item.label}>
|
|
175
|
+
<a href={item.href}>
|
|
176
|
+
<item.icon />
|
|
177
|
+
<span>{item.label}</span>
|
|
178
|
+
</a>
|
|
179
|
+
</SidebarMenuButton>
|
|
180
|
+
</SidebarMenuItem>
|
|
181
|
+
))}
|
|
182
|
+
</SidebarMenu>
|
|
183
|
+
</SidebarGroupContent>
|
|
184
|
+
</SidebarGroup>
|
|
185
|
+
</SidebarContent>
|
|
186
|
+
<SidebarRail />
|
|
187
|
+
</Sidebar>
|
|
188
|
+
<SidebarInset>
|
|
189
|
+
<header className="flex h-14 items-center gap-4 border-b border-border px-4">
|
|
190
|
+
<SidebarTrigger />
|
|
191
|
+
<h1 className="text-lg font-medium">Search Example</h1>
|
|
192
|
+
</header>
|
|
193
|
+
<div className="flex-1 p-6">
|
|
194
|
+
<p className="text-foreground-secondary">
|
|
195
|
+
This sidebar includes a search input in the header.
|
|
196
|
+
</p>
|
|
197
|
+
</div>
|
|
198
|
+
</SidebarInset>
|
|
199
|
+
</div>
|
|
200
|
+
</SidebarProvider>
|
|
201
|
+
),
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
export const WithSubMenu: Story = {
|
|
205
|
+
render: () => (
|
|
206
|
+
<SidebarProvider>
|
|
207
|
+
<div className="flex min-h-[600px] w-full">
|
|
208
|
+
<Sidebar>
|
|
209
|
+
<SidebarHeader>
|
|
210
|
+
<div className="flex items-center gap-2 px-2 py-1">
|
|
211
|
+
<div className="flex h-8 w-8 items-center justify-center rounded-sm bg-primary text-primary-foreground font-medium">
|
|
212
|
+
S
|
|
213
|
+
</div>
|
|
214
|
+
<span className="font-medium text-foreground">Sonance</span>
|
|
215
|
+
</div>
|
|
216
|
+
</SidebarHeader>
|
|
217
|
+
<SidebarContent>
|
|
218
|
+
<SidebarGroup>
|
|
219
|
+
<SidebarGroupLabel>Products</SidebarGroupLabel>
|
|
220
|
+
<SidebarGroupContent>
|
|
221
|
+
<SidebarMenu>
|
|
222
|
+
<Collapsible asChild defaultOpen>
|
|
223
|
+
<SidebarMenuItem>
|
|
224
|
+
<SidebarMenuButton asChild>
|
|
225
|
+
<a href="#">
|
|
226
|
+
<Home />
|
|
227
|
+
<span>Architectural</span>
|
|
228
|
+
</a>
|
|
229
|
+
</SidebarMenuButton>
|
|
230
|
+
<CollapsibleTrigger asChild>
|
|
231
|
+
<SidebarMenuButton className="ml-auto">
|
|
232
|
+
<ChevronDown className="h-4 w-4 transition-transform group-data-[state=open]:rotate-180" />
|
|
233
|
+
</SidebarMenuButton>
|
|
234
|
+
</CollapsibleTrigger>
|
|
235
|
+
<CollapsibleContent>
|
|
236
|
+
<SidebarMenuSub>
|
|
237
|
+
<SidebarMenuSubItem>
|
|
238
|
+
<SidebarMenuSubButton asChild>
|
|
239
|
+
<a href="#">In-Ceiling</a>
|
|
240
|
+
</SidebarMenuSubButton>
|
|
241
|
+
</SidebarMenuSubItem>
|
|
242
|
+
<SidebarMenuSubItem>
|
|
243
|
+
<SidebarMenuSubButton asChild isActive>
|
|
244
|
+
<a href="#">In-Wall</a>
|
|
245
|
+
</SidebarMenuSubButton>
|
|
246
|
+
</SidebarMenuSubItem>
|
|
247
|
+
<SidebarMenuSubItem>
|
|
248
|
+
<SidebarMenuSubButton asChild>
|
|
249
|
+
<a href="#">Invisible</a>
|
|
250
|
+
</SidebarMenuSubButton>
|
|
251
|
+
</SidebarMenuSubItem>
|
|
252
|
+
</SidebarMenuSub>
|
|
253
|
+
</CollapsibleContent>
|
|
254
|
+
</SidebarMenuItem>
|
|
255
|
+
</Collapsible>
|
|
256
|
+
<SidebarMenuItem>
|
|
257
|
+
<SidebarMenuButton asChild>
|
|
258
|
+
<a href="#">
|
|
259
|
+
<Users />
|
|
260
|
+
<span>Outdoor</span>
|
|
261
|
+
</a>
|
|
262
|
+
</SidebarMenuButton>
|
|
263
|
+
</SidebarMenuItem>
|
|
264
|
+
</SidebarMenu>
|
|
265
|
+
</SidebarGroupContent>
|
|
266
|
+
</SidebarGroup>
|
|
267
|
+
</SidebarContent>
|
|
268
|
+
<SidebarFooter>
|
|
269
|
+
<SidebarMenu>
|
|
270
|
+
<SidebarMenuItem>
|
|
271
|
+
<SidebarMenuButton>
|
|
272
|
+
<Plus />
|
|
273
|
+
<span>Add Product</span>
|
|
274
|
+
</SidebarMenuButton>
|
|
275
|
+
</SidebarMenuItem>
|
|
276
|
+
<SidebarMenuItem>
|
|
277
|
+
<SidebarMenuButton>
|
|
278
|
+
<LogOut />
|
|
279
|
+
<span>Logout</span>
|
|
280
|
+
</SidebarMenuButton>
|
|
281
|
+
</SidebarMenuItem>
|
|
282
|
+
</SidebarMenu>
|
|
283
|
+
</SidebarFooter>
|
|
284
|
+
<SidebarRail />
|
|
285
|
+
</Sidebar>
|
|
286
|
+
<SidebarInset>
|
|
287
|
+
<header className="flex h-14 items-center gap-4 border-b border-border px-4">
|
|
288
|
+
<SidebarTrigger />
|
|
289
|
+
<h1 className="text-lg font-medium">With Sub Menu</h1>
|
|
290
|
+
</header>
|
|
291
|
+
<div className="flex-1 p-6">
|
|
292
|
+
<p className="text-foreground-secondary">
|
|
293
|
+
This sidebar includes expandable sub-menus.
|
|
294
|
+
</p>
|
|
295
|
+
</div>
|
|
296
|
+
</SidebarInset>
|
|
297
|
+
</div>
|
|
298
|
+
</SidebarProvider>
|
|
299
|
+
),
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
export const Floating: Story = {
|
|
303
|
+
render: () => (
|
|
304
|
+
<SidebarProvider>
|
|
305
|
+
<div className="flex min-h-[600px] w-full bg-background-secondary p-4">
|
|
306
|
+
<Sidebar variant="floating">
|
|
307
|
+
<SidebarHeader>
|
|
308
|
+
<div className="flex items-center gap-2 px-2 py-1">
|
|
309
|
+
<div className="flex h-8 w-8 items-center justify-center rounded-sm bg-primary text-primary-foreground font-medium">
|
|
310
|
+
S
|
|
311
|
+
</div>
|
|
312
|
+
<span className="font-medium text-foreground">Sonance</span>
|
|
313
|
+
</div>
|
|
314
|
+
</SidebarHeader>
|
|
315
|
+
<SidebarContent>
|
|
316
|
+
<SidebarGroup>
|
|
317
|
+
<SidebarGroupLabel>Navigation</SidebarGroupLabel>
|
|
318
|
+
<SidebarGroupContent>
|
|
319
|
+
<SidebarMenu>
|
|
320
|
+
{mainNavItems.map((item) => (
|
|
321
|
+
<SidebarMenuItem key={item.label}>
|
|
322
|
+
<SidebarMenuButton asChild>
|
|
323
|
+
<a href={item.href}>
|
|
324
|
+
<item.icon />
|
|
325
|
+
<span>{item.label}</span>
|
|
326
|
+
</a>
|
|
327
|
+
</SidebarMenuButton>
|
|
328
|
+
</SidebarMenuItem>
|
|
329
|
+
))}
|
|
330
|
+
</SidebarMenu>
|
|
331
|
+
</SidebarGroupContent>
|
|
332
|
+
</SidebarGroup>
|
|
333
|
+
</SidebarContent>
|
|
334
|
+
<SidebarRail />
|
|
335
|
+
</Sidebar>
|
|
336
|
+
<SidebarInset>
|
|
337
|
+
<header className="flex h-14 items-center gap-4 border-b border-border px-4">
|
|
338
|
+
<SidebarTrigger />
|
|
339
|
+
<h1 className="text-lg font-medium">Floating Variant</h1>
|
|
340
|
+
</header>
|
|
341
|
+
<div className="flex-1 p-6">
|
|
342
|
+
<p className="text-foreground-secondary">
|
|
343
|
+
The floating variant adds rounded corners and a shadow to the sidebar.
|
|
344
|
+
</p>
|
|
345
|
+
</div>
|
|
346
|
+
</SidebarInset>
|
|
347
|
+
</div>
|
|
348
|
+
</SidebarProvider>
|
|
349
|
+
),
|
|
350
|
+
};
|
|
351
|
+
|