@biela.dev/devices 1.5.0 → 1.6.1

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.
@@ -1,104 +1,112 @@
1
1
  'use strict';
2
2
 
3
- var chunkOI46UKOY_cjs = require('../chunk-OI46UKOY.cjs');
3
+ var chunkHF6B72Z5_cjs = require('../chunk-HF6B72Z5.cjs');
4
4
 
5
5
 
6
6
 
7
7
  Object.defineProperty(exports, "IPHONE_16E_FRAME", {
8
8
  enumerable: true,
9
- get: function () { return chunkOI46UKOY_cjs.IPHONE_16E_FRAME; }
9
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_16E_FRAME; }
10
10
  });
11
11
  Object.defineProperty(exports, "IPHONE_16E_LAYOUT", {
12
12
  enumerable: true,
13
- get: function () { return chunkOI46UKOY_cjs.IPHONE_16E_LAYOUT; }
13
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_16E_LAYOUT; }
14
14
  });
15
15
  Object.defineProperty(exports, "IPHONE_16E_META", {
16
16
  enumerable: true,
17
- get: function () { return chunkOI46UKOY_cjs.IPHONE_16E_META; }
17
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_16E_META; }
18
18
  });
19
19
  Object.defineProperty(exports, "IPHONE_16_FRAME", {
20
20
  enumerable: true,
21
- get: function () { return chunkOI46UKOY_cjs.IPHONE_16_FRAME; }
21
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_16_FRAME; }
22
22
  });
23
23
  Object.defineProperty(exports, "IPHONE_16_LAYOUT", {
24
24
  enumerable: true,
25
- get: function () { return chunkOI46UKOY_cjs.IPHONE_16_LAYOUT; }
25
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_16_LAYOUT; }
26
26
  });
27
27
  Object.defineProperty(exports, "IPHONE_16_META", {
28
28
  enumerable: true,
29
- get: function () { return chunkOI46UKOY_cjs.IPHONE_16_META; }
29
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_16_META; }
30
30
  });
31
31
  Object.defineProperty(exports, "IPHONE_17_PRO_FRAME", {
32
32
  enumerable: true,
33
- get: function () { return chunkOI46UKOY_cjs.IPHONE_17_PRO_FRAME; }
33
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_17_PRO_FRAME; }
34
34
  });
35
35
  Object.defineProperty(exports, "IPHONE_17_PRO_LAYOUT", {
36
36
  enumerable: true,
37
- get: function () { return chunkOI46UKOY_cjs.IPHONE_17_PRO_LAYOUT; }
37
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_17_PRO_LAYOUT; }
38
38
  });
39
39
  Object.defineProperty(exports, "IPHONE_17_PRO_MAX_FRAME", {
40
40
  enumerable: true,
41
- get: function () { return chunkOI46UKOY_cjs.IPHONE_17_PRO_MAX_FRAME; }
41
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_17_PRO_MAX_FRAME; }
42
42
  });
43
43
  Object.defineProperty(exports, "IPHONE_17_PRO_MAX_LAYOUT", {
44
44
  enumerable: true,
45
- get: function () { return chunkOI46UKOY_cjs.IPHONE_17_PRO_MAX_LAYOUT; }
45
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_17_PRO_MAX_LAYOUT; }
46
46
  });
47
47
  Object.defineProperty(exports, "IPHONE_17_PRO_MAX_META", {
48
48
  enumerable: true,
49
- get: function () { return chunkOI46UKOY_cjs.IPHONE_17_PRO_MAX_META; }
49
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_17_PRO_MAX_META; }
50
+ });
51
+ Object.defineProperty(exports, "IPHONE_17_PRO_MAX_SCREEN_RECT", {
52
+ enumerable: true,
53
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_17_PRO_MAX_SCREEN_RECT; }
50
54
  });
51
55
  Object.defineProperty(exports, "IPHONE_17_PRO_META", {
52
56
  enumerable: true,
53
- get: function () { return chunkOI46UKOY_cjs.IPHONE_17_PRO_META; }
57
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_17_PRO_META; }
58
+ });
59
+ Object.defineProperty(exports, "IPHONE_17_PRO_SCREEN_RECT", {
60
+ enumerable: true,
61
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_17_PRO_SCREEN_RECT; }
54
62
  });
55
63
  Object.defineProperty(exports, "IPHONE_AIR_FRAME", {
56
64
  enumerable: true,
57
- get: function () { return chunkOI46UKOY_cjs.IPHONE_AIR_FRAME; }
65
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_AIR_FRAME; }
58
66
  });
59
67
  Object.defineProperty(exports, "IPHONE_AIR_LAYOUT", {
60
68
  enumerable: true,
61
- get: function () { return chunkOI46UKOY_cjs.IPHONE_AIR_LAYOUT; }
69
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_AIR_LAYOUT; }
62
70
  });
63
71
  Object.defineProperty(exports, "IPHONE_AIR_META", {
64
72
  enumerable: true,
65
- get: function () { return chunkOI46UKOY_cjs.IPHONE_AIR_META; }
73
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_AIR_META; }
66
74
  });
67
75
  Object.defineProperty(exports, "IPHONE_SE_3_FRAME", {
68
76
  enumerable: true,
69
- get: function () { return chunkOI46UKOY_cjs.IPHONE_SE_3_FRAME; }
77
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_SE_3_FRAME; }
70
78
  });
71
79
  Object.defineProperty(exports, "IPHONE_SE_3_LAYOUT", {
72
80
  enumerable: true,
73
- get: function () { return chunkOI46UKOY_cjs.IPHONE_SE_3_LAYOUT; }
81
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_SE_3_LAYOUT; }
74
82
  });
75
83
  Object.defineProperty(exports, "IPHONE_SE_3_META", {
76
84
  enumerable: true,
77
- get: function () { return chunkOI46UKOY_cjs.IPHONE_SE_3_META; }
85
+ get: function () { return chunkHF6B72Z5_cjs.IPHONE_SE_3_META; }
78
86
  });
79
87
  Object.defineProperty(exports, "IPhone16SVG", {
80
88
  enumerable: true,
81
- get: function () { return chunkOI46UKOY_cjs.IPhone16SVG; }
89
+ get: function () { return chunkHF6B72Z5_cjs.IPhone16SVG; }
82
90
  });
83
91
  Object.defineProperty(exports, "IPhone16eSVG", {
84
92
  enumerable: true,
85
- get: function () { return chunkOI46UKOY_cjs.IPhone16eSVG; }
93
+ get: function () { return chunkHF6B72Z5_cjs.IPhone16eSVG; }
86
94
  });
87
95
  Object.defineProperty(exports, "IPhone17ProMaxSVG", {
88
96
  enumerable: true,
89
- get: function () { return chunkOI46UKOY_cjs.IPhone17ProMaxSVG; }
97
+ get: function () { return chunkHF6B72Z5_cjs.IPhone17ProMaxSVG; }
90
98
  });
91
99
  Object.defineProperty(exports, "IPhone17ProSVG", {
92
100
  enumerable: true,
93
- get: function () { return chunkOI46UKOY_cjs.IPhone17ProSVG; }
101
+ get: function () { return chunkHF6B72Z5_cjs.IPhone17ProSVG; }
94
102
  });
95
103
  Object.defineProperty(exports, "IPhoneAirSVG", {
96
104
  enumerable: true,
97
- get: function () { return chunkOI46UKOY_cjs.IPhoneAirSVG; }
105
+ get: function () { return chunkHF6B72Z5_cjs.IPhoneAirSVG; }
98
106
  });
99
107
  Object.defineProperty(exports, "IPhoneSE3SVG", {
100
108
  enumerable: true,
101
- get: function () { return chunkOI46UKOY_cjs.IPhoneSE3SVG; }
109
+ get: function () { return chunkHF6B72Z5_cjs.IPhoneSE3SVG; }
102
110
  });
103
111
  //# sourceMappingURL=index.cjs.map
104
112
  //# sourceMappingURL=index.cjs.map
@@ -13,41 +13,33 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
13
13
  declare const IPHONE_17_PRO_MAX_META: DeviceMeta;
14
14
  declare const IPHONE_17_PRO_MAX_LAYOUT: DeviceLayoutData;
15
15
 
16
+ /**
17
+ * iphone-17-pro-max — real SVG frame (baked from BielaFrame Studio)
18
+ * Auto-generated by publish script. Do not edit manually.
19
+ */
16
20
  interface DeviceSVGProps$5 {
17
21
  colorScheme?: "light" | "dark";
18
22
  style?: React.CSSProperties;
19
23
  }
