@mockifydev/react 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.
- package/assets/devices/iPhone 13 - Midnight.png +0 -0
- package/assets/devices/iPhone 13 - Starlight.png +0 -0
- package/assets/devices/iPhone 13 Mini - Midnight.png +0 -0
- package/assets/devices/iPhone 13 Mini - Starlight.png +0 -0
- package/assets/devices/iPhone 13 Mini.png +0 -0
- package/assets/devices/iPhone 13 Pro - Graphite.png +0 -0
- package/assets/devices/iPhone 13 Pro - Silver.png +0 -0
- package/assets/devices/iPhone 13 Pro Max - Graphite.png +0 -0
- package/assets/devices/iPhone 13 Pro Max - Silver.png +0 -0
- package/assets/devices/iPhone 13 Pro Max.png +0 -0
- package/assets/devices/iPhone 13 Pro.png +0 -0
- package/assets/devices/iPhone 13.png +0 -0
- package/assets/devices/iPhone 14 - Blue.png +0 -0
- package/assets/devices/iPhone 14 - Midnight.png +0 -0
- package/assets/devices/iPhone 14 - Purple.png +0 -0
- package/assets/devices/iPhone 14 - Red.png +0 -0
- package/assets/devices/iPhone 14 - Starlight.png +0 -0
- package/assets/devices/iPhone 14 Plus - Blue.png +0 -0
- package/assets/devices/iPhone 14 Plus - Midnight.png +0 -0
- package/assets/devices/iPhone 14 Plus - Purple.png +0 -0
- package/assets/devices/iPhone 14 Plus - Red.png +0 -0
- package/assets/devices/iPhone 14 Plus - Starlight.png +0 -0
- package/assets/devices/iPhone 14 Plus.png +0 -0
- package/assets/devices/iPhone 14 Pro - Deep Purple.png +0 -0
- package/assets/devices/iPhone 14 Pro - Gold.png +0 -0
- package/assets/devices/iPhone 14 Pro - Silver.png +0 -0
- package/assets/devices/iPhone 14 Pro - Space Black.png +0 -0
- package/assets/devices/iPhone 14 Pro Max - Deep Purple.png +0 -0
- package/assets/devices/iPhone 14 Pro Max - Gold.png +0 -0
- package/assets/devices/iPhone 14 Pro Max - Silver.png +0 -0
- package/assets/devices/iPhone 14 Pro Max - Space Black.png +0 -0
- package/assets/devices/iPhone 14 Pro Max.png +0 -0
- package/assets/devices/iPhone 14 Pro.png +0 -0
- package/assets/devices/iPhone 14.png +0 -0
- package/assets/devices/iPhone 15 - Black.png +0 -0
- package/assets/devices/iPhone 15 - Blue.png +0 -0
- package/assets/devices/iPhone 15 - Green.png +0 -0
- package/assets/devices/iPhone 15 - Pink.png +0 -0
- package/assets/devices/iPhone 15 - Yellow.png +0 -0
- package/assets/devices/iPhone 15 Plus - Black.png +0 -0
- package/assets/devices/iPhone 15 Plus - Blue.png +0 -0
- package/assets/devices/iPhone 15 Plus - Green.png +0 -0
- package/assets/devices/iPhone 15 Plus - Pink.png +0 -0
- package/assets/devices/iPhone 15 Plus - Yellow.png +0 -0
- package/assets/devices/iPhone 15 Plus.png +0 -0
- package/assets/devices/iPhone 15 Pro - Black Titanium.png +0 -0
- package/assets/devices/iPhone 15 Pro - Blue Titanium.png +0 -0
- package/assets/devices/iPhone 15 Pro - Natural Titanium.png +0 -0
- package/assets/devices/iPhone 15 Pro - White Titanium.png +0 -0
- package/assets/devices/iPhone 15 Pro Max - Black Titanium.png +0 -0
- package/assets/devices/iPhone 15 Pro Max - Blue Titanium.png +0 -0
- package/assets/devices/iPhone 15 Pro Max - Natural Titanium.png +0 -0
- package/assets/devices/iPhone 15 Pro Max - White Titanium.png +0 -0
- package/assets/devices/iPhone 15 Pro Max.png +0 -0
- package/assets/devices/iPhone 15 Pro.png +0 -0
- package/assets/devices/iPhone 15.png +0 -0
- package/assets/devices/iPhone 16 - Black.png +0 -0
- package/assets/devices/iPhone 16 - Pink.png +0 -0
- package/assets/devices/iPhone 16 - Teal.png +0 -0
- package/assets/devices/iPhone 16 - Ultramarine.png +0 -0
- package/assets/devices/iPhone 16 - White.png +0 -0
- package/assets/devices/iPhone 16 Plus - Black.png +0 -0
- package/assets/devices/iPhone 16 Plus - Pink.png +0 -0
- package/assets/devices/iPhone 16 Plus - Teal.png +0 -0
- package/assets/devices/iPhone 16 Plus - Ultramarine.png +0 -0
- package/assets/devices/iPhone 16 Plus - White.png +0 -0
- package/assets/devices/iPhone 16 Pro - Black Titanium.png +0 -0
- package/assets/devices/iPhone 16 Pro - Desert Titanium.png +0 -0
- package/assets/devices/iPhone 16 Pro - Natural Titanium.png +0 -0
- package/assets/devices/iPhone 16 Pro - White Titanium.png +0 -0
- package/assets/devices/iPhone 16 Pro Max - Black Titanium.png +0 -0
- package/assets/devices/iPhone 16 Pro Max - Desert Titanium.png +0 -0
- package/assets/devices/iPhone 16 Pro Max - Natural Titanium.png +0 -0
- package/assets/devices/iPhone 16 Pro Max - White Titanium.png +0 -0
- package/assets/devices/iPhone 17 - Black.png +0 -0
- package/assets/devices/iPhone 17 - Lavender.png +0 -0
- package/assets/devices/iPhone 17 - Mist Blue.png +0 -0
- package/assets/devices/iPhone 17 - Sage.png +0 -0
- package/assets/devices/iPhone 17 - White.png +0 -0
- package/assets/devices/iPhone 17 Pro - Cosmic Orange.png +0 -0
- package/assets/devices/iPhone 17 Pro - Deep Blue.png +0 -0
- package/assets/devices/iPhone 17 Pro - Silver.png +0 -0
- package/assets/devices/iPhone 17 Pro Max - Cosmic Orange.png +0 -0
- package/assets/devices/iPhone 17 Pro Max - Deep Blue.png +0 -0
- package/assets/devices/iPhone 17 Pro Max - Silver.png +0 -0
- package/assets/devices/iPhone Air - Cloud White.png +0 -0
- package/assets/devices/iPhone Air - Light Gold.png +0 -0
- package/assets/devices/iPhone Air - Sky Blue.png +0 -0
- package/assets/devices/iPhone Air - Space Black.png +0 -0
- package/assets/status-bar/Notch Status Bar Black.png +0 -0
- 16 Max Status Bar Black.png +0 -0
- 16 Plus Status Bar Black.png +0 -0
- package/bin/cli.mjs +146 -0
- package/dist/index.cjs +562 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +112 -0
- package/dist/index.d.ts +112 -0
- package/dist/index.js +539 -0
- package/dist/index.js.map +1 -0
- package/package.json +63 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,539 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
// src/device-mockup.tsx
|
|
4
|
+
function DeviceMockup({
|
|
5
|
+
device,
|
|
6
|
+
children,
|
|
7
|
+
width = 320,
|
|
8
|
+
screenColor = "#f2f2f2",
|
|
9
|
+
showStatusBar = true,
|
|
10
|
+
className = "",
|
|
11
|
+
style,
|
|
12
|
+
color,
|
|
13
|
+
basePath = "https://unpkg.com/@mockify/react@latest/assets"
|
|
14
|
+
}) {
|
|
15
|
+
var _a;
|
|
16
|
+
const resolvedColor = color != null ? color : device.defaultColor;
|
|
17
|
+
const colorVariant = resolvedColor ? device.colors.find((c) => c.name === resolvedColor) : void 0;
|
|
18
|
+
const frameSrc = (_a = colorVariant == null ? void 0 : colorVariant.frameSrc) != null ? _a : device.frameSrc;
|
|
19
|
+
const frameW = width;
|
|
20
|
+
const frameH = width * (device.framePngHeight / device.framePngWidth);
|
|
21
|
+
const screenLeft = frameW * device.screenLeftFraction;
|
|
22
|
+
const screenTop = frameH * device.screenTopFraction;
|
|
23
|
+
const screenW = frameW * device.screenWidthFraction;
|
|
24
|
+
const screenH = frameH * device.screenHeightFraction;
|
|
25
|
+
const screenRadius = frameW * device.screenRadiusFraction;
|
|
26
|
+
const statusBarH = screenH * device.statusBarHeightFraction;
|
|
27
|
+
const resolvedFrameSrc = `${basePath}${frameSrc}`;
|
|
28
|
+
const resolvedStatusBarSrc = `${basePath}${device.statusBarSrc}`;
|
|
29
|
+
return /* @__PURE__ */ jsxs(
|
|
30
|
+
"div",
|
|
31
|
+
{
|
|
32
|
+
className,
|
|
33
|
+
style: {
|
|
34
|
+
position: "relative",
|
|
35
|
+
width: frameW,
|
|
36
|
+
height: frameH,
|
|
37
|
+
...style
|
|
38
|
+
},
|
|
39
|
+
children: [
|
|
40
|
+
/* @__PURE__ */ jsx(
|
|
41
|
+
"div",
|
|
42
|
+
{
|
|
43
|
+
style: {
|
|
44
|
+
position: "absolute",
|
|
45
|
+
left: screenLeft,
|
|
46
|
+
top: screenTop,
|
|
47
|
+
width: screenW,
|
|
48
|
+
height: screenH,
|
|
49
|
+
borderRadius: screenRadius,
|
|
50
|
+
overflow: "hidden",
|
|
51
|
+
boxShadow: "inset 0 0 0 0.5px rgba(0,0,0,0.1)",
|
|
52
|
+
backgroundColor: screenColor,
|
|
53
|
+
backfaceVisibility: "hidden",
|
|
54
|
+
pointerEvents: "auto",
|
|
55
|
+
zIndex: 10
|
|
56
|
+
},
|
|
57
|
+
children: /* @__PURE__ */ jsxs(
|
|
58
|
+
"div",
|
|
59
|
+
{
|
|
60
|
+
style: {
|
|
61
|
+
position: "absolute",
|
|
62
|
+
inset: 0,
|
|
63
|
+
width: "100%",
|
|
64
|
+
height: "100%"
|
|
65
|
+
},
|
|
66
|
+
children: [
|
|
67
|
+
children,
|
|
68
|
+
showStatusBar && /* @__PURE__ */ jsx(
|
|
69
|
+
"img",
|
|
70
|
+
{
|
|
71
|
+
alt: "",
|
|
72
|
+
src: resolvedStatusBarSrc,
|
|
73
|
+
style: {
|
|
74
|
+
position: "absolute",
|
|
75
|
+
pointerEvents: "none",
|
|
76
|
+
width: "calc(100% + 4px)",
|
|
77
|
+
height: statusBarH,
|
|
78
|
+
top: 0,
|
|
79
|
+
left: -2,
|
|
80
|
+
objectFit: "cover",
|
|
81
|
+
objectPosition: "center 48%",
|
|
82
|
+
borderTopLeftRadius: screenRadius,
|
|
83
|
+
borderTopRightRadius: screenRadius,
|
|
84
|
+
transform: "translateZ(0)"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
)
|
|
91
|
+
}
|
|
92
|
+
),
|
|
93
|
+
/* @__PURE__ */ jsx(
|
|
94
|
+
"img",
|
|
95
|
+
{
|
|
96
|
+
alt: device.name,
|
|
97
|
+
src: resolvedFrameSrc,
|
|
98
|
+
style: {
|
|
99
|
+
position: "absolute",
|
|
100
|
+
pointerEvents: "none",
|
|
101
|
+
userSelect: "none",
|
|
102
|
+
left: 0,
|
|
103
|
+
top: 0,
|
|
104
|
+
width: frameW,
|
|
105
|
+
height: frameH,
|
|
106
|
+
zIndex: 20,
|
|
107
|
+
transform: "translateZ(0)"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
)
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// src/devices/index.ts
|
|
117
|
+
var iPhone13 = {
|
|
118
|
+
name: "iPhone 13",
|
|
119
|
+
frameSrc: "/devices/iPhone 13.png",
|
|
120
|
+
framePngWidth: 1400,
|
|
121
|
+
framePngHeight: 2700,
|
|
122
|
+
screenLeftFraction: 0.083571,
|
|
123
|
+
screenTopFraction: 0.035556,
|
|
124
|
+
screenWidthFraction: 0.832857,
|
|
125
|
+
screenHeightFraction: 0.932593,
|
|
126
|
+
screenRadiusFraction: 0.101421,
|
|
127
|
+
statusBarSrc: "/status-bar/Notch Status Bar Black.png",
|
|
128
|
+
statusBarHeightFraction: 0.055,
|
|
129
|
+
colors: [
|
|
130
|
+
{ name: "Midnight", frameSrc: "/devices/iPhone 13 - Midnight.png", swatch: "#3E3C39" },
|
|
131
|
+
{ name: "Starlight", frameSrc: "/devices/iPhone 13 - Starlight.png", swatch: "#F0E4D3" }
|
|
132
|
+
],
|
|
133
|
+
defaultColor: "Midnight"
|
|
134
|
+
};
|
|
135
|
+
var iPhone13Mini = {
|
|
136
|
+
name: "iPhone 13 Mini",
|
|
137
|
+
frameSrc: "/devices/iPhone 13 Mini.png",
|
|
138
|
+
framePngWidth: 1240,
|
|
139
|
+
framePngHeight: 2500,
|
|
140
|
+
screenLeftFraction: 0.064516,
|
|
141
|
+
screenTopFraction: 0.0336,
|
|
142
|
+
screenWidthFraction: 0.870968,
|
|
143
|
+
screenHeightFraction: 0.9344,
|
|
144
|
+
screenRadiusFraction: 0.106452,
|
|
145
|
+
statusBarSrc: "/status-bar/Notch Status Bar Black.png",
|
|
146
|
+
statusBarHeightFraction: 0.055,
|
|
147
|
+
colors: [
|
|
148
|
+
{ name: "Midnight", frameSrc: "/devices/iPhone 13 Mini - Midnight.png", swatch: "#3E3C39" },
|
|
149
|
+
{ name: "Starlight", frameSrc: "/devices/iPhone 13 Mini - Starlight.png", swatch: "#F0E4D3" }
|
|
150
|
+
],
|
|
151
|
+
defaultColor: "Midnight"
|
|
152
|
+
};
|
|
153
|
+
var iPhone13Pro = {
|
|
154
|
+
name: "iPhone 13 Pro",
|
|
155
|
+
frameSrc: "/devices/iPhone 13 Pro.png",
|
|
156
|
+
framePngWidth: 1400,
|
|
157
|
+
framePngHeight: 2700,
|
|
158
|
+
screenLeftFraction: 0.083571,
|
|
159
|
+
screenTopFraction: 0.035556,
|
|
160
|
+
screenWidthFraction: 0.832857,
|
|
161
|
+
screenHeightFraction: 0.932593,
|
|
162
|
+
screenRadiusFraction: 0.101421,
|
|
163
|
+
statusBarSrc: "/status-bar/Notch Status Bar Black.png",
|
|
164
|
+
statusBarHeightFraction: 0.055,
|
|
165
|
+
colors: [
|
|
166
|
+
{ name: "Graphite", frameSrc: "/devices/iPhone 13 Pro - Graphite.png", swatch: "#54524F" },
|
|
167
|
+
{ name: "Silver", frameSrc: "/devices/iPhone 13 Pro - Silver.png", swatch: "#E3E4DF" }
|
|
168
|
+
],
|
|
169
|
+
defaultColor: "Graphite"
|
|
170
|
+
};
|
|
171
|
+
var iPhone13ProMax = {
|
|
172
|
+
name: "iPhone 13 Pro Max",
|
|
173
|
+
frameSrc: "/devices/iPhone 13 Pro Max.png",
|
|
174
|
+
framePngWidth: 1500,
|
|
175
|
+
framePngHeight: 3e3,
|
|
176
|
+
screenLeftFraction: 0.073333,
|
|
177
|
+
screenTopFraction: 0.040333,
|
|
178
|
+
screenWidthFraction: 0.853333,
|
|
179
|
+
screenHeightFraction: 0.922,
|
|
180
|
+
screenRadiusFraction: 0.10666,
|
|
181
|
+
statusBarSrc: "/status-bar/Notch Status Bar Black.png",
|
|
182
|
+
statusBarHeightFraction: 0.055,
|
|
183
|
+
colors: [
|
|
184
|
+
{ name: "Graphite", frameSrc: "/devices/iPhone 13 Pro Max - Graphite.png", swatch: "#54524F" },
|
|
185
|
+
{ name: "Silver", frameSrc: "/devices/iPhone 13 Pro Max - Silver.png", swatch: "#E3E4DF" }
|
|
186
|
+
],
|
|
187
|
+
defaultColor: "Graphite"
|
|
188
|
+
};
|
|
189
|
+
var iPhone14 = {
|
|
190
|
+
name: "iPhone 14",
|
|
191
|
+
frameSrc: "/devices/iPhone 14.png",
|
|
192
|
+
framePngWidth: 1370,
|
|
193
|
+
framePngHeight: 2732,
|
|
194
|
+
screenLeftFraction: 0.074453,
|
|
195
|
+
screenTopFraction: 0.039898,
|
|
196
|
+
screenWidthFraction: 0.851095,
|
|
197
|
+
screenHeightFraction: 0.922767,
|
|
198
|
+
screenRadiusFraction: 0.103642,
|
|
199
|
+
statusBarSrc: "/status-bar/Notch Status Bar Black.png",
|
|
200
|
+
statusBarHeightFraction: 0.055,
|
|
201
|
+
colors: [
|
|
202
|
+
{ name: "Midnight", frameSrc: "/devices/iPhone 14 - Midnight.png", swatch: "#3E3C39" },
|
|
203
|
+
{ name: "Starlight", frameSrc: "/devices/iPhone 14 - Starlight.png", swatch: "#F0E4D3" },
|
|
204
|
+
{ name: "Blue", frameSrc: "/devices/iPhone 14 - Blue.png", swatch: "#A0B4C8" },
|
|
205
|
+
{ name: "Purple", frameSrc: "/devices/iPhone 14 - Purple.png", swatch: "#E5DDEA" },
|
|
206
|
+
{ name: "Red", frameSrc: "/devices/iPhone 14 - Red.png", swatch: "#FA2837" }
|
|
207
|
+
],
|
|
208
|
+
defaultColor: "Midnight"
|
|
209
|
+
};
|
|
210
|
+
var iPhone14Plus = {
|
|
211
|
+
name: "iPhone 14 Plus",
|
|
212
|
+
frameSrc: "/devices/iPhone 14 Plus.png",
|
|
213
|
+
framePngWidth: 1464,
|
|
214
|
+
framePngHeight: 2978,
|
|
215
|
+
screenLeftFraction: 0.061475,
|
|
216
|
+
screenTopFraction: 0.035594,
|
|
217
|
+
screenWidthFraction: 0.877049,
|
|
218
|
+
screenHeightFraction: 0.930826,
|
|
219
|
+
screenRadiusFraction: 0.109283,
|
|
220
|
+
statusBarSrc: "/status-bar/Notch Status Bar Black.png",
|
|
221
|
+
statusBarHeightFraction: 0.055,
|
|
222
|
+
colors: [
|
|
223
|
+
{ name: "Midnight", frameSrc: "/devices/iPhone 14 Plus - Midnight.png", swatch: "#3E3C39" },
|
|
224
|
+
{ name: "Starlight", frameSrc: "/devices/iPhone 14 Plus - Starlight.png", swatch: "#F0E4D3" },
|
|
225
|
+
{ name: "Blue", frameSrc: "/devices/iPhone 14 Plus - Blue.png", swatch: "#A0B4C8" },
|
|
226
|
+
{ name: "Purple", frameSrc: "/devices/iPhone 14 Plus - Purple.png", swatch: "#E5DDEA" },
|
|
227
|
+
{ name: "Red", frameSrc: "/devices/iPhone 14 Plus - Red.png", swatch: "#FA2837" }
|
|
228
|
+
],
|
|
229
|
+
defaultColor: "Midnight"
|
|
230
|
+
};
|
|
231
|
+
var iPhone14Pro = {
|
|
232
|
+
name: "iPhone 14 Pro",
|
|
233
|
+
frameSrc: "/devices/iPhone 14 Pro.png",
|
|
234
|
+
framePngWidth: 1339,
|
|
235
|
+
framePngHeight: 2716,
|
|
236
|
+
screenLeftFraction: 0.059746,
|
|
237
|
+
screenTopFraction: 0.029456,
|
|
238
|
+
screenWidthFraction: 0.878268,
|
|
239
|
+
screenHeightFraction: 0.941091,
|
|
240
|
+
screenRadiusFraction: 0.122913,
|
|
241
|
+
statusBarSrc: "/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png",
|
|
242
|
+
statusBarHeightFraction: 0.065,
|
|
243
|
+
colors: [
|
|
244
|
+
{ name: "Space Black", frameSrc: "/devices/iPhone 14 Pro - Space Black.png", swatch: "#3B3B3D" },
|
|
245
|
+
{ name: "Silver", frameSrc: "/devices/iPhone 14 Pro - Silver.png", swatch: "#E3E4DF" },
|
|
246
|
+
{ name: "Gold", frameSrc: "/devices/iPhone 14 Pro - Gold.png", swatch: "#F4E8CE" },
|
|
247
|
+
{ name: "Deep Purple", frameSrc: "/devices/iPhone 14 Pro - Deep Purple.png", swatch: "#635166" }
|
|
248
|
+
],
|
|
249
|
+
defaultColor: "Space Black"
|
|
250
|
+
};
|
|
251
|
+
var iPhone14ProMax = {
|
|
252
|
+
name: "iPhone 14 Pro Max",
|
|
253
|
+
frameSrc: "/devices/iPhone 14 Pro Max.png",
|
|
254
|
+
framePngWidth: 1450,
|
|
255
|
+
framePngHeight: 2936,
|
|
256
|
+
screenLeftFraction: 0.055172,
|
|
257
|
+
screenTopFraction: 0.023842,
|
|
258
|
+
screenWidthFraction: 0.888276,
|
|
259
|
+
screenHeightFraction: 0.952316,
|
|
260
|
+
screenRadiusFraction: 0.113617,
|
|
261
|
+
statusBarSrc: "/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png",
|
|
262
|
+
statusBarHeightFraction: 0.065,
|
|
263
|
+
colors: [
|
|
264
|
+
{ name: "Space Black", frameSrc: "/devices/iPhone 14 Pro Max - Space Black.png", swatch: "#3B3B3D" },
|
|
265
|
+
{ name: "Silver", frameSrc: "/devices/iPhone 14 Pro Max - Silver.png", swatch: "#E3E4DF" },
|
|
266
|
+
{ name: "Gold", frameSrc: "/devices/iPhone 14 Pro Max - Gold.png", swatch: "#F4E8CE" },
|
|
267
|
+
{ name: "Deep Purple", frameSrc: "/devices/iPhone 14 Pro Max - Deep Purple.png", swatch: "#635166" }
|
|
268
|
+
],
|
|
269
|
+
defaultColor: "Space Black"
|
|
270
|
+
};
|
|
271
|
+
var iPhone15 = {
|
|
272
|
+
name: "iPhone 15",
|
|
273
|
+
frameSrc: "/devices/iPhone 15.png",
|
|
274
|
+
framePngWidth: 1419,
|
|
275
|
+
framePngHeight: 2796,
|
|
276
|
+
screenLeftFraction: 0.084566,
|
|
277
|
+
screenTopFraction: 0.042919,
|
|
278
|
+
screenWidthFraction: 0.828752,
|
|
279
|
+
screenHeightFraction: 0.914163,
|
|
280
|
+
screenRadiusFraction: 0.115983,
|
|
281
|
+
statusBarSrc: "/status-bar/iPhone 16 and 16 Plus Status Bar Black.png",
|
|
282
|
+
statusBarHeightFraction: 0.065,
|
|
283
|
+
colors: [
|
|
284
|
+
{ name: "Black", frameSrc: "/devices/iPhone 15 - Black.png", swatch: "#3E3C39" },
|
|
285
|
+
{ name: "Blue", frameSrc: "/devices/iPhone 15 - Blue.png", swatch: "#D6E3EE" },
|
|
286
|
+
{ name: "Green", frameSrc: "/devices/iPhone 15 - Green.png", swatch: "#D0E4CE" },
|
|
287
|
+
{ name: "Pink", frameSrc: "/devices/iPhone 15 - Pink.png", swatch: "#F4D4D0" },
|
|
288
|
+
{ name: "Yellow", frameSrc: "/devices/iPhone 15 - Yellow.png", swatch: "#F4E8B8" }
|
|
289
|
+
],
|
|
290
|
+
defaultColor: "Black"
|
|
291
|
+
};
|
|
292
|
+
var iPhone15Plus = {
|
|
293
|
+
name: "iPhone 15 Plus",
|
|
294
|
+
frameSrc: "/devices/iPhone 15 Plus.png",
|
|
295
|
+
framePngWidth: 1530,
|
|
296
|
+
framePngHeight: 3036,
|
|
297
|
+
screenLeftFraction: 0.078431,
|
|
298
|
+
screenTopFraction: 0.039526,
|
|
299
|
+
screenWidthFraction: 0.84183,
|
|
300
|
+
screenHeightFraction: 0.920948,
|
|
301
|
+
screenRadiusFraction: 0.107676,
|
|
302
|
+
statusBarSrc: "/status-bar/iPhone 16 and 16 Plus Status Bar Black.png",
|
|
303
|
+
statusBarHeightFraction: 0.065,
|
|
304
|
+
colors: [
|
|
305
|
+
{ name: "Black", frameSrc: "/devices/iPhone 15 Plus - Black.png", swatch: "#3E3C39" },
|
|
306
|
+
{ name: "Blue", frameSrc: "/devices/iPhone 15 Plus - Blue.png", swatch: "#D6E3EE" },
|
|
307
|
+
{ name: "Green", frameSrc: "/devices/iPhone 15 Plus - Green.png", swatch: "#D0E4CE" },
|
|
308
|
+
{ name: "Pink", frameSrc: "/devices/iPhone 15 Plus - Pink.png", swatch: "#F4D4D0" },
|
|
309
|
+
{ name: "Yellow", frameSrc: "/devices/iPhone 15 Plus - Yellow.png", swatch: "#F4E8B8" }
|
|
310
|
+
],
|
|
311
|
+
defaultColor: "Black"
|
|
312
|
+
};
|
|
313
|
+
var iPhone15Pro = {
|
|
314
|
+
name: "iPhone 15 Pro",
|
|
315
|
+
frameSrc: "/devices/iPhone 15 Pro.png",
|
|
316
|
+
framePngWidth: 1419,
|
|
317
|
+
framePngHeight: 2796,
|
|
318
|
+
screenLeftFraction: 0.084566,
|
|
319
|
+
screenTopFraction: 0.042919,
|
|
320
|
+
screenWidthFraction: 0.829458,
|
|
321
|
+
screenHeightFraction: 0.914163,
|
|
322
|
+
screenRadiusFraction: 0.116082,
|
|
323
|
+
statusBarSrc: "/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png",
|
|
324
|
+
statusBarHeightFraction: 0.065,
|
|
325
|
+
colors: [
|
|
326
|
+
{ name: "Natural Titanium", frameSrc: "/devices/iPhone 15 Pro - Natural Titanium.png", swatch: "#C2B9AE" },
|
|
327
|
+
{ name: "Blue Titanium", frameSrc: "/devices/iPhone 15 Pro - Blue Titanium.png", swatch: "#3D4550" },
|
|
328
|
+
{ name: "White Titanium", frameSrc: "/devices/iPhone 15 Pro - White Titanium.png", swatch: "#E3E4DF" },
|
|
329
|
+
{ name: "Black Titanium", frameSrc: "/devices/iPhone 15 Pro - Black Titanium.png", swatch: "#3B3B3D" }
|
|
330
|
+
],
|
|
331
|
+
defaultColor: "Natural Titanium"
|
|
332
|
+
};
|
|
333
|
+
var iPhone15ProMax = {
|
|
334
|
+
name: "iPhone 15 Pro Max",
|
|
335
|
+
frameSrc: "/devices/iPhone 15 Pro Max.png",
|
|
336
|
+
framePngWidth: 1530,
|
|
337
|
+
framePngHeight: 3036,
|
|
338
|
+
screenLeftFraction: 0.078431,
|
|
339
|
+
screenTopFraction: 0.039526,
|
|
340
|
+
screenWidthFraction: 0.843137,
|
|
341
|
+
screenHeightFraction: 0.920948,
|
|
342
|
+
screenRadiusFraction: 0.107843,
|
|
343
|
+
statusBarSrc: "/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png",
|
|
344
|
+
statusBarHeightFraction: 0.065,
|
|
345
|
+
colors: [
|
|
346
|
+
{ name: "Natural Titanium", frameSrc: "/devices/iPhone 15 Pro Max - Natural Titanium.png", swatch: "#C2B9AE" },
|
|
347
|
+
{ name: "Blue Titanium", frameSrc: "/devices/iPhone 15 Pro Max - Blue Titanium.png", swatch: "#3D4550" },
|
|
348
|
+
{ name: "White Titanium", frameSrc: "/devices/iPhone 15 Pro Max - White Titanium.png", swatch: "#E3E4DF" },
|
|
349
|
+
{ name: "Black Titanium", frameSrc: "/devices/iPhone 15 Pro Max - Black Titanium.png", swatch: "#3B3B3D" }
|
|
350
|
+
],
|
|
351
|
+
defaultColor: "Natural Titanium"
|
|
352
|
+
};
|
|
353
|
+
var iPhone16 = {
|
|
354
|
+
name: "iPhone 16",
|
|
355
|
+
frameSrc: "/devices/iPhone 16 - Black.png",
|
|
356
|
+
framePngWidth: 1359,
|
|
357
|
+
framePngHeight: 2736,
|
|
358
|
+
screenLeftFraction: 0.067697,
|
|
359
|
+
screenTopFraction: 0.033626,
|
|
360
|
+
screenWidthFraction: 0.86387,
|
|
361
|
+
screenHeightFraction: 0.932383,
|
|
362
|
+
screenRadiusFraction: 0.126564,
|
|
363
|
+
statusBarSrc: "/status-bar/iPhone 16 and 16 Plus Status Bar Black.png",
|
|
364
|
+
statusBarHeightFraction: 0.068966,
|
|
365
|
+
colors: [
|
|
366
|
+
{ name: "Black", frameSrc: "/devices/iPhone 16 - Black.png", swatch: "#3B3B3D" },
|
|
367
|
+
{ name: "White", frameSrc: "/devices/iPhone 16 - White.png", swatch: "#F5F5F0" },
|
|
368
|
+
{ name: "Teal", frameSrc: "/devices/iPhone 16 - Teal.png", swatch: "#B0D4CE" },
|
|
369
|
+
{ name: "Pink", frameSrc: "/devices/iPhone 16 - Pink.png", swatch: "#F2C8D0" },
|
|
370
|
+
{ name: "Ultramarine", frameSrc: "/devices/iPhone 16 - Ultramarine.png", swatch: "#7C8ACF" }
|
|
371
|
+
],
|
|
372
|
+
defaultColor: "Black"
|
|
373
|
+
};
|
|
374
|
+
var iPhone16Plus = {
|
|
375
|
+
name: "iPhone 16 Plus",
|
|
376
|
+
frameSrc: "/devices/iPhone 16 Plus - Black.png",
|
|
377
|
+
framePngWidth: 1470,
|
|
378
|
+
framePngHeight: 2970,
|
|
379
|
+
screenLeftFraction: 0.062585,
|
|
380
|
+
screenTopFraction: 0.029966,
|
|
381
|
+
screenWidthFraction: 0.87415,
|
|
382
|
+
screenHeightFraction: 0.939731,
|
|
383
|
+
screenRadiusFraction: 0.120408,
|
|
384
|
+
statusBarSrc: "/status-bar/iPhone 16 and 16 Plus Status Bar Black.png",
|
|
385
|
+
statusBarHeightFraction: 0.064039,
|
|
386
|
+
colors: [
|
|
387
|
+
{ name: "Black", frameSrc: "/devices/iPhone 16 Plus - Black.png", swatch: "#3B3B3D" },
|
|
388
|
+
{ name: "White", frameSrc: "/devices/iPhone 16 Plus - White.png", swatch: "#F5F5F0" },
|
|
389
|
+
{ name: "Teal", frameSrc: "/devices/iPhone 16 Plus - Teal.png", swatch: "#B0D4CE" },
|
|
390
|
+
{ name: "Pink", frameSrc: "/devices/iPhone 16 Plus - Pink.png", swatch: "#F2C8D0" },
|
|
391
|
+
{ name: "Ultramarine", frameSrc: "/devices/iPhone 16 Plus - Ultramarine.png", swatch: "#7C8ACF" }
|
|
392
|
+
],
|
|
393
|
+
defaultColor: "Black"
|
|
394
|
+
};
|
|
395
|
+
var iPhone16Pro = {
|
|
396
|
+
name: "iPhone 16 Pro",
|
|
397
|
+
frameSrc: "/devices/iPhone 16 Pro - Natural Titanium.png",
|
|
398
|
+
framePngWidth: 1350,
|
|
399
|
+
framePngHeight: 2760,
|
|
400
|
+
screenLeftFraction: 0.054815,
|
|
401
|
+
screenTopFraction: 0.025725,
|
|
402
|
+
screenWidthFraction: 0.88963,
|
|
403
|
+
screenHeightFraction: 0.948188,
|
|
404
|
+
screenRadiusFraction: 0.147407,
|
|
405
|
+
statusBarSrc: "/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png",
|
|
406
|
+
statusBarHeightFraction: 0.073892,
|
|
407
|
+
colors: [
|
|
408
|
+
{ name: "Natural Titanium", frameSrc: "/devices/iPhone 16 Pro - Natural Titanium.png", swatch: "#C2B9AE" },
|
|
409
|
+
{ name: "Black Titanium", frameSrc: "/devices/iPhone 16 Pro - Black Titanium.png", swatch: "#3B3B3D" },
|
|
410
|
+
{ name: "White Titanium", frameSrc: "/devices/iPhone 16 Pro - White Titanium.png", swatch: "#E3E4DF" },
|
|
411
|
+
{ name: "Desert Titanium", frameSrc: "/devices/iPhone 16 Pro - Desert Titanium.png", swatch: "#C4A97D" }
|
|
412
|
+
],
|
|
413
|
+
defaultColor: "Natural Titanium"
|
|
414
|
+
};
|
|
415
|
+
var iPhone16ProMax = {
|
|
416
|
+
name: "iPhone 16 Pro Max",
|
|
417
|
+
frameSrc: "/devices/iPhone 16 Pro Max - Natural Titanium.png",
|
|
418
|
+
framePngWidth: 1470,
|
|
419
|
+
framePngHeight: 3e3,
|
|
420
|
+
screenLeftFraction: 0.052381,
|
|
421
|
+
screenTopFraction: 0.022667,
|
|
422
|
+
screenWidthFraction: 0.894558,
|
|
423
|
+
screenHeightFraction: 0.954333,
|
|
424
|
+
screenRadiusFraction: 0.133333,
|
|
425
|
+
statusBarSrc: "/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png",
|
|
426
|
+
statusBarHeightFraction: 0.065812,
|
|
427
|
+
colors: [
|
|
428
|
+
{ name: "Natural Titanium", frameSrc: "/devices/iPhone 16 Pro Max - Natural Titanium.png", swatch: "#C2B9AE" },
|
|
429
|
+
{ name: "Black Titanium", frameSrc: "/devices/iPhone 16 Pro Max - Black Titanium.png", swatch: "#3B3B3D" },
|
|
430
|
+
{ name: "White Titanium", frameSrc: "/devices/iPhone 16 Pro Max - White Titanium.png", swatch: "#E3E4DF" },
|
|
431
|
+
{ name: "Desert Titanium", frameSrc: "/devices/iPhone 16 Pro Max - Desert Titanium.png", swatch: "#C4A97D" }
|
|
432
|
+
],
|
|
433
|
+
defaultColor: "Natural Titanium"
|
|
434
|
+
};
|
|
435
|
+
var iPhone17 = {
|
|
436
|
+
name: "iPhone 17",
|
|
437
|
+
frameSrc: "/devices/iPhone 17 - Black.png",
|
|
438
|
+
framePngWidth: 1350,
|
|
439
|
+
framePngHeight: 2760,
|
|
440
|
+
screenLeftFraction: 0.054815,
|
|
441
|
+
screenTopFraction: 0.025725,
|
|
442
|
+
screenWidthFraction: 0.88963,
|
|
443
|
+
screenHeightFraction: 0.948188,
|
|
444
|
+
screenRadiusFraction: 0.147407,
|
|
445
|
+
statusBarSrc: "/status-bar/iPhone 16 and 16 Plus Status Bar Black.png",
|
|
446
|
+
statusBarHeightFraction: 0.068708,
|
|
447
|
+
colors: [
|
|
448
|
+
{ name: "Black", frameSrc: "/devices/iPhone 17 - Black.png", swatch: "#3B3B3D" },
|
|
449
|
+
{ name: "White", frameSrc: "/devices/iPhone 17 - White.png", swatch: "#F5F5F0" },
|
|
450
|
+
{ name: "Lavender", frameSrc: "/devices/iPhone 17 - Lavender.png", swatch: "#D0C4D8" },
|
|
451
|
+
{ name: "Mist Blue", frameSrc: "/devices/iPhone 17 - Mist Blue.png", swatch: "#B4C8D4" },
|
|
452
|
+
{ name: "Sage", frameSrc: "/devices/iPhone 17 - Sage.png", swatch: "#BEC8B0" }
|
|
453
|
+
],
|
|
454
|
+
defaultColor: "Black"
|
|
455
|
+
};
|
|
456
|
+
var iPhone17Pro = {
|
|
457
|
+
name: "iPhone 17 Pro",
|
|
458
|
+
frameSrc: "/devices/iPhone 17 Pro - Silver.png",
|
|
459
|
+
framePngWidth: 1350,
|
|
460
|
+
framePngHeight: 2760,
|
|
461
|
+
screenLeftFraction: 0.054815,
|
|
462
|
+
screenTopFraction: 0.025725,
|
|
463
|
+
screenWidthFraction: 0.88963,
|
|
464
|
+
screenHeightFraction: 0.948188,
|
|
465
|
+
screenRadiusFraction: 0.146667,
|
|
466
|
+
statusBarSrc: "/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png",
|
|
467
|
+
statusBarHeightFraction: 0.073693,
|
|
468
|
+
colors: [
|
|
469
|
+
{ name: "Silver", frameSrc: "/devices/iPhone 17 Pro - Silver.png", swatch: "#E3E4DF" },
|
|
470
|
+
{ name: "Cosmic Orange", frameSrc: "/devices/iPhone 17 Pro - Cosmic Orange.png", swatch: "#D4956A" },
|
|
471
|
+
{ name: "Deep Blue", frameSrc: "/devices/iPhone 17 Pro - Deep Blue.png", swatch: "#3D4F6A" }
|
|
472
|
+
],
|
|
473
|
+
defaultColor: "Silver"
|
|
474
|
+
};
|
|
475
|
+
var iPhone17ProMax = {
|
|
476
|
+
name: "iPhone 17 Pro Max",
|
|
477
|
+
frameSrc: "/devices/iPhone 17 Pro Max - Silver.png",
|
|
478
|
+
framePngWidth: 1470,
|
|
479
|
+
framePngHeight: 3e3,
|
|
480
|
+
screenLeftFraction: 0.052381,
|
|
481
|
+
screenTopFraction: 0.022667,
|
|
482
|
+
screenWidthFraction: 0.894558,
|
|
483
|
+
screenHeightFraction: 0.954333,
|
|
484
|
+
screenRadiusFraction: 0.136054,
|
|
485
|
+
statusBarSrc: "/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png",
|
|
486
|
+
statusBarHeightFraction: 0.066415,
|
|
487
|
+
colors: [
|
|
488
|
+
{ name: "Silver", frameSrc: "/devices/iPhone 17 Pro Max - Silver.png", swatch: "#E3E4DF" },
|
|
489
|
+
{ name: "Cosmic Orange", frameSrc: "/devices/iPhone 17 Pro Max - Cosmic Orange.png", swatch: "#D4956A" },
|
|
490
|
+
{ name: "Deep Blue", frameSrc: "/devices/iPhone 17 Pro Max - Deep Blue.png", swatch: "#3D4F6A" }
|
|
491
|
+
],
|
|
492
|
+
defaultColor: "Silver"
|
|
493
|
+
};
|
|
494
|
+
var iPhoneAir = {
|
|
495
|
+
name: "iPhone Air",
|
|
496
|
+
frameSrc: "/devices/iPhone Air - Sky Blue.png",
|
|
497
|
+
framePngWidth: 1380,
|
|
498
|
+
framePngHeight: 2880,
|
|
499
|
+
screenLeftFraction: 0.044928,
|
|
500
|
+
screenTopFraction: 0.025694,
|
|
501
|
+
screenWidthFraction: 0.90942,
|
|
502
|
+
screenHeightFraction: 0.948264,
|
|
503
|
+
screenRadiusFraction: 0.143478,
|
|
504
|
+
statusBarSrc: "/status-bar/iPhone 16 and 16 Plus Status Bar Black.png",
|
|
505
|
+
statusBarHeightFraction: 0.068964,
|
|
506
|
+
colors: [
|
|
507
|
+
{ name: "Sky Blue", frameSrc: "/devices/iPhone Air - Sky Blue.png", swatch: "#A8C8D8" },
|
|
508
|
+
{ name: "Cloud White", frameSrc: "/devices/iPhone Air - Cloud White.png", swatch: "#F5F5F0" },
|
|
509
|
+
{ name: "Light Gold", frameSrc: "/devices/iPhone Air - Light Gold.png", swatch: "#E8D8C0" },
|
|
510
|
+
{ name: "Space Black", frameSrc: "/devices/iPhone Air - Space Black.png", swatch: "#3B3B3D" }
|
|
511
|
+
],
|
|
512
|
+
defaultColor: "Sky Blue"
|
|
513
|
+
};
|
|
514
|
+
var allDevices = [
|
|
515
|
+
iPhone17,
|
|
516
|
+
iPhone17Pro,
|
|
517
|
+
iPhone17ProMax,
|
|
518
|
+
iPhoneAir,
|
|
519
|
+
iPhone16,
|
|
520
|
+
iPhone16Plus,
|
|
521
|
+
iPhone16Pro,
|
|
522
|
+
iPhone16ProMax,
|
|
523
|
+
iPhone15,
|
|
524
|
+
iPhone15Plus,
|
|
525
|
+
iPhone15Pro,
|
|
526
|
+
iPhone15ProMax,
|
|
527
|
+
iPhone14,
|
|
528
|
+
iPhone14Plus,
|
|
529
|
+
iPhone14Pro,
|
|
530
|
+
iPhone14ProMax,
|
|
531
|
+
iPhone13,
|
|
532
|
+
iPhone13Mini,
|
|
533
|
+
iPhone13Pro,
|
|
534
|
+
iPhone13ProMax
|
|
535
|
+
];
|
|
536
|
+
|
|
537
|
+
export { DeviceMockup, allDevices, iPhone13, iPhone13Mini, iPhone13Pro, iPhone13ProMax, iPhone14, iPhone14Plus, iPhone14Pro, iPhone14ProMax, iPhone15, iPhone15Plus, iPhone15Pro, iPhone15ProMax, iPhone16, iPhone16Plus, iPhone16Pro, iPhone16ProMax, iPhone17, iPhone17Pro, iPhone17ProMax, iPhoneAir };
|
|
538
|
+
//# sourceMappingURL=index.js.map
|
|
539
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/device-mockup.tsx","../src/devices/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { DeviceMockupProps } from \"./types\";\n\n/**\n * Renders an ultra-realistic iPhone device mockup.\n *\n * Uses a 3-layer compositing approach:\n * 1. Screen content area (z-index 10)\n * 2. Status bar PNG overlay\n * 3. Device frame PNG on top (z-index 20, pointer-events: none)\n *\n * All positioning is fraction-based so mockups scale to any size.\n *\n * @example\n * ```tsx\n * import { DeviceMockup, iPhone16Pro } from \"@mockify/react\";\n *\n * <DeviceMockup device={iPhone16Pro} width={320}>\n * <img src=\"/screenshot.png\" alt=\"App\" style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\" }} />\n * </DeviceMockup>\n * ```\n */\nexport function DeviceMockup({\n device,\n children,\n width = 320,\n screenColor = \"#f2f2f2\",\n showStatusBar = true,\n className = \"\",\n style,\n color,\n basePath = \"https://unpkg.com/@mockify/react@latest/assets\",\n}: DeviceMockupProps) {\n // Resolve frame source: color prop → defaultColor → frameSrc fallback\n const resolvedColor = color ?? device.defaultColor;\n const colorVariant = resolvedColor\n ? device.colors.find((c) => c.name === resolvedColor)\n : undefined;\n const frameSrc = colorVariant?.frameSrc ?? device.frameSrc;\n\n // Compute dimensions\n const frameW = width;\n const frameH = width * (device.framePngHeight / device.framePngWidth);\n const screenLeft = frameW * device.screenLeftFraction;\n const screenTop = frameH * device.screenTopFraction;\n const screenW = frameW * device.screenWidthFraction;\n const screenH = frameH * device.screenHeightFraction;\n const screenRadius = frameW * device.screenRadiusFraction;\n const statusBarH = screenH * device.statusBarHeightFraction;\n\n // Resolve paths\n const resolvedFrameSrc = `${basePath}${frameSrc}`;\n const resolvedStatusBarSrc = `${basePath}${device.statusBarSrc}`;\n\n return (\n <div\n className={className}\n style={{\n position: \"relative\",\n width: frameW,\n height: frameH,\n ...style,\n }}\n >\n {/* Layer 1: Screen content area */}\n <div\n style={{\n position: \"absolute\",\n left: screenLeft,\n top: screenTop,\n width: screenW,\n height: screenH,\n borderRadius: screenRadius,\n overflow: \"hidden\",\n boxShadow: \"inset 0 0 0 0.5px rgba(0,0,0,0.1)\",\n backgroundColor: screenColor,\n backfaceVisibility: \"hidden\",\n pointerEvents: \"auto\",\n zIndex: 10,\n }}\n >\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n width: \"100%\",\n height: \"100%\",\n }}\n >\n {children}\n\n {/* Status bar overlay */}\n {showStatusBar && (\n <img\n alt=\"\"\n src={resolvedStatusBarSrc}\n style={{\n position: \"absolute\",\n pointerEvents: \"none\",\n width: \"calc(100% + 4px)\",\n height: statusBarH,\n top: 0,\n left: -2,\n objectFit: \"cover\",\n objectPosition: \"center 48%\",\n borderTopLeftRadius: screenRadius,\n borderTopRightRadius: screenRadius,\n transform: \"translateZ(0)\",\n }}\n />\n )}\n </div>\n </div>\n\n {/* Layer 3: Device frame PNG */}\n <img\n alt={device.name}\n src={resolvedFrameSrc}\n style={{\n position: \"absolute\",\n pointerEvents: \"none\",\n userSelect: \"none\",\n left: 0,\n top: 0,\n width: frameW,\n height: frameH,\n zIndex: 20,\n transform: \"translateZ(0)\",\n }}\n />\n </div>\n );\n}\n","import type { DeviceConfig } from \"../types\";\n\n/* ═══════════════════════════════════════════════════════\n * iPhone 13 generation\n * ═══════════════════════════════════════════════════════ */\n\nexport const iPhone13: DeviceConfig = {\n name: \"iPhone 13\",\n frameSrc: \"/devices/iPhone 13.png\",\n framePngWidth: 1400,\n framePngHeight: 2700,\n screenLeftFraction: 0.083571,\n screenTopFraction: 0.035556,\n screenWidthFraction: 0.832857,\n screenHeightFraction: 0.932593,\n screenRadiusFraction: 0.101421,\n statusBarSrc: \"/status-bar/Notch Status Bar Black.png\",\n statusBarHeightFraction: 0.055,\n colors: [\n { name: \"Midnight\", frameSrc: \"/devices/iPhone 13 - Midnight.png\", swatch: \"#3E3C39\" },\n { name: \"Starlight\", frameSrc: \"/devices/iPhone 13 - Starlight.png\", swatch: \"#F0E4D3\" },\n ],\n defaultColor: \"Midnight\",\n};\n\nexport const iPhone13Mini: DeviceConfig = {\n name: \"iPhone 13 Mini\",\n frameSrc: \"/devices/iPhone 13 Mini.png\",\n framePngWidth: 1240,\n framePngHeight: 2500,\n screenLeftFraction: 0.064516,\n screenTopFraction: 0.033600,\n screenWidthFraction: 0.870968,\n screenHeightFraction: 0.934400,\n screenRadiusFraction: 0.106452,\n statusBarSrc: \"/status-bar/Notch Status Bar Black.png\",\n statusBarHeightFraction: 0.055,\n colors: [\n { name: \"Midnight\", frameSrc: \"/devices/iPhone 13 Mini - Midnight.png\", swatch: \"#3E3C39\" },\n { name: \"Starlight\", frameSrc: \"/devices/iPhone 13 Mini - Starlight.png\", swatch: \"#F0E4D3\" },\n ],\n defaultColor: \"Midnight\",\n};\n\nexport const iPhone13Pro: DeviceConfig = {\n name: \"iPhone 13 Pro\",\n frameSrc: \"/devices/iPhone 13 Pro.png\",\n framePngWidth: 1400,\n framePngHeight: 2700,\n screenLeftFraction: 0.083571,\n screenTopFraction: 0.035556,\n screenWidthFraction: 0.832857,\n screenHeightFraction: 0.932593,\n screenRadiusFraction: 0.101421,\n statusBarSrc: \"/status-bar/Notch Status Bar Black.png\",\n statusBarHeightFraction: 0.055,\n colors: [\n { name: \"Graphite\", frameSrc: \"/devices/iPhone 13 Pro - Graphite.png\", swatch: \"#54524F\" },\n { name: \"Silver\", frameSrc: \"/devices/iPhone 13 Pro - Silver.png\", swatch: \"#E3E4DF\" },\n ],\n defaultColor: \"Graphite\",\n};\n\nexport const iPhone13ProMax: DeviceConfig = {\n name: \"iPhone 13 Pro Max\",\n frameSrc: \"/devices/iPhone 13 Pro Max.png\",\n framePngWidth: 1500,\n framePngHeight: 3000,\n screenLeftFraction: 0.073333,\n screenTopFraction: 0.040333,\n screenWidthFraction: 0.853333,\n screenHeightFraction: 0.922000,\n screenRadiusFraction: 0.106660,\n statusBarSrc: \"/status-bar/Notch Status Bar Black.png\",\n statusBarHeightFraction: 0.055,\n colors: [\n { name: \"Graphite\", frameSrc: \"/devices/iPhone 13 Pro Max - Graphite.png\", swatch: \"#54524F\" },\n { name: \"Silver\", frameSrc: \"/devices/iPhone 13 Pro Max - Silver.png\", swatch: \"#E3E4DF\" },\n ],\n defaultColor: \"Graphite\",\n};\n\n/* ═══════════════════════════════════════════════════════\n * iPhone 14 generation\n * ═══════════════════════════════════════════════════════ */\n\nexport const iPhone14: DeviceConfig = {\n name: \"iPhone 14\",\n frameSrc: \"/devices/iPhone 14.png\",\n framePngWidth: 1370,\n framePngHeight: 2732,\n screenLeftFraction: 0.074453,\n screenTopFraction: 0.039898,\n screenWidthFraction: 0.851095,\n screenHeightFraction: 0.922767,\n screenRadiusFraction: 0.103642,\n statusBarSrc: \"/status-bar/Notch Status Bar Black.png\",\n statusBarHeightFraction: 0.055,\n colors: [\n { name: \"Midnight\", frameSrc: \"/devices/iPhone 14 - Midnight.png\", swatch: \"#3E3C39\" },\n { name: \"Starlight\", frameSrc: \"/devices/iPhone 14 - Starlight.png\", swatch: \"#F0E4D3\" },\n { name: \"Blue\", frameSrc: \"/devices/iPhone 14 - Blue.png\", swatch: \"#A0B4C8\" },\n { name: \"Purple\", frameSrc: \"/devices/iPhone 14 - Purple.png\", swatch: \"#E5DDEA\" },\n { name: \"Red\", frameSrc: \"/devices/iPhone 14 - Red.png\", swatch: \"#FA2837\" },\n ],\n defaultColor: \"Midnight\",\n};\n\nexport const iPhone14Plus: DeviceConfig = {\n name: \"iPhone 14 Plus\",\n frameSrc: \"/devices/iPhone 14 Plus.png\",\n framePngWidth: 1464,\n framePngHeight: 2978,\n screenLeftFraction: 0.061475,\n screenTopFraction: 0.035594,\n screenWidthFraction: 0.877049,\n screenHeightFraction: 0.930826,\n screenRadiusFraction: 0.109283,\n statusBarSrc: \"/status-bar/Notch Status Bar Black.png\",\n statusBarHeightFraction: 0.055,\n colors: [\n { name: \"Midnight\", frameSrc: \"/devices/iPhone 14 Plus - Midnight.png\", swatch: \"#3E3C39\" },\n { name: \"Starlight\", frameSrc: \"/devices/iPhone 14 Plus - Starlight.png\", swatch: \"#F0E4D3\" },\n { name: \"Blue\", frameSrc: \"/devices/iPhone 14 Plus - Blue.png\", swatch: \"#A0B4C8\" },\n { name: \"Purple\", frameSrc: \"/devices/iPhone 14 Plus - Purple.png\", swatch: \"#E5DDEA\" },\n { name: \"Red\", frameSrc: \"/devices/iPhone 14 Plus - Red.png\", swatch: \"#FA2837\" },\n ],\n defaultColor: \"Midnight\",\n};\n\nexport const iPhone14Pro: DeviceConfig = {\n name: \"iPhone 14 Pro\",\n frameSrc: \"/devices/iPhone 14 Pro.png\",\n framePngWidth: 1339,\n framePngHeight: 2716,\n screenLeftFraction: 0.059746,\n screenTopFraction: 0.029456,\n screenWidthFraction: 0.878268,\n screenHeightFraction: 0.941091,\n screenRadiusFraction: 0.122913,\n statusBarSrc: \"/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png\",\n statusBarHeightFraction: 0.065,\n colors: [\n { name: \"Space Black\", frameSrc: \"/devices/iPhone 14 Pro - Space Black.png\", swatch: \"#3B3B3D\" },\n { name: \"Silver\", frameSrc: \"/devices/iPhone 14 Pro - Silver.png\", swatch: \"#E3E4DF\" },\n { name: \"Gold\", frameSrc: \"/devices/iPhone 14 Pro - Gold.png\", swatch: \"#F4E8CE\" },\n { name: \"Deep Purple\", frameSrc: \"/devices/iPhone 14 Pro - Deep Purple.png\", swatch: \"#635166\" },\n ],\n defaultColor: \"Space Black\",\n};\n\nexport const iPhone14ProMax: DeviceConfig = {\n name: \"iPhone 14 Pro Max\",\n frameSrc: \"/devices/iPhone 14 Pro Max.png\",\n framePngWidth: 1450,\n framePngHeight: 2936,\n screenLeftFraction: 0.055172,\n screenTopFraction: 0.023842,\n screenWidthFraction: 0.888276,\n screenHeightFraction: 0.952316,\n screenRadiusFraction: 0.113617,\n statusBarSrc: \"/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png\",\n statusBarHeightFraction: 0.065,\n colors: [\n { name: \"Space Black\", frameSrc: \"/devices/iPhone 14 Pro Max - Space Black.png\", swatch: \"#3B3B3D\" },\n { name: \"Silver\", frameSrc: \"/devices/iPhone 14 Pro Max - Silver.png\", swatch: \"#E3E4DF\" },\n { name: \"Gold\", frameSrc: \"/devices/iPhone 14 Pro Max - Gold.png\", swatch: \"#F4E8CE\" },\n { name: \"Deep Purple\", frameSrc: \"/devices/iPhone 14 Pro Max - Deep Purple.png\", swatch: \"#635166\" },\n ],\n defaultColor: \"Space Black\",\n};\n\n/* ═══════════════════════════════════════════════════════\n * iPhone 15 generation\n * ═══════════════════════════════════════════════════════ */\n\nexport const iPhone15: DeviceConfig = {\n name: \"iPhone 15\",\n frameSrc: \"/devices/iPhone 15.png\",\n framePngWidth: 1419,\n framePngHeight: 2796,\n screenLeftFraction: 0.084566,\n screenTopFraction: 0.042919,\n screenWidthFraction: 0.828752,\n screenHeightFraction: 0.914163,\n screenRadiusFraction: 0.115983,\n statusBarSrc: \"/status-bar/iPhone 16 and 16 Plus Status Bar Black.png\",\n statusBarHeightFraction: 0.065,\n colors: [\n { name: \"Black\", frameSrc: \"/devices/iPhone 15 - Black.png\", swatch: \"#3E3C39\" },\n { name: \"Blue\", frameSrc: \"/devices/iPhone 15 - Blue.png\", swatch: \"#D6E3EE\" },\n { name: \"Green\", frameSrc: \"/devices/iPhone 15 - Green.png\", swatch: \"#D0E4CE\" },\n { name: \"Pink\", frameSrc: \"/devices/iPhone 15 - Pink.png\", swatch: \"#F4D4D0\" },\n { name: \"Yellow\", frameSrc: \"/devices/iPhone 15 - Yellow.png\", swatch: \"#F4E8B8\" },\n ],\n defaultColor: \"Black\",\n};\n\nexport const iPhone15Plus: DeviceConfig = {\n name: \"iPhone 15 Plus\",\n frameSrc: \"/devices/iPhone 15 Plus.png\",\n framePngWidth: 1530,\n framePngHeight: 3036,\n screenLeftFraction: 0.078431,\n screenTopFraction: 0.039526,\n screenWidthFraction: 0.841830,\n screenHeightFraction: 0.920948,\n screenRadiusFraction: 0.107676,\n statusBarSrc: \"/status-bar/iPhone 16 and 16 Plus Status Bar Black.png\",\n statusBarHeightFraction: 0.065,\n colors: [\n { name: \"Black\", frameSrc: \"/devices/iPhone 15 Plus - Black.png\", swatch: \"#3E3C39\" },\n { name: \"Blue\", frameSrc: \"/devices/iPhone 15 Plus - Blue.png\", swatch: \"#D6E3EE\" },\n { name: \"Green\", frameSrc: \"/devices/iPhone 15 Plus - Green.png\", swatch: \"#D0E4CE\" },\n { name: \"Pink\", frameSrc: \"/devices/iPhone 15 Plus - Pink.png\", swatch: \"#F4D4D0\" },\n { name: \"Yellow\", frameSrc: \"/devices/iPhone 15 Plus - Yellow.png\", swatch: \"#F4E8B8\" },\n ],\n defaultColor: \"Black\",\n};\n\nexport const iPhone15Pro: DeviceConfig = {\n name: \"iPhone 15 Pro\",\n frameSrc: \"/devices/iPhone 15 Pro.png\",\n framePngWidth: 1419,\n framePngHeight: 2796,\n screenLeftFraction: 0.084566,\n screenTopFraction: 0.042919,\n screenWidthFraction: 0.829458,\n screenHeightFraction: 0.914163,\n screenRadiusFraction: 0.116082,\n statusBarSrc: \"/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png\",\n statusBarHeightFraction: 0.065,\n colors: [\n { name: \"Natural Titanium\", frameSrc: \"/devices/iPhone 15 Pro - Natural Titanium.png\", swatch: \"#C2B9AE\" },\n { name: \"Blue Titanium\", frameSrc: \"/devices/iPhone 15 Pro - Blue Titanium.png\", swatch: \"#3D4550\" },\n { name: \"White Titanium\", frameSrc: \"/devices/iPhone 15 Pro - White Titanium.png\", swatch: \"#E3E4DF\" },\n { name: \"Black Titanium\", frameSrc: \"/devices/iPhone 15 Pro - Black Titanium.png\", swatch: \"#3B3B3D\" },\n ],\n defaultColor: \"Natural Titanium\",\n};\n\nexport const iPhone15ProMax: DeviceConfig = {\n name: \"iPhone 15 Pro Max\",\n frameSrc: \"/devices/iPhone 15 Pro Max.png\",\n framePngWidth: 1530,\n framePngHeight: 3036,\n screenLeftFraction: 0.078431,\n screenTopFraction: 0.039526,\n screenWidthFraction: 0.843137,\n screenHeightFraction: 0.920948,\n screenRadiusFraction: 0.107843,\n statusBarSrc: \"/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png\",\n statusBarHeightFraction: 0.065,\n colors: [\n { name: \"Natural Titanium\", frameSrc: \"/devices/iPhone 15 Pro Max - Natural Titanium.png\", swatch: \"#C2B9AE\" },\n { name: \"Blue Titanium\", frameSrc: \"/devices/iPhone 15 Pro Max - Blue Titanium.png\", swatch: \"#3D4550\" },\n { name: \"White Titanium\", frameSrc: \"/devices/iPhone 15 Pro Max - White Titanium.png\", swatch: \"#E3E4DF\" },\n { name: \"Black Titanium\", frameSrc: \"/devices/iPhone 15 Pro Max - Black Titanium.png\", swatch: \"#3B3B3D\" },\n ],\n defaultColor: \"Natural Titanium\",\n};\n\n/* ═══════════════════════════════════════════════════════\n * iPhone 16 generation\n * ═══════════════════════════════════════════════════════ */\n\nexport const iPhone16: DeviceConfig = {\n name: \"iPhone 16\",\n frameSrc: \"/devices/iPhone 16 - Black.png\",\n framePngWidth: 1359,\n framePngHeight: 2736,\n screenLeftFraction: 0.067697,\n screenTopFraction: 0.033626,\n screenWidthFraction: 0.863870,\n screenHeightFraction: 0.932383,\n screenRadiusFraction: 0.126564,\n statusBarSrc: \"/status-bar/iPhone 16 and 16 Plus Status Bar Black.png\",\n statusBarHeightFraction: 0.068966,\n colors: [\n { name: \"Black\", frameSrc: \"/devices/iPhone 16 - Black.png\", swatch: \"#3B3B3D\" },\n { name: \"White\", frameSrc: \"/devices/iPhone 16 - White.png\", swatch: \"#F5F5F0\" },\n { name: \"Teal\", frameSrc: \"/devices/iPhone 16 - Teal.png\", swatch: \"#B0D4CE\" },\n { name: \"Pink\", frameSrc: \"/devices/iPhone 16 - Pink.png\", swatch: \"#F2C8D0\" },\n { name: \"Ultramarine\", frameSrc: \"/devices/iPhone 16 - Ultramarine.png\", swatch: \"#7C8ACF\" },\n ],\n defaultColor: \"Black\",\n};\n\nexport const iPhone16Plus: DeviceConfig = {\n name: \"iPhone 16 Plus\",\n frameSrc: \"/devices/iPhone 16 Plus - Black.png\",\n framePngWidth: 1470,\n framePngHeight: 2970,\n screenLeftFraction: 0.062585,\n screenTopFraction: 0.029966,\n screenWidthFraction: 0.874150,\n screenHeightFraction: 0.939731,\n screenRadiusFraction: 0.120408,\n statusBarSrc: \"/status-bar/iPhone 16 and 16 Plus Status Bar Black.png\",\n statusBarHeightFraction: 0.064039,\n colors: [\n { name: \"Black\", frameSrc: \"/devices/iPhone 16 Plus - Black.png\", swatch: \"#3B3B3D\" },\n { name: \"White\", frameSrc: \"/devices/iPhone 16 Plus - White.png\", swatch: \"#F5F5F0\" },\n { name: \"Teal\", frameSrc: \"/devices/iPhone 16 Plus - Teal.png\", swatch: \"#B0D4CE\" },\n { name: \"Pink\", frameSrc: \"/devices/iPhone 16 Plus - Pink.png\", swatch: \"#F2C8D0\" },\n { name: \"Ultramarine\", frameSrc: \"/devices/iPhone 16 Plus - Ultramarine.png\", swatch: \"#7C8ACF\" },\n ],\n defaultColor: \"Black\",\n};\n\nexport const iPhone16Pro: DeviceConfig = {\n name: \"iPhone 16 Pro\",\n frameSrc: \"/devices/iPhone 16 Pro - Natural Titanium.png\",\n framePngWidth: 1350,\n framePngHeight: 2760,\n screenLeftFraction: 0.054815,\n screenTopFraction: 0.025725,\n screenWidthFraction: 0.889630,\n screenHeightFraction: 0.948188,\n screenRadiusFraction: 0.147407,\n statusBarSrc: \"/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png\",\n statusBarHeightFraction: 0.073892,\n colors: [\n { name: \"Natural Titanium\", frameSrc: \"/devices/iPhone 16 Pro - Natural Titanium.png\", swatch: \"#C2B9AE\" },\n { name: \"Black Titanium\", frameSrc: \"/devices/iPhone 16 Pro - Black Titanium.png\", swatch: \"#3B3B3D\" },\n { name: \"White Titanium\", frameSrc: \"/devices/iPhone 16 Pro - White Titanium.png\", swatch: \"#E3E4DF\" },\n { name: \"Desert Titanium\", frameSrc: \"/devices/iPhone 16 Pro - Desert Titanium.png\", swatch: \"#C4A97D\" },\n ],\n defaultColor: \"Natural Titanium\",\n};\n\nexport const iPhone16ProMax: DeviceConfig = {\n name: \"iPhone 16 Pro Max\",\n frameSrc: \"/devices/iPhone 16 Pro Max - Natural Titanium.png\",\n framePngWidth: 1470,\n framePngHeight: 3000,\n screenLeftFraction: 0.052381,\n screenTopFraction: 0.022667,\n screenWidthFraction: 0.894558,\n screenHeightFraction: 0.954333,\n screenRadiusFraction: 0.133333,\n statusBarSrc: \"/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png\",\n statusBarHeightFraction: 0.065812,\n colors: [\n { name: \"Natural Titanium\", frameSrc: \"/devices/iPhone 16 Pro Max - Natural Titanium.png\", swatch: \"#C2B9AE\" },\n { name: \"Black Titanium\", frameSrc: \"/devices/iPhone 16 Pro Max - Black Titanium.png\", swatch: \"#3B3B3D\" },\n { name: \"White Titanium\", frameSrc: \"/devices/iPhone 16 Pro Max - White Titanium.png\", swatch: \"#E3E4DF\" },\n { name: \"Desert Titanium\", frameSrc: \"/devices/iPhone 16 Pro Max - Desert Titanium.png\", swatch: \"#C4A97D\" },\n ],\n defaultColor: \"Natural Titanium\",\n};\n\n/* ═══════════════════════════════════════════════════════\n * iPhone 17 generation\n * ═══════════════════════════════════════════════════════ */\n\nexport const iPhone17: DeviceConfig = {\n name: \"iPhone 17\",\n frameSrc: \"/devices/iPhone 17 - Black.png\",\n framePngWidth: 1350,\n framePngHeight: 2760,\n screenLeftFraction: 0.054815,\n screenTopFraction: 0.025725,\n screenWidthFraction: 0.889630,\n screenHeightFraction: 0.948188,\n screenRadiusFraction: 0.147407,\n statusBarSrc: \"/status-bar/iPhone 16 and 16 Plus Status Bar Black.png\",\n statusBarHeightFraction: 0.068708,\n colors: [\n { name: \"Black\", frameSrc: \"/devices/iPhone 17 - Black.png\", swatch: \"#3B3B3D\" },\n { name: \"White\", frameSrc: \"/devices/iPhone 17 - White.png\", swatch: \"#F5F5F0\" },\n { name: \"Lavender\", frameSrc: \"/devices/iPhone 17 - Lavender.png\", swatch: \"#D0C4D8\" },\n { name: \"Mist Blue\", frameSrc: \"/devices/iPhone 17 - Mist Blue.png\", swatch: \"#B4C8D4\" },\n { name: \"Sage\", frameSrc: \"/devices/iPhone 17 - Sage.png\", swatch: \"#BEC8B0\" },\n ],\n defaultColor: \"Black\",\n};\n\nexport const iPhone17Pro: DeviceConfig = {\n name: \"iPhone 17 Pro\",\n frameSrc: \"/devices/iPhone 17 Pro - Silver.png\",\n framePngWidth: 1350,\n framePngHeight: 2760,\n screenLeftFraction: 0.054815,\n screenTopFraction: 0.025725,\n screenWidthFraction: 0.889630,\n screenHeightFraction: 0.948188,\n screenRadiusFraction: 0.146667,\n statusBarSrc: \"/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png\",\n statusBarHeightFraction: 0.073693,\n colors: [\n { name: \"Silver\", frameSrc: \"/devices/iPhone 17 Pro - Silver.png\", swatch: \"#E3E4DF\" },\n { name: \"Cosmic Orange\", frameSrc: \"/devices/iPhone 17 Pro - Cosmic Orange.png\", swatch: \"#D4956A\" },\n { name: \"Deep Blue\", frameSrc: \"/devices/iPhone 17 Pro - Deep Blue.png\", swatch: \"#3D4F6A\" },\n ],\n defaultColor: \"Silver\",\n};\n\nexport const iPhone17ProMax: DeviceConfig = {\n name: \"iPhone 17 Pro Max\",\n frameSrc: \"/devices/iPhone 17 Pro Max - Silver.png\",\n framePngWidth: 1470,\n framePngHeight: 3000,\n screenLeftFraction: 0.052381,\n screenTopFraction: 0.022667,\n screenWidthFraction: 0.894558,\n screenHeightFraction: 0.954333,\n screenRadiusFraction: 0.136054,\n statusBarSrc: \"/status-bar/iPhone 16 Pro and 16 Max Status Bar Black.png\",\n statusBarHeightFraction: 0.066415,\n colors: [\n { name: \"Silver\", frameSrc: \"/devices/iPhone 17 Pro Max - Silver.png\", swatch: \"#E3E4DF\" },\n { name: \"Cosmic Orange\", frameSrc: \"/devices/iPhone 17 Pro Max - Cosmic Orange.png\", swatch: \"#D4956A\" },\n { name: \"Deep Blue\", frameSrc: \"/devices/iPhone 17 Pro Max - Deep Blue.png\", swatch: \"#3D4F6A\" },\n ],\n defaultColor: \"Silver\",\n};\n\n/* ═══════════════════════════════════════════════════════\n * iPhone Air\n * ═══════════════════════════════════════════════════════ */\n\nexport const iPhoneAir: DeviceConfig = {\n name: \"iPhone Air\",\n frameSrc: \"/devices/iPhone Air - Sky Blue.png\",\n framePngWidth: 1380,\n framePngHeight: 2880,\n screenLeftFraction: 0.044928,\n screenTopFraction: 0.025694,\n screenWidthFraction: 0.909420,\n screenHeightFraction: 0.948264,\n screenRadiusFraction: 0.143478,\n statusBarSrc: \"/status-bar/iPhone 16 and 16 Plus Status Bar Black.png\",\n statusBarHeightFraction: 0.068964,\n colors: [\n { name: \"Sky Blue\", frameSrc: \"/devices/iPhone Air - Sky Blue.png\", swatch: \"#A8C8D8\" },\n { name: \"Cloud White\", frameSrc: \"/devices/iPhone Air - Cloud White.png\", swatch: \"#F5F5F0\" },\n { name: \"Light Gold\", frameSrc: \"/devices/iPhone Air - Light Gold.png\", swatch: \"#E8D8C0\" },\n { name: \"Space Black\", frameSrc: \"/devices/iPhone Air - Space Black.png\", swatch: \"#3B3B3D\" },\n ],\n defaultColor: \"Sky Blue\",\n};\n\n/* ═══════════════════════════════════════════════════════\n * All devices registry\n * ═══════════════════════════════════════════════════════ */\n\n/** All 20 available devices, ordered newest first. */\nexport const allDevices: DeviceConfig[] = [\n iPhone17,\n iPhone17Pro,\n iPhone17ProMax,\n iPhoneAir,\n iPhone16,\n iPhone16Plus,\n iPhone16Pro,\n iPhone16ProMax,\n iPhone15,\n iPhone15Plus,\n iPhone15Pro,\n iPhone15ProMax,\n iPhone14,\n iPhone14Plus,\n iPhone14Pro,\n iPhone14ProMax,\n iPhone13,\n iPhone13Mini,\n iPhone13Pro,\n iPhone13ProMax,\n];\n"]}
|