sonance-brand-mcp 1.3.111 → 1.3.113

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 (79) hide show
  1. package/dist/assets/api/sonance-save-image/route.ts +625 -0
  2. package/dist/assets/api/sonance-vision-apply/image-styling-detection.ts +1360 -0
  3. package/dist/assets/api/sonance-vision-apply/route.ts +988 -57
  4. package/dist/assets/api/sonance-vision-apply/styling-detection.ts +730 -0
  5. package/dist/assets/api/sonance-vision-apply/theme-discovery.ts +1 -1
  6. package/dist/assets/brand-system.ts +13 -12
  7. package/dist/assets/components/accordion.tsx +15 -7
  8. package/dist/assets/components/alert-dialog.tsx +35 -10
  9. package/dist/assets/components/alert.tsx +11 -10
  10. package/dist/assets/components/avatar.tsx +4 -4
  11. package/dist/assets/components/badge.tsx +16 -12
  12. package/dist/assets/components/button.stories.tsx +3 -3
  13. package/dist/assets/components/button.tsx +50 -31
  14. package/dist/assets/components/calendar.tsx +12 -8
  15. package/dist/assets/components/card.tsx +35 -29
  16. package/dist/assets/components/checkbox.tsx +9 -8
  17. package/dist/assets/components/code.tsx +19 -11
  18. package/dist/assets/components/command.tsx +32 -13
  19. package/dist/assets/components/context-menu.tsx +37 -16
  20. package/dist/assets/components/dialog.tsx +8 -5
  21. package/dist/assets/components/divider.tsx +15 -5
  22. package/dist/assets/components/drawer.tsx +4 -3
  23. package/dist/assets/components/dropdown-menu.tsx +15 -13
  24. package/dist/assets/components/hover-card.tsx +4 -1
  25. package/dist/assets/components/image.tsx +1 -1
  26. package/dist/assets/components/input.tsx +29 -14
  27. package/dist/assets/components/kbd.stories.tsx +3 -3
  28. package/dist/assets/components/kbd.tsx +29 -13
  29. package/dist/assets/components/listbox.tsx +8 -8
  30. package/dist/assets/components/menubar.tsx +50 -23
  31. package/dist/assets/components/navbar.stories.tsx +140 -13
  32. package/dist/assets/components/navbar.tsx +22 -5
  33. package/dist/assets/components/navigation-menu.tsx +28 -6
  34. package/dist/assets/components/pagination.tsx +10 -10
  35. package/dist/assets/components/popover.tsx +10 -8
  36. package/dist/assets/components/progress.tsx +6 -4
  37. package/dist/assets/components/radio-group.tsx +5 -5
  38. package/dist/assets/components/select.tsx +49 -29
  39. package/dist/assets/components/separator.tsx +3 -3
  40. package/dist/assets/components/sheet.tsx +4 -4
  41. package/dist/assets/components/sidebar.tsx +10 -10
  42. package/dist/assets/components/skeleton.tsx +13 -5
  43. package/dist/assets/components/slider.tsx +12 -10
  44. package/dist/assets/components/switch.tsx +4 -4
  45. package/dist/assets/components/table.tsx +5 -5
  46. package/dist/assets/components/tabs.tsx +8 -8
  47. package/dist/assets/components/textarea.tsx +11 -9
  48. package/dist/assets/components/toast.tsx +7 -7
  49. package/dist/assets/components/toggle.tsx +27 -7
  50. package/dist/assets/components/tooltip.tsx +10 -8
  51. package/dist/assets/components/user.tsx +8 -6
  52. package/dist/assets/dev-tools/SonanceDevTools.tsx +429 -362
  53. package/dist/assets/dev-tools/components/ApplyFirstPreview.tsx +10 -10
  54. package/dist/assets/dev-tools/components/ChatHistory.tsx +11 -7
  55. package/dist/assets/dev-tools/components/ChatInterface.tsx +61 -20
  56. package/dist/assets/dev-tools/components/ChatTabBar.tsx +1 -1
  57. package/dist/assets/dev-tools/components/DiffPreview.tsx +1 -1
  58. package/dist/assets/dev-tools/components/InlineDiffPreview.tsx +360 -36
  59. package/dist/assets/dev-tools/components/InspectorOverlay.tsx +9 -9
  60. package/dist/assets/dev-tools/components/PropertiesPanel.tsx +743 -93
  61. package/dist/assets/dev-tools/components/ScreenshotAnnotator.tsx +1 -1
  62. package/dist/assets/dev-tools/components/SectionHighlight.tsx +1 -1
  63. package/dist/assets/dev-tools/components/VisionDiffPreview.tsx +7 -7
  64. package/dist/assets/dev-tools/components/VisionModeBorder.tsx +4 -64
  65. package/dist/assets/dev-tools/hooks/index.ts +69 -0
  66. package/dist/assets/dev-tools/hooks/useComponentDetection.ts +132 -0
  67. package/dist/assets/dev-tools/hooks/useComputedStyles.ts +171 -65
  68. package/dist/assets/dev-tools/hooks/useContentHash.ts +212 -0
  69. package/dist/assets/dev-tools/hooks/useElementScanner.ts +398 -0
  70. package/dist/assets/dev-tools/hooks/useImageDetection.ts +162 -0
  71. package/dist/assets/dev-tools/hooks/useTextDetection.ts +217 -0
  72. package/dist/assets/dev-tools/panels/ComponentsPanel.tsx +160 -57
  73. package/dist/assets/dev-tools/panels/TextPanel.tsx +10 -10
  74. package/dist/assets/dev-tools/types.ts +42 -0
  75. package/dist/assets/globals.css +225 -9
  76. package/dist/assets/styles/brand-overrides.css +3 -2
  77. package/dist/assets/utils.ts +2 -1
  78. package/dist/index.js +32 -1
  79. 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-hover",
