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