@linktr.ee/linkapp 0.0.42 → 0.0.43
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/dev-server/featured/main.tsx +24 -13
- package/dev-server/featured-carousel.html +54 -0
- package/dev-server/featured.html +54 -0
- package/dev-server/preview/Preview.tsx +238 -219
- package/dev-server/shared/theme-presets.ts +34 -1
- package/dev-server/sheet/main.tsx +22 -1
- package/dev-server/sheet.html +54 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +61 -12
- package/dist/commands/dev.js.map +1 -1
- package/package.json +1 -1
- package/runtime/index.html +3 -3
|
@@ -13,10 +13,15 @@ try {
|
|
|
13
13
|
// featured-carousel.tsx doesn't exist, that's ok
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
// Declare global window
|
|
16
|
+
// Declare global window properties for theme and font application
|
|
17
17
|
declare global {
|
|
18
18
|
interface Window {
|
|
19
|
-
__linkapp_applyTheme?: (variables: Record<string, string>) => void
|
|
19
|
+
__linkapp_applyTheme?: (variables: Record<string, string>) => void;
|
|
20
|
+
__linkapp_applyFont?: (fontData: {
|
|
21
|
+
fontFamily: string;
|
|
22
|
+
fontStyle?: string;
|
|
23
|
+
cssUrl?: string;
|
|
24
|
+
}) => void;
|
|
20
25
|
}
|
|
21
26
|
}
|
|
22
27
|
|
|
@@ -25,14 +30,20 @@ declare const __PREVIEW_PROPS__: Record<string, unknown>;
|
|
|
25
30
|
|
|
26
31
|
// Extract just the variables from THEME_PRESETS for theme lookups
|
|
27
32
|
const THEME_VARS = Object.fromEntries(
|
|
28
|
-
Object.entries(THEME_PRESETS).map(([key, { variables }]) => [key, variables])
|
|
33
|
+
Object.entries(THEME_PRESETS).map(([key, { variables }]) => [key, variables]),
|
|
29
34
|
);
|
|
30
35
|
|
|
31
36
|
// Get theme variables and groupLayoutOption from URL
|
|
32
37
|
const params = new URLSearchParams(window.location.search);
|
|
33
|
-
const groupLayoutOptionParam = params.get(
|
|
38
|
+
const groupLayoutOptionParam = params.get("groupLayoutOption");
|
|
34
39
|
const themeVariables = getThemeFromUrl(THEME_VARS);
|
|
35
40
|
|
|
41
|
+
// Get the selected theme for font application
|
|
42
|
+
const themeKey = params.get("theme") || "default";
|
|
43
|
+
const selectedTheme =
|
|
44
|
+
THEME_PRESETS[themeKey as keyof typeof THEME_PRESETS] ||
|
|
45
|
+
THEME_PRESETS.default;
|
|
46
|
+
|
|
36
47
|
// Merge with preview props and add groupLayoutOption
|
|
37
48
|
const previewProps = __PREVIEW_PROPS__ || {};
|
|
38
49
|
const mergedProps = mergeThemeProps(themeVariables, previewProps, {
|
|
@@ -44,21 +55,21 @@ if (themeVariables && window.__linkapp_applyTheme) {
|
|
|
44
55
|
window.__linkapp_applyTheme(themeVariables);
|
|
45
56
|
}
|
|
46
57
|
|
|
58
|
+
// Apply font on mount
|
|
59
|
+
if (selectedTheme.font && window.__linkapp_applyFont) {
|
|
60
|
+
window.__linkapp_applyFont(selectedTheme.font);
|
|
61
|
+
}
|
|
62
|
+
|
|
47
63
|
const rootElement = document.getElementById("root");
|
|
48
64
|
if (!rootElement) {
|
|
49
65
|
throw new Error("Root element not found");
|
|
50
66
|
}
|
|
51
67
|
|
|
52
68
|
// Select the appropriate component based on groupLayoutOption parameter
|
|
53
|
-
const LayoutComponent =
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
console.log('[Featured Dev Server] Rendering:', {
|
|
58
|
-
groupLayoutOption: groupLayoutOptionParam,
|
|
59
|
-
component: groupLayoutOptionParam === 'carousel' && FeaturedCarousel ? 'FeaturedCarousel' : 'Featured',
|
|
60
|
-
hasFeaturedCarousel: !!FeaturedCarousel,
|
|
61
|
-
});
|
|
69
|
+
const LayoutComponent =
|
|
70
|
+
groupLayoutOptionParam === "carousel" && FeaturedCarousel
|
|
71
|
+
? FeaturedCarousel
|
|
72
|
+
: Featured;
|
|
62
73
|
|
|
63
74
|
createRoot(rootElement).render(
|
|
64
75
|
<StrictMode>
|
|
@@ -47,6 +47,60 @@
|
|
|
47
47
|
|
|
48
48
|
// Export applyTheme to be used by main.tsx
|
|
49
49
|
window.__linkapp_applyTheme = applyTheme
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Apply font to iframe by injecting font CSS or external stylesheet
|
|
53
|
+
* Called once on mount from main.tsx
|
|
54
|
+
* @param {Object} fontData - Font configuration from parent
|
|
55
|
+
* @param {string} fontData.fontFamily - Font family name (e.g., "Inter", "Karla")
|
|
56
|
+
* @param {string} [fontData.cssUrl] - External CSS URL to load (e.g., Google Fonts, TypeKit)
|
|
57
|
+
* @param {string} [fontData.fontStyle] - Inline @font-face CSS definitions
|
|
58
|
+
*/
|
|
59
|
+
function applyFont(fontData) {
|
|
60
|
+
console.log('[applyFont] Called with:', fontData)
|
|
61
|
+
|
|
62
|
+
if (!fontData || typeof fontData !== 'object') {
|
|
63
|
+
console.warn('[applyFont] Invalid fontData')
|
|
64
|
+
return
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Remove existing font style/link if present to avoid duplicates
|
|
68
|
+
const existingFontElement = document.getElementById('linktree-font')
|
|
69
|
+
if (existingFontElement) {
|
|
70
|
+
console.log('[applyFont] Removing existing font element')
|
|
71
|
+
existingFontElement.remove()
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Option 1: External CSS URL (e.g., Google Fonts, TypeKit, custom CDN)
|
|
75
|
+
if (fontData.cssUrl) {
|
|
76
|
+
console.log('[applyFont] Loading external CSS:', fontData.cssUrl)
|
|
77
|
+
const link = document.createElement('link')
|
|
78
|
+
link.id = 'linktree-font'
|
|
79
|
+
link.rel = 'stylesheet'
|
|
80
|
+
link.href = fontData.cssUrl
|
|
81
|
+
link.crossOrigin = 'anonymous'
|
|
82
|
+
link.onload = () => console.log('[applyFont] CSS loaded successfully')
|
|
83
|
+
link.onerror = () => console.error('[applyFont] CSS failed to load')
|
|
84
|
+
document.head.appendChild(link)
|
|
85
|
+
}
|
|
86
|
+
// Option 2: Inline @font-face definitions
|
|
87
|
+
else if (fontData.fontStyle) {
|
|
88
|
+
console.log('[applyFont] Using inline @font-face')
|
|
89
|
+
const style = document.createElement('style')
|
|
90
|
+
style.id = 'linktree-font'
|
|
91
|
+
style.textContent = fontData.fontStyle
|
|
92
|
+
document.head.appendChild(style)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Apply font-family to body element so all content inherits it
|
|
96
|
+
if (fontData.fontFamily) {
|
|
97
|
+
console.log('[applyFont] Setting body font-family to:', fontData.fontFamily)
|
|
98
|
+
document.body.style.fontFamily = fontData.fontFamily
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Export applyFont to be used by main.tsx
|
|
103
|
+
window.__linkapp_applyFont = applyFont
|
|
50
104
|
</script>
|
|
51
105
|
</head>
|
|
52
106
|
<body>
|
package/dev-server/featured.html
CHANGED
|
@@ -47,6 +47,60 @@
|
|
|
47
47
|
|
|
48
48
|
// Export applyTheme to be used by main.tsx
|
|
49
49
|
window.__linkapp_applyTheme = applyTheme
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Apply font to iframe by injecting font CSS or external stylesheet
|
|
53
|
+
* Called once on mount from main.tsx
|
|
54
|
+
* @param {Object} fontData - Font configuration from parent
|
|
55
|
+
* @param {string} fontData.fontFamily - Font family name (e.g., "Inter", "Karla")
|
|
56
|
+
* @param {string} [fontData.cssUrl] - External CSS URL to load (e.g., Google Fonts, TypeKit)
|
|
57
|
+
* @param {string} [fontData.fontStyle] - Inline @font-face CSS definitions
|
|
58
|
+
*/
|
|
59
|
+
function applyFont(fontData) {
|
|
60
|
+
console.log('[applyFont] Called with:', fontData)
|
|
61
|
+
|
|
62
|
+
if (!fontData || typeof fontData !== 'object') {
|
|
63
|
+
console.warn('[applyFont] Invalid fontData')
|
|
64
|
+
return
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Remove existing font style/link if present to avoid duplicates
|
|
68
|
+
const existingFontElement = document.getElementById('linktree-font')
|
|
69
|
+
if (existingFontElement) {
|
|
70
|
+
console.log('[applyFont] Removing existing font element')
|
|
71
|
+
existingFontElement.remove()
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Option 1: External CSS URL (e.g., Google Fonts, TypeKit, custom CDN)
|
|
75
|
+
if (fontData.cssUrl) {
|
|
76
|
+
console.log('[applyFont] Loading external CSS:', fontData.cssUrl)
|
|
77
|
+
const link = document.createElement('link')
|
|
78
|
+
link.id = 'linktree-font'
|
|
79
|
+
link.rel = 'stylesheet'
|
|
80
|
+
link.href = fontData.cssUrl
|
|
81
|
+
link.crossOrigin = 'anonymous'
|
|
82
|
+
link.onload = () => console.log('[applyFont] CSS loaded successfully')
|
|
83
|
+
link.onerror = () => console.error('[applyFont] CSS failed to load')
|
|
84
|
+
document.head.appendChild(link)
|
|
85
|
+
}
|
|
86
|
+
// Option 2: Inline @font-face definitions
|
|
87
|
+
else if (fontData.fontStyle) {
|
|
88
|
+
console.log('[applyFont] Using inline @font-face')
|
|
89
|
+
const style = document.createElement('style')
|
|
90
|
+
style.id = 'linktree-font'
|
|
91
|
+
style.textContent = fontData.fontStyle
|
|
92
|
+
document.head.appendChild(style)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Apply font-family to body element so all content inherits it
|
|
96
|
+
if (fontData.fontFamily) {
|
|
97
|
+
console.log('[applyFont] Setting body font-family to:', fontData.fontFamily)
|
|
98
|
+
document.body.style.fontFamily = fontData.fontFamily
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Export applyFont to be used by main.tsx
|
|
103
|
+
window.__linkapp_applyFont = applyFont
|
|
50
104
|
</script>
|
|
51
105
|
</head>
|
|
52
106
|
<body>
|
|
@@ -35,13 +35,26 @@ function Chin({ title }: { title?: string }) {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export default function Preview() {
|
|
38
|
-
//
|
|
38
|
+
// These are injected by the dev server
|
|
39
|
+
// @ts-expect-error - injected by dev server
|
|
40
|
+
const hasFeatured = typeof __HAS_FEATURED__ !== "undefined" && __HAS_FEATURED__;
|
|
41
|
+
// @ts-expect-error - injected by dev server
|
|
42
|
+
const hasCarousel =
|
|
43
|
+
typeof __HAS_CAROUSEL__ !== "undefined" && __HAS_CAROUSEL__;
|
|
44
|
+
|
|
45
|
+
// Initialize state from localStorage
|
|
39
46
|
const [selectedTab, setSelectedTab] = useState<
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
47
|
+
"sheet" | "featured" | "carousel" | "settings"
|
|
48
|
+
>(() => {
|
|
49
|
+
const saved = localStorage.getItem("linkapp-preview-tab");
|
|
50
|
+
if (saved === "featured" && !hasFeatured) {
|
|
51
|
+
return "sheet";
|
|
52
|
+
}
|
|
53
|
+
if (saved === "carousel" && !hasCarousel) {
|
|
54
|
+
return "sheet";
|
|
55
|
+
}
|
|
56
|
+
return (saved as "sheet" | "featured" | "carousel" | "settings") || "sheet";
|
|
57
|
+
});
|
|
45
58
|
const [selectedTheme, setSelectedTheme] = useState<
|
|
46
59
|
keyof typeof THEME_PRESETS
|
|
47
60
|
>(() => {
|
|
@@ -143,11 +156,13 @@ export default function Preview() {
|
|
|
143
156
|
style={{ zIndex: 1000000 }}
|
|
144
157
|
>
|
|
145
158
|
<TabsList>
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
159
|
+
<TabsTrigger value="sheet">Sheet</TabsTrigger>
|
|
160
|
+
{hasFeatured && <TabsTrigger value="featured">Featured</TabsTrigger>}
|
|
161
|
+
{hasCarousel && (
|
|
162
|
+
<TabsTrigger value="carousel">Carousel</TabsTrigger>
|
|
163
|
+
)}
|
|
164
|
+
<TabsTrigger value="settings">Settings</TabsTrigger>
|
|
165
|
+
</TabsList>
|
|
151
166
|
|
|
152
167
|
{/* Theme Switcher */}
|
|
153
168
|
<div className="flex items-center gap-2">
|
|
@@ -225,212 +240,216 @@ export default function Preview() {
|
|
|
225
240
|
></path>
|
|
226
241
|
</svg>
|
|
227
242
|
</button>
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
243
|
+
</div>
|
|
244
|
+
</DialogHeader>
|
|
245
|
+
|
|
246
|
+
<div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
|
|
247
|
+
<div className="h-full overflow-y-auto overflow-x-hidden">
|
|
248
|
+
<IframeResizer
|
|
249
|
+
key={`sheet-${selectedTheme}`}
|
|
250
|
+
id={sheetIframeId}
|
|
251
|
+
src={`/sheet?theme=${selectedTheme}`}
|
|
252
|
+
style={{
|
|
253
|
+
height: "0px",
|
|
254
|
+
width: "1px",
|
|
255
|
+
minWidth: "100%",
|
|
256
|
+
border: 0,
|
|
257
|
+
}}
|
|
258
|
+
checkOrigin={false}
|
|
259
|
+
onResized={handleResized}
|
|
260
|
+
heightCalculationMethod="max"
|
|
261
|
+
/>
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
</DialogContent>
|
|
265
|
+
</Dialog>
|
|
266
|
+
</TabsContent>
|
|
267
|
+
|
|
268
|
+
{hasFeatured && (
|
|
269
|
+
<TabsContent
|
|
270
|
+
value="featured"
|
|
271
|
+
className="m-0 flex justify-center p-8"
|
|
272
|
+
>
|
|
273
|
+
<div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-gray-100">
|
|
274
|
+
<div className="w-full max-w-[524px]">
|
|
275
|
+
{chinPosition === "above" && <Chin title={chinTitle} />}
|
|
276
|
+
|
|
277
|
+
<div
|
|
278
|
+
className={cn(
|
|
279
|
+
"bg-linktree-button-bg hover:bg-linktree-button-bg-hover border-linktree-button-border text-linktree-button-text rounded-linktree-button shadow-linktree-button overflow-hidden",
|
|
280
|
+
isOverlay && "relative",
|
|
281
|
+
)}
|
|
282
|
+
style={
|
|
283
|
+
!__SETTINGS_CONFIG__?.featured_head_allow_unlocked_aspect_ratio
|
|
284
|
+
? { aspectRatio: "16 / 9" }
|
|
285
|
+
: undefined
|
|
286
|
+
}
|
|
287
|
+
>
|
|
288
|
+
{chinPosition === "overlay_above" && (
|
|
289
|
+
<div className="absolute top-0 left-0 right-0 z-10">
|
|
290
|
+
<Chin title={chinTitle} />
|
|
291
|
+
</div>
|
|
292
|
+
)}
|
|
293
|
+
|
|
294
|
+
<IframeResizer
|
|
295
|
+
key={`featured-${selectedTheme}`}
|
|
296
|
+
id={featuredIframeId}
|
|
297
|
+
src={`/featured?theme=${selectedTheme}`}
|
|
298
|
+
style={{
|
|
299
|
+
height: "0px",
|
|
300
|
+
width: "1px",
|
|
301
|
+
minWidth: "100%",
|
|
302
|
+
border: 0,
|
|
303
|
+
}}
|
|
304
|
+
checkOrigin={false}
|
|
305
|
+
onResized={handleResized}
|
|
306
|
+
heightCalculationMethod="max"
|
|
307
|
+
/>
|
|
308
|
+
|
|
309
|
+
{chinPosition === "overlayBelow" && (
|
|
310
|
+
<div className="absolute bottom-0 left-0 right-0 z-10">
|
|
311
|
+
<Chin title={chinTitle} />
|
|
312
|
+
</div>
|
|
313
|
+
)}
|
|
314
|
+
</div>
|
|
315
|
+
|
|
316
|
+
{chinPosition === "below" && <Chin title={chinTitle} />}
|
|
317
|
+
</div>
|
|
318
|
+
</div>
|
|
319
|
+
</TabsContent>
|
|
320
|
+
)}
|
|
321
|
+
|
|
322
|
+
{hasCarousel && (
|
|
323
|
+
<TabsContent
|
|
324
|
+
value="carousel"
|
|
325
|
+
className="m-0 flex justify-center p-8"
|
|
326
|
+
>
|
|
327
|
+
<div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-gray-100">
|
|
328
|
+
<div className="w-full max-w-[524px]">
|
|
329
|
+
{chinPosition === "above" && <Chin title={chinTitle} />}
|
|
330
|
+
|
|
331
|
+
<div
|
|
332
|
+
className={cn(
|
|
333
|
+
"bg-linktree-button-bg hover:bg-linktree-button-bg-hover border-linktree-button-border text-linktree-button-text rounded-linktree-button shadow-linktree-button overflow-hidden",
|
|
334
|
+
isOverlay && "relative",
|
|
335
|
+
)}
|
|
336
|
+
style={
|
|
337
|
+
!__SETTINGS_CONFIG__?.featured_head_allow_unlocked_aspect_ratio
|
|
338
|
+
? { aspectRatio: "11 / 8" }
|
|
339
|
+
: undefined
|
|
340
|
+
}
|
|
341
|
+
>
|
|
342
|
+
{chinPosition === "overlay_above" && (
|
|
343
|
+
<div className="absolute top-0 left-0 right-0 z-10">
|
|
344
|
+
<Chin title={chinTitle} />
|
|
345
|
+
</div>
|
|
346
|
+
)}
|
|
347
|
+
|
|
348
|
+
<IframeResizer
|
|
349
|
+
key={`carousel-${selectedTheme}`}
|
|
350
|
+
id={carouselIframeId}
|
|
351
|
+
src={`/featured-carousel?theme=${selectedTheme}`}
|
|
352
|
+
style={{
|
|
353
|
+
height: "0px",
|
|
354
|
+
width: "1px",
|
|
355
|
+
minWidth: "100%",
|
|
356
|
+
border: 0,
|
|
357
|
+
}}
|
|
358
|
+
checkOrigin={false}
|
|
359
|
+
onResized={handleResized}
|
|
360
|
+
heightCalculationMethod="max"
|
|
361
|
+
/>
|
|
362
|
+
|
|
363
|
+
{chinPosition === "overlayBelow" && (
|
|
364
|
+
<div className="absolute bottom-0 left-0 right-0 z-10">
|
|
365
|
+
<Chin title={chinTitle} />
|
|
366
|
+
</div>
|
|
367
|
+
)}
|
|
368
|
+
</div>
|
|
369
|
+
|
|
370
|
+
{chinPosition === "below" && <Chin title={chinTitle} />}
|
|
371
|
+
</div>
|
|
372
|
+
</div>
|
|
373
|
+
</TabsContent>
|
|
374
|
+
)}
|
|
375
|
+
|
|
376
|
+
<TabsContent value="settings" className="m-0">
|
|
377
|
+
<SettingsPreview settings={__SETTINGS_CONFIG__} />
|
|
378
|
+
</TabsContent>
|
|
379
|
+
</div>
|
|
380
|
+
</Tabs>
|
|
381
|
+
|
|
382
|
+
{/* Popup Dialog for EXPAND_LINK_APP message */}
|
|
383
|
+
<Dialog open={isPopupOpen} onOpenChange={setIsPopupOpen} modal={false}>
|
|
384
|
+
<DialogContent
|
|
385
|
+
className="h-[calc(100dvh-2rem)] max-w-[608px] md:min-h-[25vh] md:h-[80%] md:max-h-[900px] overflow-auto"
|
|
386
|
+
showCloseButton={false}
|
|
387
|
+
>
|
|
388
|
+
<DialogHeader className="sticky top-0 bg-white px-4">
|
|
389
|
+
<div className="grid h-16 grid-cols-[32px_auto_32px] items-center gap-4">
|
|
390
|
+
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
391
|
+
<svg
|
|
392
|
+
width="16"
|
|
393
|
+
height="16"
|
|
394
|
+
viewBox="0 0 16 16"
|
|
395
|
+
fill="none"
|
|
396
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
397
|
+
className=" "
|
|
398
|
+
role="img"
|
|
399
|
+
aria-hidden="true"
|
|
400
|
+
>
|
|
401
|
+
<path
|
|
402
|
+
fill="currentColor"
|
|
403
|
+
d="m10.65 3.85.35.36.7-.71-.35-.35-3-3h-.7l-3 3-.36.35.71.7.35-.35L7.5 1.71V10h1V1.7l2.15 2.15ZM1 5.5l.5-.5H4v1H2v9h12V6h-2V5h2.5l.5.5v10l-.5.5h-13l-.5-.5v-10Z"
|
|
404
|
+
></path>
|
|
405
|
+
</svg>
|
|
406
|
+
</button>
|
|
407
|
+
|
|
408
|
+
<DialogTitle className="self-center truncate py-3 text-center">
|
|
409
|
+
Sheet
|
|
410
|
+
</DialogTitle>
|
|
411
|
+
|
|
412
|
+
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
413
|
+
<svg
|
|
414
|
+
width="16"
|
|
415
|
+
height="16"
|
|
416
|
+
viewBox="0 0 16 16"
|
|
417
|
+
fill="none"
|
|
418
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
419
|
+
className=" "
|
|
420
|
+
role="img"
|
|
421
|
+
aria-hidden="true"
|
|
422
|
+
>
|
|
423
|
+
<path
|
|
424
|
+
fill="currentColor"
|
|
425
|
+
d="m13.63 3.12.37-.38-.74-.74-.38.37.75.75ZM2.37 12.89l-.37.37.74.74.38-.37-.75-.75Zm.75-10.52L2.74 2 2 2.74l.37.38.75-.75Zm9.76 11.26.38.37.74-.74-.37-.38-.75.75Zm0-11.26L2.38 12.9l.74.74 10.5-10.51-.74-.75Zm-10.5.75 10.5 10.5.75-.73L3.12 2.37l-.75.75Z"
|
|
426
|
+
></path>
|
|
427
|
+
</svg>
|
|
428
|
+
</button>
|
|
429
|
+
</div>
|
|
430
|
+
</DialogHeader>
|
|
431
|
+
|
|
432
|
+
<div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
|
|
433
|
+
<div className="h-full overflow-y-auto overflow-x-hidden">
|
|
434
|
+
<IframeResizer
|
|
435
|
+
key={`popup-${selectedTheme}`}
|
|
436
|
+
id={popupIframeId}
|
|
437
|
+
src={`/sheet?theme=${selectedTheme}`}
|
|
438
|
+
style={{
|
|
439
|
+
height: "0px",
|
|
440
|
+
width: "1px",
|
|
441
|
+
minWidth: "100%",
|
|
442
|
+
border: 0,
|
|
443
|
+
}}
|
|
444
|
+
checkOrigin={false}
|
|
445
|
+
onResized={handleResized}
|
|
446
|
+
heightCalculationMethod="max"
|
|
447
|
+
/>
|
|
448
|
+
</div>
|
|
449
|
+
</div>
|
|
450
|
+
</DialogContent>
|
|
451
|
+
</Dialog>
|
|
452
|
+
</div>
|
|
453
|
+
</>
|
|
454
|
+
);
|
|
270
455
|
}
|
|
271
|
-
>
|
|
272
|
-
{chinPosition === "overlay_above" && (
|
|
273
|
-
<div className="absolute top-0 left-0 right-0 z-10">
|
|
274
|
-
<Chin title={chinTitle} />
|
|
275
|
-
</div>
|
|
276
|
-
)}
|
|
277
|
-
|
|
278
|
-
<IframeResizer
|
|
279
|
-
key={`featured-${selectedTheme}`}
|
|
280
|
-
id={featuredIframeId}
|
|
281
|
-
src={`/featured?theme=${selectedTheme}`}
|
|
282
|
-
style={{
|
|
283
|
-
height: "0px",
|
|
284
|
-
width: "1px",
|
|
285
|
-
minWidth: "100%",
|
|
286
|
-
border: 0,
|
|
287
|
-
}}
|
|
288
|
-
checkOrigin={false}
|
|
289
|
-
onResized={handleResized}
|
|
290
|
-
heightCalculationMethod="max"
|
|
291
|
-
/>
|
|
292
|
-
|
|
293
|
-
{chinPosition === "overlayBelow" && (
|
|
294
|
-
<div className="absolute bottom-0 left-0 right-0 z-10">
|
|
295
|
-
<Chin title={chinTitle} />
|
|
296
|
-
</div>
|
|
297
|
-
)}
|
|
298
|
-
</div>
|
|
299
|
-
|
|
300
|
-
{chinPosition === "below" && <Chin title={chinTitle} />}
|
|
301
|
-
</div>
|
|
302
|
-
</div>
|
|
303
|
-
</TabsContent>
|
|
304
|
-
|
|
305
|
-
<TabsContent
|
|
306
|
-
value="carousel"
|
|
307
|
-
className="m-0 flex justify-center p-8"
|
|
308
|
-
>
|
|
309
|
-
<div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-gray-100">
|
|
310
|
-
<div className="w-full max-w-[524px]">
|
|
311
|
-
{chinPosition === "above" && <Chin title={chinTitle} />}
|
|
312
|
-
|
|
313
|
-
<div
|
|
314
|
-
className={cn(
|
|
315
|
-
"bg-linktree-button-bg hover:bg-linktree-button-bg-hover border-linktree-button-border text-linktree-button-text rounded-linktree-button shadow-linktree-button overflow-hidden",
|
|
316
|
-
isOverlay && "relative",
|
|
317
|
-
)}
|
|
318
|
-
style={
|
|
319
|
-
!__SETTINGS_CONFIG__?.featured_head_allow_unlocked_aspect_ratio
|
|
320
|
-
? { aspectRatio: "11 / 8" }
|
|
321
|
-
: undefined
|
|
322
|
-
}
|
|
323
|
-
>
|
|
324
|
-
{chinPosition === "overlay_above" && (
|
|
325
|
-
<div className="absolute top-0 left-0 right-0 z-10">
|
|
326
|
-
<Chin title={chinTitle} />
|
|
327
|
-
</div>
|
|
328
|
-
)}
|
|
329
|
-
|
|
330
|
-
<IframeResizer
|
|
331
|
-
key={`carousel-${selectedTheme}`}
|
|
332
|
-
id={carouselIframeId}
|
|
333
|
-
src={`/featured-carousel?theme=${selectedTheme}`}
|
|
334
|
-
style={{
|
|
335
|
-
height: "0px",
|
|
336
|
-
width: "1px",
|
|
337
|
-
minWidth: "100%",
|
|
338
|
-
border: 0,
|
|
339
|
-
}}
|
|
340
|
-
checkOrigin={false}
|
|
341
|
-
onResized={handleResized}
|
|
342
|
-
heightCalculationMethod="max"
|
|
343
|
-
/>
|
|
344
|
-
|
|
345
|
-
{chinPosition === "overlayBelow" && (
|
|
346
|
-
<div className="absolute bottom-0 left-0 right-0 z-10">
|
|
347
|
-
<Chin title={chinTitle} />
|
|
348
|
-
</div>
|
|
349
|
-
)}
|
|
350
|
-
</div>
|
|
351
|
-
|
|
352
|
-
{chinPosition === "below" && <Chin title={chinTitle} />}
|
|
353
|
-
</div>
|
|
354
|
-
</div>
|
|
355
|
-
</TabsContent>
|
|
356
|
-
|
|
357
|
-
<TabsContent value="settings" className="m-0">
|
|
358
|
-
<SettingsPreview settings={__SETTINGS_CONFIG__} />
|
|
359
|
-
</TabsContent>
|
|
360
|
-
</div>
|
|
361
|
-
</Tabs>
|
|
362
|
-
|
|
363
|
-
{/* Popup Dialog for EXPAND_LINK_APP message */}
|
|
364
|
-
<Dialog open={isPopupOpen} onOpenChange={setIsPopupOpen} modal={false}>
|
|
365
|
-
<DialogContent
|
|
366
|
-
className="h-[calc(100dvh-2rem)] max-w-[608px] md:min-h-[25vh] md:h-[80%] md:max-h-[900px] overflow-auto"
|
|
367
|
-
showCloseButton={false}
|
|
368
|
-
>
|
|
369
|
-
<DialogHeader className="sticky top-0 bg-white px-4">
|
|
370
|
-
<div className="grid h-16 grid-cols-[32px_auto_32px] items-center gap-4">
|
|
371
|
-
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
372
|
-
<svg
|
|
373
|
-
width="16"
|
|
374
|
-
height="16"
|
|
375
|
-
viewBox="0 0 16 16"
|
|
376
|
-
fill="none"
|
|
377
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
378
|
-
className=" "
|
|
379
|
-
role="img"
|
|
380
|
-
aria-hidden="true"
|
|
381
|
-
>
|
|
382
|
-
<path
|
|
383
|
-
fill="currentColor"
|
|
384
|
-
d="m10.65 3.85.35.36.7-.71-.35-.35-3-3h-.7l-3 3-.36.35.71.7.35-.35L7.5 1.71V10h1V1.7l2.15 2.15ZM1 5.5l.5-.5H4v1H2v9h12V6h-2V5h2.5l.5.5v10l-.5.5h-13l-.5-.5v-10Z"
|
|
385
|
-
></path>
|
|
386
|
-
</svg>
|
|
387
|
-
</button>
|
|
388
|
-
|
|
389
|
-
<DialogTitle className="self-center truncate py-3 text-center">
|
|
390
|
-
Sheet
|
|
391
|
-
</DialogTitle>
|
|
392
|
-
|
|
393
|
-
<button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
|
|
394
|
-
<svg
|
|
395
|
-
width="16"
|
|
396
|
-
height="16"
|
|
397
|
-
viewBox="0 0 16 16"
|
|
398
|
-
fill="none"
|
|
399
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
400
|
-
className=" "
|
|
401
|
-
role="img"
|
|
402
|
-
aria-hidden="true"
|
|
403
|
-
>
|
|
404
|
-
<path
|
|
405
|
-
fill="currentColor"
|
|
406
|
-
d="m13.63 3.12.37-.38-.74-.74-.38.37.75.75ZM2.37 12.89l-.37.37.74.74.38-.37-.75-.75Zm.75-10.52L2.74 2 2 2.74l.37.38.75-.75Zm9.76 11.26.38.37.74-.74-.37-.38-.75.75Zm0-11.26L2.38 12.9l.74.74 10.5-10.51-.74-.75Zm-10.5.75 10.5 10.5.75-.73L3.12 2.37l-.75.75Z"
|
|
407
|
-
></path>
|
|
408
|
-
</svg>
|
|
409
|
-
</button>
|
|
410
|
-
</div>
|
|
411
|
-
</DialogHeader>
|
|
412
|
-
|
|
413
|
-
<div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
|
|
414
|
-
<div className="h-full overflow-y-auto overflow-x-hidden">
|
|
415
|
-
<IframeResizer
|
|
416
|
-
key={`popup-${selectedTheme}`}
|
|
417
|
-
id={popupIframeId}
|
|
418
|
-
src={`/sheet?theme=${selectedTheme}`}
|
|
419
|
-
style={{
|
|
420
|
-
height: "0px",
|
|
421
|
-
width: "1px",
|
|
422
|
-
minWidth: "100%",
|
|
423
|
-
border: 0,
|
|
424
|
-
}}
|
|
425
|
-
checkOrigin={false}
|
|
426
|
-
onResized={handleResized}
|
|
427
|
-
heightCalculationMethod="max"
|
|
428
|
-
/>
|
|
429
|
-
</div>
|
|
430
|
-
</div>
|
|
431
|
-
</DialogContent>
|
|
432
|
-
</Dialog>
|
|
433
|
-
</div>
|
|
434
|
-
</>
|
|
435
|
-
);
|
|
436
|
-
}
|
|
@@ -2,7 +2,20 @@
|
|
|
2
2
|
* Theme presets for testing LinkApps in dev mode
|
|
3
3
|
* Based on actual CSS variables from live Linktree profiles
|
|
4
4
|
*/
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
export type FontData = {
|
|
7
|
+
fontFamily: string
|
|
8
|
+
cssUrl?: string
|
|
9
|
+
fontStyle?: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type ThemePreset = {
|
|
13
|
+
name: string
|
|
14
|
+
variables: Record<string, string>
|
|
15
|
+
font?: FontData
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const THEME_PRESETS: Record<string, ThemePreset> = {
|
|
6
19
|
default: {
|
|
7
20
|
name: "Default (Light)",
|
|
8
21
|
variables: {
|
|
@@ -19,6 +32,10 @@ export const THEME_PRESETS = {
|
|
|
19
32
|
"--button-style-inner-radius": "min(8px, max(4px, calc(8px - 8px)))",
|
|
20
33
|
"--button-style-skeleton-color": "rgba(0, 0, 0, 0.05)",
|
|
21
34
|
},
|
|
35
|
+
font: {
|
|
36
|
+
fontFamily: "Inter, sans-serif",
|
|
37
|
+
cssUrl: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",
|
|
38
|
+
},
|
|
22
39
|
},
|
|
23
40
|
dark: {
|
|
24
41
|
name: "Dark",
|
|
@@ -36,6 +53,10 @@ export const THEME_PRESETS = {
|
|
|
36
53
|
"--button-style-inner-radius": "min(8px, max(4px, calc(8px - 8px)))",
|
|
37
54
|
"--button-style-skeleton-color": "rgba(255, 255, 255, 0.1)",
|
|
38
55
|
},
|
|
56
|
+
font: {
|
|
57
|
+
fontFamily: "Roboto, sans-serif",
|
|
58
|
+
cssUrl: "https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap",
|
|
59
|
+
},
|
|
39
60
|
},
|
|
40
61
|
purple: {
|
|
41
62
|
name: "Purple",
|
|
@@ -53,6 +74,10 @@ export const THEME_PRESETS = {
|
|
|
53
74
|
"--button-style-inner-radius": "min(16px, max(4px, calc(16px - 8px)))",
|
|
54
75
|
"--button-style-skeleton-color": "rgba(124, 58, 237, 0.1)",
|
|
55
76
|
},
|
|
77
|
+
font: {
|
|
78
|
+
fontFamily: "Poppins, sans-serif",
|
|
79
|
+
cssUrl: "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap",
|
|
80
|
+
},
|
|
56
81
|
},
|
|
57
82
|
outline: {
|
|
58
83
|
name: "Outline Style",
|
|
@@ -69,6 +94,10 @@ export const THEME_PRESETS = {
|
|
|
69
94
|
"--button-style-inner-radius": "min(24px, max(4px, calc(24px - 8px)))",
|
|
70
95
|
"--button-style-skeleton-color": "rgba(0, 0, 0, 0.05)",
|
|
71
96
|
},
|
|
97
|
+
font: {
|
|
98
|
+
fontFamily: "Montserrat, sans-serif",
|
|
99
|
+
cssUrl: "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap",
|
|
100
|
+
},
|
|
72
101
|
},
|
|
73
102
|
rounded: {
|
|
74
103
|
name: "Fully Rounded",
|
|
@@ -86,5 +115,9 @@ export const THEME_PRESETS = {
|
|
|
86
115
|
"--button-style-inner-radius": "28px",
|
|
87
116
|
"--button-style-skeleton-color": "rgba(5, 150, 105, 0.1)",
|
|
88
117
|
},
|
|
118
|
+
font: {
|
|
119
|
+
fontFamily: "Nunito, sans-serif",
|
|
120
|
+
cssUrl: "https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700&display=swap",
|
|
121
|
+
},
|
|
89
122
|
},
|
|
90
123
|
};
|
|
@@ -5,10 +5,15 @@ import "@/app/globals.css";
|
|
|
5
5
|
import { THEME_PRESETS } from "../shared/theme-presets";
|
|
6
6
|
import { getThemeFromUrl, mergeThemeProps } from "../shared/theme-utils";
|
|
7
7
|
|
|
8
|
-
// Declare global window
|
|
8
|
+
// Declare global window properties for theme and font application
|
|
9
9
|
declare global {
|
|
10
10
|
interface Window {
|
|
11
11
|
__linkapp_applyTheme?: (variables: Record<string, string>) => void
|
|
12
|
+
__linkapp_applyFont?: (fontData: {
|
|
13
|
+
fontFamily: string
|
|
14
|
+
fontStyle?: string
|
|
15
|
+
cssUrl?: string
|
|
16
|
+
}) => void
|
|
12
17
|
}
|
|
13
18
|
}
|
|
14
19
|
|
|
@@ -23,6 +28,14 @@ const THEME_VARS = Object.fromEntries(
|
|
|
23
28
|
// Get theme variables from URL
|
|
24
29
|
const themeVariables = getThemeFromUrl(THEME_VARS);
|
|
25
30
|
|
|
31
|
+
// Get the selected theme key from URL or default to "default"
|
|
32
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
33
|
+
const themeKey = urlParams.get("theme") || "default";
|
|
34
|
+
const selectedTheme = THEME_PRESETS[themeKey as keyof typeof THEME_PRESETS] || THEME_PRESETS.default;
|
|
35
|
+
|
|
36
|
+
console.log('[Sheet Dev] Theme:', themeKey, 'Font data:', selectedTheme.font);
|
|
37
|
+
console.log('[Sheet Dev] applyFont function exists?', typeof window.__linkapp_applyFont);
|
|
38
|
+
|
|
26
39
|
// Merge with preview props
|
|
27
40
|
const previewProps = __PREVIEW_PROPS__ || {};
|
|
28
41
|
const mergedProps = mergeThemeProps(themeVariables, previewProps);
|
|
@@ -32,6 +45,14 @@ if (themeVariables && window.__linkapp_applyTheme) {
|
|
|
32
45
|
window.__linkapp_applyTheme(themeVariables);
|
|
33
46
|
}
|
|
34
47
|
|
|
48
|
+
// Apply font on mount
|
|
49
|
+
if (selectedTheme.font && window.__linkapp_applyFont) {
|
|
50
|
+
console.log('[Sheet Dev] Applying font:', selectedTheme.font);
|
|
51
|
+
window.__linkapp_applyFont(selectedTheme.font);
|
|
52
|
+
} else {
|
|
53
|
+
console.warn('[Sheet Dev] Font not applied - font data:', selectedTheme.font, 'function:', window.__linkapp_applyFont);
|
|
54
|
+
}
|
|
55
|
+
|
|
35
56
|
const rootElement = document.getElementById("root");
|
|
36
57
|
if (!rootElement) {
|
|
37
58
|
throw new Error("Root element not found");
|
package/dev-server/sheet.html
CHANGED
|
@@ -47,6 +47,60 @@
|
|
|
47
47
|
|
|
48
48
|
// Export applyTheme to be used by main.tsx
|
|
49
49
|
window.__linkapp_applyTheme = applyTheme
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Apply font to iframe by injecting font CSS or external stylesheet
|
|
53
|
+
* Called once on mount from main.tsx
|
|
54
|
+
* @param {Object} fontData - Font configuration from parent
|
|
55
|
+
* @param {string} fontData.fontFamily - Font family name (e.g., "Inter", "Karla")
|
|
56
|
+
* @param {string} [fontData.cssUrl] - External CSS URL to load (e.g., Google Fonts, TypeKit)
|
|
57
|
+
* @param {string} [fontData.fontStyle] - Inline @font-face CSS definitions
|
|
58
|
+
*/
|
|
59
|
+
function applyFont(fontData) {
|
|
60
|
+
console.log('[applyFont] Called with:', fontData)
|
|
61
|
+
|
|
62
|
+
if (!fontData || typeof fontData !== 'object') {
|
|
63
|
+
console.warn('[applyFont] Invalid fontData')
|
|
64
|
+
return
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Remove existing font style/link if present to avoid duplicates
|
|
68
|
+
const existingFontElement = document.getElementById('linktree-font')
|
|
69
|
+
if (existingFontElement) {
|
|
70
|
+
console.log('[applyFont] Removing existing font element')
|
|
71
|
+
existingFontElement.remove()
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Option 1: External CSS URL (e.g., Google Fonts, TypeKit, custom CDN)
|
|
75
|
+
if (fontData.cssUrl) {
|
|
76
|
+
console.log('[applyFont] Loading external CSS:', fontData.cssUrl)
|
|
77
|
+
const link = document.createElement('link')
|
|
78
|
+
link.id = 'linktree-font'
|
|
79
|
+
link.rel = 'stylesheet'
|
|
80
|
+
link.href = fontData.cssUrl
|
|
81
|
+
link.crossOrigin = 'anonymous'
|
|
82
|
+
link.onload = () => console.log('[applyFont] CSS loaded successfully')
|
|
83
|
+
link.onerror = () => console.error('[applyFont] CSS failed to load')
|
|
84
|
+
document.head.appendChild(link)
|
|
85
|
+
}
|
|
86
|
+
// Option 2: Inline @font-face definitions
|
|
87
|
+
else if (fontData.fontStyle) {
|
|
88
|
+
console.log('[applyFont] Using inline @font-face')
|
|
89
|
+
const style = document.createElement('style')
|
|
90
|
+
style.id = 'linktree-font'
|
|
91
|
+
style.textContent = fontData.fontStyle
|
|
92
|
+
document.head.appendChild(style)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Apply font-family to body element so all content inherits it
|
|
96
|
+
if (fontData.fontFamily) {
|
|
97
|
+
console.log('[applyFont] Setting body font-family to:', fontData.fontFamily)
|
|
98
|
+
document.body.style.fontFamily = fontData.fontFamily
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Export applyFont to be used by main.tsx
|
|
103
|
+
window.__linkapp_applyFont = applyFont
|
|
50
104
|
</script>
|
|
51
105
|
</head>
|
|
52
106
|
<body>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAmBA,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAmBA,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAqYD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBAkWnD"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -152,10 +152,15 @@ import "@/app/globals.css";
|
|
|
152
152
|
import { THEME_PRESETS } from "${themePresetsPath}";
|
|
153
153
|
import { getThemeFromUrl, mergeThemeProps } from "${themeUtilsPath}";
|
|
154
154
|
|
|
155
|
-
// Declare global window
|
|
155
|
+
// Declare global window properties for theme and font application
|
|
156
156
|
declare global {
|
|
157
157
|
interface Window {
|
|
158
158
|
__linkapp_applyTheme?: (variables: Record<string, string>) => void
|
|
159
|
+
__linkapp_applyFont?: (fontData: {
|
|
160
|
+
fontFamily: string
|
|
161
|
+
fontStyle?: string
|
|
162
|
+
cssUrl?: string
|
|
163
|
+
}) => void
|
|
159
164
|
}
|
|
160
165
|
}
|
|
161
166
|
|
|
@@ -170,6 +175,14 @@ const THEME_VARS = Object.fromEntries(
|
|
|
170
175
|
// Get theme variables from URL (defaults to 'default' theme)
|
|
171
176
|
const themeVariables = getThemeFromUrl(THEME_VARS) || THEME_PRESETS.default.variables;
|
|
172
177
|
|
|
178
|
+
// Get the selected theme key from URL or default to "default"
|
|
179
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
180
|
+
const themeKey = urlParams.get("theme") || "default";
|
|
181
|
+
const selectedTheme = THEME_PRESETS[themeKey as keyof typeof THEME_PRESETS] || THEME_PRESETS.default;
|
|
182
|
+
|
|
183
|
+
console.log('[Sheet Dev] Theme:', themeKey, 'Font data:', selectedTheme.font);
|
|
184
|
+
console.log('[Sheet Dev] applyFont function exists?', typeof window.__linkapp_applyFont);
|
|
185
|
+
|
|
173
186
|
// Merge with preview props
|
|
174
187
|
const previewProps = __PREVIEW_PROPS__ || {};
|
|
175
188
|
const mergedProps = mergeThemeProps(themeVariables, previewProps);
|
|
@@ -179,6 +192,14 @@ if (window.__linkapp_applyTheme) {
|
|
|
179
192
|
window.__linkapp_applyTheme(themeVariables);
|
|
180
193
|
}
|
|
181
194
|
|
|
195
|
+
// Apply font on mount
|
|
196
|
+
if (selectedTheme.font && window.__linkapp_applyFont) {
|
|
197
|
+
console.log('[Sheet Dev] Applying font:', selectedTheme.font);
|
|
198
|
+
window.__linkapp_applyFont(selectedTheme.font);
|
|
199
|
+
} else {
|
|
200
|
+
console.warn('[Sheet Dev] Font not applied - font data:', selectedTheme.font, 'function:', window.__linkapp_applyFont);
|
|
201
|
+
}
|
|
202
|
+
|
|
182
203
|
const rootElement = document.getElementById("root");
|
|
183
204
|
if (!rootElement) {
|
|
184
205
|
throw new Error("Root element not found");
|
|
@@ -283,10 +304,15 @@ import "@/app/globals.css";
|
|
|
283
304
|
import { THEME_PRESETS } from "${themePresetsPath}";
|
|
284
305
|
import { getThemeFromUrl, mergeThemeProps } from "${themeUtilsPath}";
|
|
285
306
|
|
|
286
|
-
// Declare global window
|
|
307
|
+
// Declare global window properties for theme and font application
|
|
287
308
|
declare global {
|
|
288
309
|
interface Window {
|
|
289
310
|
__linkapp_applyTheme?: (variables: Record<string, string>) => void
|
|
311
|
+
__linkapp_applyFont?: (fontData: {
|
|
312
|
+
fontFamily: string
|
|
313
|
+
fontStyle?: string
|
|
314
|
+
cssUrl?: string
|
|
315
|
+
}) => void
|
|
290
316
|
}
|
|
291
317
|
}
|
|
292
318
|
|
|
@@ -303,6 +329,13 @@ const params = new URLSearchParams(window.location.search);
|
|
|
303
329
|
const groupLayoutOptionParam = params.get('groupLayoutOption');
|
|
304
330
|
const themeVariables = getThemeFromUrl(THEME_VARS) || THEME_PRESETS.default.variables;
|
|
305
331
|
|
|
332
|
+
// Get the selected theme for font application
|
|
333
|
+
const themeKey = params.get("theme") || "default";
|
|
334
|
+
const selectedTheme = THEME_PRESETS[themeKey as keyof typeof THEME_PRESETS] || THEME_PRESETS.default;
|
|
335
|
+
|
|
336
|
+
console.log('[Featured Dev] Theme:', themeKey, 'Font data:', selectedTheme.font);
|
|
337
|
+
console.log('[Featured Dev] applyFont function exists?', typeof window.__linkapp_applyFont);
|
|
338
|
+
|
|
306
339
|
// Merge with preview props and add groupLayoutOption
|
|
307
340
|
const previewProps = __PREVIEW_PROPS__ || {};
|
|
308
341
|
const mergedProps = mergeThemeProps(themeVariables, previewProps, {
|
|
@@ -314,6 +347,14 @@ if (window.__linkapp_applyTheme) {
|
|
|
314
347
|
window.__linkapp_applyTheme(themeVariables);
|
|
315
348
|
}
|
|
316
349
|
|
|
350
|
+
// Apply font on mount
|
|
351
|
+
if (selectedTheme.font && window.__linkapp_applyFont) {
|
|
352
|
+
console.log('[Featured Dev] Applying font:', selectedTheme.font);
|
|
353
|
+
window.__linkapp_applyFont(selectedTheme.font);
|
|
354
|
+
} else {
|
|
355
|
+
console.warn('[Featured Dev] Font not applied - font data:', selectedTheme.font, 'function:', window.__linkapp_applyFont);
|
|
356
|
+
}
|
|
357
|
+
|
|
317
358
|
const rootElement = document.getElementById("root");
|
|
318
359
|
if (!rootElement) {
|
|
319
360
|
throw new Error("Root element not found");
|
|
@@ -351,20 +392,24 @@ export async function devCommand(options) {
|
|
|
351
392
|
const devServerPath = resolve(__dirname, '../../dev-server');
|
|
352
393
|
// Detect available layouts for dynamic entry generation
|
|
353
394
|
const layoutDetection = detectLayouts(userProjectPath);
|
|
395
|
+
const hasFeatured = layoutDetection.layouts.some(l => l.name === 'featured');
|
|
354
396
|
const hasFeaturedCarousel = layoutDetection.layouts.some(l => l.name === 'featured-carousel');
|
|
355
397
|
// Generate dynamic entry points in .linkapp directory
|
|
356
|
-
const linkappDir = join(userProjectPath,
|
|
398
|
+
const linkappDir = join(userProjectPath, ".linkapp");
|
|
357
399
|
if (!existsSync(linkappDir)) {
|
|
358
400
|
mkdirSync(linkappDir, { recursive: true });
|
|
359
401
|
}
|
|
360
|
-
const sheetEntryPath = join(linkappDir,
|
|
361
|
-
const featuredEntryPath = join(linkappDir,
|
|
362
|
-
const featuredCarouselEntryPath = join(linkappDir,
|
|
363
|
-
writeFileSync(sheetEntryPath, generateSheetEntryPoint(devServerPath),
|
|
364
|
-
|
|
402
|
+
const sheetEntryPath = join(linkappDir, "dev-sheet-main.tsx");
|
|
403
|
+
const featuredEntryPath = join(linkappDir, "dev-featured-main.tsx");
|
|
404
|
+
const featuredCarouselEntryPath = join(linkappDir, "dev-featured-carousel-main.tsx");
|
|
405
|
+
writeFileSync(sheetEntryPath, generateSheetEntryPoint(devServerPath), "utf-8");
|
|
406
|
+
// Only generate featured entry if the layout exists
|
|
407
|
+
if (hasFeatured) {
|
|
408
|
+
writeFileSync(featuredEntryPath, generateFeaturedEntryPoint(devServerPath, hasFeaturedCarousel), "utf-8");
|
|
409
|
+
}
|
|
365
410
|
// Only generate featured-carousel entry if the layout exists
|
|
366
411
|
if (hasFeaturedCarousel) {
|
|
367
|
-
writeFileSync(featuredCarouselEntryPath, generateFeaturedCarouselEntryPoint(devServerPath),
|
|
412
|
+
writeFileSync(featuredCarouselEntryPath, generateFeaturedCarouselEntryPoint(devServerPath), "utf-8");
|
|
368
413
|
}
|
|
369
414
|
// Helper to load config (called on initial start and on config changes)
|
|
370
415
|
const loadProjectConfig = () => {
|
|
@@ -465,14 +510,18 @@ export async function devCommand(options) {
|
|
|
465
510
|
],
|
|
466
511
|
source: {
|
|
467
512
|
entry: {
|
|
468
|
-
index: resolve(devServerPath,
|
|
513
|
+
index: resolve(devServerPath, "preview/main.tsx"),
|
|
469
514
|
sheet: sheetEntryPath,
|
|
470
|
-
featured: featuredEntryPath,
|
|
471
|
-
...(hasFeaturedCarousel
|
|
515
|
+
...(hasFeatured ? { featured: featuredEntryPath } : {}),
|
|
516
|
+
...(hasFeaturedCarousel
|
|
517
|
+
? { "featured-carousel": featuredCarouselEntryPath }
|
|
518
|
+
: {}),
|
|
472
519
|
},
|
|
473
520
|
define: {
|
|
474
521
|
__PREVIEW_PROPS__: JSON.stringify(previewProps),
|
|
475
522
|
__SETTINGS_CONFIG__: JSON.stringify(settingsConfig),
|
|
523
|
+
__HAS_FEATURED__: JSON.stringify(hasFeatured),
|
|
524
|
+
__HAS_CAROUSEL__: JSON.stringify(hasFeaturedCarousel),
|
|
476
525
|
},
|
|
477
526
|
},
|
|
478
527
|
resolve: {
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/runtime/index.html
CHANGED
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
* @param {Object} fontData - Font configuration from parent
|
|
70
70
|
* @param {string} fontData.fontFamily - Font family name (e.g., "Inter", "Karla")
|
|
71
71
|
* @param {string} [fontData.cssUrl] - External CSS URL to load (e.g., Google Fonts, TypeKit)
|
|
72
|
-
* @param {string} [fontData.
|
|
72
|
+
* @param {string} [fontData.fontStyle] - Inline @font-face CSS definitions
|
|
73
73
|
*/
|
|
74
74
|
function applyFont(fontData) {
|
|
75
75
|
if (!fontData || typeof fontData !== 'object') {
|
|
@@ -92,10 +92,10 @@
|
|
|
92
92
|
document.head.appendChild(link)
|
|
93
93
|
}
|
|
94
94
|
// Option 2: Inline @font-face definitions
|
|
95
|
-
else if (fontData.
|
|
95
|
+
else if (fontData.fontStyle) {
|
|
96
96
|
const style = document.createElement('style')
|
|
97
97
|
style.id = 'linktree-font'
|
|
98
|
-
style.textContent = fontData.
|
|
98
|
+
style.textContent = fontData.fontStyle
|
|
99
99
|
document.head.appendChild(style)
|
|
100
100
|
}
|
|
101
101
|
|