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
|
@@ -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: "#
|
|
40
|
-
logo: { border: "#
|
|
41
|
-
text: { border: "#
|
|
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
|
|
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
|
|
209
|
-
|
|
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 ${
|
|
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>
|