sitepaige-mcp-server 1.2.5 → 1.2.7

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.
@@ -79,7 +79,8 @@ export default function Slideshow({
79
79
  if (!images || images.length === 0) {
80
80
  return (
81
81
  <div
82
- className="relative w-full flex items-center justify-center bg-black rounded-lg"
82
+ className="relative h-full w-full flex items-center justify-center bg-black rounded-lg"
83
+ style={{ minHeight: height || 400 }}
83
84
  >
84
85
  <p className="text-gray-400">No images in slideshow</p>
85
86
  </div>
@@ -97,18 +98,21 @@ export default function Slideshow({
97
98
 
98
99
  return (
99
100
  <div
100
- className="relative w-full overflow-hidden rounded-lg bg-black"
101
- onMouseEnter={() => setIsHovered(true)}
102
- onMouseLeave={() => setIsHovered(false)}
101
+ className="relative h-full w-full overflow-hidden rounded-lg bg-black"
102
+ style={{ minHeight: height || 400 }}
103
103
  >
104
104
  {/* Main image display */}
105
- <div className="flex items-center justify-center">
105
+ <div
106
+ className="relative w-full h-full flex items-center justify-center"
107
+ onMouseEnter={() => setIsHovered(true)}
108
+ onMouseLeave={() => setIsHovered(false)}
109
+ >
106
110
  {animationType === 'fade' ? (
107
111
  // Fade animation - render all images with opacity transitions
108
112
  images.map((imageId, index) => (
109
113
  <div
110
114
  key={imageId}
111
- className={`absolute inset-0 flex items-center justify-center transition-opacity duration-1000 ${
115
+ className={`absolute inset-0 flex items-center justify-center transition-opacity duration-1000 pointer-events-none ${
112
116
  index === currentIndex ? 'opacity-100' : 'opacity-0'
113
117
  }`}
114
118
  >
@@ -120,7 +124,7 @@ export default function Slideshow({
120
124
  <img
121
125
  src={getImageSrc(imageId)}
122
126
  alt={`Slide ${index + 1}`}
123
- className="w-full h-full object-cover"
127
+ className="w-full h-full object-cover pointer-events-none"
124
128
  onError={() => {
125
129
  setImageLoadErrors(prev => ({ ...prev, [imageId]: true }));
126
130
  }}
@@ -138,39 +142,43 @@ export default function Slideshow({
138
142
  <img
139
143
  src={getImageSrc(currentImageId)}
140
144
  alt={`Slide ${currentIndex + 1}`}
141
- className="w-full h-full object-cover"
145
+ className="w-full h-full object-cover pointer-events-none"
142
146
  onError={() => {
143
147
  setImageLoadErrors(prev => ({ ...prev, [currentImageId]: true }));
144
148
  }}
145
149
  />
146
150
  )
147
151
  )}
152
+
153
+ {/* Gradient overlay for better text visibility */}
154
+ <div className="absolute inset-0 bg-gradient-to-t from-black/30 to-transparent pointer-events-none" />
155
+
156
+ {/* Navigation arrows - only show if more than one image */}
157
+ {images.length > 1 && isHovered && (
158
+ <>
159
+ <button
160
+ onClick={handlePrevious}
161
+ className={`absolute left-4 top-1/2 -translate-y-1/2 p-2 rounded-full bg-black/50 backdrop-blur-sm border-2 border-white text-white transition-all duration-200 transform hover:scale-110 ${
162
+ isHovered ? 'opacity-100 pointer-events-auto' : 'opacity-0 pointer-events-none'
163
+ }`}
164
+ aria-label="Previous slide"
165
+ >
166
+ <ChevronLeft className="w-6 h-6" />
167
+ </button>
168
+
169
+ <button
170
+ onClick={handleNext}
171
+ className={`absolute right-4 top-1/2 -translate-y-1/2 p-2 rounded-full bg-black/50 backdrop-blur-sm border-2 border-white text-white transition-all duration-200 transform hover:scale-110 ${
172
+ isHovered ? 'opacity-100 pointer-events-auto' : 'opacity-0 pointer-events-none'
173
+ }`}
174
+ aria-label="Next slide"
175
+ >
176
+ <ChevronRight className="w-6 h-6" />
177
+ </button>
178
+ </>
179
+ )}
148
180
  </div>
149
181
 
150
- {/* Gradient overlay for better text visibility */}
151
- <div className="absolute inset-0 bg-gradient-to-t from-black/30 to-transparent pointer-events-none" />
152
-
153
- {/* Navigation arrows - only show if more than one image and on hover */}
154
- {images.length > 1 && isHovered && (
155
- <>
156
- <button
157
- onClick={handlePrevious}
158
- className="absolute left-4 top-1/2 -translate-y-1/2 p-2 rounded-full !bg-transparent border-2 border-white text-white transition-all duration-200 transform hover:scale-110"
159
- aria-label="Previous slide"
160
- >
161
- <ChevronLeft className="w-6 h-6" />
162
- </button>
163
-
164
- <button
165
- onClick={handleNext}
166
- className="absolute right-4 top-1/2 -translate-y-1/2 p-2 rounded-full !bg-transparent border-2 border-white text-white transition-all duration-200 transform hover:scale-110"
167
- aria-label="Next slide"
168
- >
169
- <ChevronRight className="w-6 h-6" />
170
- </button>
171
- </>
172
- )}
173
-
174
182
  {/* Slide indicators */}
175
183
  {images.length > 1 && (
176
184
  <div className="absolute bottom-4 left-1/2 -translate-x-1/2 flex gap-2">
@@ -188,8 +196,6 @@ export default function Slideshow({
188
196
  ))}
189
197
  </div>
190
198
  )}
191
-
192
-
193
199
  </div>
194
200
  );
195
201
  }
@@ -20,6 +20,10 @@ h1, h2 {
20
20
  margin: 10px 0 !important;
21
21
  }
22
22
 
23
+ .rtext-content a {
24
+ text-decoration: underline;
25
+ }
26
+
23
27
  /* Slide down animation for top tray */
24
28
  @keyframes slideDown {
25
29
  from {
@@ -7,6 +7,7 @@ import { writeApis } from "./generators/apis.js";
7
7
  import { processBlueprintImages } from "./generators/images.js";
8
8
  import { writeDefaultApp } from "./generators/defaultapp.js";
9
9
  import { updateGlobalCSS } from "./generators/design.js";
10
+ import { generateBackgrounds } from "./generators/background-generator.js";
10
11
  import { writeArchitectureDoc } from "./generators/architecture.js";
11
12
  import path from "node:path";
12
13
  import { ensureDir } from "./generators/utils.js";
@@ -62,6 +63,8 @@ export async function writeProjectFromBlueprint(project, options) {
62
63
  const viewMap = await writeViews(targetDir, bpWithImages, projectCode, project.AuthProviders);
63
64
  // Get the collected view styles
64
65
  const viewStyles = getViewStyles();
66
+ // Generate background gradient/overlay if needed
67
+ generateBackgrounds(bpWithImages.design);
65
68
  await updateGlobalCSS(targetDir, bpWithImages, viewStyles);
66
69
  await writePages(targetDir, bpWithImages, viewMap);
67
70
  await writeApis(targetDir, bpWithImages, projectCode);
@@ -120,6 +123,8 @@ export async function writeProjectPagesOnly(project, options) {
120
123
  const viewMap = await writeViews(targetDir, bpWithImages, projectCode, project.AuthProviders);
121
124
  // Get the collected view styles
122
125
  const viewStyles = getViewStyles();
126
+ // Generate background gradient/overlay if needed
127
+ generateBackgrounds(bpWithImages.design);
123
128
  await updateGlobalCSS(targetDir, bpWithImages, viewStyles);
124
129
  await writePages(targetDir, bpWithImages, viewMap);
125
130
  // Conditionally write APIs based on writeApis option AND if they exist in code
@@ -1 +1 @@
1
- {"version":3,"file":"blueprintWriter.js","sourceRoot":"","sources":["../src/blueprintWriter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blueprintWriter.js","sourceRoot":"","sources":["../src/blueprintWriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,GAAG,MAAM,kBAAkB,CAAC;AAEnC,uCAAuC;AACvC,KAAK,UAAU,QAAQ,CAAC,OAAe;IACrC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC7C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAChG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;AACH,CAAC;AAqBD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAAqB,EAAE,OAAqB;IAC1F,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,SAAS,CAAC,SAAS,CAAC,CAAC;IAErB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjC,MAAM,QAAQ,CAAC,iDAAiD,GAAG,IAAI,CAAC,SAAS,CAAC;QAChF,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS;QACjC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;KACxB,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,QAAQ,CAAC,oEAAoE,CAAC,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,QAAQ,CAAC,qDAAqD,GAAG,IAAI,CAAC,SAAS,CAAC;QACpF,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI;QAC3B,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;QACxC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK;QAC7B,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;KAC3C,CAAC,CAAC,CAAC;IAEJ,oDAAoD;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;IAC9C,MAAM,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IACnF,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACtC,6CAA6C;IAC7C,MAAM,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IACrE,MAAM,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IAC/E,MAAM,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IAC3F,6FAA6F;IAC7F,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9F,gCAAgC;IAChC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,iDAAiD;IACjD,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAEtD,mCAAmC;IACnC,MAAM,oBAAoB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACtD,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAqB,EAAE,OAAqB;IACtF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,SAAS,CAAC,SAAS,CAAC,CAAC;IAErB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjC,MAAM,QAAQ,CAAC,+CAA+C,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9E,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,CAAC,6CAA6C,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5E,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS;QACjC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;KACxB,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,QAAQ,CAAC,iDAAiD,GAAG,IAAI,CAAC,SAAS,CAAC;YAChF,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI;YAC3B,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;YACxC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK;YAC7B,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;SAC3C,CAAC,CAAC,CAAC;IACN,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,CAAC,0DAA0D,CAAC,CAAC;IAC7E,CAAC;IAED,oDAAoD;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;IAC9C,MAAM,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IACnF,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACtC,6CAA6C;IAC7C,MAAM,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IACrE,MAAM,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE5C,iEAAiE;IACjE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;QACnC,MAAM,QAAQ,CAAC,qFAAqF,CAAC,CAAC;QACtG,MAAM,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;QAC/E,MAAM,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IAC7F,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,CAAC,gEAAgE,GAAG,OAAO,CAAC,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;IAC1I,CAAC;IAED,6FAA6F;IAC7F,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9F,gCAAgC;IAChC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,iDAAiD;IACjD,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAEnD,+EAA+E;IAC/E,MAAM,OAAO,GAAG,WAAW,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/E,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,QAAQ,CAAC,sEAAsE,CAAC,CAAC;QACvF,MAAM,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,CAAC,mDAAmD,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;IACzH,CAAC;IAED,+DAA+D;AACjE,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAqB,EAAE,OAAqB;IACxF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,oCAAoC;IACpC,MAAM,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC;IAC7E,MAAM,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC;IACzF,MAAM,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAEnD,0DAA0D;IAC1D,MAAM,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,QAAoC,EACpC,QAAgB,EAChB,UAAkB;IAElB,gDAAgD;IAChD,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,eAAe;KACxB,CAAC;IAEF,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC7D,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEpB,qCAAqC;IACrC,IAAI,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAE7D,yDAAyD;IACzD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE/C,+CAA+C;IAC/C,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;IAED,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAElE,0CAA0C;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAClD,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEtC,MAAM,QAAQ,CAAC,4BAA4B,QAAQ,UAAU,QAAQ,EAAE,CAAC,CAAC;QAEzE,8CAA8C;QAC9C,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,CAAC,oCAAoC,QAAQ,SAAS,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC;QAC1F,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -79,7 +79,8 @@ export default function Slideshow({
79
79
  if (!images || images.length === 0) {
80
80
  return (
81
81
  <div
82
- className="relative w-full flex items-center justify-center bg-black rounded-lg"
82
+ className="relative h-full w-full flex items-center justify-center bg-black rounded-lg"
83
+ style={{ minHeight: height || 400 }}
83
84
  >
84
85
  <p className="text-gray-400">No images in slideshow</p>
85
86
  </div>
@@ -97,18 +98,21 @@ export default function Slideshow({
97
98
 
98
99
  return (
99
100
  <div
100
- className="relative w-full overflow-hidden rounded-lg bg-black"
101
- onMouseEnter={() => setIsHovered(true)}
102
- onMouseLeave={() => setIsHovered(false)}
101
+ className="relative h-full w-full overflow-hidden rounded-lg bg-black"
102
+ style={{ minHeight: height || 400 }}
103
103
  >
104
104
  {/* Main image display */}
105
- <div className="flex items-center justify-center">
105
+ <div
106
+ className="relative w-full h-full flex items-center justify-center"
107
+ onMouseEnter={() => setIsHovered(true)}
108
+ onMouseLeave={() => setIsHovered(false)}
109
+ >
106
110
  {animationType === 'fade' ? (
107
111
  // Fade animation - render all images with opacity transitions
108
112
  images.map((imageId, index) => (
109
113
  <div
110
114
  key={imageId}
111
- className={`absolute inset-0 flex items-center justify-center transition-opacity duration-1000 ${
115
+ className={`absolute inset-0 flex items-center justify-center transition-opacity duration-1000 pointer-events-none ${
112
116
  index === currentIndex ? 'opacity-100' : 'opacity-0'
113
117
  }`}
114
118
  >
@@ -120,7 +124,7 @@ export default function Slideshow({
120
124
  <img
121
125
  src={getImageSrc(imageId)}
122
126
  alt={`Slide ${index + 1}`}
123
- className="w-full h-full object-cover"
127
+ className="w-full h-full object-cover pointer-events-none"
124
128
  onError={() => {
125
129
  setImageLoadErrors(prev => ({ ...prev, [imageId]: true }));
126
130
  }}
@@ -138,39 +142,43 @@ export default function Slideshow({
138
142
  <img
139
143
  src={getImageSrc(currentImageId)}
140
144
  alt={`Slide ${currentIndex + 1}`}
141
- className="w-full h-full object-cover"
145
+ className="w-full h-full object-cover pointer-events-none"
142
146
  onError={() => {
143
147
  setImageLoadErrors(prev => ({ ...prev, [currentImageId]: true }));
144
148
  }}
145
149
  />
146
150
  )
147
151
  )}
152
+
153
+ {/* Gradient overlay for better text visibility */}
154
+ <div className="absolute inset-0 bg-gradient-to-t from-black/30 to-transparent pointer-events-none" />
155
+
156
+ {/* Navigation arrows - only show if more than one image */}
157
+ {images.length > 1 && isHovered && (
158
+ <>
159
+ <button
160
+ onClick={handlePrevious}
161
+ className={`absolute left-4 top-1/2 -translate-y-1/2 p-2 rounded-full bg-black/50 backdrop-blur-sm border-2 border-white text-white transition-all duration-200 transform hover:scale-110 ${
162
+ isHovered ? 'opacity-100 pointer-events-auto' : 'opacity-0 pointer-events-none'
163
+ }`}
164
+ aria-label="Previous slide"
165
+ >
166
+ <ChevronLeft className="w-6 h-6" />
167
+ </button>
168
+
169
+ <button
170
+ onClick={handleNext}
171
+ className={`absolute right-4 top-1/2 -translate-y-1/2 p-2 rounded-full bg-black/50 backdrop-blur-sm border-2 border-white text-white transition-all duration-200 transform hover:scale-110 ${
172
+ isHovered ? 'opacity-100 pointer-events-auto' : 'opacity-0 pointer-events-none'
173
+ }`}
174
+ aria-label="Next slide"
175
+ >
176
+ <ChevronRight className="w-6 h-6" />
177
+ </button>
178
+ </>
179
+ )}
148
180
  </div>
149
181
 
150
- {/* Gradient overlay for better text visibility */}
151
- <div className="absolute inset-0 bg-gradient-to-t from-black/30 to-transparent pointer-events-none" />
152
-
153
- {/* Navigation arrows - only show if more than one image and on hover */}
154
- {images.length > 1 && isHovered && (
155
- <>
156
- <button
157
- onClick={handlePrevious}
158
- className="absolute left-4 top-1/2 -translate-y-1/2 p-2 rounded-full !bg-transparent border-2 border-white text-white transition-all duration-200 transform hover:scale-110"
159
- aria-label="Previous slide"
160
- >
161
- <ChevronLeft className="w-6 h-6" />
162
- </button>
163
-
164
- <button
165
- onClick={handleNext}
166
- className="absolute right-4 top-1/2 -translate-y-1/2 p-2 rounded-full !bg-transparent border-2 border-white text-white transition-all duration-200 transform hover:scale-110"
167
- aria-label="Next slide"
168
- >
169
- <ChevronRight className="w-6 h-6" />
170
- </button>
171
- </>
172
- )}
173
-
174
182
  {/* Slide indicators */}
175
183
  {images.length > 1 && (
176
184
  <div className="absolute bottom-4 left-1/2 -translate-x-1/2 flex gap-2">
@@ -188,8 +196,6 @@ export default function Slideshow({
188
196
  ))}
189
197
  </div>
190
198
  )}
191
-
192
-
193
199
  </div>
194
200
  );
195
201
  }
@@ -0,0 +1,62 @@
1
+ export const BACKGROUND_OVERLAYS = [
2
+ {
3
+ id: 'dots',
4
+ name: 'Dots',
5
+ description: 'Subtle dot grid pattern',
6
+ svgTemplate: `<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="1.5" fill="{{COLOR}}"/></svg>`
7
+ },
8
+ {
9
+ id: 'diagonal-lines',
10
+ name: 'Diagonal Lines',
11
+ description: 'Thin diagonal stripes',
12
+ svgTemplate: `<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M-1,5 L5,-1 M-1,21 L21,-1 M11,21 L21,11" stroke="{{COLOR}}" stroke-width="1"/></svg>`
13
+ },
14
+ {
15
+ id: 'grid',
16
+ name: 'Grid',
17
+ description: 'Fine grid mesh pattern',
18
+ svgTemplate: `<svg width="40" height="40" xmlns="http://www.w3.org/2000/svg"><path d="M40,0 L0,0 L0,40" fill="none" stroke="{{COLOR}}" stroke-width="1"/></svg>`
19
+ },
20
+ {
21
+ id: 'waves',
22
+ name: 'Waves',
23
+ description: 'Soft wave pattern',
24
+ svgTemplate: `<svg width="100" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M0 10 Q 25 20 50 10 T 100 10" fill="none" stroke="{{COLOR}}" stroke-width="1.5"/></svg>`
25
+ },
26
+ {
27
+ id: 'crosshatch',
28
+ name: 'Crosshatch',
29
+ description: 'Light crosshatch texture',
30
+ svgTemplate: `<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M0,0 L20,20 M20,0 L0,20" stroke="{{COLOR}}" stroke-width="1"/></svg>`
31
+ },
32
+ {
33
+ id: 'circles',
34
+ name: 'Circles',
35
+ description: 'Concentric circle ripples',
36
+ svgTemplate: `<svg width="60" height="60" xmlns="http://www.w3.org/2000/svg"><circle cx="30" cy="30" r="10" fill="none" stroke="{{COLOR}}"/><circle cx="30" cy="30" r="20" fill="none" stroke="{{COLOR}}"/></svg>`
37
+ },
38
+ {
39
+ id: 'noise',
40
+ name: 'Noise',
41
+ description: 'Subtle noise grain texture',
42
+ svgTemplate: `<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg"><filter id="noise"><feTurbulence type="fractalNoise" baseFrequency="0.65" numOctaves="3" stitchTiles="stitch"/></filter><rect width="100%" height="100%" filter="url(#noise)" opacity="0.4" fill="{{COLOR}}"/></svg>`
43
+ },
44
+ {
45
+ id: 'geometric',
46
+ name: 'Geometric',
47
+ description: 'Abstract geometric shapes',
48
+ svgTemplate: `<svg width="80" height="80" xmlns="http://www.w3.org/2000/svg"><polygon points="40,10 70,40 40,70 10,40" fill="none" stroke="{{COLOR}}" stroke-width="1.5"/></svg>`
49
+ },
50
+ {
51
+ id: 'hexagons',
52
+ name: 'Hexagons',
53
+ description: 'Honeycomb pattern',
54
+ svgTemplate: `<svg width="56" height="100" xmlns="http://www.w3.org/2000/svg"><path d="M28 0 L56 16.5 L56 49.5 L28 66 L0 49.5 L0 16.5 Z" fill="none" stroke="{{COLOR}}" stroke-width="1"/></svg>`
55
+ }
56
+ ];
57
+ export function getBackgroundOverlay(id) {
58
+ if (!id)
59
+ return undefined;
60
+ return BACKGROUND_OVERLAYS.find(o => o.id === id);
61
+ }
62
+ //# sourceMappingURL=backgrounds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backgrounds.js","sourceRoot":"","sources":["../../src/constants/backgrounds.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,yBAAyB;QACtC,WAAW,EAAE,yHAAyH;KACvI;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,uBAAuB;QACpC,WAAW,EAAE,8JAA8J;KAC5K;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,wBAAwB;QACrC,WAAW,EAAE,mJAAmJ;KACjK;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,kKAAkK;KAChL;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,0BAA0B;QACvC,WAAW,EAAE,8IAA8I;KAC5J;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,2BAA2B;QACxC,WAAW,EAAE,qMAAqM;KACnN;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE,uRAAuR;KACrS;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,2BAA2B;QACxC,WAAW,EAAE,oKAAoK;KAClL;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,oLAAoL;KAClM;CACF,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,EAAiB;IACpD,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1B,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,CAAC"}
@@ -20,6 +20,10 @@ h1, h2 {
20
20
  margin: 10px 0 !important;
21
21
  }
22
22
 
23
+ .rtext-content a {
24
+ text-decoration: underline;
25
+ }
26
+
23
27
  /* Slide down animation for top tray */
24
28
  @keyframes slideDown {
25
29
  from {
@@ -0,0 +1,73 @@
1
+ import { BACKGROUND_OVERLAYS } from "../constants/backgrounds.js";
2
+ function hexToRgb(hex) {
3
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
4
+ return result ? {
5
+ r: parseInt(result[1], 16),
6
+ g: parseInt(result[2], 16),
7
+ b: parseInt(result[3], 16)
8
+ } : null;
9
+ }
10
+ function adjustColor(hex, amount) {
11
+ const rgb = hexToRgb(hex);
12
+ if (!rgb)
13
+ return hex;
14
+ const r = Math.max(0, Math.min(255, rgb.r + amount));
15
+ const g = Math.max(0, Math.min(255, rgb.g + amount));
16
+ const b = Math.max(0, Math.min(255, rgb.b + amount));
17
+ return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
18
+ }
19
+ // Check if color is dark to decide on gradient strategy
20
+ function isColorDark(hex) {
21
+ const rgb = hexToRgb(hex);
22
+ if (!rgb)
23
+ return false;
24
+ // Relative luminance
25
+ return (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255 < 0.5;
26
+ }
27
+ export function generateBackgrounds(design) {
28
+ // Only generate if explicitly requested via heroLayout/designStyle
29
+ const layout = design.heroLayout;
30
+ // Check for 'gradient-hero' or 'centered-simple' which uses overlay
31
+ if (layout !== 'gradient-hero' && layout !== 'centered-simple') {
32
+ return;
33
+ }
34
+ const baseColor = design.backgroundColor || '#ffffff';
35
+ const isDark = isColorDark(baseColor);
36
+ // Generate Gradient if missing and style is gradient-hero
37
+ if (layout === 'gradient-hero' && !design.backgroundGradient) {
38
+ // Shift end color slightly
39
+ // For dark theme: lighter end color? or darker?
40
+ // Docs: "Slightly shifted version of the base color (preserves contrast)"
41
+ // Docs: "Third Color: The accent color with low opacity for subtle glow effects"
42
+ const shiftAmount = isDark ? 20 : -20;
43
+ const endColor = adjustColor(baseColor, shiftAmount);
44
+ const accentColor = design.accentColor || '#516ab8';
45
+ // Randomly select gradient type
46
+ const rand = Math.random();
47
+ if (rand < 0.5) {
48
+ // Linear (50%)
49
+ // "Vertical direction, solid until 55%, then gradual transition"
50
+ // Angles: [180, 170, 190, 175, 185]
51
+ const angles = [180, 170, 190, 175, 185];
52
+ const angle = angles[Math.floor(Math.random() * angles.length)];
53
+ design.backgroundGradient = `linear-gradient(${angle}deg, ${baseColor} 0%, ${baseColor} 55%, ${endColor} 85%, ${accentColor}15 100%)`;
54
+ }
55
+ else if (rand < 0.75) {
56
+ // Radial (25%)
57
+ // "Ellipse at bottom right, #6366f120 0%, #1e1e38 30%, #1a1a2e 70%"
58
+ design.backgroundGradient = `radial-gradient(ellipse at bottom right, ${accentColor}20 0%, ${endColor} 30%, ${baseColor} 70%)`;
59
+ }
60
+ else {
61
+ // Multi-stop linear (25%)
62
+ // "Solid at top, gentle transition in lower half"
63
+ design.backgroundGradient = `linear-gradient(180deg, ${baseColor} 0%, ${baseColor} 50%, ${endColor} 80%, ${accentColor}12 100%)`;
64
+ }
65
+ }
66
+ // Generate Overlay if missing (for both gradient-hero and centered-simple)
67
+ if (!design.backgroundOverlay) {
68
+ // "Random selection from available patterns"
69
+ const randomOverlay = BACKGROUND_OVERLAYS[Math.floor(Math.random() * BACKGROUND_OVERLAYS.length)];
70
+ design.backgroundOverlay = randomOverlay.id;
71
+ }
72
+ }
73
+ //# sourceMappingURL=background-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-generator.js","sourceRoot":"","sources":["../../src/generators/background-generator.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,43 @@
1
1
  import { getDesign } from "../types.js";
2
+ import { getBackgroundOverlay } from "../constants/backgrounds.js";
2
3
  import fs from 'fs';
3
4
  import fsp from 'fs/promises';
4
5
  import path from 'path';
5
6
  function isUuidV4Like(s) {
6
7
  return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(s);
7
8
  }
9
+ // Helper to determine if a color is dark (luminance < 0.5)
10
+ function isColorDark(hexColor) {
11
+ if (!hexColor)
12
+ return false;
13
+ const hex = hexColor.replace('#', '');
14
+ // Handle shorthand hex like #fff
15
+ const fullHex = hex.length === 3
16
+ ? hex.split('').map(c => c + c).join('')
17
+ : hex;
18
+ const r = parseInt(fullHex.substring(0, 2), 16);
19
+ const g = parseInt(fullHex.substring(2, 4), 16);
20
+ const b = parseInt(fullHex.substring(4, 6), 16);
21
+ if (isNaN(r) || isNaN(g) || isNaN(b))
22
+ return false;
23
+ // Relative luminance formula
24
+ const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
25
+ return luminance < 0.5;
26
+ }
27
+ function getBackgroundOverlayCss(id, backgroundColor = '#ffffff') {
28
+ const overlay = getBackgroundOverlay(id || null);
29
+ if (!overlay)
30
+ return '';
31
+ // Determine if background is dark or light
32
+ const isDark = isColorDark(backgroundColor);
33
+ // Use contrasting color with low opacity
34
+ const patternColor = isDark
35
+ ? 'rgba(255,255,255,0.08)' // White for dark backgrounds
36
+ : 'rgba(0,0,0,0.06)'; // Black for light backgrounds
37
+ // Replace placeholder and encode as data URL
38
+ const svg = overlay.svgTemplate.replace(/\{\{COLOR\}\}/g, patternColor);
39
+ return `url("data:image/svg+xml,${encodeURIComponent(svg)}")`;
40
+ }
8
41
  export function writeFavicon(targetDir, favicon) {
9
42
  const publicDir = path.join(targetDir, 'public');
10
43
  // Ensure public directory exists
@@ -115,15 +148,41 @@ export async function updateGlobalCSS(targetDir, blueprint, viewStyles = []) {
115
148
  const fontImport = `@import url('https://fonts.googleapis.com/css2?family=${design.textFont || 'Roboto'}&family=${design.titleFont || 'Roboto'}&family=${design.logoFont || 'Roboto'}&display=swap');`;
116
149
  // Replace the content between the CLAUDE IMPORTS comments
117
150
  cssContent = cssContent.replace(/\/\* CLAUDE IMPORTS \*\/[\s\S]*?\/\* END CLAUDE IMPORTS \*\//, `/* CLAUDE IMPORTS */\n${fontImport}\n/* END CLAUDE IMPORTS */`);
151
+ // Calculate background styles
152
+ const overlayCss = getBackgroundOverlayCss(design.backgroundOverlay, design.backgroundColor);
153
+ const backgroundGradient = design.backgroundGradient ? `background: ${design.backgroundGradient};` : '';
118
154
  // Create the CSS content to insert
119
155
  const viewStylesContent = viewStyles.length > 0 ? '\n/* PER-VIEW STYLES */\n' + viewStyles.join('\n') + '\n/* END PER-VIEW STYLES */\n' : '';
120
156
  const cssToInsert = `
121
157
  body {
122
- background: ${design.backgroundColor || 'white'};
158
+ background: ${design.backgroundColor || 'white'};
159
+ ${backgroundGradient}
123
160
  color: ${design.textColor || 'black'};
124
161
  font-family: ${design.textFont || 'Roboto'}, sans-serif;
125
162
  font-size: ${textFontSizeValue};
163
+ min-height: 100vh;
164
+ position: relative;
165
+ }
166
+
167
+ ${overlayCss ? `
168
+ body::before {
169
+ content: '';
170
+ position: absolute;
171
+ top: 0;
172
+ left: 0;
173
+ right: 0;
174
+ bottom: 0;
175
+ background-image: ${overlayCss};
176
+ background-repeat: repeat;
177
+ pointer-events: none;
178
+ z-index: 0;
179
+ }
180
+
181
+ body > * {
182
+ position: relative;
183
+ z-index: 1;
126
184
  }
185
+ ` : ''}
127
186
 
128
187
  h1 {
129
188
  color: ${design.titleColor || 'inherit'};
@@ -1 +1 @@
1
- {"version":3,"file":"design.js","sourceRoot":"","sources":["../../src/generators/design.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"design.js","sourceRoot":"","sources":["../../src/generators/design.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -88,6 +88,9 @@ export function getDesign(blueprint) {
88
88
  textColor: blueprint.design.textColor ?? defaultDesign.textColor,
89
89
  accentColor: blueprint.design.accentColor ?? defaultDesign.accentColor,
90
90
  backgroundColor: blueprint.design.backgroundColor ?? defaultDesign.backgroundColor,
91
+ backgroundGradient: blueprint.design.backgroundGradient,
92
+ backgroundImage: blueprint.design.backgroundImage,
93
+ backgroundOverlay: blueprint.design.backgroundOverlay,
91
94
  accentTextColor: blueprint.design.accentTextColor ?? defaultDesign.accentTextColor,
92
95
  useGradient: blueprint.design.useGradient ?? defaultDesign.useGradient,
93
96
  gradientColor: blueprint.design.gradientColor ?? defaultDesign.gradientColor,
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sitepaige-mcp-server",
3
- "version": "1.2.5",
3
+ "version": "1.2.7",
4
4
  "type": "module",
5
5
  "description": "MCP server for generating web applications using SitePaige AI. Generate frontend (FREE/12 credits) then optionally add backend (50 credits)",
6
6
  "keywords": [
@@ -56,6 +56,7 @@
56
56
  "@babel/types": "^7.28.4",
57
57
  "@bragdoc/cli": "^1.3.1",
58
58
  "@modelcontextprotocol/sdk": "^1.17.5",
59
+ "lucide-react": "^0.554.0",
59
60
  "undici": "^6.19.8",
60
61
  "zod": "^3.23.8"
61
62
  },
@@ -580,6 +580,145 @@ function pageNameLookup(pages, pageId) {
580
580
  // This handles cases where the page ID is passed directly as the page name
581
581
  return pageId.toLowerCase().replace(/[^a-zA-Z0-9]/g, '_');
582
582
  }
583
+
584
+ /**
585
+ * Helper to convert text content to an array of JSX nodes (Text + Links)
586
+ * @param {string} text - The text to process
587
+ * @returns {Array} - Array of AST nodes
588
+ */
589
+ function createNodesFromText(text) {
590
+ if (!text) return [];
591
+
592
+ // Check for URLs
593
+ const urlRegex = /(https?:\/\/[^\s]+)/g;
594
+ if (!urlRegex.test(text)) {
595
+ return [t.jsxText(text)];
596
+ }
597
+
598
+ const parts = text.split(urlRegex);
599
+ const nodes = [];
600
+
601
+ parts.forEach(part => {
602
+ if (!part) return;
603
+
604
+ if (part.match(/^https?:\/\//)) {
605
+ // It's a URL
606
+ const link = t.jsxElement(
607
+ t.jsxOpeningElement(
608
+ t.jsxIdentifier('a'),
609
+ [
610
+ t.jsxAttribute(t.jsxIdentifier('href'), t.stringLiteral(part)),
611
+ t.jsxAttribute(t.jsxIdentifier('target'), t.stringLiteral('_blank')),
612
+ t.jsxAttribute(t.jsxIdentifier('rel'), t.stringLiteral('noopener noreferrer')),
613
+ ]
614
+ ),
615
+ t.jsxClosingElement(t.jsxIdentifier('a')),
616
+ [t.jsxText(part)]
617
+ );
618
+ nodes.push(link);
619
+ } else {
620
+ // Text
621
+ nodes.push(t.jsxText(part));
622
+ }
623
+ });
624
+
625
+ return nodes;
626
+ }
627
+
628
+ /**
629
+ * Converts window.processText calls to text or JSX with links
630
+ * @param {Object} path - The AST path
631
+ * @param {Object} dictionary - The text dictionary
632
+ */
633
+ function convertWindowProcessText(path, dictionary) {
634
+ // Check for window.processText
635
+ if (!path.node.callee || path.node.callee.type !== 'MemberExpression') return;
636
+
637
+ const callee = path.node.callee;
638
+ if (!callee.object || callee.object.name !== 'window' ||
639
+ !callee.property || callee.property.name !== 'processText') return;
640
+
641
+ const args = path.node.arguments;
642
+ if (args.length === 0) {
643
+ path.replaceWith(t.stringLiteral(""));
644
+ return;
645
+ }
646
+
647
+ // Handle template literals (remove them as per original logic)
648
+ if (args[0].type === 'TemplateLiteral') {
649
+ path.replaceWith(t.stringLiteral(""));
650
+ return;
651
+ }
652
+
653
+ // Get key
654
+ let key = "";
655
+ if (args[0].type === 'StringLiteral') {
656
+ key = args[0].value;
657
+ } else {
658
+ path.replaceWith(t.stringLiteral(""));
659
+ return;
660
+ }
661
+
662
+ // Get default text
663
+ let defaultText = "";
664
+ if (args.length > 1 && args[1].type === 'StringLiteral') {
665
+ defaultText = args[1].value;
666
+ // Restore https/http for logic
667
+ defaultText = defaultText.replace(/\[httpsstart\]/g, 'https://').replace(/\[httpstart\]/g, 'http://');
668
+ }
669
+
670
+ // Lookup
671
+ const lowercaseId = key.toLowerCase();
672
+ const textContent = dictionary[lowercaseId] || dictionary[key];
673
+
674
+ let finalText = textContent !== undefined ? textContent : defaultText;
675
+
676
+ if (!finalText) {
677
+ path.replaceWith(t.stringLiteral(""));
678
+ return;
679
+ }
680
+
681
+ // Check if we are in a prop where JSX is not allowed
682
+ if (path.parentPath.isJSXExpressionContainer() && path.parentPath.parentPath.isJSXAttribute()) {
683
+ // Don't convert to JSX in props, return string
684
+ path.replaceWith(t.stringLiteral(finalText));
685
+ return;
686
+ }
687
+
688
+ // CRITICAL FIX: Only convert to JSX links if we are in a valid JSX child position.
689
+ // If we are in an expression (assignment, function arg, return statement not in JSX),
690
+ // we MUST return the string, otherwise logic breaks.
691
+ // e.g. const url = window.processText(...) -> const url = <Fragment>...</Fragment> (BAD)
692
+
693
+ const isJsxChild = path.parentPath.isJSXElement() || path.parentPath.isJSXFragment() || path.parentPath.isJSXExpressionContainer();
694
+
695
+ // Special case: If inside JSXExpressionContainer, check if that container is a child of JSXElement
696
+ // path.parentPath.isJSXExpressionContainer() is true for both props and children.
697
+ // We already handled props above (parentPath.parentPath.isJSXAttribute).
698
+ // So if we are here and it is JSXExpressionContainer, it's likely a child expression { window.processText() }
699
+
700
+ // If NOT in JSX context (e.g. variable assignment, alert(), window.open()), return plain string.
701
+ if (!isJsxChild) {
702
+ path.replaceWith(t.stringLiteral(finalText));
703
+ return;
704
+ }
705
+
706
+ // Get nodes (Text + Links)
707
+ const nodes = createNodesFromText(finalText);
708
+
709
+ if (nodes.length === 1 && t.isJSXText(nodes[0])) {
710
+ path.replaceWith(t.stringLiteral(nodes[0].value));
711
+ return;
712
+ }
713
+
714
+ const fragment = t.jsxFragment(
715
+ t.jsxOpeningFragment(),
716
+ t.jsxClosingFragment(),
717
+ nodes
718
+ );
719
+
720
+ path.replaceWith(fragment);
721
+ }
583
722
  /**
584
723
  * Removes all comments from the code
585
724
  * @param {string} code - The source code with comments
@@ -616,43 +755,7 @@ function transpileCode(code, pages, dictionary = {}) {
616
755
  });
617
756
 
618
757
  // First handle template literals - these shouldn't be sent by frontend, so remove them entirely
619
- // Match window.processText with template literal first parameter and any optional second parameter
620
- code = code.replace(/window\.processText\(\s*`[^]*?`\s*(?:,\s*[^)]+)?\s*\)/g, function(match) {
621
- // Frontend shouldn't send template literals, return empty string
622
- return '""';
623
- });
624
-
625
- // Then handle static strings - window.processText calls with actual text content from dictionary
626
- // Handle both single parameter: window.processText("key")
627
- // and two parameter: window.processText("key", "default") formats
628
- // Updated regex to handle escaped quotes within strings
629
- code = code.replace(/window\.processText\(\s*(['"`])([^]*?)\1\s*(?:,\s*(['"`])([^]*?)\3)?\s*\)/g, function(match, quote1, dictionaryId, quote2, defaultText) {
630
- // Skip if this contains template literal syntax (shouldn't happen after first pass, but be safe)
631
- if (dictionaryId.includes('${')) {
632
- return match;
633
- }
634
-
635
- // Try lowercase version of the key first (system expects lowercase keys)
636
- const lowercaseId = dictionaryId.toLowerCase();
637
- const textContent = dictionary[lowercaseId] || dictionary[dictionaryId];
638
- let finalText;
639
-
640
- if (textContent !== undefined) {
641
- // Use dictionary value if found
642
- finalText = textContent;
643
- } else if (defaultText !== undefined) {
644
- // Use default text if dictionary key not found but default provided
645
- finalText = defaultText;
646
-
647
- } else {
648
- // No dictionary value and no default - remove the window.processText call entirely
649
- // Return empty string to remove it from the output
650
- return '""';
651
- }
652
-
653
- // Escape the text content for safe inclusion in JavaScript
654
- return JSON.stringify(finalText);
655
- });
758
+ // Logic moved to AST traversal in convertWindowProcessText
656
759
 
657
760
  // Replace window.fetchTest with standard fetch
658
761
  code = code.replace(/window\.fetchTest/g, "fetch");
@@ -678,6 +781,53 @@ function transpileCode(code, pages, dictionary = {}) {
678
781
  plugins: ['jsx', 'typescript'],
679
782
  });
680
783
 
784
+ // Pass 1: Process window.processText calls (convert to text or JSX with links)
785
+ traverse(ast, {
786
+ CallExpression(path) {
787
+ convertWindowProcessText(path, dictionary);
788
+ },
789
+ JSXText(path) {
790
+ // Handle window.processText appearing as text content (not in curly braces)
791
+ const text = path.node.value;
792
+ const regex = /window\.processText\(\s*(['"`])([^]*?)\1\s*(?:,\s*(['"`])([^]*?)\3)?\s*\)/g;
793
+
794
+ if (!regex.test(text)) return;
795
+
796
+ const nodes = [];
797
+ let lastIndex = 0;
798
+ regex.lastIndex = 0;
799
+
800
+ let match;
801
+ while ((match = regex.exec(text)) !== null) {
802
+ // Add text before match
803
+ if (match.index > lastIndex) {
804
+ nodes.push(t.jsxText(text.slice(lastIndex, match.index)));
805
+ }
806
+
807
+ const [fullMatch, quote1, dictionaryId, quote2, defaultText] = match;
808
+
809
+ const lowercaseId = dictionaryId.toLowerCase();
810
+ const textContent = dictionary[lowercaseId] || dictionary[dictionaryId];
811
+ let finalText = textContent !== undefined ? textContent : (defaultText || "");
812
+
813
+ // Restore https/http (in case defaultText had them)
814
+ finalText = finalText.replace(/\[httpsstart\]/g, 'https://').replace(/\[httpstart\]/g, 'http://');
815
+
816
+ // Convert finalText to nodes (Text + Links)
817
+ nodes.push(...createNodesFromText(finalText));
818
+
819
+ lastIndex = regex.lastIndex;
820
+ }
821
+
822
+ // Add remaining text
823
+ if (lastIndex < text.length) {
824
+ nodes.push(t.jsxText(text.slice(lastIndex)));
825
+ }
826
+
827
+ path.replaceWithMultiple(nodes);
828
+ }
829
+ });
830
+
681
831
  // Add React import if needed
682
832
  addReactImport(ast);
683
833