sonance-brand-mcp 1.3.110 → 1.3.112
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-ai-edit/route.ts +30 -7
- package/dist/assets/api/sonance-save-image/route.ts +625 -0
- package/dist/assets/api/sonance-vision-apply/image-styling-detection.ts +1360 -0
- package/dist/assets/api/sonance-vision-apply/route.ts +1020 -64
- package/dist/assets/api/sonance-vision-apply/styling-detection.ts +730 -0
- package/dist/assets/api/sonance-vision-apply/theme-discovery.ts +1 -1
- package/dist/assets/api/sonance-vision-edit/route.ts +33 -8
- package/dist/assets/brand-system.ts +13 -12
- package/dist/assets/components/accordion.tsx +15 -7
- package/dist/assets/components/alert-dialog.tsx +35 -10
- package/dist/assets/components/alert.tsx +11 -10
- package/dist/assets/components/avatar.tsx +4 -4
- package/dist/assets/components/badge.tsx +16 -12
- package/dist/assets/components/button.stories.tsx +3 -3
- package/dist/assets/components/button.tsx +50 -31
- package/dist/assets/components/calendar.tsx +12 -8
- package/dist/assets/components/card.tsx +35 -29
- package/dist/assets/components/checkbox.tsx +9 -8
- package/dist/assets/components/code.tsx +19 -11
- package/dist/assets/components/command.tsx +32 -13
- package/dist/assets/components/context-menu.tsx +37 -16
- package/dist/assets/components/dialog.tsx +8 -5
- package/dist/assets/components/divider.tsx +15 -5
- package/dist/assets/components/drawer.tsx +4 -3
- package/dist/assets/components/dropdown-menu.tsx +15 -13
- package/dist/assets/components/hover-card.tsx +4 -1
- package/dist/assets/components/image.tsx +1 -1
- package/dist/assets/components/input.tsx +29 -14
- package/dist/assets/components/kbd.stories.tsx +3 -3
- package/dist/assets/components/kbd.tsx +29 -13
- package/dist/assets/components/listbox.tsx +8 -8
- package/dist/assets/components/menubar.tsx +50 -23
- package/dist/assets/components/navbar.stories.tsx +140 -13
- package/dist/assets/components/navbar.tsx +22 -5
- package/dist/assets/components/navigation-menu.tsx +28 -6
- package/dist/assets/components/pagination.tsx +10 -10
- package/dist/assets/components/popover.tsx +10 -8
- package/dist/assets/components/progress.tsx +6 -4
- package/dist/assets/components/radio-group.tsx +5 -5
- package/dist/assets/components/select.tsx +49 -29
- package/dist/assets/components/separator.tsx +3 -3
- package/dist/assets/components/sheet.tsx +4 -4
- package/dist/assets/components/sidebar.tsx +10 -10
- package/dist/assets/components/skeleton.tsx +13 -5
- package/dist/assets/components/slider.tsx +12 -10
- package/dist/assets/components/switch.tsx +4 -4
- package/dist/assets/components/table.tsx +5 -5
- package/dist/assets/components/tabs.tsx +8 -8
- package/dist/assets/components/textarea.tsx +11 -9
- package/dist/assets/components/toast.tsx +7 -7
- package/dist/assets/components/toggle.tsx +27 -7
- package/dist/assets/components/tooltip.tsx +10 -8
- package/dist/assets/components/user.tsx +8 -6
- package/dist/assets/dev-tools/SonanceDevTools.tsx +851 -708
- package/dist/assets/dev-tools/components/ApplyFirstPreview.tsx +10 -10
- package/dist/assets/dev-tools/components/ChatHistory.tsx +145 -0
- package/dist/assets/dev-tools/components/ChatInterface.tsx +444 -295
- package/dist/assets/dev-tools/components/ChatTabBar.tsx +82 -0
- package/dist/assets/dev-tools/components/DiffPreview.tsx +1 -1
- package/dist/assets/dev-tools/components/InlineDiffPreview.tsx +528 -0
- package/dist/assets/dev-tools/components/InspectorOverlay.tsx +21 -18
- package/dist/assets/dev-tools/components/PropertiesPanel.tsx +1345 -0
- package/dist/assets/dev-tools/components/ScreenshotAnnotator.tsx +1 -1
- package/dist/assets/dev-tools/components/SectionHighlight.tsx +1 -1
- package/dist/assets/dev-tools/components/VisionDiffPreview.tsx +7 -7
- package/dist/assets/dev-tools/components/VisionModeBorder.tsx +12 -63
- package/dist/assets/dev-tools/constants.ts +38 -6
- package/dist/assets/dev-tools/hooks/index.ts +69 -0
- package/dist/assets/dev-tools/hooks/useComponentDetection.ts +132 -0
- package/dist/assets/dev-tools/hooks/useComputedStyles.ts +471 -0
- package/dist/assets/dev-tools/hooks/useContentHash.ts +212 -0
- package/dist/assets/dev-tools/hooks/useElementScanner.ts +398 -0
- package/dist/assets/dev-tools/hooks/useImageDetection.ts +162 -0
- package/dist/assets/dev-tools/hooks/useTextDetection.ts +217 -0
- package/dist/assets/dev-tools/index.ts +3 -0
- package/dist/assets/dev-tools/panels/AnalysisPanel.tsx +32 -32
- package/dist/assets/dev-tools/panels/ComponentsPanel.tsx +384 -131
- package/dist/assets/dev-tools/panels/TextPanel.tsx +10 -10
- package/dist/assets/dev-tools/types.ts +93 -2
- package/dist/assets/globals.css +225 -9
- package/dist/assets/styles/brand-overrides.css +3 -2
- package/dist/assets/utils.ts +2 -1
- package/dist/index.js +22 -3
- package/package.json +2 -1
|
@@ -11,7 +11,7 @@ const getTrackStateStyles = (state?: SliderState) => {
|
|
|
11
11
|
|
|
12
12
|
const stateMap: Record<string, string> = {
|
|
13
13
|
hover: "",
|
|
14
|
-
focus: "ring-2 ring-
|
|
14
|
+
focus: "ring-2 ring-[color:var(--sonance-blue)]/30 ring-offset-2 ring-offset-background",
|
|
15
15
|
active: "",
|
|
16
16
|
disabled: "opacity-50 cursor-not-allowed",
|
|
17
17
|
};
|
|
@@ -23,9 +23,9 @@ const getThumbStateStyles = (state?: SliderState) => {
|
|
|
23
23
|
if (!state || state === "default") return "";
|
|
24
24
|
|
|
25
25
|
const stateMap: Record<string, string> = {
|
|
26
|
-
hover: "scale-110",
|
|
27
|
-
focus: "",
|
|
28
|
-
active: "scale-110",
|
|
26
|
+
hover: "scale-110 shadow-[0_0_12px_var(--glow-primary)]",
|
|
27
|
+
focus: "shadow-[0_0_12px_var(--glow-primary)]",
|
|
28
|
+
active: "scale-110 shadow-[0_0_12px_var(--glow-primary)]",
|
|
29
29
|
disabled: "hover:scale-100",
|
|
30
30
|
};
|
|
31
31
|
|
|
@@ -158,24 +158,26 @@ export const Slider = forwardRef<HTMLDivElement, SliderProps>(
|
|
|
158
158
|
onMouseDown={handleMouseDown}
|
|
159
159
|
onKeyDown={handleKeyDown}
|
|
160
160
|
className={cn(
|
|
161
|
-
"relative h-2 w-full cursor-pointer rounded-full
|
|
162
|
-
"
|
|
161
|
+
"relative h-2 w-full cursor-pointer rounded-full",
|
|
162
|
+
"bg-white/60 dark:bg-white/[0.05] backdrop-blur-sm",
|
|
163
|
+
"border border-black/5 dark:border-white/5",
|
|
164
|
+
"focus:outline-none focus:ring-2 focus:ring-[color:var(--sonance-blue)]/30 focus:ring-offset-2 focus:ring-offset-background",
|
|
163
165
|
isDisabled && "cursor-not-allowed opacity-50",
|
|
164
166
|
getTrackStateStyles(state)
|
|
165
167
|
)}
|
|
166
168
|
>
|
|
167
169
|
{/* Filled track */}
|
|
168
170
|
<div
|
|
169
|
-
className="absolute left-0 top-0 h-full rounded-full bg-
|
|
171
|
+
className="absolute left-0 top-0 h-full rounded-full bg-[color:var(--sonance-blue)] transition-all"
|
|
170
172
|
style={{ width: `${percentage}%` }}
|
|
171
173
|
/>
|
|
172
174
|
{/* Thumb */}
|
|
173
175
|
<div data-sonance-name="slider"
|
|
174
176
|
className={cn(
|
|
175
177
|
"absolute top-1/2 h-5 w-5 -translate-x-1/2 -translate-y-1/2 rounded-full",
|
|
176
|
-
"border-2 border-
|
|
177
|
-
"hover:scale-110",
|
|
178
|
-
isDisabled && "hover:scale-100",
|
|
178
|
+
"border-2 border-[color:var(--sonance-blue)] bg-white dark:bg-white/90 shadow-md transition-all",
|
|
179
|
+
"hover:scale-110 hover:shadow-[0_0_12px_var(--glow-primary)]",
|
|
180
|
+
isDisabled && "hover:scale-100 hover:shadow-md",
|
|
179
181
|
getThumbStateStyles(state)
|
|
180
182
|
)}
|
|
181
183
|
style={{ left: `${percentage}%` }}
|
|
@@ -7,7 +7,7 @@ import { cn } from "@/lib/utils";
|
|
|
7
7
|
export type SwitchState = "default" | "hover" | "focus" | "checked" | "disabled";
|
|
8
8
|
|
|
9
9
|
const switchTrackVariants = cva(
|
|
10
|
-
"relative inline-flex shrink-0 cursor-pointer items-center rounded-full border
|
|
10
|
+
"relative inline-flex shrink-0 cursor-pointer items-center rounded-full border transition-all duration-200 backdrop-blur-sm bg-white/60 dark:bg-white/5 border-black/8 dark:border-white/8 has-[:checked]:border-[color:var(--sonance-blue)] has-[:checked]:bg-[color:var(--sonance-blue)] has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50 has-[:focus]:ring-2 has-[:focus]:ring-[color:var(--sonance-blue)]/30 has-[:focus]:ring-offset-2 has-[:focus]:ring-offset-background",
|
|
11
11
|
{
|
|
12
12
|
variants: {
|
|
13
13
|
size: {
|
|
@@ -43,9 +43,9 @@ const getTrackStateStyles = (state?: SwitchState) => {
|
|
|
43
43
|
if (!state || state === "default") return "";
|
|
44
44
|
|
|
45
45
|
const stateMap: Record<string, string> = {
|
|
46
|
-
hover: "border-border-
|
|
47
|
-
focus: "ring-2 ring-
|
|
48
|
-
checked: "border-
|
|
46
|
+
hover: "border-black/15 dark:border-white/15",
|
|
47
|
+
focus: "ring-2 ring-[color:var(--sonance-blue)]/30 ring-offset-2 ring-offset-background",
|
|
48
|
+
checked: "border-[color:var(--sonance-blue)] bg-[color:var(--sonance-blue)]",
|
|
49
49
|
disabled: "opacity-50 cursor-not-allowed",
|
|
50
50
|
};
|
|
51
51
|
|
|
@@ -20,7 +20,7 @@ export const TableHeader = forwardRef<
|
|
|
20
20
|
HTMLTableSectionElement,
|
|
21
21
|
React.HTMLAttributes<HTMLTableSectionElement>
|
|
22
22
|
>(({ className, ...props }, ref) => (
|
|
23
|
-
<thead ref={ref} className={cn("[&_tr]:border-b", className)} data-sonance-name="table" {...props} />
|
|
23
|
+
<thead ref={ref} className={cn("[&_tr]:border-b [&_tr]:border-black/8 dark:[&_tr]:border-white/8 bg-white/50 dark:bg-white/[0.02]", className)} data-sonance-name="table" {...props} />
|
|
24
24
|
));
|
|
25
25
|
|
|
26
26
|
TableHeader.displayName = "TableHeader";
|
|
@@ -45,7 +45,7 @@ export const TableFooter = forwardRef<
|
|
|
45
45
|
<tfoot
|
|
46
46
|
ref={ref}
|
|
47
47
|
className={cn(
|
|
48
|
-
"border-t border-border bg-
|
|
48
|
+
"border-t border-black/8 dark:border-white/8 bg-white/50 dark:bg-white/[0.02] font-medium",
|
|
49
49
|
className
|
|
50
50
|
)} data-sonance-name="table"
|
|
51
51
|
{...props}
|
|
@@ -61,9 +61,9 @@ export const TableRow = forwardRef<
|
|
|
61
61
|
<tr
|
|
62
62
|
ref={ref}
|
|
63
63
|
className={cn(
|
|
64
|
-
"border-b border-border transition-colors",
|
|
65
|
-
"hover:bg-
|
|
66
|
-
"data-[state=selected]:bg-
|
|
64
|
+
"border-b border-black/8 dark:border-white/8 transition-colors",
|
|
65
|
+
"hover:bg-white/50 dark:hover:bg-white/[0.03]",
|
|
66
|
+
"data-[state=selected]:bg-white/60 dark:data-[state=selected]:bg-white/[0.05]",
|
|
67
67
|
className
|
|
68
68
|
)} data-sonance-name="table"
|
|
69
69
|
{...props}
|
|
@@ -7,14 +7,14 @@ import { cn } from "@/lib/utils";
|
|
|
7
7
|
export type TabsTriggerState = "default" | "hover" | "focus" | "active" | "disabled";
|
|
8
8
|
|
|
9
9
|
const tabsTriggerVariants = cva(
|
|
10
|
-
"relative font-medium transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
10
|
+
"relative font-medium transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--sonance-blue)]/30",
|
|
11
11
|
{
|
|
12
12
|
variants: {
|
|
13
13
|
size: {
|
|
14
|
-
xs: "px-2.5 py-1 text-[10px] rounded-
|
|
15
|
-
sm: "px-3 py-1.5 text-xs rounded-
|
|
16
|
-
md: "px-3.5 py-2 text-sm rounded-
|
|
17
|
-
lg: "px-4 py-2.5 text-sm rounded-
|
|
14
|
+
xs: "px-2.5 py-1 text-[10px] rounded-lg",
|
|
15
|
+
sm: "px-3 py-1.5 text-xs rounded-xl",
|
|
16
|
+
md: "px-3.5 py-2 text-sm rounded-xl",
|
|
17
|
+
lg: "px-4 py-2.5 text-sm rounded-2xl",
|
|
18
18
|
},
|
|
19
19
|
},
|
|
20
20
|
defaultVariants: {
|
|
@@ -88,7 +88,7 @@ export function TabsList({ className, children }: TabsListProps) {
|
|
|
88
88
|
<div data-sonance-name="tabs"
|
|
89
89
|
role="tablist"
|
|
90
90
|
className={cn(
|
|
91
|
-
"inline-flex items-center gap-1 rounded-
|
|
91
|
+
"inline-flex items-center gap-1 rounded-xl bg-white/50 dark:bg-white/5 backdrop-blur-sm border border-black/5 dark:border-white/5 p-1",
|
|
92
92
|
className
|
|
93
93
|
)}
|
|
94
94
|
>
|
|
@@ -129,8 +129,8 @@ export function TabsTrigger({
|
|
|
129
129
|
className={cn(
|
|
130
130
|
tabsTriggerVariants({ size: context.size }),
|
|
131
131
|
isActive
|
|
132
|
-
? "text-foreground bg-
|
|
133
|
-
: "text-foreground-muted hover:text-foreground hover:bg-
|
|
132
|
+
? "text-foreground bg-white/80 dark:bg-white/10 shadow-sm backdrop-blur-sm"
|
|
133
|
+
: "text-foreground-muted hover:text-foreground hover:bg-white/50 dark:hover:bg-white/5",
|
|
134
134
|
isDisabled && "cursor-not-allowed opacity-50",
|
|
135
135
|
getStateStyles(state, isActive),
|
|
136
136
|
className
|
|
@@ -15,10 +15,10 @@ const getStateStyles = (state?: TextareaState) => {
|
|
|
15
15
|
if (!state || state === "default") return "";
|
|
16
16
|
|
|
17
17
|
const stateMap: Record<string, string> = {
|
|
18
|
-
hover: "border-border-
|
|
19
|
-
focus: "border-
|
|
18
|
+
hover: "border-black/15 dark:border-white/15",
|
|
19
|
+
focus: "border-[color:var(--sonance-blue)] shadow-[0_0_20px_var(--glow-primary)]",
|
|
20
20
|
error: "border-error",
|
|
21
|
-
disabled: "opacity-50 cursor-not-allowed bg-
|
|
21
|
+
disabled: "opacity-50 cursor-not-allowed bg-white/30 dark:bg-white/[0.02]",
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
return stateMap[state] || "";
|
|
@@ -40,12 +40,14 @@ export const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(
|
|
|
40
40
|
ref={ref}
|
|
41
41
|
disabled={isDisabled}
|
|
42
42
|
className={cn(
|
|
43
|
-
"min-h-[120px] w-full resize-y
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
43
|
+
"min-h-[120px] w-full resize-y rounded-xl px-4 py-3",
|
|
44
|
+
"bg-white/60 dark:bg-white/[0.03] backdrop-blur-sm",
|
|
45
|
+
"border border-black/8 dark:border-white/8",
|
|
46
|
+
"text-foreground placeholder:text-foreground-muted",
|
|
47
|
+
"transition-all duration-200",
|
|
48
|
+
"hover:border-black/15 dark:hover:border-white/15",
|
|
49
|
+
"focus:border-[color:var(--sonance-blue)] focus:shadow-[0_0_20px_var(--glow-primary)] focus:outline-none",
|
|
50
|
+
"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-white/30 dark:disabled:bg-white/[0.02]",
|
|
49
51
|
hasError && "border-error",
|
|
50
52
|
getStateStyles(state),
|
|
51
53
|
className
|
|
@@ -7,15 +7,15 @@ import { cn } from "@/lib/utils";
|
|
|
7
7
|
|
|
8
8
|
// Toast variants
|
|
9
9
|
const toastVariants = cva(
|
|
10
|
-
"relative flex items-start gap-3 w-full max-w-sm p-4
|
|
10
|
+
"relative flex items-start gap-3 w-full max-w-sm p-4 rounded-2xl shadow-xl backdrop-blur-xl animate-in slide-in-from-right-full duration-300",
|
|
11
11
|
{
|
|
12
12
|
variants: {
|
|
13
13
|
variant: {
|
|
14
|
-
default: "bg-
|
|
15
|
-
success: "bg-
|
|
16
|
-
error: "bg-
|
|
17
|
-
warning: "bg-
|
|
18
|
-
info: "bg-
|
|
14
|
+
default: "bg-white/90 dark:bg-black/80 border border-black/10 dark:border-white/10 text-foreground",
|
|
15
|
+
success: "bg-white/90 dark:bg-black/80 border border-success/30 text-success",
|
|
16
|
+
error: "bg-white/90 dark:bg-black/80 border border-error/30 text-error",
|
|
17
|
+
warning: "bg-white/90 dark:bg-black/80 border border-warning/30 text-warning",
|
|
18
|
+
info: "bg-white/90 dark:bg-black/80 border border-info/30 text-info",
|
|
19
19
|
},
|
|
20
20
|
},
|
|
21
21
|
defaultVariants: {
|
|
@@ -67,7 +67,7 @@ export const Toast = forwardRef<HTMLDivElement, ToastProps>(
|
|
|
67
67
|
{onClose && (
|
|
68
68
|
<button
|
|
69
69
|
onClick={onClose}
|
|
70
|
-
className="shrink-0 p-1 opacity-70 hover:opacity-100 transition-
|
|
70
|
+
className="shrink-0 p-1.5 rounded-lg opacity-70 hover:opacity-100 hover:bg-white/50 dark:hover:bg-white/10 transition-all"
|
|
71
71
|
>
|
|
72
72
|
<X className="h-4 w-4" />
|
|
73
73
|
<span id="icon-span-dismiss" className="sr-only">Dismiss</span>
|
|
@@ -6,14 +6,34 @@ import { cva, type VariantProps } from "class-variance-authority";
|
|
|
6
6
|
import { cn } from "@/lib/utils";
|
|
7
7
|
|
|
8
8
|
const toggleVariants = cva(
|
|
9
|
-
|
|
9
|
+
cn(
|
|
10
|
+
"inline-flex items-center justify-center gap-2 rounded-xl text-sm font-medium",
|
|
11
|
+
"transition-all duration-150 backdrop-blur-sm",
|
|
12
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--sonance-blue)]/30 focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
13
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
14
|
+
"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0"
|
|
15
|
+
),
|
|
10
16
|
{
|
|
11
17
|
variants: {
|
|
12
18
|
variant: {
|
|
13
|
-
default:
|
|
14
|
-
"bg-transparent
|
|
15
|
-
|
|
16
|
-
"
|
|
19
|
+
default: cn(
|
|
20
|
+
"bg-transparent text-foreground-muted",
|
|
21
|
+
"hover:bg-white/60 dark:hover:bg-white/10 hover:text-foreground",
|
|
22
|
+
"data-[state=on]:bg-white/70 dark:data-[state=on]:bg-white/10 data-[state=on]:text-foreground",
|
|
23
|
+
"data-[state=on]:shadow-[0_0_12px_var(--glow-primary-subtle)]"
|
|
24
|
+
),
|
|
25
|
+
outline: cn(
|
|
26
|
+
"border border-black/10 dark:border-white/10 bg-transparent",
|
|
27
|
+
"hover:bg-white/50 dark:hover:bg-white/8 hover:text-foreground",
|
|
28
|
+
"data-[state=on]:bg-[color:var(--sonance-blue)]/90 data-[state=on]:text-white data-[state=on]:border-transparent",
|
|
29
|
+
"data-[state=on]:shadow-[0_0_20px_var(--glow-primary)]"
|
|
30
|
+
),
|
|
31
|
+
glass: cn(
|
|
32
|
+
"bg-white/50 dark:bg-white/5 border border-black/8 dark:border-white/8",
|
|
33
|
+
"hover:bg-white/60 dark:hover:bg-white/8 hover:text-foreground",
|
|
34
|
+
"data-[state=on]:bg-white/80 dark:data-[state=on]:bg-white/15 data-[state=on]:text-foreground",
|
|
35
|
+
"data-[state=on]:shadow-[0_0_15px_var(--glow-primary-subtle)]"
|
|
36
|
+
),
|
|
17
37
|
},
|
|
18
38
|
size: {
|
|
19
39
|
default: "h-10 px-3 min-w-10",
|
|
@@ -33,7 +53,8 @@ const Toggle = React.forwardRef<
|
|
|
33
53
|
React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &
|
|
34
54
|
VariantProps<typeof toggleVariants>
|
|
35
55
|
>(({ className, variant, size, ...props }, ref) => (
|
|
36
|
-
<TogglePrimitive.Root
|
|
56
|
+
<TogglePrimitive.Root
|
|
57
|
+
data-sonance-name="toggle"
|
|
37
58
|
ref={ref}
|
|
38
59
|
className={cn(toggleVariants({ variant, size, className }))}
|
|
39
60
|
{...props}
|
|
@@ -43,4 +64,3 @@ const Toggle = React.forwardRef<
|
|
|
43
64
|
Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
44
65
|
|
|
45
66
|
export { Toggle, toggleVariants };
|
|
46
|
-
|
|
@@ -17,20 +17,22 @@ const tooltipContentVariants = cva(
|
|
|
17
17
|
{
|
|
18
18
|
variants: {
|
|
19
19
|
size: {
|
|
20
|
-
xs: "px-2 py-1 text-[10px] rounded-
|
|
21
|
-
sm: "px-2.5 py-1 text-xs rounded-
|
|
22
|
-
md: "px-3 py-1.5 text-sm rounded-
|
|
23
|
-
lg: "px-3.5 py-2 text-sm rounded-
|
|
20
|
+
xs: "px-2 py-1 text-[10px] rounded-lg",
|
|
21
|
+
sm: "px-2.5 py-1 text-xs rounded-xl",
|
|
22
|
+
md: "px-3 py-1.5 text-sm rounded-xl",
|
|
23
|
+
lg: "px-3.5 py-2 text-sm rounded-2xl",
|
|
24
24
|
},
|
|
25
25
|
tooltipVariant: {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
dark: "bg-foreground text-background border-foreground",
|
|
26
|
+
// Glass morphism - default style
|
|
27
|
+
default: "bg-white/90 dark:bg-black/80 text-foreground border-black/10 dark:border-white/10 backdrop-blur-xl shadow-[0_4px_16px_rgba(0,0,0,0.1)] dark:shadow-[0_4px_16px_rgba(0,0,0,0.4)]",
|
|
28
|
+
dark: "bg-foreground/95 text-background border-foreground/20 backdrop-blur-xl",
|
|
29
|
+
// Non-glass solid variant
|
|
30
|
+
solid: "bg-popover text-popover-foreground border-border backdrop-blur-none",
|
|
29
31
|
},
|
|
30
32
|
},
|
|
31
33
|
defaultVariants: {
|
|
32
34
|
size: "sm",
|
|
33
|
-
tooltipVariant: "
|
|
35
|
+
tooltipVariant: "default",
|
|
34
36
|
},
|
|
35
37
|
}
|
|
36
38
|
)
|
|
@@ -100,8 +100,9 @@ export function UserCard({
|
|
|
100
100
|
return (
|
|
101
101
|
<div data-sonance-name="user"
|
|
102
102
|
className={cn(
|
|
103
|
-
"flex items-center justify-between gap-4 p-4",
|
|
104
|
-
"
|
|
103
|
+
"flex items-center justify-between gap-4 p-4 rounded-xl",
|
|
104
|
+
"bg-white/70 dark:bg-white/[0.03] backdrop-blur-sm",
|
|
105
|
+
"border border-black/8 dark:border-white/8",
|
|
105
106
|
className
|
|
106
107
|
)}
|
|
107
108
|
>
|
|
@@ -136,13 +137,14 @@ export function UserListItem({
|
|
|
136
137
|
return (
|
|
137
138
|
<div
|
|
138
139
|
onClick={onClick}
|
|
140
|
+
data-sonance-name="user"
|
|
139
141
|
className={cn(
|
|
140
142
|
"flex items-center justify-between gap-4 px-4 py-3",
|
|
141
|
-
"transition-
|
|
143
|
+
"transition-all duration-150",
|
|
142
144
|
onClick && "cursor-pointer",
|
|
143
145
|
selected
|
|
144
|
-
? "bg-
|
|
145
|
-
: "hover:bg-
|
|
146
|
+
? "bg-[color:var(--sonance-blue)] text-white"
|
|
147
|
+
: "hover:bg-white/50 dark:hover:bg-white/5",
|
|
146
148
|
className
|
|
147
149
|
)}
|
|
148
150
|
>
|
|
@@ -159,7 +161,7 @@ export function UserListItem({
|
|
|
159
161
|
id="user-list-item-span-description"
|
|
160
162
|
className={cn(
|
|
161
163
|
"text-xs truncate",
|
|
162
|
-
selected ? "text-
|
|
164
|
+
selected ? "text-white/70" : "text-foreground-muted"
|
|
163
165
|
)}
|
|
164
166
|
>
|
|
165
167
|
{description}
|