20
- /**
21
- * iPhone 17 Pro Max SVG Frame
22
- *
23
- * Dimensions: 440x956 logical points (screen area)
24
- * Full frame includes bezels: ~470x1002pt total
25
- *
26
- * Structure:
27
- * - Outer titanium frame with rounded corners
28
- * - Screen cutout (transparent — content shows through)
29
- * - Dynamic Island pill overlay
30
- * - Side buttons (volume, action, power, camera control)
31
- * - Bottom elements (USB-C, speaker grilles)
32
- * - data-zone annotations for DLC auto-derivation
33
- *
34
- * The SVG sits ON TOP of content with pointer-events: none.
35
- * Bezels are opaque — they mask any content that spills over.
36
- * Screen area is transparent — content shows through.
37
- */
38
- declare function IPhone17ProMaxSVG({ colorScheme, style }: DeviceSVGProps$5): react_jsx_runtime.JSX.Element;
39
- /** Frame dimensions needed by DeviceFrame to position content correctly */
24
+ declare function IPhone17ProMaxSVG({ style }: DeviceSVGProps$5): react_jsx_runtime.JSX.Element;
40
25
  declare const IPHONE_17_PRO_MAX_FRAME: {
41
- readonly bezelTop: 23;
42
- readonly bezelBottom: 23;
43
- readonly bezelLeft: 15;
44
- readonly bezelRight: 15;
45
- readonly totalWidth: 470;
46
- readonly totalHeight: 1002;
26
+ readonly bezelTop: 15;
27
+ readonly bezelBottom: 15;
28
+ readonly bezelLeft: 18;
29
+ readonly bezelRight: 18;
30
+ readonly totalWidth: 476;
31
+ readonly totalHeight: 986;
47
32
  readonly screenWidth: 440;
48
33
  readonly screenHeight: 956;
49
34
  readonly screenRadius: 55;
50
35
  };
36
+ declare const IPHONE_17_PRO_MAX_SCREEN_RECT: {
37
+ readonly x: 55;
38
+ readonly y: 45;
39
+ readonly width: 1320;
40
+ readonly height: 2868;
41
+ readonly rx: 53;
42
+ };
51
43
 
52
44
  /**
53
45
  * iPhone 17 Pro — dimensions
@@ -61,41 +53,33 @@ declare const IPHONE_17_PRO_MAX_FRAME: {
61
53
  declare const IPHONE_17_PRO_META: DeviceMeta;
62
54
  declare const IPHONE_17_PRO_LAYOUT: DeviceLayoutData;
63
55
 
56
+ /**
57
+ * iphone-17-pro — real SVG frame (baked from BielaFrame Studio)
58
+ * Auto-generated by publish script. Do not edit manually.
59
+ */
64
60
  interface DeviceSVGProps$4 {
65
61
  colorScheme?: "light" | "dark";
66
62
  style?: React.CSSProperties;
67
63
  }
68
- /**
69
- * iPhone 17 Pro SVG Frame
70
- *
71
- * Dimensions: 402x874 logical points (screen area)
72
- * Full frame includes bezels: ~432x920pt total
73
- *
74
- * Structure:
75
- * - Outer titanium frame with rounded corners
76
- * - Screen cutout (transparent — content shows through)
77
- * - Dynamic Island pill overlay
78
- * - Side buttons (volume, action, power, camera control)
79
- * - Bottom elements (USB-C, speaker grilles)
80
- * - data-zone annotations for DLC auto-derivation
81
- *
82
- * The SVG sits ON TOP of content with pointer-events: none.
83
- * Bezels are opaque — they mask any content that spills over.
84
- * Screen area is transparent — content shows through.
85
- */
86
- declare function IPhone17ProSVG({ colorScheme, style }: DeviceSVGProps$4): react_jsx_runtime.JSX.Element;
87
- /** Frame dimensions needed by DeviceFrame to position content correctly */
64
+ declare function IPhone17ProSVG({ style }: DeviceSVGProps$4): react_jsx_runtime.JSX.Element;
88
65
  declare const IPHONE_17_PRO_FRAME: {
89
- readonly bezelTop: 23;
90
- readonly bezelBottom: 23;
91
- readonly bezelLeft: 15;
92
- readonly bezelRight: 15;
93
- readonly totalWidth: 432;
94
- readonly totalHeight: 920;
66
+ readonly bezelTop: 19;
67
+ readonly bezelBottom: 19;
68
+ readonly bezelLeft: 19;
69
+ readonly bezelRight: 19;
70
+ readonly totalWidth: 440;
71
+ readonly totalHeight: 912;
95
72
  readonly screenWidth: 402;
96
73
  readonly screenHeight: 874;
97
74
  readonly screenRadius: 55;
98
75
  };
76
+ declare const IPHONE_17_PRO_SCREEN_RECT: {
77
+ readonly x: 55;
78
+ readonly y: 55;
79
+ readonly width: 1170;
80
+ readonly height: 2532;
81
+ readonly rx: 165;
82
+ };
99
83
 
100
84
  /**
101
85
  * iPhone Air — dimensions
@@ -289,4 +273,4 @@ declare const IPHONE_SE_3_FRAME: {
289
273
  readonly screenRadius: 5;
290
274
  };
291
275
 
292
- export { IPHONE_16E_FRAME, IPHONE_16E_LAYOUT, IPHONE_16E_META, IPHONE_16_FRAME, IPHONE_16_LAYOUT, IPHONE_16_META, IPHONE_17_PRO_FRAME, IPHONE_17_PRO_LAYOUT, IPHONE_17_PRO_MAX_FRAME, IPHONE_17_PRO_MAX_LAYOUT, IPHONE_17_PRO_MAX_META, IPHONE_17_PRO_META, IPHONE_AIR_FRAME, IPHONE_AIR_LAYOUT, IPHONE_AIR_META, IPHONE_SE_3_FRAME, IPHONE_SE_3_LAYOUT, IPHONE_SE_3_META, IPhone16SVG, IPhone16eSVG, IPhone17ProMaxSVG, IPhone17ProSVG, IPhoneAirSVG, IPhoneSE3SVG };
276
+ export { IPHONE_16E_FRAME, IPHONE_16E_LAYOUT, IPHONE_16E_META, IPHONE_16_FRAME, IPHONE_16_LAYOUT, IPHONE_16_META, IPHONE_17_PRO_FRAME, IPHONE_17_PRO_LAYOUT, IPHONE_17_PRO_MAX_FRAME, IPHONE_17_PRO_MAX_LAYOUT, IPHONE_17_PRO_MAX_META, IPHONE_17_PRO_MAX_SCREEN_RECT, IPHONE_17_PRO_META, IPHONE_17_PRO_SCREEN_RECT, IPHONE_AIR_FRAME, IPHONE_AIR_LAYOUT, IPHONE_AIR_META, IPHONE_SE_3_FRAME, IPHONE_SE_3_LAYOUT, IPHONE_SE_3_META, IPhone16SVG, IPhone16eSVG, IPhone17ProMaxSVG, IPhone17ProSVG, IPhoneAirSVG, IPhoneSE3SVG };
@@ -13,41 +13,33 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
13
13
  declare const IPHONE_17_PRO_MAX_META: DeviceMeta;
14
14
  declare const IPHONE_17_PRO_MAX_LAYOUT: DeviceLayoutData;
15
15
 
16
+ /**
17
+ * iphone-17-pro-max — real SVG frame (baked from BielaFrame Studio)
18
+ * Auto-generated by publish script. Do not edit manually.
19
+ */
16
20
  interface DeviceSVGProps$5 {
17
21
  colorScheme?: "light" | "dark";
18
22
  style?: React.CSSProperties;
19
23
  }
20
- /**
21
- * iPhone 17 Pro Max SVG Frame
22
- *
23
- * Dimensions: 440x956 logical points (screen area)
24
- * Full frame includes bezels: ~470x1002pt total
25
- *
26
- * Structure:
27
- * - Outer titanium frame with rounded corners
28
- * - Screen cutout (transparent — content shows through)
29
- * - Dynamic Island pill overlay
30
- * - Side buttons (volume, action, power, camera control)
31
- * - Bottom elements (USB-C, speaker grilles)
32
- * - data-zone annotations for DLC auto-derivation
33
- *
34
- * The SVG sits ON TOP of content with pointer-events: none.
35
- * Bezels are opaque — they mask any content that spills over.
36
- * Screen area is transparent — content shows through.
37
- */
38
- declare function IPhone17ProMaxSVG({ colorScheme, style }: DeviceSVGProps$5): react_jsx_runtime.JSX.Element;
39
- /** Frame dimensions needed by DeviceFrame to position content correctly */
24
+ declare function IPhone17ProMaxSVG({ style }: DeviceSVGProps$5): react_jsx_runtime.JSX.Element;
40
25
  declare const IPHONE_17_PRO_MAX_FRAME: {
41
- readonly bezelTop: 23;
42
- readonly bezelBottom: 23;
43
- readonly bezelLeft: 15;
44
- readonly bezelRight: 15;
45
- readonly totalWidth: 470;
46
- readonly totalHeight: 1002;
26
+ readonly bezelTop: 15;
27
+ readonly bezelBottom: 15;
28
+ readonly bezelLeft: 18;
29
+ readonly bezelRight: 18;
30
+ readonly totalWidth: 476;
31
+ readonly totalHeight: 986;
47
32
  readonly screenWidth: 440;
48
33
  readonly screenHeight: 956;
49
34
  readonly screenRadius: 55;
50
35
  };
