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.
Files changed (84) hide show
  1. package/dist/assets/api/sonance-ai-edit/route.ts +30 -7
  2. package/dist/assets/api/sonance-save-image/route.ts +625 -0
  3. package/dist/assets/api/sonance-vision-apply/image-styling-detection.ts +1360 -0
  4. package/dist/assets/api/sonance-vision-apply/route.ts +1020 -64
  5. package/dist/assets/api/sonance-vision-apply/styling-detection.ts +730 -0
  6. package/dist/assets/api/sonance-vision-apply/theme-discovery.ts +1 -1
  7. package/dist/assets/api/sonance-vision-edit/route.ts +33 -8
  8. package/dist/assets/brand-system.ts +13 -12
  9. package/dist/assets/components/accordion.tsx +15 -7
  10. package/dist/assets/components/alert-dialog.tsx +35 -10
  11. package/dist/assets/components/alert.tsx +11 -10
  12. package/dist/assets/components/avatar.tsx +4 -4
  13. package/dist/assets/components/badge.tsx +16 -12
  14. package/dist/assets/components/button.stories.tsx +3 -3
  15. package/dist/assets/components/button.tsx +50 -31
  16. package/dist/assets/components/calendar.tsx +12 -8
  17. package/dist/assets/components/card.tsx +35 -29
  18. package/dist/assets/components/checkbox.tsx +9 -8
  19. package/dist/assets/components/code.tsx +19 -11
  20. package/dist/assets/components/command.tsx +32 -13
  21. package/dist/assets/components/context-menu.tsx +37 -16
  22. package/dist/assets/components/dialog.tsx +8 -5
  23. package/dist/assets/components/divider.tsx +15 -5
  24. package/dist/assets/components/drawer.tsx +4 -3
  25. package/dist/assets/components/dropdown-menu.tsx +15 -13
  26. package/dist/assets/components/hover-card.tsx +4 -1
  27. package/dist/assets/components/image.tsx +1 -1
  28. package/dist/assets/components/input.tsx +29 -14
  29. package/dist/assets/components/kbd.stories.tsx +3 -3
  30. package/dist/assets/components/kbd.tsx +29 -13
  31. package/dist/assets/components/listbox.tsx +8 -8
  32. package/dist/assets/components/menubar.tsx +50 -23
  33. package/dist/assets/components/navbar.stories.tsx +140 -13
  34. package/dist/assets/components/navbar.tsx +22 -5
  35. package/dist/assets/components/navigation-menu.tsx +28 -6
  36. package/dist/assets/components/pagination.tsx +10 -10
  37. package/dist/assets/components/popover.tsx +10 -8
  38. package/dist/assets/components/progress.tsx +6 -4
  39. package/dist/assets/components/radio-group.tsx +5 -5
  40. package/dist/assets/components/select.tsx +49 -29
  41. package/dist/assets/components/separator.tsx +3 -3
  42. package/dist/assets/components/sheet.tsx +4 -4
  43. package/dist/assets/components/sidebar.tsx +10 -10
  44. package/dist/assets/components/skeleton.tsx +13 -5
  45. package/dist/assets/components/slider.tsx +12 -10
  46. package/dist/assets/components/switch.tsx +4 -4
  47. package/dist/assets/components/table.tsx +5 -5
  48. package/dist/assets/components/tabs.tsx +8 -8
  49. package/dist/assets/components/textarea.tsx +11 -9
  50. package/dist/assets/components/toast.tsx +7 -7
  51. package/dist/assets/components/toggle.tsx +27 -7
  52. package/dist/assets/components/tooltip.tsx +10 -8
  53. package/dist/assets/components/user.tsx +8 -6
  54. package/dist/assets/dev-tools/SonanceDevTools.tsx +851 -708
  55. package/dist/assets/dev-tools/components/ApplyFirstPreview.tsx +10 -10
  56. package/dist/assets/dev-tools/components/ChatHistory.tsx +145 -0
  57. package/dist/assets/dev-tools/components/ChatInterface.tsx +444 -295
  58. package/dist/assets/dev-tools/components/ChatTabBar.tsx +82 -0
  59. package/dist/assets/dev-tools/components/DiffPreview.tsx +1 -1
  60. package/dist/assets/dev-tools/components/InlineDiffPreview.tsx +528 -0
  61. package/dist/assets/dev-tools/components/InspectorOverlay.tsx +21 -18
  62. package/dist/assets/dev-tools/components/PropertiesPanel.tsx +1345 -0
  63. package/dist/assets/dev-tools/components/ScreenshotAnnotator.tsx +1 -1
  64. package/dist/assets/dev-tools/components/SectionHighlight.tsx +1 -1
  65. package/dist/assets/dev-tools/components/VisionDiffPreview.tsx +7 -7
  66. package/dist/assets/dev-tools/components/VisionModeBorder.tsx +12 -63
  67. package/dist/assets/dev-tools/constants.ts +38 -6
  68. package/dist/assets/dev-tools/hooks/index.ts +69 -0
  69. package/dist/assets/dev-tools/hooks/useComponentDetection.ts +132 -0
  70. package/dist/assets/dev-tools/hooks/useComputedStyles.ts +471 -0
  71. package/dist/assets/dev-tools/hooks/useContentHash.ts +212 -0
  72. package/dist/assets/dev-tools/hooks/useElementScanner.ts +398 -0
  73. package/dist/assets/dev-tools/hooks/useImageDetection.ts +162 -0
  74. package/dist/assets/dev-tools/hooks/useTextDetection.ts +217 -0
  75. package/dist/assets/dev-tools/index.ts +3 -0
  76. package/dist/assets/dev-tools/panels/AnalysisPanel.tsx +32 -32
  77. package/dist/assets/dev-tools/panels/ComponentsPanel.tsx +384 -131
  78. package/dist/assets/dev-tools/panels/TextPanel.tsx +10 -10
  79. package/dist/assets/dev-tools/types.ts +93 -2
  80. package/dist/assets/globals.css +225 -9
  81. package/dist/assets/styles/brand-overrides.css +3 -2
  82. package/dist/assets/utils.ts +2 -1
  83. package/dist/index.js +22 -3
  84. package/package.json +2 -1
