@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,1281 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+
3
+ // src/android/galaxy-s25-ultra/metadata.ts
4
+ var GALAXY_S25_ULTRA_META = {
5
+ id: "galaxy-s25-ultra",
6
+ name: "Galaxy S25 Ultra",
7
+ platform: "android",
8
+ year: 2025,
9
+ screen: {
10
+ width: 384,
11
+ height: 824,
12
+ physicalWidth: 1440,
13
+ physicalHeight: 3088,
14
+ dpr: 3.75,
15
+ aspectRatio: "19.5:9",
16
+ cornerRadius: 42,
17
+ ppi: 505
18
+ }
19
+ };
20
+ var GALAXY_S25_ULTRA_LAYOUT = {
21
+ meta: GALAXY_S25_ULTRA_META,
22
+ safeArea: {
23
+ portrait: { top: 38, bottom: 24, left: 0, right: 0 },
24
+ landscape: { top: 0, bottom: 24, left: 38, right: 38 }
25
+ },
26
+ hardwareOverlays: {
27
+ type: "punch-hole",
28
+ portrait: {
29
+ x: 187,
30
+ // centered: (384 - 10) / 2 = 187
31
+ y: 12,
32
+ width: 10,
33
+ height: 10,
34
+ shape: "circle",
35
+ cornerRadius: 5
36
+ }
37
+ },
38
+ statusBar: {
39
+ height: 28,
40
+ style: "fullwidth",
41
+ hasTime: true,
42
+ hasBattery: true,
43
+ hasSignal: true
44
+ },
45
+ homeIndicator: {
46
+ type: "gestureline",
47
+ height: 5,
48
+ width: 90,
49
+ visible: true
50
+ },
51
+ hardwareButtons: {
52
+ volumeUp: { side: "right", yPosition: 190 },
53
+ volumeDown: { side: "right", yPosition: 226 },
54
+ power: { side: "right", yPosition: 276 }
55
+ }
56
+ };
57
+ function GalaxyS25UltraSVG({ colorScheme = "dark", style }) {
58
+ const frameColor = colorScheme === "dark" ? "#1c1c1e" : "#e5e5e7";
59
+ const frameBorder = colorScheme === "dark" ? "#3a3a3c" : "#c7c7cc";
60
+ const buttonColor = colorScheme === "dark" ? "#2c2c2e" : "#d1d1d6";
61
+ const punchHoleColor = "#000000";
62
+ const bezelSide = 12;
63
+ const bezelTop = 18;
64
+ const bezelBottom = 18;
65
+ const screenW = 384;
66
+ const screenH = 824;
67
+ const totalW = screenW + bezelSide * 2;
68
+ const totalH = screenH + bezelTop + bezelBottom;
69
+ const cornerRadius = 42;
70
+ const outerRadius = cornerRadius + 8;
71
+ const screenRadius = cornerRadius;
72
+ return /* @__PURE__ */ jsxs(
73
+ "svg",
74
+ {
75
+ viewBox: `0 0 ${totalW} ${totalH}`,
76
+ width: totalW,
77
+ height: totalH,
78
+ xmlns: "http://www.w3.org/2000/svg",
79
+ style,
80
+ children: [
81
+ /* @__PURE__ */ jsxs("defs", { children: [
82
+ /* @__PURE__ */ jsxs("linearGradient", { id: "frame-gradient-galaxy-s25-ultra", x1: "0", y1: "0", x2: "1", y2: "1", children: [
83
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: frameColor }),
84
+ /* @__PURE__ */ jsx("stop", { offset: "50%", stopColor: colorScheme === "dark" ? "#262628" : "#ededef" }),
85
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: frameColor })
86
+ ] }),
87
+ /* @__PURE__ */ jsxs("mask", { id: "frame-screen-mask-galaxy-s25-ultra", children: [
88
+ /* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: totalW, height: totalH, fill: "white" }),
89
+ /* @__PURE__ */ jsx(
90
+ "rect",
91
+ {
92
+ x: bezelSide,
93
+ y: bezelTop,
94
+ width: screenW,
95
+ height: screenH,
96
+ rx: screenRadius,
97
+ ry: screenRadius,
98
+ fill: "black"
99
+ }
100
+ )
101
+ ] })
102
+ ] }),
103
+ /* @__PURE__ */ jsx(
104
+ "rect",
105
+ {
106
+ x: "0",
107
+ y: "0",
108
+ width: totalW,
109
+ height: totalH,
110
+ rx: outerRadius,
111
+ ry: outerRadius,
112
+ fill: "url(#frame-gradient-galaxy-s25-ultra)",
113
+ stroke: frameBorder,
114
+ strokeWidth: "1.5",
115
+ mask: "url(#frame-screen-mask-galaxy-s25-ultra)"
116
+ }
117
+ ),
118
+ /* @__PURE__ */ jsx(
119
+ "rect",
120
+ {
121
+ "data-zone": "screen-area",
122
+ x: bezelSide,
123
+ y: bezelTop,
124
+ width: screenW,
125
+ height: screenH,
126
+ rx: screenRadius,
127
+ ry: screenRadius,
128
+ fill: "none"
129
+ }
130
+ ),
131
+ /* @__PURE__ */ jsx(
132
+ "circle",
133
+ {
134
+ "data-zone": "hardware-overlay",
135
+ "data-zone-type": "punch-hole-camera",
136
+ cx: bezelSide + screenW / 2,
137
+ cy: bezelTop + 17,
138
+ r: "5",
139
+ fill: punchHoleColor
140
+ }
141
+ ),
142
+ /* @__PURE__ */ jsx(
143
+ "rect",
144
+ {
145
+ "data-zone": "safe-area-top-inset",
146
+ x: bezelSide,
147
+ y: bezelTop,
148
+ width: screenW,
149
+ height: "38",
150
+ fill: "transparent"
151
+ }
152
+ ),
153
+ /* @__PURE__ */ jsx(
154
+ "rect",
155
+ {
156
+ "data-zone": "safe-area-bottom-inset",
157
+ x: bezelSide,
158
+ y: bezelTop + screenH - 24,
159
+ width: screenW,
160
+ height: "24",
161
+ fill: "transparent"
162
+ }
163
+ ),
164
+ /* @__PURE__ */ jsx(
165
+ "rect",
166
+ {
167
+ "data-zone": "status-bar",
168
+ "data-zone-style": "punch-hole",
169
+ x: bezelSide,
170
+ y: bezelTop,
171
+ width: screenW,
172
+ height: "28",
173
+ fill: "transparent"
174
+ }
175
+ ),
176
+ /* @__PURE__ */ jsx(
177
+ "rect",
178
+ {
179
+ "data-zone": "home-indicator",
180
+ "data-zone-type": "gesture-bar",
181
+ x: bezelSide + (screenW - 90) / 2,
182
+ y: bezelTop + screenH - 10,
183
+ width: "90",
184
+ height: "3",
185
+ rx: "1.5",
186
+ ry: "1.5",
187
+ fill: "rgba(255,255,255,0.25)"
188
+ }
189
+ ),
190
+ /* @__PURE__ */ jsx(
191
+ "rect",
192
+ {
193
+ "data-button": "volume-up",
194
+ "data-side": "right",
195
+ x: totalW - 2,
196
+ y: "190",
197
+ width: "3",
198
+ height: "28",
199
+ rx: "1.5",
200
+ fill: buttonColor
201
+ }
202
+ ),
203
+ /* @__PURE__ */ jsx(
204
+ "rect",
205
+ {
206
+ "data-button": "volume-down",
207
+ "data-side": "right",
208
+ x: totalW - 2,
209
+ y: "226",
210
+ width: "3",
211
+ height: "28",
212
+ rx: "1.5",
213
+ fill: buttonColor
214
+ }
215
+ ),
216
+ /* @__PURE__ */ jsx(
217
+ "rect",
218
+ {
219
+ "data-button": "power",
220
+ "data-side": "right",
221
+ x: totalW - 2,
222
+ y: "276",
223
+ width: "3",
224
+ height: "36",
225
+ rx: "1.5",
226
+ fill: buttonColor
227
+ }
228
+ ),
229
+ /* @__PURE__ */ jsx(
230
+ "rect",
231
+ {
232
+ x: (totalW - 24) / 2,
233
+ y: totalH - 5,
234
+ width: "24",
235
+ height: "4",
236
+ rx: "2",
237
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
238
+ }
239
+ ),
240
+ /* @__PURE__ */ jsx(
241
+ "rect",
242
+ {
243
+ x: totalW - bezelSide - 40,
244
+ y: totalH - 4,
245
+ width: "16",
246
+ height: "3",
247
+ rx: "1",
248
+ fill: colorScheme === "dark" ? "#0a0a0a" : "#aaa"
249
+ }
250
+ )
251
+ ]
252
+ }
253
+ );
254
+ }
255
+ var GALAXY_S25_ULTRA_FRAME = {
256
+ bezelTop: 18,
257
+ bezelBottom: 18,
258
+ bezelLeft: 12,
259
+ bezelRight: 12,
260
+ totalWidth: 408,
261
+ totalHeight: 860,
262
+ screenWidth: 384,
263
+ screenHeight: 824,
264
+ screenRadius: 42
265
+ };
266
+
267
+ // src/android/galaxy-s25/metadata.ts
268
+ var GALAXY_S25_META = {
269
+ id: "galaxy-s25",
270
+ name: "Galaxy S25",
271
+ platform: "android",
272
+ year: 2025,
273
+ screen: {
274
+ width: 360,
275
+ height: 780,
276
+ physicalWidth: 1080,
277
+ physicalHeight: 2340,
278
+ dpr: 3,
279
+ aspectRatio: "19.5:9",
280
+ cornerRadius: 42,
281
+ ppi: 425
282
+ }
283
+ };
284
+ var GALAXY_S25_LAYOUT = {
285
+ meta: GALAXY_S25_META,
286
+ safeArea: {
287
+ portrait: { top: 32, bottom: 24, left: 0, right: 0 },
288
+ landscape: { top: 0, bottom: 24, left: 32, right: 32 }
289
+ },
290
+ hardwareOverlays: {
291
+ type: "punch-hole",
292
+ portrait: {
293
+ x: 176,
294
+ // centered: (360 - 9) / 2 ~ 176
295
+ y: 12,
296
+ width: 9,
297
+ height: 9,
298
+ shape: "circle",
299
+ cornerRadius: 4.5
300
+ }
301
+ },
302
+ statusBar: {
303
+ height: 32,
304
+ style: "fullwidth",
305
+ hasTime: true,
306
+ hasBattery: true,
307
+ hasSignal: true
308
+ },
309
+ homeIndicator: {
310
+ type: "gestureline",
311
+ height: 5,
312
+ width: 90,
313
+ visible: true
314
+ },
315
+ hardwareButtons: {
316
+ volumeUp: { side: "right", yPosition: 180 },
317
+ volumeDown: { side: "right", yPosition: 214 },
318
+ power: { side: "right", yPosition: 260 }
319
+ }
320
+ };
321
+ function GalaxyS25SVG({ colorScheme = "dark", style }) {
322
+ const frameColor = colorScheme === "dark" ? "#1c1c1e" : "#e5e5e7";
323
+ const frameBorder = colorScheme === "dark" ? "#3a3a3c" : "#c7c7cc";
324
+ const buttonColor = colorScheme === "dark" ? "#2c2c2e" : "#d1d1d6";
325
+ const punchHoleColor = "#000000";
326
+ const bezelSide = 12;
327
+ const bezelTop = 18;
328
+ const bezelBottom = 18;
329
+ const screenW = 360;
330
+ const screenH = 780;
331
+ const totalW = screenW + bezelSide * 2;
332
+ const totalH = screenH + bezelTop + bezelBottom;
333
+ const cornerRadius = 42;
334
+ const outerRadius = cornerRadius + 8;
335
+ const screenRadius = cornerRadius;
336
+ return /* @__PURE__ */ jsxs(
337
+ "svg",
338
+ {
339
+ viewBox: `0 0 ${totalW} ${totalH}`,
340
+ width: totalW,
341
+ height: totalH,
342
+ xmlns: "http://www.w3.org/2000/svg",
343
+ style,
344
+ children: [
345
+ /* @__PURE__ */ jsxs("defs", { children: [
346
+ /* @__PURE__ */ jsxs("linearGradient", { id: "frame-gradient-galaxy-s25", x1: "0", y1: "0", x2: "1", y2: "1", children: [
347
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: frameColor }),
348
+ /* @__PURE__ */ jsx("stop", { offset: "50%", stopColor: colorScheme === "dark" ? "#262628" : "#ededef" }),
349
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: frameColor })
350
+ ] }),
351
+ /* @__PURE__ */ jsxs("mask", { id: "frame-screen-mask-galaxy-s25", children: [
352
+ /* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: totalW, height: totalH, fill: "white" }),
353
+ /* @__PURE__ */ jsx(
354
+ "rect",
355
+ {
356
+ x: bezelSide,
357
+ y: bezelTop,
358
+ width: screenW,
359
+ height: screenH,
360
+ rx: screenRadius,
361
+ ry: screenRadius,
362
+ fill: "black"
363
+ }
364
+ )
365
+ ] })
366
+ ] }),
367
+ /* @__PURE__ */ jsx(
368
+ "rect",
369
+ {
370
+ x: "0",
371
+ y: "0",
372
+ width: totalW,
373
+ height: totalH,
374
+ rx: outerRadius,
375
+ ry: outerRadius,
376
+ fill: "url(#frame-gradient-galaxy-s25)",
377
+ stroke: frameBorder,
378
+ strokeWidth: "1.5",
379
+ mask: "url(#frame-screen-mask-galaxy-s25)"
380
+ }
381
+ ),
382
+ /* @__PURE__ */ jsx(
383
+ "rect",
384
+ {
385
+ "data-zone": "screen-area",
386
+ x: bezelSide,
387
+ y: bezelTop,
388
+ width: screenW,
389
+ height: screenH,
390
+ rx: screenRadius,
391
+ ry: screenRadius,
392
+ fill: "none"
393
+ }
394
+ ),
395
+ /* @__PURE__ */ jsx(
396
+ "circle",
397
+ {
398
+ "data-zone": "hardware-overlay",
399
+ "data-zone-type": "punch-hole-camera",
400
+ cx: bezelSide + screenW / 2,
401
+ cy: bezelTop + 16.5,
402
+ r: "4.5",
403
+ fill: punchHoleColor
404
+ }
405
+ ),
406
+ /* @__PURE__ */ jsx(
407
+ "rect",
408
+ {
409
+ "data-zone": "safe-area-top-inset",
410
+ x: bezelSide,
411
+ y: bezelTop,
412
+ width: screenW,
413
+ height: "32",
414
+ fill: "transparent"
415
+ }
416
+ ),
417
+ /* @__PURE__ */ jsx(
418
+ "rect",
419
+ {
420
+ "data-zone": "safe-area-bottom-inset",
421
+ x: bezelSide,
422
+ y: bezelTop + screenH - 24,
423
+ width: screenW,
424
+ height: "24",
425
+ fill: "transparent"
426
+ }
427
+ ),
428
+ /* @__PURE__ */ jsx(
429
+ "rect",
430
+ {
431
+ "data-zone": "status-bar",
432
+ "data-zone-style": "punch-hole",
433
+ x: bezelSide,
434
+ y: bezelTop,
435
+ width: screenW,
436
+ height: "32",
437
+ fill: "transparent"
438
+ }
439
+ ),
440
+ /* @__PURE__ */ jsx(
441
+ "rect",
442
+ {
443
+ "data-zone": "home-indicator",
444
+ "data-zone-type": "gesture-bar",
445
+ x: bezelSide + (screenW - 90) / 2,
446
+ y: bezelTop + screenH - 10,
447
+ width: "90",
448
+ height: "3",
449
+ rx: "1.5",
450
+ ry: "1.5",
451
+ fill: "rgba(255,255,255,0.25)"
452
+ }
453
+ ),
454
+ /* @__PURE__ */ jsx(
455
+ "rect",
456
+ {
457
+ "data-button": "volume-up",
458
+ "data-side": "right",
459
+ x: totalW - 2,
460
+ y: "180",
461
+ width: "3",
462
+ height: "28",
463
+ rx: "1.5",
464
+ fill: buttonColor
465
+ }
466
+ ),
467
+ /* @__PURE__ */ jsx(
468
+ "rect",
469
+ {
470
+ "data-button": "volume-down",
471
+ "data-side": "right",
472
+ x: totalW - 2,
473
+ y: "216",
474
+ width: "3",
475
+ height: "28",
476
+ rx: "1.5",
477
+ fill: buttonColor
478
+ }
479
+ ),
480
+ /* @__PURE__ */ jsx(
481
+ "rect",
482
+ {
483
+ "data-button": "power",
484
+ "data-side": "right",
485
+ x: totalW - 2,
486
+ y: "266",
487
+ width: "3",
488
+ height: "36",
489
+ rx: "1.5",
490
+ fill: buttonColor
491
+ }
492
+ ),
493
+ /* @__PURE__ */ jsx(
494
+ "rect",
495
+ {
496
+ x: (totalW - 24) / 2,
497
+ y: totalH - 5,
498
+ width: "24",
499
+ height: "4",
500
+ rx: "2",
501
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
502
+ }
503
+ )
504
+ ]
505
+ }
506
+ );
507
+ }
508
+ var GALAXY_S25_FRAME = {
509
+ bezelTop: 18,
510
+ bezelBottom: 18,
511
+ bezelLeft: 12,
512
+ bezelRight: 12,
513
+ totalWidth: 384,
514
+ totalHeight: 816,
515
+ screenWidth: 360,
516
+ screenHeight: 780,
517
+ screenRadius: 42
518
+ };
519
+
520
+ // src/android/galaxy-s25-edge/metadata.ts
521
+ var GALAXY_S25_EDGE_META = {
522
+ id: "galaxy-s25-edge",
523
+ name: "Galaxy S25 Edge",
524
+ platform: "android",
525
+ year: 2025,
526
+ screen: {
527
+ width: 382,
528
+ height: 824,
529
+ physicalWidth: 1440,
530
+ physicalHeight: 3120,
531
+ dpr: 3.75,
532
+ aspectRatio: "19.5:9",
533
+ cornerRadius: 42,
534
+ ppi: 510
535
+ }
536
+ };
537
+ var GALAXY_S25_EDGE_LAYOUT = {
538
+ meta: GALAXY_S25_EDGE_META,
539
+ safeArea: {
540
+ portrait: { top: 32, bottom: 24, left: 0, right: 0 },
541
+ landscape: { top: 0, bottom: 24, left: 32, right: 32 }
542
+ },
543
+ hardwareOverlays: {
544
+ type: "punch-hole",
545
+ portrait: {
546
+ x: 187,
547
+ // centered: (382 - 8) / 2 = 187
548
+ y: 12,
549
+ width: 8,
550
+ height: 8,
551
+ shape: "circle",
552
+ cornerRadius: 4
553
+ }
554
+ },
555
+ statusBar: {
556
+ height: 32,
557
+ style: "fullwidth",
558
+ hasTime: true,
559
+ hasBattery: true,
560
+ hasSignal: true
561
+ },
562
+ homeIndicator: {
563
+ type: "gestureline",
564
+ height: 5,
565
+ width: 90,
566
+ visible: true
567
+ },
568
+ hardwareButtons: {
569
+ volumeUp: { side: "right", yPosition: 185 },
570
+ volumeDown: { side: "right", yPosition: 220 },
571
+ power: { side: "right", yPosition: 268 }
572
+ }
573
+ };
574
+ function GalaxyS25EdgeSVG({ colorScheme = "dark", style }) {
575
+ const frameColor = colorScheme === "dark" ? "#1c1c1e" : "#e5e5e7";
576
+ const frameBorder = colorScheme === "dark" ? "#3a3a3c" : "#c7c7cc";
577
+ const buttonColor = colorScheme === "dark" ? "#2c2c2e" : "#d1d1d6";
578
+ const punchHoleColor = "#000000";
579
+ const bezelSide = 8;
580
+ const bezelTop = 14;
581
+ const bezelBottom = 14;
582
+ const screenW = 382;
583
+ const screenH = 824;
584
+ const totalW = screenW + bezelSide * 2;
585
+ const totalH = screenH + bezelTop + bezelBottom;
586
+ const cornerRadius = 42;
587
+ const outerRadius = cornerRadius + 6;
588
+ const screenRadius = cornerRadius;
589
+ return /* @__PURE__ */ jsxs(
590
+ "svg",
591
+ {
592
+ viewBox: `0 0 ${totalW} ${totalH}`,
593
+ width: totalW,
594
+ height: totalH,
595
+ xmlns: "http://www.w3.org/2000/svg",
596
+ style,
597
+ children: [
598
+ /* @__PURE__ */ jsxs("defs", { children: [
599
+ /* @__PURE__ */ jsxs("linearGradient", { id: "frame-gradient-galaxy-s25-edge", x1: "0", y1: "0", x2: "1", y2: "1", children: [
600
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: frameColor }),
601
+ /* @__PURE__ */ jsx("stop", { offset: "50%", stopColor: colorScheme === "dark" ? "#262628" : "#ededef" }),
602
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: frameColor })
603
+ ] }),
604
+ /* @__PURE__ */ jsxs("mask", { id: "frame-screen-mask-galaxy-s25-edge", children: [
605
+ /* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: totalW, height: totalH, fill: "white" }),
606
+ /* @__PURE__ */ jsx(
607
+ "rect",
608
+ {
609
+ x: bezelSide,
610
+ y: bezelTop,
611
+ width: screenW,
612
+ height: screenH,
613
+ rx: screenRadius,
614
+ ry: screenRadius,
615
+ fill: "black"
616
+ }
617
+ )
618
+ ] })
619
+ ] }),
620
+ /* @__PURE__ */ jsx(
621
+ "rect",
622
+ {
623
+ x: "0",
624
+ y: "0",
625
+ width: totalW,
626
+ height: totalH,
627
+ rx: outerRadius,
628
+ ry: outerRadius,
629
+ fill: "url(#frame-gradient-galaxy-s25-edge)",
630
+ stroke: frameBorder,
631
+ strokeWidth: "1.5",
632
+ mask: "url(#frame-screen-mask-galaxy-s25-edge)"
633
+ }
634
+ ),
635
+ /* @__PURE__ */ jsx(
636
+ "rect",
637
+ {
638
+ "data-zone": "screen-area",
639
+ x: bezelSide,
640
+ y: bezelTop,
641
+ width: screenW,
642
+ height: screenH,
643
+ rx: screenRadius,
644
+ ry: screenRadius,
645
+ fill: "none"
646
+ }
647
+ ),
648
+ /* @__PURE__ */ jsx(
649
+ "circle",
650
+ {
651
+ "data-zone": "hardware-overlay",
652
+ "data-zone-type": "punch-hole-camera",
653
+ cx: bezelSide + screenW / 2,
654
+ cy: bezelTop + 16,
655
+ r: "4",
656
+ fill: punchHoleColor
657
+ }
658
+ ),
659
+ /* @__PURE__ */ jsx(
660
+ "rect",
661
+ {
662
+ "data-zone": "safe-area-top-inset",
663
+ x: bezelSide,
664
+ y: bezelTop,
665
+ width: screenW,
666
+ height: "32",
667
+ fill: "transparent"
668
+ }
669
+ ),
670
+ /* @__PURE__ */ jsx(
671
+ "rect",
672
+ {
673
+ "data-zone": "safe-area-bottom-inset",
674
+ x: bezelSide,
675
+ y: bezelTop + screenH - 24,
676
+ width: screenW,
677
+ height: "24",
678
+ fill: "transparent"
679
+ }
680
+ ),
681
+ /* @__PURE__ */ jsx(
682
+ "rect",
683
+ {
684
+ "data-zone": "status-bar",
685
+ "data-zone-style": "punch-hole",
686
+ x: bezelSide,
687
+ y: bezelTop,
688
+ width: screenW,
689
+ height: "32",
690
+ fill: "transparent"
691
+ }
692
+ ),
693
+ /* @__PURE__ */ jsx(
694
+ "rect",
695
+ {
696
+ "data-zone": "home-indicator",
697
+ "data-zone-type": "gesture-bar",
698
+ x: bezelSide + (screenW - 90) / 2,
699
+ y: bezelTop + screenH - 10,
700
+ width: "90",
701
+ height: "3",
702
+ rx: "1.5",
703
+ ry: "1.5",
704
+ fill: "rgba(255,255,255,0.25)"
705
+ }
706
+ ),
707
+ /* @__PURE__ */ jsx(
708
+ "rect",
709
+ {
710
+ "data-button": "volume-up",
711
+ "data-side": "right",
712
+ x: totalW - 2,
713
+ y: "186",
714
+ width: "3",
715
+ height: "28",
716
+ rx: "1.5",
717
+ fill: buttonColor
718
+ }
719
+ ),
720
+ /* @__PURE__ */ jsx(
721
+ "rect",
722
+ {
723
+ "data-button": "volume-down",
724
+ "data-side": "right",
725
+ x: totalW - 2,
726
+ y: "222",
727
+ width: "3",
728
+ height: "28",
729
+ rx: "1.5",
730
+ fill: buttonColor
731
+ }
732
+ ),
733
+ /* @__PURE__ */ jsx(
734
+ "rect",
735
+ {
736
+ "data-button": "power",
737
+ "data-side": "right",
738
+ x: totalW - 2,
739
+ y: "272",
740
+ width: "3",
741
+ height: "36",
742
+ rx: "1.5",
743
+ fill: buttonColor
744
+ }
745
+ ),
746
+ /* @__PURE__ */ jsx(
747
+ "rect",
748
+ {
749
+ x: (totalW - 24) / 2,
750
+ y: totalH - 5,
751
+ width: "24",
752
+ height: "4",
753
+ rx: "2",
754
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
755
+ }
756
+ )
757
+ ]
758
+ }
759
+ );
760
+ }
761
+ var GALAXY_S25_EDGE_FRAME = {
762
+ bezelTop: 14,
763
+ bezelBottom: 14,
764
+ bezelLeft: 8,
765
+ bezelRight: 8,
766
+ totalWidth: 398,
767
+ totalHeight: 852,
768
+ screenWidth: 382,
769
+ screenHeight: 824,
770
+ screenRadius: 42
771
+ };
772
+
773
+ // src/android/pixel-9-pro-xl/metadata.ts
774
+ var PIXEL_9_PRO_XL_META = {
775
+ id: "pixel-9-pro-xl",
776
+ name: "Pixel 9 Pro XL",
777
+ platform: "android",
778
+ year: 2024,
779
+ screen: {
780
+ width: 448,
781
+ height: 968,
782
+ physicalWidth: 1344,
783
+ physicalHeight: 2904,
784
+ dpr: 3,
785
+ aspectRatio: "19.5:9",
786
+ cornerRadius: 48,
787
+ ppi: 486
788
+ }
789
+ };
790
+ var PIXEL_9_PRO_XL_LAYOUT = {
791
+ meta: PIXEL_9_PRO_XL_META,
792
+ safeArea: {
793
+ portrait: { top: 32, bottom: 24, left: 0, right: 0 },
794
+ landscape: { top: 0, bottom: 24, left: 32, right: 32 }
795
+ },
796
+ hardwareOverlays: {
797
+ type: "punch-hole",
798
+ portrait: {
799
+ x: 219,
800
+ // centered: (448 - 11) / 2 ~ 219
801
+ y: 12,
802
+ width: 11,
803
+ height: 11,
804
+ shape: "circle",
805
+ cornerRadius: 5.5
806
+ }
807
+ },
808
+ statusBar: {
809
+ height: 32,
810
+ style: "fullwidth",
811
+ hasTime: true,
812
+ hasBattery: true,
813
+ hasSignal: true
814
+ },
815
+ homeIndicator: {
816
+ type: "gestureline",
817
+ height: 5,
818
+ width: 90,
819
+ visible: true
820
+ },
821
+ hardwareButtons: {
822
+ volumeUp: { side: "left", yPosition: 195 },
823
+ volumeDown: { side: "left", yPosition: 235 },
824
+ power: { side: "right", yPosition: 215 }
825
+ }
826
+ };
827
+ function Pixel9ProXLSVG({ colorScheme = "dark", style }) {
828
+ const frameColor = colorScheme === "dark" ? "#1c1c1e" : "#e5e5e7";
829
+ const frameBorder = colorScheme === "dark" ? "#3a3a3c" : "#c7c7cc";
830
+ const buttonColor = colorScheme === "dark" ? "#2c2c2e" : "#d1d1d6";
831
+ const punchHoleColor = "#000000";
832
+ const bezelSide = 12;
833
+ const bezelTop = 18;
834
+ const bezelBottom = 18;
835
+ const screenW = 448;
836
+ const screenH = 968;
837
+ const totalW = screenW + bezelSide * 2;
838
+ const totalH = screenH + bezelTop + bezelBottom;
839
+ const cornerRadius = 48;
840
+ const outerRadius = cornerRadius + 8;
841
+ const screenRadius = cornerRadius;
842
+ return /* @__PURE__ */ jsxs(
843
+ "svg",
844
+ {
845
+ viewBox: `0 0 ${totalW} ${totalH}`,
846
+ width: totalW,
847
+ height: totalH,
848
+ xmlns: "http://www.w3.org/2000/svg",
849
+ style,
850
+ children: [
851
+ /* @__PURE__ */ jsxs("defs", { children: [
852
+ /* @__PURE__ */ jsxs("linearGradient", { id: "frame-gradient-pixel-9-pro-xl", x1: "0", y1: "0", x2: "1", y2: "1", children: [
853
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: frameColor }),
854
+ /* @__PURE__ */ jsx("stop", { offset: "50%", stopColor: colorScheme === "dark" ? "#262628" : "#ededef" }),
855
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: frameColor })
856
+ ] }),
857
+ /* @__PURE__ */ jsxs("mask", { id: "frame-screen-mask-pixel-9-pro-xl", children: [
858
+ /* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: totalW, height: totalH, fill: "white" }),
859
+ /* @__PURE__ */ jsx(
860
+ "rect",
861
+ {
862
+ x: bezelSide,
863
+ y: bezelTop,
864
+ width: screenW,
865
+ height: screenH,
866
+ rx: screenRadius,
867
+ ry: screenRadius,
868
+ fill: "black"
869
+ }
870
+ )
871
+ ] })
872
+ ] }),
873
+ /* @__PURE__ */ jsx(
874
+ "rect",
875
+ {
876
+ x: "0",
877
+ y: "0",
878
+ width: totalW,
879
+ height: totalH,
880
+ rx: outerRadius,
881
+ ry: outerRadius,
882
+ fill: "url(#frame-gradient-pixel-9-pro-xl)",
883
+ stroke: frameBorder,
884
+ strokeWidth: "1.5",
885
+ mask: "url(#frame-screen-mask-pixel-9-pro-xl)"
886
+ }
887
+ ),
888
+ /* @__PURE__ */ jsx(
889
+ "rect",
890
+ {
891
+ "data-zone": "screen-area",
892
+ x: bezelSide,
893
+ y: bezelTop,
894
+ width: screenW,
895
+ height: screenH,
896
+ rx: screenRadius,
897
+ ry: screenRadius,
898
+ fill: "none"
899
+ }
900
+ ),
901
+ /* @__PURE__ */ jsx(
902
+ "circle",
903
+ {
904
+ "data-zone": "hardware-overlay",
905
+ "data-zone-type": "punch-hole-camera",
906
+ cx: bezelSide + screenW / 2,
907
+ cy: bezelTop + 17.5,
908
+ r: "5.5",
909
+ fill: punchHoleColor
910
+ }
911
+ ),
912
+ /* @__PURE__ */ jsx(
913
+ "rect",
914
+ {
915
+ "data-zone": "safe-area-top-inset",
916
+ x: bezelSide,
917
+ y: bezelTop,
918
+ width: screenW,
919
+ height: "32",
920
+ fill: "transparent"
921
+ }
922
+ ),
923
+ /* @__PURE__ */ jsx(
924
+ "rect",
925
+ {
926
+ "data-zone": "safe-area-bottom-inset",
927
+ x: bezelSide,
928
+ y: bezelTop + screenH - 24,
929
+ width: screenW,
930
+ height: "24",
931
+ fill: "transparent"
932
+ }
933
+ ),
934
+ /* @__PURE__ */ jsx(
935
+ "rect",
936
+ {
937
+ "data-zone": "status-bar",
938
+ "data-zone-style": "punch-hole",
939
+ x: bezelSide,
940
+ y: bezelTop,
941
+ width: screenW,
942
+ height: "32",
943
+ fill: "transparent"
944
+ }
945
+ ),
946
+ /* @__PURE__ */ jsx(
947
+ "rect",
948
+ {
949
+ "data-zone": "home-indicator",
950
+ "data-zone-type": "gesture-bar",
951
+ x: bezelSide + (screenW - 90) / 2,
952
+ y: bezelTop + screenH - 10,
953
+ width: "90",
954
+ height: "3",
955
+ rx: "1.5",
956
+ ry: "1.5",
957
+ fill: "rgba(255,255,255,0.25)"
958
+ }
959
+ ),
960
+ /* @__PURE__ */ jsx(
961
+ "rect",
962
+ {
963
+ "data-button": "power",
964
+ "data-side": "right",
965
+ x: totalW - 2,
966
+ y: "220",
967
+ width: "3",
968
+ height: "36",
969
+ rx: "1.5",
970
+ fill: buttonColor
971
+ }
972
+ ),
973
+ /* @__PURE__ */ jsx(
974
+ "rect",
975
+ {
976
+ "data-button": "volume-up",
977
+ "data-side": "left",
978
+ x: -1,
979
+ y: "250",
980
+ width: "3",
981
+ height: "28",
982
+ rx: "1.5",
983
+ fill: buttonColor
984
+ }
985
+ ),
986
+ /* @__PURE__ */ jsx(
987
+ "rect",
988
+ {
989
+ "data-button": "volume-down",
990
+ "data-side": "left",
991
+ x: -1,
992
+ y: "286",
993
+ width: "3",
994
+ height: "28",
995
+ rx: "1.5",
996
+ fill: buttonColor
997
+ }
998
+ ),
999
+ /* @__PURE__ */ jsx(
1000
+ "rect",
1001
+ {
1002
+ x: (totalW - 24) / 2,
1003
+ y: totalH - 5,
1004
+ width: "24",
1005
+ height: "4",
1006
+ rx: "2",
1007
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
1008
+ }
1009
+ )
1010
+ ]
1011
+ }
1012
+ );
1013
+ }
1014
+ var PIXEL_9_PRO_XL_FRAME = {
1015
+ bezelTop: 18,
1016
+ bezelBottom: 18,
1017
+ bezelLeft: 12,
1018
+ bezelRight: 12,
1019
+ totalWidth: 472,
1020
+ totalHeight: 1004,
1021
+ screenWidth: 448,
1022
+ screenHeight: 968,
1023
+ screenRadius: 48
1024
+ };
1025
+
1026
+ // src/android/pixel-9-pro/metadata.ts
1027
+ var PIXEL_9_PRO_META = {
1028
+ id: "pixel-9-pro",
1029
+ name: "Pixel 9 Pro",
1030
+ platform: "android",
1031
+ year: 2024,
1032
+ screen: {
1033
+ width: 393,
1034
+ height: 851,
1035
+ physicalWidth: 1080,
1036
+ physicalHeight: 2340,
1037
+ dpr: 3,
1038
+ aspectRatio: "19.5:9",
1039
+ cornerRadius: 48,
1040
+ ppi: 423
1041
+ }
1042
+ };
1043
+ var PIXEL_9_PRO_LAYOUT = {
1044
+ meta: PIXEL_9_PRO_META,
1045
+ safeArea: {
1046
+ portrait: { top: 32, bottom: 24, left: 0, right: 0 },
1047
+ landscape: { top: 0, bottom: 24, left: 32, right: 32 }
1048
+ },
1049
+ hardwareOverlays: {
1050
+ type: "punch-hole",
1051
+ portrait: {
1052
+ x: 192,
1053
+ // centered: (393 - 10) / 2 ~ 192
1054
+ y: 12,
1055
+ width: 10,
1056
+ height: 10,
1057
+ shape: "circle",
1058
+ cornerRadius: 5
1059
+ }
1060
+ },
1061
+ statusBar: {
1062
+ height: 32,
1063
+ style: "fullwidth",
1064
+ hasTime: true,
1065
+ hasBattery: true,
1066
+ hasSignal: true
1067
+ },
1068
+ homeIndicator: {
1069
+ type: "gestureline",
1070
+ height: 5,
1071
+ width: 90,
1072
+ visible: true
1073
+ },
1074
+ hardwareButtons: {
1075
+ volumeUp: { side: "left", yPosition: 185 },
1076
+ volumeDown: { side: "left", yPosition: 220 },
1077
+ power: { side: "right", yPosition: 205 }
1078
+ }
1079
+ };
1080
+ function Pixel9ProSVG({ colorScheme = "dark", style }) {
1081
+ const frameColor = colorScheme === "dark" ? "#1c1c1e" : "#e5e5e7";
1082
+ const frameBorder = colorScheme === "dark" ? "#3a3a3c" : "#c7c7cc";
1083
+ const buttonColor = colorScheme === "dark" ? "#2c2c2e" : "#d1d1d6";
1084
+ const punchHoleColor = "#000000";
1085
+ const bezelSide = 12;
1086
+ const bezelTop = 18;
1087
+ const bezelBottom = 18;
1088
+ const screenW = 393;
1089
+ const screenH = 851;
1090
+ const totalW = screenW + bezelSide * 2;
1091
+ const totalH = screenH + bezelTop + bezelBottom;
1092
+ const cornerRadius = 48;
1093
+ const outerRadius = cornerRadius + 8;
1094
+ const screenRadius = cornerRadius;
1095
+ return /* @__PURE__ */ jsxs(
1096
+ "svg",
1097
+ {
1098
+ viewBox: `0 0 ${totalW} ${totalH}`,
1099
+ width: totalW,
1100
+ height: totalH,
1101
+ xmlns: "http://www.w3.org/2000/svg",
1102
+ style,
1103
+ children: [
1104
+ /* @__PURE__ */ jsxs("defs", { children: [
1105
+ /* @__PURE__ */ jsxs("linearGradient", { id: "frame-gradient-pixel-9-pro", x1: "0", y1: "0", x2: "1", y2: "1", children: [
1106
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: frameColor }),
1107
+ /* @__PURE__ */ jsx("stop", { offset: "50%", stopColor: colorScheme === "dark" ? "#262628" : "#ededef" }),
1108
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: frameColor })
1109
+ ] }),
1110
+ /* @__PURE__ */ jsxs("mask", { id: "frame-screen-mask-pixel-9-pro", children: [
1111
+ /* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: totalW, height: totalH, fill: "white" }),
1112
+ /* @__PURE__ */ jsx(
1113
+ "rect",
1114
+ {
1115
+ x: bezelSide,
1116
+ y: bezelTop,
1117
+ width: screenW,
1118
+ height: screenH,
1119
+ rx: screenRadius,
1120
+ ry: screenRadius,
1121
+ fill: "black"
1122
+ }
1123
+ )
1124
+ ] })
1125
+ ] }),
1126
+ /* @__PURE__ */ jsx(
1127
+ "rect",
1128
+ {
1129
+ x: "0",
1130
+ y: "0",
1131
+ width: totalW,
1132
+ height: totalH,
1133
+ rx: outerRadius,
1134
+ ry: outerRadius,
1135
+ fill: "url(#frame-gradient-pixel-9-pro)",
1136
+ stroke: frameBorder,
1137
+ strokeWidth: "1.5",
1138
+ mask: "url(#frame-screen-mask-pixel-9-pro)"
1139
+ }
1140
+ ),
1141
+ /* @__PURE__ */ jsx(
1142
+ "rect",
1143
+ {
1144
+ "data-zone": "screen-area",
1145
+ x: bezelSide,
1146
+ y: bezelTop,
1147
+ width: screenW,
1148
+ height: screenH,
1149
+ rx: screenRadius,
1150
+ ry: screenRadius,
1151
+ fill: "none"
1152
+ }
1153
+ ),
1154
+ /* @__PURE__ */ jsx(
1155
+ "circle",
1156
+ {
1157
+ "data-zone": "hardware-overlay",
1158
+ "data-zone-type": "punch-hole-camera",
1159
+ cx: bezelSide + screenW / 2,
1160
+ cy: bezelTop + 17,
1161
+ r: "5",
1162
+ fill: punchHoleColor
1163
+ }
1164
+ ),
1165
+ /* @__PURE__ */ jsx(
1166
+ "rect",
1167
+ {
1168
+ "data-zone": "safe-area-top-inset",
1169
+ x: bezelSide,
1170
+ y: bezelTop,
1171
+ width: screenW,
1172
+ height: "32",
1173
+ fill: "transparent"
1174
+ }
1175
+ ),
1176
+ /* @__PURE__ */ jsx(
1177
+ "rect",
1178
+ {
1179
+ "data-zone": "safe-area-bottom-inset",
1180
+ x: bezelSide,
1181
+ y: bezelTop + screenH - 24,
1182
+ width: screenW,
1183
+ height: "24",
1184
+ fill: "transparent"
1185
+ }
1186
+ ),
1187
+ /* @__PURE__ */ jsx(
1188
+ "rect",
1189
+ {
1190
+ "data-zone": "status-bar",
1191
+ "data-zone-style": "punch-hole",
1192
+ x: bezelSide,
1193
+ y: bezelTop,
1194
+ width: screenW,
1195
+ height: "32",
1196
+ fill: "transparent"
1197
+ }
1198
+ ),
1199
+ /* @__PURE__ */ jsx(
1200
+ "rect",
1201
+ {
1202
+ "data-zone": "home-indicator",
1203
+ "data-zone-type": "gesture-bar",
1204
+ x: bezelSide + (screenW - 90) / 2,
1205
+ y: bezelTop + screenH - 10,
1206
+ width: "90",
1207
+ height: "3",
1208
+ rx: "1.5",
1209
+ ry: "1.5",
1210
+ fill: "rgba(255,255,255,0.25)"
1211
+ }
1212
+ ),
1213
+ /* @__PURE__ */ jsx(
1214
+ "rect",
1215
+ {
1216
+ "data-button": "power",
1217
+ "data-side": "right",
1218
+ x: totalW - 2,
1219
+ y: "210",
1220
+ width: "3",
1221
+ height: "36",
1222
+ rx: "1.5",
1223
+ fill: buttonColor
1224
+ }
1225
+ ),
1226
+ /* @__PURE__ */ jsx(
1227
+ "rect",
1228
+ {
1229
+ "data-button": "volume-up",
1230
+ "data-side": "left",
1231
+ x: -1,
1232
+ y: "240",
1233
+ width: "3",
1234
+ height: "28",
1235
+ rx: "1.5",
1236
+ fill: buttonColor
1237
+ }
1238
+ ),
1239
+ /* @__PURE__ */ jsx(
1240
+ "rect",
1241
+ {
1242
+ "data-button": "volume-down",
1243
+ "data-side": "left",
1244
+ x: -1,
1245
+ y: "276",
1246
+ width: "3",
1247
+ height: "28",
1248
+ rx: "1.5",
1249
+ fill: buttonColor
1250
+ }
1251
+ ),
1252
+ /* @__PURE__ */ jsx(
1253
+ "rect",
1254
+ {
1255
+ x: (totalW - 24) / 2,
1256
+ y: totalH - 5,
1257
+ width: "24",
1258
+ height: "4",
1259
+ rx: "2",
1260
+ fill: colorScheme === "dark" ? "#111" : "#bbb"
1261
+ }
1262
+ )
1263
+ ]
1264
+ }
1265
+ );
1266
+ }
1267
+ var PIXEL_9_PRO_FRAME = {
1268
+ bezelTop: 18,
1269
+ bezelBottom: 18,
1270
+ bezelLeft: 12,
1271
+ bezelRight: 12,
1272
+ totalWidth: 417,
1273
+ totalHeight: 887,
1274
+ screenWidth: 393,
1275
+ screenHeight: 851,
1276
+ screenRadius: 48
1277
+ };
1278
+
1279
+ export { GALAXY_S25_EDGE_FRAME, GALAXY_S25_EDGE_LAYOUT, GALAXY_S25_EDGE_META, GALAXY_S25_FRAME, GALAXY_S25_LAYOUT, GALAXY_S25_META, GALAXY_S25_ULTRA_FRAME, GALAXY_S25_ULTRA_LAYOUT, GALAXY_S25_ULTRA_META, GalaxyS25EdgeSVG, GalaxyS25SVG, GalaxyS25UltraSVG, PIXEL_9_PRO_FRAME, PIXEL_9_PRO_LAYOUT, PIXEL_9_PRO_META, PIXEL_9_PRO_XL_FRAME, PIXEL_9_PRO_XL_LAYOUT, PIXEL_9_PRO_XL_META, Pixel9ProSVG, Pixel9ProXLSVG };
1280
+ //# sourceMappingURL=chunk-QQFC4CAP.js.map
1281
+ //# sourceMappingURL=chunk-QQFC4CAP.js.map