@linktr.ee/linkapp 0.0.21 → 0.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dev-server/classic/main.tsx +313 -29
  2. package/dev-server/classic.html +21 -35
  3. package/dev-server/components/SettingsPreview.tsx +330 -0
  4. package/dev-server/components/ui/dialog.tsx +6 -3
  5. package/dev-server/featured/main.tsx +313 -29
  6. package/dev-server/featured.html +21 -35
  7. package/dev-server/index.html +8 -1
  8. package/dev-server/lib/utils.ts +6 -0
  9. package/dev-server/package-lock.json +245 -287
  10. package/dev-server/package.json +5 -1
  11. package/dev-server/postcss.config.mjs +5 -0
  12. package/dev-server/preview/Preview.tsx +95 -69
  13. package/dev-server/preview/preview.css +20 -35
  14. package/dev-server/public/apple-touch-icon.png +0 -0
  15. package/dev-server/public/favicon-96x96.png +0 -0
  16. package/dev-server/public/favicon.ico +0 -0
  17. package/dev-server/public/favicon.svg +6 -0
  18. package/dev-server/public/site.webmanifest +21 -0
  19. package/dev-server/public/web-app-manifest-192x192.png +0 -0
  20. package/dev-server/public/web-app-manifest-512x512.png +0 -0
  21. package/dev-server/vite-env.d.ts +8 -0
  22. package/dev-server/vite.config.ts +5 -0
  23. package/dist/commands/deploy.d.ts.map +1 -1
  24. package/dist/commands/deploy.js +19 -17
  25. package/dist/commands/deploy.js.map +1 -1
  26. package/dist/commands/dev.d.ts.map +1 -1
  27. package/dist/commands/dev.js +110 -2
  28. package/dist/commands/dev.js.map +1 -1
  29. package/dist/commands/test-url-match-rules.js +1 -1
  30. package/dist/commands/test-url-match-rules.js.map +1 -1
  31. package/dist/components/index.d.ts +0 -1
  32. package/dist/components/index.d.ts.map +1 -1
  33. package/dist/components/index.js +2 -1
  34. package/dist/components/index.js.map +1 -1
  35. package/dist/lib/auth/device-flow.d.ts +1 -6
  36. package/dist/lib/auth/device-flow.d.ts.map +1 -1
  37. package/dist/lib/auth/device-flow.js +3 -9
  38. package/dist/lib/auth/device-flow.js.map +1 -1
  39. package/dist/lib/auth/token-storage.d.ts +0 -5
  40. package/dist/lib/auth/token-storage.d.ts.map +1 -1
  41. package/dist/lib/auth/token-storage.js +16 -14
  42. package/dist/lib/auth/token-storage.js.map +1 -1
  43. package/dist/lib/deploy/generate-manifest-files.js +1 -1
  44. package/dist/lib/deploy/generate-manifest-files.js.map +1 -1
  45. package/dist/lib/deploy/pack-project.js +1 -1
  46. package/dist/lib/deploy/pack-project.js.map +1 -1
  47. package/dist/lib/deploy/test-url-match-rules.d.ts +2 -1
  48. package/dist/lib/deploy/test-url-match-rules.d.ts.map +1 -1
  49. package/dist/lib/deploy/test-url-match-rules.js +1 -1
  50. package/dist/lib/deploy/test-url-match-rules.js.map +1 -1
  51. package/dist/lib/deploy/upload.d.ts.map +1 -1
  52. package/dist/lib/deploy/upload.js +7 -3
  53. package/dist/lib/deploy/upload.js.map +1 -1
  54. package/dist/lib/utils/setup-runtime.d.ts.map +1 -1
  55. package/dist/lib/utils/setup-runtime.js +29 -2
  56. package/dist/lib/utils/setup-runtime.js.map +1 -1
  57. package/dist/lib/vite/config-factory.d.ts.map +1 -1
  58. package/dist/lib/vite/config-factory.js +3 -2
  59. package/dist/lib/vite/config-factory.js.map +1 -1
  60. package/dist/schema/config.schema.d.ts +104 -32
  61. package/dist/schema/config.schema.d.ts.map +1 -1
  62. package/dist/schema/config.schema.js +27 -17
  63. package/dist/schema/config.schema.js.map +1 -1
  64. package/dist/types.d.ts +6 -57
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/types.js.map +1 -1
  67. package/package.json +1 -2
  68. package/runtime/index.html +19 -36
