nvis-fe-cms-libs 2.0.3 → 2.0.4
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 +888 -991
- package/dist/nvis-fe-cms-libs.es.js.map +1 -1
- package/dist/nvis-fe-cms-libs.umd.js +905 -1008
- package/dist/nvis-fe-cms-libs.umd.js.map +1 -1
- package/package.json +1 -1
|
@@ -374,15 +374,37 @@ 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
|
+
useOriginalColor = false
|
|
382
|
+
// ← Prop mới để chọn chế độ
|
|
383
|
+
}) {
|
|
378
384
|
if (!name) return null;
|
|
379
385
|
const iconUrl = `/icons/${name}.svg`;
|
|
386
|
+
if (useOriginalColor) {
|
|
387
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
388
|
+
"img",
|
|
389
|
+
{
|
|
390
|
+
src: iconUrl,
|
|
391
|
+
alt: name,
|
|
392
|
+
className: `icon ${className}`,
|
|
393
|
+
onError: (e) => {
|
|
394
|
+
e.target.style.display = "none";
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
);
|
|
398
|
+
}
|
|
380
399
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
381
|
-
"
|
|
400
|
+
"span",
|
|
382
401
|
{
|
|
383
|
-
src: iconUrl,
|
|
384
|
-
alt: name,
|
|
385
402
|
className: `icon ${className}`,
|
|
403
|
+
style: {
|
|
404
|
+
maskImage: `url(${iconUrl})`,
|
|
405
|
+
WebkitMaskImage: `url(${iconUrl})`,
|
|
406
|
+
backgroundColor: color || "currentColor"
|
|
407
|
+
},
|
|
386
408
|
onError: (e) => {
|
|
387
409
|
e.target.style.display = "none";
|
|
388
410
|
}
|
|
@@ -408,19 +430,19 @@ var __async = (__this, __arguments, generator) => {
|
|
|
408
430
|
};
|
|
409
431
|
const items = [
|
|
410
432
|
{
|
|
411
|
-
icon: "
|
|
433
|
+
icon: "icon-companyValueLightBulb",
|
|
412
434
|
title: t("about.companyValues.vision") || "Tầm nhìn",
|
|
413
435
|
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
436
|
bgClass: "bg-gradient-brand"
|
|
415
437
|
},
|
|
416
438
|
{
|
|
417
|
-
icon: "
|
|
439
|
+
icon: "icon-companyValueRocket",
|
|
418
440
|
title: t("about.companyValues.mission") || "Sứ mệnh",
|
|
419
441
|
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
442
|
bgClass: "bg-gradient-accent"
|
|
421
443
|
},
|
|
422
444
|
{
|
|
423
|
-
icon: "
|
|
445
|
+
icon: "icon-companyValueDiamond",
|
|
424
446
|
title: t("about.companyValues.coreValues") || "Giá trị cốt lõi",
|
|
425
447
|
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
448
|
bgClass: "bg-gradient-brand"
|
|
@@ -470,7 +492,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
470
492
|
"div",
|
|
471
493
|
{
|
|
472
494
|
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" })
|
|
495
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: item.icon, folder: "AboutCompanySection", className: "w-6 h-6", useOriginalColor: true })
|
|
474
496
|
}
|
|
475
497
|
),
|
|
476
498
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
@@ -595,7 +617,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
595
617
|
/* @__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
618
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
597
619
|
/* @__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
|
-
"
|
|
620
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-aboutCompanyBook", folder: "AboutCompanySection", className: "w-6 h-6", useOriginalColor: true }),
|
|
621
|
+
" ",
|
|
599
622
|
safeT("aboutCompany.story.badge")
|
|
600
623
|
] }),
|
|
601
624
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("h2", { className: "text-3xl lg:text-4xl font-bold mb-6 text-main", children: [
|
|
@@ -663,7 +686,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
663
686
|
}
|
|
664
687
|
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
688
|
/* @__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
|
-
"
|
|
689
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-timeLineChart", folder: "TimlineSection", className: "w-5 h-5 icon-gradient" }),
|
|
690
|
+
" ",
|
|
667
691
|
sectionTitle
|
|
668
692
|
] }) }),
|
|
669
693
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
|
|
@@ -884,7 +908,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
884
908
|
if (!partnersData.length) return null;
|
|
885
909
|
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
910
|
/* @__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
|
-
"
|
|
911
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-partner", folder: "PartnersSection", className: "w-4 h-4 icon-gradient" }),
|
|
912
|
+
" ",
|
|
888
913
|
sectionTitle
|
|
889
914
|
] }) }),
|
|
890
915
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -987,7 +1012,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
987
1012
|
}
|
|
988
1013
|
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
1014
|
/* @__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
|
-
"
|
|
1015
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-timeLineChart", folder: "TimlineSection", className: "w-5 h-5 icon-gradient" }),
|
|
1016
|
+
" ",
|
|
991
1017
|
sectionTitle
|
|
992
1018
|
] }) }),
|
|
993
1019
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
|
|
@@ -1053,7 +1079,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1053
1079
|
}
|
|
1054
1080
|
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
1081
|
/* @__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
|
-
"
|
|
1082
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-testimonials", folder: "TestimonialsSection", className: "w-4 h-4 icon-gradient" }),
|
|
1083
|
+
" ",
|
|
1057
1084
|
sectionTitle
|
|
1058
1085
|
] }),
|
|
1059
1086
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
|
|
@@ -1072,7 +1099,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1072
1099
|
'"'
|
|
1073
1100
|
] }),
|
|
1074
1101
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-4", children: [
|
|
1075
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: "
|
|
1102
|
+
/* @__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
1103
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-left", children: [
|
|
1077
1104
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-title", children: testimonials[currentIndex].author }),
|
|
1078
1105
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-text", children: testimonials[currentIndex].position }),
|
|
@@ -1270,7 +1297,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1270
1297
|
if (!partnersData.length) return null;
|
|
1271
1298
|
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
1299
|
/* @__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
|
-
"
|
|
1300
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-partner", folder: "PartnersSection", className: "w-4 h-4 icon-gradient" }),
|
|
1301
|
+
" ",
|
|
1274
1302
|
sectionTitle
|
|
1275
1303
|
] }) }),
|
|
1276
1304
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -1335,692 +1363,71 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1335
1363
|
) })
|
|
1336
1364
|
] }) });
|
|
1337
1365
|
};
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1366
|
+
const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService }) => {
|
|
1367
|
+
const [formData, setFormData] = require$$0.useState({
|
|
1368
|
+
fullName: "",
|
|
1369
|
+
workEmail: "",
|
|
1370
|
+
phoneNumber: "",
|
|
1371
|
+
companyName: "",
|
|
1372
|
+
jobTitle: "",
|
|
1373
|
+
businessType: "",
|
|
1374
|
+
expectedBudget: "",
|
|
1375
|
+
expectedTimeline: "",
|
|
1376
|
+
requestTitle: "",
|
|
1377
|
+
requestDescription: ""
|
|
1378
|
+
});
|
|
1379
|
+
const [formErrors, setFormErrors] = require$$0.useState({});
|
|
1380
|
+
const [isSubmitting, setIsSubmitting] = require$$0.useState(false);
|
|
1381
|
+
const [submitStatus, setSubmitStatus] = require$$0.useState(null);
|
|
1382
|
+
const [submitMessage, setSubmitMessage] = require$$0.useState("");
|
|
1383
|
+
const validateField = (name, value) => {
|
|
1384
|
+
const errors = {};
|
|
1385
|
+
switch (name) {
|
|
1386
|
+
case "fullName":
|
|
1387
|
+
if (!(value == null ? void 0 : value.trim())) errors.fullName = "Họ và tên là bắt buộc";
|
|
1388
|
+
else if (value.trim().length < 2) errors.fullName = "Tên phải có ít nhất 2 ký tự";
|
|
1389
|
+
break;
|
|
1390
|
+
case "workEmail":
|
|
1391
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
1392
|
+
if (!(value == null ? void 0 : value.trim())) errors.workEmail = "Email là bắt buộc";
|
|
1393
|
+
else if (!emailRegex.test(value.trim())) errors.workEmail = "Email không hợp lệ";
|
|
1394
|
+
break;
|
|
1395
|
+
case "phoneNumber":
|
|
1396
|
+
const phoneRegex = /^[0-9\s\-\+\(\)]{10,15}$/;
|
|
1397
|
+
if (value && !phoneRegex.test(value.trim())) errors.phoneNumber = "Số điện thoại không hợp lệ";
|
|
1398
|
+
break;
|
|
1399
|
+
case "requestTitle":
|
|
1400
|
+
if (!(value == null ? void 0 : value.trim())) errors.requestTitle = "Tiêu đề yêu cầu là bắt buộc";
|
|
1401
|
+
else if (value.trim().length < 5) errors.requestTitle = "Tiêu đề phải có ít nhất 5 ký tự";
|
|
1402
|
+
break;
|
|
1403
|
+
case "requestDescription":
|
|
1404
|
+
if (!(value == null ? void 0 : value.trim())) errors.requestDescription = "Mô tả yêu cầu là bắt buộc";
|
|
1405
|
+
else if (value.trim().length < 10) errors.requestDescription = "Mô tả phải có ít nhất 10 ký tự";
|
|
1406
|
+
break;
|
|
1407
|
+
case "companyName":
|
|
1408
|
+
if (value && value.trim().length > 0 && value.trim().length < 2) {
|
|
1409
|
+
errors.companyName = "Tên công ty phải có ít nhất 2 ký tự";
|
|
1410
|
+
}
|
|
1411
|
+
break;
|
|
1412
|
+
case "jobTitle":
|
|
1413
|
+
if (value && value.trim().length > 0 && value.trim().length < 2) {
|
|
1414
|
+
errors.jobTitle = "Chức vụ phải có ít nhất 2 ký tự";
|
|
1415
|
+
}
|
|
1416
|
+
break;
|
|
1360
1417
|
}
|
|
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
|
-
});
|
|
1418
|
+
return errors;
|
|
1419
|
+
};
|
|
1420
|
+
const handleInputChange = (e) => {
|
|
1421
|
+
const { name, value } = e.target;
|
|
1422
|
+
setFormData((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
1423
|
+
[name]: value || ""
|
|
1424
|
+
}));
|
|
1425
|
+
if (formErrors[name]) {
|
|
1426
|
+
setFormErrors((prev) => {
|
|
1427
|
+
const newErrors = __spreadValues({}, prev);
|
|
1428
|
+
delete newErrors[name];
|
|
1429
|
+
return newErrors;
|
|
1430
|
+
});
|
|
2024
1431
|
}
|
|
2025
1432
|
};
|
|
2026
1433
|
const handleBlur = (e) => {
|
|
@@ -2092,14 +1499,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2092
1499
|
`;
|
|
2093
1500
|
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
1501
|
/* @__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(
|
|
1502
|
+
/* @__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
1503
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2097
1504
|
/* @__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
1505
|
/* @__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
1506
|
] })
|
|
2100
1507
|
] }),
|
|
2101
1508
|
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(
|
|
1509
|
+
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
1510
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small font-medium", children: submitMessage })
|
|
2104
1511
|
] }) }),
|
|
2105
1512
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, className: "space-y-6", children: [
|
|
@@ -2124,7 +1531,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2124
1531
|
}
|
|
2125
1532
|
),
|
|
2126
1533
|
formErrors.fullName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2127
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1534
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2128
1535
|
formErrors.fullName
|
|
2129
1536
|
] })
|
|
2130
1537
|
] }),
|
|
@@ -2148,7 +1555,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2148
1555
|
}
|
|
2149
1556
|
),
|
|
2150
1557
|
formErrors.workEmail && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2151
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1558
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2152
1559
|
formErrors.workEmail
|
|
2153
1560
|
] })
|
|
2154
1561
|
] })
|
|
@@ -2170,7 +1577,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2170
1577
|
}
|
|
2171
1578
|
),
|
|
2172
1579
|
formErrors.phoneNumber && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2173
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1580
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2174
1581
|
formErrors.phoneNumber
|
|
2175
1582
|
] })
|
|
2176
1583
|
] }),
|
|
@@ -2190,7 +1597,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2190
1597
|
}
|
|
2191
1598
|
),
|
|
2192
1599
|
formErrors.companyName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2193
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1600
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2194
1601
|
formErrors.companyName
|
|
2195
1602
|
] })
|
|
2196
1603
|
] })
|
|
@@ -2212,7 +1619,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2212
1619
|
}
|
|
2213
1620
|
),
|
|
2214
1621
|
formErrors.jobTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2215
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1622
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2216
1623
|
formErrors.jobTitle
|
|
2217
1624
|
] })
|
|
2218
1625
|
] }),
|
|
@@ -2284,7 +1691,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2284
1691
|
}
|
|
2285
1692
|
),
|
|
2286
1693
|
formErrors.requestTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2287
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1694
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2288
1695
|
formErrors.requestTitle
|
|
2289
1696
|
] })
|
|
2290
1697
|
] }),
|
|
@@ -2308,7 +1715,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2308
1715
|
}
|
|
2309
1716
|
),
|
|
2310
1717
|
formErrors.requestDescription && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
|
|
2311
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1718
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
|
|
2312
1719
|
formErrors.requestDescription
|
|
2313
1720
|
] })
|
|
2314
1721
|
] }),
|
|
@@ -2319,10 +1726,10 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2319
1726
|
disabled: isSubmitting,
|
|
2320
1727
|
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
1728
|
children: isSubmitting ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
2322
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1729
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormLoader2", className: "w-4 h-4 icon-muted" }),
|
|
2323
1730
|
t("form.submitting") || "Đang gửi..."
|
|
2324
1731
|
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
2325
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1732
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactFormSend", className: "w-4 h-4 icon-gradient" }),
|
|
2326
1733
|
t("form.submit") || "Gửi yêu cầu"
|
|
2327
1734
|
] })
|
|
2328
1735
|
}
|
|
@@ -2337,7 +1744,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2337
1744
|
if (!contactData.length) return null;
|
|
2338
1745
|
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
1746
|
/* @__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(
|
|
1747
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }),
|
|
2341
1748
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-main", children: sectionTitle })
|
|
2342
1749
|
] }) }),
|
|
2343
1750
|
/* @__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 +1757,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2350
1757
|
display: "flex",
|
|
2351
1758
|
alignItems: "center",
|
|
2352
1759
|
justifyContent: "center"
|
|
2353
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1760
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }) }),
|
|
2354
1761
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-subtitle mb-2", children: contact.name }),
|
|
2355
1762
|
/* @__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
1763
|
] }),
|
|
@@ -2377,7 +1784,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2377
1784
|
alignItems: "center",
|
|
2378
1785
|
justifyContent: "center",
|
|
2379
1786
|
marginRight: "0.75rem"
|
|
2380
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1787
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoPhone", className: "w-4 h-4 icon-gradient" }) }),
|
|
2381
1788
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2382
1789
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contact.info.phone") || "Điện thoại" }),
|
|
2383
1790
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.phone })
|
|
@@ -2407,7 +1814,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2407
1814
|
alignItems: "center",
|
|
2408
1815
|
justifyContent: "center",
|
|
2409
1816
|
marginRight: "0.75rem"
|
|
2410
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1817
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoEmail", className: "w-4 h-4 icon-gradient" }) }),
|
|
2411
1818
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2412
1819
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: "Email" }),
|
|
2413
1820
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.email })
|
|
@@ -2432,7 +1839,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2432
1839
|
alignItems: "center",
|
|
2433
1840
|
justifyContent: "center",
|
|
2434
1841
|
marginRight: "0.75rem"
|
|
2435
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1842
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoClock", className: "w-4 h-4 icon-muted" }) }),
|
|
2436
1843
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2437
1844
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contact.info.workingHours") || "Giờ làm việc" }),
|
|
2438
1845
|
/* @__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 +1897,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2490
1897
|
}
|
|
2491
1898
|
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
1899
|
/* @__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(
|
|
1900
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }),
|
|
2494
1901
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-main", children: sectionTitle })
|
|
2495
1902
|
] }) }),
|
|
2496
1903
|
/* @__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 +1914,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2507
1914
|
display: "flex",
|
|
2508
1915
|
alignItems: "center",
|
|
2509
1916
|
justifyContent: "center"
|
|
2510
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1917
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }) }),
|
|
2511
1918
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-subtitle mb-2", children: contact.name || t("contactList.card.noName") || "Không có tên" }),
|
|
2512
1919
|
/* @__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
1920
|
] }),
|
|
@@ -2534,7 +1941,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2534
1941
|
alignItems: "center",
|
|
2535
1942
|
justifyContent: "center",
|
|
2536
1943
|
marginRight: "0.75rem"
|
|
2537
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1944
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoPhone", className: "w-4 h-4 icon-gradient" }) }),
|
|
2538
1945
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2539
1946
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contactList.card.phone") || "Điện thoại" }),
|
|
2540
1947
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.phone })
|
|
@@ -2564,7 +1971,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2564
1971
|
alignItems: "center",
|
|
2565
1972
|
justifyContent: "center",
|
|
2566
1973
|
marginRight: "0.75rem"
|
|
2567
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1974
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoEmail", className: "w-4 h-4 icon-gradient" }) }),
|
|
2568
1975
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2569
1976
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: "Email" }),
|
|
2570
1977
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.email })
|
|
@@ -2589,7 +1996,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2589
1996
|
alignItems: "center",
|
|
2590
1997
|
justifyContent: "center",
|
|
2591
1998
|
marginRight: "0.75rem"
|
|
2592
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1999
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoClock", className: "w-4 h-4 icon-muted" }) }),
|
|
2593
2000
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
|
|
2594
2001
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contactList.card.workingHours") || "Giờ làm việc" }),
|
|
2595
2002
|
/* @__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 +2089,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2682
2089
|
{
|
|
2683
2090
|
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
2091
|
children: [
|
|
2685
|
-
"
|
|
2092
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-testimonials", folder: "TestimonialsSection", className: "w-4 h-4 icon-gradient" }),
|
|
2093
|
+
" ",
|
|
2686
2094
|
sectionTitle
|
|
2687
2095
|
]
|
|
2688
2096
|
}
|
|
@@ -2699,7 +2107,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2699
2107
|
'"'
|
|
2700
2108
|
] }),
|
|
2701
2109
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-4", children: [
|
|
2702
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: "
|
|
2110
|
+
/* @__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
2111
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-left", children: [
|
|
2704
2112
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-title text-base mb-1", children: currentFeedback.customerName }),
|
|
2705
2113
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-link text-sm", children: currentFeedback.customerTitle }),
|
|
@@ -2720,281 +2128,778 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2720
2128
|
${index2 === currentIndex ? "bg-brand-secondary" : "bg-surface hover:bg-brand-primary"}
|
|
2721
2129
|
`
|
|
2722
2130
|
},
|
|
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
|
-
] });
|
|
2131
|
+
index2
|
|
2132
|
+
)) })
|
|
2133
|
+
] })
|
|
2134
|
+
] }),
|
|
2135
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("style", { jsx: true, children: `
|
|
2136
|
+
.animate-fadeIn {
|
|
2137
|
+
animation: fadeIn 0.5s ease-in-out;
|
|
2138
|
+
}
|
|
2139
|
+
@keyframes fadeIn {
|
|
2140
|
+
from {
|
|
2141
|
+
opacity: 0;
|
|
2142
|
+
transform: translateY(10px);
|
|
2143
|
+
}
|
|
2144
|
+
to {
|
|
2145
|
+
opacity: 1;
|
|
2146
|
+
transform: translateY(0);
|
|
2147
|
+
}
|
|
2148
|
+
}
|
|
2149
|
+
` })
|
|
2150
|
+
] });
|
|
2151
|
+
};
|
|
2152
|
+
const ProductListSection = ({ data, t, isDarkMode, getProductList }) => {
|
|
2153
|
+
const [products, setProducts] = require$$0.useState([]);
|
|
2154
|
+
const [loading, setLoading] = require$$0.useState(true);
|
|
2155
|
+
const [error, setError] = require$$0.useState(null);
|
|
2156
|
+
require$$0.useEffect(() => {
|
|
2157
|
+
const fetchProducts = () => __async(null, null, function* () {
|
|
2158
|
+
try {
|
|
2159
|
+
setLoading(true);
|
|
2160
|
+
const result = yield getProductList();
|
|
2161
|
+
if (result.success) {
|
|
2162
|
+
setProducts(result.data || []);
|
|
2163
|
+
} else {
|
|
2164
|
+
setError(result.error || t("productList.errors.loadFailed"));
|
|
2165
|
+
}
|
|
2166
|
+
} catch (err) {
|
|
2167
|
+
console.error("Error fetching products:", err);
|
|
2168
|
+
setError(t("productList.errors.loadError"));
|
|
2169
|
+
} finally {
|
|
2170
|
+
setLoading(false);
|
|
2171
|
+
}
|
|
2172
|
+
});
|
|
2173
|
+
fetchProducts();
|
|
2174
|
+
}, [t]);
|
|
2175
|
+
if (loading) {
|
|
2176
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
|
|
2177
|
+
/* @__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` }),
|
|
2178
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `mt-2.5 text-base ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productList.loading") })
|
|
2179
|
+
] });
|
|
2180
|
+
}
|
|
2181
|
+
if (error) {
|
|
2182
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
|
|
2183
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-red-500 text-5xl mb-4", children: "⚠️" }),
|
|
2184
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-red-500 text-base m-0", children: error })
|
|
2185
|
+
] });
|
|
2186
|
+
}
|
|
2187
|
+
if (!products || products.length === 0) {
|
|
2188
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
|
|
2189
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `text-5xl mb-4 ${isDarkMode ? "text-gray-400" : "text-gray-500"}`, children: "📦" }),
|
|
2190
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-base m-0 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productList.noProducts") })
|
|
2191
|
+
] });
|
|
2192
|
+
}
|
|
2193
|
+
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)) }) }) });
|
|
2194
|
+
};
|
|
2195
|
+
const ProductCard = ({ product, t, isDarkMode }) => {
|
|
2196
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
2197
|
+
const [activeTab, setActiveTab] = require$$0.useState("overview");
|
|
2198
|
+
const [isHovered, setIsHovered] = require$$0.useState(false);
|
|
2199
|
+
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";
|
|
2200
|
+
const tabs = [
|
|
2201
|
+
{ id: "overview", label: t("productCard.tabs.overview"), count: null },
|
|
2202
|
+
{ id: "features", label: t("productCard.tabs.features"), count: ((_e = product.features) == null ? void 0 : _e.length) || 0 },
|
|
2203
|
+
{ id: "contacts", label: t("productCard.tabs.contacts"), count: ((_f = product.contacts) == null ? void 0 : _f.length) || 0 },
|
|
2204
|
+
{ id: "downloads", label: t("productCard.tabs.downloads"), count: ((_g = product.productDownloads) == null ? void 0 : _g.length) || 0 }
|
|
2205
|
+
];
|
|
2206
|
+
const renderOverview = () => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2207
|
+
"div",
|
|
2208
|
+
{
|
|
2209
|
+
className: `text-sm leading-relaxed ${isDarkMode ? "text-gray-300" : "text-gray-700"}`,
|
|
2210
|
+
dangerouslySetInnerHTML: {
|
|
2211
|
+
__html: product.overviewContent || product.description || t("productCard.noOverview")
|
|
2212
|
+
}
|
|
2213
|
+
}
|
|
2214
|
+
) });
|
|
2215
|
+
const renderFeatures = () => {
|
|
2216
|
+
const features = product.features || [];
|
|
2217
|
+
if (features.length === 0) {
|
|
2218
|
+
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") }) });
|
|
2219
|
+
}
|
|
2220
|
+
const sortedFeatures = [...features].sort((a, b) => (a.order || 0) - (b.order || 0));
|
|
2221
|
+
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(
|
|
2222
|
+
"div",
|
|
2223
|
+
{
|
|
2224
|
+
className: `p-4 rounded-lg border-l-4 border-blue-500 ${isDarkMode ? "bg-gray-700" : "bg-gray-100"}`,
|
|
2225
|
+
children: [
|
|
2226
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-2 text-sm font-bold ${isDarkMode ? "text-white" : "text-gray-900"}`, children: feature.title }),
|
|
2227
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs leading-relaxed ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: feature.description })
|
|
2228
|
+
]
|
|
2229
|
+
},
|
|
2230
|
+
index2
|
|
2231
|
+
)) }) });
|
|
2232
|
+
};
|
|
2233
|
+
const renderContacts = () => {
|
|
2234
|
+
const contacts = product.contacts || [];
|
|
2235
|
+
if (contacts.length === 0) {
|
|
2236
|
+
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") }) });
|
|
2237
|
+
}
|
|
2238
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-4", children: contacts.map((contact, index2) => {
|
|
2239
|
+
var _a2, _b2;
|
|
2240
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2241
|
+
"div",
|
|
2242
|
+
{
|
|
2243
|
+
className: `p-4 rounded-lg border ${isDarkMode ? "bg-gray-700 border-gray-600" : "bg-gray-100 border-gray-200"}`,
|
|
2244
|
+
children: [
|
|
2245
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-2", children: [
|
|
2246
|
+
/* @__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()) || "?" }) }),
|
|
2247
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
2248
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-0.5 text-sm font-bold ${isDarkMode ? "text-white" : "text-gray-900"}`, children: contact.name }),
|
|
2249
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: contact.position })
|
|
2250
|
+
] })
|
|
2251
|
+
] }),
|
|
2252
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
2253
|
+
contact.phone && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2254
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `text-sm ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "📞" }),
|
|
2255
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2256
|
+
"a",
|
|
2257
|
+
{
|
|
2258
|
+
href: `tel:${contact.phone}`,
|
|
2259
|
+
className: `text-xs no-underline hover:underline ${isDarkMode ? "text-blue-400" : "text-blue-500"}`,
|
|
2260
|
+
children: contact.phone
|
|
2261
|
+
}
|
|
2262
|
+
)
|
|
2263
|
+
] }),
|
|
2264
|
+
contact.email && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2265
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `text-sm ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "✉️" }),
|
|
2266
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2267
|
+
"a",
|
|
2268
|
+
{
|
|
2269
|
+
href: `mailto:${contact.email}`,
|
|
2270
|
+
className: `text-xs no-underline hover:underline ${isDarkMode ? "text-blue-400" : "text-blue-500"}`,
|
|
2271
|
+
children: contact.email
|
|
2272
|
+
}
|
|
2273
|
+
)
|
|
2274
|
+
] })
|
|
2275
|
+
] })
|
|
2276
|
+
]
|
|
2277
|
+
},
|
|
2278
|
+
contact.id || index2
|
|
2279
|
+
);
|
|
2280
|
+
}) }) });
|
|
2281
|
+
};
|
|
2282
|
+
const renderDownloads = () => {
|
|
2283
|
+
const downloads = product.productDownloads || [];
|
|
2284
|
+
if (downloads.length === 0) {
|
|
2285
|
+
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") }) });
|
|
2286
|
+
}
|
|
2287
|
+
const handleDownload = (fileUrl, title) => {
|
|
2288
|
+
try {
|
|
2289
|
+
const link = document.createElement("a");
|
|
2290
|
+
link.href = fileUrl;
|
|
2291
|
+
link.download = title || "download";
|
|
2292
|
+
link.target = "_blank";
|
|
2293
|
+
document.body.appendChild(link);
|
|
2294
|
+
link.click();
|
|
2295
|
+
document.body.removeChild(link);
|
|
2296
|
+
} catch (error) {
|
|
2297
|
+
console.error("Download error:", error);
|
|
2298
|
+
}
|
|
2299
|
+
};
|
|
2300
|
+
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(
|
|
2301
|
+
"div",
|
|
2302
|
+
{
|
|
2303
|
+
onClick: () => handleDownload(download.fileUrl, download.title),
|
|
2304
|
+
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"}`,
|
|
2305
|
+
children: [
|
|
2306
|
+
/* @__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: "📄" }) }),
|
|
2307
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
2308
|
+
/* @__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 }),
|
|
2309
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productCard.downloadClick") })
|
|
2310
|
+
] }),
|
|
2311
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `flex-shrink-0 text-base ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "⬇️" })
|
|
2312
|
+
]
|
|
2313
|
+
},
|
|
2314
|
+
index2
|
|
2315
|
+
)) }) });
|
|
2316
|
+
};
|
|
2317
|
+
const renderTabContent = () => {
|
|
2318
|
+
switch (activeTab) {
|
|
2319
|
+
case "overview":
|
|
2320
|
+
return renderOverview();
|
|
2321
|
+
case "features":
|
|
2322
|
+
return renderFeatures();
|
|
2323
|
+
case "contacts":
|
|
2324
|
+
return renderContacts();
|
|
2325
|
+
case "downloads":
|
|
2326
|
+
return renderDownloads();
|
|
2327
|
+
default:
|
|
2328
|
+
return null;
|
|
2329
|
+
}
|
|
2330
|
+
};
|
|
2331
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2332
|
+
"div",
|
|
2333
|
+
{
|
|
2334
|
+
className: `
|
|
2335
|
+
rounded-xl overflow-hidden cursor-pointer transition-all duration-300 border
|
|
2336
|
+
${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"}
|
|
2337
|
+
${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"}`}
|
|
2338
|
+
`,
|
|
2339
|
+
onMouseEnter: () => setIsHovered(true),
|
|
2340
|
+
onMouseLeave: () => setIsHovered(false),
|
|
2341
|
+
children: [
|
|
2342
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2343
|
+
"div",
|
|
2344
|
+
{
|
|
2345
|
+
className: `relative h-48 bg-cover bg-center ${isDarkMode ? "bg-gray-700" : "bg-gray-200"}`,
|
|
2346
|
+
style: {
|
|
2347
|
+
backgroundImage: `url(${mainImage})`
|
|
2348
|
+
},
|
|
2349
|
+
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: [
|
|
2350
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "m-0 mb-2 text-lg font-bold", children: product.name }),
|
|
2351
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0 text-sm opacity-90", children: product.description })
|
|
2352
|
+
] })
|
|
2353
|
+
}
|
|
2354
|
+
),
|
|
2355
|
+
/* @__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(
|
|
2356
|
+
"button",
|
|
2357
|
+
{
|
|
2358
|
+
onClick: () => setActiveTab(tab.id),
|
|
2359
|
+
className: `
|
|
2360
|
+
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
|
|
2361
|
+
${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"}`}
|
|
2362
|
+
`,
|
|
2363
|
+
children: [
|
|
2364
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: tab.label }),
|
|
2365
|
+
tab.count !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `
|
|
2366
|
+
text-xs py-0.5 px-1.5 rounded-full min-w-[18px] text-center
|
|
2367
|
+
${activeTab === tab.id ? "bg-white/20 text-white" : `${isDarkMode ? "bg-gray-600 text-gray-400" : "bg-gray-200 text-gray-600"}`}
|
|
2368
|
+
`, children: tab.count })
|
|
2369
|
+
]
|
|
2370
|
+
},
|
|
2371
|
+
tab.id
|
|
2372
|
+
)) }) }),
|
|
2373
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-[200px] max-h-[300px] overflow-y-auto", children: renderTabContent() })
|
|
2374
|
+
]
|
|
2375
|
+
}
|
|
2376
|
+
);
|
|
2743
2377
|
};
|
|
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
|
-
|
|
2378
|
+
const TextWithTitleSection = ({ section, data, isDarkMode }) => {
|
|
2379
|
+
var _a;
|
|
2380
|
+
const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
|
|
2381
|
+
const title = ((_a = textItems[0]) == null ? void 0 : _a.value) || "";
|
|
2382
|
+
const descriptions = textItems.slice(1);
|
|
2383
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-6xl mx-auto", children: [
|
|
2384
|
+
title && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-title font-black mb-4 leading-tight text-left text-main", children: title }),
|
|
2385
|
+
descriptions.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2386
|
+
"div",
|
|
2387
|
+
{
|
|
2388
|
+
className: `text-body leading-relaxed text-left font-normal text-muted ${index2 < descriptions.length - 1 ? "mb-4" : ""}`,
|
|
2389
|
+
children: item.value
|
|
2390
|
+
},
|
|
2391
|
+
item.id || index2
|
|
2392
|
+
))
|
|
2393
|
+
] }) });
|
|
2394
|
+
};
|
|
2395
|
+
const TextSection = ({ data, isDarkMode }) => {
|
|
2396
|
+
const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
|
|
2397
|
+
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(
|
|
2398
|
+
"div",
|
|
2399
|
+
{
|
|
2400
|
+
className: "mb-5 text-subtitle font-black leading-snug text-left text-main",
|
|
2401
|
+
children: item.value
|
|
2402
|
+
},
|
|
2403
|
+
item.id || index2
|
|
2404
|
+
)) }) });
|
|
2405
|
+
};
|
|
2406
|
+
/**
|
|
2407
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2408
|
+
*
|
|
2409
|
+
* This source code is licensed under the ISC license.
|
|
2410
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2411
|
+
*/
|
|
2412
|
+
const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
2413
|
+
const toCamelCase = (string) => string.replace(
|
|
2414
|
+
/^([A-Z])|[\s-_]+(\w)/g,
|
|
2415
|
+
(match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
|
|
2416
|
+
);
|
|
2417
|
+
const toPascalCase = (string) => {
|
|
2418
|
+
const camelCase = toCamelCase(string);
|
|
2419
|
+
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
|
2420
|
+
};
|
|
2421
|
+
const mergeClasses = (...classes) => classes.filter((className, index2, array) => {
|
|
2422
|
+
return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index2;
|
|
2423
|
+
}).join(" ").trim();
|
|
2424
|
+
const hasA11yProp = (props) => {
|
|
2425
|
+
for (const prop in props) {
|
|
2426
|
+
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
2427
|
+
return true;
|
|
2428
|
+
}
|
|
2778
2429
|
}
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2430
|
+
};
|
|
2431
|
+
/**
|
|
2432
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2433
|
+
*
|
|
2434
|
+
* This source code is licensed under the ISC license.
|
|
2435
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2436
|
+
*/
|
|
2437
|
+
var defaultAttributes = {
|
|
2438
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2439
|
+
width: 24,
|
|
2440
|
+
height: 24,
|
|
2441
|
+
viewBox: "0 0 24 24",
|
|
2442
|
+
fill: "none",
|
|
2443
|
+
stroke: "currentColor",
|
|
2444
|
+
strokeWidth: 2,
|
|
2445
|
+
strokeLinecap: "round",
|
|
2446
|
+
strokeLinejoin: "round"
|
|
2447
|
+
};
|
|
2448
|
+
/**
|
|
2449
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2450
|
+
*
|
|
2451
|
+
* This source code is licensed under the ISC license.
|
|
2452
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2453
|
+
*/
|
|
2454
|
+
const Icon = require$$0.forwardRef(
|
|
2455
|
+
(_a, ref) => {
|
|
2456
|
+
var _b = _a, {
|
|
2457
|
+
color = "currentColor",
|
|
2458
|
+
size = 24,
|
|
2459
|
+
strokeWidth = 2,
|
|
2460
|
+
absoluteStrokeWidth,
|
|
2461
|
+
className = "",
|
|
2462
|
+
children,
|
|
2463
|
+
iconNode
|
|
2464
|
+
} = _b, rest = __objRest(_b, [
|
|
2465
|
+
"color",
|
|
2466
|
+
"size",
|
|
2467
|
+
"strokeWidth",
|
|
2468
|
+
"absoluteStrokeWidth",
|
|
2469
|
+
"className",
|
|
2470
|
+
"children",
|
|
2471
|
+
"iconNode"
|
|
2472
|
+
]);
|
|
2473
|
+
return require$$0.createElement(
|
|
2474
|
+
"svg",
|
|
2475
|
+
__spreadValues(__spreadValues(__spreadProps(__spreadValues({
|
|
2476
|
+
ref
|
|
2477
|
+
}, defaultAttributes), {
|
|
2478
|
+
width: size,
|
|
2479
|
+
height: size,
|
|
2480
|
+
stroke: color,
|
|
2481
|
+
strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
|
|
2482
|
+
className: mergeClasses("lucide", className)
|
|
2483
|
+
}), !children && !hasA11yProp(rest) && { "aria-hidden": "true" }), rest),
|
|
2484
|
+
[
|
|
2485
|
+
...iconNode.map(([tag, attrs]) => require$$0.createElement(tag, attrs)),
|
|
2486
|
+
...Array.isArray(children) ? children : [children]
|
|
2487
|
+
]
|
|
2488
|
+
);
|
|
2784
2489
|
}
|
|
2785
|
-
|
|
2490
|
+
);
|
|
2491
|
+
/**
|
|
2492
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2493
|
+
*
|
|
2494
|
+
* This source code is licensed under the ISC license.
|
|
2495
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2496
|
+
*/
|
|
2497
|
+
const createLucideIcon = (iconName, iconNode) => {
|
|
2498
|
+
const Component = require$$0.forwardRef(
|
|
2499
|
+
(_a, ref) => {
|
|
2500
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2501
|
+
return require$$0.createElement(Icon, __spreadValues({
|
|
2502
|
+
ref,
|
|
2503
|
+
iconNode,
|
|
2504
|
+
className: mergeClasses(
|
|
2505
|
+
`lucide-${toKebabCase(toPascalCase(iconName))}`,
|
|
2506
|
+
`lucide-${iconName}`,
|
|
2507
|
+
className
|
|
2508
|
+
)
|
|
2509
|
+
}, props));
|
|
2510
|
+
}
|
|
2511
|
+
);
|
|
2512
|
+
Component.displayName = toPascalCase(iconName);
|
|
2513
|
+
return Component;
|
|
2786
2514
|
};
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
]
|
|
2798
|
-
|
|
2799
|
-
|
|
2515
|
+
/**
|
|
2516
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2517
|
+
*
|
|
2518
|
+
* This source code is licensed under the ISC license.
|
|
2519
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2520
|
+
*/
|
|
2521
|
+
const __iconNode$o = [
|
|
2522
|
+
["path", { d: "M2 4v16", key: "vw9hq8" }],
|
|
2523
|
+
["path", { d: "M2 8h18a2 2 0 0 1 2 2v10", key: "1dgv2r" }],
|
|
2524
|
+
["path", { d: "M2 17h20", key: "18nfp3" }],
|
|
2525
|
+
["path", { d: "M6 8v9", key: "1yriud" }]
|
|
2526
|
+
];
|
|
2527
|
+
const Bed = createLucideIcon("bed", __iconNode$o);
|
|
2528
|
+
/**
|
|
2529
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2530
|
+
*
|
|
2531
|
+
* This source code is licensed under the ISC license.
|
|
2532
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2533
|
+
*/
|
|
2534
|
+
const __iconNode$n = [
|
|
2535
|
+
["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
|
|
2536
|
+
["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
|
|
2537
|
+
];
|
|
2538
|
+
const Briefcase = createLucideIcon("briefcase", __iconNode$n);
|
|
2539
|
+
/**
|
|
2540
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2541
|
+
*
|
|
2542
|
+
* This source code is licensed under the ISC license.
|
|
2543
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2544
|
+
*/
|
|
2545
|
+
const __iconNode$m = [
|
|
2546
|
+
["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
|
|
2547
|
+
["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
|
|
2548
|
+
["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
|
|
2549
|
+
["path", { d: "M10 6h4", key: "1itunk" }],
|
|
2550
|
+
["path", { d: "M10 10h4", key: "tcdvrf" }],
|
|
2551
|
+
["path", { d: "M10 14h4", key: "kelpxr" }],
|
|
2552
|
+
["path", { d: "M10 18h4", key: "1ulq68" }]
|
|
2553
|
+
];
|
|
2554
|
+
const Building2 = createLucideIcon("building-2", __iconNode$m);
|
|
2555
|
+
/**
|
|
2556
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2557
|
+
*
|
|
2558
|
+
* This source code is licensed under the ISC license.
|
|
2559
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2560
|
+
*/
|
|
2561
|
+
const __iconNode$l = [
|
|
2562
|
+
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }],
|
|
2563
|
+
["path", { d: "M9 22v-4h6v4", key: "r93iot" }],
|
|
2564
|
+
["path", { d: "M8 6h.01", key: "1dz90k" }],
|
|
2565
|
+
["path", { d: "M16 6h.01", key: "1x0f13" }],
|
|
2566
|
+
["path", { d: "M12 6h.01", key: "1vi96p" }],
|
|
2567
|
+
["path", { d: "M12 10h.01", key: "1nrarc" }],
|
|
2568
|
+
["path", { d: "M12 14h.01", key: "1etili" }],
|
|
2569
|
+
["path", { d: "M16 10h.01", key: "1m94wz" }],
|
|
2570
|
+
["path", { d: "M16 14h.01", key: "1gbofw" }],
|
|
2571
|
+
["path", { d: "M8 10h.01", key: "19clt8" }],
|
|
2572
|
+
["path", { d: "M8 14h.01", key: "6423bh" }]
|
|
2573
|
+
];
|
|
2574
|
+
const Building = createLucideIcon("building", __iconNode$l);
|
|
2575
|
+
/**
|
|
2576
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2577
|
+
*
|
|
2578
|
+
* This source code is licensed under the ISC license.
|
|
2579
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2580
|
+
*/
|
|
2581
|
+
const __iconNode$k = [
|
|
2582
|
+
["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }],
|
|
2583
|
+
["line", { x1: "8", x2: "16", y1: "6", y2: "6", key: "x4nwl0" }],
|
|
2584
|
+
["line", { x1: "16", x2: "16", y1: "14", y2: "18", key: "wjye3r" }],
|
|
2585
|
+
["path", { d: "M16 10h.01", key: "1m94wz" }],
|
|
2586
|
+
["path", { d: "M12 10h.01", key: "1nrarc" }],
|
|
2587
|
+
["path", { d: "M8 10h.01", key: "19clt8" }],
|
|
2588
|
+
["path", { d: "M12 14h.01", key: "1etili" }],
|
|
2589
|
+
["path", { d: "M8 14h.01", key: "6423bh" }],
|
|
2590
|
+
["path", { d: "M12 18h.01", key: "mhygvu" }],
|
|
2591
|
+
["path", { d: "M8 18h.01", key: "lrp35t" }]
|
|
2592
|
+
];
|
|
2593
|
+
const Calculator = createLucideIcon("calculator", __iconNode$k);
|
|
2594
|
+
/**
|
|
2595
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2596
|
+
*
|
|
2597
|
+
* This source code is licensed under the ISC license.
|
|
2598
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2599
|
+
*/
|
|
2600
|
+
const __iconNode$j = [
|
|
2601
|
+
["path", { d: "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "p7xjir" }]
|
|
2602
|
+
];
|
|
2603
|
+
const Cloud = createLucideIcon("cloud", __iconNode$j);
|
|
2604
|
+
/**
|
|
2605
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2606
|
+
*
|
|
2607
|
+
* This source code is licensed under the ISC license.
|
|
2608
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2609
|
+
*/
|
|
2610
|
+
const __iconNode$i = [
|
|
2611
|
+
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
2612
|
+
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
2613
|
+
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
2614
|
+
];
|
|
2615
|
+
const Database = createLucideIcon("database", __iconNode$i);
|
|
2616
|
+
/**
|
|
2617
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2618
|
+
*
|
|
2619
|
+
* This source code is licensed under the ISC license.
|
|
2620
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2621
|
+
*/
|
|
2622
|
+
const __iconNode$h = [
|
|
2623
|
+
["path", { d: "M12 16h.01", key: "1drbdi" }],
|
|
2624
|
+
["path", { d: "M16 16h.01", key: "1f9h7w" }],
|
|
2625
|
+
[
|
|
2626
|
+
"path",
|
|
2800
2627
|
{
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
__html: product.overviewContent || product.description || t("productCard.noOverview")
|
|
2804
|
-
}
|
|
2628
|
+
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",
|
|
2629
|
+
key: "1iv0i2"
|
|
2805
2630
|
}
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2631
|
+
],
|
|
2632
|
+
["path", { d: "M8 16h.01", key: "18s6g9" }]
|
|
2633
|
+
];
|
|
2634
|
+
const Factory = createLucideIcon("factory", __iconNode$h);
|
|
2635
|
+
/**
|
|
2636
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2637
|
+
*
|
|
2638
|
+
* This source code is licensed under the ISC license.
|
|
2639
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2640
|
+
*/
|
|
2641
|
+
const __iconNode$g = [
|
|
2642
|
+
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
2643
|
+
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
2644
|
+
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
2645
|
+
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
2646
|
+
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
2647
|
+
];
|
|
2648
|
+
const FileText = createLucideIcon("file-text", __iconNode$g);
|
|
2649
|
+
/**
|
|
2650
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2651
|
+
*
|
|
2652
|
+
* This source code is licensed under the ISC license.
|
|
2653
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2654
|
+
*/
|
|
2655
|
+
const __iconNode$f = [
|
|
2656
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
2657
|
+
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
2658
|
+
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
2659
|
+
];
|
|
2660
|
+
const Globe = createLucideIcon("globe", __iconNode$f);
|
|
2661
|
+
/**
|
|
2662
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2663
|
+
*
|
|
2664
|
+
* This source code is licensed under the ISC license.
|
|
2665
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2666
|
+
*/
|
|
2667
|
+
const __iconNode$e = [
|
|
2668
|
+
[
|
|
2669
|
+
"path",
|
|
2670
|
+
{
|
|
2671
|
+
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",
|
|
2672
|
+
key: "j76jl0"
|
|
2811
2673
|
}
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2674
|
+
],
|
|
2675
|
+
["path", { d: "M22 10v6", key: "1lu8f3" }],
|
|
2676
|
+
["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
|
|
2677
|
+
];
|
|
2678
|
+
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$e);
|
|
2679
|
+
/**
|
|
2680
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2681
|
+
*
|
|
2682
|
+
* This source code is licensed under the ISC license.
|
|
2683
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2684
|
+
*/
|
|
2685
|
+
const __iconNode$d = [
|
|
2686
|
+
[
|
|
2687
|
+
"path",
|
|
2688
|
+
{
|
|
2689
|
+
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",
|
|
2690
|
+
key: "mvr1a0"
|
|
2829
2691
|
}
|
|
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
|
-
|
|
2692
|
+
]
|
|
2693
|
+
];
|
|
2694
|
+
const Heart = createLucideIcon("heart", __iconNode$d);
|
|
2695
|
+
/**
|
|
2696
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2697
|
+
*
|
|
2698
|
+
* This source code is licensed under the ISC license.
|
|
2699
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2700
|
+
*/
|
|
2701
|
+
const __iconNode$c = [
|
|
2702
|
+
["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
|
|
2703
|
+
[
|
|
2704
|
+
"path",
|
|
2705
|
+
{
|
|
2706
|
+
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",
|
|
2707
|
+
key: "1d0kgt"
|
|
2708
|
+
}
|
|
2709
|
+
]
|
|
2710
|
+
];
|
|
2711
|
+
const House = createLucideIcon("house", __iconNode$c);
|
|
2712
|
+
/**
|
|
2713
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2714
|
+
*
|
|
2715
|
+
* This source code is licensed under the ISC license.
|
|
2716
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2717
|
+
*/
|
|
2718
|
+
const __iconNode$b = [
|
|
2719
|
+
[
|
|
2720
|
+
"path",
|
|
2721
|
+
{
|
|
2722
|
+
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",
|
|
2723
|
+
key: "q8bfy3"
|
|
2724
|
+
}
|
|
2725
|
+
],
|
|
2726
|
+
["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" }],
|
|
2727
|
+
["path", { d: "M8 6v8", key: "15ugcq" }]
|
|
2728
|
+
];
|
|
2729
|
+
const Megaphone = createLucideIcon("megaphone", __iconNode$b);
|
|
2730
|
+
/**
|
|
2731
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2732
|
+
*
|
|
2733
|
+
* This source code is licensed under the ISC license.
|
|
2734
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2735
|
+
*/
|
|
2736
|
+
const __iconNode$a = [
|
|
2737
|
+
[
|
|
2738
|
+
"path",
|
|
2739
|
+
{
|
|
2740
|
+
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",
|
|
2741
|
+
key: "1a0edw"
|
|
2742
|
+
}
|
|
2743
|
+
],
|
|
2744
|
+
["path", { d: "M12 22V12", key: "d0xqtd" }],
|
|
2745
|
+
["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }],
|
|
2746
|
+
["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }]
|
|
2747
|
+
];
|
|
2748
|
+
const Package = createLucideIcon("package", __iconNode$a);
|
|
2749
|
+
/**
|
|
2750
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2751
|
+
*
|
|
2752
|
+
* This source code is licensed under the ISC license.
|
|
2753
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2754
|
+
*/
|
|
2755
|
+
const __iconNode$9 = [
|
|
2756
|
+
[
|
|
2757
|
+
"path",
|
|
2758
|
+
{
|
|
2759
|
+
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",
|
|
2760
|
+
key: "1v9wt8"
|
|
2878
2761
|
}
|
|
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;
|
|
2762
|
+
]
|
|
2763
|
+
];
|
|
2764
|
+
const Plane = createLucideIcon("plane", __iconNode$9);
|
|
2765
|
+
/**
|
|
2766
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2767
|
+
*
|
|
2768
|
+
* This source code is licensed under the ISC license.
|
|
2769
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2770
|
+
*/
|
|
2771
|
+
const __iconNode$8 = [
|
|
2772
|
+
[
|
|
2773
|
+
"path",
|
|
2774
|
+
{
|
|
2775
|
+
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",
|
|
2776
|
+
key: "1i5ecw"
|
|
2921
2777
|
}
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2778
|
+
],
|
|
2779
|
+
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
2780
|
+
];
|
|
2781
|
+
const Settings = createLucideIcon("settings", __iconNode$8);
|
|
2782
|
+
/**
|
|
2783
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2784
|
+
*
|
|
2785
|
+
* This source code is licensed under the ISC license.
|
|
2786
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2787
|
+
*/
|
|
2788
|
+
const __iconNode$7 = [
|
|
2789
|
+
[
|
|
2790
|
+
"path",
|
|
2925
2791
|
{
|
|
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
|
-
]
|
|
2792
|
+
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",
|
|
2793
|
+
key: "oel41y"
|
|
2967
2794
|
}
|
|
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",
|
|
2795
|
+
]
|
|
2796
|
+
];
|
|
2797
|
+
const Shield = createLucideIcon("shield", __iconNode$7);
|
|
2798
|
+
/**
|
|
2799
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2800
|
+
*
|
|
2801
|
+
* This source code is licensed under the ISC license.
|
|
2802
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2803
|
+
*/
|
|
2804
|
+
const __iconNode$6 = [
|
|
2805
|
+
["circle", { cx: "8", cy: "21", r: "1", key: "jimo8o" }],
|
|
2806
|
+
["circle", { cx: "19", cy: "21", r: "1", key: "13723u" }],
|
|
2807
|
+
[
|
|
2808
|
+
"path",
|
|
2991
2809
|
{
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
}
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2810
|
+
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",
|
|
2811
|
+
key: "9zh506"
|
|
2812
|
+
}
|
|
2813
|
+
]
|
|
2814
|
+
];
|
|
2815
|
+
const ShoppingCart = createLucideIcon("shopping-cart", __iconNode$6);
|
|
2816
|
+
/**
|
|
2817
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2818
|
+
*
|
|
2819
|
+
* This source code is licensed under the ISC license.
|
|
2820
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2821
|
+
*/
|
|
2822
|
+
const __iconNode$5 = [
|
|
2823
|
+
["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }],
|
|
2824
|
+
["path", { d: "M12 18h.01", key: "mhygvu" }]
|
|
2825
|
+
];
|
|
2826
|
+
const Smartphone = createLucideIcon("smartphone", __iconNode$5);
|
|
2827
|
+
/**
|
|
2828
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2829
|
+
*
|
|
2830
|
+
* This source code is licensed under the ISC license.
|
|
2831
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2832
|
+
*/
|
|
2833
|
+
const __iconNode$4 = [
|
|
2834
|
+
["path", { d: "M16 7h6v6", key: "box55l" }],
|
|
2835
|
+
["path", { d: "m22 7-8.5 8.5-5-5L2 17", key: "1t1m79" }]
|
|
2836
|
+
];
|
|
2837
|
+
const TrendingUp = createLucideIcon("trending-up", __iconNode$4);
|
|
2838
|
+
/**
|
|
2839
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2840
|
+
*
|
|
2841
|
+
* This source code is licensed under the ISC license.
|
|
2842
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2843
|
+
*/
|
|
2844
|
+
const __iconNode$3 = [
|
|
2845
|
+
["path", { d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2", key: "wrbu53" }],
|
|
2846
|
+
["path", { d: "M15 18H9", key: "1lyqi6" }],
|
|
2847
|
+
[
|
|
2848
|
+
"path",
|
|
2849
|
+
{
|
|
2850
|
+
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",
|
|
2851
|
+
key: "lysw3i"
|
|
2852
|
+
}
|
|
2853
|
+
],
|
|
2854
|
+
["circle", { cx: "17", cy: "18", r: "2", key: "332jqn" }],
|
|
2855
|
+
["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }]
|
|
2856
|
+
];
|
|
2857
|
+
const Truck = createLucideIcon("truck", __iconNode$3);
|
|
2858
|
+
/**
|
|
2859
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2860
|
+
*
|
|
2861
|
+
* This source code is licensed under the ISC license.
|
|
2862
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2863
|
+
*/
|
|
2864
|
+
const __iconNode$2 = [
|
|
2865
|
+
["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
|
|
2866
|
+
["path", { d: "M16 3.128a4 4 0 0 1 0 7.744", key: "16gr8j" }],
|
|
2867
|
+
["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" }],
|
|
2868
|
+
["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
|
|
2869
|
+
];
|
|
2870
|
+
const Users = createLucideIcon("users", __iconNode$2);
|
|
2871
|
+
/**
|
|
2872
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2873
|
+
*
|
|
2874
|
+
* This source code is licensed under the ISC license.
|
|
2875
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2876
|
+
*/
|
|
2877
|
+
const __iconNode$1 = [
|
|
2878
|
+
[
|
|
2879
|
+
"path",
|
|
2880
|
+
{
|
|
2881
|
+
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",
|
|
2882
|
+
key: "1ngwbx"
|
|
2883
|
+
}
|
|
2884
|
+
]
|
|
2885
|
+
];
|
|
2886
|
+
const Wrench = createLucideIcon("wrench", __iconNode$1);
|
|
2887
|
+
/**
|
|
2888
|
+
* @license lucide-react v0.536.0 - ISC
|
|
2889
|
+
*
|
|
2890
|
+
* This source code is licensed under the ISC license.
|
|
2891
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2892
|
+
*/
|
|
2893
|
+
const __iconNode = [
|
|
2894
|
+
[
|
|
2895
|
+
"path",
|
|
2896
|
+
{
|
|
2897
|
+
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",
|
|
2898
|
+
key: "1xq2db"
|
|
2899
|
+
}
|
|
2900
|
+
]
|
|
2901
|
+
];
|
|
2902
|
+
const Zap = createLucideIcon("zap", __iconNode);
|
|
2998
2903
|
const DiagramSection = ({ data, t, isDarkMode }) => {
|
|
2999
2904
|
var _a, _b;
|
|
3000
2905
|
const [mounted, setMounted] = require$$0.useState(false);
|
|
@@ -3621,7 +3526,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
3621
3526
|
style: {
|
|
3622
3527
|
background: isHovered || isDragging ? colorStyle.gradientHover : colorStyle.gradient,
|
|
3623
3528
|
borderColor: colorStyle.border + "80",
|
|
3624
|
-
boxShadow: `0 10px 40px
|
|
3529
|
+
boxShadow: `0 10px 40px rgba(var(--brand-primary), 0.3)`,
|
|
3625
3530
|
transform: isHovered || isDragging ? "scale(1.1)" : "scale(1)",
|
|
3626
3531
|
filter: isHovered || isDragging ? "brightness(1.1)" : "brightness(1)",
|
|
3627
3532
|
rotate: isDragging ? "2deg" : "0deg"
|
|
@@ -4075,8 +3980,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4075
3980
|
{
|
|
4076
3981
|
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
3982
|
style: {
|
|
4078
|
-
borderColor: "var(--brand-primary)",
|
|
4079
|
-
borderOpacity: 0.5,
|
|
3983
|
+
borderColor: "rgba(var(--brand-primary-rgb), 0.5)",
|
|
4080
3984
|
transform: isDragging ? "scale(1.1)" : "scale(1)",
|
|
4081
3985
|
transition: "transform 0.3s ease"
|
|
4082
3986
|
},
|
|
@@ -4151,7 +4055,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4151
4055
|
flex-shrink-0 w-10 h-10 rounded-full flex items-center justify-center
|
|
4152
4056
|
transition-all duration-500 transform
|
|
4153
4057
|
${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(
|
|
4058
|
+
`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4059
|
+
ThemeIcon,
|
|
4060
|
+
{
|
|
4061
|
+
name: "icon-faqChevronDown",
|
|
4062
|
+
folder: "common",
|
|
4063
|
+
className: `w-5 h-5 icon-muted transition-transform duration-500 ${isActive ? "rotate-180" : ""}`
|
|
4064
|
+
}
|
|
4065
|
+
) })
|
|
4155
4066
|
]
|
|
4156
4067
|
}
|
|
4157
4068
|
),
|
|
@@ -4230,15 +4141,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4230
4141
|
},
|
|
4231
4142
|
onMouseEnter: (e) => e.currentTarget.style.transform = "scale(1.1)",
|
|
4232
4143
|
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
|
-
)
|
|
4144
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-faqQuestion", className: "w-4 h-4 icon-gradient" })
|
|
4242
4145
|
}
|
|
4243
4146
|
) }),
|
|
4244
4147
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12 animate-fade-in", children: [
|
|
@@ -4611,7 +4514,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4611
4514
|
},
|
|
4612
4515
|
children: [
|
|
4613
4516
|
t("pageChildrenSelect.moreInsights"),
|
|
4614
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4517
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectArrowRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 icon-muted" })
|
|
4615
4518
|
]
|
|
4616
4519
|
}
|
|
4617
4520
|
) })
|
|
@@ -4686,13 +4589,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4686
4589
|
display: "flex",
|
|
4687
4590
|
alignItems: "center",
|
|
4688
4591
|
paddingLeft: "16px"
|
|
4689
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4690
|
-
ChevronRight,
|
|
4691
|
-
{
|
|
4692
|
-
size: 20,
|
|
4693
|
-
className: "card-text"
|
|
4694
|
-
}
|
|
4695
|
-
) })
|
|
4592
|
+
}, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectChevronRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 card-text" }) })
|
|
4696
4593
|
]
|
|
4697
4594
|
},
|
|
4698
4595
|
page.id
|
|
@@ -4717,7 +4614,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4717
4614
|
},
|
|
4718
4615
|
children: [
|
|
4719
4616
|
t("pageChildrenSelect.moreInsights"),
|
|
4720
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4617
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectArrowRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 icon-muted" })
|
|
4721
4618
|
]
|
|
4722
4619
|
}
|
|
4723
4620
|
) })
|
|
@@ -4827,7 +4724,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
4827
4724
|
},
|
|
4828
4725
|
children: [
|
|
4829
4726
|
t("pageChildrenSelect.moreInsights"),
|
|
4830
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4727
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectArrowRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 icon-muted" })
|
|
4831
4728
|
]
|
|
4832
4729
|
}
|
|
4833
4730
|
) })
|