strapi-plugin-magic-mail 2.3.10 → 2.4.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.
@@ -1,12 +1,10 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { useState, useEffect } from "react";
3
- import { Loader, Box, Alert, Flex, Typography, Button, Badge, Accordion } from "@strapi/design-system";
3
+ import { Loader, Box, Alert, Flex, Typography, Badge, Accordion } from "@strapi/design-system";
4
4
  import { useFetchClient, useNotification } from "@strapi/strapi/admin";
5
5
  import { ArrowPathIcon, DocumentDuplicateIcon, ArrowDownTrayIcon, UserIcon, ShieldCheckIcon, SparklesIcon, ChartBarIcon } from "@heroicons/react/24/outline";
6
6
  import styled, { css, keyframes } from "styled-components";
7
- const theme = {
8
- borderRadius: { lg: "12px" }
9
- };
7
+ import { S as SecondaryButton, W as WhiteOutlineButton } from "./StyledButtons-nt2C730e.mjs";
10
8
  const fadeIn = keyframes`
11
9
  from { opacity: 0; transform: translateY(10px); }
12
10
  to { opacity: 1; transform: translateY(0); }
@@ -30,7 +28,7 @@ const StickySaveBar = styled(Box)`
30
28
  `;
31
29
  const LicenseKeyBanner = styled(Box)`