36
+ declare const IPHONE_17_PRO_MAX_SCREEN_RECT: {
37
+ readonly x: 55;
38
+ readonly y: 45;
39
+ readonly width: 1320;
40
+ readonly height: 2868;
41
+ readonly rx: 53;
42
+ };
51
43
 
52
44
  /**
53
45
  * iPhone 17 Pro — dimensions
@@ -61,41 +53,33 @@ declare const IPHONE_17_PRO_MAX_FRAME: {
61
53
  declare const IPHONE_17_PRO_META: DeviceMeta;
62
54
  declare const IPHONE_17_PRO_LAYOUT: DeviceLayoutData;
63
55
 
56
+ /**
57
+ * iphone-17-pro — real SVG frame (baked from BielaFrame Studio)
58
+ * Auto-generated by publish script. Do not edit manually.
59
+ */
64
60
  interface DeviceSVGProps$4 {
65
61
  colorScheme?: "light" | "dark";
66
62
  style?: React.CSSProperties;
67
63
  }
68
- /**
69
- * iPhone 17 Pro SVG Frame
70
- *
71
- * Dimensions: 402x874 logical points (screen area)
72
- * Full frame includes bezels: ~432x920pt total
73
- *
74
- * Structure:
75
- * - Outer titanium frame with rounded corners
76
- * - Screen cutout (transparent — content shows through)
77
- * - Dynamic Island pill overlay
78
- * - Side buttons (volume, action, power, camera control)
79
- * - Bottom elements (USB-C, speaker grilles)
80
- * - data-zone annotations for DLC auto-derivation
81
- *
82
- * The SVG sits ON TOP of content with pointer-events: none.
83
- * Bezels are opaque — they mask any content that spills over.
84
- * Screen area is transparent — content shows through.
85
- */
86
- declare function IPhone17ProSVG({ colorScheme, style }: DeviceSVGProps$4): react_jsx_runtime.JSX.Element;
87
- /** Frame dimensions needed by DeviceFrame to position content correctly */
64
+ declare function IPhone17ProSVG({ style }: DeviceSVGProps$4): react_jsx_runtime.JSX.Element;
88
65
  declare const IPHONE_17_PRO_FRAME: {
89
- readonly bezelTop: 23;
90
- readonly bezelBottom: 23;
91
- readonly bezelLeft: 15;
92
- readonly bezelRight: 15;
93
- readonly totalWidth: 432;
94
- readonly totalHeight: 920;
66
+ readonly bezelTop: 19;
67
+ readonly bezelBottom: 19;
68
+ readonly bezelLeft: 19;
69
+ readonly bezelRight: 19;
70
+ readonly totalWidth: 440;
71
+ readonly totalHeight: 912;
95
72
  readonly screenWidth: 402;
96
73
  readonly screenHeight: 874;
97
74
  readonly screenRadius: 55;
98
75
  };
76
+ declare const IPHONE_17_PRO_SCREEN_RECT: {
77
+ readonly x: 55;
78
+ readonly y: 55;
79
+ readonly width: 1170;
80
+ readonly height: 2532;
81
+ readonly rx: 165;
82
+ };
99
83
 