@@ -8,19 +8,23 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "@radix-ui/react-dialog": "^1.1.15",
11
+ "@radix-ui/react-portal": "^1.1.4",
11
12
  "@radix-ui/react-tabs": "^1.1.7",
13
+ "@tailwindcss/vite": "^4.1.14",
12
14
  "class-variance-authority": "^0.7.1",
13
15
  "clsx": "^2.1.1",
16
+ "iframe-resizer-react": "^1.1.0",
14
17
  "lucide-react": "^0.545.0",
15
18
  "react": "^19.1.0",
16
19
  "react-dom": "^19.1.0",
17
20
  "tailwind-merge": "^3.3.1"
18
21
  },
19
22
  "devDependencies": {
20
- "@tailwindcss/vite": "^4.1.14",
23
+ "@tailwindcss/postcss": "^4.1.14",
21
24
  "@types/react": "^19.2.2",
22
25
  "@types/react-dom": "^19",
23
26
  "@vitejs/plugin-react": "^4.3.4",
27
+ "postcss": "^8.5.6",
24
28
  "tailwindcss": "^4",
25
29
  "tw-animate-css": "^1.4.0",
26
30
  "typescript": "^5",
@@ -0,0 +1,5 @@
1
+ export default {
2
+ plugins: {
3
+ '@tailwindcss/postcss': {},
4
+ },
5
+ }
@@ -1,5 +1,6 @@
1
1
  import { Portal } from "@radix-ui/react-portal";
2
- import { useCallback, useEffect, useRef, useState } from "react";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
+ import IframeResizer, { IFrameComponent } from "iframe-resizer-react";
3
4
  import {
4
5
  Dialog,
5
6
  DialogContent,
@@ -12,7 +13,8 @@ import {
12
13
  TabsList,
13
14
  TabsTrigger,
14
15
  } from "../components/ui/tabs";
15
- import { cn } from "../lib/utils";
16
+ import { cn, renderCssVariables } from "../lib/utils";
17
+ import { SettingsPreview } from "../components/SettingsPreview";
16
18
 
17
19
  // Theme presets for testing
18
20
  // Based on actual CSS variables from live Linktree profiles
@@ -276,13 +278,13 @@ const THEME_PRESETS = {
276
278
  "--button-style-shadow": "none",
277
279
  "--button-style-shadow-color": "#000000",
278
280
  "--button-style-contrast-color": "#d1fae5",
279
- "--button-style-radius": "9999px",
280
- "--button-style-inner-radius": "9999px",
281
+ "--button-style-radius": "28px",
282
+ "--button-style-inner-radius": "28px",
281
283
  "--button-style-skeleton-color": "rgba(5, 150, 105, 0.1)",
282
284
  "--link-gap": "14px",
283
285
  "--link-inner-padding": "7px",
284
286
  "--link-preview-thumbnail-width": "160px",
285
- "--linkRadius": "9999px",
287
+ "--linkRadius": "28px",
286
288
  "--profile-container-desktop-width": "580px",
287
289
  "--profileBackground": "#ecfdf5",
288
290
  "--background-contrast-color": "#1f2937",
@@ -328,73 +330,68 @@ const THEME_PRESETS = {
328
330
  },
329
331
  };
330
332
 
331
- export default function Preview() {
332
- const [selectedTab, setSelectedTab] = useState<"classic" | "featured">(
333
- "classic",
334
- );
335
- const [selectedTheme, setSelectedTheme] =
336
- useState<keyof typeof THEME_PRESETS>("default");
337
- const classicIframeRef = useRef<HTMLIFrameElement>(null);
338
- const featuredIframeRef = useRef<HTMLIFrameElement>(null);
333
+ let iframeCount = 0;
339
334
 
340
- // Send theme update to iframe
341
- const sendThemeUpdate = useCallback(
342
- (
343
- iframe: HTMLIFrameElement | null,
344
- themeName: keyof typeof THEME_PRESETS,
345
- ) => {
346
- if (!iframe || !iframe.contentWindow) return;
335
+ export default function Preview() {
336
+ // Initialize state from localStorage
337
+ const [selectedTab, setSelectedTab] = useState<"classic" | "featured" | "settings">(() => {
338
+ const saved = localStorage.getItem("linkapp-preview-tab");
339
+ return (saved as "classic" | "featured" | "settings") || "classic";
340
+ });
341
+ const [selectedTheme, setSelectedTheme] = useState<keyof typeof THEME_PRESETS>(() => {
342
+ const saved = localStorage.getItem("linkapp-preview-theme");
343
+ return (saved as keyof typeof THEME_PRESETS) || "default";
344
+ });
347
345
 
348
- const theme = THEME_PRESETS[themeName];
349
- const message = {
350
- type: "THEME_UPDATE",
351
- payload: {
352
- name: themeName,
353
- variables: theme.variables,
354
- },
355
- };
346
+ // Generate unique IDs for iframes
347
+ const classicIframeId = useMemo(() => `preview-iframe-classic-${iframeCount++}`, []);
348
+ const featuredIframeId = useMemo(() => `preview-iframe-featured-${iframeCount++}`, []);
356
349
 
357
- iframe.contentWindow.postMessage(message, "*");
358
- },
359
- [],
360
- );
361
-
362
- // Send theme update when theme changes or iframes load
350
+ // Save selected tab to localStorage
363
351
  useEffect(() => {
364
- const classicIframe = classicIframeRef.current;
365
- const featuredIframe = featuredIframeRef.current;
352
+ localStorage.setItem("linkapp-preview-tab", selectedTab);
353
+ }, [selectedTab]);
366
354
 
367
- const handleClassicLoad = () =>
368
- sendThemeUpdate(classicIframe, selectedTheme);
369
- const handleFeaturedLoad = () =>
370
- sendThemeUpdate(featuredIframe, selectedTheme);
355
+ // Save selected theme to localStorage
356
+ useEffect(() => {
357
+ localStorage.setItem("linkapp-preview-theme", selectedTheme);
358
+ }, [selectedTheme]);
371
359
 
372
- // Send to already loaded iframes
373
- sendThemeUpdate(classicIframe, selectedTheme);
374
- sendThemeUpdate(featuredIframe, selectedTheme);
360
+ // Handle iframe resize events
361
+ const handleResized = useCallback(
362
+ (ev: { iframe: IFrameComponent; height: number; width: number; type: string }): void => {
363
+ // IframeResizer automatically handles height adjustments
364
+ // This callback is mainly for debugging or additional logic if needed
365
+ if (!ev.height) {
366
+ console.warn('Preview iframe reported zero height');
367
+ }
368
+ },
369
+ []
370
+ );
375
371
 
376
- // Listen for iframe load events
377
- classicIframe?.addEventListener("load", handleClassicLoad);
378
- featuredIframe?.addEventListener("load", handleFeaturedLoad);
379
372
 
380
- return () => {
381
- classicIframe?.removeEventListener("load", handleClassicLoad);
382
- featuredIframe?.removeEventListener("load", handleFeaturedLoad);
383
- };
384
- }, [selectedTheme, sendThemeUpdate]);
373
+ const renderedCssVariables = useMemo(() => {
374
+ const themeVariables = THEME_PRESETS[selectedTheme] || THEME_PRESETS.default
375
+ return renderCssVariables(themeVariables.variables);
376
+ }, [selectedTheme])
385
377
 
386
378
  return (
379
+ <>
380
+ <style>{`:root {
381
+ ${renderedCssVariables}
382
+ }`}</style>
383
+
387
384
  <div
388
385
  className={cn("min-h-screen", {
389
386
  "bg-black/50": selectedTab === "classic",
390
- "bg-gray-200": selectedTab === "featured",
387
+ "bg-linktree-frame": selectedTab === "featured",
391
388
  })}
392
389
  id="preview"
393
390
  >
394
391
  <Tabs
395
392
  value={selectedTab}
396
393
  onValueChange={(value) =>
397
- setSelectedTab(value as "classic" | "featured")
394
+ setSelectedTab(value as "classic" | "featured" | "settings")
398
395
  }
399
396
  >
400
397
  <Portal>
@@ -405,6 +402,7 @@ export default function Preview() {
405
402
  <TabsList>
406
403
  <TabsTrigger value="classic">Classic</TabsTrigger>
407
404
  <TabsTrigger value="featured">Featured</TabsTrigger>
405
+ <TabsTrigger value="settings">Settings</TabsTrigger>
408
406
  </TabsList>
409
407
 
410
408
  {/* Theme Switcher */}
@@ -436,20 +434,37 @@ export default function Preview() {
436
434
  {/* Classic Modal - Always Open */}
437
435
  <Dialog open={true} modal={false}>
438
436
  <DialogContent
439
- className="max-w-[512px] max-h-[calc(100%-64px)] overflow-auto"
437
+ className="h-[calc(100dvh-2rem)] max-w-[608px] md:min-h-[25vh] md:h-[80%] md:max-h-[900px] overflow-auto"
440
438
  showCloseButton={false}
441
439
  >
442
440
  <DialogHeader className="sticky top-0 bg-white px-4">
443
- <DialogTitle>Classic Layout Preview</DialogTitle>
441
+ <div className="grid h-[64px] grid-cols-[32px_auto_32px] items-center gap-4">
442
+ <button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
443
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" className=" " role="img" aria-hidden="true"><path fill="currentColor" 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"></path></svg>
444
+ </button>
445
+
446
+ <DialogTitle className="self-center truncate py-3 text-center">
447
+ Classic
448
+ </DialogTitle>
449
+
450
+ <button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
451
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" className=" " role="img" aria-hidden="true"><path fill="currentColor" 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"></path></svg>
452
+ </button>
453
+ </div>
444
454
  </DialogHeader>
445
455
 
446
- <div className="mt-4">
447
- <iframe
448
- ref={classicIframeRef}
449
- src="/classic"
450
- className="w-full h-[600px] border-0 rounded-lg"
451
- title="Classic Layout Preview"
452
- />
456
+ <div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
457
+ <div className="h-full overflow-y-auto overflow-x-hidden">
458
+ <IframeResizer
459
+ key={`classic-${selectedTheme}`}
460
+ id={classicIframeId}
461
+ src={`/classic?theme=${selectedTheme}`}
462
+ style={{ height: '0px', width: '1px', minWidth: '100%', border: 0, borderRadius: '0.5rem' }}
463
+ checkOrigin={false}
464
+ onResized={handleResized}
465
+ heightCalculationMethod="max"
466
+ />
467
+ </div>
453
468
  </div>
454
469
  </DialogContent>
455
470
  </Dialog>
@@ -457,19 +472,30 @@ export default function Preview() {
457
472
 
458
473
  <TabsContent value="featured" className="m-0 flex justify-center p-8">
459
474
  {/* Featured Iframe - Max Width 524px */}
460
- <div className="w-full max-w-[580px] shadow-xl flex flex-col rounded-3xl px-[28px] py-7 items-center bg-gray-100">
475
+ <div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-linktree-profile-bg">
476
+
461
477
  <div className="w-full max-w-[524px]">
462
- <iframe
463
- ref={featuredIframeRef}
464
- src="/featured"
465
- className="w-full border-0 rounded-lg"
466
- title="Featured Layout Preview"
467
- />
478
+ <div className="bg-linktree-button-bg hover:bg-linktree-button-bg-hover border-linktree-button-border text-linktree-button-text rounded-linktree-button shadow-linktree-button">
479
+ <IframeResizer
480
+ key={`featured-${selectedTheme}`}
481
+ id={featuredIframeId}
482
+ src={`/featured?theme=${selectedTheme}`}
483
+ style={{ height: '0px', width: '1px', minWidth: '100%', border: 0, borderRadius: '0.5rem' }}
484
+ checkOrigin={false}
485
+ onResized={handleResized}
486
+ heightCalculationMethod="max"
487
+ />
488
+ </div>
468
489
  </div>
469
490
  </div>
470
491
  </TabsContent>
492
+
493
+ <TabsContent value="settings" className="m-0">
494
+ <SettingsPreview settings={__SETTINGS_CONFIG__} />
495
+ </TabsContent>
471
496
  </div>
472
497
  </Tabs>
473
498
  </div>
499
+ </>
474
500
  );
475
501
  }
@@ -1,8 +1,6 @@
1
1
  @import "tailwindcss";
2
2
  @import "tw-animate-css";
3
3
 
4
- @custom-variant dark (&:is(.dark *));
5
-
6
4
  @theme inline {
7
5
  --color-background: var(--background);
8
6
  --color-foreground: var(--foreground);
@@ -41,6 +39,26 @@
41
39
  --radius-md: calc(var(--radius) - 2px);
42
40
  --radius-lg: var(--radius);
43
41
  --radius-xl: calc(var(--radius) + 4px);
42
+
43
+ --color-linktree-button-bg: var(--button-style-background);
44
+ --color-linktree-button-bg-hover: var(--button-style-background-hover);
45
+ --color-linktree-button-text: var(--button-style-text);
46
+ --color-linktree-button-border: var(--button-style-border-color);
47
+ --color-linktree-button-contrast: var(--button-style-contrast-color);
48
+ --color-linktree-profile-bg: var(--profileBackground);
49
+ --color-linktree-body-text: var(--bodyText);
50
+ --color-linktree-link-bg: var(--linkBackground);
51
+ --color-linktree-link-text: var(--linkText);
52
+ --color-linktree-link-bg-hover: var(--linkHoverBackground);
53
+ --color-linktree-link-hover-text: var(--linkHoverText);
54
+ --color-linktree-frame: var(--desktop-frame-color);
55
+ --radius-linktree-button: var(--button-style-radius);
56
+ --radius-linktree-button-inner: var(--button-style-inner-radius);
57
+ --spacing-linktree-link-gap: var(--link-gap);
58
+ --spacing-linktree-inner-padding: var(--link-inner-padding);
59
+ --font-linktree-primary: var(--profileFontFamilyPrimary);
60
+ --font-linktree-secondary: var(--profileFontFamilySecondary);
61
+ --shadow-linktree-button: var(--button-style-shadow);
44
62
  }
45
63
 
46
64
  :root {
@@ -78,39 +96,6 @@
78
96
  --sidebar-ring: oklch(0.708 0 0);
79
97
  }
80
98
 
81
- .dark {
82
- --background: oklch(0.145 0 0);
83
- --foreground: oklch(0.985 0 0);
84
- --card: oklch(0.205 0 0);
85
- --card-foreground: oklch(0.985 0 0);
86
- --popover: oklch(0.205 0 0);
87
- --popover-foreground: oklch(0.985 0 0);
88
- --primary: oklch(0.922 0 0);
89
- --primary-foreground: oklch(0.205 0 0);
90
- --secondary: oklch(0.269 0 0);
91
- --secondary-foreground: oklch(0.985 0 0);
92
- --muted: oklch(0.269 0 0);
93
- --muted-foreground: oklch(0.708 0 0);
94
- --accent: oklch(0.269 0 0);
95
- --accent-foreground: oklch(0.985 0 0);
96
- --destructive: oklch(0.704 0.191 22.216);
97
- --border: oklch(1 0 0 / 10%);
98
- --input: oklch(1 0 0 / 15%);
99
- --ring: oklch(0.556 0 0);
100
- --chart-1: oklch(0.488 0.243 264.376);
101
- --chart-2: oklch(0.696 0.17 162.48);
102
- --chart-3: oklch(0.769 0.188 70.08);
103
- --chart-4: oklch(0.627 0.265 303.9);
104
- --chart-5: oklch(0.645 0.246 16.439);
105
- --sidebar: oklch(0.205 0 0);
106
- --sidebar-foreground: oklch(0.985 0 0);
107
- --sidebar-primary: oklch(0.488 0.243 264.376);
108
- --sidebar-primary-foreground: oklch(0.985 0 0);
109
- --sidebar-accent: oklch(0.269 0 0);
110
- --sidebar-accent-foreground: oklch(0.985 0 0);
111
- --sidebar-border: oklch(1 0 0 / 10%);
112
- --sidebar-ring: oklch(0.556 0 0);
113
- }
114
99
 
115
100
  @layer base {
116
101
  * {
Binary file
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="500" height="500"><svg width="500" height="500" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="500" height="500" rx="132" fill="#45E55F"></rect>
3
+ <path d="M226.993 168.546L173.931 114L143.128 145.546L198.786 198.607H120.499V242.395H199.157L143.128 296.822L173.931 327.745L249.993 251.312L326.055 327.745L356.859 296.941L300.829 242.515H379.501V198.607H301.214L356.872 145.546L326.069 114L273.007 168.546V91H226.993V168.546ZM273.007 305.102H226.993V409H273.007V305.102Z" fill="black"></path>
4
+ </svg><style>@media (prefers-color-scheme: light) { :root { filter: none; } }
5
+ @media (prefers-color-scheme: dark) { :root { filter: none; } }
6
+ </style></svg>
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "Linktree",
3
+ "short_name": "Linktree",
4
+ "icons": [
5
+ {
6
+ "src": "/web-app-manifest-192x192.png",
7
+ "sizes": "192x192",
8
+ "type": "image/png",
9
+ "purpose": "maskable"
10
+ },
11
+ {
12
+ "src": "/web-app-manifest-512x512.png",
13
+ "sizes": "512x512",
14
+ "type": "image/png",
15
+ "purpose": "maskable"
16
+ }
17
+ ],
18
+ "theme_color": "#ffffff",
19
+ "background_color": "#ffffff",
20
+ "display": "standalone"
21
+ }
@@ -0,0 +1,8 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ import type { LinkAppSettings } from '../src/types'
4
+
5
+ declare global {
6
+ const __PREVIEW_PROPS__: Record<string, unknown>
7
+ const __SETTINGS_CONFIG__: LinkAppSettings
8
+ }
@@ -17,6 +17,11 @@ export default defineConfig({
17
17
  '@/lib': resolve(__dirname, 'lib'),
18
18
  },
19
19
  },
20
+ // Define fallback values - these will be overridden by dev.ts
21
+ define: {
22
+ __PREVIEW_PROPS__: 'undefined',
23
+ __SETTINGS_CONFIG__: 'undefined',
24
+ },
20
25
  build: {
21
26
  rollupOptions: {
22
27
  input: {
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBAuLzD"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBAsLzD"}
@@ -12,16 +12,21 @@ import { buildCommand } from './build.js';
12
12
  export async function deployCommand(options) {
13
13
  const env = options.qa ? 'QA' : 'Production';
14
14
  const startTime = Date.now();
15
- console.log(pc.bold(pc.cyan(`\n→ Deploying to ${env}`)));
16
- console.log(pc.dim('─'.repeat(50)) + '\n');
17
15
  try {
18
16
  const config = await getAppConfig(options.qa ? 'qa' : 'production');
19
17
  const projectPath = options.path ?? process.cwd();
18
+ // Get LinkApp ID from config (check root first, then .config for backward compatibility)
19
+ const rootConfigPath = join(projectPath, 'linkapp.config.ts');
20
+ const nestedConfigPath = join(projectPath, '.config', 'linkapp.config.ts');
21
+ const configPath = existsSync(rootConfigPath) ? rootConfigPath : nestedConfigPath;
22
+ const linkAppId = await getLinkAppId(configPath);
23
+ console.log(pc.bold(pc.cyan(`\n→ Deploying ${linkAppId} to ${env}`)));
24
+ console.log(pc.dim('─'.repeat(50)) + '\n');
20
25
  // Check authentication
21
26
  const accessToken = getToken(config.auth.audience);
22
27
  if (!accessToken) {
23
28
  console.log(pc.red('✗ Not authenticated'));
24
- console.log(pc.dim(` → Run: ${pc.cyan(`linkapp login${options.qa ? ' --qa' : ''}`)}\n`));
29
+ console.log(pc.dim(` → Run: ${pc.cyan(`npx @linktr.ee/linkapp login${options.qa ? ' --qa' : ''}`)}\n`));
25
30
  process.exit(1);
26
31
  }
27
32
  // Run build if needed
@@ -51,11 +56,6 @@ export async function deployCommand(options) {
51
56
  s.start('Generating manifest files');
52
57
  await generateManifestFiles(projectPath);
53
58
  s.stop('Manifest files generated');
54
- // Get LinkApp ID from config (check root first, then .config for backward compatibility)
55
- const rootConfigPath = join(projectPath, 'linkapp.config.ts');
56
- const nestedConfigPath = join(projectPath, '.config', 'linkapp.config.ts');
57
- const configPath = existsSync(rootConfigPath) ? rootConfigPath : nestedConfigPath;
58
- const linkAppId = await getLinkAppId(configPath);
59
59
  // Check if LinkApp exists
60
60
  s.start('Checking LinkApp status');
61
61
  const apiUrl = options.endpoint ?? `${config.link_types_url}/link-types`;
@@ -123,9 +123,7 @@ export async function deployCommand(options) {
123
123
  console.log(pc.bold('Next steps:'));
124
124
  // Step 1: Build is happening
125
125
  if (result.build?.id) {
126
- const buildUrl = options.qa
127
- ? `https://buildkite.com/linktree/link-types-ci-service/builds/${result.build.id}`
128
- : `https://linkapp-ci.replit.app/?linkTypeId=${result.linkType.linkTypeId}&buildId=${result.build.id}`;
126
+ const buildUrl = `https://linkapp-ci.replit.app/?linkTypeId=${result.linkType.linkTypeId}&buildId=${result.build.id}`;
129
127
  console.log(pc.cyan(` 1. Building your LinkApp (this may take a few minutes):`));
130
128
  console.log(pc.dim(` ${buildUrl}`));
131
129
  console.log();
@@ -170,7 +168,7 @@ export async function deployCommand(options) {
170
168
  }
171
169
  }
172
170
  async function getLinkAppId(configPath) {
173
- // Load the TypeScript config using jiti to get the explicit linkAppId
171
+ // Load the TypeScript config and derive ID from manifest name (kebab-case)
174
172
  const { createJiti } = await import('jiti');
175
173
  const jiti = createJiti(import.meta.url, {
176
174
  interopDefault: true,
@@ -178,16 +176,20 @@ async function getLinkAppId(configPath) {
178
176
  });
179
177
  try {
180
178
  const config = jiti(configPath);
181
- if (!config?.id) {
182
- throw new Error('id is required in configuration');
179
+ if (!config?.manifest?.name) {
180
+ throw new Error('manifest.name is required in configuration');
183
181
  }
184
- return config.id;
182
+ // Derive ID from name using kebab-case (matches backend behavior)
183
+ return config.manifest.name
184
+ .toLowerCase()
185
+ .replace(/[^a-z0-9]+/g, '-')
186
+ .replace(/^-+|-+$/g, ''); // Remove leading/trailing hyphens
185
187
  }
186
188
  catch (error) {
187
- if (error instanceof Error && error.message.includes('id is required')) {
189
+ if (error instanceof Error && error.message.includes('manifest.name is required')) {
188
190
  throw error;
189
191
  }
190
- throw new Error(`Failed to load id from config: ${error instanceof Error ? error.message : error}`);
192
+ throw new Error(`Failed to load manifest.name from config: ${error instanceof Error ? error.message : error}`);
191
193
  }
192
194
  }
193
195
  //# sourceMappingURL=deploy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAUA,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBA+EnD"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAYA,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAmDD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBAqJnD"}