sonance-brand-mcp 1.3.111 → 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-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 +988 -57
- 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/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 +429 -362
- package/dist/assets/dev-tools/components/ApplyFirstPreview.tsx +10 -10
- package/dist/assets/dev-tools/components/ChatHistory.tsx +11 -7
- package/dist/assets/dev-tools/components/ChatInterface.tsx +61 -20
- package/dist/assets/dev-tools/components/ChatTabBar.tsx +1 -1
- package/dist/assets/dev-tools/components/DiffPreview.tsx +1 -1
- package/dist/assets/dev-tools/components/InlineDiffPreview.tsx +360 -36
- package/dist/assets/dev-tools/components/InspectorOverlay.tsx +9 -9
- package/dist/assets/dev-tools/components/PropertiesPanel.tsx +743 -93
- 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 +4 -64
- 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 +171 -65
- 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/panels/ComponentsPanel.tsx +160 -57
- package/dist/assets/dev-tools/panels/TextPanel.tsx +10 -10
- package/dist/assets/dev-tools/types.ts +42 -0
- package/dist/assets/globals.css +225 -9
- package/dist/assets/styles/brand-overrides.css +3 -2
- package/dist/assets/utils.ts +2 -1
- package/package.json +1 -1
|
@@ -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}
|