sonance-brand-mcp 1.1.4 → 1.1.7

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.
Files changed (71) hide show
  1. package/dist/assets/components/accordion.stories.tsx +310 -0
  2. package/dist/assets/components/accordion.tsx +56 -30
  3. package/dist/assets/components/alert.stories.tsx +199 -0
  4. package/dist/assets/components/autocomplete.stories.tsx +307 -0
  5. package/dist/assets/components/autocomplete.tsx +28 -4
  6. package/dist/assets/components/avatar.stories.tsx +175 -0
  7. package/dist/assets/components/badge.stories.tsx +258 -0
  8. package/dist/assets/components/breadcrumbs.stories.tsx +175 -0
  9. package/dist/assets/components/button.stories.tsx +362 -0
  10. package/dist/assets/components/button.tsx +48 -3
  11. package/dist/assets/components/calendar.stories.tsx +247 -0
  12. package/dist/assets/components/card.stories.tsx +275 -0
  13. package/dist/assets/components/card.tsx +26 -1
  14. package/dist/assets/components/checkbox-group.stories.tsx +281 -0
  15. package/dist/assets/components/checkbox.stories.tsx +160 -0
  16. package/dist/assets/components/checkbox.tsx +32 -4
  17. package/dist/assets/components/code.stories.tsx +265 -0
  18. package/dist/assets/components/date-input.stories.tsx +278 -0
  19. package/dist/assets/components/date-input.tsx +24 -2
  20. package/dist/assets/components/date-picker.stories.tsx +337 -0
  21. package/dist/assets/components/date-picker.tsx +28 -4
  22. package/dist/assets/components/date-range-picker.stories.tsx +340 -0
  23. package/dist/assets/components/dialog.stories.tsx +285 -0
  24. package/dist/assets/components/divider.stories.tsx +176 -0
  25. package/dist/assets/components/drawer.stories.tsx +216 -0
  26. package/dist/assets/components/dropdown.stories.tsx +342 -0
  27. package/dist/assets/components/dropdown.tsx +55 -10
  28. package/dist/assets/components/form.stories.tsx +372 -0
  29. package/dist/assets/components/image.stories.tsx +348 -0
  30. package/dist/assets/components/input-otp.stories.tsx +336 -0
  31. package/dist/assets/components/input-otp.tsx +24 -2
  32. package/dist/assets/components/input.stories.tsx +223 -0
  33. package/dist/assets/components/input.tsx +27 -2
  34. package/dist/assets/components/kbd.stories.tsx +272 -0
  35. package/dist/assets/components/link.stories.tsx +199 -0
  36. package/dist/assets/components/link.tsx +50 -1
  37. package/dist/assets/components/listbox.stories.tsx +287 -0
  38. package/dist/assets/components/listbox.tsx +30 -7
  39. package/dist/assets/components/navbar.stories.tsx +218 -0
  40. package/dist/assets/components/number-input.stories.tsx +295 -0
  41. package/dist/assets/components/number-input.tsx +30 -8
  42. package/dist/assets/components/pagination.stories.tsx +280 -0
  43. package/dist/assets/components/pagination.tsx +45 -21
  44. package/dist/assets/components/popover.stories.tsx +219 -0
  45. package/dist/assets/components/progress.stories.tsx +153 -0
  46. package/dist/assets/components/radio-group.stories.tsx +187 -0
  47. package/dist/assets/components/radio-group.tsx +30 -6
  48. package/dist/assets/components/range-calendar.stories.tsx +334 -0
  49. package/dist/assets/components/scroll-shadow.stories.tsx +335 -0
  50. package/dist/assets/components/select.stories.tsx +192 -0
  51. package/dist/assets/components/select.tsx +54 -7
  52. package/dist/assets/components/skeleton.stories.tsx +166 -0
  53. package/dist/assets/components/slider.stories.tsx +145 -0
  54. package/dist/assets/components/slider.tsx +43 -8
  55. package/dist/assets/components/spacer.stories.tsx +216 -0
  56. package/dist/assets/components/spinner.stories.tsx +149 -0
  57. package/dist/assets/components/switch.stories.tsx +170 -0
  58. package/dist/assets/components/switch.tsx +29 -4
  59. package/dist/assets/components/table.stories.tsx +322 -0
  60. package/dist/assets/components/tabs.stories.tsx +306 -0
  61. package/dist/assets/components/tabs.tsx +25 -4
  62. package/dist/assets/components/textarea.stories.tsx +103 -0
  63. package/dist/assets/components/textarea.tsx +27 -3
  64. package/dist/assets/components/theme-toggle.stories.tsx +248 -0
  65. package/dist/assets/components/time-input.stories.tsx +365 -0
  66. package/dist/assets/components/time-input.tsx +25 -3
  67. package/dist/assets/components/toast.stories.tsx +195 -0
  68. package/dist/assets/components/tooltip.stories.tsx +226 -0
  69. package/dist/assets/components/user.stories.tsx +274 -0
  70. package/dist/index.js +1649 -13
  71. package/package.json +1 -1