32
30
  background: linear-gradient(135deg, #0EA5E9 0%, #A855F7 100%);
33
- border-radius: ${theme.borderRadius.lg};
31
+ border-radius: 12px;
34
32
  padding: 28px 32px;
35
33
  color: white;
36
34
  position: relative;
@@ -68,7 +66,7 @@ const LoaderContainer = styled(Flex)`
68
66
  flex-direction: column;
69
67
  gap: 16px;
70
68
  `;
71
- const LicensePage = () => {
69
+ const LicenseDetailsPage = () => {
72
70
  const { get } = useFetchClient();
73
71
  const { toggleNotification } = useNotification();
74
72
  const [loading, setLoading] = useState(true);
@@ -110,27 +108,27 @@ const LicensePage = () => {
110
108
  const lastName = data2.lastName || "";
111
109
  const fullName = `${firstName} ${lastName}`.trim() || "N/A";
112
110
  const content = `MagicMail - Email Business Suite - License Key
113
- ═══════════════════════════════════════
111
+ ===============================================
114
112
 
115
113
  License Key: ${licenseKey}
116
114
 
117
115
  License Holder Information:
118
- ──────────────────────────────────────
116
+ ----------------------------------------------
119
117
  Name: ${fullName}
120
118
  Email: ${email}
121
119
 
122
120
  License Status:
123
- ──────────────────────────────────────
121
+ ----------------------------------------------
124
122
  Status: ${data2.isActive ? "ACTIVE" : "INACTIVE"}
125
123
  Expires: ${data2.expiresAt ? new Date(data2.expiresAt).toLocaleDateString() : "Never"}
126
124
 
127
125
  Features:
128
- ──────────────────────────────────────
126
+ ----------------------------------------------
129
127
  Premium: ${data2.features?.premium ? "Enabled" : "Disabled"}
130
128
  Advanced: ${data2.features?.advanced ? "Enabled" : "Disabled"}
131
129
  Enterprise: ${data2.features?.enterprise ? "Enabled" : "Disabled"}
132
130
 
133
- ═══════════════════════════════════════
131
+ ===============================================
134
132
  Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
135
133
  `;
136
134
  const blob = new Blob([content], { type: "text/plain" });
@@ -172,17 +170,10 @@ Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
172
170
  /* @__PURE__ */ jsx(Typography, { variant: "epsilon", textColor: "neutral600", children: "View your MagicMail plugin license" })
173
171
  ] }),
174
172
  /* @__PURE__ */ jsx(
175
- Button,
173
+ SecondaryButton,
176
174
  {
177
- startIcon: /* @__PURE__ */ jsx(ArrowPathIcon, { style: { width: 20, height: 20 } }),
175
+ startIcon: /* @__PURE__ */ jsx(ArrowPathIcon, { style: { width: 18, height: 18 } }),
178
176
  onClick: fetchLicenseStatus,
179
- size: "L",
180
- style: {
181
- background: "linear-gradient(135deg, #0EA5E9 0%, #A855F7 100%)",
182
- color: "white",
183
- fontWeight: "600",
184
- border: "none"
185
- },
186
177
  children: "Refresh Status"
187
178
  }
188
179
  )
@@ -195,34 +186,20 @@ Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
195
186
  /* @__PURE__ */ jsx(Typography, { style: { color: "white", fontFamily: "monospace", fontSize: "28px", fontWeight: "bold", wordBreak: "break-all", marginBottom: "16px" }, children: data.licenseKey }),
196
187
  /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
197
188
  /* @__PURE__ */ jsx(
198
- Button,
189
+ WhiteOutlineButton,
199
190
  {
200
191
  onClick: handleCopyLicenseKey,
201
192
  startIcon: /* @__PURE__ */ jsx(DocumentDuplicateIcon, { style: { width: 16, height: 16 } }),
202
193
  size: "S",
203
- variant: "secondary",
204
- style: {
205
- backgroundColor: "rgba(255,255,255,0.2)",
206
- color: "white",
207
- border: "1px solid rgba(255,255,255,0.3)",
208
- fontWeight: "600"
209
- },
210
194
  children: "Copy Key"
211
195
  }
212
196
  ),
213
197
  /* @__PURE__ */ jsx(
214
- Button,
198
+ WhiteOutlineButton,
215
199
  {
216
200
  onClick: handleDownloadLicenseKey,
217
201
  startIcon: /* @__PURE__ */ jsx(ArrowDownTrayIcon, { style: { width: 16, height: 16 } }),
218
202
  size: "S",
219
- variant: "secondary",
220
- style: {
221
- backgroundColor: "rgba(255,255,255,0.2)",
222
- color: "white",
223
- border: "1px solid rgba(255,255,255,0.3)",
224
- fontWeight: "600"
225
- },
226
203
  children: "Download as TXT"
227
204
  }
228
205
  )
@@ -282,15 +259,10 @@ Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
282
259
  {
283
260
  backgroundColor: data.features?.premium ? "success100" : "neutral100",
284
261
  textColor: data.features?.premium ? "success700" : "neutral600",
285
- style: {
286
- fontSize: "13px",
287
- fontWeight: "700",
288
- padding: "8px 16px",
289
- border: data.features?.premium ? "2px solid #dcfce7" : "2px solid #e5e7eb"
290
- },
262
+ style: { fontSize: "13px", fontWeight: "700", padding: "8px 16px" },
291
263
  children: [
292
- data.features?.premium ? "" : "",
293
- " PREMIUM FEATURES"
264
+ data.features?.premium ? "[OK]" : "[X]",
265
+ " PREMIUM"
294
266
  ]
295
267
  }
296
268
  ),
@@ -299,15 +271,10 @@ Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
299
271
  {
300
272
  backgroundColor: data.features?.advanced ? "primary100" : "neutral100",
301
273
  textColor: data.features?.advanced ? "primary700" : "neutral600",
302
- style: {
303
- fontSize: "13px",
304
- fontWeight: "700",
305
- padding: "8px 16px",
306
- border: data.features?.advanced ? "2px solid #bae6fd" : "2px solid #e5e7eb"
307
- },
274
+ style: { fontSize: "13px", fontWeight: "700", padding: "8px 16px" },
308
275
  children: [
309
- data.features?.advanced ? "" : "",
310
- " ADVANCED FEATURES"
276
+ data.features?.advanced ? "[OK]" : "[X]",
277
+ " ADVANCED"
311
278
  ]
312
279
  }
313
280
  ),
