@linktr.ee/linkapp 0.0.45 → 0.0.47

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 (76) hide show
  1. package/README.md +6 -6
  2. package/dev-server/{sheet → expanded}/main.tsx +2 -2
  3. package/dev-server/{sheet.html → expanded.html} +2 -2
  4. package/dev-server/preview/Preview.tsx +257 -245
  5. package/dist/commands/dev.d.ts.map +1 -1
  6. package/dist/commands/dev.js +21 -11
  7. package/dist/commands/dev.js.map +1 -1
  8. package/dist/lib/build/detect-layouts.d.ts +3 -1
  9. package/dist/lib/build/detect-layouts.d.ts.map +1 -1
  10. package/dist/lib/build/detect-layouts.js +16 -8
  11. package/dist/lib/build/detect-layouts.js.map +1 -1
  12. package/dist/lib/utils/setup-runtime.d.ts.map +1 -1
  13. package/dist/lib/utils/setup-runtime.js +26 -18
  14. package/dist/lib/utils/setup-runtime.js.map +1 -1
  15. package/dist/schema/config.schema.d.ts +2 -2
  16. package/dist/schema/config.schema.js +1 -1
  17. package/dist/schema/config.schema.js.map +1 -1
  18. package/dist/types.d.ts +1 -1
  19. package/dist/types.d.ts.map +1 -1
  20. package/package.json +2 -1
  21. package/dist/lib/config/resolve-config-path.d.ts +0 -19
  22. package/dist/lib/config/resolve-config-path.d.ts.map +0 -1
  23. package/dist/lib/config/resolve-config-path.js +0 -54
  24. package/dist/lib/config/resolve-config-path.js.map +0 -1
  25. package/dist/lib/deploy/artifacts.d.ts +0 -21
  26. package/dist/lib/deploy/artifacts.d.ts.map +0 -1
  27. package/dist/lib/deploy/artifacts.js +0 -35
  28. package/dist/lib/deploy/artifacts.js.map +0 -1
  29. package/dist/lib/deploy/confirmation.d.ts +0 -12
  30. package/dist/lib/deploy/confirmation.d.ts.map +0 -1
  31. package/dist/lib/deploy/confirmation.js +0 -30
  32. package/dist/lib/deploy/confirmation.js.map +0 -1
  33. package/dist/lib/deploy/context.d.ts +0 -44
  34. package/dist/lib/deploy/context.d.ts.map +0 -1
  35. package/dist/lib/deploy/context.js +0 -39
  36. package/dist/lib/deploy/context.js.map +0 -1
  37. package/dist/lib/deploy/execution.d.ts +0 -24
  38. package/dist/lib/deploy/execution.d.ts.map +0 -1
  39. package/dist/lib/deploy/execution.js +0 -29
  40. package/dist/lib/deploy/execution.js.map +0 -1
  41. package/dist/lib/deploy/output.d.ts +0 -16
  42. package/dist/lib/deploy/output.d.ts.map +0 -1
  43. package/dist/lib/deploy/output.js +0 -115
  44. package/dist/lib/deploy/output.js.map +0 -1
  45. package/dist/lib/deploy/preflight.d.ts +0 -9
  46. package/dist/lib/deploy/preflight.d.ts.map +0 -1
  47. package/dist/lib/deploy/preflight.js +0 -59
  48. package/dist/lib/deploy/preflight.js.map +0 -1
  49. package/dist/lib/utils/constants.d.ts +0 -42
  50. package/dist/lib/utils/constants.d.ts.map +0 -1
  51. package/dist/lib/utils/constants.js +0 -42
  52. package/dist/lib/utils/constants.js.map +0 -1
  53. package/dist/lib/utils/create-project.d.ts +0 -8
  54. package/dist/lib/utils/create-project.d.ts.map +0 -1
  55. package/dist/lib/utils/create-project.js +0 -48
  56. package/dist/lib/utils/create-project.js.map +0 -1
  57. package/dist/lib/utils/errors.d.ts +0 -49
  58. package/dist/lib/utils/errors.d.ts.map +0 -1
  59. package/dist/lib/utils/errors.js +0 -70
  60. package/dist/lib/utils/errors.js.map +0 -1
  61. package/dist/lib/utils/formatters.d.ts +0 -34
  62. package/dist/lib/utils/formatters.d.ts.map +0 -1
  63. package/dist/lib/utils/formatters.js +0 -59
  64. package/dist/lib/utils/formatters.js.map +0 -1
  65. package/dist/lib/utils/output.d.ts +0 -46
  66. package/dist/lib/utils/output.d.ts.map +0 -1
  67. package/dist/lib/utils/output.js +0 -66
  68. package/dist/lib/utils/output.js.map +0 -1
  69. package/dist/schema/index.d.ts +0 -8
  70. package/dist/schema/index.d.ts.map +0 -1
  71. package/dist/schema/index.js +0 -8
  72. package/dist/schema/index.js.map +0 -1
  73. package/dist/sdk/use-open-popup.d.ts +0 -23
  74. package/dist/sdk/use-open-popup.d.ts.map +0 -1
  75. package/dist/sdk/use-open-popup.js +0 -29
  76. package/dist/sdk/use-open-popup.js.map +0 -1
