@mmtitanl/tablets 0.1.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.
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/ios/index.ts
21
+ var ios_exports = {};
22
+ __export(ios_exports, {
23
+ IPAD_PRO_13_FRAME: () => IPAD_PRO_13_FRAME,
24
+ IPAD_PRO_13_LAYOUT: () => IPAD_PRO_13_LAYOUT,
25
+ IPAD_PRO_13_META: () => IPAD_PRO_13_META,
26
+ IPAD_PRO_13_SCREEN_RECT: () => IPAD_PRO_13_SCREEN_RECT,
27
+ IPadPro13SVG: () => IPadPro13SVG
28
+ });
29
+ module.exports = __toCommonJS(ios_exports);
30
+
31
+ // src/ios/ipad-pro-13.tsx
32
+ var import_jsx_runtime = require("react/jsx-runtime");
33
+ var IPAD_PRO_13_META = {
34
+ id: "ipad-pro-13",
35
+ name: 'iPad Pro 13"',
36
+ platform: "ios",
37
+ year: 2024,
38
+ formFactor: "tablet",
39
+ screen: {
40
+ width: 1032,
41
+ height: 1376,
42
+ physicalWidth: 2064,
43
+ physicalHeight: 2752,
44
+ dpr: 2,
45
+ aspectRatio: "4:3",
46
+ cornerRadius: 18,
47
+ ppi: 264
48
+ }
49
+ };
50
+ var IPAD_PRO_13_LAYOUT = {
51
+ meta: IPAD_PRO_13_META,
52
+ safeArea: {
53
+ portrait: { top: 24, bottom: 20, left: 0, right: 0 },
54
+ landscape: { top: 24, bottom: 20, left: 0, right: 0 }
55
+ },
56
+ hardwareOverlays: {
57
+ type: "none",
58
+ portrait: { x: 0, y: 0, width: 0, height: 0, shape: "rectangle" }
59
+ },
60
+ statusBar: {
61
+ height: 24,
62
+ style: "fullwidth",
63
+ hasTime: true,
64
+ hasBattery: true,
65
+ hasSignal: true
66
+ },
67
+ homeIndicator: {
68
+ type: "swipe-bar",
69
+ height: 5,
70
+ width: 340,
71
+ visible: true
72
+ },
73
+ hardwareButtons: {
74
+ volumeUp: { side: "right", yPosition: 80 },
75
+ volumeDown: { side: "right", yPosition: 150 },
76
+ power: { side: "right", yPosition: 30 }
77
+ }
78
+ };
79
+ function IPadPro13SVG({ colorScheme = "light", style }) {
80
+ const bodyFill = colorScheme === "dark" ? "#1c1c1e" : "#e5e5e7";
81
+ const stroke = colorScheme === "dark" ? "#3a3a3c" : "#c7c7cc";
82
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
83
+ "svg",
84
+ {
85
+ width: "100%",
86
+ height: "100%",
87
+ viewBox: "0 0 1080 1424",
88
+ preserveAspectRatio: "xMidYMid meet",
89
+ xmlns: "http://www.w3.org/2000/svg",
90
+ style,
91
+ children: [
92
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("mask", { id: "ipad-pro-13-bezel-mask", children: [
93
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { x: "0", y: "0", width: "1080", height: "1424", rx: "40", fill: "white" }),
94
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { x: "24", y: "24", width: "1032", height: "1376", rx: "18", fill: "black" })
95
+ ] }) }),
96
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { x: "0", y: "0", width: "1080", height: "1424", rx: "40", fill: bodyFill, mask: "url(#ipad-pro-13-bezel-mask)" }),
97
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { x: "6", y: "6", width: "1068", height: "1412", rx: "36", fill: "none", stroke, strokeWidth: "2" }),
98
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "540", cy: "14", r: "4", fill: "#2c2c2e" })
99
+ ]
100
+ }
101
+ );
102
+ }
103
+ var IPAD_PRO_13_FRAME = {
104
+ bezelTop: 24,
105
+ bezelBottom: 24,
106
+ bezelLeft: 24,
107
+ bezelRight: 24,
108
+ totalWidth: 1080,
109
+ totalHeight: 1424,
110
+ screenWidth: 1032,
111
+ screenHeight: 1376,
112
+ screenRadius: 18
113
+ };
114
+ var IPAD_PRO_13_SCREEN_RECT = {
115
+ x: 24,
116
+ y: 24,
117
+ width: 1032,
118
+ height: 1376,
119
+ rx: 18
120
+ };
121
+ // Annotate the CommonJS export names for ESM import in node:
122
+ 0 && (module.exports = {
123
+ IPAD_PRO_13_FRAME,
124
+ IPAD_PRO_13_LAYOUT,
125
+ IPAD_PRO_13_META,
126
+ IPAD_PRO_13_SCREEN_RECT,
127
+ IPadPro13SVG
128
+ });
129
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ios/index.ts","../../src/ios/ipad-pro-13.tsx"],"sourcesContent":["export {\n IPAD_PRO_13_META,\n IPAD_PRO_13_LAYOUT,\n IPAD_PRO_13_FRAME,\n IPAD_PRO_13_SCREEN_RECT,\n IPadPro13SVG,\n} from \"./ipad-pro-13.js\";\n","import type { CSSProperties } from \"react\";\nimport type { DeviceLayoutData, DeviceMeta, DeviceFrameInfo, SVGScreenRect } from \"../contract-types.js\";\n\n/**\n * iPad Pro 13\" (M4, 2024) — dimensions\n *\n * Screen: 1032 × 1376 pt @ 2x (physical 2064 × 2752)\n * Display: 13\" Ultra Retina XDR OLED Tandem, 264 PPI\n * Hardware: TrueDepth camera (landscape edge), no notch, no home button\n * Frame: Aluminum\n */\nexport const IPAD_PRO_13_META: DeviceMeta = {\n id: \"ipad-pro-13\",\n name: \"iPad Pro 13\\\"\",\n platform: \"ios\",\n year: 2024,\n formFactor: \"tablet\",\n screen: {\n width: 1032,\n height: 1376,\n physicalWidth: 2064,\n physicalHeight: 2752,\n dpr: 2,\n aspectRatio: \"4:3\",\n cornerRadius: 18,\n ppi: 264,\n },\n};\n\nexport const IPAD_PRO_13_LAYOUT: DeviceLayoutData = {\n meta: IPAD_PRO_13_META,\n safeArea: {\n portrait: { top: 24, bottom: 20, left: 0, right: 0 },\n landscape: { top: 24, bottom: 20, left: 0, right: 0 },\n },\n hardwareOverlays: {\n type: \"none\",\n portrait: { x: 0, y: 0, width: 0, height: 0, shape: \"rectangle\" },\n },\n statusBar: {\n height: 24,\n style: \"fullwidth\",\n hasTime: true,\n hasBattery: true,\n hasSignal: true,\n },\n homeIndicator: {\n type: \"swipe-bar\",\n height: 5,\n width: 340,\n visible: true,\n },\n hardwareButtons: {\n volumeUp: { side: \"right\", yPosition: 80 },\n volumeDown: { side: \"right\", yPosition: 150 },\n power: { side: \"right\", yPosition: 30 },\n },\n};\n\n/**\n * Placeholder SVG frame for iPad Pro 13\".\n * Replace this with the production SVG. The viewBox must match\n * the device's logical point dimensions (1032 × 1376) for the\n * adaptive scaling and screen-mask to align correctly.\n *\n * If your source SVG uses physical pixels (2064 × 2752), pass it\n * through `normalizeSVGToLogicalPoints` first.\n */\ninterface DeviceSVGProps {\n colorScheme?: \"light\" | \"dark\";\n style?: CSSProperties;\n}\n\nexport function IPadPro13SVG({ colorScheme = \"light\", style }: DeviceSVGProps) {\n const bodyFill = colorScheme === \"dark\" ? \"#1c1c1e\" : \"#e5e5e7\";\n const stroke = colorScheme === \"dark\" ? \"#3a3a3c\" : \"#c7c7cc\";\n return (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 1080 1424\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={style}\n >\n <defs>\n <mask id=\"ipad-pro-13-bezel-mask\">\n <rect x=\"0\" y=\"0\" width=\"1080\" height=\"1424\" rx=\"40\" fill=\"white\" />\n <rect x=\"24\" y=\"24\" width=\"1032\" height=\"1376\" rx=\"18\" fill=\"black\" />\n </mask>\n </defs>\n <rect x=\"0\" y=\"0\" width=\"1080\" height=\"1424\" rx=\"40\" fill={bodyFill} mask=\"url(#ipad-pro-13-bezel-mask)\" />\n <rect x=\"6\" y=\"6\" width=\"1068\" height=\"1412\" rx=\"36\" fill=\"none\" stroke={stroke} strokeWidth=\"2\" />\n <circle cx=\"540\" cy=\"14\" r=\"4\" fill=\"#2c2c2e\" />\n </svg>\n );\n}\n\nexport const IPAD_PRO_13_FRAME: DeviceFrameInfo = {\n bezelTop: 24,\n bezelBottom: 24,\n bezelLeft: 24,\n bezelRight: 24,\n totalWidth: 1080,\n totalHeight: 1424,\n screenWidth: 1032,\n screenHeight: 1376,\n screenRadius: 18,\n};\n\nexport const IPAD_PRO_13_SCREEN_RECT: SVGScreenRect = {\n x: 24,\n y: 24,\n width: 1032,\n height: 1376,\n rx: 18,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACsFQ;AA3ED,IAAM,mBAA+B;AAAA,EAC1C,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,KAAK;AAAA,IACL,aAAa;AAAA,IACb,cAAc;AAAA,IACd,KAAK;AAAA,EACP;AACF;AAEO,IAAM,qBAAuC;AAAA,EAClD,MAAM;AAAA,EACN,UAAU;AAAA,IACR,UAAU,EAAE,KAAK,IAAI,QAAQ,IAAI,MAAM,GAAG,OAAO,EAAE;AAAA,IACnD,WAAW,EAAE,KAAK,IAAI,QAAQ,IAAI,MAAM,GAAG,OAAO,EAAE;AAAA,EACtD;AAAA,EACA,kBAAkB;AAAA,IAChB,MAAM;AAAA,IACN,UAAU,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,YAAY;AAAA,EAClE;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW;AAAA,EACb;AAAA,EACA,eAAe;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU,EAAE,MAAM,SAAS,WAAW,GAAG;AAAA,IACzC,YAAY,EAAE,MAAM,SAAS,WAAW,IAAI;AAAA,IAC5C,OAAO,EAAE,MAAM,SAAS,WAAW,GAAG;AAAA,EACxC;AACF;AAgBO,SAAS,aAAa,EAAE,cAAc,SAAS,MAAM,GAAmB;AAC7E,QAAM,WAAW,gBAAgB,SAAS,YAAY;AACtD,QAAM,SAAS,gBAAgB,SAAS,YAAY;AACpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,qBAAoB;AAAA,MACpB,OAAM;AAAA,MACN;AAAA,MAEA;AAAA,oDAAC,UACC,uDAAC,UAAK,IAAG,0BACP;AAAA,sDAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,QAAO,QAAO,QAAO,IAAG,MAAK,MAAK,SAAQ;AAAA,UAClE,4CAAC,UAAK,GAAE,MAAK,GAAE,MAAK,OAAM,QAAO,QAAO,QAAO,IAAG,MAAK,MAAK,SAAQ;AAAA,WACtE,GACF;AAAA,QACA,4CAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,QAAO,QAAO,QAAO,IAAG,MAAK,MAAM,UAAU,MAAK,gCAA+B;AAAA,QACzG,4CAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,QAAO,QAAO,QAAO,IAAG,MAAK,MAAK,QAAO,QAAgB,aAAY,KAAI;AAAA,QACjG,4CAAC,YAAO,IAAG,OAAM,IAAG,MAAK,GAAE,KAAI,MAAK,WAAU;AAAA;AAAA;AAAA,EAChD;AAEJ;AAEO,IAAM,oBAAqC;AAAA,EAChD,UAAU;AAAA,EACV,aAAa;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAChB;AAEO,IAAM,0BAAyC;AAAA,EACpD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,IAAI;AACN;","names":[]}
@@ -0,0 +1,32 @@
1
+ import * as react from 'react';
2
+ import { CSSProperties } from 'react';
3
+ import { d as DeviceFrameInfo, a as DeviceLayoutData, D as DeviceMeta, e as SVGScreenRect } from '../contract-types-Ch_kM--q.cjs';
4
+
5
+ /**
6
+ * iPad Pro 13" (M4, 2024) — dimensions
7
+ *
8
+ * Screen: 1032 × 1376 pt @ 2x (physical 2064 × 2752)
9
+ * Display: 13" Ultra Retina XDR OLED Tandem, 264 PPI
10
+ * Hardware: TrueDepth camera (landscape edge), no notch, no home button
11
+ * Frame: Aluminum
12
+ */
13
+ declare const IPAD_PRO_13_META: DeviceMeta;
14
+ declare const IPAD_PRO_13_LAYOUT: DeviceLayoutData;
15
+ /**
16
+ * Placeholder SVG frame for iPad Pro 13".
17
+ * Replace this with the production SVG. The viewBox must match
18
+ * the device's logical point dimensions (1032 × 1376) for the
19
+ * adaptive scaling and screen-mask to align correctly.
20
+ *
21
+ * If your source SVG uses physical pixels (2064 × 2752), pass it
22
+ * through `normalizeSVGToLogicalPoints` first.
23
+ */
24
+ interface DeviceSVGProps {
25
+ colorScheme?: "light" | "dark";
26
+ style?: CSSProperties;
27
+ }
28
+ declare function IPadPro13SVG({ colorScheme, style }: DeviceSVGProps): react.JSX.Element;
29
+ declare const IPAD_PRO_13_FRAME: DeviceFrameInfo;
30
+ declare const IPAD_PRO_13_SCREEN_RECT: SVGScreenRect;
31
+
32
+ export { IPAD_PRO_13_FRAME, IPAD_PRO_13_LAYOUT, IPAD_PRO_13_META, IPAD_PRO_13_SCREEN_RECT, IPadPro13SVG };
@@ -0,0 +1,32 @@
1
+ import * as react from 'react';
2
+ import { CSSProperties } from 'react';
3
+ import { d as DeviceFrameInfo, a as DeviceLayoutData, D as DeviceMeta, e as SVGScreenRect } from '../contract-types-Ch_kM--q.js';
4
+
5
+ /**
6
+ * iPad Pro 13" (M4, 2024) — dimensions
7
+ *
8
+ * Screen: 1032 × 1376 pt @ 2x (physical 2064 × 2752)
9
+ * Display: 13" Ultra Retina XDR OLED Tandem, 264 PPI
10
+ * Hardware: TrueDepth camera (landscape edge), no notch, no home button
11
+ * Frame: Aluminum
12
+ */
13
+ declare const IPAD_PRO_13_META: DeviceMeta;
14
+ declare const IPAD_PRO_13_LAYOUT: DeviceLayoutData;
15
+ /**
16
+ * Placeholder SVG frame for iPad Pro 13".
17
+ * Replace this with the production SVG. The viewBox must match
18
+ * the device's logical point dimensions (1032 × 1376) for the
19
+ * adaptive scaling and screen-mask to align correctly.
20
+ *
21
+ * If your source SVG uses physical pixels (2064 × 2752), pass it
22
+ * through `normalizeSVGToLogicalPoints` first.
23
+ */
24
+ interface DeviceSVGProps {
25
+ colorScheme?: "light" | "dark";
26
+ style?: CSSProperties;
27
+ }
28
+ declare function IPadPro13SVG({ colorScheme, style }: DeviceSVGProps): react.JSX.Element;
29
+ declare const IPAD_PRO_13_FRAME: DeviceFrameInfo;
30
+ declare const IPAD_PRO_13_SCREEN_RECT: SVGScreenRect;
31
+
32
+ export { IPAD_PRO_13_FRAME, IPAD_PRO_13_LAYOUT, IPAD_PRO_13_META, IPAD_PRO_13_SCREEN_RECT, IPadPro13SVG };
@@ -0,0 +1,98 @@
1
+ // src/ios/ipad-pro-13.tsx
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ var IPAD_PRO_13_META = {
4
+ id: "ipad-pro-13",
5
+ name: 'iPad Pro 13"',
6
+ platform: "ios",
7
+ year: 2024,
8
+ formFactor: "tablet",
9
+ screen: {
10
+ width: 1032,
11
+ height: 1376,
12
+ physicalWidth: 2064,
13
+ physicalHeight: 2752,
14
+ dpr: 2,
15
+ aspectRatio: "4:3",
16
+ cornerRadius: 18,
17
+ ppi: 264
18
+ }
19
+ };
20
+ var IPAD_PRO_13_LAYOUT = {
21
+ meta: IPAD_PRO_13_META,
22
+ safeArea: {
23
+ portrait: { top: 24, bottom: 20, left: 0, right: 0 },
24
+ landscape: { top: 24, bottom: 20, left: 0, right: 0 }
25
+ },
26
+ hardwareOverlays: {
27
+ type: "none",
28
+ portrait: { x: 0, y: 0, width: 0, height: 0, shape: "rectangle" }
29
+ },
30
+ statusBar: {
31
+ height: 24,
32
+ style: "fullwidth",
33
+ hasTime: true,
34
+ hasBattery: true,
35
+ hasSignal: true
36
+ },
37
+ homeIndicator: {
38
+ type: "swipe-bar",
39
+ height: 5,
40
+ width: 340,
41
+ visible: true
42
+ },
43
+ hardwareButtons: {
44
+ volumeUp: { side: "right", yPosition: 80 },
45
+ volumeDown: { side: "right", yPosition: 150 },
46
+ power: { side: "right", yPosition: 30 }
47
+ }
48
+ };
49
+ function IPadPro13SVG({ colorScheme = "light", style }) {
50
+ const bodyFill = colorScheme === "dark" ? "#1c1c1e" : "#e5e5e7";
51
+ const stroke = colorScheme === "dark" ? "#3a3a3c" : "#c7c7cc";
52
+ return /* @__PURE__ */ jsxs(
53
+ "svg",
54
+ {
55
+ width: "100%",
56
+ height: "100%",
57
+ viewBox: "0 0 1080 1424",
58
+ preserveAspectRatio: "xMidYMid meet",
59
+ xmlns: "http://www.w3.org/2000/svg",
60
+ style,
61
+ children: [
62
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("mask", { id: "ipad-pro-13-bezel-mask", children: [
63
+ /* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: "1080", height: "1424", rx: "40", fill: "white" }),
64
+ /* @__PURE__ */ jsx("rect", { x: "24", y: "24", width: "1032", height: "1376", rx: "18", fill: "black" })
65
+ ] }) }),
66
+ /* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: "1080", height: "1424", rx: "40", fill: bodyFill, mask: "url(#ipad-pro-13-bezel-mask)" }),
67
+ /* @__PURE__ */ jsx("rect", { x: "6", y: "6", width: "1068", height: "1412", rx: "36", fill: "none", stroke, strokeWidth: "2" }),
68
+ /* @__PURE__ */ jsx("circle", { cx: "540", cy: "14", r: "4", fill: "#2c2c2e" })
69
+ ]
70
+ }
71
+ );
72
+ }
73
+ var IPAD_PRO_13_FRAME = {
74
+ bezelTop: 24,
75
+ bezelBottom: 24,
76
+ bezelLeft: 24,
77
+ bezelRight: 24,
78
+ totalWidth: 1080,
79
+ totalHeight: 1424,
80
+ screenWidth: 1032,
81
+ screenHeight: 1376,
82
+ screenRadius: 18
83
+ };
84
+ var IPAD_PRO_13_SCREEN_RECT = {
85
+ x: 24,
86
+ y: 24,
87
+ width: 1032,
88
+ height: 1376,
89
+ rx: 18
90
+ };
91
+ export {
92
+ IPAD_PRO_13_FRAME,
93
+ IPAD_PRO_13_LAYOUT,
94
+ IPAD_PRO_13_META,
95
+ IPAD_PRO_13_SCREEN_RECT,
96
+ IPadPro13SVG
97
+ };
98
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ios/ipad-pro-13.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport type { DeviceLayoutData, DeviceMeta, DeviceFrameInfo, SVGScreenRect } from \"../contract-types.js\";\n\n/**\n * iPad Pro 13\" (M4, 2024) — dimensions\n *\n * Screen: 1032 × 1376 pt @ 2x (physical 2064 × 2752)\n * Display: 13\" Ultra Retina XDR OLED Tandem, 264 PPI\n * Hardware: TrueDepth camera (landscape edge), no notch, no home button\n * Frame: Aluminum\n */\nexport const IPAD_PRO_13_META: DeviceMeta = {\n id: \"ipad-pro-13\",\n name: \"iPad Pro 13\\\"\",\n platform: \"ios\",\n year: 2024,\n formFactor: \"tablet\",\n screen: {\n width: 1032,\n height: 1376,\n physicalWidth: 2064,\n physicalHeight: 2752,\n dpr: 2,\n aspectRatio: \"4:3\",\n cornerRadius: 18,\n ppi: 264,\n },\n};\n\nexport const IPAD_PRO_13_LAYOUT: DeviceLayoutData = {\n meta: IPAD_PRO_13_META,\n safeArea: {\n portrait: { top: 24, bottom: 20, left: 0, right: 0 },\n landscape: { top: 24, bottom: 20, left: 0, right: 0 },\n },\n hardwareOverlays: {\n type: \"none\",\n portrait: { x: 0, y: 0, width: 0, height: 0, shape: \"rectangle\" },\n },\n statusBar: {\n height: 24,\n style: \"fullwidth\",\n hasTime: true,\n hasBattery: true,\n hasSignal: true,\n },\n homeIndicator: {\n type: \"swipe-bar\",\n height: 5,\n width: 340,\n visible: true,\n },\n hardwareButtons: {\n volumeUp: { side: \"right\", yPosition: 80 },\n volumeDown: { side: \"right\", yPosition: 150 },\n power: { side: \"right\", yPosition: 30 },\n },\n};\n\n/**\n * Placeholder SVG frame for iPad Pro 13\".\n * Replace this with the production SVG. The viewBox must match\n * the device's logical point dimensions (1032 × 1376) for the\n * adaptive scaling and screen-mask to align correctly.\n *\n * If your source SVG uses physical pixels (2064 × 2752), pass it\n * through `normalizeSVGToLogicalPoints` first.\n */\ninterface DeviceSVGProps {\n colorScheme?: \"light\" | \"dark\";\n style?: CSSProperties;\n}\n\nexport function IPadPro13SVG({ colorScheme = \"light\", style }: DeviceSVGProps) {\n const bodyFill = colorScheme === \"dark\" ? \"#1c1c1e\" : \"#e5e5e7\";\n const stroke = colorScheme === \"dark\" ? \"#3a3a3c\" : \"#c7c7cc\";\n return (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 1080 1424\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={style}\n >\n <defs>\n <mask id=\"ipad-pro-13-bezel-mask\">\n <rect x=\"0\" y=\"0\" width=\"1080\" height=\"1424\" rx=\"40\" fill=\"white\" />\n <rect x=\"24\" y=\"24\" width=\"1032\" height=\"1376\" rx=\"18\" fill=\"black\" />\n </mask>\n </defs>\n <rect x=\"0\" y=\"0\" width=\"1080\" height=\"1424\" rx=\"40\" fill={bodyFill} mask=\"url(#ipad-pro-13-bezel-mask)\" />\n <rect x=\"6\" y=\"6\" width=\"1068\" height=\"1412\" rx=\"36\" fill=\"none\" stroke={stroke} strokeWidth=\"2\" />\n <circle cx=\"540\" cy=\"14\" r=\"4\" fill=\"#2c2c2e\" />\n </svg>\n );\n}\n\nexport const IPAD_PRO_13_FRAME: DeviceFrameInfo = {\n bezelTop: 24,\n bezelBottom: 24,\n bezelLeft: 24,\n bezelRight: 24,\n totalWidth: 1080,\n totalHeight: 1424,\n screenWidth: 1032,\n screenHeight: 1376,\n screenRadius: 18,\n};\n\nexport const IPAD_PRO_13_SCREEN_RECT: SVGScreenRect = {\n x: 24,\n y: 24,\n width: 1032,\n height: 1376,\n rx: 18,\n};\n"],"mappings":";AAsFQ,SACE,KADF;AA3ED,IAAM,mBAA+B;AAAA,EAC1C,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,KAAK;AAAA,IACL,aAAa;AAAA,IACb,cAAc;AAAA,IACd,KAAK;AAAA,EACP;AACF;AAEO,IAAM,qBAAuC;AAAA,EAClD,MAAM;AAAA,EACN,UAAU;AAAA,IACR,UAAU,EAAE,KAAK,IAAI,QAAQ,IAAI,MAAM,GAAG,OAAO,EAAE;AAAA,IACnD,WAAW,EAAE,KAAK,IAAI,QAAQ,IAAI,MAAM,GAAG,OAAO,EAAE;AAAA,EACtD;AAAA,EACA,kBAAkB;AAAA,IAChB,MAAM;AAAA,IACN,UAAU,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,YAAY;AAAA,EAClE;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW;AAAA,EACb;AAAA,EACA,eAAe;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU,EAAE,MAAM,SAAS,WAAW,GAAG;AAAA,IACzC,YAAY,EAAE,MAAM,SAAS,WAAW,IAAI;AAAA,IAC5C,OAAO,EAAE,MAAM,SAAS,WAAW,GAAG;AAAA,EACxC;AACF;AAgBO,SAAS,aAAa,EAAE,cAAc,SAAS,MAAM,GAAmB;AAC7E,QAAM,WAAW,gBAAgB,SAAS,YAAY;AACtD,QAAM,SAAS,gBAAgB,SAAS,YAAY;AACpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,qBAAoB;AAAA,MACpB,OAAM;AAAA,MACN;AAAA,MAEA;AAAA,4BAAC,UACC,+BAAC,UAAK,IAAG,0BACP;AAAA,8BAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,QAAO,QAAO,QAAO,IAAG,MAAK,MAAK,SAAQ;AAAA,UAClE,oBAAC,UAAK,GAAE,MAAK,GAAE,MAAK,OAAM,QAAO,QAAO,QAAO,IAAG,MAAK,MAAK,SAAQ;AAAA,WACtE,GACF;AAAA,QACA,oBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,QAAO,QAAO,QAAO,IAAG,MAAK,MAAM,UAAU,MAAK,gCAA+B;AAAA,QACzG,oBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,QAAO,QAAO,QAAO,IAAG,MAAK,MAAK,QAAO,QAAgB,aAAY,KAAI;AAAA,QACjG,oBAAC,YAAO,IAAG,OAAM,IAAG,MAAK,GAAE,KAAI,MAAK,WAAU;AAAA;AAAA;AAAA,EAChD;AAEJ;AAEO,IAAM,oBAAqC;AAAA,EAChD,UAAU;AAAA,EACV,aAAa;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAChB;AAEO,IAAM,0BAAyC;AAAA,EACpD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,IAAI;AACN;","names":[]}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@mmtitanl/tablets",
3
+ "version": "0.1.1",
4
+ "description": "Built-in tablet SVG library and layout contracts for BielaFrame — iPad and Galaxy Tab",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.cjs",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "import": {
13
+ "types": "./dist/index.d.ts",
14
+ "default": "./dist/index.js"
15
+ },
16
+ "require": {
17
+ "types": "./dist/index.d.cts",
18
+ "default": "./dist/index.cjs"
19
+ }
20
+ },
21
+ "./ios/*": {
22
+ "import": {
23
+ "types": "./dist/ios/*.d.ts",
24
+ "default": "./dist/ios/*.js"
25
+ },
26
+ "require": {
27
+ "types": "./dist/ios/*.d.cts",
28
+ "default": "./dist/ios/*.cjs"
29
+ }
30
+ },
31
+ "./android/*": {
32
+ "import": {
33
+ "types": "./dist/android/*.d.ts",
34
+ "default": "./dist/android/*.js"
35
+ },
36
+ "require": {
37
+ "types": "./dist/android/*.d.cts",
38
+ "default": "./dist/android/*.cjs"
39
+ }
40
+ }
41
+ },
42
+ "files": ["dist"],
43
+ "sideEffects": false,
44
+ "keywords": ["tablet", "ipad", "galaxy-tab", "mockup", "svg", "react"],
45
+ "peerDependencies": {
46
+ "react": ">=18.0.0"
47
+ },
48
+ "scripts": {
49
+ "build": "tsup",
50
+ "dev": "tsup --watch",
51
+ "typecheck": "tsc --noEmit",
52
+ "clean": "rm -rf dist"
53
+ }
54
+ }