@@ -316,48 +283,37 @@ Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
316
283
  {
317
284
  backgroundColor: data.features?.enterprise ? "secondary100" : "neutral100",
318
285
  textColor: data.features?.enterprise ? "secondary700" : "neutral600",
319
- style: {
320
- fontSize: "13px",
321
- fontWeight: "700",
322
- padding: "8px 16px",
323
- border: data.features?.enterprise ? "2px solid #ddd6fe" : "2px solid #e5e7eb"
324
- },
286
+ style: { fontSize: "13px", fontWeight: "700", padding: "8px 16px" },
325
287
  children: [
326
- data.features?.enterprise ? "" : "",
327
- " ENTERPRISE FEATURES"
288
+ data.features?.enterprise ? "[OK]" : "[X]",
289
+ " ENTERPRISE"
328
290
  ]
329
291
  }
330
292
  )
331
293
  ] }),
332
- data.features?.premium && /* @__PURE__ */ jsxs(Box, { marginBottom: 5, padding: 5, background: "success50", hasRadius: true, style: { border: "2px solid #dcfce7" }, children: [
333
- /* @__PURE__ */ jsx(Typography, { variant: "delta", fontWeight: "bold", textColor: "success700", style: { marginBottom: "16px", display: "flex", alignItems: "center", gap: "8px" }, children: "Premium Features Active" }),
294
+ data.features?.premium && /* @__PURE__ */ jsxs(Box, { marginBottom: 5, padding: 5, background: "success50", hasRadius: true, children: [
295
+ /* @__PURE__ */ jsx(Typography, { variant: "delta", fontWeight: "bold", textColor: "success700", style: { marginBottom: "16px" }, children: "Premium Features Active" }),
334
296
  /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 2, children: [
335
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: " Gmail OAuth 2.0 (Unlimited accounts)" }),
336
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: " Microsoft 365 OAuth Integration" }),
337
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: " Yahoo Mail OAuth" }),
338
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: " SendGrid & Mailgun Integration" }),
339
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Smart Routing Rules (Unlimited)" }),
340
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "success700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Email Analytics Dashboard" })
297
+ /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "success700", children: "[OK] Gmail OAuth 2.0" }),
298
+ /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "success700", children: "[OK] Microsoft 365 OAuth" }),
299
+ /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "success700", children: "[OK] Smart Routing Rules" }),
300
+ /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "success700", children: "[OK] Email Analytics" })
341
301
  ] })
342
302
  ] }),
343
- data.features?.advanced && /* @__PURE__ */ jsxs(Box, { marginBottom: 5, padding: 5, background: "primary50", hasRadius: true, style: { border: "2px solid #bae6fd" }, children: [
344
- /* @__PURE__ */ jsx(Typography, { variant: "delta", fontWeight: "bold", textColor: "primary700", style: { marginBottom: "16px", display: "flex", alignItems: "center", gap: "8px" }, children: "🚀 Advanced Features Active" }),
303
+ data.features?.advanced && /* @__PURE__ */ jsxs(Box, { marginBottom: 5, padding: 5, background: "primary50", hasRadius: true, children: [
304
+ /* @__PURE__ */ jsx(Typography, { variant: "delta", fontWeight: "bold", textColor: "primary700", style: { marginBottom: "16px" }, children: "Advanced Features Active" }),
345
305
  /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 2, children: [
346
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "primary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: " DKIM Signing for SMTP" }),
347
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "primary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: " Email Designer Integration" }),
348
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "primary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: " Priority Email Headers" }),
349
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "primary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ List-Unsubscribe Headers (GDPR)" }),
350
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "primary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Enhanced Security Validation" })
306
+ /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "primary700", children: "[OK] DKIM Signing" }),
307
+ /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "primary700", children: "[OK] Email Designer" }),
308
+ /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "primary700", children: "[OK] List-Unsubscribe Headers" })
351
309
  ] })
352
310
  ] }),