@@ -36,25 +36,31 @@ function Chin({ title }: { title?: string }) {
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__;
39
+ // @ts-expect-error - injected by dev server
40
+ const hasFeatured =
41
+ typeof __HAS_FEATURED__ !== "undefined" && __HAS_FEATURED__;
42
+ // @ts-expect-error - injected by dev server
43
+ const hasCarousel =
44
+ typeof __HAS_CAROUSEL__ !== "undefined" && __HAS_CAROUSEL__;
44
45
 
45
- // Initialize state from localStorage
46
+ // Initialize state from localStorage
46
47
  const [selectedTab, setSelectedTab] = useState<
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
- });
48
+ "expanded" | "featured" | "carousel" | "settings"
49
+ >(() => {
50
+ const saved = localStorage.getItem("linkapp-preview-tab");
51
+ if (saved === "featured" && !hasFeatured) {
52
+ return "expanded";
53
+ }
54
+ if (saved === "carousel" && !hasCarousel) {
55
+ return "expanded";
56
+ }
57
+ if (saved === "sheet") {
58
+ return "expanded";
59
+ }
60
+ return (
61
+ (saved as "expanded" | "featured" | "carousel" | "settings") || "expanded"
62
+ );
63
+ });
58
64
  const [selectedTheme, setSelectedTheme] = useState<
59
65
  keyof typeof THEME_PRESETS
