sonance-brand-mcp 1.2.5 → 1.3.2
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/api/sonance-analyze/route.ts +1116 -0
- package/dist/assets/api/sonance-assets/route.ts +113 -0
- package/dist/assets/api/sonance-components/route.ts +41 -0
- package/dist/assets/api/sonance-inject-id/route.ts +363 -0
- package/dist/assets/api/sonance-save-logo/route.ts +426 -0
- package/dist/assets/api/sonance-theme/route.ts +106 -0
- package/dist/assets/brand-system.ts +1265 -0
- package/dist/assets/components/accordion.stories.tsx +26 -26
- package/dist/assets/components/accordion.tsx +3 -3
- package/dist/assets/components/alert-dialog.stories.tsx +142 -0
- package/dist/assets/components/alert-dialog.tsx +143 -0
- package/dist/assets/components/alert.stories.tsx +3 -3
- package/dist/assets/components/alert.tsx +4 -3
- package/dist/assets/components/aspect-ratio.stories.tsx +70 -0
- package/dist/assets/components/aspect-ratio.tsx +8 -0
- package/dist/assets/components/autocomplete.stories.tsx +9 -9
- package/dist/assets/components/autocomplete.tsx +3 -3
- package/dist/assets/components/avatar.stories.tsx +5 -5
- package/dist/assets/components/avatar.tsx +67 -23
- package/dist/assets/components/badge.stories.tsx +10 -10
- package/dist/assets/components/badge.tsx +3 -3
- package/dist/assets/components/breadcrumbs.stories.tsx +7 -7
- package/dist/assets/components/breadcrumbs.tsx +13 -8
- package/dist/assets/components/button.stories.tsx +74 -74
- package/dist/assets/components/button.tsx +2 -0
- package/dist/assets/components/calendar.stories.tsx +11 -11
- package/dist/assets/components/calendar.tsx +4 -4
- package/dist/assets/components/card.stories.tsx +22 -22
- package/dist/assets/components/card.tsx +7 -3
- package/dist/assets/components/carousel.stories.tsx +158 -0
- package/dist/assets/components/carousel.tsx +264 -0
- package/dist/assets/components/chart.stories.tsx +376 -0
- package/dist/assets/components/chart.tsx +384 -0
- package/dist/assets/components/checkbox-group.stories.tsx +6 -6
- package/dist/assets/components/checkbox-group.tsx +3 -3
- package/dist/assets/components/checkbox.stories.tsx +23 -20
- package/dist/assets/components/checkbox.tsx +13 -6
- package/dist/assets/components/code.stories.tsx +24 -24
- package/dist/assets/components/code.tsx +22 -27
- 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 +171 -0
- package/dist/assets/components/context-menu.stories.tsx +159 -0
- package/dist/assets/components/context-menu.tsx +214 -0
- package/dist/assets/components/date-input.stories.tsx +9 -9
- package/dist/assets/components/date-input.tsx +2 -2
- package/dist/assets/components/date-picker.stories.tsx +9 -9
- package/dist/assets/components/date-picker.tsx +3 -3
- package/dist/assets/components/date-range-picker.stories.tsx +12 -12
- package/dist/assets/components/date-range-picker.tsx +3 -3
- package/dist/assets/components/dialog.stories.tsx +40 -40
- package/dist/assets/components/dialog.tsx +8 -12
- package/dist/assets/components/divider.stories.tsx +30 -30
- package/dist/assets/components/divider.tsx +34 -35
- package/dist/assets/components/drawer.stories.tsx +32 -31
- package/dist/assets/components/drawer.tsx +7 -6
- package/dist/assets/components/dropdown-menu.tsx +213 -0
- package/dist/assets/components/dropdown.stories.tsx +12 -12
- package/dist/assets/components/dropdown.tsx +5 -5
- package/dist/assets/components/form.stories.tsx +30 -29
- package/dist/assets/components/form.tsx +5 -5
- package/dist/assets/components/hover-card.stories.tsx +115 -0
- package/dist/assets/components/hover-card.tsx +35 -0
- package/dist/assets/components/image.stories.tsx +48 -25
- package/dist/assets/components/image.tsx +8 -5
- package/dist/assets/components/input-otp.stories.tsx +15 -15
- package/dist/assets/components/input-otp.tsx +5 -5
- package/dist/assets/components/input.stories.tsx +30 -25
- package/dist/assets/components/input.tsx +7 -4
- package/dist/assets/components/kbd.stories.tsx +34 -34
- package/dist/assets/components/kbd.tsx +9 -9
- package/dist/assets/components/link.stories.tsx +36 -36
- package/dist/assets/components/link.tsx +4 -0
- package/dist/assets/components/listbox.stories.tsx +5 -5
- package/dist/assets/components/listbox.tsx +4 -4
- package/dist/assets/components/menubar.stories.tsx +208 -0
- package/dist/assets/components/menubar.tsx +247 -0
- package/dist/assets/components/navbar.stories.tsx +24 -24
- package/dist/assets/components/navbar.tsx +8 -14
- package/dist/assets/components/navigation-menu.stories.tsx +239 -0
- package/dist/assets/components/navigation-menu.tsx +135 -0
- package/dist/assets/components/number-input.stories.tsx +11 -11
- package/dist/assets/components/number-input.tsx +3 -3
- package/dist/assets/components/pagination.stories.tsx +13 -13
- package/dist/assets/components/pagination.tsx +6 -6
- package/dist/assets/components/popover.stories.tsx +35 -35
- package/dist/assets/components/popover.tsx +98 -15
- package/dist/assets/components/progress.stories.tsx +5 -5
- package/dist/assets/components/progress.tsx +5 -5
- package/dist/assets/components/radio-group.stories.tsx +7 -7
- package/dist/assets/components/radio-group.tsx +3 -3
- package/dist/assets/components/range-calendar.stories.tsx +18 -18
- package/dist/assets/components/range-calendar.tsx +3 -3
- 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.stories.tsx +17 -17
- package/dist/assets/components/scroll-shadow.tsx +31 -9
- package/dist/assets/components/select.stories.tsx +20 -19
- package/dist/assets/components/select.tsx +10 -6
- package/dist/assets/components/separator.tsx +32 -0
- package/dist/assets/components/sheet.tsx +137 -0
- package/dist/assets/components/sidebar.stories.tsx +351 -0
- package/dist/assets/components/sidebar.tsx +757 -0
- package/dist/assets/components/skeleton.stories.tsx +3 -3
- package/dist/assets/components/skeleton.tsx +2 -2
- package/dist/assets/components/slider.stories.tsx +6 -6
- package/dist/assets/components/slider.tsx +3 -3
- package/dist/assets/components/spacer.stories.tsx +11 -11
- package/dist/assets/components/spacer.tsx +2 -2
- package/dist/assets/components/spinner.stories.tsx +8 -8
- package/dist/assets/components/spinner.tsx +5 -5
- package/dist/assets/components/switch.stories.tsx +24 -20
- package/dist/assets/components/switch.tsx +14 -6
- package/dist/assets/components/table.stories.tsx +7 -7
- package/dist/assets/components/table.tsx +8 -8
- package/dist/assets/components/tabs.stories.tsx +37 -37
- package/dist/assets/components/tabs.tsx +3 -3
- package/dist/assets/components/textarea.stories.tsx +13 -12
- package/dist/assets/components/textarea.tsx +3 -3
- package/dist/assets/components/theme-toggle.stories.tsx +31 -30
- package/dist/assets/components/theme-toggle.tsx +2 -2
- package/dist/assets/components/time-input.stories.tsx +16 -16
- package/dist/assets/components/time-input.tsx +2 -2
- package/dist/assets/components/toast.stories.tsx +8 -5
- package/dist/assets/components/toast.tsx +6 -6
- 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.stories.tsx +49 -27
- package/dist/assets/components/tooltip.tsx +23 -90
- package/dist/assets/components/user.stories.tsx +23 -23
- package/dist/assets/components/user.tsx +7 -4
- package/dist/assets/dev-tools/SonanceDevTools.tsx +4201 -0
- package/dist/assets/dev-tools/index.ts +10 -0
- package/dist/assets/globals.css +39 -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/assets/styles/brand-overrides.css +37 -0
- package/dist/index.js +2055 -15
- package/package.json +1 -1
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import {
|
|
6
|
+
Menubar,
|
|
7
|
+
MenubarCheckboxItem,
|
|
8
|
+
MenubarContent,
|
|
9
|
+
MenubarItem,
|
|
10
|
+
MenubarMenu,
|
|
11
|
+
MenubarRadioGroup,
|
|
12
|
+
MenubarRadioItem,
|
|
13
|
+
MenubarSeparator,
|
|
14
|
+
MenubarShortcut,
|
|
15
|
+
MenubarSub,
|
|
16
|
+
MenubarSubContent,
|
|
17
|
+
MenubarSubTrigger,
|
|
18
|
+
MenubarTrigger,
|
|
19
|
+
} from "./menubar";
|
|
20
|
+
|
|
21
|
+
const meta: Meta<typeof Menubar> = {
|
|
22
|
+
title: "Components/Navigation/Menubar",
|
|
23
|
+
component: Menubar,
|
|
24
|
+
parameters: {
|
|
25
|
+
layout: "centered",
|
|
26
|
+
},
|
|
27
|
+
tags: ["autodocs"],
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default meta;
|
|
31
|
+
type Story = StoryObj<typeof Menubar>;
|
|
32
|
+
|
|
33
|
+
export const Default: Story = {
|
|
34
|
+
render: () => (
|
|
35
|
+
<Menubar>
|
|
36
|
+
<MenubarMenu>
|
|
37
|
+
<MenubarTrigger>File</MenubarTrigger>
|
|
38
|
+
<MenubarContent>
|
|
39
|
+
<MenubarItem>
|
|
40
|
+
New Tab <MenubarShortcut>⌘T</MenubarShortcut>
|
|
41
|
+
</MenubarItem>
|
|
42
|
+
<MenubarItem>
|
|
43
|
+
New Window <MenubarShortcut>⌘N</MenubarShortcut>
|
|
44
|
+
</MenubarItem>
|
|
45
|
+
<MenubarItem disabled>New Incognito Window</MenubarItem>
|
|
46
|
+
<MenubarSeparator />
|
|
47
|
+
<MenubarSub>
|
|
48
|
+
<MenubarSubTrigger>Share</MenubarSubTrigger>
|
|
49
|
+
<MenubarSubContent>
|
|
50
|
+
<MenubarItem>Email link</MenubarItem>
|
|
51
|
+
<MenubarItem>Messages</MenubarItem>
|
|
52
|
+
<MenubarItem>Notes</MenubarItem>
|
|
53
|
+
</MenubarSubContent>
|
|
54
|
+
</MenubarSub>
|
|
55
|
+
<MenubarSeparator />
|
|
56
|
+
<MenubarItem>
|
|
57
|
+
Print... <MenubarShortcut>⌘P</MenubarShortcut>
|
|
58
|
+
</MenubarItem>
|
|
59
|
+
</MenubarContent>
|
|
60
|
+
</MenubarMenu>
|
|
61
|
+
<MenubarMenu>
|
|
62
|
+
<MenubarTrigger>Edit</MenubarTrigger>
|
|
63
|
+
<MenubarContent>
|
|
64
|
+
<MenubarItem>
|
|
65
|
+
Undo <MenubarShortcut>⌘Z</MenubarShortcut>
|
|
66
|
+
</MenubarItem>
|
|
67
|
+
<MenubarItem>
|
|
68
|
+
Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>
|
|
69
|
+
</MenubarItem>
|
|
70
|
+
<MenubarSeparator />
|
|
71
|
+
<MenubarSub>
|
|
72
|
+
<MenubarSubTrigger>Find</MenubarSubTrigger>
|
|
73
|
+
<MenubarSubContent>
|
|
74
|
+
<MenubarItem>Search the web</MenubarItem>
|
|
75
|
+
<MenubarSeparator />
|
|
76
|
+
<MenubarItem>Find...</MenubarItem>
|
|
77
|
+
<MenubarItem>Find Next</MenubarItem>
|
|
78
|
+
<MenubarItem>Find Previous</MenubarItem>
|
|
79
|
+
</MenubarSubContent>
|
|
80
|
+
</MenubarSub>
|
|
81
|
+
<MenubarSeparator />
|
|
82
|
+
<MenubarItem>Cut</MenubarItem>
|
|
83
|
+
<MenubarItem>Copy</MenubarItem>
|
|
84
|
+
<MenubarItem>Paste</MenubarItem>
|
|
85
|
+
</MenubarContent>
|
|
86
|
+
</MenubarMenu>
|
|
87
|
+
<MenubarMenu>
|
|
88
|
+
<MenubarTrigger>View</MenubarTrigger>
|
|
89
|
+
<MenubarContent>
|
|
90
|
+
<MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>
|
|
91
|
+
<MenubarCheckboxItem checked>
|
|
92
|
+
Always Show Full URLs
|
|
93
|
+
</MenubarCheckboxItem>
|
|
94
|
+
<MenubarSeparator />
|
|
95
|
+
<MenubarItem inset>
|
|
96
|
+
Reload <MenubarShortcut>⌘R</MenubarShortcut>
|
|
97
|
+
</MenubarItem>
|
|
98
|
+
<MenubarItem disabled inset>
|
|
99
|
+
Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>
|
|
100
|
+
</MenubarItem>
|
|
101
|
+
<MenubarSeparator />
|
|
102
|
+
<MenubarItem inset>Toggle Fullscreen</MenubarItem>
|
|
103
|
+
<MenubarSeparator />
|
|
104
|
+
<MenubarItem inset>Hide Sidebar</MenubarItem>
|
|
105
|
+
</MenubarContent>
|
|
106
|
+
</MenubarMenu>
|
|
107
|
+
<MenubarMenu>
|
|
108
|
+
<MenubarTrigger>Profiles</MenubarTrigger>
|
|
109
|
+
<MenubarContent>
|
|
110
|
+
<MenubarRadioGroup value="benoit">
|
|
111
|
+
<MenubarRadioItem value="andy">Andy</MenubarRadioItem>
|
|
112
|
+
<MenubarRadioItem value="benoit">Benoit</MenubarRadioItem>
|
|
113
|
+
<MenubarRadioItem value="luis">Luis</MenubarRadioItem>
|
|
114
|
+
</MenubarRadioGroup>
|
|
115
|
+
<MenubarSeparator />
|
|
116
|
+
<MenubarItem inset>Edit...</MenubarItem>
|
|
117
|
+
<MenubarSeparator />
|
|
118
|
+
<MenubarItem inset>Add Profile...</MenubarItem>
|
|
119
|
+
</MenubarContent>
|
|
120
|
+
</MenubarMenu>
|
|
121
|
+
</Menubar>
|
|
122
|
+
),
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
function MenubarWithStateDemo() {
|
|
126
|
+
const [showBookmarks, setShowBookmarks] = useState(false);
|
|
127
|
+
const [showUrls, setShowUrls] = useState(true);
|
|
128
|
+
const [profile, setProfile] = useState("benoit");
|
|
129
|
+
|
|
130
|
+
return (
|
|
131
|
+
<Menubar>
|
|
132
|
+
<MenubarMenu>
|
|
133
|
+
<MenubarTrigger>File</MenubarTrigger>
|
|
134
|
+
<MenubarContent>
|
|
135
|
+
<MenubarItem>New File</MenubarItem>
|
|
136
|
+
<MenubarItem>Open...</MenubarItem>
|
|
137
|
+
<MenubarSeparator />
|
|
138
|
+
<MenubarItem>Save</MenubarItem>
|
|
139
|
+
<MenubarItem>Save As...</MenubarItem>
|
|
140
|
+
</MenubarContent>
|
|
141
|
+
</MenubarMenu>
|
|
142
|
+
<MenubarMenu>
|
|
143
|
+
<MenubarTrigger>View</MenubarTrigger>
|
|
144
|
+
<MenubarContent>
|
|
145
|
+
<MenubarCheckboxItem
|
|
146
|
+
checked={showBookmarks}
|
|
147
|
+
onCheckedChange={setShowBookmarks}
|
|
148
|
+
>
|
|
149
|
+
Show Bookmarks
|
|
150
|
+
</MenubarCheckboxItem>
|
|
151
|
+
<MenubarCheckboxItem
|
|
152
|
+
checked={showUrls}
|
|
153
|
+
onCheckedChange={setShowUrls}
|
|
154
|
+
>
|
|
155
|
+
Show Full URLs
|
|
156
|
+
</MenubarCheckboxItem>
|
|
157
|
+
</MenubarContent>
|
|
158
|
+
</MenubarMenu>
|
|
159
|
+
<MenubarMenu>
|
|
160
|
+
<MenubarTrigger>Profiles</MenubarTrigger>
|
|
161
|
+
<MenubarContent>
|
|
162
|
+
<MenubarRadioGroup value={profile} onValueChange={setProfile}>
|
|
163
|
+
<MenubarRadioItem value="andy">Andy</MenubarRadioItem>
|
|
164
|
+
<MenubarRadioItem value="benoit">Benoit</MenubarRadioItem>
|
|
165
|
+
<MenubarRadioItem value="luis">Luis</MenubarRadioItem>
|
|
166
|
+
</MenubarRadioGroup>
|
|
167
|
+
</MenubarContent>
|
|
168
|
+
</MenubarMenu>
|
|
169
|
+
</Menubar>
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export const WithState: Story = {
|
|
174
|
+
render: () => <MenubarWithStateDemo />,
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
export const Simple: Story = {
|
|
178
|
+
render: () => (
|
|
179
|
+
<Menubar>
|
|
180
|
+
<MenubarMenu>
|
|
181
|
+
<MenubarTrigger>Products</MenubarTrigger>
|
|
182
|
+
<MenubarContent>
|
|
183
|
+
<MenubarItem>Architectural Speakers</MenubarItem>
|
|
184
|
+
<MenubarItem>Outdoor Speakers</MenubarItem>
|
|
185
|
+
<MenubarItem>Subwoofers</MenubarItem>
|
|
186
|
+
<MenubarItem>Amplifiers</MenubarItem>
|
|
187
|
+
</MenubarContent>
|
|
188
|
+
</MenubarMenu>
|
|
189
|
+
<MenubarMenu>
|
|
190
|
+
<MenubarTrigger>Support</MenubarTrigger>
|
|
191
|
+
<MenubarContent>
|
|
192
|
+
<MenubarItem>Documentation</MenubarItem>
|
|
193
|
+
<MenubarItem>Tutorials</MenubarItem>
|
|
194
|
+
<MenubarItem>Contact Support</MenubarItem>
|
|
195
|
+
</MenubarContent>
|
|
196
|
+
</MenubarMenu>
|
|
197
|
+
<MenubarMenu>
|
|
198
|
+
<MenubarTrigger>About</MenubarTrigger>
|
|
199
|
+
<MenubarContent>
|
|
200
|
+
<MenubarItem>Company</MenubarItem>
|
|
201
|
+
<MenubarItem>Careers</MenubarItem>
|
|
202
|
+
<MenubarItem>Press</MenubarItem>
|
|
203
|
+
</MenubarContent>
|
|
204
|
+
</MenubarMenu>
|
|
205
|
+
</Menubar>
|
|
206
|
+
),
|
|
207
|
+
};
|
|
208
|
+
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
5
|
+
import { Check, ChevronRight, Circle } from "lucide-react";
|
|
6
|
+
import { cn } from "@/lib/utils";
|
|
7
|
+
|
|
8
|
+
const MenubarMenu = MenubarPrimitive.Menu;
|
|
9
|
+
const MenubarGroup = MenubarPrimitive.Group;
|
|
10
|
+
const MenubarPortal = MenubarPrimitive.Portal;
|
|
11
|
+
const MenubarSub = MenubarPrimitive.Sub;
|
|
12
|
+
const MenubarRadioGroup = MenubarPrimitive.RadioGroup;
|
|
13
|
+
|
|
14
|
+
const Menubar = React.forwardRef<
|
|
15
|
+
React.ElementRef<typeof MenubarPrimitive.Root>,
|
|
16
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>
|
|
17
|
+
>(({ className, ...props }, ref) => (
|
|
18
|
+
<MenubarPrimitive.Root
|
|
19
|
+
ref={ref}
|
|
20
|
+
className={cn(
|
|
21
|
+
"flex h-10 items-center space-x-1 rounded-sm border border-border bg-background p-1",
|
|
22
|
+
className
|
|
23
|
+
)}
|
|
24
|
+
{...props}
|
|
25
|
+
/>
|
|
26
|
+
));
|
|
27
|
+
Menubar.displayName = MenubarPrimitive.Root.displayName;
|
|
28
|
+
|
|
29
|
+
const MenubarTrigger = React.forwardRef<
|
|
30
|
+
React.ElementRef<typeof MenubarPrimitive.Trigger>,
|
|
31
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>
|
|
32
|
+
>(({ className, ...props }, ref) => (
|
|
33
|
+
<MenubarPrimitive.Trigger
|
|
34
|
+
ref={ref}
|
|
35
|
+
className={cn(
|
|
36
|
+
"flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none",
|
|
37
|
+
"focus:bg-secondary-hover focus:text-foreground",
|
|
38
|
+
"data-[state=open]:bg-secondary-hover data-[state=open]:text-foreground",
|
|
39
|
+
className
|
|
40
|
+
)}
|
|
41
|
+
{...props}
|
|
42
|
+
/>
|
|
43
|
+
));
|
|
44
|
+
MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
|
|
45
|
+
|
|
46
|
+
const MenubarSubTrigger = React.forwardRef<
|
|
47
|
+
React.ElementRef<typeof MenubarPrimitive.SubTrigger>,
|
|
48
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {
|
|
49
|
+
inset?: boolean;
|
|
50
|
+
}
|
|
51
|
+
>(({ className, inset, children, ...props }, ref) => (
|
|
52
|
+
<MenubarPrimitive.SubTrigger
|
|
53
|
+
ref={ref}
|
|
54
|
+
className={cn(
|
|
55
|
+
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none",
|
|
56
|
+
"focus:bg-secondary-hover focus:text-foreground",
|
|
57
|
+
"data-[state=open]:bg-secondary-hover data-[state=open]:text-foreground",
|
|
58
|
+
inset && "pl-8",
|
|
59
|
+
className
|
|
60
|
+
)}
|
|
61
|
+
{...props}
|
|
62
|
+
>
|
|
63
|
+
{children}
|
|
64
|
+
<ChevronRight className="ml-auto h-4 w-4" />
|
|
65
|
+
</MenubarPrimitive.SubTrigger>
|
|
66
|
+
));
|
|
67
|
+
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
|
|
68
|
+
|
|
69
|
+
const MenubarSubContent = React.forwardRef<
|
|
70
|
+
React.ElementRef<typeof MenubarPrimitive.SubContent>,
|
|
71
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>
|
|
72
|
+
>(({ className, ...props }, ref) => (
|
|
73
|
+
<MenubarPrimitive.SubContent
|
|
74
|
+
ref={ref}
|
|
75
|
+
className={cn(
|
|
76
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-sm border border-border bg-card p-1 text-foreground shadow-md",
|
|
77
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
78
|
+
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
79
|
+
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
80
|
+
"data-[side=bottom]:slide-in-from-top-2",
|
|
81
|
+
"data-[side=left]:slide-in-from-right-2",
|
|
82
|
+
"data-[side=right]:slide-in-from-left-2",
|
|
83
|
+
"data-[side=top]:slide-in-from-bottom-2",
|
|
84
|
+
className
|
|
85
|
+
)}
|
|
86
|
+
{...props}
|
|
87
|
+
/>
|
|
88
|
+
));
|
|
89
|
+
MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
|
|
90
|
+
|
|
91
|
+
const MenubarContent = React.forwardRef<
|
|
92
|
+
React.ElementRef<typeof MenubarPrimitive.Content>,
|
|
93
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>
|
|
94
|
+
>(
|
|
95
|
+
(
|
|
96
|
+
{ className, align = "start", alignOffset = -4, sideOffset = 8, ...props },
|
|
97
|
+
ref
|
|
98
|
+
) => (
|
|
99
|
+
<MenubarPrimitive.Portal>
|
|
100
|
+
<MenubarPrimitive.Content
|
|
101
|
+
ref={ref}
|
|
102
|
+
align={align}
|
|
103
|
+
alignOffset={alignOffset}
|
|
104
|
+
sideOffset={sideOffset}
|
|
105
|
+
className={cn(
|
|
106
|
+
"z-50 min-w-[12rem] overflow-hidden rounded-sm border border-border bg-card p-1 text-foreground shadow-md",
|
|
107
|
+
"data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
108
|
+
"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
109
|
+
className
|
|
110
|
+
)}
|
|
111
|
+
{...props}
|
|
112
|
+
/>
|
|
113
|
+
</MenubarPrimitive.Portal>
|
|
114
|
+
)
|
|
115
|
+
);
|
|
116
|
+
MenubarContent.displayName = MenubarPrimitive.Content.displayName;
|
|
117
|
+
|
|
118
|
+
const MenubarItem = React.forwardRef<
|
|
119
|
+
React.ElementRef<typeof MenubarPrimitive.Item>,
|
|
120
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {
|
|
121
|
+
inset?: boolean;
|
|
122
|
+
}
|
|
123
|
+
>(({ className, inset, ...props }, ref) => (
|
|
124
|
+
<MenubarPrimitive.Item
|
|
125
|
+
ref={ref}
|
|
126
|
+
className={cn(
|
|
127
|
+
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none",
|
|
128
|
+
"focus:bg-secondary-hover focus:text-foreground",
|
|
129
|
+
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
130
|
+
inset && "pl-8",
|
|
131
|
+
className
|
|
132
|
+
)}
|
|
133
|
+
{...props}
|
|
134
|
+
/>
|
|
135
|
+
));
|
|
136
|
+
MenubarItem.displayName = MenubarPrimitive.Item.displayName;
|
|
137
|
+
|
|
138
|
+
const MenubarCheckboxItem = React.forwardRef<
|
|
139
|
+
React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,
|
|
140
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>
|
|
141
|
+
>(({ className, children, checked, ...props }, ref) => (
|
|
142
|
+
<MenubarPrimitive.CheckboxItem
|
|
143
|
+
ref={ref}
|
|
144
|
+
className={cn(
|
|
145
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
|
|
146
|
+
"focus:bg-secondary-hover focus:text-foreground",
|
|
147
|
+
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
148
|
+
className
|
|
149
|
+
)}
|
|
150
|
+
checked={checked}
|
|
151
|
+
{...props}
|
|
152
|
+
>
|
|
153
|
+
<span id="menubar-checkbox-item-span" className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
154
|
+
<MenubarPrimitive.ItemIndicator>
|
|
155
|
+
<Check className="h-4 w-4" />
|
|
156
|
+
</MenubarPrimitive.ItemIndicator>
|
|
157
|
+
</span>
|
|
158
|
+
{children}
|
|
159
|
+
</MenubarPrimitive.CheckboxItem>
|
|
160
|
+
));
|
|
161
|
+
MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
|
|
162
|
+
|
|
163
|
+
const MenubarRadioItem = React.forwardRef<
|
|
164
|
+
React.ElementRef<typeof MenubarPrimitive.RadioItem>,
|
|
165
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>
|
|
166
|
+
>(({ className, children, ...props }, ref) => (
|
|
167
|
+
<MenubarPrimitive.RadioItem
|
|
168
|
+
ref={ref}
|
|
169
|
+
className={cn(
|
|
170
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
|
|
171
|
+
"focus:bg-secondary-hover focus:text-foreground",
|
|
172
|
+
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
173
|
+
className
|
|
174
|
+
)}
|
|
175
|
+
{...props}
|
|
176
|
+
>
|
|
177
|
+
<span id="menubar-radio-item-span" className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
178
|
+
<MenubarPrimitive.ItemIndicator>
|
|
179
|
+
<Circle className="h-2 w-2 fill-current" />
|
|
180
|
+
</MenubarPrimitive.ItemIndicator>
|
|
181
|
+
</span>
|
|
182
|
+
{children}
|
|
183
|
+
</MenubarPrimitive.RadioItem>
|
|
184
|
+
));
|
|
185
|
+
MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
|
|
186
|
+
|
|
187
|
+
const MenubarLabel = React.forwardRef<
|
|
188
|
+
React.ElementRef<typeof MenubarPrimitive.Label>,
|
|
189
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {
|
|
190
|
+
inset?: boolean;
|
|
191
|
+
}
|
|
192
|
+
>(({ className, inset, ...props }, ref) => (
|
|
193
|
+
<MenubarPrimitive.Label
|
|
194
|
+
ref={ref}
|
|
195
|
+
className={cn(
|
|
196
|
+
"px-2 py-1.5 text-xs font-medium uppercase tracking-widest text-foreground-muted",
|
|
197
|
+
inset && "pl-8",
|
|
198
|
+
className
|
|
199
|
+
)}
|
|
200
|
+
{...props}
|
|
201
|
+
/>
|
|
202
|
+
));
|
|
203
|
+
MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
|
|
204
|
+
|
|
205
|
+
const MenubarSeparator = React.forwardRef<
|
|
206
|
+
React.ElementRef<typeof MenubarPrimitive.Separator>,
|
|
207
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>
|
|
208
|
+
>(({ className, ...props }, ref) => (
|
|
209
|
+
<MenubarPrimitive.Separator
|
|
210
|
+
ref={ref}
|
|
211
|
+
className={cn("-mx-1 my-1 h-px bg-border", className)}
|
|
212
|
+
{...props}
|
|
213
|
+
/>
|
|
214
|
+
));
|
|
215
|
+
MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
|
|
216
|
+
|
|
217
|
+
const MenubarShortcut = ({
|
|
218
|
+
className,
|
|
219
|
+
...props
|
|
220
|
+
}: React.HTMLAttributes<HTMLSpanElement>) => {
|
|
221
|
+
return (
|
|
222
|
+
<span id="menubar-shortcut-span" data-sonance-name="menubar"
|
|
223
|
+
{...props}
|
|
224
|
+
/>
|
|
225
|
+
);
|
|
226
|
+
};
|
|
227
|
+
MenubarShortcut.displayname = "MenubarShortcut";
|
|
228
|
+
|
|
229
|
+
export {
|
|
230
|
+
Menubar,
|
|
231
|
+
MenubarMenu,
|
|
232
|
+
MenubarTrigger,
|
|
233
|
+
MenubarContent,
|
|
234
|
+
MenubarItem,
|
|
235
|
+
MenubarSeparator,
|
|
236
|
+
MenubarLabel,
|
|
237
|
+
MenubarCheckboxItem,
|
|
238
|
+
MenubarRadioGroup,
|
|
239
|
+
MenubarRadioItem,
|
|
240
|
+
MenubarPortal,
|
|
241
|
+
MenubarSubContent,
|
|
242
|
+
MenubarSubTrigger,
|
|
243
|
+
MenubarGroup,
|
|
244
|
+
MenubarSub,
|
|
245
|
+
MenubarShortcut,
|
|
246
|
+
};
|
|
247
|
+
|
|
@@ -39,7 +39,7 @@ export const Default: Story = {
|
|
|
39
39
|
<Navbar>
|
|
40
40
|
<NavbarContent>
|
|
41
41
|
<NavbarBrand>
|
|
42
|
-
<span className="text-xl font-semibold">Sonance</span>
|
|
42
|
+
<span id="nav-span-sonance" className="text-xl font-semibold">Sonance</span>
|
|
43
43
|
</NavbarBrand>
|
|
44
44
|
<NavbarItems>
|
|
45
45
|
<NavbarItem href="#" active>Home</NavbarItem>
|
|
@@ -47,7 +47,7 @@ export const Default: Story = {
|
|
|
47
47
|
<NavbarItem href="#">About</NavbarItem>
|
|
48
48
|
<NavbarItem href="#">Contact</NavbarItem>
|
|
49
49
|
</NavbarItems>
|
|
50
|
-
<Button size="sm">Sign In</Button>
|
|
50
|
+
<Button id="nav-button" size="sm">Sign In</Button>
|
|
51
51
|
</NavbarContent>
|
|
52
52
|
</Navbar>
|
|
53
53
|
),
|
|
@@ -58,14 +58,14 @@ export const Dark: Story = {
|
|
|
58
58
|
<Navbar variant="dark">
|
|
59
59
|
<NavbarContent>
|
|
60
60
|
<NavbarBrand>
|
|
61
|
-
<span className="text-xl font-semibold">Sonance</span>
|
|
61
|
+
<span id="nav-span-sonance" className="text-xl font-semibold">Sonance</span>
|
|
62
62
|
</NavbarBrand>
|
|
63
63
|
<NavbarItems>
|
|
64
64
|
<NavbarItem href="#" active>Home</NavbarItem>
|
|
65
65
|
<NavbarItem href="#">Products</NavbarItem>
|
|
66
66
|
<NavbarItem href="#">About</NavbarItem>
|
|
67
67
|
</NavbarItems>
|
|
68
|
-
<Button size="sm" variant="inverted">Sign In</Button>
|
|
68
|
+
<Button id="nav-button-inverted" size="sm" variant="inverted">Sign In</Button>
|
|
69
69
|
</NavbarContent>
|
|
70
70
|
</Navbar>
|
|
71
71
|
),
|
|
@@ -77,14 +77,14 @@ export const Transparent: Story = {
|
|
|
77
77
|
<Navbar variant="transparent" className="text-white">
|
|
78
78
|
<NavbarContent>
|
|
79
79
|
<NavbarBrand>
|
|
80
|
-
<span className="text-xl font-semibold">Sonance</span>
|
|
80
|
+
<span id="nav-span-sonance" className="text-xl font-semibold">Sonance</span>
|
|
81
81
|
</NavbarBrand>
|
|
82
82
|
<NavbarItems>
|
|
83
83
|
<NavbarItem href="#" active>Home</NavbarItem>
|
|
84
84
|
<NavbarItem href="#">Products</NavbarItem>
|
|
85
85
|
<NavbarItem href="#">About</NavbarItem>
|
|
86
86
|
</NavbarItems>
|
|
87
|
-
<Button size="sm" variant="inverted">Sign In</Button>
|
|
87
|
+
<Button id="nav-button-inverted" size="sm" variant="inverted">Sign In</Button>
|
|
88
88
|
</NavbarContent>
|
|
89
89
|
</Navbar>
|
|
90
90
|
</div>
|
|
@@ -97,18 +97,18 @@ export const Blur: Story = {
|
|
|
97
97
|
<Navbar variant="blur">
|
|
98
98
|
<NavbarContent>
|
|
99
99
|
<NavbarBrand>
|
|
100
|
-
<span className="text-xl font-semibold">Sonance</span>
|
|
100
|
+
<span id="nav-span-sonance" className="text-xl font-semibold">Sonance</span>
|
|
101
101
|
</NavbarBrand>
|
|
102
102
|
<NavbarItems>
|
|
103
103
|
<NavbarItem href="#" active>Home</NavbarItem>
|
|
104
104
|
<NavbarItem href="#">Products</NavbarItem>
|
|
105
105
|
<NavbarItem href="#">About</NavbarItem>
|
|
106
106
|
</NavbarItems>
|
|
107
|
-
<Button size="sm">Sign In</Button>
|
|
107
|
+
<Button id="nav-button" size="sm">Sign In</Button>
|
|
108
108
|
</NavbarContent>
|
|
109
109
|
</Navbar>
|
|
110
110
|
<div className="p-8 text-white">
|
|
111
|
-
<p>Content behind the blurred navbar</p>
|
|
111
|
+
<p id="nav-p-content-behind-the-b">Content behind the blurred navbar</p>
|
|
112
112
|
</div>
|
|
113
113
|
</div>
|
|
114
114
|
),
|
|
@@ -117,14 +117,14 @@ export const Blur: Story = {
|
|
|
117
117
|
export const Responsive: Story = {
|
|
118
118
|
render: () => (
|
|
119
119
|
<ResponsiveNavbar
|
|
120
|
-
brand={<span className="text-xl font-semibold">Sonance</span>}
|
|
120
|
+
brand={<span id="nav-span-sonance" className="text-xl font-semibold">Sonance</span>}
|
|
121
121
|
items={[
|
|
122
122
|
{ label: 'Home', href: '#', active: true },
|
|
123
123
|
{ label: 'Products', href: '#' },
|
|
124
124
|
{ label: 'About', href: '#' },
|
|
125
125
|
{ label: 'Contact', href: '#' },
|
|
126
126
|
]}
|
|
127
|
-
actions={<Button size="sm">Sign In</Button>}
|
|
127
|
+
actions={<Button id="responsive-button" size="sm">Sign In</Button>}
|
|
128
128
|
/>
|
|
129
129
|
),
|
|
130
130
|
};
|
|
@@ -135,7 +135,7 @@ export const WithLogo: Story = {
|
|
|
135
135
|
<NavbarContent>
|
|
136
136
|
<NavbarBrand>
|
|
137
137
|
<div className="w-8 h-8 bg-primary rounded" />
|
|
138
|
-
<span className="text-xl font-semibold">Sonance</span>
|
|
138
|
+
<span id="nav-span-sonance" className="text-xl font-semibold">Sonance</span>
|
|
139
139
|
</NavbarBrand>
|
|
140
140
|
<NavbarItems>
|
|
141
141
|
<NavbarItem href="#" active>Home</NavbarItem>
|
|
@@ -143,8 +143,8 @@ export const WithLogo: Story = {
|
|
|
143
143
|
<NavbarItem href="#">Support</NavbarItem>
|
|
144
144
|
</NavbarItems>
|
|
145
145
|
<div className="flex items-center gap-2">
|
|
146
|
-
<Button size="sm" variant="ghost">Log In</Button>
|
|
147
|
-
<Button size="sm">Sign Up</Button>
|
|
146
|
+
<Button id="nav-button-ghost" size="sm" variant="ghost">Log In</Button>
|
|
147
|
+
<Button id="nav-button" size="sm">Sign Up</Button>
|
|
148
148
|
</div>
|
|
149
149
|
</NavbarContent>
|
|
150
150
|
</Navbar>
|
|
@@ -157,46 +157,46 @@ export const ResponsiveMatrix: Story = {
|
|
|
157
157
|
<div className="space-y-8">
|
|
158
158
|
{/* Mobile */}
|
|
159
159
|
<div>
|
|
160
|
-
<h4 className="text-xs uppercase text-foreground-muted mb-2">Mobile (375px)</h4>
|
|
160
|
+
<h4 id="nav-h4-mobile-375px" className="text-xs uppercase text-foreground-muted mb-2">Mobile (375px)</h4>
|
|
161
161
|
<div className="w-[375px] border border-dashed border-border overflow-hidden">
|
|
162
162
|
<ResponsiveNavbar
|
|
163
|
-
brand={<span className="text-lg font-semibold">Sonance</span>}
|
|
163
|
+
brand={<span id="responsive-matrix-span-sonance" className="text-lg font-semibold">Sonance</span>}
|
|
164
164
|
items={[
|
|
165
165
|
{ label: 'Home', href: '#', active: true },
|
|
166
166
|
{ label: 'Products', href: '#' },
|
|
167
167
|
{ label: 'About', href: '#' },
|
|
168
168
|
]}
|
|
169
|
-
actions={<Button size="sm">Sign In</Button>}
|
|
169
|
+
actions={<Button id="responsive-matrix-button" size="sm">Sign In</Button>}
|
|
170
170
|
/>
|
|
171
171
|
</div>
|
|
172
172
|
</div>
|
|
173
173
|
{/* Tablet */}
|
|
174
174
|
<div>
|
|
175
|
-
<h4 className="text-xs uppercase text-foreground-muted mb-2">Tablet (768px)</h4>
|
|
175
|
+
<h4 id="responsive-matrix-h4-tablet-768px" className="text-xs uppercase text-foreground-muted mb-2">Tablet (768px)</h4>
|
|
176
176
|
<div className="w-[768px] border border-dashed border-border overflow-hidden">
|
|
177
177
|
<Navbar>
|
|
178
178
|
<NavbarContent>
|
|
179
179
|
<NavbarBrand>
|
|
180
|
-
<span className="text-xl font-semibold">Sonance</span>
|
|
180
|
+
<span id="nav-span-sonance" className="text-xl font-semibold">Sonance</span>
|
|
181
181
|
</NavbarBrand>
|
|
182
182
|
<NavbarItems>
|
|
183
183
|
<NavbarItem href="#" active>Home</NavbarItem>
|
|
184
184
|
<NavbarItem href="#">Products</NavbarItem>
|
|
185
185
|
<NavbarItem href="#">About</NavbarItem>
|
|
186
186
|
</NavbarItems>
|
|
187
|
-
<Button size="sm">Sign In</Button>
|
|
187
|
+
<Button id="nav-button" size="sm">Sign In</Button>
|
|
188
188
|
</NavbarContent>
|
|
189
189
|
</Navbar>
|
|
190
190
|
</div>
|
|
191
191
|
</div>
|
|
192
192
|
{/* Desktop */}
|
|
193
193
|
<div>
|
|
194
|
-
<h4 className="text-xs uppercase text-foreground-muted mb-2">Desktop (1280px)</h4>
|
|
194
|
+
<h4 id="nav-h4-desktop-1280px" className="text-xs uppercase text-foreground-muted mb-2">Desktop (1280px)</h4>
|
|
195
195
|
<div className="w-[1280px] border border-dashed border-border overflow-hidden">
|
|
196
196
|
<Navbar>
|
|
197
197
|
<NavbarContent>
|
|
198
198
|
<NavbarBrand>
|
|
199
|
-
<span className="text-xl font-semibold">Sonance</span>
|
|
199
|
+
<span id="nav-span-sonance" className="text-xl font-semibold">Sonance</span>
|
|
200
200
|
</NavbarBrand>
|
|
201
201
|
<NavbarItems>
|
|
202
202
|
<NavbarItem href="#" active>Home</NavbarItem>
|
|
@@ -206,8 +206,8 @@ export const ResponsiveMatrix: Story = {
|
|
|
206
206
|
<NavbarItem href="#">Contact</NavbarItem>
|
|
207
207
|
</NavbarItems>
|
|
208
208
|
<div className="flex items-center gap-2">
|
|
209
|
-
<Button size="sm" variant="ghost">Log In</Button>
|
|
210
|
-
<Button size="sm">Sign Up</Button>
|
|
209
|
+
<Button id="nav-button-ghost" size="sm" variant="ghost">Log In</Button>
|
|
210
|
+
<Button id="nav-button" size="sm">Sign Up</Button>
|
|
211
211
|
</div>
|
|
212
212
|
</NavbarContent>
|
|
213
213
|
</Navbar>
|