100
84
  /**
101
85
  * iPhone Air — dimensions
@@ -289,4 +273,4 @@ declare const IPHONE_SE_3_FRAME: {
289
273
  readonly screenRadius: 5;
290
274
  };
291
275
 
292
- export { IPHONE_16E_FRAME, IPHONE_16E_LAYOUT, IPHONE_16E_META, IPHONE_16_FRAME, IPHONE_16_LAYOUT, IPHONE_16_META, IPHONE_17_PRO_FRAME, IPHONE_17_PRO_LAYOUT, IPHONE_17_PRO_MAX_FRAME, IPHONE_17_PRO_MAX_LAYOUT, IPHONE_17_PRO_MAX_META, IPHONE_17_PRO_META, IPHONE_AIR_FRAME, IPHONE_AIR_LAYOUT, IPHONE_AIR_META, IPHONE_SE_3_FRAME, IPHONE_SE_3_LAYOUT, IPHONE_SE_3_META, IPhone16SVG, IPhone16eSVG, IPhone17ProMaxSVG, IPhone17ProSVG, IPhoneAirSVG, IPhoneSE3SVG };
276
+ export { IPHONE_16E_FRAME, IPHONE_16E_LAYOUT, IPHONE_16E_META, IPHONE_16_FRAME, IPHONE_16_LAYOUT, IPHONE_16_META, IPHONE_17_PRO_FRAME, IPHONE_17_PRO_LAYOUT, IPHONE_17_PRO_MAX_FRAME, IPHONE_17_PRO_MAX_LAYOUT, IPHONE_17_PRO_MAX_META, IPHONE_17_PRO_MAX_SCREEN_RECT, IPHONE_17_PRO_META, IPHONE_17_PRO_SCREEN_RECT, IPHONE_AIR_FRAME, IPHONE_AIR_LAYOUT, IPHONE_AIR_META, IPHONE_SE_3_FRAME, IPHONE_SE_3_LAYOUT, IPHONE_SE_3_META, IPhone16SVG, IPhone16eSVG, IPhone17ProMaxSVG, IPhone17ProSVG, IPhoneAirSVG, IPhoneSE3SVG };
package/dist/ios/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { IPHONE_16E_FRAME, IPHONE_16E_LAYOUT, IPHONE_16E_META, IPHONE_16_FRAME, IPHONE_16_LAYOUT, IPHONE_16_META, IPHONE_17_PRO_FRAME, IPHONE_17_PRO_LAYOUT, IPHONE_17_PRO_MAX_FRAME, IPHONE_17_PRO_MAX_LAYOUT, IPHONE_17_PRO_MAX_META, IPHONE_17_PRO_META, IPHONE_AIR_FRAME, IPHONE_AIR_LAYOUT, IPHONE_AIR_META, IPHONE_SE_3_FRAME, IPHONE_SE_3_LAYOUT, IPHONE_SE_3_META, IPhone16SVG, IPhone16eSVG, IPhone17ProMaxSVG, IPhone17ProSVG, IPhoneAirSVG, IPhoneSE3SVG } from '../chunk-DGX4WRAK.js';
1
+ export { IPHONE_16E_FRAME, IPHONE_16E_LAYOUT, IPHONE_16E_META, IPHONE_16_FRAME, IPHONE_16_LAYOUT, IPHONE_16_META, IPHONE_17_PRO_FRAME, IPHONE_17_PRO_LAYOUT, IPHONE_17_PRO_MAX_FRAME, IPHONE_17_PRO_MAX_LAYOUT, IPHONE_17_PRO_MAX_META, IPHONE_17_PRO_MAX_SCREEN_RECT, IPHONE_17_PRO_META, IPHONE_17_PRO_SCREEN_RECT, IPHONE_AIR_FRAME, IPHONE_AIR_LAYOUT, IPHONE_AIR_META, IPHONE_SE_3_FRAME, IPHONE_SE_3_LAYOUT, IPHONE_SE_3_META, IPhone16SVG, IPhone16eSVG, IPhone17ProMaxSVG, IPhone17ProSVG, IPhoneAirSVG, IPhoneSE3SVG } from '../chunk-E2ICKMKH.js';
2
2
  //# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@biela.dev/devices",
3
- "version": "1.5.0",
3
+ "version": "1.6.1",
4
4
  "description": "Built-in device SVG library and layout contracts for BielaFrame — 11 devices covering every unique screen class",
5
5
  "license": "MIT",
6
6
  "author": "Biela Enterprise <alex@cocindau.com>",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/android/galaxy-s25-ultra/metadata.ts","../src/android/galaxy-s25-ultra/frame.tsx","../src/android/galaxy-s25/metadata.ts","../src/android/galaxy-s25/frame.tsx","../src/android/galaxy-s25-edge/metadata.ts","../src/android/galaxy-s25-edge/frame.tsx","../src/android/pixel-9-pro-xl/metadata.ts","../src/android/pixel-9-pro-xl/frame.tsx","../src/android/pixel-9-pro/metadata.ts","../src/android/pixel-9-pro/frame.tsx"],"names":["jsxs","jsx"],"mappings":"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","file":"chunk-BXBG5BY7.cjs","sourcesContent":["import type { DeviceMeta } from \"../../types\";\nimport type { DeviceLayoutData } from \"../../contract-types\";\n\n/**\n * Samsung Galaxy S25 Ultra — VERIFIED dimensions\n *\n * Screen: 384x824dp (CSS viewport)\n * Physical: 1440x3088px at 3.75x DPR\n * Display: 6.9\" Dynamic LTPO AMOLED 2X, 120Hz, ~505 PPI\n * Hardware: Center punch-hole camera, flat display, S Pen slot\n */\nexport const GALAXY_S25_ULTRA_META: DeviceMeta = {\n id: \"galaxy-s25-ultra\",\n name: \"Galaxy S25 Ultra\",\n platform: \"android\",\n year: 2025,\n screen: {\n width: 384,\n height: 824,\n physicalWidth: 1440,\n physicalHeight: 3088,\n dpr: 3.75,\n aspectRatio: \"19.5:9\",\n cornerRadius: 42,\n ppi: 505,\n },\n};\n\nexport const GALAXY_S25_ULTRA_LAYOUT: DeviceLayoutData = {\n meta: GALAXY_S25_ULTRA_META,\n safeArea: {\n portrait: { top: 38, bottom: 24, left: 0, right: 0 },\n landscape: { top: 0, bottom: 24, left: 38, right: 38 },\n },\n hardwareOverlays: {\n type: \"punch-hole\",\n portrait: {\n x: 187, // centered: (384 - 10) / 2 = 187\n y: 12,\n width: 10,\n height: 10,\n shape: \"circle\",\n cornerRadius: 5,\n },\n },\n statusBar: {\n height: 28,\n style: \"fullwidth\",\n hasTime: true,\n hasBattery: true,\n hasSignal: true,\n },\n homeIndicator: {\n type: \"gestureline\",\n height: 5,\n width: 90,\n visible: true,\n },\n hardwareButtons: {\n volumeUp: { side: \"right\", yPosition: 190 },\n volumeDown: { side: \"right\", yPosition: 226 },\n power: { side: \"right\", yPosition: 276 },\n },\n};\n","interface DeviceSVGProps {\n colorScheme?: \"light\" | \"dark\";\n style?: React.CSSProperties;\n}\n\n/**\n * Galaxy S25 Ultra SVG Frame\n *\n * Dimensions: 384x824 logical points (screen area)\n * Full frame includes bezels: ~408x860pt total\n *\n * Structure:\n * - Outer titanium frame with squared-off rounded corners\n * - Screen cutout (transparent -- content shows through)\n * - Center punch-hole camera (small circle at top center)\n * - Right-side buttons (Volume Up, Volume Down, Power/Side key)\n * - Bottom elements (USB-C port, S Pen slot)\n * - Gesture navigation bar (thin horizontal line near bottom)\n * - data-zone annotations for DLC auto-derivation\n *\n * The SVG sits ON TOP of content with pointer-events: none.\n * Bezels are opaque -- they mask any content that spills over.\n * Screen area is transparent -- content shows through.\n */\nexport function GalaxyS25UltraSVG({ colorScheme = \"dark\", style }: DeviceSVGProps) {\n const frameColor = colorScheme === \"dark\" ? \"#1c1c1e\" : \"#e5e5e7\";\n const frameBorder = colorScheme === \"dark\" ? \"#3a3a3c\" : \"#c7c7cc\";\n const buttonColor = colorScheme === \"dark\" ? \"#2c2c2e\" : \"#d1d1d6\";\n const punchHoleColor = \"#000000\";\n\n // Frame dimensions\n const bezelSide = 12;\n const bezelTop = 18;\n const bezelBottom = 18;\n const screenW = 384;\n const screenH = 824;\n const totalW = screenW + bezelSide * 2; // 408\n const totalH = screenH + bezelTop + bezelBottom; // 860\n const cornerRadius = 42;\n const outerRadius = cornerRadius + 8; // 50\n const screenRadius = cornerRadius; // 42\n\n return (\n <svg\n viewBox={`0 0 ${totalW} ${totalH}`}\n width={totalW}\n height={totalH}\n xmlns=\"http://www.w3.org/2000/svg\"\n style={style}\n >\n <defs>\n {/* Titanium frame gradient */}\n <linearGradient id=\"frame-gradient-galaxy-s25-ultra\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\n <stop offset=\"0%\" stopColor={frameColor} />\n <stop offset=\"50%\" stopColor={colorScheme === \"dark\" ? \"#262628\" : \"#ededef\"} />\n <stop offset=\"100%\" stopColor={frameColor} />\n </linearGradient>\n\n {/* Mask to punch a real hole for the screen area.\n White = visible, black = transparent (shows HTML content below) */}\n <mask id=\"frame-screen-mask-galaxy-s25-ultra\">\n <rect x=\"0\" y=\"0\" width={totalW} height={totalH} fill=\"white\" />\n <rect\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height={screenH}\n rx={screenRadius}\n ry={screenRadius}\n fill=\"black\"\n />\n </mask>\n </defs>\n\n {/* === OUTER FRAME (titanium body) with screen cutout === */}\n <rect\n x=\"0\"\n y=\"0\"\n width={totalW}\n height={totalH}\n rx={outerRadius}\n ry={outerRadius}\n fill=\"url(#frame-gradient-galaxy-s25-ultra)\"\n stroke={frameBorder}\n strokeWidth=\"1.5\"\n mask=\"url(#frame-screen-mask-galaxy-s25-ultra)\"\n />\n\n {/* === SCREEN AREA marker -- fully transparent for data-zone derivation === */}\n <rect\n data-zone=\"screen-area\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height={screenH}\n rx={screenRadius}\n ry={screenRadius}\n fill=\"none\"\n />\n\n {/* === CENTER PUNCH-HOLE CAMERA === */}\n <circle\n data-zone=\"hardware-overlay\"\n data-zone-type=\"punch-hole-camera\"\n cx={bezelSide + screenW / 2}\n cy={bezelTop + 17}\n r=\"5\"\n fill={punchHoleColor}\n />\n\n {/* === SAFE AREA ZONES (invisible, for DLC derivation) === */}\n <rect\n data-zone=\"safe-area-top-inset\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height=\"38\"\n fill=\"transparent\"\n />\n <rect\n data-zone=\"safe-area-bottom-inset\"\n x={bezelSide}\n y={bezelTop + screenH - 24}\n width={screenW}\n height=\"24\"\n fill=\"transparent\"\n />\n\n {/* === STATUS BAR ZONE === */}\n <rect\n data-zone=\"status-bar\"\n data-zone-style=\"punch-hole\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height=\"28\"\n fill=\"transparent\"\n />\n\n {/* === GESTURE NAVIGATION BAR (home indicator) === */}\n <rect\n data-zone=\"home-indicator\"\n data-zone-type=\"gesture-bar\"\n x={bezelSide + (screenW - 90) / 2}\n y={bezelTop + screenH - 10}\n width=\"90\"\n height=\"3\"\n rx=\"1.5\"\n ry=\"1.5\"\n fill=\"rgba(255,255,255,0.25)\"\n />\n\n {/* === HARDWARE BUTTONS (all on right side -- Samsung standard) === */}\n {/* Volume Up -- right side */}\n <rect\n data-button=\"volume-up\"\n data-side=\"right\"\n x={totalW - 2}\n y=\"190\"\n width=\"3\"\n height=\"28\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n {/* Volume Down -- right side */}\n <rect\n data-button=\"volume-down\"\n data-side=\"right\"\n x={totalW - 2}\n y=\"226\"\n width=\"3\"\n height=\"28\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n {/* Power/Side Key -- right side, below volume */}\n <rect\n data-button=\"power\"\n data-side=\"right\"\n x={totalW - 2}\n y=\"276\"\n width=\"3\"\n height=\"36\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n\n {/* === BOTTOM HARDWARE === */}\n {/* USB-C port */}\n <rect\n x={(totalW - 24) / 2}\n y={totalH - 5}\n width=\"24\"\n height=\"4\"\n rx=\"2\"\n fill={colorScheme === \"dark\" ? \"#111\" : \"#bbb\"}\n />\n {/* S Pen slot (small rectangle at bottom-right of frame) */}\n <rect\n x={totalW - bezelSide - 40}\n y={totalH - 4}\n width=\"16\"\n height=\"3\"\n rx=\"1\"\n fill={colorScheme === \"dark\" ? \"#0a0a0a\" : \"#aaa\"}\n />\n </svg>\n );\n}\n\n/** Frame dimensions needed by DeviceFrame to position content correctly */\nexport const GALAXY_S25_ULTRA_FRAME = {\n bezelTop: 18,\n bezelBottom: 18,\n bezelLeft: 12,\n bezelRight: 12,\n totalWidth: 408,\n totalHeight: 860,\n screenWidth: 384,\n screenHeight: 824,\n screenRadius: 42,\n} as const;\n","import type { DeviceMeta } from \"../../types\";\nimport type { DeviceLayoutData } from \"../../contract-types\";\n\n/**\n * Samsung Galaxy S25 — VERIFIED dimensions\n *\n * Screen: 360x780dp (CSS viewport)\n * Physical: 1080x2340px at 3x DPR\n * Display: 6.2\" Dynamic LTPO AMOLED 2X, 120Hz, ~425 PPI\n * Hardware: Center punch-hole camera, flat display\n */\nexport const GALAXY_S25_META: DeviceMeta = {\n id: \"galaxy-s25\",\n name: \"Galaxy S25\",\n platform: \"android\",\n year: 2025,\n screen: {\n width: 360,\n height: 780,\n physicalWidth: 1080,\n physicalHeight: 2340,\n dpr: 3,\n aspectRatio: \"19.5:9\",\n cornerRadius: 42,\n ppi: 425,\n },\n};\n\nexport const GALAXY_S25_LAYOUT: DeviceLayoutData = {\n meta: GALAXY_S25_META,\n safeArea: {\n portrait: { top: 32, bottom: 24, left: 0, right: 0 },\n landscape: { top: 0, bottom: 24, left: 32, right: 32 },\n },\n hardwareOverlays: {\n type: \"punch-hole\",\n portrait: {\n x: 176, // centered: (360 - 9) / 2 ~ 176\n y: 12,\n width: 9,\n height: 9,\n shape: \"circle\",\n cornerRadius: 4.5,\n },\n },\n statusBar: {\n height: 32,\n style: \"fullwidth\",\n hasTime: true,\n hasBattery: true,\n hasSignal: true,\n },\n homeIndicator: {\n type: \"gestureline\",\n height: 5,\n width: 90,\n visible: true,\n },\n hardwareButtons: {\n volumeUp: { side: \"right\", yPosition: 180 },\n volumeDown: { side: \"right\", yPosition: 214 },\n power: { side: \"right\", yPosition: 260 },\n },\n};\n","interface DeviceSVGProps {\n colorScheme?: \"light\" | \"dark\";\n style?: React.CSSProperties;\n}\n\n/**\n * Galaxy S25 SVG Frame\n *\n * Dimensions: 360x780 logical points (screen area)\n * Full frame includes bezels: ~384x816pt total\n *\n * Structure:\n * - Outer aluminum frame with squared-off rounded corners\n * - Screen cutout (transparent -- content shows through)\n * - Center punch-hole camera (small circle at top center)\n * - Right-side buttons (Volume Up, Volume Down, Power/Side key)\n * - Bottom elements (USB-C port)\n * - Gesture navigation bar (thin horizontal line near bottom)\n * - data-zone annotations for DLC auto-derivation\n *\n * The SVG sits ON TOP of content with pointer-events: none.\n * Bezels are opaque -- they mask any content that spills over.\n * Screen area is transparent -- content shows through.\n */\nexport function GalaxyS25SVG({ colorScheme = \"dark\", style }: DeviceSVGProps) {\n const frameColor = colorScheme === \"dark\" ? \"#1c1c1e\" : \"#e5e5e7\";\n const frameBorder = colorScheme === \"dark\" ? \"#3a3a3c\" : \"#c7c7cc\";\n const buttonColor = colorScheme === \"dark\" ? \"#2c2c2e\" : \"#d1d1d6\";\n const punchHoleColor = \"#000000\";\n\n // Frame dimensions\n const bezelSide = 12;\n const bezelTop = 18;\n const bezelBottom = 18;\n const screenW = 360;\n const screenH = 780;\n const totalW = screenW + bezelSide * 2; // 384\n const totalH = screenH + bezelTop + bezelBottom; // 816\n const cornerRadius = 42;\n const outerRadius = cornerRadius + 8; // 50\n const screenRadius = cornerRadius; // 42\n\n return (\n <svg\n viewBox={`0 0 ${totalW} ${totalH}`}\n width={totalW}\n height={totalH}\n xmlns=\"http://www.w3.org/2000/svg\"\n style={style}\n >\n <defs>\n {/* Aluminum frame gradient */}\n <linearGradient id=\"frame-gradient-galaxy-s25\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\n <stop offset=\"0%\" stopColor={frameColor} />\n <stop offset=\"50%\" stopColor={colorScheme === \"dark\" ? \"#262628\" : \"#ededef\"} />\n <stop offset=\"100%\" stopColor={frameColor} />\n </linearGradient>\n\n {/* Mask to punch a real hole for the screen area.\n White = visible, black = transparent (shows HTML content below) */}\n <mask id=\"frame-screen-mask-galaxy-s25\">\n <rect x=\"0\" y=\"0\" width={totalW} height={totalH} fill=\"white\" />\n <rect\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height={screenH}\n rx={screenRadius}\n ry={screenRadius}\n fill=\"black\"\n />\n </mask>\n </defs>\n\n {/* === OUTER FRAME (aluminum body) with screen cutout === */}\n <rect\n x=\"0\"\n y=\"0\"\n width={totalW}\n height={totalH}\n rx={outerRadius}\n ry={outerRadius}\n fill=\"url(#frame-gradient-galaxy-s25)\"\n stroke={frameBorder}\n strokeWidth=\"1.5\"\n mask=\"url(#frame-screen-mask-galaxy-s25)\"\n />\n\n {/* === SCREEN AREA marker -- fully transparent for data-zone derivation === */}\n <rect\n data-zone=\"screen-area\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height={screenH}\n rx={screenRadius}\n ry={screenRadius}\n fill=\"none\"\n />\n\n {/* === CENTER PUNCH-HOLE CAMERA === */}\n <circle\n data-zone=\"hardware-overlay\"\n data-zone-type=\"punch-hole-camera\"\n cx={bezelSide + screenW / 2}\n cy={bezelTop + 16.5}\n r=\"4.5\"\n fill={punchHoleColor}\n />\n\n {/* === SAFE AREA ZONES (invisible, for DLC derivation) === */}\n <rect\n data-zone=\"safe-area-top-inset\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height=\"32\"\n fill=\"transparent\"\n />\n <rect\n data-zone=\"safe-area-bottom-inset\"\n x={bezelSide}\n y={bezelTop + screenH - 24}\n width={screenW}\n height=\"24\"\n fill=\"transparent\"\n />\n\n {/* === STATUS BAR ZONE === */}\n <rect\n data-zone=\"status-bar\"\n data-zone-style=\"punch-hole\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height=\"32\"\n fill=\"transparent\"\n />\n\n {/* === GESTURE NAVIGATION BAR (home indicator) === */}\n <rect\n data-zone=\"home-indicator\"\n data-zone-type=\"gesture-bar\"\n x={bezelSide + (screenW - 90) / 2}\n y={bezelTop + screenH - 10}\n width=\"90\"\n height=\"3\"\n rx=\"1.5\"\n ry=\"1.5\"\n fill=\"rgba(255,255,255,0.25)\"\n />\n\n {/* === HARDWARE BUTTONS (all on right side -- Samsung standard) === */}\n {/* Volume Up -- right side */}\n <rect\n data-button=\"volume-up\"\n data-side=\"right\"\n x={totalW - 2}\n y=\"180\"\n width=\"3\"\n height=\"28\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n {/* Volume Down -- right side */}\n <rect\n data-button=\"volume-down\"\n data-side=\"right\"\n x={totalW - 2}\n y=\"216\"\n width=\"3\"\n height=\"28\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n {/* Power/Side Key -- right side, below volume */}\n <rect\n data-button=\"power\"\n data-side=\"right\"\n x={totalW - 2}\n y=\"266\"\n width=\"3\"\n height=\"36\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n\n {/* === BOTTOM HARDWARE === */}\n {/* USB-C port */}\n <rect\n x={(totalW - 24) / 2}\n y={totalH - 5}\n width=\"24\"\n height=\"4\"\n rx=\"2\"\n fill={colorScheme === \"dark\" ? \"#111\" : \"#bbb\"}\n />\n </svg>\n );\n}\n\n/** Frame dimensions needed by DeviceFrame to position content correctly */\nexport const GALAXY_S25_FRAME = {\n bezelTop: 18,\n bezelBottom: 18,\n bezelLeft: 12,\n bezelRight: 12,\n totalWidth: 384,\n totalHeight: 816,\n screenWidth: 360,\n screenHeight: 780,\n screenRadius: 42,\n} as const;\n","import type { DeviceMeta } from \"../../types\";\nimport type { DeviceLayoutData } from \"../../contract-types\";\n\n/**\n * Samsung Galaxy S25 Edge — VERIFIED dimensions\n *\n * Screen: 382x824dp (CSS viewport)\n * Physical: 1440x3120px at 3.75x DPR\n * Display: 6.7\" Dynamic LTPO AMOLED 2X, 120Hz, ~510 PPI\n * Hardware: Center punch-hole camera, ultra-thin flat display\n */\nexport const GALAXY_S25_EDGE_META: DeviceMeta = {\n id: \"galaxy-s25-edge\",\n name: \"Galaxy S25 Edge\",\n platform: \"android\",\n year: 2025,\n screen: {\n width: 382,\n height: 824,\n physicalWidth: 1440,\n physicalHeight: 3120,\n dpr: 3.75,\n aspectRatio: \"19.5:9\",\n cornerRadius: 42,\n ppi: 510,\n },\n};\n\nexport const GALAXY_S25_EDGE_LAYOUT: DeviceLayoutData = {\n meta: GALAXY_S25_EDGE_META,\n safeArea: {\n portrait: { top: 32, bottom: 24, left: 0, right: 0 },\n landscape: { top: 0, bottom: 24, left: 32, right: 32 },\n },\n hardwareOverlays: {\n type: \"punch-hole\",\n portrait: {\n x: 187, // centered: (382 - 8) / 2 = 187\n y: 12,\n width: 8,\n height: 8,\n shape: \"circle\",\n cornerRadius: 4,\n },\n },\n statusBar: {\n height: 32,\n style: \"fullwidth\",\n hasTime: true,\n hasBattery: true,\n hasSignal: true,\n },\n homeIndicator: {\n type: \"gestureline\",\n height: 5,\n width: 90,\n visible: true,\n },\n hardwareButtons: {\n volumeUp: { side: \"right\", yPosition: 185 },\n volumeDown: { side: \"right\", yPosition: 220 },\n power: { side: \"right\", yPosition: 268 },\n },\n};\n","interface DeviceSVGProps {\n colorScheme?: \"light\" | \"dark\";\n style?: React.CSSProperties;\n}\n\n/**\n * Galaxy S25 Edge SVG Frame\n *\n * Dimensions: 382x824 logical points (screen area)\n * Full frame includes bezels: ~398x852pt total (ultra-thin bezels)\n *\n * Structure:\n * - Ultra-thin aluminum frame with squared-off rounded corners\n * - Screen cutout (transparent -- content shows through)\n * - Center punch-hole camera (small circle at top center)\n * - Right-side buttons (Volume Up, Volume Down, Power/Side key)\n * - Bottom elements (USB-C port)\n * - Gesture navigation bar (thin horizontal line near bottom)\n * - data-zone annotations for DLC auto-derivation\n *\n * The SVG sits ON TOP of content with pointer-events: none.\n * Bezels are opaque -- they mask any content that spills over.\n * Screen area is transparent -- content shows through.\n */\nexport function GalaxyS25EdgeSVG({ colorScheme = \"dark\", style }: DeviceSVGProps) {\n const frameColor = colorScheme === \"dark\" ? \"#1c1c1e\" : \"#e5e5e7\";\n const frameBorder = colorScheme === \"dark\" ? \"#3a3a3c\" : \"#c7c7cc\";\n const buttonColor = colorScheme === \"dark\" ? \"#2c2c2e\" : \"#d1d1d6\";\n const punchHoleColor = \"#000000\";\n\n // Frame dimensions (ultra-thin bezels)\n const bezelSide = 8;\n const bezelTop = 14;\n const bezelBottom = 14;\n const screenW = 382;\n const screenH = 824;\n const totalW = screenW + bezelSide * 2; // 398\n const totalH = screenH + bezelTop + bezelBottom; // 852\n const cornerRadius = 42;\n const outerRadius = cornerRadius + 6; // 48\n const screenRadius = cornerRadius; // 42\n\n return (\n <svg\n viewBox={`0 0 ${totalW} ${totalH}`}\n width={totalW}\n height={totalH}\n xmlns=\"http://www.w3.org/2000/svg\"\n style={style}\n >\n <defs>\n {/* Ultra-thin aluminum frame gradient */}\n <linearGradient id=\"frame-gradient-galaxy-s25-edge\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\n <stop offset=\"0%\" stopColor={frameColor} />\n <stop offset=\"50%\" stopColor={colorScheme === \"dark\" ? \"#262628\" : \"#ededef\"} />\n <stop offset=\"100%\" stopColor={frameColor} />\n </linearGradient>\n\n {/* Mask to punch a real hole for the screen area.\n White = visible, black = transparent (shows HTML content below) */}\n <mask id=\"frame-screen-mask-galaxy-s25-edge\">\n <rect x=\"0\" y=\"0\" width={totalW} height={totalH} fill=\"white\" />\n <rect\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height={screenH}\n rx={screenRadius}\n ry={screenRadius}\n fill=\"black\"\n />\n </mask>\n </defs>\n\n {/* === OUTER FRAME (ultra-thin aluminum body) with screen cutout === */}\n <rect\n x=\"0\"\n y=\"0\"\n width={totalW}\n height={totalH}\n rx={outerRadius}\n ry={outerRadius}\n fill=\"url(#frame-gradient-galaxy-s25-edge)\"\n stroke={frameBorder}\n strokeWidth=\"1.5\"\n mask=\"url(#frame-screen-mask-galaxy-s25-edge)\"\n />\n\n {/* === SCREEN AREA marker -- fully transparent for data-zone derivation === */}\n <rect\n data-zone=\"screen-area\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height={screenH}\n rx={screenRadius}\n ry={screenRadius}\n fill=\"none\"\n />\n\n {/* === CENTER PUNCH-HOLE CAMERA === */}\n <circle\n data-zone=\"hardware-overlay\"\n data-zone-type=\"punch-hole-camera\"\n cx={bezelSide + screenW / 2}\n cy={bezelTop + 16}\n r=\"4\"\n fill={punchHoleColor}\n />\n\n {/* === SAFE AREA ZONES (invisible, for DLC derivation) === */}\n <rect\n data-zone=\"safe-area-top-inset\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height=\"32\"\n fill=\"transparent\"\n />\n <rect\n data-zone=\"safe-area-bottom-inset\"\n x={bezelSide}\n y={bezelTop + screenH - 24}\n width={screenW}\n height=\"24\"\n fill=\"transparent\"\n />\n\n {/* === STATUS BAR ZONE === */}\n <rect\n data-zone=\"status-bar\"\n data-zone-style=\"punch-hole\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height=\"32\"\n fill=\"transparent\"\n />\n\n {/* === GESTURE NAVIGATION BAR (home indicator) === */}\n <rect\n data-zone=\"home-indicator\"\n data-zone-type=\"gesture-bar\"\n x={bezelSide + (screenW - 90) / 2}\n y={bezelTop + screenH - 10}\n width=\"90\"\n height=\"3\"\n rx=\"1.5\"\n ry=\"1.5\"\n fill=\"rgba(255,255,255,0.25)\"\n />\n\n {/* === HARDWARE BUTTONS (all on right side -- Samsung standard) === */}\n {/* Volume Up -- right side */}\n <rect\n data-button=\"volume-up\"\n data-side=\"right\"\n x={totalW - 2}\n y=\"186\"\n width=\"3\"\n height=\"28\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n {/* Volume Down -- right side */}\n <rect\n data-button=\"volume-down\"\n data-side=\"right\"\n x={totalW - 2}\n y=\"222\"\n width=\"3\"\n height=\"28\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n {/* Power/Side Key -- right side, below volume */}\n <rect\n data-button=\"power\"\n data-side=\"right\"\n x={totalW - 2}\n y=\"272\"\n width=\"3\"\n height=\"36\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n\n {/* === BOTTOM HARDWARE === */}\n {/* USB-C port */}\n <rect\n x={(totalW - 24) / 2}\n y={totalH - 5}\n width=\"24\"\n height=\"4\"\n rx=\"2\"\n fill={colorScheme === \"dark\" ? \"#111\" : \"#bbb\"}\n />\n </svg>\n );\n}\n\n/** Frame dimensions needed by DeviceFrame to position content correctly */\nexport const GALAXY_S25_EDGE_FRAME = {\n bezelTop: 14,\n bezelBottom: 14,\n bezelLeft: 8,\n bezelRight: 8,\n totalWidth: 398,\n totalHeight: 852,\n screenWidth: 382,\n screenHeight: 824,\n screenRadius: 42,\n} as const;\n","import type { DeviceMeta } from \"../../types\";\nimport type { DeviceLayoutData } from \"../../contract-types\";\n\n/**\n * Google Pixel 9 Pro XL — VERIFIED dimensions\n *\n * Screen: 448x968dp (CSS viewport)\n * Physical: 1344x2904px at 3x DPR\n * Display: 6.8\" LTPO OLED, 120Hz, ~486 PPI\n * Hardware: Center punch-hole camera, flat display\n */\nexport const PIXEL_9_PRO_XL_META: DeviceMeta = {\n id: \"pixel-9-pro-xl\",\n name: \"Pixel 9 Pro XL\",\n platform: \"android\",\n year: 2024,\n screen: {\n width: 448,\n height: 968,\n physicalWidth: 1344,\n physicalHeight: 2904,\n dpr: 3,\n aspectRatio: \"19.5:9\",\n cornerRadius: 48,\n ppi: 486,\n },\n};\n\nexport const PIXEL_9_PRO_XL_LAYOUT: DeviceLayoutData = {\n meta: PIXEL_9_PRO_XL_META,\n safeArea: {\n portrait: { top: 32, bottom: 24, left: 0, right: 0 },\n landscape: { top: 0, bottom: 24, left: 32, right: 32 },\n },\n hardwareOverlays: {\n type: \"punch-hole\",\n portrait: {\n x: 219, // centered: (448 - 11) / 2 ~ 219\n y: 12,\n width: 11,\n height: 11,\n shape: \"circle\",\n cornerRadius: 5.5,\n },\n },\n statusBar: {\n height: 32,\n style: \"fullwidth\",\n hasTime: true,\n hasBattery: true,\n hasSignal: true,\n },\n homeIndicator: {\n type: \"gestureline\",\n height: 5,\n width: 90,\n visible: true,\n },\n hardwareButtons: {\n volumeUp: { side: \"left\", yPosition: 195 },\n volumeDown: { side: \"left\", yPosition: 235 },\n power: { side: \"right\", yPosition: 215 },\n },\n};\n","interface DeviceSVGProps {\n colorScheme?: \"light\" | \"dark\";\n style?: React.CSSProperties;\n}\n\n/**\n * Pixel 9 Pro XL SVG Frame\n *\n * Dimensions: 448x968 logical points (screen area)\n * Full frame includes bezels: ~472x1004pt total\n *\n * Structure:\n * - Outer matte aluminum frame with distinctively rounded corners (Pixel style)\n * - Screen cutout (transparent -- content shows through)\n * - Center punch-hole camera (small circle at top center)\n * - Power button on RIGHT side, Volume buttons on LEFT side (Pixel standard)\n * - Bottom elements (USB-C port)\n * - Gesture navigation bar (thin horizontal line near bottom)\n * - data-zone annotations for DLC auto-derivation\n *\n * The SVG sits ON TOP of content with pointer-events: none.\n * Bezels are opaque -- they mask any content that spills over.\n * Screen area is transparent -- content shows through.\n */\nexport function Pixel9ProXLSVG({ colorScheme = \"dark\", style }: DeviceSVGProps) {\n const frameColor = colorScheme === \"dark\" ? \"#1c1c1e\" : \"#e5e5e7\";\n const frameBorder = colorScheme === \"dark\" ? \"#3a3a3c\" : \"#c7c7cc\";\n const buttonColor = colorScheme === \"dark\" ? \"#2c2c2e\" : \"#d1d1d6\";\n const punchHoleColor = \"#000000\";\n\n // Frame dimensions\n const bezelSide = 12;\n const bezelTop = 18;\n const bezelBottom = 18;\n const screenW = 448;\n const screenH = 968;\n const totalW = screenW + bezelSide * 2; // 472\n const totalH = screenH + bezelTop + bezelBottom; // 1004\n const cornerRadius = 48;\n const outerRadius = cornerRadius + 8; // 56\n const screenRadius = cornerRadius; // 48\n\n return (\n <svg\n viewBox={`0 0 ${totalW} ${totalH}`}\n width={totalW}\n height={totalH}\n xmlns=\"http://www.w3.org/2000/svg\"\n style={style}\n >\n <defs>\n {/* Matte aluminum frame gradient */}\n <linearGradient id=\"frame-gradient-pixel-9-pro-xl\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\n <stop offset=\"0%\" stopColor={frameColor} />\n <stop offset=\"50%\" stopColor={colorScheme === \"dark\" ? \"#262628\" : \"#ededef\"} />\n <stop offset=\"100%\" stopColor={frameColor} />\n </linearGradient>\n\n {/* Mask to punch a real hole for the screen area.\n White = visible, black = transparent (shows HTML content below) */}\n <mask id=\"frame-screen-mask-pixel-9-pro-xl\">\n <rect x=\"0\" y=\"0\" width={totalW} height={totalH} fill=\"white\" />\n <rect\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height={screenH}\n rx={screenRadius}\n ry={screenRadius}\n fill=\"black\"\n />\n </mask>\n </defs>\n\n {/* === OUTER FRAME (matte aluminum body) with screen cutout === */}\n <rect\n x=\"0\"\n y=\"0\"\n width={totalW}\n height={totalH}\n rx={outerRadius}\n ry={outerRadius}\n fill=\"url(#frame-gradient-pixel-9-pro-xl)\"\n stroke={frameBorder}\n strokeWidth=\"1.5\"\n mask=\"url(#frame-screen-mask-pixel-9-pro-xl)\"\n />\n\n {/* === SCREEN AREA marker -- fully transparent for data-zone derivation === */}\n <rect\n data-zone=\"screen-area\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height={screenH}\n rx={screenRadius}\n ry={screenRadius}\n fill=\"none\"\n />\n\n {/* === CENTER PUNCH-HOLE CAMERA === */}\n <circle\n data-zone=\"hardware-overlay\"\n data-zone-type=\"punch-hole-camera\"\n cx={bezelSide + screenW / 2}\n cy={bezelTop + 17.5}\n r=\"5.5\"\n fill={punchHoleColor}\n />\n\n {/* === SAFE AREA ZONES (invisible, for DLC derivation) === */}\n <rect\n data-zone=\"safe-area-top-inset\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height=\"32\"\n fill=\"transparent\"\n />\n <rect\n data-zone=\"safe-area-bottom-inset\"\n x={bezelSide}\n y={bezelTop + screenH - 24}\n width={screenW}\n height=\"24\"\n fill=\"transparent\"\n />\n\n {/* === STATUS BAR ZONE === */}\n <rect\n data-zone=\"status-bar\"\n data-zone-style=\"punch-hole\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height=\"32\"\n fill=\"transparent\"\n />\n\n {/* === GESTURE NAVIGATION BAR (home indicator) === */}\n <rect\n data-zone=\"home-indicator\"\n data-zone-type=\"gesture-bar\"\n x={bezelSide + (screenW - 90) / 2}\n y={bezelTop + screenH - 10}\n width=\"90\"\n height=\"3\"\n rx=\"1.5\"\n ry=\"1.5\"\n fill=\"rgba(255,255,255,0.25)\"\n />\n\n {/* === HARDWARE BUTTONS (Pixel layout: power RIGHT, volume LEFT) === */}\n {/* Power button -- right side */}\n <rect\n data-button=\"power\"\n data-side=\"right\"\n x={totalW - 2}\n y=\"220\"\n width=\"3\"\n height=\"36\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n {/* Volume Up -- left side */}\n <rect\n data-button=\"volume-up\"\n data-side=\"left\"\n x={-1}\n y=\"250\"\n width=\"3\"\n height=\"28\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n {/* Volume Down -- left side */}\n <rect\n data-button=\"volume-down\"\n data-side=\"left\"\n x={-1}\n y=\"286\"\n width=\"3\"\n height=\"28\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n\n {/* === BOTTOM HARDWARE === */}\n {/* USB-C port */}\n <rect\n x={(totalW - 24) / 2}\n y={totalH - 5}\n width=\"24\"\n height=\"4\"\n rx=\"2\"\n fill={colorScheme === \"dark\" ? \"#111\" : \"#bbb\"}\n />\n </svg>\n );\n}\n\n/** Frame dimensions needed by DeviceFrame to position content correctly */\nexport const PIXEL_9_PRO_XL_FRAME = {\n bezelTop: 18,\n bezelBottom: 18,\n bezelLeft: 12,\n bezelRight: 12,\n totalWidth: 472,\n totalHeight: 1004,\n screenWidth: 448,\n screenHeight: 968,\n screenRadius: 48,\n} as const;\n","import type { DeviceMeta } from \"../../types\";\nimport type { DeviceLayoutData } from \"../../contract-types\";\n\n/**\n * Google Pixel 9 Pro — VERIFIED dimensions\n *\n * Screen: 393x851dp (CSS viewport)\n * Physical: 1080x2340px at 3x DPR\n * Display: 6.3\" LTPO OLED, 120Hz, ~423 PPI\n * Hardware: Center punch-hole camera, flat display\n */\nexport const PIXEL_9_PRO_META: DeviceMeta = {\n id: \"pixel-9-pro\",\n name: \"Pixel 9 Pro\",\n platform: \"android\",\n year: 2024,\n screen: {\n width: 393,\n height: 851,\n physicalWidth: 1080,\n physicalHeight: 2340,\n dpr: 3,\n aspectRatio: \"19.5:9\",\n cornerRadius: 48,\n ppi: 423,\n },\n};\n\nexport const PIXEL_9_PRO_LAYOUT: DeviceLayoutData = {\n meta: PIXEL_9_PRO_META,\n safeArea: {\n portrait: { top: 32, bottom: 24, left: 0, right: 0 },\n landscape: { top: 0, bottom: 24, left: 32, right: 32 },\n },\n hardwareOverlays: {\n type: \"punch-hole\",\n portrait: {\n x: 192, // centered: (393 - 10) / 2 ~ 192\n y: 12,\n width: 10,\n height: 10,\n shape: \"circle\",\n cornerRadius: 5,\n },\n },\n statusBar: {\n height: 32,\n style: \"fullwidth\",\n hasTime: true,\n hasBattery: true,\n hasSignal: true,\n },\n homeIndicator: {\n type: \"gestureline\",\n height: 5,\n width: 90,\n visible: true,\n },\n hardwareButtons: {\n volumeUp: { side: \"left\", yPosition: 185 },\n volumeDown: { side: \"left\", yPosition: 220 },\n power: { side: \"right\", yPosition: 205 },\n },\n};\n","interface DeviceSVGProps {\n colorScheme?: \"light\" | \"dark\";\n style?: React.CSSProperties;\n}\n\n/**\n * Pixel 9 Pro SVG Frame\n *\n * Dimensions: 393x851 logical points (screen area)\n * Full frame includes bezels: ~417x887pt total\n *\n * Structure:\n * - Outer matte aluminum frame with distinctively rounded corners (Pixel style)\n * - Screen cutout (transparent -- content shows through)\n * - Center punch-hole camera (small circle at top center)\n * - Power button on RIGHT side, Volume buttons on LEFT side (Pixel standard)\n * - Bottom elements (USB-C port)\n * - Gesture navigation bar (thin horizontal line near bottom)\n * - data-zone annotations for DLC auto-derivation\n *\n * The SVG sits ON TOP of content with pointer-events: none.\n * Bezels are opaque -- they mask any content that spills over.\n * Screen area is transparent -- content shows through.\n */\nexport function Pixel9ProSVG({ colorScheme = \"dark\", style }: DeviceSVGProps) {\n const frameColor = colorScheme === \"dark\" ? \"#1c1c1e\" : \"#e5e5e7\";\n const frameBorder = colorScheme === \"dark\" ? \"#3a3a3c\" : \"#c7c7cc\";\n const buttonColor = colorScheme === \"dark\" ? \"#2c2c2e\" : \"#d1d1d6\";\n const punchHoleColor = \"#000000\";\n\n // Frame dimensions\n const bezelSide = 12;\n const bezelTop = 18;\n const bezelBottom = 18;\n const screenW = 393;\n const screenH = 851;\n const totalW = screenW + bezelSide * 2; // 417\n const totalH = screenH + bezelTop + bezelBottom; // 887\n const cornerRadius = 48;\n const outerRadius = cornerRadius + 8; // 56\n const screenRadius = cornerRadius; // 48\n\n return (\n <svg\n viewBox={`0 0 ${totalW} ${totalH}`}\n width={totalW}\n height={totalH}\n xmlns=\"http://www.w3.org/2000/svg\"\n style={style}\n >\n <defs>\n {/* Matte aluminum frame gradient */}\n <linearGradient id=\"frame-gradient-pixel-9-pro\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\n <stop offset=\"0%\" stopColor={frameColor} />\n <stop offset=\"50%\" stopColor={colorScheme === \"dark\" ? \"#262628\" : \"#ededef\"} />\n <stop offset=\"100%\" stopColor={frameColor} />\n </linearGradient>\n\n {/* Mask to punch a real hole for the screen area.\n White = visible, black = transparent (shows HTML content below) */}\n <mask id=\"frame-screen-mask-pixel-9-pro\">\n <rect x=\"0\" y=\"0\" width={totalW} height={totalH} fill=\"white\" />\n <rect\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height={screenH}\n rx={screenRadius}\n ry={screenRadius}\n fill=\"black\"\n />\n </mask>\n </defs>\n\n {/* === OUTER FRAME (matte aluminum body) with screen cutout === */}\n <rect\n x=\"0\"\n y=\"0\"\n width={totalW}\n height={totalH}\n rx={outerRadius}\n ry={outerRadius}\n fill=\"url(#frame-gradient-pixel-9-pro)\"\n stroke={frameBorder}\n strokeWidth=\"1.5\"\n mask=\"url(#frame-screen-mask-pixel-9-pro)\"\n />\n\n {/* === SCREEN AREA marker -- fully transparent for data-zone derivation === */}\n <rect\n data-zone=\"screen-area\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height={screenH}\n rx={screenRadius}\n ry={screenRadius}\n fill=\"none\"\n />\n\n {/* === CENTER PUNCH-HOLE CAMERA === */}\n <circle\n data-zone=\"hardware-overlay\"\n data-zone-type=\"punch-hole-camera\"\n cx={bezelSide + screenW / 2}\n cy={bezelTop + 17}\n r=\"5\"\n fill={punchHoleColor}\n />\n\n {/* === SAFE AREA ZONES (invisible, for DLC derivation) === */}\n <rect\n data-zone=\"safe-area-top-inset\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height=\"32\"\n fill=\"transparent\"\n />\n <rect\n data-zone=\"safe-area-bottom-inset\"\n x={bezelSide}\n y={bezelTop + screenH - 24}\n width={screenW}\n height=\"24\"\n fill=\"transparent\"\n />\n\n {/* === STATUS BAR ZONE === */}\n <rect\n data-zone=\"status-bar\"\n data-zone-style=\"punch-hole\"\n x={bezelSide}\n y={bezelTop}\n width={screenW}\n height=\"32\"\n fill=\"transparent\"\n />\n\n {/* === GESTURE NAVIGATION BAR (home indicator) === */}\n <rect\n data-zone=\"home-indicator\"\n data-zone-type=\"gesture-bar\"\n x={bezelSide + (screenW - 90) / 2}\n y={bezelTop + screenH - 10}\n width=\"90\"\n height=\"3\"\n rx=\"1.5\"\n ry=\"1.5\"\n fill=\"rgba(255,255,255,0.25)\"\n />\n\n {/* === HARDWARE BUTTONS (Pixel layout: power RIGHT, volume LEFT) === */}\n {/* Power button -- right side */}\n <rect\n data-button=\"power\"\n data-side=\"right\"\n x={totalW - 2}\n y=\"210\"\n width=\"3\"\n height=\"36\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n {/* Volume Up -- left side */}\n <rect\n data-button=\"volume-up\"\n data-side=\"left\"\n x={-1}\n y=\"240\"\n width=\"3\"\n height=\"28\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n {/* Volume Down -- left side */}\n <rect\n data-button=\"volume-down\"\n data-side=\"left\"\n x={-1}\n y=\"276\"\n width=\"3\"\n height=\"28\"\n rx=\"1.5\"\n fill={buttonColor}\n />\n\n {/* === BOTTOM HARDWARE === */}\n {/* USB-C port */}\n <rect\n x={(totalW - 24) / 2}\n y={totalH - 5}\n width=\"24\"\n height=\"4\"\n rx=\"2\"\n fill={colorScheme === \"dark\" ? \"#111\" : \"#bbb\"}\n />\n </svg>\n );\n}\n\n/** Frame dimensions needed by DeviceFrame to position content correctly */\nexport const PIXEL_9_PRO_FRAME = {\n bezelTop: 18,\n bezelBottom: 18,\n bezelLeft: 12,\n bezelRight: 12,\n totalWidth: 417,\n totalHeight: 887,\n screenWidth: 393,\n screenHeight: 851,\n screenRadius: 48,\n} as const;\n"]}