353
- data.features?.enterprise && /* @__PURE__ */ jsxs(Box, { padding: 5, background: "secondary50", hasRadius: true, style: { border: "2px solid #ddd6fe" }, children: [
354
- /* @__PURE__ */ jsx(Typography, { variant: "delta", fontWeight: "bold", textColor: "secondary700", style: { marginBottom: "16px", display: "flex", alignItems: "center", gap: "8px" }, children: "🏢 Enterprise Features Active" }),
311
+ data.features?.enterprise && /* @__PURE__ */ jsxs(Box, { padding: 5, background: "secondary50", hasRadius: true, children: [
312
+ /* @__PURE__ */ jsx(Typography, { variant: "delta", fontWeight: "bold", textColor: "secondary700", style: { marginBottom: "16px" }, children: "Enterprise Features Active" }),
355
313
  /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 2, children: [
356
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "secondary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: " Multi-tenant Email Management" }),
357
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "secondary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: " Compliance Reports (GDPR, CAN-SPAM)" }),
358
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "secondary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: " Custom Routing Rules Engine" }),
359
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "secondary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Advanced Rate Limiting" }),
360
- /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "secondary700", style: { fontSize: "14px", display: "flex", alignItems: "center", gap: "8px" }, children: "✓ Priority Support" })
314
+ /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "secondary700", children: "[OK] Multi-tenant Management" }),
315
+ /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "secondary700", children: "[OK] Compliance Reports" }),
316
+ /* @__PURE__ */ jsx(Typography, { variant: "omega", textColor: "secondary700", children: "[OK] Priority Support" })
361
317
  ] })
362
318
  ] })
363
319
  ] }) })
@@ -392,5 +348,5 @@ Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
392
348
  ] });
393
349
  };
394
350
  export {
395
- LicensePage as default
351
+ LicenseDetailsPage as default
396
352
  };