@@ -34,11 +34,11 @@ export interface InspectorOverlayProps {
34
34
  changedElements?: VisionFocusedElement[];
35
35
  }
36
36
 
37
- // Color config for different element types
37
+ // Color config for different element types - color-coded for unified view
38
38
  const inspectorColors: Record<DetectedElementType, { border: string; bg: string; selectedBorder: string; selectedBg: string }> = {
39
- component: { border: "#00A3E1", bg: "#00A3E1", selectedBorder: "#00A3E1", selectedBg: "#00A3E1" }, // Sonance blue
40
- logo: { border: "#FC4C02", bg: "#FC4C02", selectedBorder: "#C02B0A", selectedBg: "#C02B0A" }, // IPORT orange / Blaze red for selected
41
- text: { border: "#8B5CF6", bg: "#8B5CF6", selectedBorder: "#7C3AED", selectedBg: "#7C3AED" }, // Purple for text
39
+ component: { border: "#8B5CF6", bg: "#8B5CF6", selectedBorder: "#7C3AED", selectedBg: "#7C3AED" }, // Purple for components
40
+ logo: { border: "#3B82F6", bg: "#3B82F6", selectedBorder: "#2563EB", selectedBg: "#2563EB" }, // Blue for images/logos
41
+ text: { border: "#F59E0B", bg: "#F59E0B", selectedBorder: "#D97706", selectedBg: "#D97706" }, // Amber for text
42
42
  };
43
43
 
44
44
  // Preview mode colors - green to indicate pending changes