@@ -0,0 +1,258 @@
1
+ import type { Meta, StoryObj } from '@storybook/nextjs-vite';
2
+ import { Badge, Chip } from './badge';
3
+
4
+ const meta: Meta<typeof Badge> = {
5
+ title: 'Components/Feedback/Badge',
6
+ component: Badge,
7
+ tags: ['autodocs'],
8
+ parameters: {
9
+ docs: {
10
+ description: {
11
+ component: 'A small status indicator component. Use for labels, counts, or status indicators.',
12
+ },
13
+ },
14
+ },
15
+ argTypes: {
16
+ variant: {
17
+ control: 'select',
18
+ options: ['default', 'primary', 'secondary', 'success', 'error', 'warning', 'info', 'outline'],
19
+ description: 'Visual style variant',
20
+ table: {
21
+ defaultValue: { summary: 'default' },
22
+ },
23
+ },
24
+ size: {
25
+ control: 'select',
26
+ options: ['sm', 'md', 'lg'],
27
+ description: 'Badge size',
28
+ table: {
29
+ defaultValue: { summary: 'md' },
30
+ },
31
+ },
32
+ children: {
33
+ control: 'text',
34
+ description: 'Badge content',
35
+ },
36
+ },
37
+ };
38
+
39
+ export default meta;
40
+ type Story = StoryObj<typeof meta>;
41
+
42
+ // Default story
43
+ export const Default: Story = {
44
+ args: {
45
+ children: 'Badge',
46
+ },
47
+ };
48
+
49
+ // Variants
50
+ export const Primary: Story = {
51
+ args: {
52
+ children: 'Primary',
53
+ variant: 'primary',
54
+ },
55
+ };
56
+
57
+ export const Secondary: Story = {
58
+ args: {
59
+ children: 'Secondary',
60
+ variant: 'secondary',
61
+ },
62
+ };
63
+
64
+ export const Success: Story = {
65
+ args: {
66
+ children: 'Success',
67
+ variant: 'success',
68
+ },
69
+ };
70
+
71
+ export const Error: Story = {
72
+ args: {
73
+ children: 'Error',
74
+ variant: 'error',
75
+ },
76
+ };
77
+
78
+ export const Warning: Story = {
79
+ args: {
80
+ children: 'Warning',
81
+ variant: 'warning',
82
+ },
83
+ };
84
+
85
+ export const Info: Story = {
86
+ args: {
87
+ children: 'Info',
88
+ variant: 'info',
89
+ },
90
+ };
91
+
92
+ export const Outline: Story = {
93
+ args: {
94
+ children: 'Outline',
95
+ variant: 'outline',
96
+ },
97
+ };
98
+
99
+ // All Variants
100
+ export const AllVariants: Story = {
101
+ render: () => (
102
+ <div className="flex flex-wrap gap-2">
103
+ <Badge variant="default">Default</Badge>
104
+ <Badge variant="primary">Primary</Badge>
105
+ <Badge variant="secondary">Secondary</Badge>
106
+ <Badge variant="success">Success</Badge>
107
+ <Badge variant="error">Error</Badge>
108
+ <Badge variant="warning">Warning</Badge>
109
+ <Badge variant="info">Info</Badge>
110
+ <Badge variant="outline">Outline</Badge>
111
+ </div>
112
+ ),
113
+ };
114
+
115
+ // All Sizes
116
+ export const AllSizes: Story = {
117
+ render: () => (
118
+ <div className="flex items-center gap-2">
119
+ <Badge size="sm">Small</Badge>
120
+ <Badge size="md">Medium</Badge>
121
+ <Badge size="lg">Large</Badge>
122
+ </div>
123
+ ),
124
+ };
125
+
126
+ // Status Examples
127
+ export const StatusExamples: Story = {
128
+ render: () => (
129
+ <div className="space-y-4">
130
+ <div className="flex items-center gap-2">
131
+ <Badge variant="success">Active</Badge>
132
+ <span className="text-foreground-secondary">User account is active</span>
133
+ </div>
134
+ <div className="flex items-center gap-2">
135
+ <Badge variant="warning">Pending</Badge>
136
+ <span className="text-foreground-secondary">Awaiting approval</span>
137
+ </div>
138
+ <div className="flex items-center gap-2">
139
+ <Badge variant="error">Suspended</Badge>
140
+ <span className="text-foreground-secondary">Account suspended</span>
141
+ </div>
142
+ <div className="flex items-center gap-2">
143
+ <Badge variant="info">New</Badge>
144
+ <span className="text-foreground-secondary">Recently added</span>
145
+ </div>
146
+ </div>
147
+ ),
148
+ };
149
+
150
+ // Chip Component
151
+ export const ChipDefault: StoryObj<typeof Chip> = {
152
+ render: () => (
153
+ <Chip>Removable Chip</Chip>
154
+ ),
155
+ };
156
+
157
+ export const ChipWithClose: StoryObj<typeof Chip> = {
158
+ render: () => (
159
+ <Chip onClose={() => console.log('Closed!')}>
160
+ Click X to Remove
161
+ </Chip>
162
+ ),
163
+ };
164
+
165
+ // Chips Example
166
+ export const ChipsExample: Story = {
167
+ render: () => (
168
+ <div className="flex flex-wrap gap-2">
169
+ <Chip variant="primary" onClose={() => {}}>React</Chip>
170
+ <Chip variant="primary" onClose={() => {}}>TypeScript</Chip>
171
+ <Chip variant="primary" onClose={() => {}}>Tailwind</Chip>
172
+ <Chip variant="secondary" onClose={() => {}}>Next.js</Chip>
173
+ <Chip variant="secondary" onClose={() => {}}>Storybook</Chip>
174
+ </div>
175
+ ),
176
+ };
177
+
178
+ // Count Badges
179
+ export const CountBadges: Story = {
180
+ render: () => (
181
+ <div className="flex items-center gap-6">
182
+ <div className="relative">
183
+ <span className="text-foreground">Notifications</span>
184
+ <Badge variant="error" size="sm" className="absolute -top-2 -right-6">3</Badge>
185
+ </div>
186
+ <div className="relative">
187
+ <span className="text-foreground">Messages</span>
188
+ <Badge variant="primary" size="sm" className="absolute -top-2 -right-6">12</Badge>
189
+ </div>
190
+ <div className="relative">
191
+ <span className="text-foreground">Cart</span>
192
+ <Badge variant="info" size="sm" className="absolute -top-2 -right-4">5</Badge>
193
+ </div>
194
+ </div>
195
+ ),
196
+ };
197
+
198
+ // Responsive Matrix - Mobile, Tablet, Desktop
199
+ export const ResponsiveMatrix: Story = {
200
+ render: () => (
201
+ <div className="space-y-8">
202
+ {/* Mobile */}
203
+ <div>
204
+ <h4 className="text-xs uppercase text-foreground-muted mb-2">Mobile (375px)</h4>
205
+ <div className="w-[375px] border border-dashed border-border p-4">
206
+ <div className="flex flex-wrap gap-2">
207
+ <Badge variant="primary">Primary</Badge>
208
+ <Badge variant="success">Success</Badge>
209
+ <Badge variant="error">Error</Badge>
210
+ <Badge variant="warning">Warning</Badge>
211
+ <Badge variant="info">Info</Badge>
212
+ </div>
213
+ </div>
214
+ </div>
215
+ {/* Tablet */}
216
+ <div>
217
+ <h4 className="text-xs uppercase text-foreground-muted mb-2">Tablet (768px)</h4>
218
+ <div className="w-[768px] border border-dashed border-border p-4">
219
+ <div className="flex items-center gap-4">
220
+ <div className="flex gap-2">
221
+ <Badge variant="primary" size="sm">Small</Badge>
222
+ <Badge variant="primary" size="md">Medium</Badge>
223
+ <Badge variant="primary" size="lg">Large</Badge>
224
+ </div>
225
+ <div className="flex gap-2">
226
+ <Badge variant="success">Active</Badge>
227
+ <Badge variant="warning">Pending</Badge>
228
+ <Badge variant="error">Inactive</Badge>
229
+ </div>
230
+ </div>
231
+ </div>
232
+ </div>
233
+ {/* Desktop */}
234
+ <div>
235
+ <h4 className="text-xs uppercase text-foreground-muted mb-2">Desktop (1280px)</h4>
236
+ <div className="w-[1280px] border border-dashed border-border p-4">
237
+ <div className="flex items-center justify-between">
238
+ <div className="flex gap-2">
239
+ <Badge variant="default">Default</Badge>
240
+ <Badge variant="primary">Primary</Badge>
241
+ <Badge variant="secondary">Secondary</Badge>
242
+ <Badge variant="success">Success</Badge>
243
+ <Badge variant="error">Error</Badge>
244
+ <Badge variant="warning">Warning</Badge>
245
+ <Badge variant="info">Info</Badge>
246
+ <Badge variant="outline">Outline</Badge>
247
+ </div>
248
+ <div className="flex gap-2">
249
+ <Chip variant="primary" onClose={() => {}}>React</Chip>
250
+ <Chip variant="primary" onClose={() => {}}>TypeScript</Chip>
251
+ <Chip variant="secondary" onClose={() => {}}>Tailwind</Chip>
252
+ </div>
253
+ </div>
254
+ </div>
255
+ </div>
256
+ </div>
257
+ ),
258
+ };
@@ -0,0 +1,175 @@
1
+ import type { Meta, StoryObj } from '@storybook/nextjs-vite';
2
+ import { Breadcrumbs } from './breadcrumbs';
3
+ import { Folder } from 'lucide-react';
4
+
5
+ const meta: Meta<typeof Breadcrumbs> = {
6
+ title: 'Components/Navigation/Breadcrumbs',
7
+ component: Breadcrumbs,
8
+ tags: ['autodocs'],
9
+ parameters: {
10
+ docs: {
11
+ description: {
12
+ component: 'A breadcrumb navigation component for showing the current page location.',
13
+ },
14
+ },
15
+ },
16
+ };
17
+
18
+ export default meta;
19
+ type Story = StoryObj<typeof meta>;
20
+
21
+ export const Default: Story = {
22
+ args: {
23
+ items: [
24
+ { label: 'Products', href: '#' },
25
+ { label: 'Speakers', href: '#' },
26
+ { label: 'In-Wall', href: '#' },
27
+ { label: 'VP66 TL' },
28
+ ],
29
+ },
30
+ };
31
+
32
+ export const WithHome: Story = {
33
+ args: {
34
+ showHome: true,
35
+ items: [
36
+ { label: 'Products', href: '#' },
37
+ { label: 'Speakers', href: '#' },
38
+ { label: 'VP66 TL' },
39
+ ],
40
+ },
41
+ };
42
+
43
+ export const TwoLevels: Story = {
44
+ args: {
45
+ items: [
46
+ { label: 'Dashboard', href: '#' },
47
+ { label: 'Settings' },
48
+ ],
49
+ },
50
+ };
51
+
52
+ export const WithIcons: Story = {
53
+ args: {
54
+ items: [
55
+ { label: 'Documents', href: '#', icon: <Folder className="h-4 w-4" /> },
56
+ { label: 'Projects', href: '#', icon: <Folder className="h-4 w-4" /> },
57
+ { label: 'Report.pdf' },
58
+ ],
59
+ },
60
+ };
61
+
62
+ export const CustomSeparator: Story = {
63
+ args: {
64
+ separator: <span className="text-foreground-muted">/</span>,
65
+ items: [
66
+ { label: 'Home', href: '#' },
67
+ { label: 'Category', href: '#' },
68
+ { label: 'Subcategory', href: '#' },
69
+ { label: 'Current Page' },
70
+ ],
71
+ },
72
+ };
73
+
74
+ export const LongPath: Story = {
75
+ args: {
76
+ showHome: true,
77
+ items: [
78
+ { label: 'Electronics', href: '#' },
79
+ { label: 'Audio', href: '#' },
80
+ { label: 'Speakers', href: '#' },
81
+ { label: 'In-Wall Speakers', href: '#' },
82
+ { label: 'Premium Series', href: '#' },
83
+ { label: 'VP66 TL' },
84
+ ],
85
+ },
86
+ };
87
+
88
+ export const AllExamples: Story = {
89
+ render: () => (
90
+ <div className="space-y-6">
91
+ <div>
92
+ <p className="text-xs text-foreground-muted mb-2">Simple</p>
93
+ <Breadcrumbs
94
+ items={[
95
+ { label: 'Home', href: '#' },
96
+ { label: 'Current Page' },
97
+ ]}
98
+ />
99
+ </div>
100
+ <div>
101
+ <p className="text-xs text-foreground-muted mb-2">With Home Icon</p>
102
+ <Breadcrumbs
103
+ showHome
104
+ items={[
105
+ { label: 'Products', href: '#' },
106
+ { label: 'Details' },
107
+ ]}
108
+ />
109
+ </div>
110
+ <div>
111
+ <p className="text-xs text-foreground-muted mb-2">Deep Navigation</p>
112
+ <Breadcrumbs
113
+ items={[
114
+ { label: 'Level 1', href: '#' },
115
+ { label: 'Level 2', href: '#' },
116
+ { label: 'Level 3', href: '#' },
117
+ { label: 'Level 4' },
118
+ ]}
119
+ />
120
+ </div>
121
+ </div>
122
+ ),
123
+ };
124
+
125
+ // Responsive Matrix - Mobile, Tablet, Desktop
126
+ export const ResponsiveMatrix: Story = {
127
+ render: () => (
128
+ <div className="space-y-8">
129
+ {/* Mobile */}
130
+ <div>
131
+ <h4 className="text-xs uppercase text-foreground-muted mb-2">Mobile (375px)</h4>
132
+ <div className="w-[375px] border border-dashed border-border p-4">
133
+ <Breadcrumbs
134
+ items={[
135
+ { label: 'Products', href: '#' },
136
+ { label: 'VP66 TL' },
137
+ ]}
138
+ />
139
+ </div>
140
+ </div>
141
+ {/* Tablet */}
142
+ <div>
143
+ <h4 className="text-xs uppercase text-foreground-muted mb-2">Tablet (768px)</h4>
144
+ <div className="w-[768px] border border-dashed border-border p-4">
145
+ <Breadcrumbs
146
+ showHome
147
+ items={[
148
+ { label: 'Products', href: '#' },
149
+ { label: 'Speakers', href: '#' },
150
+ { label: 'In-Wall', href: '#' },
151
+ { label: 'VP66 TL' },
152
+ ]}
153
+ />
154
+ </div>
155
+ </div>
156
+ {/* Desktop */}
157
+ <div>
158
+ <h4 className="text-xs uppercase text-foreground-muted mb-2">Desktop (1280px)</h4>
159
+ <div className="w-[1280px] border border-dashed border-border p-4">
160
+ <Breadcrumbs
161
+ showHome
162
+ items={[
163
+ { label: 'Electronics', href: '#' },
164
+ { label: 'Audio', href: '#' },
165
+ { label: 'Speakers', href: '#' },
166
+ { label: 'In-Wall Speakers', href: '#' },
167
+ { label: 'Premium Series', href: '#' },
168
+ { label: 'VP66 TL' },
169
+ ]}
170
+ />
171
+ </div>
172
+ </div>
173
+ </div>
174
+ ),
175
+ };