@@ -0,0 +1,435 @@
1
+ "use strict";
2
+ const styled = require("styled-components");
3
+ const designSystem = require("@strapi/design-system");
4
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
5
+ const styled__default = /* @__PURE__ */ _interopDefault(styled);
6
+ const GradientButton = styled__default.default(designSystem.Button)`
7
+ && {
8
+ background: linear-gradient(135deg, #0EA5E9 0%, #A855F7 100%);
9
+ color: white;
10
+ font-weight: 600;
11
+ border: none;
12
+ padding: 10px 20px;
13
+ min-height: 40px;
14
+ transition: all 0.2s ease;
15
+
16
+ &:hover:not(:disabled) {
17
+ background: linear-gradient(135deg, #0284C7 0%, #9333EA 100%);
18
+ transform: translateY(-1px);
19
+ box-shadow: 0 4px 12px rgba(14, 165, 233, 0.3);
20
+ }
21
+
22
+ &:active:not(:disabled) {
23
+ transform: translateY(0);
24
+ }
25
+
26
+ &:disabled {
27
+ opacity: 0.6;
28
+ cursor: not-allowed;
29
+ }
30
+ }
31
+ `;
32
+ const SecondaryButton = styled__default.default(designSystem.Button)`
33
+ && {
34
+ background: white;
35
+ color: #7C3AED;
36
+ font-weight: 600;
37
+ border: 2px solid transparent;
38
+ background-image: linear-gradient(white, white), linear-gradient(135deg, #0EA5E9 0%, #A855F7 100%);
39
+ background-origin: border-box;
40
+ background-clip: padding-box, border-box;
41
+ padding: 10px 20px;
42
+ min-height: 40px;
43
+ transition: all 0.2s ease;
44
+
45
+ &:hover:not(:disabled) {
46
+ background: linear-gradient(135deg, #0EA5E9 0%, #A855F7 100%);
47
+ background-clip: padding-box;
48
+ color: white;
49
+ transform: translateY(-1px);
50
+ box-shadow: 0 4px 12px rgba(168, 85, 247, 0.3);
51
+ }
52
+
53
+ &:active:not(:disabled) {
54
+ transform: translateY(0);
55
+ }
56
+
57
+ &:disabled {
58
+ opacity: 0.6;
59
+ cursor: not-allowed;
60
+ }
61
+ }
62
+ `;
63
+ const TertiaryButton = styled__default.default(designSystem.Button)`
64
+ && {
65
+ background: transparent;
66
+ color: ${(props) => props.theme.colors.neutral600};
67
+ font-weight: 500;
68
+ border: 1px solid ${(props) => props.theme.colors.neutral200};
69
+ padding: 10px 20px;
70
+ min-height: 40px;
71
+ transition: all 0.2s ease;
72
+
73
+ &:hover:not(:disabled) {
74
+ background: ${(props) => props.theme.colors.neutral100};
75
+ border-color: ${(props) => props.theme.colors.neutral300};
76
+ color: ${(props) => props.theme.colors.neutral800};
77
+ }
78
+
79
+ &:disabled {
80
+ opacity: 0.6;
81
+ cursor: not-allowed;
82
+ }
83
+ }
84
+ `;
85
+ const DangerButton = styled__default.default(designSystem.Button)`
86
+ && {
87
+ background: #FEE2E2;
88
+ color: #DC2626;
89
+ font-weight: 600;
90
+ border: 1px solid #FECACA;
91
+ padding: 10px 20px;
92
+ min-height: 40px;
93
+ transition: all 0.2s ease;
94
+
95
+ &:hover:not(:disabled) {
96
+ background: #DC2626;
97
+ color: white;
98
+ border-color: #DC2626;
99
+ }
100
+
101
+ &:disabled {
102
+ opacity: 0.6;
103
+ cursor: not-allowed;
104
+ }
105
+ }
106
+ `;
107
+ styled__default.default(designSystem.Button)`
108
+ && {
109
+ background: linear-gradient(135deg, #10B981 0%, #059669 100%);
110
+ color: white;
111
+ font-weight: 600;
112
+ border: none;
113
+ padding: 10px 20px;
114
+ min-height: 40px;
115
+ transition: all 0.2s ease;
116
+
117
+ &:hover:not(:disabled) {
118
+ background: linear-gradient(135deg, #059669 0%, #047857 100%);
119
+ transform: translateY(-1px);
120
+ box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);
121
+ }
122
+
123
+ &:disabled {
124
+ opacity: 0.6;
125
+ cursor: not-allowed;
126
+ }
127
+ }
128
+ `;
129
+ const IconButton = styled__default.default(designSystem.Button)`
130
+ && {
131
+ background: linear-gradient(135deg, #F8FAFC 0%, #F1F5F9 100%);
132
+ color: #64748B;
133
+ border: 1px solid #E2E8F0;
134
+ padding: 8px;
135
+ min-width: 38px;
136
+ min-height: 38px;
137
+ width: 38px;
138
+ height: 38px;
139
+ border-radius: 10px;
140
+ display: flex;
141
+ align-items: center;
142
+ justify-content: center;
143
+ transition: all 0.2s ease;
144
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
145
+
146
+ svg {
147
+ width: 18px;
148
+ height: 18px;
149
+ }
150
+
151
+ &:hover:not(:disabled) {
152
+ background: linear-gradient(135deg, #0EA5E9 0%, #0284C7 100%);
153
+ border-color: #0EA5E9;
154
+ color: white;
155
+ transform: translateY(-1px);
156
+ box-shadow: 0 4px 12px rgba(14, 165, 233, 0.25);
157
+ }
158
+
159
+ &:disabled {
160
+ opacity: 0.6;
161
+ cursor: not-allowed;
162
+ }
163
+ }
164
+ `;
165
+ const IconButtonDanger = styled__default.default(designSystem.Button)`
166
+ && {
167
+ background: linear-gradient(135deg, #FEF2F2 0%, #FEE2E2 100%);
168
+ color: #EF4444;
169
+ border: 1px solid #FECACA;
170
+ padding: 8px;
171
+ min-width: 38px;
172
+ min-height: 38px;
173
+ width: 38px;
174
+ height: 38px;
175
+ border-radius: 10px;
176
+ display: flex;
177
+ align-items: center;
178
+ justify-content: center;
179
+ transition: all 0.2s ease;
180
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
181
+
182
+ svg {
183
+ width: 18px;
184
+ height: 18px;
185
+ }
186
+
187
+ &:hover:not(:disabled) {
188
+ background: linear-gradient(135deg, #EF4444 0%, #DC2626 100%);
189
+ border-color: #EF4444;
190
+ color: white;
191
+ transform: translateY(-1px);
192
+ box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
193
+ }
194
+
195
+ &:disabled {
196
+ opacity: 0.6;
197
+ cursor: not-allowed;
198
+ }
199
+ }
200
+ `;
201
+ const IconButtonPrimary = styled__default.default(designSystem.Button)`
202
+ && {
203
+ background: linear-gradient(135deg, #F0F9FF 0%, #E0F2FE 100%);
204
+ color: #0EA5E9;
205
+ border: 1px solid #BAE6FD;
206
+ padding: 8px;
207
+ min-width: 38px;
208
+ min-height: 38px;
209
+ width: 38px;
210
+ height: 38px;
211
+ border-radius: 10px;
212
+ display: flex;
213
+ align-items: center;
214
+ justify-content: center;
215
+ transition: all 0.2s ease;
216
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
217
+
218
+ svg {
219
+ width: 18px;
220
+ height: 18px;
221
+ }
222
+
223
+ &:hover:not(:disabled) {
224
+ background: linear-gradient(135deg, #0EA5E9 0%, #0284C7 100%);
225
+ border-color: #0EA5E9;
226
+ color: white;
227
+ transform: translateY(-1px);
228
+ box-shadow: 0 4px 12px rgba(14, 165, 233, 0.3);
229
+ }
230
+
231
+ &:disabled {
232
+ opacity: 0.6;
233
+ cursor: not-allowed;
234
+ }
235
+ }
236
+ `;
237
+ const IconButtonSuccess = styled__default.default(designSystem.Button)`
238
+ && {
239
+ background: linear-gradient(135deg, #F0FDF4 0%, #DCFCE7 100%);
240
+ color: #22C55E;
241
+ border: 1px solid #BBF7D0;
242
+ padding: 8px;
243
+ min-width: 38px;
244
+ min-height: 38px;
245
+ width: 38px;
246
+ height: 38px;
247
+ border-radius: 10px;
248
+ display: flex;
249
+ align-items: center;
250
+ justify-content: center;
251
+ transition: all 0.2s ease;
252
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
253
+
254
+ svg {
255
+ width: 18px;
256
+ height: 18px;
257
+ }
258
+
259
+ &:hover:not(:disabled) {
260
+ background: linear-gradient(135deg, #22C55E 0%, #16A34A 100%);
261
+ border-color: #22C55E;
262
+ color: white;
263
+ transform: translateY(-1px);
264
+ box-shadow: 0 4px 12px rgba(34, 197, 94, 0.3);
265
+ }
266
+
267
+ &:disabled {
268
+ opacity: 0.6;
269
+ cursor: not-allowed;
270
+ }
271
+ }
272
+ `;
273
+ styled__default.default(designSystem.Button)`
274
+ && {
275
+ background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%);
276
+ color: #F59E0B;
277
+ border: 1px solid #FDE68A;
278
+ padding: 8px;
279
+ min-width: 38px;
280
+ min-height: 38px;
281
+ width: 38px;
282
+ height: 38px;
283
+ border-radius: 10px;
284
+ display: flex;
285
+ align-items: center;
286
+ justify-content: center;
287
+ transition: all 0.2s ease;
288
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
289
+
290
+ svg {
291
+ width: 18px;
292
+ height: 18px;
293
+ }
294
+
295
+ &:hover:not(:disabled) {
296
+ background: linear-gradient(135deg, #F59E0B 0%, #D97706 100%);
297
+ border-color: #F59E0B;
298
+ color: white;
299
+ transform: translateY(-1px);
300
+ box-shadow: 0 4px 12px rgba(245, 158, 11, 0.3);
301
+ }
302
+
303
+ &:disabled {
304
+ opacity: 0.6;
305
+ cursor: not-allowed;
306
+ }
307
+ }
308
+ `;
309
+ const IconButtonPurple = styled__default.default(designSystem.Button)`
310
+ && {
311
+ background: linear-gradient(135deg, #FAF5FF 0%, #F3E8FF 100%);
312
+ color: #A855F7;
313
+ border: 1px solid #E9D5FF;
314
+ padding: 8px;
315
+ min-width: 38px;
316
+ min-height: 38px;
317
+ width: 38px;
318
+ height: 38px;
319
+ border-radius: 10px;
320
+ display: flex;
321
+ align-items: center;
322
+ justify-content: center;
323
+ transition: all 0.2s ease;
324
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
325
+
326
+ svg {
327
+ width: 18px;
328
+ height: 18px;
329
+ }
330
+
331
+ &:hover:not(:disabled) {
332
+ background: linear-gradient(135deg, #A855F7 0%, #9333EA 100%);
333
+ border-color: #A855F7;
334
+ color: white;
335
+ transform: translateY(-1px);
336
+ box-shadow: 0 4px 12px rgba(168, 85, 247, 0.3);
337
+ }
338
+
339
+ &:disabled {
340
+ opacity: 0.6;
341
+ cursor: not-allowed;
342
+ }
343
+ }
344
+ `;
345
+ const CTAButton = styled__default.default(designSystem.Button)`
346
+ && {
347
+ background: linear-gradient(135deg, #0EA5E9 0%, #A855F7 100%);
348
+ color: white;
349
+ font-weight: 700;
350
+ font-size: 1rem;
351
+ border: none;
352
+ padding: 14px 28px;
353
+ min-height: 52px;
354
+ border-radius: 12px;
355
+ transition: all 0.2s ease;
356
+ box-shadow: 0 4px 14px rgba(14, 165, 233, 0.25);
357
+
358
+ &:hover:not(:disabled) {
359
+ background: linear-gradient(135deg, #0284C7 0%, #9333EA 100%);
360
+ transform: translateY(-2px);
361
+ box-shadow: 0 6px 20px rgba(14, 165, 233, 0.35);
362
+ }
363
+
364
+ &:active:not(:disabled) {
365
+ transform: translateY(0);
366
+ }
367
+
368
+ &:disabled {
369
+ opacity: 0.6;
370
+ cursor: not-allowed;
371
+ }
372
+ }
373
+ `;
374
+ styled__default.default(designSystem.Button)`
375
+ && {
376
+ background: transparent;
377
+ color: #0EA5E9;
378
+ font-weight: 500;
379
+ border: none;
380
+ padding: 4px 8px;
381
+ min-height: auto;
382
+ text-decoration: underline;
383
+ transition: all 0.2s ease;
384
+
385
+ &:hover:not(:disabled) {
386
+ color: #0284C7;
387
+ text-decoration: none;
388
+ }
389
+
390
+ &:disabled {
391
+ opacity: 0.6;
392
+ cursor: not-allowed;
393
+ }
394
+ }
395
+ `;
396
+ const WhiteOutlineButton = styled__default.default(designSystem.Button)`
397
+ && {
398
+ background: rgba(255, 255, 255, 0.15);
399
+ color: white;
400
+ font-weight: 600;
401
+ border: 2px solid rgba(255, 255, 255, 0.4);
402
+ padding: 8px 16px;
403
+ min-height: 38px;
404
+ border-radius: 8px;
405
+ backdrop-filter: blur(4px);
406
+ transition: all 0.2s ease;
407
+
408
+ &:hover:not(:disabled) {
409
+ background: rgba(255, 255, 255, 0.25);
410
+ border-color: rgba(255, 255, 255, 0.6);
411
+ transform: translateY(-1px);
412
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
413
+ }
414
+
415
+ &:active:not(:disabled) {
416
+ transform: translateY(0);
417
+ }
418
+
419
+ &:disabled {
420
+ opacity: 0.6;
421
+ cursor: not-allowed;
422
+ }
423
+ }
424
+ `;
425
+ exports.CTAButton = CTAButton;
426
+ exports.DangerButton = DangerButton;
427
+ exports.GradientButton = GradientButton;
428
+ exports.IconButton = IconButton;
429
+ exports.IconButtonDanger = IconButtonDanger;
430
+ exports.IconButtonPrimary = IconButtonPrimary;
431
+ exports.IconButtonPurple = IconButtonPurple;
432
+ exports.IconButtonSuccess = IconButtonSuccess;
433
+ exports.SecondaryButton = SecondaryButton;
434
+ exports.TertiaryButton = TertiaryButton;
435
+ exports.WhiteOutlineButton = WhiteOutlineButton;