@@ -198,15 +198,18 @@ export function InspectorOverlay({
198
198
  // Use appropriate colors based on mode:
199
199
  // - Changed elements (green) - highest priority (Apply-First mode)
200
200
  // - Preview mode (green) takes priority
201
- // - Vision mode (purple) for vision-focused elements
201
+ // - Vision mode uses element-type colors (color-coded: purple/blue/amber)
202
202
  // - Otherwise use type-based colors
203
+ const typeColors = inspectorColors[el.type];
203
204
  const colors = isChangedElement
204
205
  ? previewColors // Green for changed elements
205
206
  : previewMode
206
207
  ? previewColors
207
208
  : visionMode
208
- ? (isVisionFocused ? visionColors : { ...visionColors, border: "#8B5CF680", bg: "#8B5CF680" })
209
- : inspectorColors[el.type];
209
+ ? (isVisionFocused
210
+ ? { ...typeColors, selectedBorder: typeColors.selectedBorder, selectedBg: typeColors.selectedBg }
211
+ : { ...typeColors, border: typeColors.border + "80", bg: typeColors.bg + "80" })
212
+ : typeColors;
210
213
 
211
214
  // Check if this element matches the currently selected component type
212
215
  const elementType = el.name?.toLowerCase() || "";
@@ -276,13 +279,13 @@ export function InspectorOverlay({
276
279
  borderColor: (previewMode && isMatchingType) || isChangedElement ? "transparent" : borderColor,
277
280
  borderWidth: (previewMode && isMatchingType) || isChangedElement ? 0 : undefined,
278
281
  // Preview mode / Changed elements: outer glow only, no border overlay
279
- // Vision mode: show glow for focused elements
282
+ // Vision mode: show glow for focused elements with type-specific colors
280
283
  boxShadow: isChangedElement
281
284
  ? `0 0 0 3px ${previewColors.border}, 0 0 20px 8px ${previewColors.border}80`
282
285
  : previewMode && isMatchingType
283
286
  ? `0 0 0 3px ${previewColors.border}, 0 0 20px 8px ${previewColors.border}80`
284
287
  : visionMode && isVisionFocused
285
- ? `0 0 0 3px ${visionColors.border}, 0 0 15px 5px ${visionColors.border}60`
288
+ ? `0 0 0 3px ${typeColors.border}, 0 0 15px 5px ${typeColors.border}60`
286
289
  : isSelected
287
290
  ? `0 0 0 2px ${borderColor}40`
288
291
  : undefined,
@@ -309,26 +312,26 @@ export function InspectorOverlay({
309
312
  {isChangedElement ? (
310
313
  <>
311
314
  <Check className="h-3 w-3" />
312
- <span>Changed: {el.name}</span>
313
- {el.variantId && <span className="ml-1 opacity-80 font-mono text-[9px]">#{el.variantId.substring(0, 4)}</span>}
315
+ <span id="span-changed-elname">Changed: {el.name}</span>
316
+ {el.variantId && <span id="span-elvariantidsubstring" className="ml-1 opacity-80 font-mono text-[9px]">#{el.variantId.substring(0, 4)}</span>}
314
317
  </>
315
318
  ) : previewMode && isMatchingType ? (
316
319
  <>
317
320
  <Sparkles className="h-3 w-3" />
318
- <span>Preview: {el.name}</span>
319
- {el.variantId && <span className="ml-1 opacity-80 font-mono text-[9px]">#{el.variantId.substring(0, 4)}</span>}
321
+ <span id="span-preview-elname">Preview: {el.name}</span>
322
+ {el.variantId && <span id="span-elvariantidsubstring" className="ml-1 opacity-80 font-mono text-[9px]">#{el.variantId.substring(0, 4)}</span>}
320
323
  </>
321
324
  ) : visionMode && isVisionFocused ? (
322
325
  <>
323
326
  <Eye className="h-3 w-3" />
324
- <span>Focused: {el.name}</span>
325
- {el.variantId && <span className="ml-1 opacity-80 font-mono text-[9px]">#{el.variantId.substring(0, 4)}</span>}
327
+ <span id="span-focused-elname">Focused: {el.name}</span>
328
+ {el.variantId && <span id="span-elvariantidsubstring" className="ml-1 opacity-80 font-mono text-[9px]">#{el.variantId.substring(0, 4)}</span>}
326
329
  </>
327
330
  ) : visionMode ? (
328
331
  <>
329
332
  <Eye className="h-3 w-3 opacity-60" />
330
333
  {el.name}
331
- {el.variantId && <span className="ml-1 opacity-80 font-mono text-[9px] border-l border-white/30 pl-1">#{el.variantId.substring(0, 4)}</span>}
334
+ {el.variantId && <span id="span-elvariantidsubstring" className="ml-1 opacity-80 font-mono text-[9px] border-l border-white/30 pl-1">#{el.variantId.substring(0, 4)}</span>}
332
335
  </>
333
336
  ) : (
334
337
  <>
@@ -336,8 +339,8 @@ export function InspectorOverlay({
336
339
  {el.type === "component" && <Box className="h-3 w-3" />}
337
340
  {el.type === "text" && <Type className="h-3 w-3" />}
338
341
  {el.name}
339
- {el.variantId && <span className="ml-1 opacity-80 font-mono text-[9px] border-l border-white/30 pl-1">#{el.variantId.substring(0, 4)}</span>}
340
- {isSelected && <span className="ml-1">✓</span>}
342
+ {el.variantId && <span id="span-elvariantidsubstring" className="ml-1 opacity-80 font-mono text-[9px] border-l border-white/30 pl-1">#{el.variantId.substring(0, 4)}</span>}
343
+ {isSelected && <span id="span-title" className="ml-1">✓</span>}
341
344
  </>
342
345
  )}
343
346
  </div>