@windrun-huaiin/third-ui 6.1.0 → 6.2.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/dist/clerk/index.js +1 -0
- package/dist/clerk/index.js.map +1 -1
- package/dist/clerk/index.mjs +1 -0
- package/dist/clerk/index.mjs.map +1 -1
- package/dist/clerk/server.js +1 -0
- package/dist/clerk/server.js.map +1 -1
- package/dist/clerk/server.mjs +1 -0
- package/dist/clerk/server.mjs.map +1 -1
- package/dist/fuma/mdx/index.d.mts +30 -2
- package/dist/fuma/mdx/index.d.ts +30 -2
- package/dist/fuma/mdx/index.js +153 -3
- package/dist/fuma/mdx/index.js.map +1 -1
- package/dist/fuma/mdx/index.mjs +152 -3
- package/dist/fuma/mdx/index.mjs.map +1 -1
- package/dist/fuma/server.d.mts +1 -1
- package/dist/fuma/server.d.ts +1 -1
- package/dist/fuma/server.js +32 -3201
- package/dist/fuma/server.js.map +1 -1
- package/dist/fuma/server.mjs +27 -3200
- package/dist/fuma/server.mjs.map +1 -1
- package/dist/lib/server.js +1 -0
- package/dist/lib/server.js.map +1 -1
- package/dist/lib/server.mjs +1 -0
- package/dist/lib/server.mjs.map +1 -1
- package/dist/main/index.d.mts +65 -1
- package/dist/main/index.d.ts +65 -1
- package/dist/main/index.js +365 -0
- package/dist/main/index.js.map +1 -1
- package/dist/main/index.mjs +362 -0
- package/dist/main/index.mjs.map +1 -1
- package/dist/main/server.js +208 -886
- package/dist/main/server.js.map +1 -1
- package/dist/main/server.mjs +116 -794
- package/dist/main/server.mjs.map +1 -1
- package/package.json +2 -2
- package/src/fuma/fuma-banner-suit.tsx +1 -1
- package/src/fuma/mdx/index.ts +2 -1
- package/src/main/faq.tsx +1 -1
- package/src/main/gallery.tsx +1 -1
- package/src/main/index.ts +4 -1
- package/src/main/price-plan.tsx +1 -1
- package/dist/toc-base-BC7kXpDU.d.mts +0 -15
- package/dist/toc-base-BC7kXpDU.d.ts +0 -15
package/dist/main/server.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
1
2
|
"use strict";
|
|
2
3
|
var __create = Object.create;
|
|
3
4
|
var __defProp = Object.defineProperty;
|
|
@@ -103,121 +104,7 @@ function cn(...inputs) {
|
|
|
103
104
|
|
|
104
105
|
// src/main/gallery.tsx
|
|
105
106
|
var import_image = __toESM(require("next/image"));
|
|
106
|
-
|
|
107
|
-
// src/main/gallery-interactive.tsx
|
|
108
|
-
var import_react = require("react");
|
|
109
|
-
function GalleryInteractive({ data }) {
|
|
110
|
-
const [imageErrors, setImageErrors] = (0, import_react.useState)(/* @__PURE__ */ new Set());
|
|
111
|
-
const [downloadingItems, setDownloadingItems] = (0, import_react.useState)(/* @__PURE__ */ new Set());
|
|
112
|
-
const cdnProxyUrl = process.env.NEXT_PUBLIC_STYLE_CDN_PROXY_URL;
|
|
113
|
-
(0, import_react.useEffect)(() => {
|
|
114
|
-
data.items.forEach((item, index) => {
|
|
115
|
-
const downloadButton = document.querySelector(`[data-gallery-download="${item.id}"]`);
|
|
116
|
-
const imageElement = document.querySelector(`[data-gallery-image="${item.id}"]`);
|
|
117
|
-
if (downloadButton) {
|
|
118
|
-
const handleDownload = () => __async(null, null, function* () {
|
|
119
|
-
var _a;
|
|
120
|
-
if (downloadingItems.has(item.id)) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
setDownloadingItems((prev) => new Set(prev).add(item.id));
|
|
124
|
-
try {
|
|
125
|
-
if (!cdnProxyUrl) {
|
|
126
|
-
throw new Error("CDN proxy URL not configured");
|
|
127
|
-
}
|
|
128
|
-
const originalUrl = new URL(item.url);
|
|
129
|
-
const filename = originalUrl.pathname.substring(1);
|
|
130
|
-
const proxyUrl = `${cdnProxyUrl}/${encodeURIComponent(filename)}`;
|
|
131
|
-
const urlExtension = (_a = item.url.split(".").pop()) == null ? void 0 : _a.toLowerCase();
|
|
132
|
-
let extension = ".webp";
|
|
133
|
-
if (urlExtension && ["jpg", "jpeg", "png", "gif", "webp", "svg"].includes(urlExtension)) {
|
|
134
|
-
extension = `.${urlExtension}`;
|
|
135
|
-
}
|
|
136
|
-
const response = yield fetch(proxyUrl);
|
|
137
|
-
if (!response.ok) {
|
|
138
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
139
|
-
}
|
|
140
|
-
const blob = yield response.blob();
|
|
141
|
-
const blobUrl = URL.createObjectURL(blob);
|
|
142
|
-
const a = document.createElement("a");
|
|
143
|
-
a.href = blobUrl;
|
|
144
|
-
a.download = `${data.downloadPrefix}-${index + 1}${extension}`;
|
|
145
|
-
a.style.display = "none";
|
|
146
|
-
document.body.appendChild(a);
|
|
147
|
-
a.click();
|
|
148
|
-
setTimeout(() => {
|
|
149
|
-
document.body.removeChild(a);
|
|
150
|
-
URL.revokeObjectURL(blobUrl);
|
|
151
|
-
}, 100);
|
|
152
|
-
} catch (error) {
|
|
153
|
-
console.error("Download failed:", error);
|
|
154
|
-
} finally {
|
|
155
|
-
setDownloadingItems((prev) => {
|
|
156
|
-
const newSet = new Set(prev);
|
|
157
|
-
newSet.delete(item.id);
|
|
158
|
-
return newSet;
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
downloadButton.addEventListener("click", handleDownload);
|
|
163
|
-
}
|
|
164
|
-
if (imageElement) {
|
|
165
|
-
const handleImageError = () => {
|
|
166
|
-
setImageErrors((prev) => new Set(prev).add(item.id));
|
|
167
|
-
imageElement.src = data.defaultImgUrl;
|
|
168
|
-
};
|
|
169
|
-
imageElement.addEventListener("error", handleImageError);
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
const updateDownloadStates = () => {
|
|
173
|
-
data.items.forEach((item) => {
|
|
174
|
-
const downloadButton = document.querySelector(`[data-gallery-download="${item.id}"]`);
|
|
175
|
-
if (downloadButton) {
|
|
176
|
-
const isDownloading = downloadingItems.has(item.id);
|
|
177
|
-
if (isDownloading) {
|
|
178
|
-
downloadButton.disabled = true;
|
|
179
|
-
downloadButton.classList.add("bg-black/30", "text-white/50");
|
|
180
|
-
downloadButton.classList.remove("bg-black/50", "hover:bg-black/70", "text-white/80", "hover:text-white");
|
|
181
|
-
downloadButton.innerHTML = `
|
|
182
|
-
<svg class="h-5 w-5 text-white animate-spin" fill="none" viewBox="0 0 24 24">
|
|
183
|
-
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
|
|
184
|
-
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
|
|
185
|
-
</svg>
|
|
186
|
-
`;
|
|
187
|
-
} else {
|
|
188
|
-
downloadButton.disabled = false;
|
|
189
|
-
downloadButton.classList.remove("bg-black/30", "text-white/50");
|
|
190
|
-
downloadButton.classList.add("bg-black/50", "hover:bg-black/70", "text-white/80", "hover:text-white");
|
|
191
|
-
downloadButton.innerHTML = `
|
|
192
|
-
<svg class="h-5 w-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
193
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
|
194
|
-
</svg>
|
|
195
|
-
`;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
};
|
|
200
|
-
updateDownloadStates();
|
|
201
|
-
return () => {
|
|
202
|
-
data.items.forEach((item) => {
|
|
203
|
-
var _a, _b;
|
|
204
|
-
const downloadButton = document.querySelector(`[data-gallery-download="${item.id}"]`);
|
|
205
|
-
const imageElement = document.querySelector(`[data-gallery-image="${item.id}"]`);
|
|
206
|
-
if (downloadButton) {
|
|
207
|
-
const newButton = downloadButton.cloneNode(true);
|
|
208
|
-
(_a = downloadButton.parentNode) == null ? void 0 : _a.replaceChild(newButton, downloadButton);
|
|
209
|
-
}
|
|
210
|
-
if (imageElement) {
|
|
211
|
-
const newImage = imageElement.cloneNode(true);
|
|
212
|
-
(_b = imageElement.parentNode) == null ? void 0 : _b.replaceChild(newImage, imageElement);
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
};
|
|
216
|
-
}, [data, downloadingItems, imageErrors, cdnProxyUrl]);
|
|
217
|
-
return null;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
// src/main/gallery.tsx
|
|
107
|
+
var import_main = require("@third-ui/main");
|
|
221
108
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
222
109
|
function Gallery(_0) {
|
|
223
110
|
return __async(this, arguments, function* ({ locale, sectionClassName, button }) {
|
|
@@ -277,7 +164,7 @@ function Gallery(_0) {
|
|
|
277
164
|
item.id
|
|
278
165
|
)) }),
|
|
279
166
|
button && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-center mt-12", children: button }),
|
|
280
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(GalleryInteractive, { data })
|
|
167
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_main.GalleryInteractive, { data })
|
|
281
168
|
] });
|
|
282
169
|
});
|
|
283
170
|
}
|
|
@@ -286,7 +173,7 @@ function Gallery(_0) {
|
|
|
286
173
|
var import_server3 = require("next-intl/server");
|
|
287
174
|
|
|
288
175
|
// ../base-ui/src/assets/github.tsx
|
|
289
|
-
var
|
|
176
|
+
var import_react = __toESM(require("react"), 1);
|
|
290
177
|
|
|
291
178
|
// ../base-ui/src/lib/theme-util.ts
|
|
292
179
|
var themeIconColor = process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || "text-purple-500";
|
|
@@ -295,7 +182,7 @@ var themeSvgIconSize = process.env.NEXT_PUBLIC_STYLE_SVG_ICON_SIZE || 18;
|
|
|
295
182
|
|
|
296
183
|
// ../base-ui/src/assets/github.tsx
|
|
297
184
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
298
|
-
var GitHubIcon =
|
|
185
|
+
var GitHubIcon = import_react.default.forwardRef(
|
|
299
186
|
(_a, ref) => {
|
|
300
187
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
301
188
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
@@ -323,9 +210,9 @@ GitHubIcon.displayName = "GitHub";
|
|
|
323
210
|
var github_default = GitHubIcon;
|
|
324
211
|
|
|
325
212
|
// ../base-ui/src/assets/d8.tsx
|
|
326
|
-
var
|
|
213
|
+
var import_react2 = __toESM(require("react"), 1);
|
|
327
214
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
328
|
-
var D8Icon =
|
|
215
|
+
var D8Icon = import_react2.default.forwardRef(
|
|
329
216
|
(_a, ref) => {
|
|
330
217
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
331
218
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
@@ -368,9 +255,9 @@ D8Icon.displayName = "D8";
|
|
|
368
255
|
var d8_default = D8Icon;
|
|
369
256
|
|
|
370
257
|
// ../base-ui/src/assets/clerk.tsx
|
|
371
|
-
var
|
|
258
|
+
var import_react3 = __toESM(require("react"), 1);
|
|
372
259
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
373
|
-
var ClerkIcon =
|
|
260
|
+
var ClerkIcon = import_react3.default.forwardRef(
|
|
374
261
|
(_a, ref) => {
|
|
375
262
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
376
263
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
@@ -399,9 +286,9 @@ ClerkIcon.displayName = "Clerk";
|
|
|
399
286
|
var clerk_default = ClerkIcon;
|
|
400
287
|
|
|
401
288
|
// ../base-ui/src/assets/iterm.tsx
|
|
402
|
-
var
|
|
289
|
+
var import_react4 = __toESM(require("react"), 1);
|
|
403
290
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
404
|
-
var ItermIcon =
|
|
291
|
+
var ItermIcon = import_react4.default.forwardRef(
|
|
405
292
|
(_a, ref) => {
|
|
406
293
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
407
294
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
@@ -430,9 +317,9 @@ ItermIcon.displayName = "Iterm";
|
|
|
430
317
|
var iterm_default = ItermIcon;
|
|
431
318
|
|
|
432
319
|
// ../base-ui/src/assets/markdown.tsx
|
|
433
|
-
var
|
|
320
|
+
var import_react5 = __toESM(require("react"), 1);
|
|
434
321
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
435
|
-
var MarkdownIcon =
|
|
322
|
+
var MarkdownIcon = import_react5.default.forwardRef(
|
|
436
323
|
(_a, ref) => {
|
|
437
324
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
438
325
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
@@ -460,9 +347,9 @@ MarkdownIcon.displayName = "Markdown";
|
|
|
460
347
|
var markdown_default = MarkdownIcon;
|
|
461
348
|
|
|
462
349
|
// ../base-ui/src/assets/mdx.tsx
|
|
463
|
-
var
|
|
350
|
+
var import_react6 = __toESM(require("react"), 1);
|
|
464
351
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
465
|
-
var MDXIcon =
|
|
352
|
+
var MDXIcon = import_react6.default.forwardRef(
|
|
466
353
|
(_a, ref) => {
|
|
467
354
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
468
355
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
@@ -586,9 +473,9 @@ MDXIcon.displayName = "MDX";
|
|
|
586
473
|
var mdx_default = MDXIcon;
|
|
587
474
|
|
|
588
475
|
// ../base-ui/src/assets/html.tsx
|
|
589
|
-
var
|
|
476
|
+
var import_react7 = __toESM(require("react"), 1);
|
|
590
477
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
591
|
-
var HtmlIcon =
|
|
478
|
+
var HtmlIcon = import_react7.default.forwardRef(
|
|
592
479
|
(_a, ref) => {
|
|
593
480
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
594
481
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
@@ -615,9 +502,9 @@ HtmlIcon.displayName = "Html";
|
|
|
615
502
|
var html_default = HtmlIcon;
|
|
616
503
|
|
|
617
504
|
// ../base-ui/src/assets/json.tsx
|
|
618
|
-
var
|
|
505
|
+
var import_react8 = __toESM(require("react"), 1);
|
|
619
506
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
620
|
-
var JsonIcon =
|
|
507
|
+
var JsonIcon = import_react8.default.forwardRef(
|
|
621
508
|
(_a, ref) => {
|
|
622
509
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
623
510
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
@@ -644,9 +531,9 @@ JsonIcon.displayName = "Json";
|
|
|
644
531
|
var json_default = JsonIcon;
|
|
645
532
|
|
|
646
533
|
// ../base-ui/src/assets/xml.tsx
|
|
647
|
-
var
|
|
534
|
+
var import_react9 = __toESM(require("react"), 1);
|
|
648
535
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
649
|
-
var XMLIcon =
|
|
536
|
+
var XMLIcon = import_react9.default.forwardRef(
|
|
650
537
|
(_a, ref) => {
|
|
651
538
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
652
539
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
@@ -674,9 +561,9 @@ XMLIcon.displayName = "XML";
|
|
|
674
561
|
var xml_default = XMLIcon;
|
|
675
562
|
|
|
676
563
|
// ../base-ui/src/assets/yaml.tsx
|
|
677
|
-
var
|
|
564
|
+
var import_react10 = __toESM(require("react"), 1);
|
|
678
565
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
679
|
-
var YamlIcon =
|
|
566
|
+
var YamlIcon = import_react10.default.forwardRef(
|
|
680
567
|
(_a, ref) => {
|
|
681
568
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
682
569
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
@@ -704,9 +591,9 @@ YamlIcon.displayName = "Yaml";
|
|
|
704
591
|
var yaml_default = YamlIcon;
|
|
705
592
|
|
|
706
593
|
// ../base-ui/src/assets/csv.tsx
|
|
707
|
-
var
|
|
594
|
+
var import_react11 = __toESM(require("react"), 1);
|
|
708
595
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
709
|
-
var CSVIcon =
|
|
596
|
+
var CSVIcon = import_react11.default.forwardRef(
|
|
710
597
|
(_a, ref) => {
|
|
711
598
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
712
599
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
@@ -760,9 +647,9 @@ CSVIcon.displayName = "CSV";
|
|
|
760
647
|
var csv_default = CSVIcon;
|
|
761
648
|
|
|
762
649
|
// ../base-ui/src/assets/txt.tsx
|
|
763
|
-
var
|
|
650
|
+
var import_react12 = __toESM(require("react"), 1);
|
|
764
651
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
765
|
-
var TxtIcon =
|
|
652
|
+
var TxtIcon = import_react12.default.forwardRef(
|
|
766
653
|
(_a, ref) => {
|
|
767
654
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
768
655
|
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
@@ -790,9 +677,9 @@ TxtIcon.displayName = "Txt";
|
|
|
790
677
|
var txt_default = TxtIcon;
|
|
791
678
|
|
|
792
679
|
// ../base-ui/src/assets/java.tsx
|
|
793
|
-
var
|
|
680
|
+
var import_react13 = __toESM(require("react"), 1);
|
|
794
681
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
795
|
-
var JavaIcon =
|
|
682
|
+
var JavaIcon = import_react13.default.forwardRef(
|
|
796
683
|
(_a, ref) => {
|
|
797
684
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
798
685
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
@@ -821,9 +708,9 @@ JavaIcon.displayName = "Java";
|
|
|
821
708
|
var java_default = JavaIcon;
|
|
822
709
|
|
|
823
710
|
// ../base-ui/src/assets/sql.tsx
|
|
824
|
-
var
|
|
711
|
+
var import_react14 = __toESM(require("react"), 1);
|
|
825
712
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
826
|
-
var SQLIcon =
|
|
713
|
+
var SQLIcon = import_react14.default.forwardRef(
|
|
827
714
|
(_a, ref) => {
|
|
828
715
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
829
716
|
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
@@ -869,9 +756,9 @@ SQLIcon.displayName = "SQL";
|
|
|
869
756
|
var sql_default = SQLIcon;
|
|
870
757
|
|
|
871
758
|
// ../base-ui/src/assets/log.tsx
|
|
872
|
-
var
|
|
759
|
+
var import_react15 = __toESM(require("react"), 1);
|
|
873
760
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
874
|
-
var LogIcon =
|
|
761
|
+
var LogIcon = import_react15.default.forwardRef(
|
|
875
762
|
(_a, ref) => {
|
|
876
763
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
877
764
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
@@ -910,9 +797,9 @@ LogIcon.displayName = "Log";
|
|
|
910
797
|
var log_default = LogIcon;
|
|
911
798
|
|
|
912
799
|
// ../base-ui/src/assets/mac.tsx
|
|
913
|
-
var
|
|
800
|
+
var import_react16 = __toESM(require("react"), 1);
|
|
914
801
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
915
|
-
var MACIcon =
|
|
802
|
+
var MACIcon = import_react16.default.forwardRef(
|
|
916
803
|
(_a, ref) => {
|
|
917
804
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
918
805
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
@@ -941,9 +828,9 @@ MACIcon.displayName = "MAC";
|
|
|
941
828
|
var mac_default = MACIcon;
|
|
942
829
|
|
|
943
830
|
// ../base-ui/src/assets/bitcoin.tsx
|
|
944
|
-
var
|
|
831
|
+
var import_react17 = __toESM(require("react"), 1);
|
|
945
832
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
946
|
-
var BitcoinIcon =
|
|
833
|
+
var BitcoinIcon = import_react17.default.forwardRef(
|
|
947
834
|
(_a, ref) => {
|
|
948
835
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
949
836
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
@@ -972,9 +859,9 @@ BitcoinIcon.displayName = "BTC";
|
|
|
972
859
|
var bitcoin_default = BitcoinIcon;
|
|
973
860
|
|
|
974
861
|
// ../base-ui/src/assets/css.tsx
|
|
975
|
-
var
|
|
862
|
+
var import_react18 = __toESM(require("react"), 1);
|
|
976
863
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
977
|
-
var CSSIcon =
|
|
864
|
+
var CSSIcon = import_react18.default.forwardRef(
|
|
978
865
|
(_a, ref) => {
|
|
979
866
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
980
867
|
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
@@ -1001,9 +888,9 @@ CSSIcon.displayName = "CSS";
|
|
|
1001
888
|
var css_default = CSSIcon;
|
|
1002
889
|
|
|
1003
890
|
// ../base-ui/src/assets/mermaid.tsx
|
|
1004
|
-
var
|
|
891
|
+
var import_react19 = __toESM(require("react"), 1);
|
|
1005
892
|
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1006
|
-
var MermaidIcon =
|
|
893
|
+
var MermaidIcon = import_react19.default.forwardRef(
|
|
1007
894
|
// Memmaid need special size for good view
|
|
1008
895
|
(_a, ref) => {
|
|
1009
896
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
@@ -1033,9 +920,9 @@ MermaidIcon.displayName = "Mmd";
|
|
|
1033
920
|
var mermaid_default = MermaidIcon;
|
|
1034
921
|
|
|
1035
922
|
// ../base-ui/src/assets/last-updated.tsx
|
|
1036
|
-
var
|
|
923
|
+
var import_react20 = __toESM(require("react"), 1);
|
|
1037
924
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1038
|
-
var LastUpdatedIcon =
|
|
925
|
+
var LastUpdatedIcon = import_react20.default.forwardRef(
|
|
1039
926
|
(_a, ref) => {
|
|
1040
927
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1041
928
|
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
@@ -1063,9 +950,9 @@ LastUpdatedIcon.displayName = "LastUpdated";
|
|
|
1063
950
|
var last_updated_default = LastUpdatedIcon;
|
|
1064
951
|
|
|
1065
952
|
// ../base-ui/src/assets/snippets.tsx
|
|
1066
|
-
var
|
|
953
|
+
var import_react21 = __toESM(require("react"), 1);
|
|
1067
954
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1068
|
-
var SnippetsIcon =
|
|
955
|
+
var SnippetsIcon = import_react21.default.forwardRef(
|
|
1069
956
|
(_a, ref) => {
|
|
1070
957
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1071
958
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
@@ -1092,9 +979,9 @@ SnippetsIcon.displayName = "Snippets";
|
|
|
1092
979
|
var snippets_default = SnippetsIcon;
|
|
1093
980
|
|
|
1094
981
|
// ../base-ui/src/assets/test.tsx
|
|
1095
|
-
var
|
|
982
|
+
var import_react22 = __toESM(require("react"), 1);
|
|
1096
983
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1097
|
-
var TestIcon =
|
|
984
|
+
var TestIcon = import_react22.default.forwardRef(
|
|
1098
985
|
(_a, ref) => {
|
|
1099
986
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1100
987
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
@@ -1122,9 +1009,9 @@ TestIcon.displayName = "Test";
|
|
|
1122
1009
|
var test_default = TestIcon;
|
|
1123
1010
|
|
|
1124
1011
|
// ../base-ui/src/assets/diff.tsx
|
|
1125
|
-
var
|
|
1012
|
+
var import_react23 = __toESM(require("react"), 1);
|
|
1126
1013
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1127
|
-
var DiffIcon =
|
|
1014
|
+
var DiffIcon = import_react23.default.forwardRef(
|
|
1128
1015
|
(_a, ref) => {
|
|
1129
1016
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1130
1017
|
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
@@ -1154,9 +1041,9 @@ DiffIcon.displayName = "Diff";
|
|
|
1154
1041
|
var diff_default = DiffIcon;
|
|
1155
1042
|
|
|
1156
1043
|
// ../base-ui/src/assets/dpa.tsx
|
|
1157
|
-
var
|
|
1044
|
+
var import_react24 = __toESM(require("react"), 1);
|
|
1158
1045
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1159
|
-
var DPAIcon =
|
|
1046
|
+
var DPAIcon = import_react24.default.forwardRef(
|
|
1160
1047
|
(_a, ref) => {
|
|
1161
1048
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1162
1049
|
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
@@ -1183,9 +1070,9 @@ DPAIcon.displayName = "DPA";
|
|
|
1183
1070
|
var dpa_default = DPAIcon;
|
|
1184
1071
|
|
|
1185
1072
|
// ../base-ui/src/assets/subp.tsx
|
|
1186
|
-
var
|
|
1073
|
+
var import_react25 = __toESM(require("react"), 1);
|
|
1187
1074
|
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1188
|
-
var SubPIcon =
|
|
1075
|
+
var SubPIcon = import_react25.default.forwardRef(
|
|
1189
1076
|
(_a, ref) => {
|
|
1190
1077
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1191
1078
|
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
@@ -1214,9 +1101,9 @@ SubPIcon.displayName = "SubP";
|
|
|
1214
1101
|
var subp_default = SubPIcon;
|
|
1215
1102
|
|
|
1216
1103
|
// ../base-ui/src/assets/t3p.tsx
|
|
1217
|
-
var
|
|
1104
|
+
var import_react26 = __toESM(require("react"), 1);
|
|
1218
1105
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1219
|
-
var T3PIcon =
|
|
1106
|
+
var T3PIcon = import_react26.default.forwardRef(
|
|
1220
1107
|
(_a, ref) => {
|
|
1221
1108
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1222
1109
|
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
@@ -1243,9 +1130,9 @@ T3PIcon.displayName = "T3P";
|
|
|
1243
1130
|
var t3p_default = T3PIcon;
|
|
1244
1131
|
|
|
1245
1132
|
// ../base-ui/src/assets/http.tsx
|
|
1246
|
-
var
|
|
1133
|
+
var import_react27 = __toESM(require("react"), 1);
|
|
1247
1134
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1248
|
-
var HttpIcon =
|
|
1135
|
+
var HttpIcon = import_react27.default.forwardRef(
|
|
1249
1136
|
(_a, ref) => {
|
|
1250
1137
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1251
1138
|
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
@@ -1273,9 +1160,9 @@ HttpIcon.displayName = "Http";
|
|
|
1273
1160
|
var http_default = HttpIcon;
|
|
1274
1161
|
|
|
1275
1162
|
// ../base-ui/src/assets/scheme.tsx
|
|
1276
|
-
var
|
|
1163
|
+
var import_react28 = __toESM(require("react"), 1);
|
|
1277
1164
|
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1278
|
-
var SchemeIcon =
|
|
1165
|
+
var SchemeIcon = import_react28.default.forwardRef(
|
|
1279
1166
|
(_a, ref) => {
|
|
1280
1167
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1281
1168
|
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
@@ -1302,9 +1189,9 @@ SchemeIcon.displayName = "Scheme";
|
|
|
1302
1189
|
var scheme_default = SchemeIcon;
|
|
1303
1190
|
|
|
1304
1191
|
// ../base-ui/src/assets/faq.tsx
|
|
1305
|
-
var
|
|
1192
|
+
var import_react29 = __toESM(require("react"), 1);
|
|
1306
1193
|
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1307
|
-
var FAQIcon =
|
|
1194
|
+
var FAQIcon = import_react29.default.forwardRef(
|
|
1308
1195
|
(_a, ref) => {
|
|
1309
1196
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1310
1197
|
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
@@ -1333,9 +1220,9 @@ FAQIcon.displayName = "FAQ";
|
|
|
1333
1220
|
var faq_default = FAQIcon;
|
|
1334
1221
|
|
|
1335
1222
|
// ../base-ui/src/assets/faqb.tsx
|
|
1336
|
-
var
|
|
1223
|
+
var import_react30 = __toESM(require("react"), 1);
|
|
1337
1224
|
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1338
|
-
var FAQBIcon =
|
|
1225
|
+
var FAQBIcon = import_react30.default.forwardRef(
|
|
1339
1226
|
(_a, ref) => {
|
|
1340
1227
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1341
1228
|
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
@@ -1371,9 +1258,9 @@ FAQBIcon.displayName = "FAQB";
|
|
|
1371
1258
|
var faqb_default = FAQBIcon;
|
|
1372
1259
|
|
|
1373
1260
|
// ../base-ui/src/assets/faqs.tsx
|
|
1374
|
-
var
|
|
1261
|
+
var import_react31 = __toESM(require("react"), 1);
|
|
1375
1262
|
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1376
|
-
var FAQSIcon =
|
|
1263
|
+
var FAQSIcon = import_react31.default.forwardRef(
|
|
1377
1264
|
(_a, ref) => {
|
|
1378
1265
|
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
|
1379
1266
|
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
@@ -1561,7 +1448,7 @@ __export(limited_lucide_icons_exports, {
|
|
|
1561
1448
|
});
|
|
1562
1449
|
|
|
1563
1450
|
// ../../node_modules/.pnpm/lucide-react@0.525.0_react@19.1.0/node_modules/lucide-react/dist/esm/createLucideIcon.js
|
|
1564
|
-
var
|
|
1451
|
+
var import_react33 = require("react");
|
|
1565
1452
|
|
|
1566
1453
|
// ../../node_modules/.pnpm/lucide-react@0.525.0_react@19.1.0/node_modules/lucide-react/dist/esm/shared/src/utils.js
|
|
1567
1454
|
var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
@@ -1585,7 +1472,7 @@ var hasA11yProp = (props) => {
|
|
|
1585
1472
|
};
|
|
1586
1473
|
|
|
1587
1474
|
// ../../node_modules/.pnpm/lucide-react@0.525.0_react@19.1.0/node_modules/lucide-react/dist/esm/Icon.js
|
|
1588
|
-
var
|
|
1475
|
+
var import_react32 = require("react");
|
|
1589
1476
|
|
|
1590
1477
|
// ../../node_modules/.pnpm/lucide-react@0.525.0_react@19.1.0/node_modules/lucide-react/dist/esm/defaultAttributes.js
|
|
1591
1478
|
var defaultAttributes = {
|
|
@@ -1601,7 +1488,7 @@ var defaultAttributes = {
|
|
|
1601
1488
|
};
|
|
1602
1489
|
|
|
1603
1490
|
// ../../node_modules/.pnpm/lucide-react@0.525.0_react@19.1.0/node_modules/lucide-react/dist/esm/Icon.js
|
|
1604
|
-
var Icon = (0,
|
|
1491
|
+
var Icon = (0, import_react32.forwardRef)(
|
|
1605
1492
|
(_a, ref) => {
|
|
1606
1493
|
var _b = _a, {
|
|
1607
1494
|
color = "currentColor",
|
|
@@ -1620,7 +1507,7 @@ var Icon = (0, import_react33.forwardRef)(
|
|
|
1620
1507
|
"children",
|
|
1621
1508
|
"iconNode"
|
|
1622
1509
|
]);
|
|
1623
|
-
return (0,
|
|
1510
|
+
return (0, import_react32.createElement)(
|
|
1624
1511
|
"svg",
|
|
1625
1512
|
__spreadValues(__spreadValues(__spreadProps(__spreadValues({
|
|
1626
1513
|
ref
|
|
@@ -1632,7 +1519,7 @@ var Icon = (0, import_react33.forwardRef)(
|
|
|
1632
1519
|
className: mergeClasses("lucide", className)
|
|
1633
1520
|
}), !children && !hasA11yProp(rest) && { "aria-hidden": "true" }), rest),
|
|
1634
1521
|
[
|
|
1635
|
-
...iconNode.map(([tag, attrs]) => (0,
|
|
1522
|
+
...iconNode.map(([tag, attrs]) => (0, import_react32.createElement)(tag, attrs)),
|
|
1636
1523
|
...Array.isArray(children) ? children : [children]
|
|
1637
1524
|
]
|
|
1638
1525
|
);
|
|
@@ -1641,10 +1528,10 @@ var Icon = (0, import_react33.forwardRef)(
|
|
|
1641
1528
|
|
|
1642
1529
|
// ../../node_modules/.pnpm/lucide-react@0.525.0_react@19.1.0/node_modules/lucide-react/dist/esm/createLucideIcon.js
|
|
1643
1530
|
var createLucideIcon = (iconName, iconNode) => {
|
|
1644
|
-
const Component2 = (0,
|
|
1531
|
+
const Component2 = (0, import_react33.forwardRef)(
|
|
1645
1532
|
(_a, ref) => {
|
|
1646
1533
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1647
|
-
return (0,
|
|
1534
|
+
return (0, import_react33.createElement)(Icon, __spreadValues({
|
|
1648
1535
|
ref,
|
|
1649
1536
|
iconNode,
|
|
1650
1537
|
className: mergeClasses(
|
|
@@ -2871,7 +2758,7 @@ var __iconNode111 = [
|
|
|
2871
2758
|
var Zap = createLucideIcon("zap", __iconNode111);
|
|
2872
2759
|
|
|
2873
2760
|
// ../base-ui/src/components/global-icon.tsx
|
|
2874
|
-
var
|
|
2761
|
+
var import_react34 = __toESM(require("react"), 1);
|
|
2875
2762
|
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
2876
2763
|
var tempStyledLimitedIcons = {};
|
|
2877
2764
|
for (const iconNameKey in limited_lucide_icons_exports) {
|
|
@@ -2941,44 +2828,19 @@ function getGlobalIcon(iconKey, createElement3) {
|
|
|
2941
2828
|
}
|
|
2942
2829
|
const FallbackIcon = globalLucideIcons[DEFAULT_FALLBACK_ICON];
|
|
2943
2830
|
if (createElement3) {
|
|
2944
|
-
return
|
|
2831
|
+
return import_react34.default.createElement(FallbackIcon);
|
|
2945
2832
|
}
|
|
2946
2833
|
return FallbackIcon;
|
|
2947
2834
|
}
|
|
2948
2835
|
if (createElement3) {
|
|
2949
|
-
return
|
|
2836
|
+
return import_react34.default.createElement(Icon2);
|
|
2950
2837
|
}
|
|
2951
2838
|
return Icon2;
|
|
2952
2839
|
}
|
|
2953
2840
|
|
|
2954
|
-
// src/main/rich-text-expert.tsx
|
|
2955
|
-
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
2956
|
-
var defaultTagRenderers = {
|
|
2957
|
-
// text Stong
|
|
2958
|
-
strong: (chunks) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("strong", { children: chunks }),
|
|
2959
|
-
// text Emphasis
|
|
2960
|
-
em: (chunks) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("em", { children: chunks }),
|
|
2961
|
-
// text Underline
|
|
2962
|
-
u: (chunks) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("u", { children: chunks }),
|
|
2963
|
-
// text Mark
|
|
2964
|
-
mark: (chunks) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("mark", { className: "bg-purple-300 dark:bg-purple-500 text-neutral-800 dark:text-neutral-300 px-1 rounded", children: chunks }),
|
|
2965
|
-
// text Delete
|
|
2966
|
-
del: (chunks) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("del", { children: chunks }),
|
|
2967
|
-
// text Subscript
|
|
2968
|
-
sub: (chunks) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("sub", { children: chunks }),
|
|
2969
|
-
// text Superscript
|
|
2970
|
-
sup: (chunks) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("sup", { children: chunks })
|
|
2971
|
-
};
|
|
2972
|
-
function createRichTextRenderer(customRenderers) {
|
|
2973
|
-
const renderers = __spreadValues(__spreadValues({}, defaultTagRenderers), customRenderers);
|
|
2974
|
-
return function richText2(t, key) {
|
|
2975
|
-
return t.rich(key, renderers);
|
|
2976
|
-
};
|
|
2977
|
-
}
|
|
2978
|
-
var richText = createRichTextRenderer();
|
|
2979
|
-
|
|
2980
2841
|
// src/main/usage.tsx
|
|
2981
|
-
var
|
|
2842
|
+
var import_rich_text_expert = require("@third-ui/main/rich-text-expert");
|
|
2843
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
2982
2844
|
function Usage(_0) {
|
|
2983
2845
|
return __async(this, arguments, function* ({
|
|
2984
2846
|
locale,
|
|
@@ -2989,29 +2851,29 @@ function Usage(_0) {
|
|
|
2989
2851
|
const data = {
|
|
2990
2852
|
title: t("title"),
|
|
2991
2853
|
eyesOn: t("eyesOn"),
|
|
2992
|
-
description: richText(t, "description"),
|
|
2854
|
+
description: (0, import_rich_text_expert.richText)(t, "description"),
|
|
2993
2855
|
steps: steps.map((step, index) => ({
|
|
2994
2856
|
id: `usage-step-${index}`,
|
|
2995
2857
|
title: step.title,
|
|
2996
|
-
description: richText(t, `steps.${index}.description`),
|
|
2858
|
+
description: (0, import_rich_text_expert.richText)(t, `steps.${index}.description`),
|
|
2997
2859
|
iconKey: step.iconKey,
|
|
2998
2860
|
stepNumber: index + 1
|
|
2999
2861
|
}))
|
|
3000
2862
|
};
|
|
3001
|
-
return /* @__PURE__ */ (0,
|
|
3002
|
-
/* @__PURE__ */ (0,
|
|
2863
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("section", { id: "usage", className: cn("px-16 py-10 mx-16 md:mx-32 scroll-mt-20", sectionClassName), children: [
|
|
2864
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("h2", { className: "text-3xl md:text-4xl font-bold text-center mb-4", children: [
|
|
3003
2865
|
data.title,
|
|
3004
2866
|
" ",
|
|
3005
|
-
/* @__PURE__ */ (0,
|
|
2867
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "text-purple-500", children: data.eyesOn })
|
|
3006
2868
|
] }),
|
|
3007
|
-
/* @__PURE__ */ (0,
|
|
3008
|
-
/* @__PURE__ */ (0,
|
|
2869
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("p", { className: "text-center text-gray-600 dark:text-gray-400 mb-12 text-base md:text-lg mx-auto whitespace-nowrap", children: data.description }),
|
|
2870
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "bg-gray-50 dark:bg-gray-800/60 border border-gray-200 dark:border-gray-700 rounded-2xl p-8 md:p-12 shadow-sm dark:shadow-none", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8 gap-y-12", children: data.steps.map((step) => {
|
|
3009
2871
|
const Icon2 = getGlobalIcon(step.iconKey);
|
|
3010
|
-
return /* @__PURE__ */ (0,
|
|
3011
|
-
/* @__PURE__ */ (0,
|
|
3012
|
-
/* @__PURE__ */ (0,
|
|
3013
|
-
/* @__PURE__ */ (0,
|
|
3014
|
-
/* @__PURE__ */ (0,
|
|
2872
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { "data-usage-step": step.id, className: "flex items-start", children: [
|
|
2873
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "flex-shrink-0 mr-4", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Icon2, { className: "w-8 h-8 text-purple-500" }) }),
|
|
2874
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { children: [
|
|
2875
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("h3", { className: "text-xl font-semibold mb-3 text-gray-900 dark:text-gray-100 flex items-center", children: `${step.stepNumber}. ${step.title}` }),
|
|
2876
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("p", { className: "text-gray-700 dark:text-gray-300", children: step.description })
|
|
3015
2877
|
] })
|
|
3016
2878
|
] }, step.id);
|
|
3017
2879
|
}) }) })
|
|
@@ -3021,7 +2883,8 @@ function Usage(_0) {
|
|
|
3021
2883
|
|
|
3022
2884
|
// src/main/features.tsx
|
|
3023
2885
|
var import_server4 = require("next-intl/server");
|
|
3024
|
-
var
|
|
2886
|
+
var import_rich_text_expert2 = require("@third-ui/main/rich-text-expert");
|
|
2887
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
3025
2888
|
function Features(_0) {
|
|
3026
2889
|
return __async(this, arguments, function* ({
|
|
3027
2890
|
locale,
|
|
@@ -3032,32 +2895,32 @@ function Features(_0) {
|
|
|
3032
2895
|
const data = {
|
|
3033
2896
|
title: t("title"),
|
|
3034
2897
|
eyesOn: t("eyesOn"),
|
|
3035
|
-
description: richText(t, "description"),
|
|
2898
|
+
description: (0, import_rich_text_expert2.richText)(t, "description"),
|
|
3036
2899
|
items: featureItems.map((feature, index) => ({
|
|
3037
2900
|
id: `feature-item-${index}`,
|
|
3038
2901
|
title: feature.title,
|
|
3039
|
-
description: richText(t, `items.${index}.description`),
|
|
2902
|
+
description: (0, import_rich_text_expert2.richText)(t, `items.${index}.description`),
|
|
3040
2903
|
iconKey: feature.iconKey
|
|
3041
2904
|
}))
|
|
3042
2905
|
};
|
|
3043
|
-
return /* @__PURE__ */ (0,
|
|
3044
|
-
/* @__PURE__ */ (0,
|
|
2906
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("section", { id: "features", className: cn("px-16 py-10 mx-16 md:mx-32 scroll-mt-18", sectionClassName), children: [
|
|
2907
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("h2", { className: "text-3xl md:text-4xl font-bold text-center mb-4", children: [
|
|
3045
2908
|
data.title,
|
|
3046
2909
|
" ",
|
|
3047
|
-
/* @__PURE__ */ (0,
|
|
2910
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-purple-500", children: data.eyesOn })
|
|
3048
2911
|
] }),
|
|
3049
|
-
/* @__PURE__ */ (0,
|
|
3050
|
-
/* @__PURE__ */ (0,
|
|
2912
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-center text-gray-600 dark:text-gray-400 mb-12 text-base md:text-lg mx-auto whitespace-nowrap", children: data.description }),
|
|
2913
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8 gap-y-12", children: data.items.map((feature) => {
|
|
3051
2914
|
const Icon2 = getGlobalIcon(feature.iconKey);
|
|
3052
|
-
return /* @__PURE__ */ (0,
|
|
2915
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
3053
2916
|
"div",
|
|
3054
2917
|
{
|
|
3055
2918
|
"data-feature-id": feature.id,
|
|
3056
2919
|
className: "bg-white dark:bg-gray-800/60 p-8 rounded-xl border border-gray-200 dark:border-gray-700 hover:border-purple-300 dark:hover:border-purple-500/50 transition shadow-sm dark:shadow-none",
|
|
3057
2920
|
children: [
|
|
3058
|
-
/* @__PURE__ */ (0,
|
|
3059
|
-
/* @__PURE__ */ (0,
|
|
3060
|
-
/* @__PURE__ */ (0,
|
|
2921
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "text-4xl mb-4 flex items-center justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Icon2, { className: "w-8 h-8" }) }),
|
|
2922
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("h3", { className: "text-xl font-semibold mb-3 text-gray-900 dark:text-gray-100", children: feature.title }),
|
|
2923
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-gray-700 dark:text-gray-300", children: feature.description })
|
|
3061
2924
|
]
|
|
3062
2925
|
},
|
|
3063
2926
|
feature.id
|
|
@@ -3069,7 +2932,8 @@ function Features(_0) {
|
|
|
3069
2932
|
|
|
3070
2933
|
// src/main/tips.tsx
|
|
3071
2934
|
var import_server5 = require("next-intl/server");
|
|
3072
|
-
var
|
|
2935
|
+
var import_rich_text_expert3 = require("@third-ui/main/rich-text-expert");
|
|
2936
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
3073
2937
|
function Tips(_0) {
|
|
3074
2938
|
return __async(this, arguments, function* ({
|
|
3075
2939
|
locale,
|
|
@@ -3080,7 +2944,7 @@ function Tips(_0) {
|
|
|
3080
2944
|
const processedSections = sections.map((section, index) => ({
|
|
3081
2945
|
id: `tip-section-${index}`,
|
|
3082
2946
|
title: section.title,
|
|
3083
|
-
description: richText(t, `sections.${index}.description`)
|
|
2947
|
+
description: (0, import_rich_text_expert3.richText)(t, `sections.${index}.description`)
|
|
3084
2948
|
}));
|
|
3085
2949
|
const midPoint = Math.ceil(processedSections.length / 2);
|
|
3086
2950
|
const leftColumn = processedSections.slice(0, midPoint);
|
|
@@ -3091,15 +2955,15 @@ function Tips(_0) {
|
|
|
3091
2955
|
leftColumn,
|
|
3092
2956
|
rightColumn
|
|
3093
2957
|
};
|
|
3094
|
-
return /* @__PURE__ */ (0,
|
|
3095
|
-
/* @__PURE__ */ (0,
|
|
2958
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("section", { id: "tips", className: cn("px-16 py-10 mx-16 md:mx-32 scroll-mt-20", sectionClassName), children: [
|
|
2959
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("h2", { className: "text-3xl md:text-4xl font-bold text-center mb-16", children: [
|
|
3096
2960
|
data.title,
|
|
3097
2961
|
" ",
|
|
3098
|
-
/* @__PURE__ */ (0,
|
|
2962
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-purple-500", children: data.eyesOn })
|
|
3099
2963
|
] }),
|
|
3100
|
-
/* @__PURE__ */ (0,
|
|
3101
|
-
/* @__PURE__ */ (0,
|
|
3102
|
-
/* @__PURE__ */ (0,
|
|
2964
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-12 bg-gray-50 dark:bg-gray-800/60 border border-gray-200 dark:border-gray-700 rounded-2xl p-8 md:p-12 shadow-sm dark:shadow-none", children: [data.leftColumn, data.rightColumn].map((column, colIndex) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "space-y-8", children: column.map((tip) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { "data-tip-id": tip.id, className: "space-y-4", children: [
|
|
2965
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("h3", { className: "text-2xl font-semibold", children: tip.title }),
|
|
2966
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "", children: tip.description })
|
|
3103
2967
|
] }, tip.id)) }, colIndex)) })
|
|
3104
2968
|
] });
|
|
3105
2969
|
});
|
|
@@ -3107,52 +2971,9 @@ function Tips(_0) {
|
|
|
3107
2971
|
|
|
3108
2972
|
// src/main/faq.tsx
|
|
3109
2973
|
var import_server6 = require("next-intl/server");
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
var
|
|
3113
|
-
function FAQInteractive({ data }) {
|
|
3114
|
-
const [openStates, setOpenStates] = (0, import_react36.useState)({});
|
|
3115
|
-
(0, import_react36.useEffect)(() => {
|
|
3116
|
-
data.items.forEach((item) => {
|
|
3117
|
-
const toggleButton = document.querySelector(`[data-faq-toggle="${item.id}"]`);
|
|
3118
|
-
const contentDiv = document.querySelector(`[data-faq-content="${item.id}"]`);
|
|
3119
|
-
const iconSvg = document.querySelector(`[data-faq-icon="${item.id}"]`);
|
|
3120
|
-
if (toggleButton && contentDiv && iconSvg) {
|
|
3121
|
-
const handleClick = () => {
|
|
3122
|
-
const isOpen = openStates[item.id] || false;
|
|
3123
|
-
const newOpenState = !isOpen;
|
|
3124
|
-
setOpenStates((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
3125
|
-
[item.id]: newOpenState
|
|
3126
|
-
}));
|
|
3127
|
-
if (newOpenState) {
|
|
3128
|
-
contentDiv.classList.remove("hidden");
|
|
3129
|
-
toggleButton.setAttribute("aria-expanded", "true");
|
|
3130
|
-
iconSvg.style.transform = "rotate(90deg)";
|
|
3131
|
-
} else {
|
|
3132
|
-
contentDiv.classList.add("hidden");
|
|
3133
|
-
toggleButton.setAttribute("aria-expanded", "false");
|
|
3134
|
-
iconSvg.style.transform = "rotate(0deg)";
|
|
3135
|
-
}
|
|
3136
|
-
};
|
|
3137
|
-
toggleButton.addEventListener("click", handleClick);
|
|
3138
|
-
}
|
|
3139
|
-
});
|
|
3140
|
-
return () => {
|
|
3141
|
-
data.items.forEach((item) => {
|
|
3142
|
-
var _a;
|
|
3143
|
-
const toggleButton = document.querySelector(`[data-faq-toggle="${item.id}"]`);
|
|
3144
|
-
if (toggleButton) {
|
|
3145
|
-
const newButton = toggleButton.cloneNode(true);
|
|
3146
|
-
(_a = toggleButton.parentNode) == null ? void 0 : _a.replaceChild(newButton, toggleButton);
|
|
3147
|
-
}
|
|
3148
|
-
});
|
|
3149
|
-
};
|
|
3150
|
-
}, [data, openStates]);
|
|
3151
|
-
return null;
|
|
3152
|
-
}
|
|
3153
|
-
|
|
3154
|
-
// src/main/faq.tsx
|
|
3155
|
-
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
2974
|
+
var import_rich_text_expert4 = require("@third-ui/main/rich-text-expert");
|
|
2975
|
+
var import_main2 = require("@third-ui/main");
|
|
2976
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
3156
2977
|
function FAQ(_0) {
|
|
3157
2978
|
return __async(this, arguments, function* ({
|
|
3158
2979
|
locale,
|
|
@@ -3162,31 +2983,31 @@ function FAQ(_0) {
|
|
|
3162
2983
|
const rawItems = t.raw("items");
|
|
3163
2984
|
const data = {
|
|
3164
2985
|
title: t("title"),
|
|
3165
|
-
description: richText(t, "description"),
|
|
2986
|
+
description: (0, import_rich_text_expert4.richText)(t, "description"),
|
|
3166
2987
|
items: rawItems.map((item, index) => ({
|
|
3167
2988
|
id: `faq-item-${index}`,
|
|
3168
2989
|
question: item.question,
|
|
3169
|
-
answer: richText(t, `items.${index}.answer`)
|
|
2990
|
+
answer: (0, import_rich_text_expert4.richText)(t, `items.${index}.answer`)
|
|
3170
2991
|
}))
|
|
3171
2992
|
};
|
|
3172
|
-
return /* @__PURE__ */ (0,
|
|
3173
|
-
/* @__PURE__ */ (0,
|
|
3174
|
-
/* @__PURE__ */ (0,
|
|
3175
|
-
/* @__PURE__ */ (0,
|
|
2993
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("section", { id: "faq", className: cn("px-16 py-10 mx-16 md:mx-32 scroll-mt-20", sectionClassName), children: [
|
|
2994
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("h2", { className: "text-3xl md:text-4xl font-bold text-center mb-4", children: data.title }),
|
|
2995
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-center text-gray-600 dark:text-gray-400 mb-12 text-base md:text-lg mx-auto", children: data.description }),
|
|
2996
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "space-y-6", children: data.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
3176
2997
|
"div",
|
|
3177
2998
|
{
|
|
3178
2999
|
"data-faq-id": item.id,
|
|
3179
3000
|
className: "bg-white dark:bg-gray-800/60 p-6 rounded-xl border border-gray-200 dark:border-gray-700 hover:border-purple-300 dark:hover:border-purple-500/50 transition shadow-sm dark:shadow-none",
|
|
3180
3001
|
children: [
|
|
3181
|
-
/* @__PURE__ */ (0,
|
|
3002
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
3182
3003
|
"button",
|
|
3183
3004
|
{
|
|
3184
3005
|
className: "w-full flex items-center justify-between text-left focus:outline-none",
|
|
3185
3006
|
"data-faq-toggle": item.id,
|
|
3186
3007
|
"aria-expanded": "false",
|
|
3187
3008
|
children: [
|
|
3188
|
-
/* @__PURE__ */ (0,
|
|
3189
|
-
/* @__PURE__ */ (0,
|
|
3009
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-lg font-semibold text-gray-900 dark:text-gray-100", children: item.question }),
|
|
3010
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
3190
3011
|
"svg",
|
|
3191
3012
|
{
|
|
3192
3013
|
className: "w-6 h-6 text-gray-400 ml-2 transition-transform duration-200",
|
|
@@ -3194,13 +3015,13 @@ function FAQ(_0) {
|
|
|
3194
3015
|
fill: "none",
|
|
3195
3016
|
stroke: "currentColor",
|
|
3196
3017
|
viewBox: "0 0 24 24",
|
|
3197
|
-
children: /* @__PURE__ */ (0,
|
|
3018
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
|
|
3198
3019
|
}
|
|
3199
3020
|
)
|
|
3200
3021
|
]
|
|
3201
3022
|
}
|
|
3202
3023
|
),
|
|
3203
|
-
/* @__PURE__ */ (0,
|
|
3024
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
3204
3025
|
"div",
|
|
3205
3026
|
{
|
|
3206
3027
|
className: "mt-4 text-gray-700 dark:text-gray-300 text-base hidden",
|
|
@@ -3212,14 +3033,15 @@ function FAQ(_0) {
|
|
|
3212
3033
|
},
|
|
3213
3034
|
item.id
|
|
3214
3035
|
)) }),
|
|
3215
|
-
/* @__PURE__ */ (0,
|
|
3036
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_main2.FAQInteractive, { data })
|
|
3216
3037
|
] });
|
|
3217
3038
|
});
|
|
3218
3039
|
}
|
|
3219
3040
|
|
|
3220
3041
|
// src/main/seo-content.tsx
|
|
3221
3042
|
var import_server7 = require("next-intl/server");
|
|
3222
|
-
var
|
|
3043
|
+
var import_rich_text_expert5 = require("@third-ui/main/rich-text-expert");
|
|
3044
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
3223
3045
|
function SeoContent(_0) {
|
|
3224
3046
|
return __async(this, arguments, function* ({
|
|
3225
3047
|
locale,
|
|
@@ -3231,30 +3053,30 @@ function SeoContent(_0) {
|
|
|
3231
3053
|
title: t("title"),
|
|
3232
3054
|
eyesOn: t("eyesOn"),
|
|
3233
3055
|
description: t("description"),
|
|
3234
|
-
intro: richText(t, "intro"),
|
|
3056
|
+
intro: (0, import_rich_text_expert5.richText)(t, "intro"),
|
|
3235
3057
|
sections: rawSections.map((section, index) => ({
|
|
3236
3058
|
id: `seo-section-${index}`,
|
|
3237
3059
|
title: section.title,
|
|
3238
|
-
content: richText(t, `sections.${index}.content`)
|
|
3060
|
+
content: (0, import_rich_text_expert5.richText)(t, `sections.${index}.content`)
|
|
3239
3061
|
})),
|
|
3240
|
-
conclusion: richText(t, "conclusion")
|
|
3062
|
+
conclusion: (0, import_rich_text_expert5.richText)(t, "conclusion")
|
|
3241
3063
|
};
|
|
3242
|
-
return /* @__PURE__ */ (0,
|
|
3243
|
-
/* @__PURE__ */ (0,
|
|
3064
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("section", { id: "seo", className: cn("px-16 py-10 mx-16 md:mx-32 scroll-mt-20", sectionClassName), children: [
|
|
3065
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("h2", { className: "text-3xl md:text-4xl font-bold text-center mb-8", children: [
|
|
3244
3066
|
data.title,
|
|
3245
3067
|
" ",
|
|
3246
|
-
/* @__PURE__ */ (0,
|
|
3068
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-purple-500", children: data.eyesOn })
|
|
3247
3069
|
] }),
|
|
3248
|
-
/* @__PURE__ */ (0,
|
|
3249
|
-
/* @__PURE__ */ (0,
|
|
3250
|
-
/* @__PURE__ */ (0,
|
|
3251
|
-
/* @__PURE__ */ (0,
|
|
3252
|
-
data.sections.map((section) => /* @__PURE__ */ (0,
|
|
3253
|
-
/* @__PURE__ */ (0,
|
|
3254
|
-
/* @__PURE__ */ (0,
|
|
3070
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("h3", { className: "text-center text-gray-600 dark:text-gray-400 mb-12 text-lg", children: data.description }),
|
|
3071
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "bg-gray-50 dark:bg-gray-800/60 border border-gray-200 dark:border-gray-700 rounded-2xl p-8 md:p-12 shadow-sm dark:shadow-none", children: [
|
|
3072
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "space-y-10", children: [
|
|
3073
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-gray-600 dark:text-gray-400 text-lg", children: data.intro }),
|
|
3074
|
+
data.sections.map((section) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { "data-seo-section": section.id, children: [
|
|
3075
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("h2", { className: "text-xl font-semibold mb-3 text-gray-900 dark:text-gray-100 flex items-center", children: section.title }),
|
|
3076
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-gray-700 dark:text-gray-300", children: section.content })
|
|
3255
3077
|
] }, section.id))
|
|
3256
3078
|
] }),
|
|
3257
|
-
/* @__PURE__ */ (0,
|
|
3079
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "mt-10 text-gray-600 dark:text-gray-400 text-lg", children: data.conclusion })
|
|
3258
3080
|
] })
|
|
3259
3081
|
] });
|
|
3260
3082
|
});
|
|
@@ -3262,306 +3084,9 @@ function SeoContent(_0) {
|
|
|
3262
3084
|
|
|
3263
3085
|
// src/main/cta.tsx
|
|
3264
3086
|
var import_server8 = require("next-intl/server");
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
var
|
|
3268
|
-
|
|
3269
|
-
// ../../node_modules/.pnpm/@radix-ui+react-slot@1.2.3_@types+react@19.1.2_react@19.1.0/node_modules/@radix-ui/react-slot/dist/index.mjs
|
|
3270
|
-
var React34 = __toESM(require("react"), 1);
|
|
3271
|
-
|
|
3272
|
-
// ../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@19.1.2_react@19.1.0/node_modules/@radix-ui/react-compose-refs/dist/index.mjs
|
|
3273
|
-
var React33 = __toESM(require("react"), 1);
|
|
3274
|
-
function setRef(ref, value) {
|
|
3275
|
-
if (typeof ref === "function") {
|
|
3276
|
-
return ref(value);
|
|
3277
|
-
} else if (ref !== null && ref !== void 0) {
|
|
3278
|
-
ref.current = value;
|
|
3279
|
-
}
|
|
3280
|
-
}
|
|
3281
|
-
function composeRefs(...refs) {
|
|
3282
|
-
return (node) => {
|
|
3283
|
-
let hasCleanup = false;
|
|
3284
|
-
const cleanups = refs.map((ref) => {
|
|
3285
|
-
const cleanup = setRef(ref, node);
|
|
3286
|
-
if (!hasCleanup && typeof cleanup == "function") {
|
|
3287
|
-
hasCleanup = true;
|
|
3288
|
-
}
|
|
3289
|
-
return cleanup;
|
|
3290
|
-
});
|
|
3291
|
-
if (hasCleanup) {
|
|
3292
|
-
return () => {
|
|
3293
|
-
for (let i = 0; i < cleanups.length; i++) {
|
|
3294
|
-
const cleanup = cleanups[i];
|
|
3295
|
-
if (typeof cleanup == "function") {
|
|
3296
|
-
cleanup();
|
|
3297
|
-
} else {
|
|
3298
|
-
setRef(refs[i], null);
|
|
3299
|
-
}
|
|
3300
|
-
}
|
|
3301
|
-
};
|
|
3302
|
-
}
|
|
3303
|
-
};
|
|
3304
|
-
}
|
|
3305
|
-
|
|
3306
|
-
// ../../node_modules/.pnpm/@radix-ui+react-slot@1.2.3_@types+react@19.1.2_react@19.1.0/node_modules/@radix-ui/react-slot/dist/index.mjs
|
|
3307
|
-
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
3308
|
-
// @__NO_SIDE_EFFECTS__
|
|
3309
|
-
function createSlot(ownerName) {
|
|
3310
|
-
const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
|
|
3311
|
-
const Slot2 = React34.forwardRef((props, forwardedRef) => {
|
|
3312
|
-
const _a = props, { children } = _a, slotProps = __objRest(_a, ["children"]);
|
|
3313
|
-
const childrenArray = React34.Children.toArray(children);
|
|
3314
|
-
const slottable = childrenArray.find(isSlottable);
|
|
3315
|
-
if (slottable) {
|
|
3316
|
-
const newElement = slottable.props.children;
|
|
3317
|
-
const newChildren = childrenArray.map((child) => {
|
|
3318
|
-
if (child === slottable) {
|
|
3319
|
-
if (React34.Children.count(newElement) > 1) return React34.Children.only(null);
|
|
3320
|
-
return React34.isValidElement(newElement) ? newElement.props.children : null;
|
|
3321
|
-
} else {
|
|
3322
|
-
return child;
|
|
3323
|
-
}
|
|
3324
|
-
});
|
|
3325
|
-
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SlotClone, __spreadProps(__spreadValues({}, slotProps), { ref: forwardedRef, children: React34.isValidElement(newElement) ? React34.cloneElement(newElement, void 0, newChildren) : null }));
|
|
3326
|
-
}
|
|
3327
|
-
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SlotClone, __spreadProps(__spreadValues({}, slotProps), { ref: forwardedRef, children }));
|
|
3328
|
-
});
|
|
3329
|
-
Slot2.displayName = `${ownerName}.Slot`;
|
|
3330
|
-
return Slot2;
|
|
3331
|
-
}
|
|
3332
|
-
var Slot = /* @__PURE__ */ createSlot("Slot");
|
|
3333
|
-
// @__NO_SIDE_EFFECTS__
|
|
3334
|
-
function createSlotClone(ownerName) {
|
|
3335
|
-
const SlotClone = React34.forwardRef((props, forwardedRef) => {
|
|
3336
|
-
const _a = props, { children } = _a, slotProps = __objRest(_a, ["children"]);
|
|
3337
|
-
if (React34.isValidElement(children)) {
|
|
3338
|
-
const childrenRef = getElementRef(children);
|
|
3339
|
-
const props2 = mergeProps(slotProps, children.props);
|
|
3340
|
-
if (children.type !== React34.Fragment) {
|
|
3341
|
-
props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;
|
|
3342
|
-
}
|
|
3343
|
-
return React34.cloneElement(children, props2);
|
|
3344
|
-
}
|
|
3345
|
-
return React34.Children.count(children) > 1 ? React34.Children.only(null) : null;
|
|
3346
|
-
});
|
|
3347
|
-
SlotClone.displayName = `${ownerName}.SlotClone`;
|
|
3348
|
-
return SlotClone;
|
|
3349
|
-
}
|
|
3350
|
-
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
|
|
3351
|
-
function isSlottable(child) {
|
|
3352
|
-
return React34.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
|
|
3353
|
-
}
|
|
3354
|
-
function mergeProps(slotProps, childProps) {
|
|
3355
|
-
const overrideProps = __spreadValues({}, childProps);
|
|
3356
|
-
for (const propName in childProps) {
|
|
3357
|
-
const slotPropValue = slotProps[propName];
|
|
3358
|
-
const childPropValue = childProps[propName];
|
|
3359
|
-
const isHandler = /^on[A-Z]/.test(propName);
|
|
3360
|
-
if (isHandler) {
|
|
3361
|
-
if (slotPropValue && childPropValue) {
|
|
3362
|
-
overrideProps[propName] = (...args) => {
|
|
3363
|
-
const result = childPropValue(...args);
|
|
3364
|
-
slotPropValue(...args);
|
|
3365
|
-
return result;
|
|
3366
|
-
};
|
|
3367
|
-
} else if (slotPropValue) {
|
|
3368
|
-
overrideProps[propName] = slotPropValue;
|
|
3369
|
-
}
|
|
3370
|
-
} else if (propName === "style") {
|
|
3371
|
-
overrideProps[propName] = __spreadValues(__spreadValues({}, slotPropValue), childPropValue);
|
|
3372
|
-
} else if (propName === "className") {
|
|
3373
|
-
overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
|
|
3374
|
-
}
|
|
3375
|
-
}
|
|
3376
|
-
return __spreadValues(__spreadValues({}, slotProps), overrideProps);
|
|
3377
|
-
}
|
|
3378
|
-
function getElementRef(element) {
|
|
3379
|
-
var _a, _b;
|
|
3380
|
-
let getter = (_a = Object.getOwnPropertyDescriptor(element.props, "ref")) == null ? void 0 : _a.get;
|
|
3381
|
-
let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
3382
|
-
if (mayWarn) {
|
|
3383
|
-
return element.ref;
|
|
3384
|
-
}
|
|
3385
|
-
getter = (_b = Object.getOwnPropertyDescriptor(element, "ref")) == null ? void 0 : _b.get;
|
|
3386
|
-
mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
3387
|
-
if (mayWarn) {
|
|
3388
|
-
return element.props.ref;
|
|
3389
|
-
}
|
|
3390
|
-
return element.props.ref || element.ref;
|
|
3391
|
-
}
|
|
3392
|
-
|
|
3393
|
-
// ../base-ui/src/ui/button.tsx
|
|
3394
|
-
var import_class_variance_authority = require("class-variance-authority");
|
|
3395
|
-
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
3396
|
-
var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
3397
|
-
"inline-flex items-center gap-2 whitespace-nowrap rounded-md text-sm ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
3398
|
-
{
|
|
3399
|
-
variants: {
|
|
3400
|
-
variant: {
|
|
3401
|
-
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
3402
|
-
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
3403
|
-
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
3404
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
3405
|
-
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
3406
|
-
link: "text-primary underline-offset-4 hover:underline"
|
|
3407
|
-
},
|
|
3408
|
-
size: {
|
|
3409
|
-
default: "h-10 px-4 py-2",
|
|
3410
|
-
sm: "h-9 rounded-md px-3",
|
|
3411
|
-
lg: "h-11 rounded-md px-8",
|
|
3412
|
-
icon: "h-10 w-10"
|
|
3413
|
-
}
|
|
3414
|
-
},
|
|
3415
|
-
defaultVariants: {
|
|
3416
|
-
variant: "default",
|
|
3417
|
-
size: "default"
|
|
3418
|
-
}
|
|
3419
|
-
}
|
|
3420
|
-
);
|
|
3421
|
-
var Button = React35.forwardRef(
|
|
3422
|
-
(_a, ref) => {
|
|
3423
|
-
var _b = _a, { className, variant, size, asChild = false, loading = false, children } = _b, props = __objRest(_b, ["className", "variant", "size", "asChild", "loading", "children"]);
|
|
3424
|
-
const Comp = asChild ? Slot : "button";
|
|
3425
|
-
if (asChild) {
|
|
3426
|
-
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3427
|
-
Comp,
|
|
3428
|
-
__spreadProps(__spreadValues({
|
|
3429
|
-
className: cn(buttonVariants({ variant, size, className })),
|
|
3430
|
-
ref,
|
|
3431
|
-
disabled: loading || props.disabled
|
|
3432
|
-
}, props), {
|
|
3433
|
-
children
|
|
3434
|
-
})
|
|
3435
|
-
);
|
|
3436
|
-
}
|
|
3437
|
-
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
3438
|
-
Comp,
|
|
3439
|
-
__spreadProps(__spreadValues({
|
|
3440
|
-
className: cn(buttonVariants({ variant, size, className })),
|
|
3441
|
-
ref,
|
|
3442
|
-
disabled: loading || props.disabled
|
|
3443
|
-
}, props), {
|
|
3444
|
-
children: [
|
|
3445
|
-
children,
|
|
3446
|
-
loading && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(globalLucideIcons.Loader2, { className: "ml-2 h-4 w-4 animate-spin" })
|
|
3447
|
-
]
|
|
3448
|
-
})
|
|
3449
|
-
);
|
|
3450
|
-
}
|
|
3451
|
-
);
|
|
3452
|
-
Button.displayName = "Button";
|
|
3453
|
-
|
|
3454
|
-
// src/fuma/mdx/gradient-button.tsx
|
|
3455
|
-
var import_link2 = __toESM(require("next/link"));
|
|
3456
|
-
var import_react37 = __toESM(require("react"));
|
|
3457
|
-
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
3458
|
-
function GradientButton({
|
|
3459
|
-
title,
|
|
3460
|
-
icon,
|
|
3461
|
-
align = "left",
|
|
3462
|
-
disabled = false,
|
|
3463
|
-
className = "",
|
|
3464
|
-
href,
|
|
3465
|
-
openInNewTab = true,
|
|
3466
|
-
onClick,
|
|
3467
|
-
loadingText,
|
|
3468
|
-
preventDoubleClick = true
|
|
3469
|
-
}) {
|
|
3470
|
-
const [isLoading, setIsLoading] = (0, import_react37.useState)(false);
|
|
3471
|
-
const actualLoadingText = loadingText || (title == null ? void 0 : title.toString().trim()) || "Loading...";
|
|
3472
|
-
const getAlignmentClass = () => {
|
|
3473
|
-
switch (align) {
|
|
3474
|
-
case "center":
|
|
3475
|
-
return "justify-center";
|
|
3476
|
-
case "right":
|
|
3477
|
-
return "justify-end";
|
|
3478
|
-
default:
|
|
3479
|
-
return "justify-start";
|
|
3480
|
-
}
|
|
3481
|
-
};
|
|
3482
|
-
const handleClick = (e) => __async(null, null, function* () {
|
|
3483
|
-
if (disabled || isLoading) {
|
|
3484
|
-
e.preventDefault();
|
|
3485
|
-
return;
|
|
3486
|
-
}
|
|
3487
|
-
if (onClick) {
|
|
3488
|
-
e.preventDefault();
|
|
3489
|
-
if (preventDoubleClick) {
|
|
3490
|
-
setIsLoading(true);
|
|
3491
|
-
}
|
|
3492
|
-
try {
|
|
3493
|
-
yield onClick();
|
|
3494
|
-
} catch (error) {
|
|
3495
|
-
console.error("GradientButton onClick error:", error);
|
|
3496
|
-
} finally {
|
|
3497
|
-
if (preventDoubleClick) {
|
|
3498
|
-
setIsLoading(false);
|
|
3499
|
-
}
|
|
3500
|
-
}
|
|
3501
|
-
}
|
|
3502
|
-
});
|
|
3503
|
-
const isDisabled = disabled || isLoading;
|
|
3504
|
-
const displayTitle = isLoading ? actualLoadingText : title;
|
|
3505
|
-
const displayIcon = isLoading ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(globalLucideIcons.Loader2, { className: "h-4 w-4 text-white animate-spin" }) : icon ? import_react37.default.cloneElement(icon, {
|
|
3506
|
-
className: "h-4 w-4 text-white"
|
|
3507
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(globalLucideIcons.ArrowRight, { className: "h-4 w-4 text-white" });
|
|
3508
|
-
const buttonContent = onClick ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
|
|
3509
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { children: displayIcon }),
|
|
3510
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ml-1", children: displayTitle })
|
|
3511
|
-
] }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
|
|
3512
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { children: displayTitle }),
|
|
3513
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ml-1", children: displayIcon })
|
|
3514
|
-
] });
|
|
3515
|
-
const buttonClassName = `
|
|
3516
|
-
bg-gradient-to-r
|
|
3517
|
-
from-purple-400 to-pink-500
|
|
3518
|
-
hover:from-purple-500 hover:to-pink-600
|
|
3519
|
-
dark:from-purple-500 dark:to-pink-600
|
|
3520
|
-
dark:hover:from-purple-600 dark:hover:to-pink-700
|
|
3521
|
-
text-white text-base font-bold shadow-lg hover:shadow-xl
|
|
3522
|
-
transition-all duration-300
|
|
3523
|
-
rounded-full
|
|
3524
|
-
${isDisabled ? "opacity-50 cursor-not-allowed" : ""}
|
|
3525
|
-
${className}
|
|
3526
|
-
`;
|
|
3527
|
-
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: `flex flex-col sm:flex-row gap-3 ${getAlignmentClass()}`, children: onClick ? (
|
|
3528
|
-
// for click
|
|
3529
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3530
|
-
Button,
|
|
3531
|
-
{
|
|
3532
|
-
size: "lg",
|
|
3533
|
-
className: buttonClassName,
|
|
3534
|
-
onClick: handleClick,
|
|
3535
|
-
disabled: isDisabled,
|
|
3536
|
-
children: buttonContent
|
|
3537
|
-
}
|
|
3538
|
-
)
|
|
3539
|
-
) : (
|
|
3540
|
-
// for Link
|
|
3541
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3542
|
-
Button,
|
|
3543
|
-
{
|
|
3544
|
-
asChild: true,
|
|
3545
|
-
size: "lg",
|
|
3546
|
-
className: buttonClassName,
|
|
3547
|
-
disabled: isDisabled,
|
|
3548
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3549
|
-
import_link2.default,
|
|
3550
|
-
__spreadProps(__spreadValues({
|
|
3551
|
-
href: href || "#",
|
|
3552
|
-
className: "no-underline hover:no-underline"
|
|
3553
|
-
}, openInNewTab ? { target: "_blank", rel: "noopener noreferrer" } : {}), {
|
|
3554
|
-
onClick: isDisabled ? (e) => e.preventDefault() : void 0,
|
|
3555
|
-
children: buttonContent
|
|
3556
|
-
})
|
|
3557
|
-
)
|
|
3558
|
-
}
|
|
3559
|
-
)
|
|
3560
|
-
) });
|
|
3561
|
-
}
|
|
3562
|
-
|
|
3563
|
-
// src/main/cta.tsx
|
|
3564
|
-
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
3087
|
+
var import_gradient_button = require("@third-ui/fuma/mdx/gradient-button");
|
|
3088
|
+
var import_rich_text_expert6 = require("@third-ui/main/rich-text-expert");
|
|
3089
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
3565
3090
|
function CTA(_0) {
|
|
3566
3091
|
return __async(this, arguments, function* ({
|
|
3567
3092
|
locale,
|
|
@@ -3571,25 +3096,25 @@ function CTA(_0) {
|
|
|
3571
3096
|
const data = {
|
|
3572
3097
|
title: t("title"),
|
|
3573
3098
|
eyesOn: t("eyesOn"),
|
|
3574
|
-
description1: richText(t, "description1"),
|
|
3099
|
+
description1: (0, import_rich_text_expert6.richText)(t, "description1"),
|
|
3575
3100
|
description2: t("description2"),
|
|
3576
3101
|
button: t("button"),
|
|
3577
3102
|
url: t("url")
|
|
3578
3103
|
};
|
|
3579
|
-
return /* @__PURE__ */ (0,
|
|
3580
|
-
/* @__PURE__ */ (0,
|
|
3104
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("section", { id: "cta", className: cn("px-16 py-20 mx-16 md:mx-32 scroll-mt-20", sectionClassName), children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "\n bg-gradient-to-r from-[#f7f8fa] via-[#e0c3fc] to-[#b2fefa]\n dark:bg-gradient-to-r dark:from-[#2d0b4e] dark:via-[#6a3fa0] dark:to-[#3a185a]\n rounded-2xl p-12 text-center\n bg-[length:200%_auto] animate-cta-gradient-wave\n ", children: [
|
|
3105
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("h2", { className: "text-3xl md:text-4xl font-bold mb-6", children: [
|
|
3581
3106
|
data.title,
|
|
3582
3107
|
" ",
|
|
3583
|
-
/* @__PURE__ */ (0,
|
|
3108
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "text-purple-400", children: data.eyesOn }),
|
|
3584
3109
|
"?"
|
|
3585
3110
|
] }),
|
|
3586
|
-
/* @__PURE__ */ (0,
|
|
3111
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("p", { className: "text-2xl mx-auto mb-8", children: [
|
|
3587
3112
|
data.description1,
|
|
3588
|
-
/* @__PURE__ */ (0,
|
|
3589
|
-
/* @__PURE__ */ (0,
|
|
3113
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("br", {}),
|
|
3114
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "text-purple-400", children: data.description2 })
|
|
3590
3115
|
] }),
|
|
3591
|
-
/* @__PURE__ */ (0,
|
|
3592
|
-
GradientButton,
|
|
3116
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3117
|
+
import_gradient_button.GradientButton,
|
|
3593
3118
|
{
|
|
3594
3119
|
title: data.button,
|
|
3595
3120
|
href: data.url,
|
|
@@ -3602,8 +3127,8 @@ function CTA(_0) {
|
|
|
3602
3127
|
|
|
3603
3128
|
// src/main/footer.tsx
|
|
3604
3129
|
var import_server9 = require("next-intl/server");
|
|
3605
|
-
var
|
|
3606
|
-
var
|
|
3130
|
+
var import_link2 = __toESM(require("next/link"));
|
|
3131
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
3607
3132
|
function Footer(_0) {
|
|
3608
3133
|
return __async(this, arguments, function* ({ locale }) {
|
|
3609
3134
|
const tFooter = yield (0, import_server9.getTranslations)({ locale, namespace: "footer" });
|
|
@@ -3615,243 +3140,40 @@ function Footer(_0) {
|
|
|
3615
3140
|
company: tFooter("company"),
|
|
3616
3141
|
copyright: tFooter("copyright", { year: (/* @__PURE__ */ new Date()).getFullYear(), name: tFooter("company") })
|
|
3617
3142
|
};
|
|
3618
|
-
return /* @__PURE__ */ (0,
|
|
3619
|
-
/* @__PURE__ */ (0,
|
|
3620
|
-
/* @__PURE__ */ (0,
|
|
3621
|
-
/* @__PURE__ */ (0,
|
|
3622
|
-
/* @__PURE__ */ (0,
|
|
3143
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "mb-10 w-full mx-auto border-t-purple-700/80 border-t-1", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("footer", { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "w-full flex flex-col items-center justify-center px-4 py-8 space-y-3", children: [
|
|
3144
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex items-center justify-center space-x-6 text-xs", children: [
|
|
3145
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_link2.default, { href: `/${locale}/legal/terms`, className: "flex items-center space-x-1 hover:underline", children: [
|
|
3146
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(globalLucideIcons.ReceiptText, { className: "h-3.5 w-3.5" }),
|
|
3147
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { children: data.terms })
|
|
3623
3148
|
] }),
|
|
3624
|
-
/* @__PURE__ */ (0,
|
|
3625
|
-
/* @__PURE__ */ (0,
|
|
3626
|
-
/* @__PURE__ */ (0,
|
|
3149
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_link2.default, { href: `/${locale}/legal/privacy`, className: "flex items-center space-x-1 hover:underline", children: [
|
|
3150
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(globalLucideIcons.ShieldUser, { className: "h-3.5 w-3.5" }),
|
|
3151
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { children: data.privacy })
|
|
3627
3152
|
] }),
|
|
3628
|
-
/* @__PURE__ */ (0,
|
|
3629
|
-
/* @__PURE__ */ (0,
|
|
3630
|
-
/* @__PURE__ */ (0,
|
|
3153
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "relative group", children: [
|
|
3154
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "absolute left-2/3 -translate-x-1/4 bottom-full mb-1 hidden group-hover:block bg-zinc-600 text-white text-xs rounded px-3 py-1 whitespace-nowrap z-10 shadow-lg", children: data.email }),
|
|
3155
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
3631
3156
|
"a",
|
|
3632
3157
|
{
|
|
3633
3158
|
href: `mailto:${data.email}`,
|
|
3634
3159
|
className: "flex items-center space-x-1 underline cursor-pointer px-2",
|
|
3635
3160
|
children: [
|
|
3636
|
-
/* @__PURE__ */ (0,
|
|
3637
|
-
/* @__PURE__ */ (0,
|
|
3161
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(globalLucideIcons.Mail, { className: "h-3.5 w-3.5" }),
|
|
3162
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { children: data.contactUs })
|
|
3638
3163
|
]
|
|
3639
3164
|
}
|
|
3640
3165
|
)
|
|
3641
3166
|
] })
|
|
3642
3167
|
] }),
|
|
3643
|
-
/* @__PURE__ */ (0,
|
|
3168
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "text-xs text-center", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { children: data.copyright }) })
|
|
3644
3169
|
] }) }) });
|
|
3645
3170
|
});
|
|
3646
3171
|
}
|
|
3647
3172
|
|
|
3648
3173
|
// src/main/price-plan.tsx
|
|
3649
3174
|
var import_server10 = require("next-intl/server");
|
|
3650
|
-
|
|
3651
|
-
|
|
3652
|
-
var import_react38 = require("react");
|
|
3653
|
-
var import_navigation = require("next/navigation");
|
|
3654
|
-
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
3655
|
-
function PricePlanInteractive({ data }) {
|
|
3656
|
-
const [billingKey, setBillingKey] = (0, import_react38.useState)(data.billingSwitch.defaultKey);
|
|
3657
|
-
const [tooltip, setTooltip] = (0, import_react38.useState)({ show: false, content: "", x: 0, y: 0 });
|
|
3658
|
-
const router = (0, import_navigation.useRouter)();
|
|
3659
|
-
(0, import_react38.useEffect)(() => {
|
|
3660
|
-
const monthlyButton = document.querySelector('[data-billing-button="monthly"]');
|
|
3661
|
-
const yearlyButton = document.querySelector('[data-billing-button="yearly"]');
|
|
3662
|
-
const handleBillingSwitch = (newBillingKey) => {
|
|
3663
|
-
setBillingKey(newBillingKey);
|
|
3664
|
-
updatePrices(newBillingKey);
|
|
3665
|
-
updateDiscountInfo(newBillingKey);
|
|
3666
|
-
updateButtonStyles(newBillingKey);
|
|
3667
|
-
};
|
|
3668
|
-
if (monthlyButton) {
|
|
3669
|
-
monthlyButton.addEventListener("click", () => handleBillingSwitch("monthly"));
|
|
3670
|
-
}
|
|
3671
|
-
if (yearlyButton) {
|
|
3672
|
-
yearlyButton.addEventListener("click", () => handleBillingSwitch("yearly"));
|
|
3673
|
-
}
|
|
3674
|
-
data.plans.forEach((plan) => {
|
|
3675
|
-
var _a;
|
|
3676
|
-
(_a = plan.features) == null ? void 0 : _a.forEach((feature, i) => {
|
|
3677
|
-
if (feature == null ? void 0 : feature.tooltip) {
|
|
3678
|
-
const tooltipTrigger = document.querySelector(`[data-tooltip-trigger="${plan.key}-${i}"]`);
|
|
3679
|
-
if (tooltipTrigger) {
|
|
3680
|
-
const handleMouseEnter = (e) => {
|
|
3681
|
-
setTooltip({
|
|
3682
|
-
show: true,
|
|
3683
|
-
content: feature.tooltip,
|
|
3684
|
-
x: e.clientX,
|
|
3685
|
-
y: e.clientY
|
|
3686
|
-
});
|
|
3687
|
-
};
|
|
3688
|
-
const handleMouseMove = (e) => {
|
|
3689
|
-
setTooltip((prev) => __spreadProps(__spreadValues({}, prev), { x: e.clientX, y: e.clientY }));
|
|
3690
|
-
};
|
|
3691
|
-
const handleMouseLeave = () => {
|
|
3692
|
-
setTooltip((prev) => __spreadProps(__spreadValues({}, prev), { show: false }));
|
|
3693
|
-
};
|
|
3694
|
-
tooltipTrigger.addEventListener("mouseenter", handleMouseEnter);
|
|
3695
|
-
tooltipTrigger.addEventListener("mousemove", handleMouseMove);
|
|
3696
|
-
tooltipTrigger.addEventListener("mouseleave", handleMouseLeave);
|
|
3697
|
-
}
|
|
3698
|
-
}
|
|
3699
|
-
});
|
|
3700
|
-
});
|
|
3701
|
-
data.plans.forEach((plan) => {
|
|
3702
|
-
var _a;
|
|
3703
|
-
const planButton = document.querySelector(`[data-plan-button="${plan.key}"]`);
|
|
3704
|
-
if (planButton && !((_a = plan.button) == null ? void 0 : _a.disabled)) {
|
|
3705
|
-
planButton.addEventListener("click", () => {
|
|
3706
|
-
router.push("/");
|
|
3707
|
-
});
|
|
3708
|
-
}
|
|
3709
|
-
});
|
|
3710
|
-
return () => {
|
|
3711
|
-
var _a, _b;
|
|
3712
|
-
if (monthlyButton) {
|
|
3713
|
-
const newButton = monthlyButton.cloneNode(true);
|
|
3714
|
-
(_a = monthlyButton.parentNode) == null ? void 0 : _a.replaceChild(newButton, monthlyButton);
|
|
3715
|
-
}
|
|
3716
|
-
if (yearlyButton) {
|
|
3717
|
-
const newButton = yearlyButton.cloneNode(true);
|
|
3718
|
-
(_b = yearlyButton.parentNode) == null ? void 0 : _b.replaceChild(newButton, yearlyButton);
|
|
3719
|
-
}
|
|
3720
|
-
data.plans.forEach((plan) => {
|
|
3721
|
-
var _a2;
|
|
3722
|
-
(_a2 = plan.features) == null ? void 0 : _a2.forEach((_feature, i) => {
|
|
3723
|
-
var _a3;
|
|
3724
|
-
const tooltipTrigger = document.querySelector(`[data-tooltip-trigger="${plan.key}-${i}"]`);
|
|
3725
|
-
if (tooltipTrigger) {
|
|
3726
|
-
const newTrigger = tooltipTrigger.cloneNode(true);
|
|
3727
|
-
(_a3 = tooltipTrigger.parentNode) == null ? void 0 : _a3.replaceChild(newTrigger, tooltipTrigger);
|
|
3728
|
-
}
|
|
3729
|
-
});
|
|
3730
|
-
});
|
|
3731
|
-
};
|
|
3732
|
-
}, [data, router]);
|
|
3733
|
-
const updatePrices = (newBillingKey) => {
|
|
3734
|
-
const currentBilling = data.pricePlanConfig.billingOptions.find((opt) => opt.key === newBillingKey) || data.pricePlanConfig.billingOptions[0];
|
|
3735
|
-
const currentBillingDisplay = data.billingSwitch.options.find((opt) => opt.key === newBillingKey) || data.billingSwitch.options[0];
|
|
3736
|
-
data.plans.forEach((plan) => {
|
|
3737
|
-
const priceContainer = document.querySelector(`[data-price-container="${plan.key}"]`);
|
|
3738
|
-
const priceValue = data.pricePlanConfig.prices[plan.key];
|
|
3739
|
-
if (priceContainer) {
|
|
3740
|
-
const priceValueElement = document.querySelector(`[data-price-value="${plan.key}"]`);
|
|
3741
|
-
const priceUnitElement = document.querySelector(`[data-price-unit="${plan.key}"]`);
|
|
3742
|
-
const priceOriginalElement = document.querySelector(`[data-price-original="${plan.key}"]`);
|
|
3743
|
-
const priceDiscountElement = document.querySelector(`[data-price-discount="${plan.key}"]`);
|
|
3744
|
-
const priceSubtitleElement = document.querySelector(`[data-price-subtitle="${plan.key}"]`);
|
|
3745
|
-
if (typeof priceValue !== "number" || isNaN(priceValue)) {
|
|
3746
|
-
if (priceValueElement) priceValueElement.textContent = String(priceValue);
|
|
3747
|
-
if (priceSubtitleElement) priceSubtitleElement.textContent = plan.showBillingSubTitle === false ? "" : (currentBillingDisplay == null ? void 0 : currentBillingDisplay.subTitle) || "";
|
|
3748
|
-
} else {
|
|
3749
|
-
const originValue = Number(priceValue);
|
|
3750
|
-
const discount = currentBilling.discount;
|
|
3751
|
-
const hasDiscount = discount !== 0;
|
|
3752
|
-
const saleValue = originValue * (1 - discount);
|
|
3753
|
-
const formatPrice = (v) => Number(v.toFixed(2)).toString();
|
|
3754
|
-
const showNaN = saleValue < 0;
|
|
3755
|
-
if (priceValueElement) {
|
|
3756
|
-
priceValueElement.textContent = `${data.currency}${showNaN ? "NaN" : hasDiscount ? formatPrice(saleValue) : formatPrice(originValue)}`;
|
|
3757
|
-
}
|
|
3758
|
-
if (priceUnitElement) {
|
|
3759
|
-
priceUnitElement.textContent = currentBillingDisplay.unit || "";
|
|
3760
|
-
}
|
|
3761
|
-
if (hasDiscount) {
|
|
3762
|
-
if (priceOriginalElement) {
|
|
3763
|
-
priceOriginalElement.textContent = `${data.currency}${showNaN ? "NaN" : formatPrice(originValue)}`;
|
|
3764
|
-
priceOriginalElement.style.display = "inline";
|
|
3765
|
-
}
|
|
3766
|
-
if (priceDiscountElement && currentBillingDisplay.discountText) {
|
|
3767
|
-
const discountText = currentBillingDisplay.discountText.replace("{percent}", String(Math.round(Math.abs(discount) * 100)));
|
|
3768
|
-
priceDiscountElement.textContent = discountText;
|
|
3769
|
-
priceDiscountElement.style.display = "inline";
|
|
3770
|
-
}
|
|
3771
|
-
} else {
|
|
3772
|
-
if (priceOriginalElement) priceOriginalElement.style.display = "none";
|
|
3773
|
-
if (priceDiscountElement) priceDiscountElement.style.display = "none";
|
|
3774
|
-
}
|
|
3775
|
-
if (priceSubtitleElement) {
|
|
3776
|
-
priceSubtitleElement.textContent = plan.showBillingSubTitle === false ? "" : (currentBillingDisplay == null ? void 0 : currentBillingDisplay.subTitle) || "";
|
|
3777
|
-
}
|
|
3778
|
-
}
|
|
3779
|
-
}
|
|
3780
|
-
});
|
|
3781
|
-
};
|
|
3782
|
-
const updateDiscountInfo = (newBillingKey) => {
|
|
3783
|
-
const discountInfoElement = document.querySelector("[data-discount-info]");
|
|
3784
|
-
if (discountInfoElement) {
|
|
3785
|
-
const opt = data.billingSwitch.options.find((opt2) => opt2.key === newBillingKey);
|
|
3786
|
-
const bOpt = data.pricePlanConfig.billingOptions.find((opt2) => opt2.key === newBillingKey);
|
|
3787
|
-
if (opt && bOpt && opt.discountText && bOpt.discount !== 0) {
|
|
3788
|
-
const discountText = opt.discountText.replace("{percent}", String(Math.round(Math.abs(bOpt.discount) * 100)));
|
|
3789
|
-
discountInfoElement.innerHTML = `
|
|
3790
|
-
<span class="px-2 py-1 text-xs rounded bg-yellow-100 text-yellow-800 font-semibold align-middle text-center inline-flex items-center justify-center whitespace-nowrap">
|
|
3791
|
-
${discountText}
|
|
3792
|
-
</span>
|
|
3793
|
-
`;
|
|
3794
|
-
} else {
|
|
3795
|
-
discountInfoElement.innerHTML = "";
|
|
3796
|
-
}
|
|
3797
|
-
}
|
|
3798
|
-
};
|
|
3799
|
-
const updateButtonStyles = (newBillingKey) => {
|
|
3800
|
-
const monthlyButton = document.querySelector('[data-billing-button="monthly"]');
|
|
3801
|
-
const yearlyButton = document.querySelector('[data-billing-button="yearly"]');
|
|
3802
|
-
if (monthlyButton) {
|
|
3803
|
-
if (newBillingKey === "monthly") {
|
|
3804
|
-
monthlyButton.className = cn(
|
|
3805
|
-
"min-w-[120px] px-6 py-2 font-medium transition text-lg relative",
|
|
3806
|
-
"text-white bg-gradient-to-r from-purple-400 to-pink-500 hover:from-purple-500 hover:to-pink-600 dark:from-purple-500 dark:to-pink-600 dark:hover:from-purple-600 rounded-full shadow-sm"
|
|
3807
|
-
);
|
|
3808
|
-
} else {
|
|
3809
|
-
monthlyButton.className = cn(
|
|
3810
|
-
"min-w-[120px] px-6 py-2 font-medium transition text-lg relative",
|
|
3811
|
-
"text-gray-800 dark:text-gray-200 hover:text-gray-900 dark:hover:text-gray-100 rounded-full"
|
|
3812
|
-
);
|
|
3813
|
-
}
|
|
3814
|
-
}
|
|
3815
|
-
if (yearlyButton) {
|
|
3816
|
-
if (newBillingKey === "yearly") {
|
|
3817
|
-
yearlyButton.className = cn(
|
|
3818
|
-
"min-w-[120px] px-6 py-2 font-medium transition text-lg relative",
|
|
3819
|
-
"text-white bg-gradient-to-r from-purple-400 to-pink-500 hover:from-purple-500 hover:to-pink-600 dark:from-purple-500 dark:to-pink-600 dark:hover:from-purple-600 rounded-full shadow-sm"
|
|
3820
|
-
);
|
|
3821
|
-
} else {
|
|
3822
|
-
yearlyButton.className = cn(
|
|
3823
|
-
"min-w-[120px] px-6 py-2 font-medium transition text-lg relative",
|
|
3824
|
-
"text-gray-800 dark:text-gray-200 hover:text-gray-900 dark:hover:text-gray-100 rounded-full"
|
|
3825
|
-
);
|
|
3826
|
-
}
|
|
3827
|
-
}
|
|
3828
|
-
};
|
|
3829
|
-
const Tooltip = ({ show, content, x, y }) => {
|
|
3830
|
-
if (!show) return null;
|
|
3831
|
-
const style = {
|
|
3832
|
-
position: "fixed",
|
|
3833
|
-
left: Math.max(8, x),
|
|
3834
|
-
top: Math.max(8, y),
|
|
3835
|
-
zIndex: 9999,
|
|
3836
|
-
maxWidth: 200,
|
|
3837
|
-
transform: "translateY(-50%)",
|
|
3838
|
-
pointerEvents: "none",
|
|
3839
|
-
whiteSpace: "pre-line"
|
|
3840
|
-
};
|
|
3841
|
-
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
3842
|
-
"div",
|
|
3843
|
-
{
|
|
3844
|
-
style,
|
|
3845
|
-
className: "bg-gray-700 dark:bg-gray-200 text-gray-100 dark:text-gray-800 text-xs leading-relaxed px-3 py-2 rounded-lg shadow-lg border border-gray-300 dark:border-gray-600 backdrop-blur-sm",
|
|
3846
|
-
children: content
|
|
3847
|
-
}
|
|
3848
|
-
);
|
|
3849
|
-
};
|
|
3850
|
-
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Tooltip, __spreadValues({}, tooltip));
|
|
3851
|
-
}
|
|
3852
|
-
|
|
3853
|
-
// src/main/price-plan.tsx
|
|
3854
|
-
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
3175
|
+
var import_main3 = require("@third-ui/main");
|
|
3176
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
3855
3177
|
function PricePlan(_0) {
|
|
3856
3178
|
return __async(this, arguments, function* ({
|
|
3857
3179
|
locale,
|
|
@@ -3893,9 +3215,9 @@ function PricePlan(_0) {
|
|
|
3893
3215
|
const currentBillingDisplay = data.billingSwitch.options.find((opt) => opt.key === billingKey) || defaultBillingDisplay;
|
|
3894
3216
|
const billingSubTitle = (currentBillingDisplay == null ? void 0 : currentBillingDisplay.subTitle) || "";
|
|
3895
3217
|
if (typeof priceValue !== "number" || isNaN(priceValue)) {
|
|
3896
|
-
return /* @__PURE__ */ (0,
|
|
3897
|
-
/* @__PURE__ */ (0,
|
|
3898
|
-
/* @__PURE__ */ (0,
|
|
3218
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex flex-col items-start w-full", "data-price-container": plan.key, children: [
|
|
3219
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "flex items-end gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "text-4xl font-extrabold text-gray-900 dark:text-gray-100", "data-price-value": plan.key, children: priceValue }) }),
|
|
3220
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "flex items-center gap-2 min-h-[24px] mt-1", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: cn("text-xs text-gray-700 dark:text-gray-300 font-medium", plan.showBillingSubTitle === false && "opacity-0 select-none"), "data-price-subtitle": plan.key, children: plan.showBillingSubTitle === false ? "" : billingSubTitle }) })
|
|
3899
3221
|
] });
|
|
3900
3222
|
}
|
|
3901
3223
|
const originValue = Number(priceValue);
|
|
@@ -3909,32 +3231,32 @@ function PricePlan(_0) {
|
|
|
3909
3231
|
discountText = currentBillingDisplay.discountText.replace("{percent}", String(Math.round(Math.abs(discount) * 100)));
|
|
3910
3232
|
}
|
|
3911
3233
|
const showNaN = saleValue < 0;
|
|
3912
|
-
return /* @__PURE__ */ (0,
|
|
3913
|
-
/* @__PURE__ */ (0,
|
|
3914
|
-
/* @__PURE__ */ (0,
|
|
3234
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex flex-col items-start w-full", "data-price-container": plan.key, children: [
|
|
3235
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex items-end gap-2", children: [
|
|
3236
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("span", { className: "text-4xl font-extrabold text-gray-900 dark:text-gray-100", "data-price-value": plan.key, children: [
|
|
3915
3237
|
data.currency,
|
|
3916
3238
|
showNaN ? "NaN" : hasDiscount ? formatPrice(saleValue) : formatPrice(originValue)
|
|
3917
3239
|
] }),
|
|
3918
|
-
/* @__PURE__ */ (0,
|
|
3240
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "text-lg text-gray-700 dark:text-gray-300 font-medium mb-1", "data-price-unit": plan.key, children: unit })
|
|
3919
3241
|
] }),
|
|
3920
|
-
/* @__PURE__ */ (0,
|
|
3921
|
-
hasDiscount && /* @__PURE__ */ (0,
|
|
3922
|
-
/* @__PURE__ */ (0,
|
|
3242
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex items-center gap-2 min-h-[24px] mt-1", children: [
|
|
3243
|
+
hasDiscount && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
|
|
3244
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("span", { className: "text-base text-gray-400 line-through", "data-price-original": plan.key, children: [
|
|
3923
3245
|
data.currency,
|
|
3924
3246
|
showNaN ? "NaN" : formatPrice(originValue)
|
|
3925
3247
|
] }),
|
|
3926
|
-
discountText && /* @__PURE__ */ (0,
|
|
3248
|
+
discountText && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "px-2 py-0.5 text-xs rounded bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200 font-semibold align-middle", "data-price-discount": plan.key, children: discountText })
|
|
3927
3249
|
] }),
|
|
3928
|
-
/* @__PURE__ */ (0,
|
|
3250
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: cn("text-xs text-gray-700 dark:text-gray-300 font-medium", plan.showBillingSubTitle === false && "opacity-0 select-none"), "data-price-subtitle": plan.key, children: plan.showBillingSubTitle === false ? "" : billingSubTitle })
|
|
3929
3251
|
] })
|
|
3930
3252
|
] });
|
|
3931
3253
|
}
|
|
3932
|
-
return /* @__PURE__ */ (0,
|
|
3933
|
-
/* @__PURE__ */ (0,
|
|
3934
|
-
/* @__PURE__ */ (0,
|
|
3935
|
-
/* @__PURE__ */ (0,
|
|
3936
|
-
/* @__PURE__ */ (0,
|
|
3937
|
-
/* @__PURE__ */ (0,
|
|
3254
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("section", { id: "pricing", className: cn("px-4 py-10 md:px-16 md:py-16 mx-auto max-w-7xl scroll-mt-10", sectionClassName), children: [
|
|
3255
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("h2", { className: "text-3xl md:text-4xl font-bold text-center mb-3", children: data.title }),
|
|
3256
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { className: "text-center text-gray-600 dark:text-gray-400 mb-8 text-base md:text-lg mx-auto", children: data.subtitle }),
|
|
3257
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex flex-col items-center", children: [
|
|
3258
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "flex items-center relative mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex bg-white dark:bg-gray-900 border border-gray-300 dark:border-gray-700 rounded-full p-1", "data-billing-switch": true, children: [
|
|
3259
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3938
3260
|
"button",
|
|
3939
3261
|
{
|
|
3940
3262
|
className: cn(
|
|
@@ -3946,7 +3268,7 @@ function PricePlan(_0) {
|
|
|
3946
3268
|
children: ((_a = data.billingSwitch.options.find((opt) => opt.key === "monthly")) == null ? void 0 : _a.name) || "Monthly"
|
|
3947
3269
|
}
|
|
3948
3270
|
),
|
|
3949
|
-
/* @__PURE__ */ (0,
|
|
3271
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3950
3272
|
"button",
|
|
3951
3273
|
{
|
|
3952
3274
|
className: cn(
|
|
@@ -3959,19 +3281,19 @@ function PricePlan(_0) {
|
|
|
3959
3281
|
}
|
|
3960
3282
|
)
|
|
3961
3283
|
] }) }),
|
|
3962
|
-
/* @__PURE__ */ (0,
|
|
3284
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "h-8 flex items-center justify-center mb-3", "data-discount-info": true, children: (() => {
|
|
3963
3285
|
const opt = data.billingSwitch.options.find((opt2) => opt2.key === data.billingSwitch.defaultKey);
|
|
3964
3286
|
const bOpt = billingOptions.find((opt2) => opt2.key === data.billingSwitch.defaultKey);
|
|
3965
3287
|
if (!(opt && bOpt && opt.discountText && bOpt.discount !== 0)) return null;
|
|
3966
|
-
return /* @__PURE__ */ (0,
|
|
3288
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "px-2 py-1 text-xs rounded bg-yellow-100 text-yellow-800 font-semibold align-middle text-center inline-flex items-center justify-center whitespace-nowrap", children: opt.discountText.replace(
|
|
3967
3289
|
"{percent}",
|
|
3968
3290
|
String(Math.round(Math.abs(bOpt.discount) * 100))
|
|
3969
3291
|
) });
|
|
3970
3292
|
})() })
|
|
3971
3293
|
] }),
|
|
3972
|
-
/* @__PURE__ */ (0,
|
|
3294
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8", children: data.plans.map((plan, _idx) => {
|
|
3973
3295
|
var _a2, _b2, _c;
|
|
3974
|
-
return /* @__PURE__ */ (0,
|
|
3296
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
3975
3297
|
"div",
|
|
3976
3298
|
{
|
|
3977
3299
|
"data-price-plan": plan.key,
|
|
@@ -3982,29 +3304,29 @@ function PricePlan(_0) {
|
|
|
3982
3304
|
),
|
|
3983
3305
|
style: { minHeight: maxFeaturesCount * 100 },
|
|
3984
3306
|
children: [
|
|
3985
|
-
/* @__PURE__ */ (0,
|
|
3986
|
-
/* @__PURE__ */ (0,
|
|
3987
|
-
plan.titleTags && plan.titleTags.map((tag, i) => /* @__PURE__ */ (0,
|
|
3307
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
3308
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "text-xl font-bold text-gray-900 dark:text-gray-100", children: plan.title }),
|
|
3309
|
+
plan.titleTags && plan.titleTags.map((tag, i) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "px-2 py-0.5 text-xs rounded bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-200 font-semibold align-middle", children: tag }, i))
|
|
3988
3310
|
] }),
|
|
3989
3311
|
renderPrice(plan),
|
|
3990
|
-
/* @__PURE__ */ (0,
|
|
3991
|
-
feature ? /* @__PURE__ */ (0,
|
|
3992
|
-
feature && feature.tag && /* @__PURE__ */ (0,
|
|
3993
|
-
feature ? /* @__PURE__ */ (0,
|
|
3312
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("ul", { className: "flex-1 mb-6 mt-4", children: getFeatureRows(plan).map((feature, i) => /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("li", { className: "flex items-center gap-2 mb-2 min-h-[28px]", "data-feature-item": `${plan.key}-${i}`, children: [
|
|
3313
|
+
feature ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "inline-flex items-center justify-center w-5 h-5 rounded-full bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-200 mr-1", children: feature.icon ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { children: feature.icon }) : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "font-bold", children: "\u2713" }) }) : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "inline-flex items-center justify-center w-5 h-5 rounded-full mr-1", children: "\xA0" }),
|
|
3314
|
+
feature && feature.tag && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "px-1 py-0.5 text-[6px] rounded bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200 font-semibold align-middle", children: feature.tag }),
|
|
3315
|
+
feature ? /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("span", { className: "relative group cursor-pointer text-sm text-gray-800 dark:text-gray-200", children: [
|
|
3994
3316
|
feature.description,
|
|
3995
|
-
feature.tooltip && /* @__PURE__ */ (0,
|
|
3317
|
+
feature.tooltip && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3996
3318
|
"span",
|
|
3997
3319
|
{
|
|
3998
3320
|
className: "ml-1 align-middle inline-flex",
|
|
3999
3321
|
"data-tooltip-trigger": `${plan.key}-${i}`,
|
|
4000
3322
|
"data-tooltip-content": feature.tooltip,
|
|
4001
|
-
children: /* @__PURE__ */ (0,
|
|
3323
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) })
|
|
4002
3324
|
}
|
|
4003
3325
|
)
|
|
4004
|
-
] }) : /* @__PURE__ */ (0,
|
|
3326
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { children: "\xA0" })
|
|
4005
3327
|
] }, i)) }),
|
|
4006
|
-
/* @__PURE__ */ (0,
|
|
4007
|
-
/* @__PURE__ */ (0,
|
|
3328
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "flex-1" }),
|
|
3329
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
4008
3330
|
"button",
|
|
4009
3331
|
{
|
|
4010
3332
|
className: cn(
|
|
@@ -4022,7 +3344,7 @@ function PricePlan(_0) {
|
|
|
4022
3344
|
plan.key
|
|
4023
3345
|
);
|
|
4024
3346
|
}) }),
|
|
4025
|
-
/* @__PURE__ */ (0,
|
|
3347
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_main3.PricePlanInteractive, { data })
|
|
4026
3348
|
] });
|
|
4027
3349
|
});
|
|
4028
3350
|
}
|