nvis-fe-cms-libs 2.0.3 → 2.0.5
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/nvis-fe-cms-libs.es.js +892 -992
- package/dist/nvis-fe-cms-libs.es.js.map +1 -1
- package/dist/nvis-fe-cms-libs.umd.js +909 -1009
- package/dist/nvis-fe-cms-libs.umd.js.map +1 -1
- package/package.json +1 -1
|
@@ -374,17 +374,42 @@ var __async = (__this, __arguments, generator) => {
|
|
|
374
374
|
return jsxRuntime.exports;
|
|
375
375
|
}
|
|
376
376
|
var jsxRuntimeExports = requireJsxRuntime();
|
|
377
|
-
function ThemeIcon({
|
|
377
|
+
function ThemeIcon({
|
|
378
|
+
name,
|
|
379
|
+
className = "",
|
|
380
|
+
color,
|
|
381
|
+
folder = "common",
|
|
382
|
+
// ← Thêm prop folder, mặc định là "common"
|
|
383
|
+
useOriginalColor = false
|
|
384
|
+
}) {
|
|
378
385
|
if (!name) return null;
|
|
379
|
-
const iconUrl = `/icons/${name}.svg`;
|
|
386
|
+
const iconUrl = `/icons/${folder}/${name}.svg`;
|
|
387
|
+
if (useOriginalColor) {
|
|
388
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
389
|
+
"img",
|
|
390
|
+
{
|
|
391
|
+
src: iconUrl,
|
|
392
|
+
alt: name,
|
|
393
|
+
className: `icon ${className}`,
|
|
394
|
+
onError: (e) => {
|
|
395
|
+
e.target.style.display = "none";
|
|
396
|
+
console.warn(`Icon not found: ${iconUrl}`);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
);
|
|
400
|
+
}
|
|
380
401
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
381
|
-
"
|
|
402
|
+
"span",
|
|
382
403
|
{
|
|
383
|
-
src: iconUrl,
|
|
384
|
-
alt: name,
|
|
385
404
|
className: `icon ${className}`,
|
|
405
|
+
style: {
|
|
406
|
+
maskImage: `url(${iconUrl})`,
|
|
407
|
+
WebkitMaskImage: `url(${iconUrl})`,
|
|
408
|
+
backgroundColor: color || "currentColor"
|
|
409
|
+
},
|
|
386
410
|
onError: (e) => {
|
|
387
411
|
e.target.style.display = "none";
|
|
412
|
+
console.warn(`Icon not found: ${iconUrl}`);
|
|
388
413
|
}
|
|
389
414
|
}
|
|
390
415
|
);
|
|
@@ -408,19 +433,19 @@ var __async = (__this, __arguments, generator) => {
|
|
|
408
433
|
};
|
|
409
434
|
const items = [
|
|
410
435
|
{
|
|
411
|
-
icon: "
|
|
436
|
+
icon: "icon-companyValueLightBulb",
|
|
412
437
|
title: t("about.companyValues.vision") || "Tầm nhìn",
|
|
413
438
|
text: cleanHtmlContent(safeCompanyData.vision) || "Tầm nhìn của chúng tôi sẽ được cập nhật trong thời gian tới.",
|
|
414
439
|
bgClass: "bg-gradient-brand"
|
|
415
440
|
},
|
|
416
441
|
{
|
|
417
|
-
icon: "
|
|
442
|
+
icon: "icon-companyValueRocket",
|
|
418
443
|
title: t("about.companyValues.mission") || "Sứ mệnh",
|
|
419
444
|
text: cleanHtmlContent(safeCompanyData.mission) || "Sứ mệnh của chúng tôi sẽ được cập nhật trong thời gian tới.",
|
|
420
445
|
bgClass: "bg-gradient-accent"
|
|
421
446
|
},
|
|
422
447
|
{
|
|
423
|
-
icon: "
|
|
448
|
+
icon: "icon-companyValueDiamond",
|
|
424
449
|
title: t("about.companyValues.coreValues") || "Giá trị cốt lõi",
|
|
425
450
|
text: cleanHtmlContent(safeCompanyData.coreValues) || "Giá trị cốt lõi của chúng tôi sẽ được cập nhật trong thời gian tới.",
|
|
426
451
|
bgClass: "bg-gradient-brand"
|
|
@@ -470,7 +495,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
470
495
|
"div",
|
|
471
496
|
{
|
|
472
497
|
className: `w-10 h-10 rounded-lg flex items-center justify-center text-white text-xl flex-shrink-0 ${item.bgClass}`,
|
|
473
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: item.icon, className: "w-6 h-6" })
|
|
498
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: item.icon, folder: "AboutCompanySection", className: "w-6 h-6", useOriginalColor: true })
|
|
474
499
|
}
|
|
475
500
|
),
|
|
476
501
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
@@ -595,7 +620,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
595
620
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid lg:grid-cols-2 gap-12 items-center", children: [
|
|
596
621
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
597
622
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full text-small font-semibold mb-4 bg-surface text-brand-primary border f-border", children: [
|
|
598
|
-
"
|
|
623
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-aboutCompanyBook", folder: "AboutCompanySection", className: "w-6 h-6", useOriginalColor: true }),
|
|
624
|
+
" ",
|
|
599
625
|
safeT("aboutCompany.story.badge")
|
|
600
626
|
] }),
|
|
601
627
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("h2", { className: "text-3xl lg:text-4xl font-bold mb-6 text-main", children: [
|
|
@@ -663,7 +689,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
663
689
|
}
|
|
664
690
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
665
691
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full border border-[var(--border-color)] bg-surface text-subtitle font-semibold text-brand-primary shadow-sm hover:shadow-md transition-all duration-300", children: [
|
|
666
|
-
"
|
|
692
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-timeLineChart", folder: "TimlineSection", className: "w-5 h-5 icon-gradient" }),
|
|
693
|
+
" ",
|
|
667
694
|
sectionTitle
|
|
668
695
|
] }) }),
|
|
669
696
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
|
|
@@ -884,7 +911,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
884
911
|
if (!partnersData.length) return null;
|
|
885
912
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
886
913
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full border border-[var(--border-color)] bg-surface text-subtitle font-semibold text-brand-primary shadow-sm", children: [
|
|
887
|
-
"
|
|
914
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-partner", folder: "PartnersSection", className: "w-4 h-4 icon-gradient" }),
|
|
915
|
+
" ",
|
|
888
916
|
sectionTitle
|
|
889
917
|
] }) }),
|
|
890
918
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -987,7 +1015,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
987
1015
|
}
|
|
988
1016
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
989
1017
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 border border-[var(--border-color)] bg-surface text-main shadow-sm hover:shadow-md transition-all duration-300", children: [
|
|
990
|
-
"
|
|
1018
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-timeLineChart", folder: "TimlineSection", className: "w-5 h-5 icon-gradient" }),
|
|
1019
|
+
" ",
|
|
991
1020
|
sectionTitle
|
|
992
1021
|
] }) }),
|
|
993
1022
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
|
|
@@ -1053,7 +1082,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1053
1082
|
}
|
|
1054
1083
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center", children: [
|
|
1055
1084
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full border border-[var(--border-color)] bg-surface text-subtitle font-semibold mb-8 text-brand-primary shadow-sm", children: [
|
|
1056
|
-
"
|
|
1085
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-testimonials", folder: "TestimonialsSection", className: "w-4 h-4 icon-gradient" }),
|
|
1086
|
+
" ",
|
|
1057
1087
|
sectionTitle
|
|
1058
1088
|
] }),
|
|
1059
1089
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
|
|
@@ -1072,7 +1102,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1072
1102
|
'"'
|
|
1073
1103
|
] }),
|
|
1074
1104
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-4", children: [
|
|
1075
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: "
|
|
1105
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-testimonialsUser", folder: "TestimonialsSection", className: "w-4 h-4 icon-gradient" }) }),
|
|
1076
1106
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-left", children: [
|
|
1077
1107
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-title", children: testimonials[currentIndex].author }),
|
|
1078
1108
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-text", children: testimonials[currentIndex].position }),
|
|
@@ -1270,7 +1300,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1270
1300
|
if (!partnersData.length) return null;
|
|
1271
1301
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
1272
1302
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-block px-4 py-2 rounded-full border border-[var(--border-color)] bg-surface text-subtitle font-semibold text-brand-primary shadow-sm", children: [
|
|
1273
|
-
"
|
|
1303
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-partner", folder: "PartnersSection", className: "w-4 h-4 icon-gradient" }),
|
|
1304
|
+
" ",
|
|
1274
1305
|
sectionTitle
|
|
1275
1306
|
] }) }),
|
|
1276
1307
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -1335,692 +1366,71 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1335
1366
|
) })
|
|
1336
1367
|
] }) });
|
|
1337
1368
|
};
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1369
|
+
const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService }) => {
|
|
1370
|
+
const [formData, setFormData] = require$$0.useState({
|
|
1371
|
+
fullName: "",
|
|
1372
|
+
workEmail: "",
|
|
1373
|
+
phoneNumber: "",
|
|
1374
|
+
companyName: "",
|
|
1375
|
+
jobTitle: "",
|
|
1376
|
+
businessType: "",
|
|
1377
|
+
expectedBudget: "",
|
|
1378
|
+
expectedTimeline: "",
|
|
1379
|
+
requestTitle: "",
|
|
1380
|
+
requestDescription: ""
|
|
1381
|
+
});
|
|
1382
|
+
const [formErrors, setFormErrors] = require$$0.useState({});
|
|
1383
|
+
const [isSubmitting, setIsSubmitting] = require$$0.useState(false);
|
|
1384
|
+
const [submitStatus, setSubmitStatus] = require$$0.useState(null);
|
|
1385
|
+
const [submitMessage, setSubmitMessage] = require$$0.useState("");
|
|
1386
|
+
const validateField = (name, value) => {
|
|
1387
|
+
const errors = {};
|
|
1388
|
+
switch (name) {
|
|
1389
|
+
case "fullName":
|
|
1390
|
+
if (!(value == null ? void 0 : value.trim())) errors.fullName = "Họ và tên là bắt buộc";
|
|
1391
|
+
else if (value.trim().length < 2) errors.fullName = "Tên phải có ít nhất 2 ký tự";
|
|
1392
|
+
break;
|
|
1393
|
+
case "workEmail":
|
|
1394
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
1395
|
+
if (!(value == null ? void 0 : value.trim())) errors.workEmail = "Email là bắt buộc";
|
|
1396
|
+
else if (!emailRegex.test(value.trim())) errors.workEmail = "Email không hợp lệ";
|
|
1397
|
+
break;
|
|
1398
|
+
case "phoneNumber":
|
|
1399
|
+
const phoneRegex = /^[0-9\s\-\+\(\)]{10,15}$/;
|
|
1400
|
+
if (value && !phoneRegex.test(value.trim())) errors.phoneNumber = "Số điện thoại không hợp lệ";
|
|
1401
|
+
break;
|
|
1402
|
+
case "requestTitle":
|
|
1403
|
+
if (!(value == null ? void 0 : value.trim())) errors.requestTitle = "Tiêu đề yêu cầu là bắt buộc";
|
|
1404
|
+
else if (value.trim().length < 5) errors.requestTitle = "Tiêu đề phải có ít nhất 5 ký tự";
|
|
1405
|
+
break;
|
|
1406
|
+
case "requestDescription":
|
|
1407
|
+
if (!(value == null ? void 0 : value.trim())) errors.requestDescription = "Mô tả yêu cầu là bắt buộc";
|
|
1408
|
+
else if (value.trim().length < 10) errors.requestDescription = "Mô tả phải có ít nhất 10 ký tự";
|
|
1409
|
+
break;
|
|
1410
|
+
case "companyName":
|
|
1411
|
+
if (value && value.trim().length > 0 && value.trim().length < 2) {
|
|
1412
|
+
errors.companyName = "Tên công ty phải có ít nhất 2 ký tự";
|
|
1413
|
+
}
|
|
1414
|
+
break;
|
|
1415
|
+
case "jobTitle":
|
|
1416
|
+
if (value && value.trim().length > 0 && value.trim().length < 2) {
|
|
1417
|
+
errors.jobTitle = "Chức vụ phải có ít nhất 2 ký tự";
|
|
1418
|
+
}
|
|
1419
|
+
break;
|
|
1360
1420
|
}
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
fill: "none",
|
|
1375
|
-
stroke: "currentColor",
|
|
1376
|
-
strokeWidth: 2,
|
|
1377
|
-
strokeLinecap: "round",
|
|
1378
|
-
strokeLinejoin: "round"
|
|
1379
|
-
};
|
|
1380
|
-
/**
|
|
1381
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1382
|
-
*
|
|
1383
|
-
* This source code is licensed under the ISC license.
|
|
1384
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1385
|
-
*/
|
|
1386
|
-
const Icon = require$$0.forwardRef(
|
|
1387
|
-
(_a, ref) => {
|
|
1388
|
-
var _b = _a, {
|
|
1389
|
-
color = "currentColor",
|
|
1390
|
-
size = 24,
|
|
1391
|
-
strokeWidth = 2,
|
|
1392
|
-
absoluteStrokeWidth,
|
|
1393
|
-
className = "",
|
|
1394
|
-
children,
|
|
1395
|
-
iconNode
|
|
1396
|
-
} = _b, rest = __objRest(_b, [
|
|
1397
|
-
"color",
|
|
1398
|
-
"size",
|
|
1399
|
-
"strokeWidth",
|
|
1400
|
-
"absoluteStrokeWidth",
|
|
1401
|
-
"className",
|
|
1402
|
-
"children",
|
|
1403
|
-
"iconNode"
|
|
1404
|
-
]);
|
|
1405
|
-
return require$$0.createElement(
|
|
1406
|
-
"svg",
|
|
1407
|
-
__spreadValues(__spreadValues(__spreadProps(__spreadValues({
|
|
1408
|
-
ref
|
|
1409
|
-
}, defaultAttributes), {
|
|
1410
|
-
width: size,
|
|
1411
|
-
height: size,
|
|
1412
|
-
stroke: color,
|
|
1413
|
-
strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
|
|
1414
|
-
className: mergeClasses("lucide", className)
|
|
1415
|
-
}), !children && !hasA11yProp(rest) && { "aria-hidden": "true" }), rest),
|
|
1416
|
-
[
|
|
1417
|
-
...iconNode.map(([tag, attrs]) => require$$0.createElement(tag, attrs)),
|
|
1418
|
-
...Array.isArray(children) ? children : [children]
|
|
1419
|
-
]
|
|
1420
|
-
);
|
|
1421
|
-
}
|
|
1422
|
-
);
|
|
1423
|
-
/**
|
|
1424
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1425
|
-
*
|
|
1426
|
-
* This source code is licensed under the ISC license.
|
|
1427
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1428
|
-
*/
|
|
1429
|
-
const createLucideIcon = (iconName, iconNode) => {
|
|
1430
|
-
const Component = require$$0.forwardRef(
|
|
1431
|
-
(_a, ref) => {
|
|
1432
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1433
|
-
return require$$0.createElement(Icon, __spreadValues({
|
|
1434
|
-
ref,
|
|
1435
|
-
iconNode,
|
|
1436
|
-
className: mergeClasses(
|
|
1437
|
-
`lucide-${toKebabCase(toPascalCase(iconName))}`,
|
|
1438
|
-
`lucide-${iconName}`,
|
|
1439
|
-
className
|
|
1440
|
-
)
|
|
1441
|
-
}, props));
|
|
1442
|
-
}
|
|
1443
|
-
);
|
|
1444
|
-
Component.displayName = toPascalCase(iconName);
|
|
1445
|
-
return Component;
|
|
1446
|
-
};
|
|
1447
|
-
/**
|
|
1448
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1449
|
-
*
|
|
1450
|
-
* This source code is licensed under the ISC license.
|
|
1451
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1452
|
-
*/
|
|
1453
|
-
const __iconNode$z = [
|
|
1454
|
-
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
1455
|
-
["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
|
|
1456
|
-
];
|
|
1457
|
-
const ArrowRight = createLucideIcon("arrow-right", __iconNode$z);
|
|
1458
|
-
/**
|
|
1459
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1460
|
-
*
|
|
1461
|
-
* This source code is licensed under the ISC license.
|
|
1462
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1463
|
-
*/
|
|
1464
|
-
const __iconNode$y = [
|
|
1465
|
-
["path", { d: "M2 4v16", key: "vw9hq8" }],
|
|
1466
|
-
["path", { d: "M2 8h18a2 2 0 0 1 2 2v10", key: "1dgv2r" }],
|
|
1467
|
-
["path", { d: "M2 17h20", key: "18nfp3" }],
|
|
1468
|
-
["path", { d: "M6 8v9", key: "1yriud" }]
|
|
1469
|
-
];
|
|
1470
|
-
const Bed = createLucideIcon("bed", __iconNode$y);
|
|
1471
|
-
/**
|
|
1472
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1473
|
-
*
|
|
1474
|
-
* This source code is licensed under the ISC license.
|
|
1475
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1476
|
-
*/
|
|
1477
|
-
const __iconNode$x = [
|
|
1478
|
-
["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
|
|
1479
|
-
["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
|
|
1480
|
-
];
|
|
1481
|
-
const Briefcase = createLucideIcon("briefcase", __iconNode$x);
|
|
1482
|
-
/**
|
|
1483
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1484
|
-
*
|
|
1485
|
-
* This source code is licensed under the ISC license.
|
|
1486
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1487
|
-
*/
|
|
1488
|
-
const __iconNode$w = [
|
|
1489
|
-
["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
|
|
1490
|
-
["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
|
|
1491
|
-
["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
|
|
1492
|
-
["path", { d: "M10 6h4", key: "1itunk" }],
|
|
1493
|
-
["path", { d: "M10 10h4", key: "tcdvrf" }],
|
|
1494
|
-
["path", { d: "M10 14h4", key: "kelpxr" }],
|
|
1495
|
-
["path", { d: "M10 18h4", key: "1ulq68" }]
|
|
1496
|
-
];
|
|
1497
|
-
const Building2 = createLucideIcon("building-2", __iconNode$w);
|
|
1498
|
-
/**
|
|
1499
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1500
|
-
*
|
|
1501
|
-
* This source code is licensed under the ISC license.
|
|
1502
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1503
|
-
*/
|
|
1504
|
-
const __iconNode$v = [
|
|
1505
|
-
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }],
|
|
1506
|
-
["path", { d: "M9 22v-4h6v4", key: "r93iot" }],
|
|
1507
|
-
["path", { d: "M8 6h.01", key: "1dz90k" }],
|
|
1508
|
-
["path", { d: "M16 6h.01", key: "1x0f13" }],
|
|
1509
|
-
["path", { d: "M12 6h.01", key: "1vi96p" }],
|
|
1510
|
-
["path", { d: "M12 10h.01", key: "1nrarc" }],
|
|
1511
|
-
["path", { d: "M12 14h.01", key: "1etili" }],
|
|
1512
|
-
["path", { d: "M16 10h.01", key: "1m94wz" }],
|
|
1513
|
-
["path", { d: "M16 14h.01", key: "1gbofw" }],
|
|
1514
|
-
["path", { d: "M8 10h.01", key: "19clt8" }],
|
|
1515
|
-
["path", { d: "M8 14h.01", key: "6423bh" }]
|
|
1516
|
-
];
|
|
1517
|
-
const Building = createLucideIcon("building", __iconNode$v);
|
|
1518
|
-
/**
|
|
1519
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1520
|
-
*
|
|
1521
|
-
* This source code is licensed under the ISC license.
|
|
1522
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1523
|
-
*/
|
|
1524
|
-
const __iconNode$u = [
|
|
1525
|
-
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }],
|
|
1526
|
-
["line", { x1: "8", x2: "16", y1: "6", y2: "6", key: "x4nwl0" }],
|
|
1527
|
-
["line", { x1: "16", x2: "16", y1: "14", y2: "18", key: "wjye3r" }],
|
|
1528
|
-
["path", { d: "M16 10h.01", key: "1m94wz" }],
|
|
1529
|
-
["path", { d: "M12 10h.01", key: "1nrarc" }],
|
|
1530
|
-
["path", { d: "M8 10h.01", key: "19clt8" }],
|
|
1531
|
-
["path", { d: "M12 14h.01", key: "1etili" }],
|
|
1532
|
-
["path", { d: "M8 14h.01", key: "6423bh" }],
|
|
1533
|
-
["path", { d: "M12 18h.01", key: "mhygvu" }],
|
|
1534
|
-
["path", { d: "M8 18h.01", key: "lrp35t" }]
|
|
1535
|
-
];
|
|
1536
|
-
const Calculator = createLucideIcon("calculator", __iconNode$u);
|
|
1537
|
-
/**
|
|
1538
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1539
|
-
*
|
|
1540
|
-
* This source code is licensed under the ISC license.
|
|
1541
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1542
|
-
*/
|
|
1543
|
-
const __iconNode$t = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
1544
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$t);
|
|
1545
|
-
/**
|
|
1546
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1547
|
-
*
|
|
1548
|
-
* This source code is licensed under the ISC license.
|
|
1549
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1550
|
-
*/
|
|
1551
|
-
const __iconNode$s = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
1552
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$s);
|
|
1553
|
-
/**
|
|
1554
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1555
|
-
*
|
|
1556
|
-
* This source code is licensed under the ISC license.
|
|
1557
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1558
|
-
*/
|
|
1559
|
-
const __iconNode$r = [
|
|
1560
|
-
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1561
|
-
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
1562
|
-
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
1563
|
-
];
|
|
1564
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$r);
|
|
1565
|
-
/**
|
|
1566
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1567
|
-
*
|
|
1568
|
-
* This source code is licensed under the ISC license.
|
|
1569
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1570
|
-
*/
|
|
1571
|
-
const __iconNode$q = [
|
|
1572
|
-
["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
|
|
1573
|
-
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
1574
|
-
];
|
|
1575
|
-
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$q);
|
|
1576
|
-
/**
|
|
1577
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1578
|
-
*
|
|
1579
|
-
* This source code is licensed under the ISC license.
|
|
1580
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1581
|
-
*/
|
|
1582
|
-
const __iconNode$p = [
|
|
1583
|
-
["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
|
|
1584
|
-
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
|
|
1585
|
-
];
|
|
1586
|
-
const Clock = createLucideIcon("clock", __iconNode$p);
|
|
1587
|
-
/**
|
|
1588
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1589
|
-
*
|
|
1590
|
-
* This source code is licensed under the ISC license.
|
|
1591
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1592
|
-
*/
|
|
1593
|
-
const __iconNode$o = [
|
|
1594
|
-
["path", { d: "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "p7xjir" }]
|
|
1595
|
-
];
|
|
1596
|
-
const Cloud = createLucideIcon("cloud", __iconNode$o);
|
|
1597
|
-
/**
|
|
1598
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1599
|
-
*
|
|
1600
|
-
* This source code is licensed under the ISC license.
|
|
1601
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1602
|
-
*/
|
|
1603
|
-
const __iconNode$n = [
|
|
1604
|
-
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
1605
|
-
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
1606
|
-
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
1607
|
-
];
|
|
1608
|
-
const Database = createLucideIcon("database", __iconNode$n);
|
|
1609
|
-
/**
|
|
1610
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1611
|
-
*
|
|
1612
|
-
* This source code is licensed under the ISC license.
|
|
1613
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1614
|
-
*/
|
|
1615
|
-
const __iconNode$m = [
|
|
1616
|
-
["path", { d: "M12 16h.01", key: "1drbdi" }],
|
|
1617
|
-
["path", { d: "M16 16h.01", key: "1f9h7w" }],
|
|
1618
|
-
[
|
|
1619
|
-
"path",
|
|
1620
|
-
{
|
|
1621
|
-
d: "M3 19a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8.5a.5.5 0 0 0-.769-.422l-4.462 2.844A.5.5 0 0 1 15 10.5v-2a.5.5 0 0 0-.769-.422L9.77 10.922A.5.5 0 0 1 9 10.5V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2z",
|
|
1622
|
-
key: "1iv0i2"
|
|
1623
|
-
}
|
|
1624
|
-
],
|
|
1625
|
-
["path", { d: "M8 16h.01", key: "18s6g9" }]
|
|
1626
|
-
];
|
|
1627
|
-
const Factory = createLucideIcon("factory", __iconNode$m);
|
|
1628
|
-
/**
|
|
1629
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1630
|
-
*
|
|
1631
|
-
* This source code is licensed under the ISC license.
|
|
1632
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1633
|
-
*/
|
|
1634
|
-
const __iconNode$l = [
|
|
1635
|
-
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
1636
|
-
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
1637
|
-
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
1638
|
-
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
1639
|
-
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
1640
|
-
];
|
|
1641
|
-
const FileText = createLucideIcon("file-text", __iconNode$l);
|
|
1642
|
-
/**
|
|
1643
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1644
|
-
*
|
|
1645
|
-
* This source code is licensed under the ISC license.
|
|
1646
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1647
|
-
*/
|
|
1648
|
-
const __iconNode$k = [
|
|
1649
|
-
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1650
|
-
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
1651
|
-
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
1652
|
-
];
|
|
1653
|
-
const Globe = createLucideIcon("globe", __iconNode$k);
|
|
1654
|
-
/**
|
|
1655
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1656
|
-
*
|
|
1657
|
-
* This source code is licensed under the ISC license.
|
|
1658
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1659
|
-
*/
|
|
1660
|
-
const __iconNode$j = [
|
|
1661
|
-
[
|
|
1662
|
-
"path",
|
|
1663
|
-
{
|
|
1664
|
-
d: "M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",
|
|
1665
|
-
key: "j76jl0"
|
|
1666
|
-
}
|
|
1667
|
-
],
|
|
1668
|
-
["path", { d: "M22 10v6", key: "1lu8f3" }],
|
|
1669
|
-
["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
|
|
1670
|
-
];
|
|
1671
|
-
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$j);
|
|
1672
|
-
/**
|
|
1673
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1674
|
-
*
|
|
1675
|
-
* This source code is licensed under the ISC license.
|
|
1676
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1677
|
-
*/
|
|
1678
|
-
const __iconNode$i = [
|
|
1679
|
-
[
|
|
1680
|
-
"path",
|
|
1681
|
-
{
|
|
1682
|
-
d: "M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",
|
|
1683
|
-
key: "mvr1a0"
|
|
1684
|
-
}
|
|
1685
|
-
]
|
|
1686
|
-
];
|
|
1687
|
-
const Heart = createLucideIcon("heart", __iconNode$i);
|
|
1688
|
-
/**
|
|
1689
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1690
|
-
*
|
|
1691
|
-
* This source code is licensed under the ISC license.
|
|
1692
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1693
|
-
*/
|
|
1694
|
-
const __iconNode$h = [
|
|
1695
|
-
["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
|
|
1696
|
-
[
|
|
1697
|
-
"path",
|
|
1698
|
-
{
|
|
1699
|
-
d: "M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",
|
|
1700
|
-
key: "1d0kgt"
|
|
1701
|
-
}
|
|
1702
|
-
]
|
|
1703
|
-
];
|
|
1704
|
-
const House = createLucideIcon("house", __iconNode$h);
|
|
1705
|
-
/**
|
|
1706
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1707
|
-
*
|
|
1708
|
-
* This source code is licensed under the ISC license.
|
|
1709
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1710
|
-
*/
|
|
1711
|
-
const __iconNode$g = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
|
|
1712
|
-
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$g);
|
|
1713
|
-
/**
|
|
1714
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1715
|
-
*
|
|
1716
|
-
* This source code is licensed under the ISC license.
|
|
1717
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1718
|
-
*/
|
|
1719
|
-
const __iconNode$f = [
|
|
1720
|
-
["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
|
|
1721
|
-
["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
|
|
1722
|
-
];
|
|
1723
|
-
const Mail = createLucideIcon("mail", __iconNode$f);
|
|
1724
|
-
/**
|
|
1725
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1726
|
-
*
|
|
1727
|
-
* This source code is licensed under the ISC license.
|
|
1728
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1729
|
-
*/
|
|
1730
|
-
const __iconNode$e = [
|
|
1731
|
-
[
|
|
1732
|
-
"path",
|
|
1733
|
-
{
|
|
1734
|
-
d: "M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z",
|
|
1735
|
-
key: "q8bfy3"
|
|
1736
|
-
}
|
|
1737
|
-
],
|
|
1738
|
-
["path", { d: "M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14", key: "1853fq" }],
|
|
1739
|
-
["path", { d: "M8 6v8", key: "15ugcq" }]
|
|
1740
|
-
];
|
|
1741
|
-
const Megaphone = createLucideIcon("megaphone", __iconNode$e);
|
|
1742
|
-
/**
|
|
1743
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1744
|
-
*
|
|
1745
|
-
* This source code is licensed under the ISC license.
|
|
1746
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1747
|
-
*/
|
|
1748
|
-
const __iconNode$d = [
|
|
1749
|
-
[
|
|
1750
|
-
"path",
|
|
1751
|
-
{
|
|
1752
|
-
d: "M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",
|
|
1753
|
-
key: "1a0edw"
|
|
1754
|
-
}
|
|
1755
|
-
],
|
|
1756
|
-
["path", { d: "M12 22V12", key: "d0xqtd" }],
|
|
1757
|
-
["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }],
|
|
1758
|
-
["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }]
|
|
1759
|
-
];
|
|
1760
|
-
const Package = createLucideIcon("package", __iconNode$d);
|
|
1761
|
-
/**
|
|
1762
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1763
|
-
*
|
|
1764
|
-
* This source code is licensed under the ISC license.
|
|
1765
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1766
|
-
*/
|
|
1767
|
-
const __iconNode$c = [
|
|
1768
|
-
[
|
|
1769
|
-
"path",
|
|
1770
|
-
{
|
|
1771
|
-
d: "M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",
|
|
1772
|
-
key: "9njp5v"
|
|
1773
|
-
}
|
|
1774
|
-
]
|
|
1775
|
-
];
|
|
1776
|
-
const Phone = createLucideIcon("phone", __iconNode$c);
|
|
1777
|
-
/**
|
|
1778
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1779
|
-
*
|
|
1780
|
-
* This source code is licensed under the ISC license.
|
|
1781
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1782
|
-
*/
|
|
1783
|
-
const __iconNode$b = [
|
|
1784
|
-
[
|
|
1785
|
-
"path",
|
|
1786
|
-
{
|
|
1787
|
-
d: "M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z",
|
|
1788
|
-
key: "1v9wt8"
|
|
1789
|
-
}
|
|
1790
|
-
]
|
|
1791
|
-
];
|
|
1792
|
-
const Plane = createLucideIcon("plane", __iconNode$b);
|
|
1793
|
-
/**
|
|
1794
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1795
|
-
*
|
|
1796
|
-
* This source code is licensed under the ISC license.
|
|
1797
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1798
|
-
*/
|
|
1799
|
-
const __iconNode$a = [
|
|
1800
|
-
[
|
|
1801
|
-
"path",
|
|
1802
|
-
{
|
|
1803
|
-
d: "M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",
|
|
1804
|
-
key: "1ffxy3"
|
|
1805
|
-
}
|
|
1806
|
-
],
|
|
1807
|
-
["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
|
|
1808
|
-
];
|
|
1809
|
-
const Send = createLucideIcon("send", __iconNode$a);
|
|
1810
|
-
/**
|
|
1811
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1812
|
-
*
|
|
1813
|
-
* This source code is licensed under the ISC license.
|
|
1814
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1815
|
-
*/
|
|
1816
|
-
const __iconNode$9 = [
|
|
1817
|
-
[
|
|
1818
|
-
"path",
|
|
1819
|
-
{
|
|
1820
|
-
d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",
|
|
1821
|
-
key: "1i5ecw"
|
|
1822
|
-
}
|
|
1823
|
-
],
|
|
1824
|
-
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
1825
|
-
];
|
|
1826
|
-
const Settings = createLucideIcon("settings", __iconNode$9);
|
|
1827
|
-
/**
|
|
1828
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1829
|
-
*
|
|
1830
|
-
* This source code is licensed under the ISC license.
|
|
1831
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1832
|
-
*/
|
|
1833
|
-
const __iconNode$8 = [
|
|
1834
|
-
[
|
|
1835
|
-
"path",
|
|
1836
|
-
{
|
|
1837
|
-
d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
|
|
1838
|
-
key: "oel41y"
|
|
1839
|
-
}
|
|
1840
|
-
]
|
|
1841
|
-
];
|
|
1842
|
-
const Shield = createLucideIcon("shield", __iconNode$8);
|
|
1843
|
-
/**
|
|
1844
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1845
|
-
*
|
|
1846
|
-
* This source code is licensed under the ISC license.
|
|
1847
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1848
|
-
*/
|
|
1849
|
-
const __iconNode$7 = [
|
|
1850
|
-
["circle", { cx: "8", cy: "21", r: "1", key: "jimo8o" }],
|
|
1851
|
-
["circle", { cx: "19", cy: "21", r: "1", key: "13723u" }],
|
|
1852
|
-
[
|
|
1853
|
-
"path",
|
|
1854
|
-
{
|
|
1855
|
-
d: "M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",
|
|
1856
|
-
key: "9zh506"
|
|
1857
|
-
}
|
|
1858
|
-
]
|
|
1859
|
-
];
|
|
1860
|
-
const ShoppingCart = createLucideIcon("shopping-cart", __iconNode$7);
|
|
1861
|
-
/**
|
|
1862
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1863
|
-
*
|
|
1864
|
-
* This source code is licensed under the ISC license.
|
|
1865
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1866
|
-
*/
|
|
1867
|
-
const __iconNode$6 = [
|
|
1868
|
-
["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }],
|
|
1869
|
-
["path", { d: "M12 18h.01", key: "mhygvu" }]
|
|
1870
|
-
];
|
|
1871
|
-
const Smartphone = createLucideIcon("smartphone", __iconNode$6);
|
|
1872
|
-
/**
|
|
1873
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1874
|
-
*
|
|
1875
|
-
* This source code is licensed under the ISC license.
|
|
1876
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1877
|
-
*/
|
|
1878
|
-
const __iconNode$5 = [
|
|
1879
|
-
["path", { d: "M16 7h6v6", key: "box55l" }],
|
|
1880
|
-
["path", { d: "m22 7-8.5 8.5-5-5L2 17", key: "1t1m79" }]
|
|
1881
|
-
];
|
|
1882
|
-
const TrendingUp = createLucideIcon("trending-up", __iconNode$5);
|
|
1883
|
-
/**
|
|
1884
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1885
|
-
*
|
|
1886
|
-
* This source code is licensed under the ISC license.
|
|
1887
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1888
|
-
*/
|
|
1889
|
-
const __iconNode$4 = [
|
|
1890
|
-
["path", { d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2", key: "wrbu53" }],
|
|
1891
|
-
["path", { d: "M15 18H9", key: "1lyqi6" }],
|
|
1892
|
-
[
|
|
1893
|
-
"path",
|
|
1894
|
-
{
|
|
1895
|
-
d: "M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14",
|
|
1896
|
-
key: "lysw3i"
|
|
1897
|
-
}
|
|
1898
|
-
],
|
|
1899
|
-
["circle", { cx: "17", cy: "18", r: "2", key: "332jqn" }],
|
|
1900
|
-
["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }]
|
|
1901
|
-
];
|
|
1902
|
-
const Truck = createLucideIcon("truck", __iconNode$4);
|
|
1903
|
-
/**
|
|
1904
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1905
|
-
*
|
|
1906
|
-
* This source code is licensed under the ISC license.
|
|
1907
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1908
|
-
*/
|
|
1909
|
-
const __iconNode$3 = [
|
|
1910
|
-
["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
|
|
1911
|
-
["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
|
|
1912
|
-
];
|
|
1913
|
-
const User = createLucideIcon("user", __iconNode$3);
|
|
1914
|
-
/**
|
|
1915
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1916
|
-
*
|
|
1917
|
-
* This source code is licensed under the ISC license.
|
|
1918
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1919
|
-
*/
|
|
1920
|
-
const __iconNode$2 = [
|
|
1921
|
-
["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
|
|
1922
|
-
["path", { d: "M16 3.128a4 4 0 0 1 0 7.744", key: "16gr8j" }],
|
|
1923
|
-
["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" }],
|
|
1924
|
-
["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
|
|
1925
|
-
];
|
|
1926
|
-
const Users = createLucideIcon("users", __iconNode$2);
|
|
1927
|
-
/**
|
|
1928
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1929
|
-
*
|
|
1930
|
-
* This source code is licensed under the ISC license.
|
|
1931
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1932
|
-
*/
|
|
1933
|
-
const __iconNode$1 = [
|
|
1934
|
-
[
|
|
1935
|
-
"path",
|
|
1936
|
-
{
|
|
1937
|
-
d: "M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",
|
|
1938
|
-
key: "1ngwbx"
|
|
1939
|
-
}
|
|
1940
|
-
]
|
|
1941
|
-
];
|
|
1942
|
-
const Wrench = createLucideIcon("wrench", __iconNode$1);
|
|
1943
|
-
/**
|
|
1944
|
-
* @license lucide-react v0.536.0 - ISC
|
|
1945
|
-
*
|
|
1946
|
-
* This source code is licensed under the ISC license.
|
|
1947
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
1948
|
-
*/
|
|
1949
|
-
const __iconNode = [
|
|
1950
|
-
[
|
|
1951
|
-
"path",
|
|
1952
|
-
{
|
|
1953
|
-
d: "M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",
|
|
1954
|
-
key: "1xq2db"
|
|
1955
|
-
}
|
|
1956
|
-
]
|
|
1957
|
-
];
|
|
1958
|
-
const Zap = createLucideIcon("zap", __iconNode);
|
|
1959
|
-
const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService }) => {
|
|
1960
|
-
const [formData, setFormData] = require$$0.useState({
|
|
1961
|
-
fullName: "",
|
|
1962
|
-
workEmail: "",
|
|
1963
|
-
phoneNumber: "",
|
|
1964
|
-
companyName: "",
|
|
1965
|
-
jobTitle: "",
|
|
1966
|
-
businessType: "",
|
|
1967
|
-
expectedBudget: "",
|
|
1968
|
-
expectedTimeline: "",
|
|
1969
|
-
requestTitle: "",
|
|
1970
|
-
requestDescription: ""
|
|
1971
|
-
});
|
|
1972
|
-
const [formErrors, setFormErrors] = require$$0.useState({});
|
|
1973
|
-
const [isSubmitting, setIsSubmitting] = require$$0.useState(false);
|
|
1974
|
-
const [submitStatus, setSubmitStatus] = require$$0.useState(null);
|
|
1975
|
-
const [submitMessage, setSubmitMessage] = require$$0.useState("");
|
|
1976
|
-
const validateField = (name, value) => {
|
|
1977
|
-
const errors = {};
|
|
1978
|
-
switch (name) {
|
|
1979
|
-
case "fullName":
|
|
1980
|
-
if (!(value == null ? void 0 : value.trim())) errors.fullName = "Họ và tên là bắt buộc";
|
|
1981
|
-
else if (value.trim().length < 2) errors.fullName = "Tên phải có ít nhất 2 ký tự";
|
|
1982
|
-
break;
|
|
1983
|
-
case "workEmail":
|
|
1984
|
-
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
1985
|
-
if (!(value == null ? void 0 : value.trim())) errors.workEmail = "Email là bắt buộc";
|
|
1986
|
-
else if (!emailRegex.test(value.trim())) errors.workEmail = "Email không hợp lệ";
|
|
1987
|
-
break;
|
|
1988
|
-
case "phoneNumber":
|
|
1989
|
-
const phoneRegex = /^[0-9\s\-\+\(\)]{10,15}$/;
|
|
1990
|
-
if (value && !phoneRegex.test(value.trim())) errors.phoneNumber = "Số điện thoại không hợp lệ";
|
|
1991
|
-
break;
|
|
1992
|
-
case "requestTitle":
|
|
1993
|
-
if (!(value == null ? void 0 : value.trim())) errors.requestTitle = "Tiêu đề yêu cầu là bắt buộc";
|
|
1994
|
-
else if (value.trim().length < 5) errors.requestTitle = "Tiêu đề phải có ít nhất 5 ký tự";
|
|
1995
|
-
break;
|
|
1996
|
-
case "requestDescription":
|
|
1997
|
-
if (!(value == null ? void 0 : value.trim())) errors.requestDescription = "Mô tả yêu cầu là bắt buộc";
|
|
1998
|
-
else if (value.trim().length < 10) errors.requestDescription = "Mô tả phải có ít nhất 10 ký tự";
|
|
1999
|
-
break;
|
|
2000
|
-
case "companyName":
|
|
2001
|
-
if (value && value.trim().length > 0 && value.trim().length < 2) {
|
|
2002
|
-
errors.companyName = "Tên công ty phải có ít nhất 2 ký tự";
|
|
2003
|
-
}
|
|
2004
|
-
break;
|
|
2005
|
-
case "jobTitle":
|
|
2006
|
-
if (value && value.trim().length > 0 && value.trim().length < 2) {
|
|
2007
|
-
errors.jobTitle = "Chức vụ phải có ít nhất 2 ký tự";
|
|
2008
|
-
}
|
|
2009
|
-
break;
|
|
2010
|
-
}
|
|
2011
|
-
return errors;
|
|
2012
|
-
};
|
|
2013
|
-
const handleInputChange = (e) => {
|
|
2014
|
-
const { name, value } = e.target;
|
|
2015
|
-
setFormData((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
2016
|
-
[name]: value || ""
|
|
2017
|
-
}));
|
|
2018
|
-
if (formErrors[name]) {
|
|
2019
|
-
setFormErrors((prev) => {
|
|
2020
|
-
const newErrors = __spreadValues({}, prev);
|
|
2021
|
-
delete newErrors[name];
|
|
2022
|
-
return newErrors;
|
|
2023
|
-
});
|
|
1421
|
+
return errors;
|
|
1422
|
+
};
|
|
1423
|
+
const handleInputChange = (e) => {
|
|
1424
|
+
const { name, value } = e.target;
|
|
1425
|
+
setFormData((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
1426
|
+
[name]: value || ""
|
|
1427
|
+
}));
|
|
1428
|
+
if (formErrors[name]) {
|
|
1429
|
+
setFormErrors((prev) => {
|
|
1430
|
+
const newErrors = __spreadValues({}, prev);
|
|
1431
|
+
delete newErrors[name];
|
|
1432
|
+
return newErrors;
|
|
1433
|
+
});
|
|
2024
1434
|
}
|
|
2025
1435
|
};
|
|
2026
1436
|
const handleBlur = (e) => {
|
|
@@ -2092,14 +1502,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2092
1502
|
`;
|
|
2093
1503
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid lg:grid-cols-3 gap-12", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lg:col-span-4", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-surface rounded-2xl p-8 shadow-lg border transition-colors duration-200", style: { borderColor: "var(--border-color)" }, children: [
|
|
2094
1504
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-6", children: [
|
|
2095
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-lg bg-gradient-brand flex items-center justify-center mr-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1505
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-lg bg-gradient-brand flex items-center justify-center mr-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactFormSend", className: "w-4 h-4 icon-gradient" }) }),
|
|
2096
1506
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2097
1507
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-subtitle font-bold text-main", children: t("form.title") || "Gửi yêu cầu tư vấn" }),
|
|
2098
1508
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", children: t("form.subtitle") || "Điền thông tin để nhận tư vấn miễn phí từ chuyên gia" })
|
|
2099
1509
|
] })
|
|
2100
1510
|
] }),
|
|
2101
1511
|
submitStatus && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `mb-6 p-4 rounded-xl border transition-colors duration-200 ${submitStatus === "success" ? "bg-emerald-50 dark:bg-emerald-900/30 text-emerald-800 dark:text-emerald-300" : "bg-red-50 dark:bg-red-900/30 text-red-800 dark:text-red-300"}`, style: { borderColor: submitStatus === "success" ? "#10b981" : "#ef4444" }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center", children: [
|
|
2102
|
-
submitStatus === "success" ? /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1512
|
+
submitStatus === "success" ? /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactFormCheck", className: "w-4 h-4 icon-gradient" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2103
1513
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small font-medium", children: submitMessage })
|
|
2104
1514
|
] }) }),
|
|
2105
1515
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, className: "space-y-6", children: [
|
|
@@ -2124,7 +1534,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2124
1534
|
}
|
|
2125
1535
|
),
|
|
2126
1536
|
formErrors.fullName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2127
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1537
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2128
1538
|
formErrors.fullName
|
|
2129
1539
|
] })
|
|
2130
1540
|
] }),
|
|
@@ -2148,7 +1558,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2148
1558
|
}
|
|
2149
1559
|
),
|
|
2150
1560
|
formErrors.workEmail && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2151
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1561
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2152
1562
|
formErrors.workEmail
|
|
2153
1563
|
] })
|
|
2154
1564
|
] })
|
|
@@ -2170,7 +1580,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2170
1580
|
}
|
|
2171
1581
|
),
|
|
2172
1582
|
formErrors.phoneNumber && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2173
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1583
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2174
1584
|
formErrors.phoneNumber
|
|
2175
1585
|
] })
|
|
2176
1586
|
] }),
|
|
@@ -2190,7 +1600,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2190
1600
|
}
|
|
2191
1601
|
),
|
|
2192
1602
|
formErrors.companyName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2193
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1603
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2194
1604
|
formErrors.companyName
|
|
2195
1605
|
] })
|
|
2196
1606
|
] })
|
|
@@ -2212,7 +1622,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2212
1622
|
}
|
|
2213
1623
|
),
|
|
2214
1624
|
formErrors.jobTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2215
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1625
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2216
1626
|
formErrors.jobTitle
|
|
2217
1627
|
] })
|
|
2218
1628
|
] }),
|
|
@@ -2284,7 +1694,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2284
1694
|
}
|
|
2285
1695
|
),
|
|
2286
1696
|
formErrors.requestTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2287
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1697
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2288
1698
|
formErrors.requestTitle
|
|
2289
1699
|
] })
|
|
2290
1700
|
] }),
|
|
@@ -2308,7 +1718,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2308
1718
|
}
|
|
2309
1719
|
),
|
|
2310
1720
|
formErrors.requestDescription && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2311
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1721
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2312
1722
|
formErrors.requestDescription
|
|
2313
1723
|
] })
|
|
2314
1724
|
] }),
|
|
@@ -2319,10 +1729,10 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2319
1729
|
disabled: isSubmitting,
|
|
2320
1730
|
className: "flex-1 btn-primary text-white py-4 px-6 rounded-xl transition-all disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center font-semibold",
|
|
2321
1731
|
children: isSubmitting ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
2322
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1732
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormLoader2", className: "w-4 h-4 icon-muted" }),
|
|
2323
1733
|
t("form.submitting") || "Đang gửi..."
|
|
2324
1734
|
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
2325
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1735
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactFormSend", className: "w-4 h-4 icon-gradient" }),
|
|
2326
1736
|
t("form.submit") || "Gửi yêu cầu"
|
|
2327
1737
|
] })
|
|
2328
1738
|
}
|
|
@@ -2337,7 +1747,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2337
1747
|
if (!contactData.length) return null;
|
|
2338
1748
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
2339
1749
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-flex items-center px-4 py-2 rounded-full text-lg font-semibold mb-4 bg-surface", style: { borderWidth: "1px", borderColor: "var(--border-color)" }, children: [
|
|
2340
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1750
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }),
|
|
2341
1751
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-main", children: sectionTitle })
|
|
2342
1752
|
] }) }),
|
|
2343
1753
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid md:grid-cols-2 lg:grid-cols-3 gap-8", children: contactData.map((contact, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "card", children: [
|
|
@@ -2350,7 +1760,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2350
1760
|
display: "flex",
|
|
2351
1761
|
alignItems: "center",
|
|
2352
1762
|
justifyContent: "center"
|
|
2353
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1763
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }) }),
|
|
2354
1764
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-subtitle mb-2", children: contact.name }),
|
|
2355
1765
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "inline-block px-3 py-1 rounded-full text-small font-semibold bg-surface text-brand-primary", style: { borderWidth: "1px", borderColor: "var(--border-color)" }, children: contact.position })
|
|
2356
1766
|
] }),
|
|
@@ -2377,7 +1787,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2377
1787
|
alignItems: "center",
|
|
2378
1788
|
justifyContent: "center",
|
|
2379
1789
|
marginRight: "0.75rem"
|
|
2380
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1790
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoPhone", className: "w-4 h-4 icon-gradient" }) }),
|
|
2381
1791
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2382
1792
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contact.info.phone") || "Điện thoại" }),
|
|
2383
1793
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.phone })
|
|
@@ -2407,7 +1817,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2407
1817
|
alignItems: "center",
|
|
2408
1818
|
justifyContent: "center",
|
|
2409
1819
|
marginRight: "0.75rem"
|
|
2410
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1820
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoEmail", className: "w-4 h-4 icon-gradient" }) }),
|
|
2411
1821
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2412
1822
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: "Email" }),
|
|
2413
1823
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.email })
|
|
@@ -2432,7 +1842,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2432
1842
|
alignItems: "center",
|
|
2433
1843
|
justifyContent: "center",
|
|
2434
1844
|
marginRight: "0.75rem"
|
|
2435
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1845
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoClock", className: "w-4 h-4 icon-muted" }) }),
|
|
2436
1846
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2437
1847
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contact.info.workingHours") || "Giờ làm việc" }),
|
|
2438
1848
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.workingHours || t("contact.info.defaultWorkingHours") || "T2-T6: 8:00-18:00" })
|
|
@@ -2490,7 +1900,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2490
1900
|
}
|
|
2491
1901
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
2492
1902
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-flex items-center px-4 py-2 rounded-full text-lg font-semibold mb-4 bg-surface", style: { borderWidth: "1px", borderColor: "var(--border-color)" }, children: [
|
|
2493
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1903
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }),
|
|
2494
1904
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-main", children: sectionTitle })
|
|
2495
1905
|
] }) }),
|
|
2496
1906
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid md:grid-cols-2 lg:grid-cols-3 gap-8", children: contacts.map((contact, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(ContactCard, { contact, t, isDarkMode }, contact.id || index2)) })
|
|
@@ -2507,7 +1917,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2507
1917
|
display: "flex",
|
|
2508
1918
|
alignItems: "center",
|
|
2509
1919
|
justifyContent: "center"
|
|
2510
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1920
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }) }),
|
|
2511
1921
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-subtitle mb-2", children: contact.name || t("contactList.card.noName") || "Không có tên" }),
|
|
2512
1922
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "inline-block px-3 py-1 rounded-full text-small font-semibold bg-surface text-brand-primary", style: { borderWidth: "1px", borderColor: "var(--border-color)" }, children: contact.position || t("contactList.card.noPosition") || "Chưa có chức vụ" })
|
|
2513
1923
|
] }),
|
|
@@ -2534,7 +1944,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2534
1944
|
alignItems: "center",
|
|
2535
1945
|
justifyContent: "center",
|
|
2536
1946
|
marginRight: "0.75rem"
|
|
2537
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1947
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoPhone", className: "w-4 h-4 icon-gradient" }) }),
|
|
2538
1948
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2539
1949
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contactList.card.phone") || "Điện thoại" }),
|
|
2540
1950
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.phone })
|
|
@@ -2564,7 +1974,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2564
1974
|
alignItems: "center",
|
|
2565
1975
|
justifyContent: "center",
|
|
2566
1976
|
marginRight: "0.75rem"
|
|
2567
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1977
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoEmail", className: "w-4 h-4 icon-gradient" }) }),
|
|
2568
1978
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2569
1979
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: "Email" }),
|
|
2570
1980
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.email })
|
|
@@ -2589,7 +1999,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2589
1999
|
alignItems: "center",
|
|
2590
2000
|
justifyContent: "center",
|
|
2591
2001
|
marginRight: "0.75rem"
|
|
2592
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2002
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoClock", className: "w-4 h-4 icon-muted" }) }),
|
|
2593
2003
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2594
2004
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contactList.card.workingHours") || "Giờ làm việc" }),
|
|
2595
2005
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.workingHours || t("contactList.card.defaultWorkingHours") || "T2-T6: 8:00-18:00" })
|
|
@@ -2682,7 +2092,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2682
2092
|
{
|
|
2683
2093
|
className: "\r\n inline-block px-4 py-2 rounded-full text-lg font-semibold mb-4 \r\n border shadow-sm \r\n section-badge\r\n ",
|
|
2684
2094
|
children: [
|
|
2685
|
-
"
|
|
2095
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-testimonials", folder: "TestimonialsSection", className: "w-4 h-4 icon-gradient" }),
|
|
2096
|
+
" ",
|
|
2686
2097
|
sectionTitle
|
|
2687
2098
|
]
|
|
2688
2099
|
}
|
|
@@ -2699,7 +2110,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2699
2110
|
'"'
|
|
2700
2111
|
] }),
|
|
2701
2112
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-4", children: [
|
|
2702
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: "
|
|
2113
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-testimonialsUser", folder: "TestimonialsSection", className: "w-4 h-4 icon-gradient" }) }),
|
|
2703
2114
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-left", children: [
|
|
2704
2115
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-title text-base mb-1", children: currentFeedback.customerName }),
|
|
2705
2116
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-link text-sm", children: currentFeedback.customerTitle }),
|
|
@@ -2720,281 +2131,778 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2720
2131
|
${index2 === currentIndex ? "bg-brand-secondary" : "bg-surface hover:bg-brand-primary"}
|
|
2721
2132
|
`
|
|
2722
2133
|
},
|
|
2723
|
-
index2
|
|
2724
|
-
)) })
|
|
2725
|
-
] })
|
|
2726
|
-
] }),
|
|
2727
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
|
|
2728
|
-
.animate-fadeIn {
|
|
2729
|
-
animation: fadeIn 0.5s ease-in-out;
|
|
2730
|
-
}
|
|
2731
|
-
@keyframes fadeIn {
|
|
2732
|
-
from {
|
|
2733
|
-
opacity: 0;
|
|
2734
|
-
transform: translateY(10px);
|
|
2735
|
-
}
|
|
2736
|
-
to {
|
|
2737
|
-
opacity: 1;
|
|
2738
|
-
transform: translateY(0);
|
|
2739
|
-
}
|
|
2740
|
-
}
|
|
2741
|
-
` })
|
|
2742
|
-
] });
|
|
2134
|
+
index2
|
|
2135
|
+
)) })
|
|
2136
|
+
] })
|
|
2137
|
+
] }),
|
|
2138
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
|
|
2139
|
+
.animate-fadeIn {
|
|
2140
|
+
animation: fadeIn 0.5s ease-in-out;
|
|
2141
|
+
}
|
|
2142
|
+
@keyframes fadeIn {
|
|
2143
|
+
from {
|
|
2144
|
+
opacity: 0;
|
|
2145
|
+
transform: translateY(10px);
|
|
2146
|
+
}
|
|
2147
|
+
to {
|
|
2148
|
+
opacity: 1;
|
|
2149
|
+
transform: translateY(0);
|
|
2150
|
+
}
|
|
2151
|
+
}
|
|
2152
|
+
` })
|
|
2153
|
+
] });
|
|
2154
|
+
};
|
|
2155
|
+
const ProductListSection = ({ data, t, isDarkMode, getProductList }) => {
|
|
2156
|
+
const [products, setProducts] = require$$0.useState([]);
|
|
2157
|
+
const [loading, setLoading] = require$$0.useState(true);
|
|
2158
|
+
const [error, setError] = require$$0.useState(null);
|
|
2159
|
+
require$$0.useEffect(() => {
|
|
2160
|
+
const fetchProducts = () => __async(null, null, function* () {
|
|
2161
|
+
try {
|
|
2162
|
+
setLoading(true);
|
|
2163
|
+
const result = yield getProductList();
|
|
2164
|
+
if (result.success) {
|
|
2165
|
+
setProducts(result.data || []);
|
|
2166
|
+
} else {
|
|
2167
|
+
setError(result.error || t("productList.errors.loadFailed"));
|
|
2168
|
+
}
|
|
2169
|
+
} catch (err) {
|
|
2170
|
+
console.error("Error fetching products:", err);
|
|
2171
|
+
setError(t("productList.errors.loadError"));
|
|
2172
|
+
} finally {
|
|
2173
|
+
setLoading(false);
|
|
2174
|
+
}
|
|
2175
|
+
});
|
|
2176
|
+
fetchProducts();
|
|
2177
|
+
}, [t]);
|
|
2178
|
+
if (loading) {
|
|
2179
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
|
|
2180
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `inline-block w-10 h-10 border-4 ${isDarkMode ? "border-gray-600 border-t-blue-400" : "border-gray-300 border-t-blue-500"} rounded-full animate-spin` }),
|
|
2181
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `mt-2.5 text-base ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productList.loading") })
|
|
2182
|
+
] });
|
|
2183
|
+
}
|
|
2184
|
+
if (error) {
|
|
2185
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
|
|
2186
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-red-500 text-5xl mb-4", children: "⚠️" }),
|
|
2187
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-red-500 text-base m-0", children: error })
|
|
2188
|
+
] });
|
|
2189
|
+
}
|
|
2190
|
+
if (!products || products.length === 0) {
|
|
2191
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
|
|
2192
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `text-5xl mb-4 ${isDarkMode ? "text-gray-400" : "text-gray-500"}`, children: "📦" }),
|
|
2193
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-base m-0 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productList.noProducts") })
|
|
2194
|
+
] });
|
|
2195
|
+
}
|
|
2196
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `py-16 px-5 transition-colors duration-300 ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-6xl mx-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-8 items-start", children: products.map((product, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(ProductCard, { product, t, isDarkMode }, product.id || index2)) }) }) });
|
|
2197
|
+
};
|
|
2198
|
+
const ProductCard = ({ product, t, isDarkMode }) => {
|
|
2199
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
2200
|
+
const [activeTab, setActiveTab] = require$$0.useState("overview");
|
|
2201
|
+
const [isHovered, setIsHovered] = require$$0.useState(false);
|
|
2202
|
+
const mainImage = ((_b = (_a = product.images) == null ? void 0 : _a.find((img) => img.isMain)) == null ? void 0 : _b.imageUrl) || ((_d = (_c = product.images) == null ? void 0 : _c[0]) == null ? void 0 : _d.imageUrl) || "/placeholder-product.png";
|
|
2203
|
+
const tabs = [
|
|
2204
|
+
{ id: "overview", label: t("productCard.tabs.overview"), count: null },
|
|
2205
|
+
{ id: "features", label: t("productCard.tabs.features"), count: ((_e = product.features) == null ? void 0 : _e.length) || 0 },
|
|
2206
|
+
{ id: "contacts", label: t("productCard.tabs.contacts"), count: ((_f = product.contacts) == null ? void 0 : _f.length) || 0 },
|
|
2207
|
+
{ id: "downloads", label: t("productCard.tabs.downloads"), count: ((_g = product.productDownloads) == null ? void 0 : _g.length) || 0 }
|
|
2208
|
+
];
|
|
2209
|
+
const renderOverview = () => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2210
|
+
"div",
|
|
2211
|
+
{
|
|
2212
|
+
className: `text-sm leading-relaxed ${isDarkMode ? "text-gray-300" : "text-gray-700"}`,
|
|
2213
|
+
dangerouslySetInnerHTML: {
|
|
2214
|
+
__html: product.overviewContent || product.description || t("productCard.noOverview")
|
|
2215
|
+
}
|
|
2216
|
+
}
|
|
2217
|
+
) });
|
|
2218
|
+
const renderFeatures = () => {
|
|
2219
|
+
const features = product.features || [];
|
|
2220
|
+
if (features.length === 0) {
|
|
2221
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `p-5 text-center ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0", children: t("productCard.noFeatures") }) });
|
|
2222
|
+
}
|
|
2223
|
+
const sortedFeatures = [...features].sort((a, b) => (a.order || 0) - (b.order || 0));
|
|
2224
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-4", children: sortedFeatures.map((feature, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2225
|
+
"div",
|
|
2226
|
+
{
|
|
2227
|
+
className: `p-4 rounded-lg border-l-4 border-blue-500 ${isDarkMode ? "bg-gray-700" : "bg-gray-100"}`,
|
|
2228
|
+
children: [
|
|
2229
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-2 text-sm font-bold ${isDarkMode ? "text-white" : "text-gray-900"}`, children: feature.title }),
|
|
2230
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs leading-relaxed ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: feature.description })
|
|
2231
|
+
]
|
|
2232
|
+
},
|
|
2233
|
+
index2
|
|
2234
|
+
)) }) });
|
|
2235
|
+
};
|
|
2236
|
+
const renderContacts = () => {
|
|
2237
|
+
const contacts = product.contacts || [];
|
|
2238
|
+
if (contacts.length === 0) {
|
|
2239
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `p-5 text-center ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0", children: t("productCard.noContacts") }) });
|
|
2240
|
+
}
|
|
2241
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-4", children: contacts.map((contact, index2) => {
|
|
2242
|
+
var _a2, _b2;
|
|
2243
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2244
|
+
"div",
|
|
2245
|
+
{
|
|
2246
|
+
className: `p-4 rounded-lg border ${isDarkMode ? "bg-gray-700 border-gray-600" : "bg-gray-100 border-gray-200"}`,
|
|
2247
|
+
children: [
|
|
2248
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-2", children: [
|
|
2249
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-full flex items-center justify-center mr-3 ${isDarkMode ? "bg-blue-600" : "bg-blue-500"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-bold text-base", children: ((_b2 = (_a2 = contact.name) == null ? void 0 : _a2.charAt(0)) == null ? void 0 : _b2.toUpperCase()) || "?" }) }),
|
|
2250
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2251
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-0.5 text-sm font-bold ${isDarkMode ? "text-white" : "text-gray-900"}`, children: contact.name }),
|
|
2252
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: contact.position })
|
|
2253
|
+
] })
|
|
2254
|
+
] }),
|
|
2255
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
2256
|
+
contact.phone && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2257
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `text-sm ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "📞" }),
|
|
2258
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2259
|
+
"a",
|
|
2260
|
+
{
|
|
2261
|
+
href: `tel:${contact.phone}`,
|
|
2262
|
+
className: `text-xs no-underline hover:underline ${isDarkMode ? "text-blue-400" : "text-blue-500"}`,
|
|
2263
|
+
children: contact.phone
|
|
2264
|
+
}
|
|
2265
|
+
)
|
|
2266
|
+
] }),
|
|
2267
|
+
contact.email && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2268
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `text-sm ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "✉️" }),
|
|
2269
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2270
|
+
"a",
|
|
2271
|
+
{
|
|
2272
|
+
href: `mailto:${contact.email}`,
|
|
2273
|
+
className: `text-xs no-underline hover:underline ${isDarkMode ? "text-blue-400" : "text-blue-500"}`,
|
|
2274
|
+
children: contact.email
|
|
2275
|
+
}
|
|
2276
|
+
)
|
|
2277
|
+
] })
|
|
2278
|
+
] })
|
|
2279
|
+
]
|
|
2280
|
+
},
|
|
2281
|
+
contact.id || index2
|
|
2282
|
+
);
|
|
2283
|
+
}) }) });
|
|
2284
|
+
};
|
|
2285
|
+
const renderDownloads = () => {
|
|
2286
|
+
const downloads = product.productDownloads || [];
|
|
2287
|
+
if (downloads.length === 0) {
|
|
2288
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `p-5 text-center ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0", children: t("productCard.noDownloads") }) });
|
|
2289
|
+
}
|
|
2290
|
+
const handleDownload = (fileUrl, title) => {
|
|
2291
|
+
try {
|
|
2292
|
+
const link = document.createElement("a");
|
|
2293
|
+
link.href = fileUrl;
|
|
2294
|
+
link.download = title || "download";
|
|
2295
|
+
link.target = "_blank";
|
|
2296
|
+
document.body.appendChild(link);
|
|
2297
|
+
link.click();
|
|
2298
|
+
document.body.removeChild(link);
|
|
2299
|
+
} catch (error) {
|
|
2300
|
+
console.error("Download error:", error);
|
|
2301
|
+
}
|
|
2302
|
+
};
|
|
2303
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-3", children: downloads.map((download, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2304
|
+
"div",
|
|
2305
|
+
{
|
|
2306
|
+
onClick: () => handleDownload(download.fileUrl, download.title),
|
|
2307
|
+
className: `p-4 rounded-lg border cursor-pointer flex items-center gap-3 transition-all duration-200 hover:translate-x-1 ${isDarkMode ? "bg-gray-700 border-gray-600 hover:bg-gray-600" : "bg-gray-100 border-gray-200 hover:bg-gray-200"}`,
|
|
2308
|
+
children: [
|
|
2309
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center flex-shrink-0 ${isDarkMode ? "bg-blue-600" : "bg-blue-500"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white text-lg", children: "📄" }) }),
|
|
2310
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
2311
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-1 text-sm font-bold overflow-hidden text-ellipsis whitespace-nowrap ${isDarkMode ? "text-white" : "text-gray-900"}`, children: download.title }),
|
|
2312
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productCard.downloadClick") })
|
|
2313
|
+
] }),
|
|
2314
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `flex-shrink-0 text-base ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "⬇️" })
|
|
2315
|
+
]
|
|
2316
|
+
},
|
|
2317
|
+
index2
|
|
2318
|
+
)) }) });
|
|
2319
|
+
};
|
|
2320
|
+
const renderTabContent = () => {
|
|
2321
|
+
switch (activeTab) {
|
|
2322
|
+
case "overview":
|
|
2323
|
+
return renderOverview();
|
|
2324
|
+
case "features":
|
|
2325
|
+
return renderFeatures();
|
|
2326
|
+
case "contacts":
|
|
2327
|
+
return renderContacts();
|
|
2328
|
+
case "downloads":
|
|
2329
|
+
return renderDownloads();
|
|
2330
|
+
default:
|
|
2331
|
+
return null;
|
|
2332
|
+
}
|
|
2333
|
+
};
|
|
2334
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2335
|
+
"div",
|
|
2336
|
+
{
|
|
2337
|
+
className: `
|
|
2338
|
+
rounded-xl overflow-hidden cursor-pointer transition-all duration-300 border
|
|
2339
|
+
${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"}
|
|
2340
|
+
${isHovered ? `shadow-xl -translate-y-2 ${isDarkMode ? "shadow-gray-900/40" : "shadow-gray-500/20"}` : `shadow-lg ${isDarkMode ? "shadow-gray-900/20" : "shadow-gray-500/10"}`}
|
|
2341
|
+
`,
|
|
2342
|
+
onMouseEnter: () => setIsHovered(true),
|
|
2343
|
+
onMouseLeave: () => setIsHovered(false),
|
|
2344
|
+
children: [
|
|
2345
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2346
|
+
"div",
|
|
2347
|
+
{
|
|
2348
|
+
className: `relative h-48 bg-cover bg-center ${isDarkMode ? "bg-gray-700" : "bg-gray-200"}`,
|
|
2349
|
+
style: {
|
|
2350
|
+
backgroundImage: `url(${mainImage})`
|
|
2351
|
+
},
|
|
2352
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/70 via-black/30 to-transparent p-5 text-white", children: [
|
|
2353
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "m-0 mb-2 text-lg font-bold", children: product.name }),
|
|
2354
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0 text-sm opacity-90", children: product.description })
|
|
2355
|
+
] })
|
|
2356
|
+
}
|
|
2357
|
+
),
|
|
2358
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `border-b ${isDarkMode ? "border-gray-600" : "border-gray-200"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex overflow-x-auto", children: tabs.map((tab) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2359
|
+
"button",
|
|
2360
|
+
{
|
|
2361
|
+
onClick: () => setActiveTab(tab.id),
|
|
2362
|
+
className: `
|
|
2363
|
+
flex-1 min-w-[100px] py-4 px-2 border-none text-xs font-medium cursor-pointer transition-all duration-300 flex items-center justify-center gap-1
|
|
2364
|
+
${activeTab === tab.id ? `${isDarkMode ? "bg-blue-600" : "bg-blue-500"} text-white font-bold` : `bg-transparent ${isDarkMode ? "text-gray-400 hover:bg-gray-700" : "text-gray-600 hover:bg-gray-100"}`}
|
|
2365
|
+
`,
|
|
2366
|
+
children: [
|
|
2367
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: tab.label }),
|
|
2368
|
+
tab.count !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `
|
|
2369
|
+
text-xs py-0.5 px-1.5 rounded-full min-w-[18px] text-center
|
|
2370
|
+
${activeTab === tab.id ? "bg-white/20 text-white" : `${isDarkMode ? "bg-gray-600 text-gray-400" : "bg-gray-200 text-gray-600"}`}
|
|
2371
|
+
`, children: tab.count })
|
|
2372
|
+
]
|
|
2373
|
+
},
|
|
2374
|
+
tab.id
|
|
2375
|
+
)) }) }),
|
|
2376
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-[200px] max-h-[300px] overflow-y-auto", children: renderTabContent() })
|
|
2377
|
+
]
|
|
2378
|
+
}
|
|
2379
|
+
);
|
|
2743
2380
|
};
|
|
2744
|
-
const
|
|
2745
|
-
|
|
2746
|
-
const
|
|
2747
|
-
const
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2381
|
+
const TextWithTitleSection = ({ section, data, isDarkMode }) => {
|
|
2382
|
+
var _a;
|
|
2383
|
+
const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
|
|
2384
|
+
const title = ((_a = textItems[0]) == null ? void 0 : _a.value) || "";
|
|
2385
|
+
const descriptions = textItems.slice(1);
|
|
2386
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-6xl mx-auto", children: [
|
|
2387
|
+
title && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-title font-black mb-4 leading-tight text-left text-main", children: title }),
|
|
2388
|
+
descriptions.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2389
|
+
"div",
|
|
2390
|
+
{
|
|
2391
|
+
className: `text-body leading-relaxed text-left font-normal text-muted ${index2 < descriptions.length - 1 ? "mb-4" : ""}`,
|
|
2392
|
+
children: item.value
|
|
2393
|
+
},
|
|
2394
|
+
item.id || index2
|
|
2395
|
+
))
|
|
2396
|
+
] }) });
|
|
2397
|
+
};
|
|
2398
|
+
const TextSection = ({ data, isDarkMode }) => {
|
|
2399
|
+
const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
|
|
2400
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-3xl mx-auto", children: textItems.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2401
|
+
"div",
|
|
2402
|
+
{
|
|
2403
|
+
className: "mb-5 text-subtitle font-black leading-snug text-left text-main",
|
|
2404
|
+
children: item.value
|
|
2405
|
+
},
|
|
2406
|
+
item.id || index2
|
|
2407
|
+
)) }) });
|
|
2408
|
+
};
|
|
2409
|
+
/**
|
|
2410
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2411
|
+
*
|
|
2412
|
+
* This source code is licensed under the ISC license.
|
|
2413
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2414
|
+
*/
|
|
2415
|
+
const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
2416
|
+
const toCamelCase = (string) => string.replace(
|
|
2417
|
+
/^([A-Z])|[\s-_]+(\w)/g,
|
|
2418
|
+
(match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
|
|
2419
|
+
);
|
|
2420
|
+
const toPascalCase = (string) => {
|
|
2421
|
+
const camelCase = toCamelCase(string);
|
|
2422
|
+
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
|
2423
|
+
};
|
|
2424
|
+
const mergeClasses = (...classes) => classes.filter((className, index2, array) => {
|
|
2425
|
+
return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index2;
|
|
2426
|
+
}).join(" ").trim();
|
|
2427
|
+
const hasA11yProp = (props) => {
|
|
2428
|
+
for (const prop in props) {
|
|
2429
|
+
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
2430
|
+
return true;
|
|
2431
|
+
}
|
|
2778
2432
|
}
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2433
|
+
};
|
|
2434
|
+
/**
|
|
2435
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2436
|
+
*
|
|
2437
|
+
* This source code is licensed under the ISC license.
|
|
2438
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2439
|
+
*/
|
|
2440
|
+
var defaultAttributes = {
|
|
2441
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2442
|
+
width: 24,
|
|
2443
|
+
height: 24,
|
|
2444
|
+
viewBox: "0 0 24 24",
|
|
2445
|
+
fill: "none",
|
|
2446
|
+
stroke: "currentColor",
|
|
2447
|
+
strokeWidth: 2,
|
|
2448
|
+
strokeLinecap: "round",
|
|
2449
|
+
strokeLinejoin: "round"
|
|
2450
|
+
};
|
|
2451
|
+
/**
|
|
2452
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2453
|
+
*
|
|
2454
|
+
* This source code is licensed under the ISC license.
|
|
2455
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2456
|
+
*/
|
|
2457
|
+
const Icon = require$$0.forwardRef(
|
|
2458
|
+
(_a, ref) => {
|
|
2459
|
+
var _b = _a, {
|
|
2460
|
+
color = "currentColor",
|
|
2461
|
+
size = 24,
|
|
2462
|
+
strokeWidth = 2,
|
|
2463
|
+
absoluteStrokeWidth,
|
|
2464
|
+
className = "",
|
|
2465
|
+
children,
|
|
2466
|
+
iconNode
|
|
2467
|
+
} = _b, rest = __objRest(_b, [
|
|
2468
|
+
"color",
|
|
2469
|
+
"size",
|
|
2470
|
+
"strokeWidth",
|
|
2471
|
+
"absoluteStrokeWidth",
|
|
2472
|
+
"className",
|
|
2473
|
+
"children",
|
|
2474
|
+
"iconNode"
|
|
2475
|
+
]);
|
|
2476
|
+
return require$$0.createElement(
|
|
2477
|
+
"svg",
|
|
2478
|
+
__spreadValues(__spreadValues(__spreadProps(__spreadValues({
|
|
2479
|
+
ref
|
|
2480
|
+
}, defaultAttributes), {
|
|
2481
|
+
width: size,
|
|
2482
|
+
height: size,
|
|
2483
|
+
stroke: color,
|
|
2484
|
+
strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
|
|
2485
|
+
className: mergeClasses("lucide", className)
|
|
2486
|
+
}), !children && !hasA11yProp(rest) && { "aria-hidden": "true" }), rest),
|
|
2487
|
+
[
|
|
2488
|
+
...iconNode.map(([tag, attrs]) => require$$0.createElement(tag, attrs)),
|
|
2489
|
+
...Array.isArray(children) ? children : [children]
|
|
2490
|
+
]
|
|
2491
|
+
);
|
|
2784
2492
|
}
|
|
2785
|
-
|
|
2493
|
+
);
|
|
2494
|
+
/**
|
|
2495
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2496
|
+
*
|
|
2497
|
+
* This source code is licensed under the ISC license.
|
|
2498
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2499
|
+
*/
|
|
2500
|
+
const createLucideIcon = (iconName, iconNode) => {
|
|
2501
|
+
const Component = require$$0.forwardRef(
|
|
2502
|
+
(_a, ref) => {
|
|
2503
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2504
|
+
return require$$0.createElement(Icon, __spreadValues({
|
|
2505
|
+
ref,
|
|
2506
|
+
iconNode,
|
|
2507
|
+
className: mergeClasses(
|
|
2508
|
+
`lucide-${toKebabCase(toPascalCase(iconName))}`,
|
|
2509
|
+
`lucide-${iconName}`,
|
|
2510
|
+
className
|
|
2511
|
+
)
|
|
2512
|
+
}, props));
|
|
2513
|
+
}
|
|
2514
|
+
);
|
|
2515
|
+
Component.displayName = toPascalCase(iconName);
|
|
2516
|
+
return Component;
|
|
2786
2517
|
};
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
]
|
|
2798
|
-
|
|
2799
|
-
|
|
2518
|
+
/**
|
|
2519
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2520
|
+
*
|
|
2521
|
+
* This source code is licensed under the ISC license.
|
|
2522
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2523
|
+
*/
|
|
2524
|
+
const __iconNode$o = [
|
|
2525
|
+
["path", { d: "M2 4v16", key: "vw9hq8" }],
|
|
2526
|
+
["path", { d: "M2 8h18a2 2 0 0 1 2 2v10", key: "1dgv2r" }],
|
|
2527
|
+
["path", { d: "M2 17h20", key: "18nfp3" }],
|
|
2528
|
+
["path", { d: "M6 8v9", key: "1yriud" }]
|
|
2529
|
+
];
|
|
2530
|
+
const Bed = createLucideIcon("bed", __iconNode$o);
|
|
2531
|
+
/**
|
|
2532
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2533
|
+
*
|
|
2534
|
+
* This source code is licensed under the ISC license.
|
|
2535
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2536
|
+
*/
|
|
2537
|
+
const __iconNode$n = [
|
|
2538
|
+
["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
|
|
2539
|
+
["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
|
|
2540
|
+
];
|
|
2541
|
+
const Briefcase = createLucideIcon("briefcase", __iconNode$n);
|
|
2542
|
+
/**
|
|
2543
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2544
|
+
*
|
|
2545
|
+
* This source code is licensed under the ISC license.
|
|
2546
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2547
|
+
*/
|
|
2548
|
+
const __iconNode$m = [
|
|
2549
|
+
["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
|
|
2550
|
+
["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
|
|
2551
|
+
["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
|
|
2552
|
+
["path", { d: "M10 6h4", key: "1itunk" }],
|
|
2553
|
+
["path", { d: "M10 10h4", key: "tcdvrf" }],
|
|
2554
|
+
["path", { d: "M10 14h4", key: "kelpxr" }],
|
|
2555
|
+
["path", { d: "M10 18h4", key: "1ulq68" }]
|
|
2556
|
+
];
|
|
2557
|
+
const Building2 = createLucideIcon("building-2", __iconNode$m);
|
|
2558
|
+
/**
|
|
2559
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2560
|
+
*
|
|
2561
|
+
* This source code is licensed under the ISC license.
|
|
2562
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2563
|
+
*/
|
|
2564
|
+
const __iconNode$l = [
|
|
2565
|
+
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }],
|
|
2566
|
+
["path", { d: "M9 22v-4h6v4", key: "r93iot" }],
|
|
2567
|
+
["path", { d: "M8 6h.01", key: "1dz90k" }],
|
|
2568
|
+
["path", { d: "M16 6h.01", key: "1x0f13" }],
|
|
2569
|
+
["path", { d: "M12 6h.01", key: "1vi96p" }],
|
|
2570
|
+
["path", { d: "M12 10h.01", key: "1nrarc" }],
|
|
2571
|
+
["path", { d: "M12 14h.01", key: "1etili" }],
|
|
2572
|
+
["path", { d: "M16 10h.01", key: "1m94wz" }],
|
|
2573
|
+
["path", { d: "M16 14h.01", key: "1gbofw" }],
|
|
2574
|
+
["path", { d: "M8 10h.01", key: "19clt8" }],
|
|
2575
|
+
["path", { d: "M8 14h.01", key: "6423bh" }]
|
|
2576
|
+
];
|
|
2577
|
+
const Building = createLucideIcon("building", __iconNode$l);
|
|
2578
|
+
/**
|
|
2579
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2580
|
+
*
|
|
2581
|
+
* This source code is licensed under the ISC license.
|
|
2582
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2583
|
+
*/
|
|
2584
|
+
const __iconNode$k = [
|
|
2585
|
+
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }],
|
|
2586
|
+
["line", { x1: "8", x2: "16", y1: "6", y2: "6", key: "x4nwl0" }],
|
|
2587
|
+
["line", { x1: "16", x2: "16", y1: "14", y2: "18", key: "wjye3r" }],
|
|
2588
|
+
["path", { d: "M16 10h.01", key: "1m94wz" }],
|
|
2589
|
+
["path", { d: "M12 10h.01", key: "1nrarc" }],
|
|
2590
|
+
["path", { d: "M8 10h.01", key: "19clt8" }],
|
|
2591
|
+
["path", { d: "M12 14h.01", key: "1etili" }],
|
|
2592
|
+
["path", { d: "M8 14h.01", key: "6423bh" }],
|
|
2593
|
+
["path", { d: "M12 18h.01", key: "mhygvu" }],
|
|
2594
|
+
["path", { d: "M8 18h.01", key: "lrp35t" }]
|
|
2595
|
+
];
|
|
2596
|
+
const Calculator = createLucideIcon("calculator", __iconNode$k);
|
|
2597
|
+
/**
|
|
2598
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2599
|
+
*
|
|
2600
|
+
* This source code is licensed under the ISC license.
|
|
2601
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2602
|
+
*/
|
|
2603
|
+
const __iconNode$j = [
|
|
2604
|
+
["path", { d: "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "p7xjir" }]
|
|
2605
|
+
];
|
|
2606
|
+
const Cloud = createLucideIcon("cloud", __iconNode$j);
|
|
2607
|
+
/**
|
|
2608
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2609
|
+
*
|
|
2610
|
+
* This source code is licensed under the ISC license.
|
|
2611
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2612
|
+
*/
|
|
2613
|
+
const __iconNode$i = [
|
|
2614
|
+
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
2615
|
+
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
2616
|
+
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
2617
|
+
];
|
|
2618
|
+
const Database = createLucideIcon("database", __iconNode$i);
|
|
2619
|
+
/**
|
|
2620
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2621
|
+
*
|
|
2622
|
+
* This source code is licensed under the ISC license.
|
|
2623
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2624
|
+
*/
|
|
2625
|
+
const __iconNode$h = [
|
|
2626
|
+
["path", { d: "M12 16h.01", key: "1drbdi" }],
|
|
2627
|
+
["path", { d: "M16 16h.01", key: "1f9h7w" }],
|
|
2628
|
+
[
|
|
2629
|
+
"path",
|
|
2800
2630
|
{
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
__html: product.overviewContent || product.description || t("productCard.noOverview")
|
|
2804
|
-
}
|
|
2631
|
+
d: "M3 19a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8.5a.5.5 0 0 0-.769-.422l-4.462 2.844A.5.5 0 0 1 15 10.5v-2a.5.5 0 0 0-.769-.422L9.77 10.922A.5.5 0 0 1 9 10.5V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2z",
|
|
2632
|
+
key: "1iv0i2"
|
|
2805
2633
|
}
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2634
|
+
],
|
|
2635
|
+
["path", { d: "M8 16h.01", key: "18s6g9" }]
|
|
2636
|
+
];
|
|
2637
|
+
const Factory = createLucideIcon("factory", __iconNode$h);
|
|
2638
|
+
/**
|
|
2639
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2640
|
+
*
|
|
2641
|
+
* This source code is licensed under the ISC license.
|
|
2642
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2643
|
+
*/
|
|
2644
|
+
const __iconNode$g = [
|
|
2645
|
+
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
2646
|
+
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
2647
|
+
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
2648
|
+
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
2649
|
+
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
2650
|
+
];
|
|
2651
|
+
const FileText = createLucideIcon("file-text", __iconNode$g);
|
|
2652
|
+
/**
|
|
2653
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2654
|
+
*
|
|
2655
|
+
* This source code is licensed under the ISC license.
|
|
2656
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2657
|
+
*/
|
|
2658
|
+
const __iconNode$f = [
|
|
2659
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
2660
|
+
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
2661
|
+
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
2662
|
+
];
|
|
2663
|
+
const Globe = createLucideIcon("globe", __iconNode$f);
|
|
2664
|
+
/**
|
|
2665
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2666
|
+
*
|
|
2667
|
+
* This source code is licensed under the ISC license.
|
|
2668
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2669
|
+
*/
|
|
2670
|
+
const __iconNode$e = [
|
|
2671
|
+
[
|
|
2672
|
+
"path",
|
|
2673
|
+
{
|
|
2674
|
+
d: "M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",
|
|
2675
|
+
key: "j76jl0"
|
|
2811
2676
|
}
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2677
|
+
],
|
|
2678
|
+
["path", { d: "M22 10v6", key: "1lu8f3" }],
|
|
2679
|
+
["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
|
|
2680
|
+
];
|
|
2681
|
+
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$e);
|
|
2682
|
+
/**
|
|
2683
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2684
|
+
*
|
|
2685
|
+
* This source code is licensed under the ISC license.
|
|
2686
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2687
|
+
*/
|
|
2688
|
+
const __iconNode$d = [
|
|
2689
|
+
[
|
|
2690
|
+
"path",
|
|
2691
|
+
{
|
|
2692
|
+
d: "M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",
|
|
2693
|
+
key: "mvr1a0"
|
|
2829
2694
|
}
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2695
|
+
]
|
|
2696
|
+
];
|
|
2697
|
+
const Heart = createLucideIcon("heart", __iconNode$d);
|
|
2698
|
+
/**
|
|
2699
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2700
|
+
*
|
|
2701
|
+
* This source code is licensed under the ISC license.
|
|
2702
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2703
|
+
*/
|
|
2704
|
+
const __iconNode$c = [
|
|
2705
|
+
["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
|
|
2706
|
+
[
|
|
2707
|
+
"path",
|
|
2708
|
+
{
|
|
2709
|
+
d: "M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",
|
|
2710
|
+
key: "1d0kgt"
|
|
2711
|
+
}
|
|
2712
|
+
]
|
|
2713
|
+
];
|
|
2714
|
+
const House = createLucideIcon("house", __iconNode$c);
|
|
2715
|
+
/**
|
|
2716
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2717
|
+
*
|
|
2718
|
+
* This source code is licensed under the ISC license.
|
|
2719
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2720
|
+
*/
|
|
2721
|
+
const __iconNode$b = [
|
|
2722
|
+
[
|
|
2723
|
+
"path",
|
|
2724
|
+
{
|
|
2725
|
+
d: "M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z",
|
|
2726
|
+
key: "q8bfy3"
|
|
2727
|
+
}
|
|
2728
|
+
],
|
|
2729
|
+
["path", { d: "M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14", key: "1853fq" }],
|
|
2730
|
+
["path", { d: "M8 6v8", key: "15ugcq" }]
|
|
2731
|
+
];
|
|
2732
|
+
const Megaphone = createLucideIcon("megaphone", __iconNode$b);
|
|
2733
|
+
/**
|
|
2734
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2735
|
+
*
|
|
2736
|
+
* This source code is licensed under the ISC license.
|
|
2737
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2738
|
+
*/
|
|
2739
|
+
const __iconNode$a = [
|
|
2740
|
+
[
|
|
2741
|
+
"path",
|
|
2742
|
+
{
|
|
2743
|
+
d: "M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",
|
|
2744
|
+
key: "1a0edw"
|
|
2745
|
+
}
|
|
2746
|
+
],
|
|
2747
|
+
["path", { d: "M12 22V12", key: "d0xqtd" }],
|
|
2748
|
+
["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }],
|
|
2749
|
+
["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }]
|
|
2750
|
+
];
|
|
2751
|
+
const Package = createLucideIcon("package", __iconNode$a);
|
|
2752
|
+
/**
|
|
2753
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2754
|
+
*
|
|
2755
|
+
* This source code is licensed under the ISC license.
|
|
2756
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2757
|
+
*/
|
|
2758
|
+
const __iconNode$9 = [
|
|
2759
|
+
[
|
|
2760
|
+
"path",
|
|
2761
|
+
{
|
|
2762
|
+
d: "M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z",
|
|
2763
|
+
key: "1v9wt8"
|
|
2878
2764
|
}
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
"
|
|
2894
|
-
{
|
|
2895
|
-
onClick: () => handleDownload(download.fileUrl, download.title),
|
|
2896
|
-
className: `p-4 rounded-lg border cursor-pointer flex items-center gap-3 transition-all duration-200 hover:translate-x-1 ${isDarkMode ? "bg-gray-700 border-gray-600 hover:bg-gray-600" : "bg-gray-100 border-gray-200 hover:bg-gray-200"}`,
|
|
2897
|
-
children: [
|
|
2898
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `w-10 h-10 rounded-lg flex items-center justify-center flex-shrink-0 ${isDarkMode ? "bg-blue-600" : "bg-blue-500"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white text-lg", children: "📄" }) }),
|
|
2899
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
2900
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-1 text-sm font-bold overflow-hidden text-ellipsis whitespace-nowrap ${isDarkMode ? "text-white" : "text-gray-900"}`, children: download.title }),
|
|
2901
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productCard.downloadClick") })
|
|
2902
|
-
] }),
|
|
2903
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `flex-shrink-0 text-base ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "⬇️" })
|
|
2904
|
-
]
|
|
2905
|
-
},
|
|
2906
|
-
index2
|
|
2907
|
-
)) }) });
|
|
2908
|
-
};
|
|
2909
|
-
const renderTabContent = () => {
|
|
2910
|
-
switch (activeTab) {
|
|
2911
|
-
case "overview":
|
|
2912
|
-
return renderOverview();
|
|
2913
|
-
case "features":
|
|
2914
|
-
return renderFeatures();
|
|
2915
|
-
case "contacts":
|
|
2916
|
-
return renderContacts();
|
|
2917
|
-
case "downloads":
|
|
2918
|
-
return renderDownloads();
|
|
2919
|
-
default:
|
|
2920
|
-
return null;
|
|
2765
|
+
]
|
|
2766
|
+
];
|
|
2767
|
+
const Plane = createLucideIcon("plane", __iconNode$9);
|
|
2768
|
+
/**
|
|
2769
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2770
|
+
*
|
|
2771
|
+
* This source code is licensed under the ISC license.
|
|
2772
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2773
|
+
*/
|
|
2774
|
+
const __iconNode$8 = [
|
|
2775
|
+
[
|
|
2776
|
+
"path",
|
|
2777
|
+
{
|
|
2778
|
+
d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",
|
|
2779
|
+
key: "1i5ecw"
|
|
2921
2780
|
}
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2781
|
+
],
|
|
2782
|
+
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
2783
|
+
];
|
|
2784
|
+
const Settings = createLucideIcon("settings", __iconNode$8);
|
|
2785
|
+
/**
|
|
2786
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2787
|
+
*
|
|
2788
|
+
* This source code is licensed under the ISC license.
|
|
2789
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2790
|
+
*/
|
|
2791
|
+
const __iconNode$7 = [
|
|
2792
|
+
[
|
|
2793
|
+
"path",
|
|
2925
2794
|
{
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"}
|
|
2929
|
-
${isHovered ? `shadow-xl -translate-y-2 ${isDarkMode ? "shadow-gray-900/40" : "shadow-gray-500/20"}` : `shadow-lg ${isDarkMode ? "shadow-gray-900/20" : "shadow-gray-500/10"}`}
|
|
2930
|
-
`,
|
|
2931
|
-
onMouseEnter: () => setIsHovered(true),
|
|
2932
|
-
onMouseLeave: () => setIsHovered(false),
|
|
2933
|
-
children: [
|
|
2934
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2935
|
-
"div",
|
|
2936
|
-
{
|
|
2937
|
-
className: `relative h-48 bg-cover bg-center ${isDarkMode ? "bg-gray-700" : "bg-gray-200"}`,
|
|
2938
|
-
style: {
|
|
2939
|
-
backgroundImage: `url(${mainImage})`
|
|
2940
|
-
},
|
|
2941
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/70 via-black/30 to-transparent p-5 text-white", children: [
|
|
2942
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "m-0 mb-2 text-lg font-bold", children: product.name }),
|
|
2943
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0 text-sm opacity-90", children: product.description })
|
|
2944
|
-
] })
|
|
2945
|
-
}
|
|
2946
|
-
),
|
|
2947
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `border-b ${isDarkMode ? "border-gray-600" : "border-gray-200"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex overflow-x-auto", children: tabs.map((tab) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2948
|
-
"button",
|
|
2949
|
-
{
|
|
2950
|
-
onClick: () => setActiveTab(tab.id),
|
|
2951
|
-
className: `
|
|
2952
|
-
flex-1 min-w-[100px] py-4 px-2 border-none text-xs font-medium cursor-pointer transition-all duration-300 flex items-center justify-center gap-1
|
|
2953
|
-
${activeTab === tab.id ? `${isDarkMode ? "bg-blue-600" : "bg-blue-500"} text-white font-bold` : `bg-transparent ${isDarkMode ? "text-gray-400 hover:bg-gray-700" : "text-gray-600 hover:bg-gray-100"}`}
|
|
2954
|
-
`,
|
|
2955
|
-
children: [
|
|
2956
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: tab.label }),
|
|
2957
|
-
tab.count !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `
|
|
2958
|
-
text-xs py-0.5 px-1.5 rounded-full min-w-[18px] text-center
|
|
2959
|
-
${activeTab === tab.id ? "bg-white/20 text-white" : `${isDarkMode ? "bg-gray-600 text-gray-400" : "bg-gray-200 text-gray-600"}`}
|
|
2960
|
-
`, children: tab.count })
|
|
2961
|
-
]
|
|
2962
|
-
},
|
|
2963
|
-
tab.id
|
|
2964
|
-
)) }) }),
|
|
2965
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-[200px] max-h-[300px] overflow-y-auto", children: renderTabContent() })
|
|
2966
|
-
]
|
|
2795
|
+
d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
|
|
2796
|
+
key: "oel41y"
|
|
2967
2797
|
}
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
const
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
},
|
|
2983
|
-
item.id || index2
|
|
2984
|
-
))
|
|
2985
|
-
] }) });
|
|
2986
|
-
};
|
|
2987
|
-
const TextSection = ({ data, isDarkMode }) => {
|
|
2988
|
-
const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
|
|
2989
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-w-3xl mx-auto", children: textItems.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2990
|
-
"div",
|
|
2798
|
+
]
|
|
2799
|
+
];
|
|
2800
|
+
const Shield = createLucideIcon("shield", __iconNode$7);
|
|
2801
|
+
/**
|
|
2802
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2803
|
+
*
|
|
2804
|
+
* This source code is licensed under the ISC license.
|
|
2805
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2806
|
+
*/
|
|
2807
|
+
const __iconNode$6 = [
|
|
2808
|
+
["circle", { cx: "8", cy: "21", r: "1", key: "jimo8o" }],
|
|
2809
|
+
["circle", { cx: "19", cy: "21", r: "1", key: "13723u" }],
|
|
2810
|
+
[
|
|
2811
|
+
"path",
|
|
2991
2812
|
{
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
}
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2813
|
+
d: "M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",
|
|
2814
|
+
key: "9zh506"
|
|
2815
|
+
}
|
|
2816
|
+
]
|
|
2817
|
+
];
|
|
2818
|
+
const ShoppingCart = createLucideIcon("shopping-cart", __iconNode$6);
|
|
2819
|
+
/**
|
|
2820
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2821
|
+
*
|
|
2822
|
+
* This source code is licensed under the ISC license.
|
|
2823
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2824
|
+
*/
|
|
2825
|
+
const __iconNode$5 = [
|
|
2826
|
+
["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }],
|
|
2827
|
+
["path", { d: "M12 18h.01", key: "mhygvu" }]
|
|
2828
|
+
];
|
|
2829
|
+
const Smartphone = createLucideIcon("smartphone", __iconNode$5);
|
|
2830
|
+
/**
|
|
2831
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2832
|
+
*
|
|
2833
|
+
* This source code is licensed under the ISC license.
|
|
2834
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2835
|
+
*/
|
|
2836
|
+
const __iconNode$4 = [
|
|
2837
|
+
["path", { d: "M16 7h6v6", key: "box55l" }],
|
|
2838
|
+
["path", { d: "m22 7-8.5 8.5-5-5L2 17", key: "1t1m79" }]
|
|
2839
|
+
];
|
|
2840
|
+
const TrendingUp = createLucideIcon("trending-up", __iconNode$4);
|
|
2841
|
+
/**
|
|
2842
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2843
|
+
*
|
|
2844
|
+
* This source code is licensed under the ISC license.
|
|
2845
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2846
|
+
*/
|
|
2847
|
+
const __iconNode$3 = [
|
|
2848
|
+
["path", { d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2", key: "wrbu53" }],
|
|
2849
|
+
["path", { d: "M15 18H9", key: "1lyqi6" }],
|
|
2850
|
+
[
|
|
2851
|
+
"path",
|
|
2852
|
+
{
|
|
2853
|
+
d: "M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14",
|
|
2854
|
+
key: "lysw3i"
|
|
2855
|
+
}
|
|
2856
|
+
],
|
|
2857
|
+
["circle", { cx: "17", cy: "18", r: "2", key: "332jqn" }],
|
|
2858
|
+
["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }]
|
|
2859
|
+
];
|
|
2860
|
+
const Truck = createLucideIcon("truck", __iconNode$3);
|
|
2861
|
+
/**
|
|
2862
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2863
|
+
*
|
|
2864
|
+
* This source code is licensed under the ISC license.
|
|
2865
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2866
|
+
*/
|
|
2867
|
+
const __iconNode$2 = [
|
|
2868
|
+
["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
|
|
2869
|
+
["path", { d: "M16 3.128a4 4 0 0 1 0 7.744", key: "16gr8j" }],
|
|
2870
|
+
["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" }],
|
|
2871
|
+
["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
|
|
2872
|
+
];
|
|
2873
|
+
const Users = createLucideIcon("users", __iconNode$2);
|
|
2874
|
+
/**
|
|
2875
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2876
|
+
*
|
|
2877
|
+
* This source code is licensed under the ISC license.
|
|
2878
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2879
|
+
*/
|
|
2880
|
+
const __iconNode$1 = [
|
|
2881
|
+
[
|
|
2882
|
+
"path",
|
|
2883
|
+
{
|
|
2884
|
+
d: "M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",
|
|
2885
|
+
key: "1ngwbx"
|
|
2886
|
+
}
|
|
2887
|
+
]
|
|
2888
|
+
];
|
|
2889
|
+
const Wrench = createLucideIcon("wrench", __iconNode$1);
|
|
2890
|
+
/**
|
|
2891
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2892
|
+
*
|
|
2893
|
+
* This source code is licensed under the ISC license.
|
|
2894
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2895
|
+
*/
|
|
2896
|
+
const __iconNode = [
|
|
2897
|
+
[
|
|
2898
|
+
"path",
|
|
2899
|
+
{
|
|
2900
|
+
d: "M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",
|
|
2901
|
+
key: "1xq2db"
|
|
2902
|
+
}
|
|
2903
|
+
]
|
|
2904
|
+
];
|
|
2905
|
+
const Zap = createLucideIcon("zap", __iconNode);
|
|
2998
2906
|
const DiagramSection = ({ data, t, isDarkMode }) => {
|
|
2999
2907
|
var _a, _b;
|
|
3000
2908
|
const [mounted, setMounted] = require$$0.useState(false);
|
|
@@ -3621,7 +3529,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
3621
3529
|
style: {
|
|
3622
3530
|
background: isHovered || isDragging ? colorStyle.gradientHover : colorStyle.gradient,
|
|
3623
3531
|
borderColor: colorStyle.border + "80",
|
|
3624
|
-
boxShadow: `0 10px 40px
|
|
3532
|
+
boxShadow: `0 10px 40px rgba(var(--brand-primary), 0.3)`,
|
|
3625
3533
|
transform: isHovered || isDragging ? "scale(1.1)" : "scale(1)",
|
|
3626
3534
|
filter: isHovered || isDragging ? "brightness(1.1)" : "brightness(1)",
|
|
3627
3535
|
rotate: isDragging ? "2deg" : "0deg"
|
|
@@ -4075,8 +3983,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4075
3983
|
{
|
|
4076
3984
|
className: "relative px-6 sm:px-10 py-3 sm:py-5 rounded-3xl shadow-2xl border-4 flex items-center gap-3 sm:gap-4 backdrop-blur-md bg-gradient-brand",
|
|
4077
3985
|
style: {
|
|
4078
|
-
borderColor: "var(--brand-primary)",
|
|
4079
|
-
borderOpacity: 0.5,
|
|
3986
|
+
borderColor: "rgba(var(--brand-primary-rgb), 0.5)",
|
|
4080
3987
|
transform: isDragging ? "scale(1.1)" : "scale(1)",
|
|
4081
3988
|
transition: "transform 0.3s ease"
|
|
4082
3989
|
},
|
|
@@ -4151,7 +4058,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4151
4058
|
flex-shrink-0 w-10 h-10 rounded-full flex items-center justify-center
|
|
4152
4059
|
transition-all duration-500 transform
|
|
4153
4060
|
${isActive ? "bg-gradient-to-br from-blue-500 to-purple-600 text-white shadow-lg shadow-blue-500/50 rotate-180 scale-110" : "bg-gray-700/50 text-gray-400 group-hover:bg-gray-600 group-hover:scale-110"}
|
|
4154
|
-
`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4061
|
+
`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4062
|
+
ThemeIcon,
|
|
4063
|
+
{
|
|
4064
|
+
name: "icon-faqChevronDown",
|
|
4065
|
+
folder: "common",
|
|
4066
|
+
className: `w-5 h-5 icon-muted transition-transform duration-500 ${isActive ? "rotate-180" : ""}`
|
|
4067
|
+
}
|
|
4068
|
+
) })
|
|
4155
4069
|
]
|
|
4156
4070
|
}
|
|
4157
4071
|
),
|
|
@@ -4230,15 +4144,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4230
4144
|
},
|
|
4231
4145
|
onMouseEnter: (e) => e.currentTarget.style.transform = "scale(1.1)",
|
|
4232
4146
|
onMouseLeave: (e) => e.currentTarget.style.transform = "scale(1)",
|
|
4233
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4234
|
-
"svg",
|
|
4235
|
-
{
|
|
4236
|
-
className: "w-6 h-6 text-white",
|
|
4237
|
-
fill: "currentColor",
|
|
4238
|
-
viewBox: "0 0 24 24",
|
|
4239
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z" })
|
|
4240
|
-
}
|
|
4241
|
-
)
|
|
4147
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-faqQuestion", className: "w-4 h-4 icon-gradient" })
|
|
4242
4148
|
}
|
|
4243
4149
|
) }),
|
|
4244
4150
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12 animate-fade-in", children: [
|
|
@@ -4611,7 +4517,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4611
4517
|
},
|
|
4612
4518
|
children: [
|
|
4613
4519
|
t("pageChildrenSelect.moreInsights"),
|
|
4614
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4520
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectArrowRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 icon-muted" })
|
|
4615
4521
|
]
|
|
4616
4522
|
}
|
|
4617
4523
|
) })
|
|
@@ -4686,13 +4592,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4686
4592
|
display: "flex",
|
|
4687
4593
|
alignItems: "center",
|
|
4688
4594
|
paddingLeft: "16px"
|
|
4689
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4690
|
-
ChevronRight,
|
|
4691
|
-
{
|
|
4692
|
-
size: 20,
|
|
4693
|
-
className: "card-text"
|
|
4694
|
-
}
|
|
4695
|
-
) })
|
|
4595
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectChevronRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 card-text" }) })
|
|
4696
4596
|
]
|
|
4697
4597
|
},
|
|
4698
4598
|
page.id
|
|
@@ -4717,7 +4617,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4717
4617
|
},
|
|
4718
4618
|
children: [
|
|
4719
4619
|
t("pageChildrenSelect.moreInsights"),
|
|
4720
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4620
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectArrowRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 icon-muted" })
|
|
4721
4621
|
]
|
|
4722
4622
|
}
|
|
4723
4623
|
) })
|
|
@@ -4827,7 +4727,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4827
4727
|
},
|
|
4828
4728
|
children: [
|
|
4829
4729
|
t("pageChildrenSelect.moreInsights"),
|
|
4830
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4730
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectArrowRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 icon-muted" })
|
|
4831
4731
|
]
|
|
4832
4732
|
}
|
|
4833
4733
|
) })
|