@biela.dev/devices 0.1.0

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.
@@ -0,0 +1,1774 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ // src/ios/iphone-17-pro-max/metadata.ts
6
+ var IPHONE_17_PRO_MAX_META = {
7
+ id: "iphone-17-pro-max",
8
+ name: "iPhone 17 Pro Max",
9
+ platform: "ios",
10
+ year: 2025,
11
+ screen: {
12
+ width: 440,
13
+ height: 956,
14
+ physicalWidth: 1320,
15
+ physicalHeight: 2868,
16
+ dpr: 3,
17
+ aspectRatio: "19.5:9",
18
+ cornerRadius: 55,
19
+ ppi: 460
20
+ }
21
+ };
22
+ var IPHONE_17_PRO_MAX_LAYOUT = {
23
+ meta: IPHONE_17_PRO_MAX_META,
24
+ safeArea: {
25
+ portrait: { top: 62, bottom: 34, left: 0, right: 0 },
26
+ landscape: { top: 20, bottom: 20, left: 62, right: 62 }
27
+ },
28
+ hardwareOverlays: {
29
+ type: "dynamic-island",
30
+ portrait: {
31
+ x: 157,
32
+ // centered: (440 - 126) / 2 = 157
33
+ y: 11,
34
+ width: 126,
35
+ height: 37,
36
+ shape: "pill",
37
+ cornerRadius: 18.5
38
+ }
39
+ },
40
+ statusBar: {
41
+ height: 54,
42
+ style: "dynamic-island",
43
+ hasTime: true,
44
+ hasBattery: true,
45
+ hasSignal: true
46
+ },
47
+ homeIndicator: {
48
+ type: "swipe-bar",
49
+ height: 5,
50
+ width: 134,
51
+ visible: true
52
+ },
53
+ hardwareButtons: {
54
+ volumeUp: { side: "left", yPosition: 200 },
55
+ volumeDown: { side: "left", yPosition: 240 },
56
+ power: { side: "right", yPosition: 220 },
57
+ actionButton: { side: "left", yPosition: 250 },
58
+ cameraControl: { side: "right", yPosition: 500 }
59
+ }
60
+ };
61
+ function IPhone17ProMaxSVG({ colorScheme = "dark", style }) {
62
+ const frameColor = colorScheme === "dark" ? "#1a1a1a" : "#e8e8e8";
63
+ const frameBorder = colorScheme === "dark" ? "#333" : "#ccc";
64
+ const buttonColor = colorScheme === "dark" ? "#2a2a2a" : "#d0d0d0";
65
+ const islandColor = "#000000";
66
+ const bezelSide = 15;
67
+ const bezelTop = 23;
68
+ const bezelBottom = 23;
69
+ const screenW = 440;
70
+ const screenH = 956;
71
+ const totalW = screenW + bezelSide * 2;
72
+ const totalH = screenH + bezelTop + bezelBottom;
73
+ const outerRadius = 62;
74
+ const screenRadius = 55;
75
+ return /* @__PURE__ */ jsxRuntime.jsxs(
76
+ "svg",
77
+ {
78
+ viewBox: `0 0 ${totalW} ${totalH}`,
79
+ width: totalW,
80
+ height: totalH,
81
+ xmlns: "http://www.w3.org/2000/svg",
82
+ style,
83
+ children: [
84
+ /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
85
+ /* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: "frame-gradient-iphone-17-pro-max", x1: "0", y1: "0", x2: "1", y2: "1", children: [
86
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: frameColor }),
87
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "50%", stopColor: colorScheme === "dark" ? "#252525" : "#f0f0f0" }),
88
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: frameColor })
89
+ ] }),
90
+ /* @__PURE__ */ jsxRuntime.jsxs("mask", { id: "frame-screen-mask-iphone-17-pro-max", children: [
91
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: totalW, height: totalH, fill: "white" }),
92
+ /* @__PURE__ */ jsxRuntime.jsx(
93
+ "rect",
94
+ {
95
+ x: bezelSide,
96
+ y: bezelTop,
97
+ width: screenW,
98
+ height: screenH,
99
+ rx: screenRadius,
100
+ ry: screenRadius,
101
+ fill: "black"
102
+ }
103
+ )
104
+ ] })
105
+ ] }),
106
+ /* @__PURE__ */ jsxRuntime.jsx(
107
+ "rect",
108
+ {
109
+ x: "0",
110
+ y: "0",
111
+ width: totalW,
112
+ height: totalH,
113
+ rx: outerRadius,
114
+ ry: outerRadius,
115
+ fill: "url(#frame-gradient-iphone-17-pro-max)",
116
+ stroke: frameBorder,
117
+ strokeWidth: "1.5",
118
+ mask: "url(#frame-screen-mask-iphone-17-pro-max)"
119
+ }
120
+ ),
121
+ /* @__PURE__ */ jsxRuntime.jsx(
122
+ "rect",
123
+ {
124
+ "data-zone": "screen-area",
125
+ x: bezelSide,
126
+ y: bezelTop,
127
+ width: screenW,
128
+ height: screenH,
129
+ rx: screenRadius,
130
+ ry: screenRadius,
131
+ fill: "none"
132
+ }
133
+ ),
134
+ /* @__PURE__ */ jsxRuntime.jsx(
135
+ "rect",
136
+ {
137
+ "data-zone": "hardware-overlay",
138
+ "data-zone-type": "dynamic-island",
139
+ "data-zone-shape": "pill",
140
+ x: bezelSide + 157,
141
+ y: bezelTop + 11,
142
+ width: "126",
143
+ height: "37",
144
+ rx: "18.5",
145
+ ry: "18.5",
146
+ fill: islandColor
147
+ }
148
+ ),
149
+ /* @__PURE__ */ jsxRuntime.jsx(
150
+ "rect",
151
+ {
152
+ "data-zone": "safe-area-top-inset",
153
+ x: bezelSide,
154
+ y: bezelTop,
155
+ width: screenW,
156
+ height: "62",
157
+ fill: "transparent"
158
+ }
159
+ ),
160
+ /* @__PURE__ */ jsxRuntime.jsx(
161
+ "rect",
162
+ {
163
+ "data-zone": "safe-area-bottom-inset",
164
+ x: bezelSide,
165
+ y: bezelTop + screenH - 34,
166
+ width: screenW,
167
+ height: "34",
168
+ fill: "transparent"
169
+ }
170
+ ),
171
+ /* @__PURE__ */ jsxRuntime.jsx(
172
+ "rect",
173
+ {
174
+ "data-zone": "status-bar",
175
+ "data-zone-style": "dynamic-island",
176
+ x: bezelSide,
177
+ y: bezelTop,
178
+ width: screenW,
179
+ height: "54",
180
+ fill: "transparent"
181
+ }
182
+ ),
183
+ /* @__PURE__ */ jsxRuntime.jsx(
184
+ "rect",
185
+ {
186
+ "data-zone": "home-indicator",
187
+ "data-zone-type": "swipe-bar",
188
+ x: bezelSide + (screenW - 134) / 2,
189
+ y: bezelTop + screenH - 13,
190
+ width: "134",
191
+ height: "5",
192
+ rx: "2.5",
193
+ ry: "2.5",
194
+ fill: "rgba(255,255,255,0.3)"
195
+ }
196
+ ),
197
+ /* @__PURE__ */ jsxRuntime.jsx(
198
+ "rect",
199
+ {
200
+ "data-button": "volume-up",
201
+ "data-side": "left",
202
+ x: "-1",
203
+ y: "200",
204
+ width: "3",
205
+ height: "32",
206
+ rx: "1.5",
207
+ fill: buttonColor
208
+ }
209
+ ),
210
+ /* @__PURE__ */ jsxRuntime.jsx(
211
+ "rect",
212
+ {
213
+ "data-button": "volume-down",
214
+ "data-side": "left",
215
+ x: "-1",
216
+ y: "240",
217
+ width: "3",
218
+ height: "32",
219
+ rx: "1.5",
220
+ fill: buttonColor
221
+ }
222
+ ),
223
+ /* @__PURE__ */ jsxRuntime.jsx(
224
+ "rect",
225
+ {
226
+ "data-button": "action",
227
+ "data-side": "left",
228
+ x: "-1",
229
+ y: "170",
230
+ width: "3",
231
+ height: "20",
232
+ rx: "1.5",
233
+ fill: buttonColor
234
+ }
235
+ ),
236
+ /* @__PURE__ */ jsxRuntime.jsx(
237
+ "rect",
238
+ {
239
+ "data-button": "power",
240
+ "data-side": "right",
241
+ x: totalW - 2,
242
+ y: "220",
243
+ width: "3",
244
+ height: "40",
245
+ rx: "1.5",
246
+ fill: buttonColor
247
+ }
248
+ ),
249
+ /* @__PURE__ */ jsxRuntime.jsx(
250
+ "circle",
251
+ {
252
+ "data-button": "camera",
253
+ "data-side": "right",
254
+ cx: totalW - 0.5,
255
+ cy: "500",
256
+ r: "6",
257
+ fill: buttonColor,
258
+ stroke: frameBorder,
259
+ strokeWidth: "0.5"
260
+ }
261
+ ),
262
+ /* @__PURE__ */ jsxRuntime.jsx(
263
+ "rect",
264
+ {
265
+ x: (totalW - 24) / 2,
266
+ y: totalH - 5,
267
+ width: "24",
268
+ height: "4",
269
+ rx: "2",
270
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
271
+ }
272
+ ),
273
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
274
+ "circle",
275
+ {
276
+ cx: totalW / 2 - 30 + i * 6,
277
+ cy: totalH - 8,
278
+ r: "1.2",
279
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
280
+ },
281
+ `speaker-l-${i}`
282
+ )),
283
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
284
+ "circle",
285
+ {
286
+ cx: totalW / 2 + 8 + i * 6,
287
+ cy: totalH - 8,
288
+ r: "1.2",
289
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
290
+ },
291
+ `speaker-r-${i}`
292
+ ))
293
+ ]
294
+ }
295
+ );
296
+ }
297
+ var IPHONE_17_PRO_MAX_FRAME = {
298
+ bezelTop: 23,
299
+ bezelBottom: 23,
300
+ bezelLeft: 15,
301
+ bezelRight: 15,
302
+ totalWidth: 470,
303
+ totalHeight: 1002,
304
+ screenWidth: 440,
305
+ screenHeight: 956,
306
+ screenRadius: 55
307
+ };
308
+
309
+ // src/ios/iphone-17-pro/metadata.ts
310
+ var IPHONE_17_PRO_META = {
311
+ id: "iphone-17-pro",
312
+ name: "iPhone 17 Pro",
313
+ platform: "ios",
314
+ year: 2025,
315
+ screen: {
316
+ width: 402,
317
+ height: 874,
318
+ physicalWidth: 1206,
319
+ physicalHeight: 2622,
320
+ dpr: 3,
321
+ aspectRatio: "19.5:9",
322
+ cornerRadius: 55,
323
+ ppi: 460
324
+ }
325
+ };
326
+ var IPHONE_17_PRO_LAYOUT = {
327
+ meta: IPHONE_17_PRO_META,
328
+ safeArea: {
329
+ portrait: { top: 62, bottom: 34, left: 0, right: 0 },
330
+ landscape: { top: 20, bottom: 20, left: 62, right: 62 }
331
+ },
332
+ hardwareOverlays: {
333
+ type: "dynamic-island",
334
+ portrait: {
335
+ x: 138,
336
+ // centered: (402 - 126) / 2 = 138
337
+ y: 11,
338
+ width: 126,
339
+ height: 37,
340
+ shape: "pill",
341
+ cornerRadius: 18.5
342
+ }
343
+ },
344
+ statusBar: {
345
+ height: 54,
346
+ style: "dynamic-island",
347
+ hasTime: true,
348
+ hasBattery: true,
349
+ hasSignal: true
350
+ },
351
+ homeIndicator: {
352
+ type: "swipe-bar",
353
+ height: 5,
354
+ width: 134,
355
+ visible: true
356
+ },
357
+ hardwareButtons: {
358
+ volumeUp: { side: "left", yPosition: 200 },
359
+ volumeDown: { side: "left", yPosition: 240 },
360
+ power: { side: "right", yPosition: 220 },
361
+ actionButton: { side: "left", yPosition: 250 },
362
+ cameraControl: { side: "right", yPosition: 500 }
363
+ }
364
+ };
365
+ function IPhone17ProSVG({ colorScheme = "dark", style }) {
366
+ const frameColor = colorScheme === "dark" ? "#1a1a1a" : "#e8e8e8";
367
+ const frameBorder = colorScheme === "dark" ? "#333" : "#ccc";
368
+ const buttonColor = colorScheme === "dark" ? "#2a2a2a" : "#d0d0d0";
369
+ const islandColor = "#000000";
370
+ const bezelSide = 15;
371
+ const bezelTop = 23;
372
+ const bezelBottom = 23;
373
+ const screenW = 402;
374
+ const screenH = 874;
375
+ const totalW = screenW + bezelSide * 2;
376
+ const totalH = screenH + bezelTop + bezelBottom;
377
+ const outerRadius = 62;
378
+ const screenRadius = 55;
379
+ return /* @__PURE__ */ jsxRuntime.jsxs(
380
+ "svg",
381
+ {
382
+ viewBox: `0 0 ${totalW} ${totalH}`,
383
+ width: totalW,
384
+ height: totalH,
385
+ xmlns: "http://www.w3.org/2000/svg",
386
+ style,
387
+ children: [
388
+ /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
389
+ /* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: "frame-gradient-iphone-17-pro", x1: "0", y1: "0", x2: "1", y2: "1", children: [
390
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: frameColor }),
391
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "50%", stopColor: colorScheme === "dark" ? "#252525" : "#f0f0f0" }),
392
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: frameColor })
393
+ ] }),
394
+ /* @__PURE__ */ jsxRuntime.jsxs("mask", { id: "frame-screen-mask-iphone-17-pro", children: [
395
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: totalW, height: totalH, fill: "white" }),
396
+ /* @__PURE__ */ jsxRuntime.jsx(
397
+ "rect",
398
+ {
399
+ x: bezelSide,
400
+ y: bezelTop,
401
+ width: screenW,
402
+ height: screenH,
403
+ rx: screenRadius,
404
+ ry: screenRadius,
405
+ fill: "black"
406
+ }
407
+ )
408
+ ] })
409
+ ] }),
410
+ /* @__PURE__ */ jsxRuntime.jsx(
411
+ "rect",
412
+ {
413
+ x: "0",
414
+ y: "0",
415
+ width: totalW,
416
+ height: totalH,
417
+ rx: outerRadius,
418
+ ry: outerRadius,
419
+ fill: "url(#frame-gradient-iphone-17-pro)",
420
+ stroke: frameBorder,
421
+ strokeWidth: "1.5",
422
+ mask: "url(#frame-screen-mask-iphone-17-pro)"
423
+ }
424
+ ),
425
+ /* @__PURE__ */ jsxRuntime.jsx(
426
+ "rect",
427
+ {
428
+ "data-zone": "screen-area",
429
+ x: bezelSide,
430
+ y: bezelTop,
431
+ width: screenW,
432
+ height: screenH,
433
+ rx: screenRadius,
434
+ ry: screenRadius,
435
+ fill: "none"
436
+ }
437
+ ),
438
+ /* @__PURE__ */ jsxRuntime.jsx(
439
+ "rect",
440
+ {
441
+ "data-zone": "hardware-overlay",
442
+ "data-zone-type": "dynamic-island",
443
+ "data-zone-shape": "pill",
444
+ x: bezelSide + 138,
445
+ y: bezelTop + 11,
446
+ width: "126",
447
+ height: "37",
448
+ rx: "18.5",
449
+ ry: "18.5",
450
+ fill: islandColor
451
+ }
452
+ ),
453
+ /* @__PURE__ */ jsxRuntime.jsx(
454
+ "rect",
455
+ {
456
+ "data-zone": "safe-area-top-inset",
457
+ x: bezelSide,
458
+ y: bezelTop,
459
+ width: screenW,
460
+ height: "62",
461
+ fill: "transparent"
462
+ }
463
+ ),
464
+ /* @__PURE__ */ jsxRuntime.jsx(
465
+ "rect",
466
+ {
467
+ "data-zone": "safe-area-bottom-inset",
468
+ x: bezelSide,
469
+ y: bezelTop + screenH - 34,
470
+ width: screenW,
471
+ height: "34",
472
+ fill: "transparent"
473
+ }
474
+ ),
475
+ /* @__PURE__ */ jsxRuntime.jsx(
476
+ "rect",
477
+ {
478
+ "data-zone": "status-bar",
479
+ "data-zone-style": "dynamic-island",
480
+ x: bezelSide,
481
+ y: bezelTop,
482
+ width: screenW,
483
+ height: "54",
484
+ fill: "transparent"
485
+ }
486
+ ),
487
+ /* @__PURE__ */ jsxRuntime.jsx(
488
+ "rect",
489
+ {
490
+ "data-zone": "home-indicator",
491
+ "data-zone-type": "swipe-bar",
492
+ x: bezelSide + (screenW - 134) / 2,
493
+ y: bezelTop + screenH - 13,
494
+ width: "134",
495
+ height: "5",
496
+ rx: "2.5",
497
+ ry: "2.5",
498
+ fill: "rgba(255,255,255,0.3)"
499
+ }
500
+ ),
501
+ /* @__PURE__ */ jsxRuntime.jsx(
502
+ "rect",
503
+ {
504
+ "data-button": "volume-up",
505
+ "data-side": "left",
506
+ x: "-1",
507
+ y: "200",
508
+ width: "3",
509
+ height: "32",
510
+ rx: "1.5",
511
+ fill: buttonColor
512
+ }
513
+ ),
514
+ /* @__PURE__ */ jsxRuntime.jsx(
515
+ "rect",
516
+ {
517
+ "data-button": "volume-down",
518
+ "data-side": "left",
519
+ x: "-1",
520
+ y: "240",
521
+ width: "3",
522
+ height: "32",
523
+ rx: "1.5",
524
+ fill: buttonColor
525
+ }
526
+ ),
527
+ /* @__PURE__ */ jsxRuntime.jsx(
528
+ "rect",
529
+ {
530
+ "data-button": "action",
531
+ "data-side": "left",
532
+ x: "-1",
533
+ y: "170",
534
+ width: "3",
535
+ height: "20",
536
+ rx: "1.5",
537
+ fill: buttonColor
538
+ }
539
+ ),
540
+ /* @__PURE__ */ jsxRuntime.jsx(
541
+ "rect",
542
+ {
543
+ "data-button": "power",
544
+ "data-side": "right",
545
+ x: totalW - 2,
546
+ y: "220",
547
+ width: "3",
548
+ height: "40",
549
+ rx: "1.5",
550
+ fill: buttonColor
551
+ }
552
+ ),
553
+ /* @__PURE__ */ jsxRuntime.jsx(
554
+ "circle",
555
+ {
556
+ "data-button": "camera",
557
+ "data-side": "right",
558
+ cx: totalW - 0.5,
559
+ cy: "500",
560
+ r: "6",
561
+ fill: buttonColor,
562
+ stroke: frameBorder,
563
+ strokeWidth: "0.5"
564
+ }
565
+ ),
566
+ /* @__PURE__ */ jsxRuntime.jsx(
567
+ "rect",
568
+ {
569
+ x: (totalW - 24) / 2,
570
+ y: totalH - 5,
571
+ width: "24",
572
+ height: "4",
573
+ rx: "2",
574
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
575
+ }
576
+ ),
577
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
578
+ "circle",
579
+ {
580
+ cx: totalW / 2 - 30 + i * 6,
581
+ cy: totalH - 8,
582
+ r: "1.2",
583
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
584
+ },
585
+ `speaker-l-${i}`
586
+ )),
587
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
588
+ "circle",
589
+ {
590
+ cx: totalW / 2 + 8 + i * 6,
591
+ cy: totalH - 8,
592
+ r: "1.2",
593
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
594
+ },
595
+ `speaker-r-${i}`
596
+ ))
597
+ ]
598
+ }
599
+ );
600
+ }
601
+ var IPHONE_17_PRO_FRAME = {
602
+ bezelTop: 23,
603
+ bezelBottom: 23,
604
+ bezelLeft: 15,
605
+ bezelRight: 15,
606
+ totalWidth: 432,
607
+ totalHeight: 920,
608
+ screenWidth: 402,
609
+ screenHeight: 874,
610
+ screenRadius: 55
611
+ };
612
+
613
+ // src/ios/iphone-air/metadata.ts
614
+ var IPHONE_AIR_META = {
615
+ id: "iphone-air",
616
+ name: "iPhone Air",
617
+ platform: "ios",
618
+ year: 2025,
619
+ screen: {
620
+ width: 420,
621
+ height: 912,
622
+ physicalWidth: 1260,
623
+ physicalHeight: 2736,
624
+ dpr: 3,
625
+ aspectRatio: "19.5:9",
626
+ cornerRadius: 55,
627
+ ppi: 460
628
+ }
629
+ };
630
+ var IPHONE_AIR_LAYOUT = {
631
+ meta: IPHONE_AIR_META,
632
+ safeArea: {
633
+ portrait: { top: 68, bottom: 34, left: 0, right: 0 },
634
+ landscape: { top: 20, bottom: 29, left: 68, right: 68 }
635
+ },
636
+ hardwareOverlays: {
637
+ type: "dynamic-island",
638
+ portrait: {
639
+ x: 147,
640
+ // centered: (420 - 126) / 2 = 147
641
+ y: 11,
642
+ width: 126,
643
+ height: 37,
644
+ shape: "pill",
645
+ cornerRadius: 18.5
646
+ }
647
+ },
648
+ statusBar: {
649
+ height: 54,
650
+ style: "dynamic-island",
651
+ hasTime: true,
652
+ hasBattery: true,
653
+ hasSignal: true
654
+ },
655
+ homeIndicator: {
656
+ type: "swipe-bar",
657
+ height: 5,
658
+ width: 134,
659
+ visible: true
660
+ },
661
+ hardwareButtons: {
662
+ volumeUp: { side: "left", yPosition: 210 },
663
+ volumeDown: { side: "left", yPosition: 250 },
664
+ power: { side: "right", yPosition: 230 }
665
+ }
666
+ };
667
+ function IPhoneAirSVG({ colorScheme = "dark", style }) {
668
+ const frameColor = colorScheme === "dark" ? "#1a1a1a" : "#e8e8e8";
669
+ const frameBorder = colorScheme === "dark" ? "#333" : "#ccc";
670
+ const buttonColor = colorScheme === "dark" ? "#2a2a2a" : "#d0d0d0";
671
+ const islandColor = "#000000";
672
+ const bezelSide = 10;
673
+ const bezelTop = 20;
674
+ const bezelBottom = 20;
675
+ const screenW = 420;
676
+ const screenH = 912;
677
+ const totalW = screenW + bezelSide * 2;
678
+ const totalH = screenH + bezelTop + bezelBottom;
679
+ const outerRadius = 60;
680
+ const screenRadius = 55;
681
+ return /* @__PURE__ */ jsxRuntime.jsxs(
682
+ "svg",
683
+ {
684
+ viewBox: `0 0 ${totalW} ${totalH}`,
685
+ width: totalW,
686
+ height: totalH,
687
+ xmlns: "http://www.w3.org/2000/svg",
688
+ style,
689
+ children: [
690
+ /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
691
+ /* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: "frame-gradient-iphone-air", x1: "0", y1: "0", x2: "1", y2: "1", children: [
692
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: frameColor }),
693
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "50%", stopColor: colorScheme === "dark" ? "#252525" : "#f0f0f0" }),
694
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: frameColor })
695
+ ] }),
696
+ /* @__PURE__ */ jsxRuntime.jsxs("mask", { id: "frame-screen-mask-iphone-air", children: [
697
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: totalW, height: totalH, fill: "white" }),
698
+ /* @__PURE__ */ jsxRuntime.jsx(
699
+ "rect",
700
+ {
701
+ x: bezelSide,
702
+ y: bezelTop,
703
+ width: screenW,
704
+ height: screenH,
705
+ rx: screenRadius,
706
+ ry: screenRadius,
707
+ fill: "black"
708
+ }
709
+ )
710
+ ] })
711
+ ] }),
712
+ /* @__PURE__ */ jsxRuntime.jsx(
713
+ "rect",
714
+ {
715
+ x: "0",
716
+ y: "0",
717
+ width: totalW,
718
+ height: totalH,
719
+ rx: outerRadius,
720
+ ry: outerRadius,
721
+ fill: "url(#frame-gradient-iphone-air)",
722
+ stroke: frameBorder,
723
+ strokeWidth: "1.5",
724
+ mask: "url(#frame-screen-mask-iphone-air)"
725
+ }
726
+ ),
727
+ /* @__PURE__ */ jsxRuntime.jsx(
728
+ "rect",
729
+ {
730
+ "data-zone": "screen-area",
731
+ x: bezelSide,
732
+ y: bezelTop,
733
+ width: screenW,
734
+ height: screenH,
735
+ rx: screenRadius,
736
+ ry: screenRadius,
737
+ fill: "none"
738
+ }
739
+ ),
740
+ /* @__PURE__ */ jsxRuntime.jsx(
741
+ "rect",
742
+ {
743
+ "data-zone": "hardware-overlay",
744
+ "data-zone-type": "dynamic-island",
745
+ "data-zone-shape": "pill",
746
+ x: bezelSide + 147,
747
+ y: bezelTop + 11,
748
+ width: "126",
749
+ height: "37",
750
+ rx: "18.5",
751
+ ry: "18.5",
752
+ fill: islandColor
753
+ }
754
+ ),
755
+ /* @__PURE__ */ jsxRuntime.jsx(
756
+ "rect",
757
+ {
758
+ "data-zone": "safe-area-top-inset",
759
+ x: bezelSide,
760
+ y: bezelTop,
761
+ width: screenW,
762
+ height: "68",
763
+ fill: "transparent"
764
+ }
765
+ ),
766
+ /* @__PURE__ */ jsxRuntime.jsx(
767
+ "rect",
768
+ {
769
+ "data-zone": "safe-area-bottom-inset",
770
+ x: bezelSide,
771
+ y: bezelTop + screenH - 34,
772
+ width: screenW,
773
+ height: "34",
774
+ fill: "transparent"
775
+ }
776
+ ),
777
+ /* @__PURE__ */ jsxRuntime.jsx(
778
+ "rect",
779
+ {
780
+ "data-zone": "status-bar",
781
+ "data-zone-style": "dynamic-island",
782
+ x: bezelSide,
783
+ y: bezelTop,
784
+ width: screenW,
785
+ height: "54",
786
+ fill: "transparent"
787
+ }
788
+ ),
789
+ /* @__PURE__ */ jsxRuntime.jsx(
790
+ "rect",
791
+ {
792
+ "data-zone": "home-indicator",
793
+ "data-zone-type": "swipe-bar",
794
+ x: bezelSide + (screenW - 134) / 2,
795
+ y: bezelTop + screenH - 13,
796
+ width: "134",
797
+ height: "5",
798
+ rx: "2.5",
799
+ ry: "2.5",
800
+ fill: "rgba(255,255,255,0.3)"
801
+ }
802
+ ),
803
+ /* @__PURE__ */ jsxRuntime.jsx(
804
+ "rect",
805
+ {
806
+ "data-button": "volume-up",
807
+ "data-side": "left",
808
+ x: "-1",
809
+ y: "200",
810
+ width: "3",
811
+ height: "32",
812
+ rx: "1.5",
813
+ fill: buttonColor
814
+ }
815
+ ),
816
+ /* @__PURE__ */ jsxRuntime.jsx(
817
+ "rect",
818
+ {
819
+ "data-button": "volume-down",
820
+ "data-side": "left",
821
+ x: "-1",
822
+ y: "240",
823
+ width: "3",
824
+ height: "32",
825
+ rx: "1.5",
826
+ fill: buttonColor
827
+ }
828
+ ),
829
+ /* @__PURE__ */ jsxRuntime.jsx(
830
+ "rect",
831
+ {
832
+ "data-button": "power",
833
+ "data-side": "right",
834
+ x: totalW - 2,
835
+ y: "220",
836
+ width: "3",
837
+ height: "40",
838
+ rx: "1.5",
839
+ fill: buttonColor
840
+ }
841
+ ),
842
+ /* @__PURE__ */ jsxRuntime.jsx(
843
+ "rect",
844
+ {
845
+ x: (totalW - 24) / 2,
846
+ y: totalH - 5,
847
+ width: "24",
848
+ height: "4",
849
+ rx: "2",
850
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
851
+ }
852
+ ),
853
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
854
+ "circle",
855
+ {
856
+ cx: totalW / 2 - 30 + i * 6,
857
+ cy: totalH - 8,
858
+ r: "1.2",
859
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
860
+ },
861
+ `speaker-l-${i}`
862
+ )),
863
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
864
+ "circle",
865
+ {
866
+ cx: totalW / 2 + 8 + i * 6,
867
+ cy: totalH - 8,
868
+ r: "1.2",
869
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
870
+ },
871
+ `speaker-r-${i}`
872
+ ))
873
+ ]
874
+ }
875
+ );
876
+ }
877
+ var IPHONE_AIR_FRAME = {
878
+ bezelTop: 20,
879
+ bezelBottom: 20,
880
+ bezelLeft: 10,
881
+ bezelRight: 10,
882
+ totalWidth: 440,
883
+ totalHeight: 952,
884
+ screenWidth: 420,
885
+ screenHeight: 912,
886
+ screenRadius: 55
887
+ };
888
+
889
+ // src/ios/iphone-16e/metadata.ts
890
+ var IPHONE_16E_META = {
891
+ id: "iphone-16e",
892
+ name: "iPhone 16e",
893
+ platform: "ios",
894
+ year: 2025,
895
+ screen: {
896
+ width: 390,
897
+ height: 844,
898
+ physicalWidth: 1170,
899
+ physicalHeight: 2532,
900
+ dpr: 3,
901
+ aspectRatio: "19.5:9",
902
+ cornerRadius: 50,
903
+ ppi: 460
904
+ }
905
+ };
906
+ var IPHONE_16E_LAYOUT = {
907
+ meta: IPHONE_16E_META,
908
+ safeArea: {
909
+ portrait: { top: 47, bottom: 34, left: 0, right: 0 },
910
+ landscape: { top: 0, bottom: 21, left: 47, right: 47 }
911
+ },
912
+ hardwareOverlays: {
913
+ type: "notch",
914
+ portrait: {
915
+ x: 90,
916
+ // centered: (390 - 210) / 2 = 90
917
+ y: 0,
918
+ width: 210,
919
+ height: 30,
920
+ shape: "rectangle",
921
+ cornerRadius: 20
922
+ }
923
+ },
924
+ statusBar: {
925
+ height: 44,
926
+ style: "notch",
927
+ hasTime: true,
928
+ hasBattery: true,
929
+ hasSignal: true
930
+ },
931
+ homeIndicator: {
932
+ type: "swipe-bar",
933
+ height: 5,
934
+ width: 134,
935
+ visible: true
936
+ },
937
+ hardwareButtons: {
938
+ volumeUp: { side: "left", yPosition: 180 },
939
+ volumeDown: { side: "left", yPosition: 220 },
940
+ power: { side: "right", yPosition: 195 }
941
+ }
942
+ };
943
+ function IPhone16eSVG({ colorScheme = "dark", style }) {
944
+ const frameColor = colorScheme === "dark" ? "#1a1a1a" : "#e8e8e8";
945
+ const frameBorder = colorScheme === "dark" ? "#333" : "#ccc";
946
+ const buttonColor = colorScheme === "dark" ? "#2a2a2a" : "#d0d0d0";
947
+ const notchColor = "#000000";
948
+ const bezelSide = 12;
949
+ const bezelTop = 20;
950
+ const bezelBottom = 20;
951
+ const screenW = 390;
952
+ const screenH = 844;
953
+ const totalW = screenW + bezelSide * 2;
954
+ const totalH = screenH + bezelTop + bezelBottom;
955
+ const outerRadius = 56;
956
+ const screenRadius = 50;
957
+ const notchWidth = 210;
958
+ const notchHeight = 30;
959
+ const notchX = (screenW - notchWidth) / 2;
960
+ const notchRadius = 20;
961
+ return /* @__PURE__ */ jsxRuntime.jsxs(
962
+ "svg",
963
+ {
964
+ viewBox: `0 0 ${totalW} ${totalH}`,
965
+ width: totalW,
966
+ height: totalH,
967
+ xmlns: "http://www.w3.org/2000/svg",
968
+ style,
969
+ children: [
970
+ /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
971
+ /* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: "frame-gradient-iphone-16e", x1: "0", y1: "0", x2: "1", y2: "1", children: [
972
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: frameColor }),
973
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "50%", stopColor: colorScheme === "dark" ? "#252525" : "#f0f0f0" }),
974
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: frameColor })
975
+ ] }),
976
+ /* @__PURE__ */ jsxRuntime.jsxs("mask", { id: "frame-screen-mask-iphone-16e", children: [
977
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: totalW, height: totalH, fill: "white" }),
978
+ /* @__PURE__ */ jsxRuntime.jsx(
979
+ "rect",
980
+ {
981
+ x: bezelSide,
982
+ y: bezelTop,
983
+ width: screenW,
984
+ height: screenH,
985
+ rx: screenRadius,
986
+ ry: screenRadius,
987
+ fill: "black"
988
+ }
989
+ )
990
+ ] })
991
+ ] }),
992
+ /* @__PURE__ */ jsxRuntime.jsx(
993
+ "rect",
994
+ {
995
+ x: "0",
996
+ y: "0",
997
+ width: totalW,
998
+ height: totalH,
999
+ rx: outerRadius,
1000
+ ry: outerRadius,
1001
+ fill: "url(#frame-gradient-iphone-16e)",
1002
+ stroke: frameBorder,
1003
+ strokeWidth: "1.5",
1004
+ mask: "url(#frame-screen-mask-iphone-16e)"
1005
+ }
1006
+ ),
1007
+ /* @__PURE__ */ jsxRuntime.jsx(
1008
+ "rect",
1009
+ {
1010
+ "data-zone": "screen-area",
1011
+ x: bezelSide,
1012
+ y: bezelTop,
1013
+ width: screenW,
1014
+ height: screenH,
1015
+ rx: screenRadius,
1016
+ ry: screenRadius,
1017
+ fill: "none"
1018
+ }
1019
+ ),
1020
+ /* @__PURE__ */ jsxRuntime.jsx(
1021
+ "rect",
1022
+ {
1023
+ "data-zone": "hardware-overlay",
1024
+ "data-zone-type": "notch",
1025
+ "data-zone-shape": "rectangle",
1026
+ x: bezelSide + notchX,
1027
+ y: bezelTop,
1028
+ width: notchWidth,
1029
+ height: notchHeight,
1030
+ rx: notchRadius,
1031
+ ry: notchRadius,
1032
+ fill: notchColor
1033
+ }
1034
+ ),
1035
+ /* @__PURE__ */ jsxRuntime.jsx(
1036
+ "rect",
1037
+ {
1038
+ "data-zone": "safe-area-top-inset",
1039
+ x: bezelSide,
1040
+ y: bezelTop,
1041
+ width: screenW,
1042
+ height: "47",
1043
+ fill: "transparent"
1044
+ }
1045
+ ),
1046
+ /* @__PURE__ */ jsxRuntime.jsx(
1047
+ "rect",
1048
+ {
1049
+ "data-zone": "safe-area-bottom-inset",
1050
+ x: bezelSide,
1051
+ y: bezelTop + screenH - 34,
1052
+ width: screenW,
1053
+ height: "34",
1054
+ fill: "transparent"
1055
+ }
1056
+ ),
1057
+ /* @__PURE__ */ jsxRuntime.jsx(
1058
+ "rect",
1059
+ {
1060
+ "data-zone": "status-bar",
1061
+ "data-zone-style": "notch",
1062
+ x: bezelSide,
1063
+ y: bezelTop,
1064
+ width: screenW,
1065
+ height: "44",
1066
+ fill: "transparent"
1067
+ }
1068
+ ),
1069
+ /* @__PURE__ */ jsxRuntime.jsx(
1070
+ "rect",
1071
+ {
1072
+ "data-zone": "home-indicator",
1073
+ "data-zone-type": "swipe-bar",
1074
+ x: bezelSide + (screenW - 134) / 2,
1075
+ y: bezelTop + screenH - 13,
1076
+ width: "134",
1077
+ height: "5",
1078
+ rx: "2.5",
1079
+ ry: "2.5",
1080
+ fill: "rgba(255,255,255,0.3)"
1081
+ }
1082
+ ),
1083
+ /* @__PURE__ */ jsxRuntime.jsx(
1084
+ "rect",
1085
+ {
1086
+ "data-button": "volume-up",
1087
+ "data-side": "left",
1088
+ x: "-1",
1089
+ y: "190",
1090
+ width: "3",
1091
+ height: "32",
1092
+ rx: "1.5",
1093
+ fill: buttonColor
1094
+ }
1095
+ ),
1096
+ /* @__PURE__ */ jsxRuntime.jsx(
1097
+ "rect",
1098
+ {
1099
+ "data-button": "volume-down",
1100
+ "data-side": "left",
1101
+ x: "-1",
1102
+ y: "230",
1103
+ width: "3",
1104
+ height: "32",
1105
+ rx: "1.5",
1106
+ fill: buttonColor
1107
+ }
1108
+ ),
1109
+ /* @__PURE__ */ jsxRuntime.jsx(
1110
+ "rect",
1111
+ {
1112
+ "data-button": "power",
1113
+ "data-side": "right",
1114
+ x: totalW - 2,
1115
+ y: "210",
1116
+ width: "3",
1117
+ height: "40",
1118
+ rx: "1.5",
1119
+ fill: buttonColor
1120
+ }
1121
+ ),
1122
+ /* @__PURE__ */ jsxRuntime.jsx(
1123
+ "rect",
1124
+ {
1125
+ x: (totalW - 24) / 2,
1126
+ y: totalH - 5,
1127
+ width: "24",
1128
+ height: "4",
1129
+ rx: "2",
1130
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
1131
+ }
1132
+ ),
1133
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
1134
+ "circle",
1135
+ {
1136
+ cx: totalW / 2 - 30 + i * 6,
1137
+ cy: totalH - 8,
1138
+ r: "1.2",
1139
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
1140
+ },
1141
+ `speaker-l-${i}`
1142
+ )),
1143
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
1144
+ "circle",
1145
+ {
1146
+ cx: totalW / 2 + 8 + i * 6,
1147
+ cy: totalH - 8,
1148
+ r: "1.2",
1149
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
1150
+ },
1151
+ `speaker-r-${i}`
1152
+ ))
1153
+ ]
1154
+ }
1155
+ );
1156
+ }
1157
+ var IPHONE_16E_FRAME = {
1158
+ bezelTop: 20,
1159
+ bezelBottom: 20,
1160
+ bezelLeft: 12,
1161
+ bezelRight: 12,
1162
+ totalWidth: 414,
1163
+ totalHeight: 884,
1164
+ screenWidth: 390,
1165
+ screenHeight: 844,
1166
+ screenRadius: 50
1167
+ };
1168
+
1169
+ // src/ios/iphone-16/metadata.ts
1170
+ var IPHONE_16_META = {
1171
+ id: "iphone-16",
1172
+ name: "iPhone 16",
1173
+ platform: "ios",
1174
+ year: 2024,
1175
+ screen: {
1176
+ width: 393,
1177
+ height: 852,
1178
+ physicalWidth: 1179,
1179
+ physicalHeight: 2556,
1180
+ dpr: 3,
1181
+ aspectRatio: "19.5:9",
1182
+ cornerRadius: 55,
1183
+ ppi: 460
1184
+ }
1185
+ };
1186
+ var IPHONE_16_LAYOUT = {
1187
+ meta: IPHONE_16_META,
1188
+ safeArea: {
1189
+ portrait: { top: 59, bottom: 34, left: 0, right: 0 },
1190
+ landscape: { top: 0, bottom: 21, left: 59, right: 59 }
1191
+ },
1192
+ hardwareOverlays: {
1193
+ type: "dynamic-island",
1194
+ portrait: {
1195
+ x: 133.5,
1196
+ // centered: (393 - 126) / 2 = 133.5
1197
+ y: 11,
1198
+ width: 126,
1199
+ height: 37,
1200
+ shape: "pill",
1201
+ cornerRadius: 18.5
1202
+ }
1203
+ },
1204
+ statusBar: {
1205
+ height: 54,
1206
+ style: "dynamic-island",
1207
+ hasTime: true,
1208
+ hasBattery: true,
1209
+ hasSignal: true
1210
+ },
1211
+ homeIndicator: {
1212
+ type: "swipe-bar",
1213
+ height: 5,
1214
+ width: 134,
1215
+ visible: true
1216
+ },
1217
+ hardwareButtons: {
1218
+ volumeUp: { side: "left", yPosition: 195 },
1219
+ volumeDown: { side: "left", yPosition: 235 },
1220
+ power: { side: "right", yPosition: 215 },
1221
+ cameraControl: { side: "right", yPosition: 480 }
1222
+ }
1223
+ };
1224
+ function IPhone16SVG({ colorScheme = "dark", style }) {
1225
+ const frameColor = colorScheme === "dark" ? "#1a1a1a" : "#e8e8e8";
1226
+ const frameBorder = colorScheme === "dark" ? "#333" : "#ccc";
1227
+ const buttonColor = colorScheme === "dark" ? "#2a2a2a" : "#d0d0d0";
1228
+ const islandColor = "#000000";
1229
+ const bezelSide = 15;
1230
+ const bezelTop = 23;
1231
+ const bezelBottom = 23;
1232
+ const screenW = 393;
1233
+ const screenH = 852;
1234
+ const totalW = screenW + bezelSide * 2;
1235
+ const totalH = screenH + bezelTop + bezelBottom;
1236
+ const outerRadius = 55;
1237
+ const screenRadius = 48;
1238
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1239
+ "svg",
1240
+ {
1241
+ viewBox: `0 0 ${totalW} ${totalH}`,
1242
+ width: totalW,
1243
+ height: totalH,
1244
+ xmlns: "http://www.w3.org/2000/svg",
1245
+ style,
1246
+ children: [
1247
+ /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
1248
+ /* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: "frame-gradient-iphone-16", x1: "0", y1: "0", x2: "1", y2: "1", children: [
1249
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: frameColor }),
1250
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "50%", stopColor: colorScheme === "dark" ? "#252525" : "#f0f0f0" }),
1251
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: frameColor })
1252
+ ] }),
1253
+ /* @__PURE__ */ jsxRuntime.jsxs("mask", { id: "frame-screen-mask-iphone-16", children: [
1254
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: totalW, height: totalH, fill: "white" }),
1255
+ /* @__PURE__ */ jsxRuntime.jsx(
1256
+ "rect",
1257
+ {
1258
+ x: bezelSide,
1259
+ y: bezelTop,
1260
+ width: screenW,
1261
+ height: screenH,
1262
+ rx: screenRadius,
1263
+ ry: screenRadius,
1264
+ fill: "black"
1265
+ }
1266
+ )
1267
+ ] })
1268
+ ] }),
1269
+ /* @__PURE__ */ jsxRuntime.jsx(
1270
+ "rect",
1271
+ {
1272
+ x: "0",
1273
+ y: "0",
1274
+ width: totalW,
1275
+ height: totalH,
1276
+ rx: outerRadius,
1277
+ ry: outerRadius,
1278
+ fill: "url(#frame-gradient-iphone-16)",
1279
+ stroke: frameBorder,
1280
+ strokeWidth: "1.5",
1281
+ mask: "url(#frame-screen-mask-iphone-16)"
1282
+ }
1283
+ ),
1284
+ /* @__PURE__ */ jsxRuntime.jsx(
1285
+ "rect",
1286
+ {
1287
+ "data-zone": "screen-area",
1288
+ x: bezelSide,
1289
+ y: bezelTop,
1290
+ width: screenW,
1291
+ height: screenH,
1292
+ rx: screenRadius,
1293
+ ry: screenRadius,
1294
+ fill: "none"
1295
+ }
1296
+ ),
1297
+ /* @__PURE__ */ jsxRuntime.jsx(
1298
+ "rect",
1299
+ {
1300
+ "data-zone": "hardware-overlay",
1301
+ "data-zone-type": "dynamic-island",
1302
+ "data-zone-shape": "pill",
1303
+ x: bezelSide + (screenW - 126) / 2,
1304
+ y: bezelTop + 11,
1305
+ width: "126",
1306
+ height: "37",
1307
+ rx: "18.5",
1308
+ ry: "18.5",
1309
+ fill: islandColor
1310
+ }
1311
+ ),
1312
+ /* @__PURE__ */ jsxRuntime.jsx(
1313
+ "rect",
1314
+ {
1315
+ "data-zone": "safe-area-top-inset",
1316
+ x: bezelSide,
1317
+ y: bezelTop,
1318
+ width: screenW,
1319
+ height: "62",
1320
+ fill: "transparent"
1321
+ }
1322
+ ),
1323
+ /* @__PURE__ */ jsxRuntime.jsx(
1324
+ "rect",
1325
+ {
1326
+ "data-zone": "safe-area-bottom-inset",
1327
+ x: bezelSide,
1328
+ y: bezelTop + screenH - 34,
1329
+ width: screenW,
1330
+ height: "34",
1331
+ fill: "transparent"
1332
+ }
1333
+ ),
1334
+ /* @__PURE__ */ jsxRuntime.jsx(
1335
+ "rect",
1336
+ {
1337
+ "data-zone": "status-bar",
1338
+ "data-zone-style": "dynamic-island",
1339
+ x: bezelSide,
1340
+ y: bezelTop,
1341
+ width: screenW,
1342
+ height: "54",
1343
+ fill: "transparent"
1344
+ }
1345
+ ),
1346
+ /* @__PURE__ */ jsxRuntime.jsx(
1347
+ "rect",
1348
+ {
1349
+ "data-zone": "home-indicator",
1350
+ "data-zone-type": "swipe-bar",
1351
+ x: bezelSide + (screenW - 134) / 2,
1352
+ y: bezelTop + screenH - 13,
1353
+ width: "134",
1354
+ height: "5",
1355
+ rx: "2.5",
1356
+ ry: "2.5",
1357
+ fill: "rgba(255,255,255,0.3)"
1358
+ }
1359
+ ),
1360
+ /* @__PURE__ */ jsxRuntime.jsx(
1361
+ "rect",
1362
+ {
1363
+ "data-button": "volume-up",
1364
+ "data-side": "left",
1365
+ x: "-1",
1366
+ y: "200",
1367
+ width: "3",
1368
+ height: "32",
1369
+ rx: "1.5",
1370
+ fill: buttonColor
1371
+ }
1372
+ ),
1373
+ /* @__PURE__ */ jsxRuntime.jsx(
1374
+ "rect",
1375
+ {
1376
+ "data-button": "volume-down",
1377
+ "data-side": "left",
1378
+ x: "-1",
1379
+ y: "240",
1380
+ width: "3",
1381
+ height: "32",
1382
+ rx: "1.5",
1383
+ fill: buttonColor
1384
+ }
1385
+ ),
1386
+ /* @__PURE__ */ jsxRuntime.jsx(
1387
+ "rect",
1388
+ {
1389
+ "data-button": "power",
1390
+ "data-side": "right",
1391
+ x: totalW - 2,
1392
+ y: "220",
1393
+ width: "3",
1394
+ height: "40",
1395
+ rx: "1.5",
1396
+ fill: buttonColor
1397
+ }
1398
+ ),
1399
+ /* @__PURE__ */ jsxRuntime.jsx(
1400
+ "circle",
1401
+ {
1402
+ "data-button": "camera",
1403
+ "data-side": "right",
1404
+ cx: totalW - 0.5,
1405
+ cy: "500",
1406
+ r: "6",
1407
+ fill: buttonColor,
1408
+ stroke: frameBorder,
1409
+ strokeWidth: "0.5"
1410
+ }
1411
+ ),
1412
+ /* @__PURE__ */ jsxRuntime.jsx(
1413
+ "rect",
1414
+ {
1415
+ x: (totalW - 24) / 2,
1416
+ y: totalH - 5,
1417
+ width: "24",
1418
+ height: "4",
1419
+ rx: "2",
1420
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
1421
+ }
1422
+ ),
1423
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
1424
+ "circle",
1425
+ {
1426
+ cx: totalW / 2 - 30 + i * 6,
1427
+ cy: totalH - 8,
1428
+ r: "1.2",
1429
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
1430
+ },
1431
+ `speaker-l-${i}`
1432
+ )),
1433
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
1434
+ "circle",
1435
+ {
1436
+ cx: totalW / 2 + 8 + i * 6,
1437
+ cy: totalH - 8,
1438
+ r: "1.2",
1439
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
1440
+ },
1441
+ `speaker-r-${i}`
1442
+ ))
1443
+ ]
1444
+ }
1445
+ );
1446
+ }
1447
+ var IPHONE_16_FRAME = {
1448
+ bezelTop: 23,
1449
+ bezelBottom: 23,
1450
+ bezelLeft: 15,
1451
+ bezelRight: 15,
1452
+ totalWidth: 423,
1453
+ totalHeight: 898,
1454
+ screenWidth: 393,
1455
+ screenHeight: 852,
1456
+ screenRadius: 48
1457
+ };
1458
+
1459
+ // src/ios/iphone-se-3/metadata.ts
1460
+ var IPHONE_SE_3_META = {
1461
+ id: "iphone-se-3",
1462
+ name: "iPhone SE (3rd Gen)",
1463
+ platform: "ios",
1464
+ year: 2022,
1465
+ screen: {
1466
+ width: 375,
1467
+ height: 667,
1468
+ physicalWidth: 750,
1469
+ physicalHeight: 1334,
1470
+ dpr: 2,
1471
+ aspectRatio: "16:9",
1472
+ cornerRadius: 5,
1473
+ ppi: 326
1474
+ }
1475
+ };
1476
+ var IPHONE_SE_3_LAYOUT = {
1477
+ meta: IPHONE_SE_3_META,
1478
+ safeArea: {
1479
+ portrait: { top: 20, bottom: 0, left: 0, right: 0 },
1480
+ landscape: { top: 0, bottom: 0, left: 0, right: 0 }
1481
+ },
1482
+ hardwareOverlays: {
1483
+ type: "none",
1484
+ portrait: {
1485
+ x: 0,
1486
+ y: 0,
1487
+ width: 0,
1488
+ height: 0,
1489
+ shape: "rectangle"
1490
+ }
1491
+ },
1492
+ statusBar: {
1493
+ height: 20,
1494
+ style: "fullwidth",
1495
+ hasTime: true,
1496
+ hasBattery: true,
1497
+ hasSignal: true
1498
+ },
1499
+ homeIndicator: {
1500
+ type: "button",
1501
+ height: 0,
1502
+ visible: false
1503
+ },
1504
+ hardwareButtons: {
1505
+ volumeUp: { side: "left", yPosition: 135 },
1506
+ volumeDown: { side: "left", yPosition: 165 },
1507
+ power: { side: "right", yPosition: 90 }
1508
+ }
1509
+ };
1510
+ function IPhoneSE3SVG({ colorScheme = "dark", style }) {
1511
+ const frameColor = colorScheme === "dark" ? "#1a1a1a" : "#e8e8e8";
1512
+ const frameBorder = colorScheme === "dark" ? "#333" : "#ccc";
1513
+ const buttonColor = colorScheme === "dark" ? "#2a2a2a" : "#d0d0d0";
1514
+ const bezelSide = 10;
1515
+ const bezelTop = 70;
1516
+ const bezelBottom = 70;
1517
+ const screenW = 375;
1518
+ const screenH = 667;
1519
+ const totalW = screenW + bezelSide * 2;
1520
+ const totalH = screenH + bezelTop + bezelBottom;
1521
+ const outerRadius = 36;
1522
+ const screenRadius = 5;
1523
+ const homeButtonDiameter = 58;
1524
+ const homeButtonRadius = homeButtonDiameter / 2;
1525
+ const homeButtonCX = totalW / 2;
1526
+ const homeButtonCY = bezelTop + screenH + bezelBottom / 2;
1527
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1528
+ "svg",
1529
+ {
1530
+ viewBox: `0 0 ${totalW} ${totalH}`,
1531
+ width: totalW,
1532
+ height: totalH,
1533
+ xmlns: "http://www.w3.org/2000/svg",
1534
+ style,
1535
+ children: [
1536
+ /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
1537
+ /* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: "frame-gradient-iphone-se-3", x1: "0", y1: "0", x2: "1", y2: "1", children: [
1538
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: frameColor }),
1539
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "50%", stopColor: colorScheme === "dark" ? "#252525" : "#f0f0f0" }),
1540
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: frameColor })
1541
+ ] }),
1542
+ /* @__PURE__ */ jsxRuntime.jsxs("mask", { id: "frame-screen-mask-iphone-se-3", children: [
1543
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: totalW, height: totalH, fill: "white" }),
1544
+ /* @__PURE__ */ jsxRuntime.jsx(
1545
+ "rect",
1546
+ {
1547
+ x: bezelSide,
1548
+ y: bezelTop,
1549
+ width: screenW,
1550
+ height: screenH,
1551
+ rx: screenRadius,
1552
+ ry: screenRadius,
1553
+ fill: "black"
1554
+ }
1555
+ )
1556
+ ] })
1557
+ ] }),
1558
+ /* @__PURE__ */ jsxRuntime.jsx(
1559
+ "rect",
1560
+ {
1561
+ x: "0",
1562
+ y: "0",
1563
+ width: totalW,
1564
+ height: totalH,
1565
+ rx: outerRadius,
1566
+ ry: outerRadius,
1567
+ fill: "url(#frame-gradient-iphone-se-3)",
1568
+ stroke: frameBorder,
1569
+ strokeWidth: "1.5",
1570
+ mask: "url(#frame-screen-mask-iphone-se-3)"
1571
+ }
1572
+ ),
1573
+ /* @__PURE__ */ jsxRuntime.jsx(
1574
+ "rect",
1575
+ {
1576
+ "data-zone": "screen-area",
1577
+ x: bezelSide,
1578
+ y: bezelTop,
1579
+ width: screenW,
1580
+ height: screenH,
1581
+ rx: screenRadius,
1582
+ ry: screenRadius,
1583
+ fill: "none"
1584
+ }
1585
+ ),
1586
+ /* @__PURE__ */ jsxRuntime.jsx(
1587
+ "rect",
1588
+ {
1589
+ x: (totalW - 40) / 2,
1590
+ y: 28,
1591
+ width: "40",
1592
+ height: "5",
1593
+ rx: "2.5",
1594
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
1595
+ }
1596
+ ),
1597
+ /* @__PURE__ */ jsxRuntime.jsx(
1598
+ "circle",
1599
+ {
1600
+ cx: totalW / 2 + 32,
1601
+ cy: 30,
1602
+ r: "4",
1603
+ fill: colorScheme === "dark" ? "#0a0a0a" : "#999"
1604
+ }
1605
+ ),
1606
+ /* @__PURE__ */ jsxRuntime.jsx(
1607
+ "circle",
1608
+ {
1609
+ cx: homeButtonCX,
1610
+ cy: homeButtonCY,
1611
+ r: homeButtonRadius,
1612
+ fill: "none",
1613
+ stroke: colorScheme === "dark" ? "#444" : "#bbb",
1614
+ strokeWidth: "2"
1615
+ }
1616
+ ),
1617
+ /* @__PURE__ */ jsxRuntime.jsx(
1618
+ "circle",
1619
+ {
1620
+ cx: homeButtonCX,
1621
+ cy: homeButtonCY,
1622
+ r: homeButtonRadius - 3,
1623
+ fill: colorScheme === "dark" ? "#0f0f0f" : "#ddd"
1624
+ }
1625
+ ),
1626
+ /* @__PURE__ */ jsxRuntime.jsx(
1627
+ "rect",
1628
+ {
1629
+ x: homeButtonCX - 8,
1630
+ y: homeButtonCY - 8,
1631
+ width: "16",
1632
+ height: "16",
1633
+ rx: "4",
1634
+ ry: "4",
1635
+ fill: "none",
1636
+ stroke: colorScheme === "dark" ? "#333" : "#ccc",
1637
+ strokeWidth: "1"
1638
+ }
1639
+ ),
1640
+ /* @__PURE__ */ jsxRuntime.jsx(
1641
+ "rect",
1642
+ {
1643
+ "data-zone": "safe-area-top-inset",
1644
+ x: bezelSide,
1645
+ y: bezelTop,
1646
+ width: screenW,
1647
+ height: "20",
1648
+ fill: "transparent"
1649
+ }
1650
+ ),
1651
+ /* @__PURE__ */ jsxRuntime.jsx(
1652
+ "rect",
1653
+ {
1654
+ "data-zone": "status-bar",
1655
+ "data-zone-style": "fullwidth",
1656
+ x: bezelSide,
1657
+ y: bezelTop,
1658
+ width: screenW,
1659
+ height: "20",
1660
+ fill: "transparent"
1661
+ }
1662
+ ),
1663
+ /* @__PURE__ */ jsxRuntime.jsx(
1664
+ "rect",
1665
+ {
1666
+ "data-button": "volume-up",
1667
+ "data-side": "left",
1668
+ x: "-1",
1669
+ y: "160",
1670
+ width: "3",
1671
+ height: "32",
1672
+ rx: "1.5",
1673
+ fill: buttonColor
1674
+ }
1675
+ ),
1676
+ /* @__PURE__ */ jsxRuntime.jsx(
1677
+ "rect",
1678
+ {
1679
+ "data-button": "volume-down",
1680
+ "data-side": "left",
1681
+ x: "-1",
1682
+ y: "200",
1683
+ width: "3",
1684
+ height: "32",
1685
+ rx: "1.5",
1686
+ fill: buttonColor
1687
+ }
1688
+ ),
1689
+ /* @__PURE__ */ jsxRuntime.jsx(
1690
+ "rect",
1691
+ {
1692
+ "data-button": "power",
1693
+ "data-side": "right",
1694
+ x: totalW - 2,
1695
+ y: "140",
1696
+ width: "3",
1697
+ height: "40",
1698
+ rx: "1.5",
1699
+ fill: buttonColor
1700
+ }
1701
+ ),
1702
+ /* @__PURE__ */ jsxRuntime.jsx(
1703
+ "rect",
1704
+ {
1705
+ x: (totalW - 20) / 2,
1706
+ y: totalH - 5,
1707
+ width: "20",
1708
+ height: "4",
1709
+ rx: "2",
1710
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
1711
+ }
1712
+ ),
1713
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
1714
+ "circle",
1715
+ {
1716
+ cx: totalW / 2 - 28 + i * 6,
1717
+ cy: totalH - 8,
1718
+ r: "1.2",
1719
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
1720
+ },
1721
+ `speaker-l-${i}`
1722
+ )),
1723
+ [0, 1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
1724
+ "circle",
1725
+ {
1726
+ cx: totalW / 2 + 6 + i * 6,
1727
+ cy: totalH - 8,
1728
+ r: "1.2",
1729
+ fill: colorScheme === "dark" ? "#111" : "#aaa"
1730
+ },
1731
+ `speaker-r-${i}`
1732
+ ))
1733
+ ]
1734
+ }
1735
+ );
1736
+ }
1737
+ var IPHONE_SE_3_FRAME = {
1738
+ bezelTop: 70,
1739
+ bezelBottom: 70,
1740
+ bezelLeft: 10,
1741
+ bezelRight: 10,
1742
+ totalWidth: 395,
1743
+ totalHeight: 807,
1744
+ screenWidth: 375,
1745
+ screenHeight: 667,
1746
+ screenRadius: 5
1747
+ };
1748
+
1749
+ exports.IPHONE_16E_FRAME = IPHONE_16E_FRAME;
1750
+ exports.IPHONE_16E_LAYOUT = IPHONE_16E_LAYOUT;
1751
+ exports.IPHONE_16E_META = IPHONE_16E_META;
1752
+ exports.IPHONE_16_FRAME = IPHONE_16_FRAME;
1753
+ exports.IPHONE_16_LAYOUT = IPHONE_16_LAYOUT;
1754
+ exports.IPHONE_16_META = IPHONE_16_META;
1755
+ exports.IPHONE_17_PRO_FRAME = IPHONE_17_PRO_FRAME;
1756
+ exports.IPHONE_17_PRO_LAYOUT = IPHONE_17_PRO_LAYOUT;
1757
+ exports.IPHONE_17_PRO_MAX_FRAME = IPHONE_17_PRO_MAX_FRAME;
1758
+ exports.IPHONE_17_PRO_MAX_LAYOUT = IPHONE_17_PRO_MAX_LAYOUT;
1759
+ exports.IPHONE_17_PRO_MAX_META = IPHONE_17_PRO_MAX_META;
1760
+ exports.IPHONE_17_PRO_META = IPHONE_17_PRO_META;
1761
+ exports.IPHONE_AIR_FRAME = IPHONE_AIR_FRAME;
1762
+ exports.IPHONE_AIR_LAYOUT = IPHONE_AIR_LAYOUT;
1763
+ exports.IPHONE_AIR_META = IPHONE_AIR_META;
1764
+ exports.IPHONE_SE_3_FRAME = IPHONE_SE_3_FRAME;
1765
+ exports.IPHONE_SE_3_LAYOUT = IPHONE_SE_3_LAYOUT;
1766
+ exports.IPHONE_SE_3_META = IPHONE_SE_3_META;
1767
+ exports.IPhone16SVG = IPhone16SVG;
1768
+ exports.IPhone16eSVG = IPhone16eSVG;
1769
+ exports.IPhone17ProMaxSVG = IPhone17ProMaxSVG;
1770
+ exports.IPhone17ProSVG = IPhone17ProSVG;
1771
+ exports.IPhoneAirSVG = IPhoneAirSVG;
1772
+ exports.IPhoneSE3SVG = IPhoneSE3SVG;
1773
+ //# sourceMappingURL=chunk-OI46UKOY.cjs.map
1774
+ //# sourceMappingURL=chunk-OI46UKOY.cjs.map