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.
- 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/dist/index.js +32 -1
- package/package.json +1 -1
package/dist/assets/globals.css
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
@import "tailwindcss";
|
|
2
|
+
|
|
3
|
+
/* Configure dark mode to use data-theme attribute */
|
|
4
|
+
@variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));
|
|
5
|
+
|
|
2
6
|
@import "../styles/brand-overrides.css";
|
|
3
7
|
|
|
4
8
|
/* ============================================
|
|
@@ -166,11 +170,13 @@
|
|
|
166
170
|
--space-24: 6rem;
|
|
167
171
|
--space-32: 8rem;
|
|
168
172
|
|
|
169
|
-
/* Border Radius */
|
|
173
|
+
/* Border Radius - Liquid Glass (updated from 0-4px to 8-16px) */
|
|
170
174
|
--radius-none: 0;
|
|
171
|
-
--radius-sm:
|
|
172
|
-
--radius-md:
|
|
173
|
-
--radius-lg:
|
|
175
|
+
--radius-sm: 8px;
|
|
176
|
+
--radius-md: 12px;
|
|
177
|
+
--radius-lg: 16px;
|
|
178
|
+
--radius-xl: 20px;
|
|
179
|
+
--radius-2xl: 24px;
|
|
174
180
|
--radius-full: 9999px;
|
|
175
181
|
|
|
176
182
|
/* Animation */
|
|
@@ -179,6 +185,43 @@
|
|
|
179
185
|
--duration-fast: 150ms;
|
|
180
186
|
--duration-normal: 250ms;
|
|
181
187
|
--duration-slow: 400ms;
|
|
188
|
+
|
|
189
|
+
/* ============================================
|
|
190
|
+
LIQUID GLASS SYSTEM - Light Mode
|
|
191
|
+
============================================ */
|
|
192
|
+
|
|
193
|
+
/* Glass Backgrounds (Light Mode - frosted glass effect) */
|
|
194
|
+
--glass-bg: rgba(255, 255, 255, 0.7);
|
|
195
|
+
--glass-bg-hover: rgba(255, 255, 255, 0.8);
|
|
196
|
+
--glass-bg-active: rgba(255, 255, 255, 0.9);
|
|
197
|
+
--glass-bg-elevated: rgba(255, 255, 255, 0.85);
|
|
198
|
+
--glass-bg-subtle: rgba(255, 255, 255, 0.5);
|
|
199
|
+
|
|
200
|
+
/* Glass Borders (Light Mode) */
|
|
201
|
+
--glass-border: rgba(0, 0, 0, 0.08);
|
|
202
|
+
--glass-border-hover: rgba(0, 0, 0, 0.12);
|
|
203
|
+
--glass-border-focus: rgba(0, 0, 0, 0.15);
|
|
204
|
+
|
|
205
|
+
/* Blur Values */
|
|
206
|
+
--glass-blur-sm: 8px;
|
|
207
|
+
--glass-blur-md: 12px;
|
|
208
|
+
--glass-blur-lg: 20px;
|
|
209
|
+
--glass-blur-xl: 32px;
|
|
210
|
+
|
|
211
|
+
/* Glass Shadows (Light Mode) */
|
|
212
|
+
--glass-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06);
|
|
213
|
+
--glass-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.08);
|
|
214
|
+
--glass-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.1);
|
|
215
|
+
--glass-shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.12);
|
|
216
|
+
|
|
217
|
+
/* Glow Effects - Using Sonance Blue */
|
|
218
|
+
--glow-primary: rgba(0, 163, 225, 0.2);
|
|
219
|
+
--glow-primary-subtle: rgba(0, 163, 225, 0.1);
|
|
220
|
+
--glow-primary-intense: rgba(0, 163, 225, 0.35);
|
|
221
|
+
|
|
222
|
+
/* Inner Highlights */
|
|
223
|
+
--glass-inner-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.8);
|
|
224
|
+
--glass-inner-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.03);
|
|
182
225
|
}
|
|
183
226
|
|
|
184
227
|
/* Dark Mode */
|
|
@@ -252,6 +295,37 @@
|
|
|
252
295
|
--sidebar-accent-foreground: #FFFFFF;
|
|
253
296
|
--sidebar-border: #3a444c;
|
|
254
297
|
--sidebar-ring: #00A3E1;
|
|
298
|
+
|
|
299
|
+
/* ============================================
|
|
300
|
+
LIQUID GLASS SYSTEM - Dark Mode
|
|
301
|
+
============================================ */
|
|
302
|
+
|
|
303
|
+
/* Glass Backgrounds (Dark Mode - classic glass morphism) */
|
|
304
|
+
--glass-bg: rgba(255, 255, 255, 0.03);
|
|
305
|
+
--glass-bg-hover: rgba(255, 255, 255, 0.06);
|
|
306
|
+
--glass-bg-active: rgba(255, 255, 255, 0.1);
|
|
307
|
+
--glass-bg-elevated: rgba(255, 255, 255, 0.08);
|
|
308
|
+
--glass-bg-subtle: rgba(255, 255, 255, 0.02);
|
|
309
|
+
|
|
310
|
+
/* Glass Borders (Dark Mode) */
|
|
311
|
+
--glass-border: rgba(255, 255, 255, 0.08);
|
|
312
|
+
--glass-border-hover: rgba(255, 255, 255, 0.12);
|
|
313
|
+
--glass-border-focus: rgba(255, 255, 255, 0.18);
|
|
314
|
+
|
|
315
|
+
/* Glass Shadows (Dark Mode - more pronounced) */
|
|
316
|
+
--glass-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.3);
|
|
317
|
+
--glass-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.35);
|
|
318
|
+
--glass-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.4);
|
|
319
|
+
--glass-shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.5);
|
|
320
|
+
|
|
321
|
+
/* Glow Effects - More intense in dark mode */
|
|
322
|
+
--glow-primary: rgba(0, 163, 225, 0.35);
|
|
323
|
+
--glow-primary-subtle: rgba(0, 163, 225, 0.2);
|
|
324
|
+
--glow-primary-intense: rgba(0, 163, 225, 0.5);
|
|
325
|
+
|
|
326
|
+
/* Inner Highlights (Dark Mode) */
|
|
327
|
+
--glass-inner-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
328
|
+
--glass-inner-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2);
|
|
255
329
|
}
|
|
256
330
|
|
|
257
331
|
/* System preference detection fallback */
|
|
@@ -395,11 +469,22 @@
|
|
|
395
469
|
|
|
396
470
|
/* Font */
|
|
397
471
|
--font-sans: var(--font-montserrat), system-ui, sans-serif;
|
|
398
|
-
|
|
399
|
-
/* Border Radius */
|
|
400
|
-
--radius-sm:
|
|
401
|
-
--radius-md:
|
|
402
|
-
--radius-lg:
|
|
472
|
+
|
|
473
|
+
/* Border Radius - Liquid Glass */
|
|
474
|
+
--radius-sm: 8px;
|
|
475
|
+
--radius-md: 12px;
|
|
476
|
+
--radius-lg: 16px;
|
|
477
|
+
--radius-xl: 20px;
|
|
478
|
+
--radius-2xl: 24px;
|
|
479
|
+
|
|
480
|
+
/* Glass System Colors */
|
|
481
|
+
--color-glass-bg: var(--glass-bg);
|
|
482
|
+
--color-glass-bg-hover: var(--glass-bg-hover);
|
|
483
|
+
--color-glass-bg-active: var(--glass-bg-active);
|
|
484
|
+
--color-glass-bg-elevated: var(--glass-bg-elevated);
|
|
485
|
+
--color-glass-border: var(--glass-border);
|
|
486
|
+
--color-glass-border-hover: var(--glass-border-hover);
|
|
487
|
+
--color-glass-border-focus: var(--glass-border-focus);
|
|
403
488
|
}
|
|
404
489
|
|
|
405
490
|
/* ============================================
|
|
@@ -520,3 +605,134 @@ code ::selection,
|
|
|
520
605
|
-ms-overflow-style: none;
|
|
521
606
|
scrollbar-width: none;
|
|
522
607
|
}
|
|
608
|
+
|
|
609
|
+
/* ============================================
|
|
610
|
+
LIQUID GLASS UTILITY CLASSES
|
|
611
|
+
============================================ */
|
|
612
|
+
|
|
613
|
+
/* Glass Card - Primary container */
|
|
614
|
+
.glass-card {
|
|
615
|
+
background: var(--glass-bg);
|
|
616
|
+
backdrop-filter: blur(var(--glass-blur-lg));
|
|
617
|
+
-webkit-backdrop-filter: blur(var(--glass-blur-lg));
|
|
618
|
+
border: 1px solid var(--glass-border);
|
|
619
|
+
box-shadow: var(--glass-shadow-md);
|
|
620
|
+
border-radius: var(--radius-lg);
|
|
621
|
+
transition: all 0.2s ease-out;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
.glass-card:hover {
|
|
625
|
+
background: var(--glass-bg-hover);
|
|
626
|
+
border-color: var(--glass-border-hover);
|
|
627
|
+
box-shadow: var(--glass-shadow-lg), 0 0 20px var(--glow-primary-subtle);
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/* Glass Button */
|
|
631
|
+
.glass-btn {
|
|
632
|
+
background: var(--glass-bg);
|
|
633
|
+
backdrop-filter: blur(var(--glass-blur-sm));
|
|
634
|
+
-webkit-backdrop-filter: blur(var(--glass-blur-sm));
|
|
635
|
+
border: 1px solid var(--glass-border);
|
|
636
|
+
border-radius: var(--radius-md);
|
|
637
|
+
transition: all 0.2s ease-out;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
.glass-btn:hover {
|
|
641
|
+
background: var(--glass-bg-hover);
|
|
642
|
+
border-color: var(--glass-border-hover);
|
|
643
|
+
box-shadow: 0 0 20px var(--glow-primary);
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
.glass-btn:active {
|
|
647
|
+
background: var(--glass-bg-active);
|
|
648
|
+
transform: scale(0.98);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
/* Glass Input */
|
|
652
|
+
.glass-input {
|
|
653
|
+
background: var(--glass-bg-subtle);
|
|
654
|
+
backdrop-filter: blur(var(--glass-blur-sm));
|
|
655
|
+
-webkit-backdrop-filter: blur(var(--glass-blur-sm));
|
|
656
|
+
border: 1px solid var(--glass-border);
|
|
657
|
+
border-radius: var(--radius-md);
|
|
658
|
+
transition: all 0.2s ease-out;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
.glass-input:hover {
|
|
662
|
+
border-color: var(--glass-border-hover);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
.glass-input:focus {
|
|
666
|
+
outline: none;
|
|
667
|
+
border-color: var(--sonance-blue);
|
|
668
|
+
box-shadow: 0 0 20px var(--glow-primary);
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
/* Glow Effect Utilities */
|
|
672
|
+
.hover-glow {
|
|
673
|
+
transition: box-shadow 0.3s ease-out;
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
.hover-glow:hover {
|
|
677
|
+
box-shadow: 0 0 30px var(--glow-primary);
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
.glow-subtle:hover {
|
|
681
|
+
box-shadow: 0 0 15px var(--glow-primary-subtle);
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
.glow-intense:hover {
|
|
685
|
+
box-shadow: 0 0 40px var(--glow-primary-intense);
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
.focus-glow:focus {
|
|
689
|
+
box-shadow: 0 0 25px var(--glow-primary);
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
/* Glass Blur Utilities */
|
|
693
|
+
.glass-blur {
|
|
694
|
+
backdrop-filter: blur(var(--glass-blur-lg));
|
|
695
|
+
-webkit-backdrop-filter: blur(var(--glass-blur-lg));
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
.glass-blur-sm {
|
|
699
|
+
backdrop-filter: blur(var(--glass-blur-sm));
|
|
700
|
+
-webkit-backdrop-filter: blur(var(--glass-blur-sm));
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
.glass-blur-xl {
|
|
704
|
+
backdrop-filter: blur(var(--glass-blur-xl));
|
|
705
|
+
-webkit-backdrop-filter: blur(var(--glass-blur-xl));
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
/* Glass Border Utilities */
|
|
709
|
+
.glass-border {
|
|
710
|
+
border: 1px solid var(--glass-border);
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
.glass-border-hover:hover {
|
|
714
|
+
border-color: var(--glass-border-hover);
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
/* Text Gradient Utility */
|
|
718
|
+
.text-gradient {
|
|
719
|
+
background-clip: text;
|
|
720
|
+
-webkit-background-clip: text;
|
|
721
|
+
-webkit-text-fill-color: transparent;
|
|
722
|
+
background-image: linear-gradient(135deg, var(--sonance-blue) 0%, var(--sonance-charcoal) 100%);
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
/* Fallback for browsers without backdrop-filter support */
|
|
726
|
+
@supports not (backdrop-filter: blur(10px)) {
|
|
727
|
+
.glass-card,
|
|
728
|
+
.glass-btn,
|
|
729
|
+
.glass-input {
|
|
730
|
+
background: rgba(255, 255, 255, 0.95);
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
[data-theme="dark"] .glass-card,
|
|
734
|
+
[data-theme="dark"] .glass-btn,
|
|
735
|
+
[data-theme="dark"] .glass-input {
|
|
736
|
+
background: rgba(26, 31, 36, 0.95);
|
|
737
|
+
}
|
|
738
|
+
}
|
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
========================================================================== */
|
|
5
5
|
|
|
6
6
|
:root {
|
|
7
|
+
--zoom--scale: 0.93;
|
|
7
8
|
/* Sonance Logo Sizing */
|
|
8
|
-
--sonance-logo-scale:
|
|
9
|
+
--sonance-logo-scale: 0.94;
|
|
9
10
|
--sonance-logo-width: auto;
|
|
10
11
|
--sonance-logo-height: auto;
|
|
11
12
|
|
|
12
13
|
/* IPORT Logo Sizing */
|
|
13
|
-
--iport-logo-scale: 1;
|
|
14
|
+
--iport-logo-scale: 1.08;
|
|
14
15
|
--iport-logo-width: auto;
|
|
15
16
|
--iport-logo-height: auto;
|
|
16
17
|
|
package/dist/assets/utils.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -377,6 +377,9 @@ function runDevToolsInstaller() {
|
|
|
377
377
|
let sourceApiInjectId;
|
|
378
378
|
let sourceApiAnalyze;
|
|
379
379
|
let sourceApiVisionApply;
|
|
380
|
+
let sourceApiVisionApplyThemeDiscovery;
|
|
381
|
+
let sourceApiVisionApplyStylingDetection;
|
|
382
|
+
let sourceApiVisionApplyImageStylingDetection;
|
|
380
383
|
let sourceApiVisionEdit;
|
|
381
384
|
let sourceApiAiEdit;
|
|
382
385
|
let sourceApiSaveColors;
|
|
@@ -395,6 +398,9 @@ function runDevToolsInstaller() {
|
|
|
395
398
|
sourceApiInjectId = path.join(BUNDLED_ASSETS, "api/sonance-inject-id/route.ts");
|
|
396
399
|
sourceApiAnalyze = path.join(BUNDLED_ASSETS, "api/sonance-analyze/route.ts");
|
|
397
400
|
sourceApiVisionApply = path.join(BUNDLED_ASSETS, "api/sonance-vision-apply/route.ts");
|
|
401
|
+
sourceApiVisionApplyThemeDiscovery = path.join(BUNDLED_ASSETS, "api/sonance-vision-apply/theme-discovery.ts");
|
|
402
|
+
sourceApiVisionApplyStylingDetection = path.join(BUNDLED_ASSETS, "api/sonance-vision-apply/styling-detection.ts");
|
|
403
|
+
sourceApiVisionApplyImageStylingDetection = path.join(BUNDLED_ASSETS, "api/sonance-vision-apply/image-styling-detection.ts");
|
|
398
404
|
sourceApiVisionEdit = path.join(BUNDLED_ASSETS, "api/sonance-vision-edit/route.ts");
|
|
399
405
|
sourceApiAiEdit = path.join(BUNDLED_ASSETS, "api/sonance-ai-edit/route.ts");
|
|
400
406
|
sourceApiSaveColors = path.join(BUNDLED_ASSETS, "api/sonance-save-colors/route.ts");
|
|
@@ -414,6 +420,9 @@ function runDevToolsInstaller() {
|
|
|
414
420
|
sourceApiInjectId = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-inject-id/route.ts");
|
|
415
421
|
sourceApiAnalyze = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-analyze/route.ts");
|
|
416
422
|
sourceApiVisionApply = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-vision-apply/route.ts");
|
|
423
|
+
sourceApiVisionApplyThemeDiscovery = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-vision-apply/theme-discovery.ts");
|
|
424
|
+
sourceApiVisionApplyStylingDetection = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-vision-apply/styling-detection.ts");
|
|
425
|
+
sourceApiVisionApplyImageStylingDetection = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-vision-apply/image-styling-detection.ts");
|
|
417
426
|
sourceApiVisionEdit = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-vision-edit/route.ts");
|
|
418
427
|
sourceApiAiEdit = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-ai-edit/route.ts");
|
|
419
428
|
sourceApiSaveColors = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-save-colors/route.ts");
|
|
@@ -563,6 +572,16 @@ function runDevToolsInstaller() {
|
|
|
563
572
|
fs.copyFileSync(sourceApiVisionApply, path.join(apiVisionApplyDir, "route.ts"));
|
|
564
573
|
createdFiles.push(`${pathPrefix}app/api/sonance-vision-apply/route.ts`);
|
|
565
574
|
console.log(` ✓ Created ${pathPrefix}app/api/sonance-vision-apply/route.ts`);
|
|
575
|
+
// Copy supporting files for vision-apply
|
|
576
|
+
fs.copyFileSync(sourceApiVisionApplyThemeDiscovery, path.join(apiVisionApplyDir, "theme-discovery.ts"));
|
|
577
|
+
createdFiles.push(`${pathPrefix}app/api/sonance-vision-apply/theme-discovery.ts`);
|
|
578
|
+
console.log(` ✓ Created ${pathPrefix}app/api/sonance-vision-apply/theme-discovery.ts`);
|
|
579
|
+
fs.copyFileSync(sourceApiVisionApplyStylingDetection, path.join(apiVisionApplyDir, "styling-detection.ts"));
|
|
580
|
+
createdFiles.push(`${pathPrefix}app/api/sonance-vision-apply/styling-detection.ts`);
|
|
581
|
+
console.log(` ✓ Created ${pathPrefix}app/api/sonance-vision-apply/styling-detection.ts`);
|
|
582
|
+
fs.copyFileSync(sourceApiVisionApplyImageStylingDetection, path.join(apiVisionApplyDir, "image-styling-detection.ts"));
|
|
583
|
+
createdFiles.push(`${pathPrefix}app/api/sonance-vision-apply/image-styling-detection.ts`);
|
|
584
|
+
console.log(` ✓ Created ${pathPrefix}app/api/sonance-vision-apply/image-styling-detection.ts`);
|
|
566
585
|
if (!fs.existsSync(apiVisionEditDir)) {
|
|
567
586
|
fs.mkdirSync(apiVisionEditDir, { recursive: true });
|
|
568
587
|
}
|
|
@@ -1101,6 +1120,9 @@ function runDevToolsSync(fullSync = false) {
|
|
|
1101
1120
|
let sourceApiAnalyze;
|
|
1102
1121
|
let sourceApiSaveColors;
|
|
1103
1122
|
let sourceApiVisionApply;
|
|
1123
|
+
let sourceApiVisionApplyThemeDiscovery;
|
|
1124
|
+
let sourceApiVisionApplyStylingDetection;
|
|
1125
|
+
let sourceApiVisionApplyImageStylingDetection;
|
|
1104
1126
|
let sourceApiVisionEdit;
|
|
1105
1127
|
if (IS_BUNDLED) {
|
|
1106
1128
|
sourceDevTools = path.join(BUNDLED_ASSETS, "dev-tools");
|
|
@@ -1109,6 +1131,9 @@ function runDevToolsSync(fullSync = false) {
|
|
|
1109
1131
|
sourceApiAnalyze = path.join(BUNDLED_ASSETS, "api/sonance-analyze/route.ts");
|
|
1110
1132
|
sourceApiSaveColors = path.join(BUNDLED_ASSETS, "api/sonance-save-colors/route.ts");
|
|
1111
1133
|
sourceApiVisionApply = path.join(BUNDLED_ASSETS, "api/sonance-vision-apply/route.ts");
|
|
1134
|
+
sourceApiVisionApplyThemeDiscovery = path.join(BUNDLED_ASSETS, "api/sonance-vision-apply/theme-discovery.ts");
|
|
1135
|
+
sourceApiVisionApplyStylingDetection = path.join(BUNDLED_ASSETS, "api/sonance-vision-apply/styling-detection.ts");
|
|
1136
|
+
sourceApiVisionApplyImageStylingDetection = path.join(BUNDLED_ASSETS, "api/sonance-vision-apply/image-styling-detection.ts");
|
|
1112
1137
|
sourceApiVisionEdit = path.join(BUNDLED_ASSETS, "api/sonance-vision-edit/route.ts");
|
|
1113
1138
|
}
|
|
1114
1139
|
else {
|
|
@@ -1118,6 +1143,9 @@ function runDevToolsSync(fullSync = false) {
|
|
|
1118
1143
|
sourceApiAnalyze = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-analyze/route.ts");
|
|
1119
1144
|
sourceApiSaveColors = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-save-colors/route.ts");
|
|
1120
1145
|
sourceApiVisionApply = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-vision-apply/route.ts");
|
|
1146
|
+
sourceApiVisionApplyThemeDiscovery = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-vision-apply/theme-discovery.ts");
|
|
1147
|
+
sourceApiVisionApplyStylingDetection = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-vision-apply/styling-detection.ts");
|
|
1148
|
+
sourceApiVisionApplyImageStylingDetection = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-vision-apply/image-styling-detection.ts");
|
|
1121
1149
|
sourceApiVisionEdit = path.join(DEV_PROJECT_ROOT, "src/app/api/sonance-vision-edit/route.ts");
|
|
1122
1150
|
}
|
|
1123
1151
|
// Core files to sync (always synced)
|
|
@@ -1173,7 +1201,10 @@ function runDevToolsSync(fullSync = false) {
|
|
|
1173
1201
|
}
|
|
1174
1202
|
// Always sync Vision API routes (critical for Vision Mode)
|
|
1175
1203
|
const visionApiFiles = [
|
|
1176
|
-
{ src: sourceApiVisionApply, dest: path.join(targetDir, baseDir, "app/api/sonance-vision-apply/route.ts"), name: "sonance-vision-apply" },
|
|
1204
|
+
{ src: sourceApiVisionApply, dest: path.join(targetDir, baseDir, "app/api/sonance-vision-apply/route.ts"), name: "sonance-vision-apply/route" },
|
|
1205
|
+
{ src: sourceApiVisionApplyThemeDiscovery, dest: path.join(targetDir, baseDir, "app/api/sonance-vision-apply/theme-discovery.ts"), name: "sonance-vision-apply/theme-discovery" },
|
|
1206
|
+
{ src: sourceApiVisionApplyStylingDetection, dest: path.join(targetDir, baseDir, "app/api/sonance-vision-apply/styling-detection.ts"), name: "sonance-vision-apply/styling-detection" },
|
|
1207
|
+
{ src: sourceApiVisionApplyImageStylingDetection, dest: path.join(targetDir, baseDir, "app/api/sonance-vision-apply/image-styling-detection.ts"), name: "sonance-vision-apply/image-styling-detection" },
|
|
1177
1208
|
{ src: sourceApiVisionEdit, dest: path.join(targetDir, baseDir, "app/api/sonance-vision-edit/route.ts"), name: "sonance-vision-edit" },
|
|
1178
1209
|
];
|
|
1179
1210
|
for (const file of visionApiFiles) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sonance-brand-mcp",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.113",
|
|
4
4
|
"description": "MCP Server for Sonance Brand Guidelines and Component Library - gives Claude instant access to brand colors, typography, and UI components.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|