strapi-plugin-magic-mail 2.10.0 → 2.10.2

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,354 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const React = require("react");
5
- const designSystem = require("@strapi/design-system");
6
- const admin = require("@strapi/strapi/admin");
7
- const outline = require("@heroicons/react/24/outline");
8
- const styled = require("styled-components");
9
- const StyledButtons = require("./StyledButtons-DVGuFoqy.js");
10
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
11
- const styled__default = /* @__PURE__ */ _interopDefault(styled);
12
- const fadeIn = styled.keyframes`
13
- from { opacity: 0; transform: translateY(10px); }
14
- to { opacity: 1; transform: translateY(0); }
15
- `;
16
- const shimmer = styled.keyframes`
17
- 0% { background-position: -200% 0; }
18
- 100% { background-position: 200% 0; }
19
- `;
20
- const Container = styled__default.default(designSystem.Box)`
21
- ${styled.css`animation: ${fadeIn} 0.5s;`}
22
- max-width: 1400px;
23
- margin: 0 auto;
24
- `;
25
- const StickySaveBar = styled__default.default(designSystem.Box)`
26
- position: sticky;
27
- top: 0;
28
- z-index: 10;
29
- background: ${(p) => p.theme.colors.neutral0};
30
- border-bottom: 1px solid rgba(128, 128, 128, 0.2);
31
- box-shadow: 0 1px 3px rgba(0,0,0,0.1);
32
- `;
33
- const LicenseKeyBanner = styled__default.default(designSystem.Box)`
34
- background: linear-gradient(135deg, var(--colors-primary600, #0EA5E9) 0%, var(--colors-secondary500, #A855F7) 100%);
35
- border-radius: 12px;
36
- padding: 28px 32px;
37
- color: white;
38
- position: relative;
39
- overflow: hidden;
40
- box-shadow: 0 4px 20px rgba(14, 165, 233, 0.25);
41
- margin-bottom: 24px;
42
-
43
- &::after {
44
- content: '';
45
- position: absolute;
46
- top: -50%;
47
- right: -50%;
48
- width: 200%;
49
- height: 200%;
50
- background: linear-gradient(
51
- 45deg,
52
- transparent,
53
- rgba(255, 255, 255, 0.08),
54
- transparent
55
- );
56
- ${styled.css`animation: ${shimmer} 3s infinite;`}
57
- pointer-events: none;
58
- z-index: 0;
59
- }
60
-
61
- & > * {
62
- position: relative;
63
- z-index: 1;
64
- }
65
- `;
66
- const LoaderContainer = styled__default.default(designSystem.Flex)`
67
- min-height: 400px;
68
- align-items: center;
69
- justify-content: center;
70
- flex-direction: column;
71
- gap: 16px;
72
- `;
73
- const LicenseDetailsPage = () => {
74
- const { get } = admin.useFetchClient();
75
- const { toggleNotification } = admin.useNotification();
76
- const [loading, setLoading] = React.useState(true);
77
- const [licenseData, setLicenseData] = React.useState(null);
78
- const [error, setError] = React.useState(null);
79
- const fetchLicenseStatus = async () => {
80
- setLoading(true);
81
- setError(null);
82
- try {
83
- const response = await get("/magic-mail/license/status");
84
- setLicenseData(response.data);
85
- } catch (err) {
86
- console.error("[MagicMail] Error fetching license:", err);
87
- setError("Failed to load license information");
88
- } finally {
89
- setLoading(false);
90
- }
91
- };
92
- const handleCopyLicenseKey = async () => {
93
- try {
94
- await navigator.clipboard.writeText(licenseData?.data?.licenseKey || "");
95
- toggleNotification({
96
- type: "success",
97
- message: "License key copied to clipboard!"
98
- });
99
- } catch (err) {
100
- toggleNotification({
101
- type: "danger",
102
- message: "Failed to copy license key"
103
- });
104
- }
105
- };
106
- const handleDownloadLicenseKey = () => {
107
- try {
108
- const data2 = licenseData?.data || {};
109
- const licenseKey = data2.licenseKey || "";
110
- const email = data2.email || "N/A";
111
- const firstName = data2.firstName || "";
112
- const lastName = data2.lastName || "";
113
- const fullName = `${firstName} ${lastName}`.trim() || "N/A";
114
- const content = `MagicMail - Email Business Suite - License Key
115
- ===============================================
116
-
117
- License Key: ${licenseKey}
118
-
119
- License Holder Information:
120
- ----------------------------------------------
121
- Name: ${fullName}
122
- Email: ${email}
123
-
124
- License Status:
125
- ----------------------------------------------
126
- Status: ${data2.isActive ? "ACTIVE" : "INACTIVE"}
127
- Expires: ${data2.expiresAt ? new Date(data2.expiresAt).toLocaleDateString() : "Never"}
128
-
129
- Features:
130
- ----------------------------------------------
131
- Premium: ${data2.features?.premium ? "Enabled" : "Disabled"}
132
- Advanced: ${data2.features?.advanced ? "Enabled" : "Disabled"}
133
- Enterprise: ${data2.features?.enterprise ? "Enabled" : "Disabled"}
134
-
135
- ===============================================
136
- Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
137
- `;
138
- const blob = new Blob([content], { type: "text/plain" });
139
- const url = window.URL.createObjectURL(blob);
140
- const link = document.createElement("a");
141
- link.href = url;
142
- link.download = `magicmail-license-${licenseKey.substring(0, 8)}.txt`;
143
- document.body.appendChild(link);
144
- link.click();
145
- document.body.removeChild(link);
146
- window.URL.revokeObjectURL(url);
147
- toggleNotification({
148
- type: "success",
149
- message: "License key downloaded successfully!"
150
- });
151
- } catch (err) {
152
- toggleNotification({
153
- type: "danger",
154
- message: "Failed to download license key"
155
- });
156
- }
157
- };
158
- React.useEffect(() => {
159
- fetchLicenseStatus();
160
- }, []);
161
- if (loading) {
162
- return /* @__PURE__ */ jsxRuntime.jsx(Container, { children: /* @__PURE__ */ jsxRuntime.jsx(LoaderContainer, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Loader, { children: "Loading license information..." }) }) });
163
- }
164
- if (error) {
165
- return /* @__PURE__ */ jsxRuntime.jsx(Container, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 8, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Alert, { variant: "danger", title: "Error", closeLabel: "Close", children: error }) }) });
166
- }
167
- const isValid = licenseData?.valid;
168
- const isDemo = licenseData?.demo;
169
- const data = licenseData?.data || {};
170
- return /* @__PURE__ */ jsxRuntime.jsxs(Container, { children: [
171
- /* @__PURE__ */ jsxRuntime.jsx(StickySaveBar, { paddingTop: 5, paddingBottom: 5, paddingLeft: 6, paddingRight: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", alignItems: "flex-start", children: [
172
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 1, alignItems: "flex-start", children: [
173
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "alpha", fontWeight: "bold", children: "License Management" }),
174
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "epsilon", textColor: "neutral600", children: "View your MagicMail plugin license" })
175
- ] }),
176
- /* @__PURE__ */ jsxRuntime.jsx(
177
- StyledButtons.SecondaryButton,
178
- {
179
- startIcon: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { style: { width: 18, height: 18 } }),
180
- onClick: fetchLicenseStatus,
181
- children: "Refresh Status"
182
- }
183
- )
184
- ] }) }),
185
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { paddingTop: 6, paddingLeft: 6, paddingRight: 6, paddingBottom: 10, children: [
186
- isDemo ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Alert, { variant: "warning", title: "Demo Mode", closeLabel: "Close", children: "You're using the demo version. Create a license to unlock all features." }) : isValid ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Alert, { variant: "success", title: "License Active", closeLabel: "Close", children: "Your license is active and all features are unlocked." }) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Alert, { variant: "danger", title: "License Issue", closeLabel: "Close", children: "There's an issue with your license. Please check your license status." }),
187
- data.licenseKey && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { marginTop: 6, children: /* @__PURE__ */ jsxRuntime.jsx(LicenseKeyBanner, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", alignItems: "flex-start", children: [
188
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: 1 }, children: [
189
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", style: { color: "rgba(255,255,255,0.8)", marginBottom: "12px", textTransform: "uppercase", fontSize: "11px", letterSpacing: "0.5px", display: "block" }, children: "License Key" }),
190
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { style: { color: "white", fontFamily: "monospace", fontSize: "28px", fontWeight: "bold", wordBreak: "break-all", marginBottom: "16px" }, children: data.licenseKey }),
191
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
192
- /* @__PURE__ */ jsxRuntime.jsx(
193
- StyledButtons.WhiteOutlineButton,
194
- {
195
- onClick: handleCopyLicenseKey,
196
- startIcon: /* @__PURE__ */ jsxRuntime.jsx(outline.DocumentDuplicateIcon, { style: { width: 16, height: 16 } }),
197
- size: "S",
198
- children: "Copy Key"
199
- }
200
- ),
201
- /* @__PURE__ */ jsxRuntime.jsx(
202
- StyledButtons.WhiteOutlineButton,
203
- {
204
- onClick: handleDownloadLicenseKey,
205
- startIcon: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowDownTrayIcon, { style: { width: 16, height: 16 } }),
206
- size: "S",
207
- children: "Download as TXT"
208
- }
209
- )
210
- ] })
211
- ] }),
212
- /* @__PURE__ */ jsxRuntime.jsx(
213
- designSystem.Badge,
214
- {
215
- backgroundColor: data.isActive ? "success100" : "danger100",
216
- textColor: data.isActive ? "success700" : "danger700",
217
- style: { fontSize: "11px", fontWeight: "700", padding: "6px 12px", marginLeft: "16px", flexShrink: 0 },
218
- children: data.isActive ? "ACTIVE" : "INACTIVE"
219
- }
220
- )
221
- ] }) }) }),
222
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { marginTop: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Root, { defaultValue: "account", collapsible: true, children: [
223
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: "account", children: [
224
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Trigger, { icon: () => /* @__PURE__ */ jsxRuntime.jsx(outline.UserIcon, { style: { width: 16, height: 16 } }), children: "Account Information" }) }),
225
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, wrap: "wrap", children: [
226
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "200px" }, children: [
227
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Email Address" }),
228
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.email || "Not provided" })
229
- ] }),
230
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "200px" }, children: [
231
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "License Holder" }),
232
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.firstName && data.lastName ? `${data.firstName} ${data.lastName}` : "Not specified" })
233
- ] })
234
- ] }) }) })
235
- ] }),
236
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: "details", children: [
237
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Trigger, { icon: () => /* @__PURE__ */ jsxRuntime.jsx(outline.ShieldCheckIcon, { style: { width: 16, height: 16 } }), children: "License Details" }) }),
238
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, wrap: "wrap", children: [
239
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "180px" }, children: [
240
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: data.isExpired ? "Expired On" : "Expires On" }),
241
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.expiresAt ? new Date(data.expiresAt).toLocaleDateString("en-US", {
242
- year: "numeric",
243
- month: "long",
244
- day: "numeric"
245
- }) : "Never" })
246
- ] }),
247
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "180px" }, children: [
248
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Device Name" }),
249
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.deviceName || "Unknown" })
250
- ] }),
251
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "180px" }, children: [
252
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "IP Address" }),
253
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.ipAddress || "Not detected" })
254
- ] })
255
- ] }) }) })
256
- ] }),
257
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: "features", children: [
258
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Trigger, { icon: () => /* @__PURE__ */ jsxRuntime.jsx(outline.SparklesIcon, { style: { width: 16, height: 16 } }), children: "Features & Capabilities" }) }),
259
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { padding: 6, children: [
260
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, style: { marginBottom: "32px" }, children: [
261
- /* @__PURE__ */ jsxRuntime.jsxs(
262
- designSystem.Badge,
263
- {
264
- backgroundColor: data.features?.premium ? "success100" : "neutral100",
265
- textColor: data.features?.premium ? "success700" : "neutral600",
266
- style: { fontSize: "13px", fontWeight: "700", padding: "8px 16px" },
267
- children: [
268
- data.features?.premium ? "[OK]" : "[X]",
269
- " PREMIUM"
270
- ]
271
- }
272
- ),
273
- /* @__PURE__ */ jsxRuntime.jsxs(
274
- designSystem.Badge,
275
- {
276
- backgroundColor: data.features?.advanced ? "primary100" : "neutral100",
277
- textColor: data.features?.advanced ? "primary700" : "neutral600",
278
- style: { fontSize: "13px", fontWeight: "700", padding: "8px 16px" },
279
- children: [
280
- data.features?.advanced ? "[OK]" : "[X]",
281
- " ADVANCED"
282
- ]
283
- }
284
- ),
285
- /* @__PURE__ */ jsxRuntime.jsxs(
286
- designSystem.Badge,
287
- {
288
- backgroundColor: data.features?.enterprise ? "secondary100" : "neutral100",
289
- textColor: data.features?.enterprise ? "secondary700" : "neutral600",
290
- style: { fontSize: "13px", fontWeight: "700", padding: "8px 16px" },
291
- children: [
292
- data.features?.enterprise ? "[OK]" : "[X]",
293
- " ENTERPRISE"
294
- ]
295
- }
296
- )
297
- ] }),
298
- data.features?.premium && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { marginBottom: 5, padding: 5, background: "success50", hasRadius: true, children: [
299
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", fontWeight: "bold", textColor: "success700", style: { marginBottom: "16px" }, children: "Premium Features Active" }),
300
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
301
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "success700", children: "[OK] Gmail OAuth 2.0" }),
302
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "success700", children: "[OK] Microsoft 365 OAuth" }),
303
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "success700", children: "[OK] Smart Routing Rules" }),
304
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "success700", children: "[OK] Email Analytics" })
305
- ] })
306
- ] }),
307
- data.features?.advanced && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { marginBottom: 5, padding: 5, background: "primary50", hasRadius: true, children: [
308
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", fontWeight: "bold", textColor: "primary700", style: { marginBottom: "16px" }, children: "Advanced Features Active" }),
309
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
310
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "primary700", children: "[OK] DKIM Signing" }),
311
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "primary700", children: "[OK] Email Designer" }),
312
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "primary700", children: "[OK] List-Unsubscribe Headers" })
313
- ] })
314
- ] }),
315
- data.features?.enterprise && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { padding: 5, background: "secondary50", hasRadius: true, children: [
316
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", fontWeight: "bold", textColor: "secondary700", style: { marginBottom: "16px" }, children: "Enterprise Features Active" }),
317
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
318
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "secondary700", children: "[OK] Multi-tenant Management" }),
319
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "secondary700", children: "[OK] Compliance Reports" }),
320
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "secondary700", children: "[OK] Priority Support" })
321
- ] })
322
- ] })
323
- ] }) })
324
- ] }),
325
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: "status", children: [
326
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Trigger, { icon: () => /* @__PURE__ */ jsxRuntime.jsx(outline.ChartBarIcon, { style: { width: 16, height: 16 } }), children: "System Status" }) }),
327
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, wrap: "wrap", children: [
328
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "150px" }, children: [
329
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "License Status" }),
330
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.isActive ? "Active" : "Inactive" })
331
- ] }),
332
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "150px" }, children: [
333
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Connection" }),
334
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.isOnline ? "Online" : "Offline" })
335
- ] }),
336
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "150px" }, children: [
337
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Last Sync" }),
338
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.lastPingAt ? new Date(data.lastPingAt).toLocaleTimeString() : "Never" })
339
- ] }),
340
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "150px" }, children: [
341
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Device Limit" }),
342
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: [
343
- data.currentDevices || 0,
344
- " / ",
345
- data.maxDevices || 1
346
- ] })
347
- ] })
348
- ] }) }) })
349
- ] })
350
- ] }) })
351
- ] })
352
- ] });
353
- };
354
- exports.default = LicenseDetailsPage;