60
66
  >(() => {
@@ -72,7 +78,10 @@ const hasCarousel =
72
78
  const [isPopupOpen, setIsPopupOpen] = useState(false);
73
79
 
74
80
  // Generate unique IDs for iframes using timestamp
75
- const sheetIframeId = useMemo(() => `preview-iframe-sheet-${Date.now()}`, []);
81
+ const expandedIframeId = useMemo(
82
+ () => `preview-iframe-expanded-${Date.now()}`,
83
+ [],
84
+ );
76
85
  const featuredIframeId = useMemo(
77
86
  () => `preview-iframe-featured-${Date.now()}`,
78
87
  [],
@@ -139,15 +148,22 @@ const hasCarousel =
139
148
 
140
149
  <div
141
150
  className={cn("min-h-screen", {
142
- "bg-black/50": selectedTab === "sheet",
143
- "bg-linktree-frame": selectedTab === "featured" || selectedTab === "carousel",
151
+ "bg-black/50": selectedTab === "expanded",
152
+ "bg-linktree-frame":
153
+ selectedTab === "featured" || selectedTab === "carousel",
144
154
  })}
145
155
  id="preview"
146
156
  >
147
157
  <Tabs
148
158
  value={selectedTab}
149
159
  onValueChange={(value) =>
150
- setSelectedTab(value as "sheet" | "featured" | "carousel" | "settings")
160
+ setSelectedTab(
161
+ (value === "sheet" ? "expanded" : value) as
162
+ | "expanded"
163
+ | "featured"
164
+ | "carousel"
165
+ | "settings",
166
+ )
151
167
  }
152
168
  >
153
169
  <Portal>
@@ -156,13 +172,15 @@ const hasCarousel =
156
172
  style={{ zIndex: 1000000 }}
157
173
  >
158
174
  <TabsList>
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>
175
+ <TabsTrigger value="expanded">Expanded</TabsTrigger>
176
+ {hasFeatured && (
177
+ <TabsTrigger value="featured">Featured</TabsTrigger>
178
+ )}
179
+ {hasCarousel && (
180
+ <TabsTrigger value="carousel">Carousel</TabsTrigger>
181
+ )}
182
+ <TabsTrigger value="settings">Settings</TabsTrigger>
183
+ </TabsList>
166
184
 
167
185
  {/* Theme Switcher */}
168
186
  <div className="flex items-center gap-2">
@@ -191,10 +209,9 @@ const hasCarousel =
191
209
 
192
210
  {/* Main Content with Padding for Fixed Tabs */}
193
211
  <div className="pt-20">
194
- <TabsContent value="sheet" className="m-0">
195
- {/* Sheet Modal - Always Open */}
212
+ <TabsContent value="expanded" className="m-0">
213
+ {/* Expanded Modal - Always Open */}
196
214
  <Dialog open={true} modal={false}>
197
- <DialogOverlay />
198
215
  <DialogContent
199
216
  className="h-[calc(100dvh-2rem)] max-w-[608px] md:min-h-[25vh] md:h-[80%] md:max-h-[900px] overflow-auto"
200
217
  showCloseButton={false}
@@ -220,7 +237,7 @@ const hasCarousel =
220
237
  </button>
221
238
 
222
239
  <DialogTitle className="self-center truncate py-3 text-center">
223
- Sheet
240
+ Expanded
224
241
  </DialogTitle>
225
242
 
226
243
  <button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
@@ -240,216 +257,211 @@ const hasCarousel =
240
257
  ></path>
241
258
  </svg>
242
259
  </button>
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
- );
455
- }
260
+ </div>
261
+ </DialogHeader>
262
+
263
+ <div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
264
+ <div className="h-full overflow-y-auto overflow-x-hidden">
265
+ <IframeResizer
266
+ key={`expanded-${selectedTheme}`}
267
+ id={expandedIframeId}
268
+ src={`/expanded?theme=${selectedTheme}`}
269
+ style={{
270
+ height: "0px",
271
+ width: "1px",
272
+ minWidth: "100%",
273
+ border: 0,
274
+ }}
275
+ checkOrigin={false}
276
+ onResized={handleResized}
277
+ heightCalculationMethod="max"
278
+ />
279
+ </div>
280
+ </div>
281
+ </DialogContent>
282
+ </Dialog>
283
+ </TabsContent>
284
+
285
+ {hasFeatured && (
286
+ <TabsContent
287
+ value="featured"
288
+ className="m-0 flex justify-center p-8"
289
+ >
290
+ <div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-gray-100">
291
+ <div className="w-full max-w-[524px]">
292
+ {chinPosition === "above" && <Chin title={chinTitle} />}
293
+
294
+ <div
295
+ className={cn(
296
+ "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",
297
+ isOverlay && "relative",
298
+ )}
299
+ >
300
+ {chinPosition === "overlay_above" && (
301
+ <div className="absolute top-0 left-0 right-0 z-10">
302
+ <Chin title={chinTitle} />
303
+ </div>
304
+ )}
305
+
306
+ <IframeResizer
307
+ key={`featured-${selectedTheme}`}
308
+ id={featuredIframeId}
309
+ src={`/featured?theme=${selectedTheme}`}
310
+ style={{
311
+ height: "0px",
312
+ width: "1px",
313
+ minWidth: "100%",
314
+ border: 0,
315
+ }}
316
+ checkOrigin={false}
317
+ onResized={handleResized}
318
+ heightCalculationMethod="max"
319
+ />
320
+
321
+ {chinPosition === "overlayBelow" && (
322
+ <div className="absolute bottom-0 left-0 right-0 z-10">
323
+ <Chin title={chinTitle} />
324
+ </div>
325
+ )}
326
+ </div>
327
+
328
+ {chinPosition === "below" && <Chin title={chinTitle} />}
329
+ </div>
330
+ </div>
331
+ </TabsContent>
332
+ )}
333
+
334
+ {hasCarousel && (
335
+ <TabsContent
336
+ value="carousel"
337
+ className="m-0 flex justify-center p-8"
338
+ >
339
+ <div className="w-full max-w-[580px] flex flex-col px-[28px] py-7 items-center bg-gray-100">
340
+ <div className="w-full max-w-[524px]">
341
+ {chinPosition === "above" && <Chin title={chinTitle} />}
342
+
343
+ <div
344
+ className={cn(
345
+ "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",
346
+ isOverlay && "relative",
347
+ )}
348
+ style={
349
+ !__SETTINGS_CONFIG__?.featured_head_allow_unlocked_aspect_ratio
350
+ ? { aspectRatio: "11 / 8" }
351
+ : undefined
352
+ }
353
+ >
354
+ {chinPosition === "overlay_above" && (
355
+ <div className="absolute top-0 left-0 right-0 z-10">
356
+ <Chin title={chinTitle} />
357
+ </div>
358
+ )}
359
+
360
+ <IframeResizer
361
+ key={`carousel-${selectedTheme}`}
362
+ id={carouselIframeId}
363
+ src={`/featured-carousel?theme=${selectedTheme}`}
364
+ style={{
365
+ height: "0px",
366
+ width: "1px",
367
+ minWidth: "100%",
368
+ border: 0,
369
+ }}
370
+ checkOrigin={false}
371
+ onResized={handleResized}
372
+ heightCalculationMethod="max"
373
+ />
374
+
375
+ {chinPosition === "overlayBelow" && (
376
+ <div className="absolute bottom-0 left-0 right-0 z-10">
377
+ <Chin title={chinTitle} />
378
+ </div>
379
+ )}
380
+ </div>
381
+
382
+ {chinPosition === "below" && <Chin title={chinTitle} />}
383
+ </div>
384
+ </div>
385
+ </TabsContent>
386
+ )}
387
+
388
+ <TabsContent value="settings" className="m-0">
389
+ <SettingsPreview settings={__SETTINGS_CONFIG__} />
390
+ </TabsContent>
391
+ </div>
392
+ </Tabs>
393
+
394
+ {/* Popup Dialog for EXPAND_LINK_APP message */}
395
+ <Dialog open={isPopupOpen} onOpenChange={setIsPopupOpen}>
396
+ <DialogContent
397
+ className="h-[calc(100dvh-2rem)] max-w-[608px] md:min-h-[25vh] md:h-[80%] md:max-h-[900px] overflow-auto"
398
+ showCloseButton={false}
399
+ >
400
+ <DialogHeader className="sticky top-0 bg-white px-4">
401
+ <div className="grid h-16 grid-cols-[32px_auto_32px] items-center gap-4">
402
+ <button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
403
+ <svg
404
+ width="16"
405
+ height="16"
406
+ viewBox="0 0 16 16"
407
+ fill="none"
408
+ xmlns="http://www.w3.org/2000/svg"
409
+ className=" "
410
+ role="img"
411
+ aria-hidden="true"
412
+ >
413
+ <path
414
+ fill="currentColor"
415
+ 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"
416
+ ></path>
417
+ </svg>
418
+ </button>
419
+
420
+ <DialogTitle className="self-center truncate py-3 text-center">
421
+ Expanded
422
+ </DialogTitle>
423
+
424
+ <button className="flex size-8 items-center justify-center rounded-sm focus-visible:outline-none">
425
+ <svg
426
+ width="16"
427
+ height="16"
428
+ viewBox="0 0 16 16"
429
+ fill="none"
430
+ xmlns="http://www.w3.org/2000/svg"
431
+ className=" "
432
+ role="img"
433
+ aria-hidden="true"
434
+ >
435
+ <path
436
+ fill="currentColor"
437
+ 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"
438
+ ></path>
439
+ </svg>
440
+ </button>
441
+ </div>
442
+ </DialogHeader>
443
+
444
+ <div className="flex h-[calc(100%-64px)] flex-1 flex-col justify-between overflow-hidden">
445
+ <div className="h-full overflow-y-auto overflow-x-hidden">
446
+ <IframeResizer
447
+ key={`popup-${selectedTheme}`}
448
+ id={popupIframeId}
449
+ src={`/expanded?theme=${selectedTheme}`}
450
+ style={{
451
+ height: "0px",
452
+ width: "1px",
453
+ minWidth: "100%",
454
+ border: 0,
455
+ }}
456
+ checkOrigin={false}
457
+ onResized={handleResized}
458
+ heightCalculationMethod="max"
459
+ />
460
+ </div>
461
+ </div>
462
+ </DialogContent>
463
+ </Dialog>
464
+ </div>
465
+ </>
466
+ );
467
+ }
@@ -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;AA2WD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBAkWnD"}
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;AA8WD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBAkXnD"}