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
|
@@ -1,97 +1,30 @@
|
|
|
1
|
-
"use client"
|
|
1
|
+
"use client"
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip"
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
import { cn } from "@/lib/utils"
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
content: React.ReactNode;
|
|
10
|
-
children: React.ReactNode;
|
|
11
|
-
/** @deprecated Use `side` instead */
|
|
12
|
-
position?: TooltipPosition;
|
|
13
|
-
side?: TooltipPosition;
|
|
14
|
-
delay?: number;
|
|
15
|
-
className?: string;
|
|
16
|
-
}
|
|
8
|
+
const TooltipProvider = TooltipPrimitive.Provider
|
|
17
9
|
|
|
18
|
-
|
|
19
|
-
content,
|
|
20
|
-
children,
|
|
21
|
-
position,
|
|
22
|
-
side = "top",
|
|
23
|
-
delay = 200,
|
|
24
|
-
className,
|
|
25
|
-
}: TooltipProps) {
|
|
26
|
-
// Support both `position` (legacy) and `side` (preferred)
|
|
27
|
-
const resolvedPosition = position ?? side;
|
|
28
|
-
const [isVisible, setIsVisible] = useState(false);
|
|
29
|
-
const timeoutRef = useRef<NodeJS.Timeout | null>(null);
|
|
10
|
+
const Tooltip = TooltipPrimitive.Root
|
|
30
11
|
|
|
31
|
-
|
|
32
|
-
timeoutRef.current = setTimeout(() => {
|
|
33
|
-
setIsVisible(true);
|
|
34
|
-
}, delay);
|
|
35
|
-
};
|
|
12
|
+
const TooltipTrigger = TooltipPrimitive.Trigger
|
|
36
13
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const positionClasses: Record<TooltipPosition, string> = {
|
|
53
|
-
top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
|
|
54
|
-
bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
|
|
55
|
-
left: "right-full top-1/2 -translate-y-1/2 mr-2",
|
|
56
|
-
right: "left-full top-1/2 -translate-y-1/2 ml-2",
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
const arrowClasses: Record<TooltipPosition, string> = {
|
|
60
|
-
top: "top-full left-1/2 -translate-x-1/2 border-t-sonance-charcoal border-x-transparent border-b-transparent",
|
|
61
|
-
bottom: "bottom-full left-1/2 -translate-x-1/2 border-b-sonance-charcoal border-x-transparent border-t-transparent",
|
|
62
|
-
left: "left-full top-1/2 -translate-y-1/2 border-l-sonance-charcoal border-y-transparent border-r-transparent",
|
|
63
|
-
right: "right-full top-1/2 -translate-y-1/2 border-r-sonance-charcoal border-y-transparent border-l-transparent",
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
return (
|
|
67
|
-
<div
|
|
68
|
-
className="relative inline-block"
|
|
69
|
-
onMouseEnter={showTooltip}
|
|
70
|
-
onMouseLeave={hideTooltip}
|
|
71
|
-
onFocus={showTooltip}
|
|
72
|
-
onBlur={hideTooltip}
|
|
73
|
-
>
|
|
74
|
-
{children}
|
|
75
|
-
{isVisible && (
|
|
76
|
-
<div
|
|
77
|
-
role="tooltip"
|
|
78
|
-
className={cn(
|
|
79
|
-
"absolute z-50 px-3 py-1.5 text-xs font-medium text-white bg-sonance-charcoal whitespace-nowrap",
|
|
80
|
-
"animate-in fade-in zoom-in-95 duration-150",
|
|
81
|
-
positionClasses[resolvedPosition],
|
|
82
|
-
className
|
|
83
|
-
)}
|
|
84
|
-
>
|
|
85
|
-
{content}
|
|
86
|
-
<span
|
|
87
|
-
className={cn(
|
|
88
|
-
"absolute border-4",
|
|
89
|
-
arrowClasses[resolvedPosition]
|
|
90
|
-
)}
|
|
91
|
-
/>
|
|
92
|
-
</div>
|
|
93
|
-
)}
|
|
94
|
-
</div>
|
|
95
|
-
);
|
|
96
|
-
}
|
|
14
|
+
const TooltipContent = React.forwardRef<
|
|
15
|
+
React.ElementRef<typeof TooltipPrimitive.Content>,
|
|
16
|
+
React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
|
|
17
|
+
>(({ className, sideOffset = 4, ...props }, ref) => (
|
|
18
|
+
<TooltipPrimitive.Content data-sonance-name="tooltip"
|
|
19
|
+
ref={ref}
|
|
20
|
+
sideOffset={sideOffset}
|
|
21
|
+
className={cn(
|
|
22
|
+
"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 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",
|
|
23
|
+
className
|
|
24
|
+
)}
|
|
25
|
+
{...props}
|
|
26
|
+
/>
|
|
27
|
+
))
|
|
28
|
+
TooltipContent.displayName = TooltipPrimitive.Content.displayName
|
|
97
29
|
|
|
30
|
+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }
|
|
@@ -43,15 +43,15 @@ export const Sizes: Story = {
|
|
|
43
43
|
render: () => (
|
|
44
44
|
<div className="space-y-4">
|
|
45
45
|
<div>
|
|
46
|
-
<p className="text-xs text-foreground-muted mb-2">Small</p>
|
|
46
|
+
<p id="sizes-p-small" className="text-xs text-foreground-muted mb-2">Small</p>
|
|
47
47
|
<User name="John Doe" description="Designer" size="sm" />
|
|
48
48
|
</div>
|
|
49
49
|
<div>
|
|
50
|
-
<p className="text-xs text-foreground-muted mb-2">Medium (default)</p>
|
|
50
|
+
<p id="sizes-p-medium-default" className="text-xs text-foreground-muted mb-2">Medium (default)</p>
|
|
51
51
|
<User name="John Doe" description="Designer" size="md" />
|
|
52
52
|
</div>
|
|
53
53
|
<div>
|
|
54
|
-
<p className="text-xs text-foreground-muted mb-2">Large</p>
|
|
54
|
+
<p id="sizes-p-large" className="text-xs text-foreground-muted mb-2">Large</p>
|
|
55
55
|
<User name="John Doe" description="Designer" size="lg" />
|
|
56
56
|
</div>
|
|
57
57
|
</div>
|
|
@@ -79,7 +79,7 @@ export const Card: Story = {
|
|
|
79
79
|
name="Sarah Wilson"
|
|
80
80
|
description="sarah@sonance.com"
|
|
81
81
|
avatarSrc="https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=100&h=100&fit=crop"
|
|
82
|
-
actions={<Button size="sm" variant="secondary">Follow</Button>}
|
|
82
|
+
actions={<Button id="card-button-secondary" size="sm" variant="secondary">Follow</Button>}
|
|
83
83
|
/>
|
|
84
84
|
</div>
|
|
85
85
|
),
|
|
@@ -91,7 +91,7 @@ export const CardVariations: Story = {
|
|
|
91
91
|
<UserCard
|
|
92
92
|
name="David Lee"
|
|
93
93
|
description="Architect"
|
|
94
|
-
actions={<Button size="sm" variant="secondary">Message</Button>}
|
|
94
|
+
actions={<Button id="card-variations-button-secondary" size="sm" variant="secondary">Message</Button>}
|
|
95
95
|
/>
|
|
96
96
|
<UserCard
|
|
97
97
|
name="Emily Chen"
|
|
@@ -99,8 +99,8 @@ export const CardVariations: Story = {
|
|
|
99
99
|
avatarSrc="https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=100&h=100&fit=crop"
|
|
100
100
|
actions={
|
|
101
101
|
<div className="flex gap-2">
|
|
102
|
-
<Button size="sm" variant="ghost">Ignore</Button>
|
|
103
|
-
<Button size="sm">Accept</Button>
|
|
102
|
+
<Button id="card-variations-button-ghost" size="sm" variant="ghost">Ignore</Button>
|
|
103
|
+
<Button id="card-variations-button" size="sm">Accept</Button>
|
|
104
104
|
</div>
|
|
105
105
|
}
|
|
106
106
|
/>
|
|
@@ -138,17 +138,17 @@ export const ListWithActions: Story = {
|
|
|
138
138
|
name="Alice Brown"
|
|
139
139
|
description="Project Manager"
|
|
140
140
|
avatarSrc="https://images.unsplash.com/photo-1580489944761-15a19d654956?w=100&h=100&fit=crop"
|
|
141
|
-
actions={<Button size="sm" variant="ghost">Remove</Button>}
|
|
141
|
+
actions={<Button id="list-with-actions-button-ghost" size="sm" variant="ghost">Remove</Button>}
|
|
142
142
|
/>
|
|
143
143
|
<UserListItem
|
|
144
144
|
name="Bob Johnson"
|
|
145
145
|
description="Developer"
|
|
146
|
-
actions={<Button size="sm" variant="ghost">Remove</Button>}
|
|
146
|
+
actions={<Button id="list-with-actions-button-ghost" size="sm" variant="ghost">Remove</Button>}
|
|
147
147
|
/>
|
|
148
148
|
<UserListItem
|
|
149
149
|
name="Carol White"
|
|
150
150
|
description="Designer"
|
|
151
|
-
actions={<Button size="sm" variant="ghost">Remove</Button>}
|
|
151
|
+
actions={<Button id="list-with-actions-button-ghost" size="sm" variant="ghost">Remove</Button>}
|
|
152
152
|
/>
|
|
153
153
|
</div>
|
|
154
154
|
),
|
|
@@ -164,8 +164,8 @@ export const TeamList: Story = {
|
|
|
164
164
|
];
|
|
165
165
|
|
|
166
166
|
return (
|
|
167
|
-
<div className="w-80">
|
|
168
|
-
<h3 className="text-sm font-medium text-foreground mb-4">Leadership Team</h3>
|
|
167
|
+
<div data-sonance-name="user.stories" className="w-80">
|
|
168
|
+
<h3 id="team-list-h3-leadership-team" className="text-sm font-medium text-foreground mb-4">Leadership Team</h3>
|
|
169
169
|
<div className="space-y-3">
|
|
170
170
|
{team.map((member) => (
|
|
171
171
|
<User
|
|
@@ -185,22 +185,22 @@ export const AllVariants: Story = {
|
|
|
185
185
|
render: () => (
|
|
186
186
|
<div className="space-y-8">
|
|
187
187
|
<div>
|
|
188
|
-
<h3 className="text-sm font-medium text-foreground mb-4">User Component</h3>
|
|
188
|
+
<h3 id="all-variants-h3-user-component" className="text-sm font-medium text-foreground mb-4">User Component</h3>
|
|
189
189
|
<User name="Alex Johnson" description="Product Designer" />
|
|
190
190
|
</div>
|
|
191
191
|
|
|
192
192
|
<div>
|
|
193
|
-
<h3 className="text-sm font-medium text-foreground mb-4">User Card</h3>
|
|
193
|
+
<h3 id="all-variants-h3-user-card" className="text-sm font-medium text-foreground mb-4">User Card</h3>
|
|
194
194
|
<UserCard
|
|
195
195
|
name="Sarah Wilson"
|
|
196
196
|
description="sarah@sonance.com"
|
|
197
|
-
actions={<Button size="sm" variant="secondary">Follow</Button>}
|
|
197
|
+
actions={<Button id="all-variants-button-secondary" size="sm" variant="secondary">Follow</Button>}
|
|
198
198
|
className="w-80"
|
|
199
199
|
/>
|
|
200
200
|
</div>
|
|
201
201
|
|
|
202
202
|
<div>
|
|
203
|
-
<h3 className="text-sm font-medium text-foreground mb-4">User List Items</h3>
|
|
203
|
+
<h3 id="all-variants-h3-user-list-items" className="text-sm font-medium text-foreground mb-4">User List Items</h3>
|
|
204
204
|
<div className="w-80 border border-border">
|
|
205
205
|
<UserListItem name="Chris Taylor" description="chris@example.com" />
|
|
206
206
|
<UserListItem name="Sam Anderson" description="sam@example.com" selected />
|
|
@@ -217,32 +217,32 @@ export const ResponsiveMatrix: Story = {
|
|
|
217
217
|
<div className="space-y-8">
|
|
218
218
|
{/* Mobile */}
|
|
219
219
|
<div>
|
|
220
|
-
<h4 className="text-xs uppercase text-foreground-muted mb-2">Mobile (375px)</h4>
|
|
220
|
+
<h4 id="responsive-matrix-h4-mobile-375px" className="text-xs uppercase text-foreground-muted mb-2">Mobile (375px)</h4>
|
|
221
221
|
<div className="w-[375px] border border-dashed border-border p-4">
|
|
222
222
|
<User name="John Doe" description="Product Designer" size="md" />
|
|
223
223
|
</div>
|
|
224
224
|
</div>
|
|
225
225
|
{/* Tablet */}
|
|
226
226
|
<div>
|
|
227
|
-
<h4 className="text-xs uppercase text-foreground-muted mb-2">Tablet (768px)</h4>
|
|
227
|
+
<h4 id="responsive-matrix-h4-tablet-768px" className="text-xs uppercase text-foreground-muted mb-2">Tablet (768px)</h4>
|
|
228
228
|
<div className="w-[768px] border border-dashed border-border p-4">
|
|
229
229
|
<div className="grid grid-cols-2 gap-4">
|
|
230
230
|
<UserCard
|
|
231
231
|
name="Sarah Wilson"
|
|
232
232
|
description="sarah@sonance.com"
|
|
233
|
-
actions={<Button size="sm" variant="secondary">Follow</Button>}
|
|
233
|
+
actions={<Button id="responsive-matrix-button-secondary" size="sm" variant="secondary">Follow</Button>}
|
|
234
234
|
/>
|
|
235
235
|
<UserCard
|
|
236
236
|
name="James Miller"
|
|
237
237
|
description="james@sonance.com"
|
|
238
|
-
actions={<Button size="sm" variant="secondary">Follow</Button>}
|
|
238
|
+
actions={<Button id="responsive-matrix-button-secondary" size="sm" variant="secondary">Follow</Button>}
|
|
239
239
|
/>
|
|
240
240
|
</div>
|
|
241
241
|
</div>
|
|
242
242
|
</div>
|
|
243
243
|
{/* Desktop */}
|
|
244
244
|
<div>
|
|
245
|
-
<h4 className="text-xs uppercase text-foreground-muted mb-2">Desktop (1280px)</h4>
|
|
245
|
+
<h4 id="responsive-matrix-h4-desktop-1280px" className="text-xs uppercase text-foreground-muted mb-2">Desktop (1280px)</h4>
|
|
246
246
|
<div className="w-[1280px] border border-dashed border-border p-4">
|
|
247
247
|
<div className="grid grid-cols-3 gap-4">
|
|
248
248
|
<div className="border border-border">
|
|
@@ -256,8 +256,8 @@ export const ResponsiveMatrix: Story = {
|
|
|
256
256
|
avatarSrc="https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=100&h=100&fit=crop"
|
|
257
257
|
actions={
|
|
258
258
|
<div className="flex gap-2">
|
|
259
|
-
<Button size="sm" variant="ghost">Ignore</Button>
|
|
260
|
-
<Button size="sm">Accept</Button>
|
|
259
|
+
<Button id="responsive-matrix-button-ghost" size="sm" variant="ghost">Ignore</Button>
|
|
260
|
+
<Button id="responsive-matrix-button" size="sm">Accept</Button>
|
|
261
261
|
</div>
|
|
262
262
|
}
|
|
263
263
|
/>
|
|
@@ -40,9 +40,9 @@ export const User = forwardRef<HTMLDivElement, UserProps>(
|
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
return (
|
|
43
|
-
<div
|
|
43
|
+
<div data-sonance-name="user"
|
|
44
44
|
ref={ref}
|
|
45
|
-
className={cn(userVariants({ size }), className)}
|
|
45
|
+
className={cn(userVariants({ size }), className)}
|
|
46
46
|
{...props}
|
|
47
47
|
>
|
|
48
48
|
<Avatar
|
|
@@ -52,6 +52,7 @@ export const User = forwardRef<HTMLDivElement, UserProps>(
|
|
|
52
52
|
/>
|
|
53
53
|
<div className="flex flex-col min-w-0">
|
|
54
54
|
<span
|
|
55
|
+
id="user-span-name"
|
|
55
56
|
className={cn(
|
|
56
57
|
"font-medium text-foreground truncate",
|
|
57
58
|
nameSizeClasses[size || "md"]
|
|
@@ -61,6 +62,7 @@ export const User = forwardRef<HTMLDivElement, UserProps>(
|
|
|
61
62
|
</span>
|
|
62
63
|
{description && (
|
|
63
64
|
<span
|
|
65
|
+
id="user-span-description"
|
|
64
66
|
className={cn(
|
|
65
67
|
"text-foreground-muted truncate",
|
|
66
68
|
descSizeClasses[size || "md"]
|
|
@@ -96,7 +98,7 @@ export function UserCard({
|
|
|
96
98
|
className,
|
|
97
99
|
}: UserCardProps) {
|
|
98
100
|
return (
|
|
99
|
-
<div
|
|
101
|
+
<div data-sonance-name="user"
|
|
100
102
|
className={cn(
|
|
101
103
|
"flex items-center justify-between gap-4 p-4",
|
|
102
104
|
"border border-border bg-card",
|
|
@@ -151,9 +153,10 @@ export function UserListItem({
|
|
|
151
153
|
size="sm"
|
|
152
154
|
/>
|
|
153
155
|
<div className="flex flex-col min-w-0">
|
|
154
|
-
<span className="text-sm font-medium truncate">{name}</span>
|
|
156
|
+
<span id="user-list-item-span-name" className="text-sm font-medium truncate">{name}</span>
|
|
155
157
|
{description && (
|
|
156
158
|
<span
|
|
159
|
+
id="user-list-item-span-description"
|
|
157
160
|
className={cn(
|
|
158
161
|
"text-xs truncate",
|
|
159
162
|
selected ? "text-primary-foreground/70" : "text-foreground-muted"
|