strapi-plugin-magic-mail 1.0.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.
- package/COPYRIGHT_NOTICE.txt +13 -0
- package/LICENSE +22 -0
- package/README.md +1420 -0
- package/admin/jsconfig.json +10 -0
- package/admin/src/components/AddAccountModal.jsx +1943 -0
- package/admin/src/components/Initializer.jsx +14 -0
- package/admin/src/components/LicenseGuard.jsx +475 -0
- package/admin/src/components/PluginIcon.jsx +5 -0
- package/admin/src/hooks/useAuthRefresh.js +44 -0
- package/admin/src/hooks/useLicense.js +158 -0
- package/admin/src/index.js +86 -0
- package/admin/src/pages/Analytics.jsx +762 -0
- package/admin/src/pages/App.jsx +111 -0
- package/admin/src/pages/EmailDesigner/EditorPage.jsx +1405 -0
- package/admin/src/pages/EmailDesigner/TemplateList.jsx +1807 -0
- package/admin/src/pages/HomePage.jsx +1233 -0
- package/admin/src/pages/LicensePage.jsx +424 -0
- package/admin/src/pages/RoutingRules.jsx +1141 -0
- package/admin/src/pages/Settings.jsx +603 -0
- package/admin/src/pluginId.js +3 -0
- package/admin/src/translations/de.json +71 -0
- package/admin/src/translations/en.json +70 -0
- package/admin/src/translations/es.json +71 -0
- package/admin/src/translations/fr.json +71 -0
- package/admin/src/translations/pt.json +71 -0
- package/admin/src/utils/fetchWithRetry.js +123 -0
- package/admin/src/utils/getTranslation.js +5 -0
- package/dist/_chunks/App-B-Gp4Vbr.js +7568 -0
- package/dist/_chunks/App-BymMjoGM.mjs +7543 -0
- package/dist/_chunks/LicensePage-Bl02myMx.mjs +342 -0
- package/dist/_chunks/LicensePage-CJXwPnEe.js +344 -0
- package/dist/_chunks/Settings-C_TmKwcz.mjs +400 -0
- package/dist/_chunks/Settings-zuFQ3pnn.js +402 -0
- package/dist/_chunks/de-CN-G9j1S.js +64 -0
- package/dist/_chunks/de-DS04rP54.mjs +64 -0
- package/dist/_chunks/en-BDc7Jk8u.js +64 -0
- package/dist/_chunks/en-BEFQJXvR.mjs +64 -0
- package/dist/_chunks/es-BpV1MIdm.js +64 -0
- package/dist/_chunks/es-DQHwzPpP.mjs +64 -0
- package/dist/_chunks/fr-BG1WfEVm.mjs +64 -0
- package/dist/_chunks/fr-vpziIpRp.js +64 -0
- package/dist/_chunks/pt-CMoGrOib.mjs +64 -0
- package/dist/_chunks/pt-ODpAhDNa.js +64 -0
- package/dist/admin/index.js +89 -0
- package/dist/admin/index.mjs +90 -0
- package/dist/server/index.js +6214 -0
- package/dist/server/index.mjs +6208 -0
- package/package.json +113 -0
- package/server/jsconfig.json +10 -0
- package/server/src/bootstrap.js +153 -0
- package/server/src/config/features.js +260 -0
- package/server/src/config/index.js +6 -0
- package/server/src/content-types/email-account/schema.json +93 -0
- package/server/src/content-types/email-event/index.js +8 -0
- package/server/src/content-types/email-event/schema.json +57 -0
- package/server/src/content-types/email-link/index.js +8 -0
- package/server/src/content-types/email-link/schema.json +49 -0
- package/server/src/content-types/email-log/index.js +8 -0
- package/server/src/content-types/email-log/schema.json +106 -0
- package/server/src/content-types/email-template/schema.json +74 -0
- package/server/src/content-types/email-template-version/schema.json +60 -0
- package/server/src/content-types/index.js +33 -0
- package/server/src/content-types/routing-rule/schema.json +59 -0
- package/server/src/controllers/accounts.js +220 -0
- package/server/src/controllers/analytics.js +347 -0
- package/server/src/controllers/controller.js +26 -0
- package/server/src/controllers/email-designer.js +474 -0
- package/server/src/controllers/index.js +21 -0
- package/server/src/controllers/license.js +267 -0
- package/server/src/controllers/oauth.js +474 -0
- package/server/src/controllers/routing-rules.js +122 -0
- package/server/src/controllers/test.js +383 -0
- package/server/src/destroy.js +23 -0
- package/server/src/index.js +25 -0
- package/server/src/middlewares/index.js +3 -0
- package/server/src/policies/index.js +3 -0
- package/server/src/register.js +5 -0
- package/server/src/routes/admin.js +469 -0
- package/server/src/routes/content-api.js +37 -0
- package/server/src/routes/index.js +9 -0
- package/server/src/services/account-manager.js +277 -0
- package/server/src/services/analytics.js +496 -0
- package/server/src/services/email-designer.js +870 -0
- package/server/src/services/email-router.js +1420 -0
- package/server/src/services/index.js +17 -0
- package/server/src/services/license-guard.js +418 -0
- package/server/src/services/oauth.js +515 -0
- package/server/src/services/service.js +7 -0
- package/server/src/utils/encryption.js +81 -0
- package/strapi-admin.js +4 -0
- package/strapi-server.js +4 -0
|
@@ -0,0 +1,402 @@
|
|
|
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 _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
10
|
+
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
11
|
+
const theme = {
|
|
12
|
+
colors: {
|
|
13
|
+
neutral: { 200: "#E5E7EB" }
|
|
14
|
+
},
|
|
15
|
+
shadows: { sm: "0 1px 3px rgba(0,0,0,0.1)" },
|
|
16
|
+
borderRadius: { lg: "12px" }
|
|
17
|
+
};
|
|
18
|
+
const fadeIn = styled.keyframes`
|
|
19
|
+
from { opacity: 0; transform: translateY(10px); }
|
|
20
|
+
to { opacity: 1; transform: translateY(0); }
|
|
21
|
+
`;
|
|
22
|
+
const shimmer = styled.keyframes`
|
|
23
|
+
0% { background-position: -200% 0; }
|
|
24
|
+
100% { background-position: 200% 0; }
|
|
25
|
+
`;
|
|
26
|
+
const Container = styled__default.default(designSystem.Box)`
|
|
27
|
+
${styled.css`animation: ${fadeIn} 0.5s;`}
|
|
28
|
+
max-width: 1400px;
|
|
29
|
+
margin: 0 auto;
|
|
30
|
+
`;
|
|
31
|
+
const StickySaveBar = styled__default.default(designSystem.Box)`
|
|
32
|
+
position: sticky;
|
|
33
|
+
top: 0;
|
|
34
|
+
z-index: 10;
|
|
35
|
+
background: white;
|
|
36
|
+
border-bottom: 1px solid ${theme.colors.neutral[200]};
|
|
37
|
+
box-shadow: ${theme.shadows.sm};
|
|
38
|
+
`;
|
|
39
|
+
const LicenseKeyBanner = styled__default.default(designSystem.Box)`
|
|
40
|
+
background: linear-gradient(135deg, #0EA5E9 0%, #A855F7 100%);
|
|
41
|
+
border-radius: ${theme.borderRadius.lg};
|
|
42
|
+
padding: 28px 32px;
|
|
43
|
+
color: white;
|
|
44
|
+
position: relative;
|
|
45
|
+
overflow: hidden;
|
|
46
|
+
box-shadow: 0 4px 20px rgba(14, 165, 233, 0.25);
|
|
47
|
+
margin-bottom: 24px;
|
|
48
|
+
|
|
49
|
+
&::after {
|
|
50
|
+
content: '';
|
|
51
|
+
position: absolute;
|
|
52
|
+
top: -50%;
|
|
53
|
+
right: -50%;
|
|
54
|
+
width: 200%;
|
|
55
|
+
height: 200%;
|
|
56
|
+
background: linear-gradient(
|
|
57
|
+
45deg,
|
|
58
|
+
transparent,
|
|
59
|
+
rgba(255, 255, 255, 0.08),
|
|
60
|
+
transparent
|
|
61
|
+
);
|
|
62
|
+
${styled.css`animation: ${shimmer} 3s infinite;`}
|
|
63
|
+
pointer-events: none;
|
|
64
|
+
z-index: 0;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
& > * {
|
|
68
|
+
position: relative;
|
|
69
|
+
z-index: 1;
|
|
70
|
+
}
|
|
71
|
+
`;
|
|
72
|
+
const LoaderContainer = styled__default.default(designSystem.Flex)`
|
|
73
|
+
min-height: 400px;
|
|
74
|
+
align-items: center;
|
|
75
|
+
justify-content: center;
|
|
76
|
+
flex-direction: column;
|
|
77
|
+
gap: 16px;
|
|
78
|
+
`;
|
|
79
|
+
const LicensePage = () => {
|
|
80
|
+
const { get } = admin.useFetchClient();
|
|
81
|
+
const { toggleNotification } = admin.useNotification();
|
|
82
|
+
const [loading, setLoading] = React.useState(true);
|
|
83
|
+
const [licenseData, setLicenseData] = React.useState(null);
|
|
84
|
+
const [error, setError] = React.useState(null);
|
|
85
|
+
const fetchLicenseStatus = async () => {
|
|
86
|
+
setLoading(true);
|
|
87
|
+
setError(null);
|
|
88
|
+
try {
|
|
89
|
+
const response = await get("/magic-mail/license/status");
|
|
90
|
+
setLicenseData(response.data);
|
|
91
|
+
} catch (err) {
|
|
92
|
+
console.error("[MagicMail] Error fetching license:", err);
|
|
93
|
+
setError("Failed to load license information");
|
|
94
|
+
} finally {
|
|
95
|
+
setLoading(false);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
const handleCopyLicenseKey = async () => {
|
|
99
|
+
try {
|
|
100
|
+
await navigator.clipboard.writeText(licenseData?.data?.licenseKey || "");
|
|
101
|
+
toggleNotification({
|
|
102
|
+
type: "success",
|
|
103
|
+
message: "License key copied to clipboard!"
|
|
104
|
+
});
|
|
105
|
+
} catch (err) {
|
|
106
|
+
toggleNotification({
|
|
107
|
+
type: "danger",
|
|
108
|
+
message: "Failed to copy license key"
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
const handleDownloadLicenseKey = () => {
|
|
113
|
+
try {
|
|
114
|
+
const data2 = licenseData?.data || {};
|
|
115
|
+
const licenseKey = data2.licenseKey || "";
|
|
116
|
+
const email = data2.email || "N/A";
|
|
117
|
+
const firstName = data2.firstName || "";
|
|
118
|
+
const lastName = data2.lastName || "";
|
|
119
|
+
const fullName = `${firstName} ${lastName}`.trim() || "N/A";
|
|
120
|
+
const content = `MagicMail - Email Business Suite - License Key
|
|
121
|
+
═══════════════════════════════════════
|
|
122
|
+
|
|
123
|
+
License Key: ${licenseKey}
|
|
124
|
+
|
|
125
|
+
License Holder Information:
|
|
126
|
+
──────────────────────────────────────
|
|
127
|
+
Name: ${fullName}
|
|
128
|
+
Email: ${email}
|
|
129
|
+
|
|
130
|
+
License Status:
|
|
131
|
+
──────────────────────────────────────
|
|
132
|
+
Status: ${data2.isActive ? "ACTIVE" : "INACTIVE"}
|
|
133
|
+
Expires: ${data2.expiresAt ? new Date(data2.expiresAt).toLocaleDateString() : "Never"}
|
|
134
|
+
|
|
135
|
+
Features:
|
|
136
|
+
──────────────────────────────────────
|
|
137
|
+
Premium: ${data2.features?.premium ? "Enabled" : "Disabled"}
|
|
138
|
+
Advanced: ${data2.features?.advanced ? "Enabled" : "Disabled"}
|
|
139
|
+
Enterprise: ${data2.features?.enterprise ? "Enabled" : "Disabled"}
|
|
140
|
+
|
|
141
|
+
═══════════════════════════════════════
|
|
142
|
+
Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
|
|
143
|
+
`;
|
|
144
|
+
const blob = new Blob([content], { type: "text/plain" });
|
|
145
|
+
const url = window.URL.createObjectURL(blob);
|
|
146
|
+
const link = document.createElement("a");
|
|
147
|
+
link.href = url;
|
|
148
|
+
link.download = `magicmail-license-${licenseKey.substring(0, 8)}.txt`;
|
|
149
|
+
document.body.appendChild(link);
|
|
150
|
+
link.click();
|
|
151
|
+
document.body.removeChild(link);
|
|
152
|
+
window.URL.revokeObjectURL(url);
|
|
153
|
+
toggleNotification({
|
|
154
|
+
type: "success",
|
|
155
|
+
message: "License key downloaded successfully!"
|
|
156
|
+
});
|
|
157
|
+
} catch (err) {
|
|
158
|
+
toggleNotification({
|
|
159
|
+
type: "danger",
|
|
160
|
+
message: "Failed to download license key"
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
React.useEffect(() => {
|
|
165
|
+
fetchLicenseStatus();
|
|
166
|
+
}, []);
|
|
167
|
+
if (loading) {
|
|
168
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Container, { children: /* @__PURE__ */ jsxRuntime.jsx(LoaderContainer, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Loader, { children: "Loading license information..." }) }) });
|
|
169
|
+
}
|
|
170
|
+
if (error) {
|
|
171
|
+
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 }) }) });
|
|
172
|
+
}
|
|
173
|
+
const isValid = licenseData?.valid;
|
|
174
|
+
const isDemo = licenseData?.demo;
|
|
175
|
+
const data = licenseData?.data || {};
|
|
176
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Container, { children: [
|
|
177
|
+
/* @__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: [
|
|
178
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 1, alignItems: "flex-start", children: [
|
|
179
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "alpha", fontWeight: "bold", children: "License Management" }),
|
|
180
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "epsilon", textColor: "neutral600", children: "View your MagicMail plugin license" })
|
|
181
|
+
] }),
|
|
182
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
183
|
+
designSystem.Button,
|
|
184
|
+
{
|
|
185
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { style: { width: 20, height: 20 } }),
|
|
186
|
+
onClick: fetchLicenseStatus,
|
|
187
|
+
size: "L",
|
|
188
|
+
style: {
|
|
189
|
+
background: "linear-gradient(135deg, #0EA5E9 0%, #A855F7 100%)",
|
|
190
|
+
color: "white",
|
|
191
|
+
fontWeight: "600",
|
|
192
|
+
border: "none"
|
|
193
|
+
},
|
|
194
|
+
children: "Refresh Status"
|
|
195
|
+
}
|
|
196
|
+
)
|
|
197
|
+
] }) }),
|
|
198
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { paddingTop: 6, paddingLeft: 6, paddingRight: 6, paddingBottom: 10, children: [
|
|
199
|
+
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." }),
|
|
200
|
+
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: [
|
|
201
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: 1 }, children: [
|
|
202
|
+
/* @__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" }),
|
|
203
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { style: { color: "white", fontFamily: "monospace", fontSize: "28px", fontWeight: "bold", wordBreak: "break-all", marginBottom: "16px" }, children: data.licenseKey }),
|
|
204
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
205
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
206
|
+
designSystem.Button,
|
|
207
|
+
{
|
|
208
|
+
onClick: handleCopyLicenseKey,
|
|
209
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(outline.DocumentDuplicateIcon, { style: { width: 16, height: 16 } }),
|
|
210
|
+
size: "S",
|
|
211
|
+
variant: "secondary",
|
|
212
|
+
style: {
|
|
213
|
+
backgroundColor: "rgba(255,255,255,0.2)",
|
|
214
|
+
color: "white",
|
|
215
|
+
border: "1px solid rgba(255,255,255,0.3)",
|
|
216
|
+
fontWeight: "600"
|
|
217
|
+
},
|
|
218
|
+
children: "Copy Key"
|
|
219
|
+
}
|
|
220
|
+
),
|
|
221
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
222
|
+
designSystem.Button,
|
|
223
|
+
{
|
|
224
|
+
onClick: handleDownloadLicenseKey,
|
|
225
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowDownTrayIcon, { style: { width: 16, height: 16 } }),
|
|
226
|
+
size: "S",
|
|
227
|
+
variant: "secondary",
|
|
228
|
+
style: {
|
|
229
|
+
backgroundColor: "rgba(255,255,255,0.2)",
|
|
230
|
+
color: "white",
|
|
231
|
+
border: "1px solid rgba(255,255,255,0.3)",
|
|
232
|
+
fontWeight: "600"
|
|
233
|
+
},
|
|
234
|
+
children: "Download as TXT"
|
|
235
|
+
}
|
|
236
|
+
)
|
|
237
|
+
] })
|
|
238
|
+
] }),
|
|
239
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
240
|
+
designSystem.Badge,
|
|
241
|
+
{
|
|
242
|
+
backgroundColor: data.isActive ? "success100" : "danger100",
|
|
243
|
+
textColor: data.isActive ? "success700" : "danger700",
|
|
244
|
+
style: { fontSize: "11px", fontWeight: "700", padding: "6px 12px", marginLeft: "16px", flexShrink: 0 },
|
|
245
|
+
children: data.isActive ? "ACTIVE" : "INACTIVE"
|
|
246
|
+
}
|
|
247
|
+
)
|
|
248
|
+
] }) }) }),
|
|
249
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { marginTop: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Root, { defaultValue: "account", collapsible: true, children: [
|
|
250
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: "account", children: [
|
|
251
|
+
/* @__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" }) }),
|
|
252
|
+
/* @__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: [
|
|
253
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "200px" }, children: [
|
|
254
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Email Address" }),
|
|
255
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.email || "Not provided" })
|
|
256
|
+
] }),
|
|
257
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "200px" }, children: [
|
|
258
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "License Holder" }),
|
|
259
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.firstName && data.lastName ? `${data.firstName} ${data.lastName}` : "Not specified" })
|
|
260
|
+
] })
|
|
261
|
+
] }) }) })
|
|
262
|
+
] }),
|
|
263
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: "details", children: [
|
|
264
|
+
/* @__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" }) }),
|
|
265
|
+
/* @__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: [
|
|
266
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "180px" }, children: [
|
|
267
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: data.isExpired ? "Expired On" : "Expires On" }),
|
|
268
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.expiresAt ? new Date(data.expiresAt).toLocaleDateString("en-US", {
|
|
269
|
+
year: "numeric",
|
|
270
|
+
month: "long",
|
|
271
|
+
day: "numeric"
|
|
272
|
+
}) : "Never" })
|
|
273
|
+
] }),
|
|
274
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "180px" }, children: [
|
|
275
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Device Name" }),
|
|
276
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.deviceName || "Unknown" })
|
|
277
|
+
] }),
|
|
278
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "180px" }, children: [
|
|
279
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "IP Address" }),
|
|
280
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.ipAddress || "Not detected" })
|
|
281
|
+
] })
|
|
282
|
+
] }) }) })
|
|
283
|
+
] }),
|
|
284
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: "features", children: [
|
|
285
|
+
/* @__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" }) }),
|
|
286
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { padding: 6, children: [
|
|
287
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, style: { marginBottom: "32px" }, children: [
|
|
288
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
289
|
+
designSystem.Badge,
|
|
290
|
+
{
|
|
291
|
+
backgroundColor: data.features?.premium ? "success100" : "neutral100",
|
|
292
|
+
textColor: data.features?.premium ? "success700" : "neutral600",
|
|
293
|
+
style: {
|
|
294
|
+
fontSize: "13px",
|
|
295
|
+
fontWeight: "700",
|
|
296
|
+
padding: "8px 16px",
|
|
297
|
+
border: data.features?.premium ? "2px solid #dcfce7" : "2px solid #e5e7eb"
|
|
298
|
+
},
|
|
299
|
+
children: [
|
|
300
|
+
data.features?.premium ? "✓" : "✗",
|
|
301
|
+
" PREMIUM FEATURES"
|
|
302
|
+
]
|
|
303
|
+
}
|
|
304
|
+
),
|
|
305
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
306
|
+
designSystem.Badge,
|
|
307
|
+
{
|
|
308
|
+
backgroundColor: data.features?.advanced ? "primary100" : "neutral100",
|
|
309
|
+
textColor: data.features?.advanced ? "primary700" : "neutral600",
|
|
310
|
+
style: {
|
|
311
|
+
fontSize: "13px",
|
|
312
|
+
fontWeight: "700",
|
|
313
|
+
padding: "8px 16px",
|
|
314
|
+
border: data.features?.advanced ? "2px solid #bae6fd" : "2px solid #e5e7eb"
|
|
315
|
+
},
|
|
316
|
+
children: [
|
|
317
|
+
data.features?.advanced ? "✓" : "✗",
|
|
318
|
+
" ADVANCED FEATURES"
|
|
319
|
+
]
|
|
320
|
+
}
|
|
321
|
+
),
|
|
322
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
323
|
+
designSystem.Badge,
|
|
324
|
+
{
|
|
325
|
+
backgroundColor: data.features?.enterprise ? "secondary100" : "neutral100",
|
|
326
|
+
textColor: data.features?.enterprise ? "secondary700" : "neutral600",
|
|
327
|
+
style: {
|
|
328
|
+
fontSize: "13px",
|
|
329
|
+
fontWeight: "700",
|
|
330
|
+
padding: "8px 16px",
|
|
331
|
+
border: data.features?.enterprise ? "2px solid #ddd6fe" : "2px solid #e5e7eb"
|
|
332
|
+
},
|
|
333
|
+
children: [
|
|
334
|
+
data.features?.enterprise ? "✓" : "✗",
|
|
335
|
+
" ENTERPRISE FEATURES"
|
|
336
|
+
]
|
|
337
|
+
}
|
|
338
|
+
)
|
|
339
|
+
] }),
|
|
340
|
+
data.features?.premium && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { marginBottom: 5, padding: 5, background: "success50", hasRadius: true, style: { border: "2px solid #dcfce7" }, children: [
|
|
341
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", fontWeight: "bold", textColor: "success700", style: { marginBottom: "16px", display: "flex", alignItems: "center", gap: "8px" }, children: "✨ Premium Features Active" }),
|
|
342
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
|
|
343
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Gmail OAuth 2.0 (Unlimited accounts)" }),
|
|
344
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Microsoft 365 OAuth Integration" }),
|
|
345
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Yahoo Mail OAuth" }),
|
|
346
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ SendGrid & Mailgun Integration" }),
|
|
347
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Smart Routing Rules (Unlimited)" }),
|
|
348
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Email Analytics Dashboard" })
|
|
349
|
+
] })
|
|
350
|
+
] }),
|
|
351
|
+
data.features?.advanced && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { marginBottom: 5, padding: 5, background: "primary50", hasRadius: true, style: { border: "2px solid #bae6fd" }, children: [
|
|
352
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", fontWeight: "bold", textColor: "primary700", style: { marginBottom: "16px", display: "flex", alignItems: "center", gap: "8px" }, children: "🚀 Advanced Features Active" }),
|
|
353
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
|
|
354
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "primary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ DKIM Signing for SMTP" }),
|
|
355
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "primary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Email Designer Integration" }),
|
|
356
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "primary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Priority Email Headers" }),
|
|
357
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "primary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ List-Unsubscribe Headers (GDPR)" }),
|
|
358
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "primary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Enhanced Security Validation" })
|
|
359
|
+
] })
|
|
360
|
+
] }),
|
|
361
|
+
data.features?.enterprise && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { padding: 5, background: "secondary50", hasRadius: true, style: { border: "2px solid #ddd6fe" }, children: [
|
|
362
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", fontWeight: "bold", textColor: "secondary700", style: { marginBottom: "16px", display: "flex", alignItems: "center", gap: "8px" }, children: "🏢 Enterprise Features Active" }),
|
|
363
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
|
|
364
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "secondary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Multi-tenant Email Management" }),
|
|
365
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "secondary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Compliance Reports (GDPR, CAN-SPAM)" }),
|
|
366
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "secondary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Custom Routing Rules Engine" }),
|
|
367
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "secondary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Advanced Rate Limiting" }),
|
|
368
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "secondary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Priority Support" })
|
|
369
|
+
] })
|
|
370
|
+
] })
|
|
371
|
+
] }) })
|
|
372
|
+
] }),
|
|
373
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: "status", children: [
|
|
374
|
+
/* @__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" }) }),
|
|
375
|
+
/* @__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: [
|
|
376
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "150px" }, children: [
|
|
377
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "License Status" }),
|
|
378
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.isActive ? "Active" : "Inactive" })
|
|
379
|
+
] }),
|
|
380
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "150px" }, children: [
|
|
381
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Connection" }),
|
|
382
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.isOnline ? "Online" : "Offline" })
|
|
383
|
+
] }),
|
|
384
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "150px" }, children: [
|
|
385
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Last Sync" }),
|
|
386
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: data.lastPingAt ? new Date(data.lastPingAt).toLocaleTimeString() : "Never" })
|
|
387
|
+
] }),
|
|
388
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1", minWidth: "150px" }, children: [
|
|
389
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Device Limit" }),
|
|
390
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "omega", fontWeight: "semiBold", children: [
|
|
391
|
+
data.currentDevices || 0,
|
|
392
|
+
" / ",
|
|
393
|
+
data.maxDevices || 1
|
|
394
|
+
] })
|
|
395
|
+
] })
|
|
396
|
+
] }) }) })
|
|
397
|
+
] })
|
|
398
|
+
] }) })
|
|
399
|
+
] })
|
|
400
|
+
] });
|
|
401
|
+
};
|
|
402
|
+
exports.default = LicensePage;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const de = {
|
|
4
|
+
"plugin.name": "MagicMail",
|
|
5
|
+
"plugin.description": "Email Business Suite für Strapi v5",
|
|
6
|
+
"tabs.accounts": "Email-Konten",
|
|
7
|
+
"tabs.routing": "Routing-Regeln",
|
|
8
|
+
"tabs.license": "Lizenz",
|
|
9
|
+
"accounts.title": "Email-Konten",
|
|
10
|
+
"accounts.subtitle": "Verwalte mehrere Email-Konten mit Smart Routing",
|
|
11
|
+
"accounts.add": "Konto hinzufügen",
|
|
12
|
+
"accounts.edit": "Konto bearbeiten",
|
|
13
|
+
"accounts.delete": "Konto löschen",
|
|
14
|
+
"accounts.test": "Testen",
|
|
15
|
+
"accounts.empty": "Keine Email-Konten vorhanden",
|
|
16
|
+
"accounts.emptyDescription": "Füge dein erstes Email-Konto hinzu um zu starten",
|
|
17
|
+
"stats.emailsToday": "Heute versendet",
|
|
18
|
+
"stats.totalSent": "Gesamt versendet",
|
|
19
|
+
"stats.activeAccounts": "Aktive Konten",
|
|
20
|
+
"providers.smtp": "SMTP",
|
|
21
|
+
"providers.gmail": "Gmail OAuth",
|
|
22
|
+
"providers.microsoft": "Microsoft OAuth",
|
|
23
|
+
"providers.yahoo": "Yahoo Mail OAuth",
|
|
24
|
+
"providers.sendgrid": "SendGrid",
|
|
25
|
+
"providers.mailgun": "Mailgun",
|
|
26
|
+
"routing.title": "Routing-Regeln",
|
|
27
|
+
"routing.subtitle": "Definiere intelligente Routing-Regeln für Email-Versand",
|
|
28
|
+
"routing.add": "Regel erstellen",
|
|
29
|
+
"routing.edit": "Regel bearbeiten",
|
|
30
|
+
"routing.delete": "Regel löschen",
|
|
31
|
+
"routing.empty": "Keine Routing-Regeln vorhanden",
|
|
32
|
+
"routing.emptyDescription": "Erstelle deine erste Routing-Regel",
|
|
33
|
+
"license.title": "Lizenzverwaltung",
|
|
34
|
+
"license.subtitle": "Verwalte deine MagicMail Lizenz",
|
|
35
|
+
"license.active": "Lizenz aktiv",
|
|
36
|
+
"license.inactive": "Keine aktive Lizenz",
|
|
37
|
+
"license.demo": "Demo-Modus",
|
|
38
|
+
"license.generate": "Kostenlose Lizenz generieren",
|
|
39
|
+
"license.activate": "Lizenz aktivieren",
|
|
40
|
+
"license.key": "Lizenzschlüssel",
|
|
41
|
+
"license.email": "E-Mail-Adresse",
|
|
42
|
+
"license.copyKey": "Schlüssel kopieren",
|
|
43
|
+
"license.download": "Als TXT herunterladen",
|
|
44
|
+
"license.refresh": "Status aktualisieren",
|
|
45
|
+
"features.premium": "Premium Features",
|
|
46
|
+
"features.advanced": "Erweiterte Features",
|
|
47
|
+
"features.enterprise": "Enterprise Features",
|
|
48
|
+
"notifications.accountCreated": "Email-Konto erfolgreich erstellt",
|
|
49
|
+
"notifications.accountUpdated": "Email-Konto erfolgreich aktualisiert",
|
|
50
|
+
"notifications.accountDeleted": "Email-Konto erfolgreich gelöscht",
|
|
51
|
+
"notifications.testSuccess": "Test-Email erfolgreich versendet",
|
|
52
|
+
"notifications.testFailed": "Test-Email fehlgeschlagen",
|
|
53
|
+
"notifications.ruleCreated": "Routing-Regel erfolgreich erstellt",
|
|
54
|
+
"notifications.ruleUpdated": "Routing-Regel erfolgreich aktualisiert",
|
|
55
|
+
"notifications.ruleDeleted": "Routing-Regel erfolgreich gelöscht",
|
|
56
|
+
"notifications.licenseActivated": "Lizenz erfolgreich aktiviert",
|
|
57
|
+
"notifications.licenseCopied": "Lizenzschlüssel kopiert",
|
|
58
|
+
"notifications.error": "Ein Fehler ist aufgetreten",
|
|
59
|
+
"errors.noAccounts": "Keine Email-Konten verfügbar",
|
|
60
|
+
"errors.providerNotAllowed": "Dieser Provider erfordert eine höhere Lizenz",
|
|
61
|
+
"errors.accountLimitReached": "Konto-Limit erreicht. Upgrade erforderlich",
|
|
62
|
+
"errors.ruleLimitReached": "Regel-Limit erreicht. Upgrade erforderlich"
|
|
63
|
+
};
|
|
64
|
+
exports.default = de;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
const de = {
|
|
2
|
+
"plugin.name": "MagicMail",
|
|
3
|
+
"plugin.description": "Email Business Suite für Strapi v5",
|
|
4
|
+
"tabs.accounts": "Email-Konten",
|
|
5
|
+
"tabs.routing": "Routing-Regeln",
|
|
6
|
+
"tabs.license": "Lizenz",
|
|
7
|
+
"accounts.title": "Email-Konten",
|
|
8
|
+
"accounts.subtitle": "Verwalte mehrere Email-Konten mit Smart Routing",
|
|
9
|
+
"accounts.add": "Konto hinzufügen",
|
|
10
|
+
"accounts.edit": "Konto bearbeiten",
|
|
11
|
+
"accounts.delete": "Konto löschen",
|
|
12
|
+
"accounts.test": "Testen",
|
|
13
|
+
"accounts.empty": "Keine Email-Konten vorhanden",
|
|
14
|
+
"accounts.emptyDescription": "Füge dein erstes Email-Konto hinzu um zu starten",
|
|
15
|
+
"stats.emailsToday": "Heute versendet",
|
|
16
|
+
"stats.totalSent": "Gesamt versendet",
|
|
17
|
+
"stats.activeAccounts": "Aktive Konten",
|
|
18
|
+
"providers.smtp": "SMTP",
|
|
19
|
+
"providers.gmail": "Gmail OAuth",
|
|
20
|
+
"providers.microsoft": "Microsoft OAuth",
|
|
21
|
+
"providers.yahoo": "Yahoo Mail OAuth",
|
|
22
|
+
"providers.sendgrid": "SendGrid",
|
|
23
|
+
"providers.mailgun": "Mailgun",
|
|
24
|
+
"routing.title": "Routing-Regeln",
|
|
25
|
+
"routing.subtitle": "Definiere intelligente Routing-Regeln für Email-Versand",
|
|
26
|
+
"routing.add": "Regel erstellen",
|
|
27
|
+
"routing.edit": "Regel bearbeiten",
|
|
28
|
+
"routing.delete": "Regel löschen",
|
|
29
|
+
"routing.empty": "Keine Routing-Regeln vorhanden",
|
|
30
|
+
"routing.emptyDescription": "Erstelle deine erste Routing-Regel",
|
|
31
|
+
"license.title": "Lizenzverwaltung",
|
|
32
|
+
"license.subtitle": "Verwalte deine MagicMail Lizenz",
|
|
33
|
+
"license.active": "Lizenz aktiv",
|
|
34
|
+
"license.inactive": "Keine aktive Lizenz",
|
|
35
|
+
"license.demo": "Demo-Modus",
|
|
36
|
+
"license.generate": "Kostenlose Lizenz generieren",
|
|
37
|
+
"license.activate": "Lizenz aktivieren",
|
|
38
|
+
"license.key": "Lizenzschlüssel",
|
|
39
|
+
"license.email": "E-Mail-Adresse",
|
|
40
|
+
"license.copyKey": "Schlüssel kopieren",
|
|
41
|
+
"license.download": "Als TXT herunterladen",
|
|
42
|
+
"license.refresh": "Status aktualisieren",
|
|
43
|
+
"features.premium": "Premium Features",
|
|
44
|
+
"features.advanced": "Erweiterte Features",
|
|
45
|
+
"features.enterprise": "Enterprise Features",
|
|
46
|
+
"notifications.accountCreated": "Email-Konto erfolgreich erstellt",
|
|
47
|
+
"notifications.accountUpdated": "Email-Konto erfolgreich aktualisiert",
|
|
48
|
+
"notifications.accountDeleted": "Email-Konto erfolgreich gelöscht",
|
|
49
|
+
"notifications.testSuccess": "Test-Email erfolgreich versendet",
|
|
50
|
+
"notifications.testFailed": "Test-Email fehlgeschlagen",
|
|
51
|
+
"notifications.ruleCreated": "Routing-Regel erfolgreich erstellt",
|
|
52
|
+
"notifications.ruleUpdated": "Routing-Regel erfolgreich aktualisiert",
|
|
53
|
+
"notifications.ruleDeleted": "Routing-Regel erfolgreich gelöscht",
|
|
54
|
+
"notifications.licenseActivated": "Lizenz erfolgreich aktiviert",
|
|
55
|
+
"notifications.licenseCopied": "Lizenzschlüssel kopiert",
|
|
56
|
+
"notifications.error": "Ein Fehler ist aufgetreten",
|
|
57
|
+
"errors.noAccounts": "Keine Email-Konten verfügbar",
|
|
58
|
+
"errors.providerNotAllowed": "Dieser Provider erfordert eine höhere Lizenz",
|
|
59
|
+
"errors.accountLimitReached": "Konto-Limit erreicht. Upgrade erforderlich",
|
|
60
|
+
"errors.ruleLimitReached": "Regel-Limit erreicht. Upgrade erforderlich"
|
|
61
|
+
};
|
|
62
|
+
export {
|
|
63
|
+
de as default
|
|
64
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const en = {
|
|
4
|
+
"plugin.name": "MagicMail",
|
|
5
|
+
"plugin.description": "Email Business Suite for Strapi v5",
|
|
6
|
+
"tabs.accounts": "Email Accounts",
|
|
7
|
+
"tabs.routing": "Routing Rules",
|
|
8
|
+
"tabs.license": "License",
|
|
9
|
+
"accounts.title": "Email Accounts",
|
|
10
|
+
"accounts.subtitle": "Manage multiple email accounts with Smart Routing",
|
|
11
|
+
"accounts.add": "Add Account",
|
|
12
|
+
"accounts.edit": "Edit Account",
|
|
13
|
+
"accounts.delete": "Delete Account",
|
|
14
|
+
"accounts.test": "Test",
|
|
15
|
+
"accounts.empty": "No email accounts yet",
|
|
16
|
+
"accounts.emptyDescription": "Add your first email account to get started",
|
|
17
|
+
"stats.emailsToday": "Sent Today",
|
|
18
|
+
"stats.totalSent": "Total Sent",
|
|
19
|
+
"stats.activeAccounts": "Active Accounts",
|
|
20
|
+
"providers.smtp": "SMTP",
|
|
21
|
+
"providers.gmail": "Gmail OAuth",
|
|
22
|
+
"providers.microsoft": "Microsoft OAuth",
|
|
23
|
+
"providers.yahoo": "Yahoo Mail OAuth",
|
|
24
|
+
"providers.sendgrid": "SendGrid",
|
|
25
|
+
"providers.mailgun": "Mailgun",
|
|
26
|
+
"routing.title": "Routing Rules",
|
|
27
|
+
"routing.subtitle": "Define intelligent routing rules for email sending",
|
|
28
|
+
"routing.add": "Create Rule",
|
|
29
|
+
"routing.edit": "Edit Rule",
|
|
30
|
+
"routing.delete": "Delete Rule",
|
|
31
|
+
"routing.empty": "No routing rules yet",
|
|
32
|
+
"routing.emptyDescription": "Create your first routing rule",
|
|
33
|
+
"license.title": "License Management",
|
|
34
|
+
"license.subtitle": "Manage your MagicMail license",
|
|
35
|
+
"license.active": "License Active",
|
|
36
|
+
"license.inactive": "No Active License",
|
|
37
|
+
"license.demo": "Demo Mode",
|
|
38
|
+
"license.generate": "Generate Free License",
|
|
39
|
+
"license.activate": "Activate License",
|
|
40
|
+
"license.key": "License Key",
|
|
41
|
+
"license.email": "Email Address",
|
|
42
|
+
"license.copyKey": "Copy Key",
|
|
43
|
+
"license.download": "Download as TXT",
|
|
44
|
+
"license.refresh": "Refresh Status",
|
|
45
|
+
"features.premium": "Premium Features",
|
|
46
|
+
"features.advanced": "Advanced Features",
|
|
47
|
+
"features.enterprise": "Enterprise Features",
|
|
48
|
+
"notifications.accountCreated": "Email account created successfully",
|
|
49
|
+
"notifications.accountUpdated": "Email account updated successfully",
|
|
50
|
+
"notifications.accountDeleted": "Email account deleted successfully",
|
|
51
|
+
"notifications.testSuccess": "Test email sent successfully",
|
|
52
|
+
"notifications.testFailed": "Test email failed",
|
|
53
|
+
"notifications.ruleCreated": "Routing rule created successfully",
|
|
54
|
+
"notifications.ruleUpdated": "Routing rule updated successfully",
|
|
55
|
+
"notifications.ruleDeleted": "Routing rule deleted successfully",
|
|
56
|
+
"notifications.licenseActivated": "License activated successfully",
|
|
57
|
+
"notifications.licenseCopied": "License key copied",
|
|
58
|
+
"notifications.error": "An error occurred",
|
|
59
|
+
"errors.noAccounts": "No email accounts available",
|
|
60
|
+
"errors.providerNotAllowed": "This provider requires a higher license",
|
|
61
|
+
"errors.accountLimitReached": "Account limit reached. Upgrade required",
|
|
62
|
+
"errors.ruleLimitReached": "Rule limit reached. Upgrade required"
|
|
63
|
+
};
|
|
64
|
+
exports.default = en;
|