19
- focus: "border-input-focus",
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-secondary",
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 border border-input-border bg-input px-4 py-3",
44
- "text-foreground placeholder:text-input-placeholder",
45
- "transition-colors duration-200",
46
- "hover:border-border-hover",
47
- "focus:border-input-focus focus:outline-none",
48
- "disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-secondary",
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 border shadow-lg animate-in slide-in-from-right-full duration-300",
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-card border-border text-foreground",
15
- success: "bg-success-light border-success/30 text-success",
16
- error: "bg-error-light border-error/30 text-error",
17
- warning: "bg-warning-light border-warning/30 text-warning",
18
- info: "bg-info-light border-info/30 text-info",
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-opacity"
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
- "inline-flex items-center justify-center gap-2 rounded-sm text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
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 hover:bg-secondary-hover text-foreground-secondary data-[state=on]:bg-secondary-hover data-[state=on]:text-foreground",
15
- outline:
16
- "border border-border bg-transparent hover:bg-secondary-hover hover:text-foreground data-[state=on]:bg-primary data-[state=on]:text-primary-foreground",
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 data-sonance-name="toggle"
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-md",
21
- sm: "px-2.5 py-1 text-xs rounded-lg",
22
- md: "px-3 py-1.5 text-sm rounded-lg",
23
- lg: "px-3.5 py-2 text-sm rounded-xl",
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
- default: "bg-popover text-popover-foreground border-border",
27
- glass: "bg-popover/95 text-popover-foreground border-border/50 backdrop-blur-md",
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: "glass",
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
- "border border-border bg-card",
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-colors",
143
+ "transition-all duration-150",
142
144
  onClick && "cursor-pointer",
143
145
  selected
144
- ? "bg-primary text-primary-foreground"
145
- : "hover:bg-secondary-hover",
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-primary-foreground/70" : "text-foreground-muted"
164
+ selected ? "text-white/70" : "text-foreground-muted"
163
165
  )}
164
166
  >
165
167
  {description}