nvis-fe-cms-libs 2.0.2 → 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.
@@ -371,6 +371,43 @@ function requireJsxRuntime() {
371
371
  return jsxRuntime.exports;
372
372
  }
373
373
  var jsxRuntimeExports = requireJsxRuntime();
374
+ function ThemeIcon({
375
+ name,
376
+ className = "",
377
+ color,
378
+ useOriginalColor = false
379
+ // ← Prop mới để chọn chế độ
380
+ }) {
381
+ if (!name) return null;
382
+ const iconUrl = `/icons/${name}.svg`;
383
+ if (useOriginalColor) {
384
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
385
+ "img",
386
+ {
387
+ src: iconUrl,
388
+ alt: name,
389
+ className: `icon ${className}`,
390
+ onError: (e) => {
391
+ e.target.style.display = "none";
392
+ }
393
+ }
394
+ );
395
+ }
396
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
397
+ "span",
398
+ {
399
+ className: `icon ${className}`,
400
+ style: {
401
+ maskImage: `url(${iconUrl})`,
402
+ WebkitMaskImage: `url(${iconUrl})`,
403
+ backgroundColor: color || "currentColor"
404
+ },
405
+ onError: (e) => {
406
+ e.target.style.display = "none";
407
+ }
408
+ }
409
+ );
410
+ }
374
411
  const CompanyValues = ({ companyData, t, isDarkMode }) => {
375
412
  const cleanHtmlContent = (html) => {
376
413
  if (!html) return "";
@@ -390,19 +427,19 @@ const CompanyValues = ({ companyData, t, isDarkMode }) => {
390
427
  };
391
428
  const items = [
392
429
  {
393
- icon: "light_bulb",
430
+ icon: "icon-companyValueLightBulb",
394
431
  title: t("about.companyValues.vision") || "Tầm nhìn",
395
432
  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.",
396
433
  bgClass: "bg-gradient-brand"
397
434
  },
398
435
  {
399
- icon: "rocket",
436
+ icon: "icon-companyValueRocket",
400
437
  title: t("about.companyValues.mission") || "Sứ mệnh",
401
438
  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.",
402
439
  bgClass: "bg-gradient-accent"
403
440
  },
404
441
  {
405
- icon: "diamond",
442
+ icon: "icon-companyValueDiamond",
406
443
  title: t("about.companyValues.coreValues") || "Giá trị cốt lõi",
407
444
  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.",
408
445
  bgClass: "bg-gradient-brand"
@@ -452,7 +489,7 @@ const CompanyValues = ({ companyData, t, isDarkMode }) => {
452
489
  "div",
453
490
  {
454
491
  className: `w-10 h-10 rounded-lg flex items-center justify-center text-white text-xl flex-shrink-0 ${item.bgClass}`,
455
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(DynamicIcon, { name: item.icon, className: "w-6 h-6" })
492
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: item.icon, folder: "AboutCompanySection", className: "w-6 h-6", useOriginalColor: true })
456
493
  }
457
494
  ),
458
495
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
@@ -577,7 +614,8 @@ const AboutCompanySection = ({ data, t, isDarkMode, imageBaseUrl = "" }) => {
577
614
  /* @__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: [
578
615
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
579
616
  /* @__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: [
580
- "📖 ",
617
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-aboutCompanyBook", folder: "AboutCompanySection", className: "w-6 h-6", useOriginalColor: true }),
618
+ " ",
581
619
  safeT("aboutCompany.story.badge")
582
620
  ] }),
583
621
  /* @__PURE__ */ jsxRuntimeExports.jsxs("h2", { className: "text-3xl lg:text-4xl font-bold mb-6 text-main", children: [
@@ -645,7 +683,8 @@ const TimelineSection = ({ data, t, section }) => {
645
683
  }
646
684
  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: [
647
685
  /* @__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: [
648
- "📈 ",
686
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-timeLineChart", folder: "TimlineSection", className: "w-5 h-5 icon-gradient" }),
687
+ " ",
649
688
  sectionTitle
650
689
  ] }) }),
651
690
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
@@ -866,7 +905,8 @@ const PartnersSection = ({ data, t, imageBaseUrl = "", section }) => {
866
905
  if (!partnersData.length) return null;
867
906
  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: [
868
907
  /* @__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: [
869
- "🤝 ",
908
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-partner", folder: "PartnersSection", className: "w-4 h-4 icon-gradient" }),
909
+ " ",
870
910
  sectionTitle
871
911
  ] }) }),
872
912
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -969,7 +1009,8 @@ const MilestoneSection = ({ data, t, isDarkMode, getMilestoneTimeline, section }
969
1009
  }
970
1010
  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: [
971
1011
  /* @__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: [
972
- "📈 ",
1012
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-timeLineChart", folder: "TimlineSection", className: "w-5 h-5 icon-gradient" }),
1013
+ " ",
973
1014
  sectionTitle
974
1015
  ] }) }),
975
1016
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
@@ -1035,7 +1076,8 @@ const TestimonialsSection = ({ data, t, section }) => {
1035
1076
  }
1036
1077
  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: [
1037
1078
  /* @__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: [
1038
- "💬 ",
1079
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-testimonials", folder: "TestimonialsSection", className: "w-4 h-4 icon-gradient" }),
1080
+ " ",
1039
1081
  sectionTitle
1040
1082
  ] }),
1041
1083
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
@@ -1054,7 +1096,7 @@ const TestimonialsSection = ({ data, t, section }) => {
1054
1096
  '"'
1055
1097
  ] }),
1056
1098
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-4", children: [
1057
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: "👤" }),
1099
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-testimonialsUser", folder: "TestimonialsSection", className: "w-4 h-4 icon-gradient" }) }),
1058
1100
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-left", children: [
1059
1101
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-title", children: testimonials[currentIndex].author }),
1060
1102
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-text", children: testimonials[currentIndex].position }),
@@ -1252,7 +1294,8 @@ const PartnerListSection = ({ t, getPartnerList, imageBaseUrl = "", section }) =
1252
1294
  if (!partnersData.length) return null;
1253
1295
  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: [
1254
1296
  /* @__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: [
1255
- "🤝 ",
1297
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-partner", folder: "PartnersSection", className: "w-4 h-4 icon-gradient" }),
1298
+ " ",
1256
1299
  sectionTitle
1257
1300
  ] }) }),
1258
1301
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: partnersRef, className: "relative", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -1317,692 +1360,71 @@ const PartnerListSection = ({ t, getPartnerList, imageBaseUrl = "", section }) =
1317
1360
  ) })
1318
1361
  ] }) });
1319
1362
  };
1320
- /**
1321
- * @license lucide-react v0.536.0 - ISC
1322
- *
1323
- * This source code is licensed under the ISC license.
1324
- * See the LICENSE file in the root directory of this source tree.
1325
- */
1326
- const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
1327
- const toCamelCase = (string) => string.replace(
1328
- /^([A-Z])|[\s-_]+(\w)/g,
1329
- (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
1330
- );
1331
- const toPascalCase = (string) => {
1332
- const camelCase = toCamelCase(string);
1333
- return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
1334
- };
1335
- const mergeClasses = (...classes) => classes.filter((className, index2, array) => {
1336
- return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index2;
1337
- }).join(" ").trim();
1338
- const hasA11yProp = (props) => {
1339
- for (const prop in props) {
1340
- if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
1341
- return true;
1363
+ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService }) => {
1364
+ const [formData, setFormData] = useState({
1365
+ fullName: "",
1366
+ workEmail: "",
1367
+ phoneNumber: "",
1368
+ companyName: "",
1369
+ jobTitle: "",
1370
+ businessType: "",
1371
+ expectedBudget: "",
1372
+ expectedTimeline: "",
1373
+ requestTitle: "",
1374
+ requestDescription: ""
1375
+ });
1376
+ const [formErrors, setFormErrors] = useState({});
1377
+ const [isSubmitting, setIsSubmitting] = useState(false);
1378
+ const [submitStatus, setSubmitStatus] = useState(null);
1379
+ const [submitMessage, setSubmitMessage] = useState("");
1380
+ const validateField = (name, value) => {
1381
+ const errors = {};
1382
+ switch (name) {
1383
+ case "fullName":
1384
+ if (!(value == null ? void 0 : value.trim())) errors.fullName = "Họ và tên là bắt buộc";
1385
+ else if (value.trim().length < 2) errors.fullName = "Tên phải có ít nhất 2 ký tự";
1386
+ break;
1387
+ case "workEmail":
1388
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
1389
+ if (!(value == null ? void 0 : value.trim())) errors.workEmail = "Email là bắt buộc";
1390
+ else if (!emailRegex.test(value.trim())) errors.workEmail = "Email không hợp lệ";
1391
+ break;
1392
+ case "phoneNumber":
1393
+ const phoneRegex = /^[0-9\s\-\+\(\)]{10,15}$/;
1394
+ if (value && !phoneRegex.test(value.trim())) errors.phoneNumber = "Số điện thoại không hợp lệ";
1395
+ break;
1396
+ case "requestTitle":
1397
+ if (!(value == null ? void 0 : value.trim())) errors.requestTitle = "Tiêu đề yêu cầu là bắt buộc";
1398
+ else if (value.trim().length < 5) errors.requestTitle = "Tiêu đề phải có ít nhất 5 ký tự";
1399
+ break;
1400
+ case "requestDescription":
1401
+ if (!(value == null ? void 0 : value.trim())) errors.requestDescription = "Mô tả yêu cầu là bắt buộc";
1402
+ else if (value.trim().length < 10) errors.requestDescription = "Mô tả phải có ít nhất 10 ký tự";
1403
+ break;
1404
+ case "companyName":
1405
+ if (value && value.trim().length > 0 && value.trim().length < 2) {
1406
+ errors.companyName = "Tên công ty phải có ít nhất 2 ký tự";
1407
+ }
1408
+ break;
1409
+ case "jobTitle":
1410
+ if (value && value.trim().length > 0 && value.trim().length < 2) {
1411
+ errors.jobTitle = "Chức vụ phải có ít nhất 2 ký tự";
1412
+ }
1413
+ break;
1342
1414
  }
1343
- }
1344
- };
1345
- /**
1346
- * @license lucide-react v0.536.0 - ISC
1347
- *
1348
- * This source code is licensed under the ISC license.
1349
- * See the LICENSE file in the root directory of this source tree.
1350
- */
1351
- var defaultAttributes = {
1352
- xmlns: "http://www.w3.org/2000/svg",
1353
- width: 24,
1354
- height: 24,
1355
- viewBox: "0 0 24 24",
1356
- fill: "none",
1357
- stroke: "currentColor",
1358
- strokeWidth: 2,
1359
- strokeLinecap: "round",
1360
- strokeLinejoin: "round"
1361
- };
1362
- /**
1363
- * @license lucide-react v0.536.0 - ISC
1364
- *
1365
- * This source code is licensed under the ISC license.
1366
- * See the LICENSE file in the root directory of this source tree.
1367
- */
1368
- const Icon = forwardRef(
1369
- (_a, ref) => {
1370
- var _b = _a, {
1371
- color = "currentColor",
1372
- size = 24,
1373
- strokeWidth = 2,
1374
- absoluteStrokeWidth,
1375
- className = "",
1376
- children,
1377
- iconNode
1378
- } = _b, rest = __objRest(_b, [
1379
- "color",
1380
- "size",
1381
- "strokeWidth",
1382
- "absoluteStrokeWidth",
1383
- "className",
1384
- "children",
1385
- "iconNode"
1386
- ]);
1387
- return createElement(
1388
- "svg",
1389
- __spreadValues(__spreadValues(__spreadProps(__spreadValues({
1390
- ref
1391
- }, defaultAttributes), {
1392
- width: size,
1393
- height: size,
1394
- stroke: color,
1395
- strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
1396
- className: mergeClasses("lucide", className)
1397
- }), !children && !hasA11yProp(rest) && { "aria-hidden": "true" }), rest),
1398
- [
1399
- ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
1400
- ...Array.isArray(children) ? children : [children]
1401
- ]
1402
- );
1403
- }
1404
- );
1405
- /**
1406
- * @license lucide-react v0.536.0 - ISC
1407
- *
1408
- * This source code is licensed under the ISC license.
1409
- * See the LICENSE file in the root directory of this source tree.
1410
- */
1411
- const createLucideIcon = (iconName, iconNode) => {
1412
- const Component = forwardRef(
1413
- (_a, ref) => {
1414
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1415
- return createElement(Icon, __spreadValues({
1416
- ref,
1417
- iconNode,
1418
- className: mergeClasses(
1419
- `lucide-${toKebabCase(toPascalCase(iconName))}`,
1420
- `lucide-${iconName}`,
1421
- className
1422
- )
1423
- }, props));
1424
- }
1425
- );
1426
- Component.displayName = toPascalCase(iconName);
1427
- return Component;
1428
- };
1429
- /**
1430
- * @license lucide-react v0.536.0 - ISC
1431
- *
1432
- * This source code is licensed under the ISC license.
1433
- * See the LICENSE file in the root directory of this source tree.
1434
- */
1435
- const __iconNode$z = [
1436
- ["path", { d: "M5 12h14", key: "1ays0h" }],
1437
- ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
1438
- ];
1439
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$z);
1440
- /**
1441
- * @license lucide-react v0.536.0 - ISC
1442
- *
1443
- * This source code is licensed under the ISC license.
1444
- * See the LICENSE file in the root directory of this source tree.
1445
- */
1446
- const __iconNode$y = [
1447
- ["path", { d: "M2 4v16", key: "vw9hq8" }],
1448
- ["path", { d: "M2 8h18a2 2 0 0 1 2 2v10", key: "1dgv2r" }],
1449
- ["path", { d: "M2 17h20", key: "18nfp3" }],
1450
- ["path", { d: "M6 8v9", key: "1yriud" }]
1451
- ];
1452
- const Bed = createLucideIcon("bed", __iconNode$y);
1453
- /**
1454
- * @license lucide-react v0.536.0 - ISC
1455
- *
1456
- * This source code is licensed under the ISC license.
1457
- * See the LICENSE file in the root directory of this source tree.
1458
- */
1459
- const __iconNode$x = [
1460
- ["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
1461
- ["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
1462
- ];
1463
- const Briefcase = createLucideIcon("briefcase", __iconNode$x);
1464
- /**
1465
- * @license lucide-react v0.536.0 - ISC
1466
- *
1467
- * This source code is licensed under the ISC license.
1468
- * See the LICENSE file in the root directory of this source tree.
1469
- */
1470
- const __iconNode$w = [
1471
- ["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
1472
- ["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
1473
- ["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
1474
- ["path", { d: "M10 6h4", key: "1itunk" }],
1475
- ["path", { d: "M10 10h4", key: "tcdvrf" }],
1476
- ["path", { d: "M10 14h4", key: "kelpxr" }],
1477
- ["path", { d: "M10 18h4", key: "1ulq68" }]
1478
- ];
1479
- const Building2 = createLucideIcon("building-2", __iconNode$w);
1480
- /**
1481
- * @license lucide-react v0.536.0 - ISC
1482
- *
1483
- * This source code is licensed under the ISC license.
1484
- * See the LICENSE file in the root directory of this source tree.
1485
- */
1486
- const __iconNode$v = [
1487
- ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }],
1488
- ["path", { d: "M9 22v-4h6v4", key: "r93iot" }],
1489
- ["path", { d: "M8 6h.01", key: "1dz90k" }],
1490
- ["path", { d: "M16 6h.01", key: "1x0f13" }],
1491
- ["path", { d: "M12 6h.01", key: "1vi96p" }],
1492
- ["path", { d: "M12 10h.01", key: "1nrarc" }],
1493
- ["path", { d: "M12 14h.01", key: "1etili" }],
1494
- ["path", { d: "M16 10h.01", key: "1m94wz" }],
1495
- ["path", { d: "M16 14h.01", key: "1gbofw" }],
1496
- ["path", { d: "M8 10h.01", key: "19clt8" }],
1497
- ["path", { d: "M8 14h.01", key: "6423bh" }]
1498
- ];
1499
- const Building = createLucideIcon("building", __iconNode$v);
1500
- /**
1501
- * @license lucide-react v0.536.0 - ISC
1502
- *
1503
- * This source code is licensed under the ISC license.
1504
- * See the LICENSE file in the root directory of this source tree.
1505
- */
1506
- const __iconNode$u = [
1507
- ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }],
1508
- ["line", { x1: "8", x2: "16", y1: "6", y2: "6", key: "x4nwl0" }],
1509
- ["line", { x1: "16", x2: "16", y1: "14", y2: "18", key: "wjye3r" }],
1510
- ["path", { d: "M16 10h.01", key: "1m94wz" }],
1511
- ["path", { d: "M12 10h.01", key: "1nrarc" }],
1512
- ["path", { d: "M8 10h.01", key: "19clt8" }],
1513
- ["path", { d: "M12 14h.01", key: "1etili" }],
1514
- ["path", { d: "M8 14h.01", key: "6423bh" }],
1515
- ["path", { d: "M12 18h.01", key: "mhygvu" }],
1516
- ["path", { d: "M8 18h.01", key: "lrp35t" }]
1517
- ];
1518
- const Calculator = createLucideIcon("calculator", __iconNode$u);
1519
- /**
1520
- * @license lucide-react v0.536.0 - ISC
1521
- *
1522
- * This source code is licensed under the ISC license.
1523
- * See the LICENSE file in the root directory of this source tree.
1524
- */
1525
- const __iconNode$t = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
1526
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$t);
1527
- /**
1528
- * @license lucide-react v0.536.0 - ISC
1529
- *
1530
- * This source code is licensed under the ISC license.
1531
- * See the LICENSE file in the root directory of this source tree.
1532
- */
1533
- const __iconNode$s = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
1534
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$s);
1535
- /**
1536
- * @license lucide-react v0.536.0 - ISC
1537
- *
1538
- * This source code is licensed under the ISC license.
1539
- * See the LICENSE file in the root directory of this source tree.
1540
- */
1541
- const __iconNode$r = [
1542
- ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1543
- ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
1544
- ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
1545
- ];
1546
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$r);
1547
- /**
1548
- * @license lucide-react v0.536.0 - ISC
1549
- *
1550
- * This source code is licensed under the ISC license.
1551
- * See the LICENSE file in the root directory of this source tree.
1552
- */
1553
- const __iconNode$q = [
1554
- ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
1555
- ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
1556
- ];
1557
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$q);
1558
- /**
1559
- * @license lucide-react v0.536.0 - ISC
1560
- *
1561
- * This source code is licensed under the ISC license.
1562
- * See the LICENSE file in the root directory of this source tree.
1563
- */
1564
- const __iconNode$p = [
1565
- ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
1566
- ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
1567
- ];
1568
- const Clock = createLucideIcon("clock", __iconNode$p);
1569
- /**
1570
- * @license lucide-react v0.536.0 - ISC
1571
- *
1572
- * This source code is licensed under the ISC license.
1573
- * See the LICENSE file in the root directory of this source tree.
1574
- */
1575
- const __iconNode$o = [
1576
- ["path", { d: "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "p7xjir" }]
1577
- ];
1578
- const Cloud = createLucideIcon("cloud", __iconNode$o);
1579
- /**
1580
- * @license lucide-react v0.536.0 - ISC
1581
- *
1582
- * This source code is licensed under the ISC license.
1583
- * See the LICENSE file in the root directory of this source tree.
1584
- */
1585
- const __iconNode$n = [
1586
- ["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
1587
- ["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
1588
- ["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
1589
- ];
1590
- const Database = createLucideIcon("database", __iconNode$n);
1591
- /**
1592
- * @license lucide-react v0.536.0 - ISC
1593
- *
1594
- * This source code is licensed under the ISC license.
1595
- * See the LICENSE file in the root directory of this source tree.
1596
- */
1597
- const __iconNode$m = [
1598
- ["path", { d: "M12 16h.01", key: "1drbdi" }],
1599
- ["path", { d: "M16 16h.01", key: "1f9h7w" }],
1600
- [
1601
- "path",
1602
- {
1603
- 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",
1604
- key: "1iv0i2"
1605
- }
1606
- ],
1607
- ["path", { d: "M8 16h.01", key: "18s6g9" }]
1608
- ];
1609
- const Factory = createLucideIcon("factory", __iconNode$m);
1610
- /**
1611
- * @license lucide-react v0.536.0 - ISC
1612
- *
1613
- * This source code is licensed under the ISC license.
1614
- * See the LICENSE file in the root directory of this source tree.
1615
- */
1616
- const __iconNode$l = [
1617
- ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
1618
- ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
1619
- ["path", { d: "M10 9H8", key: "b1mrlr" }],
1620
- ["path", { d: "M16 13H8", key: "t4e002" }],
1621
- ["path", { d: "M16 17H8", key: "z1uh3a" }]
1622
- ];
1623
- const FileText = createLucideIcon("file-text", __iconNode$l);
1624
- /**
1625
- * @license lucide-react v0.536.0 - ISC
1626
- *
1627
- * This source code is licensed under the ISC license.
1628
- * See the LICENSE file in the root directory of this source tree.
1629
- */
1630
- const __iconNode$k = [
1631
- ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1632
- ["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
1633
- ["path", { d: "M2 12h20", key: "9i4pu4" }]
1634
- ];
1635
- const Globe = createLucideIcon("globe", __iconNode$k);
1636
- /**
1637
- * @license lucide-react v0.536.0 - ISC
1638
- *
1639
- * This source code is licensed under the ISC license.
1640
- * See the LICENSE file in the root directory of this source tree.
1641
- */
1642
- const __iconNode$j = [
1643
- [
1644
- "path",
1645
- {
1646
- 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",
1647
- key: "j76jl0"
1648
- }
1649
- ],
1650
- ["path", { d: "M22 10v6", key: "1lu8f3" }],
1651
- ["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
1652
- ];
1653
- const GraduationCap = createLucideIcon("graduation-cap", __iconNode$j);
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$i = [
1661
- [
1662
- "path",
1663
- {
1664
- 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",
1665
- key: "mvr1a0"
1666
- }
1667
- ]
1668
- ];
1669
- const Heart = createLucideIcon("heart", __iconNode$i);
1670
- /**
1671
- * @license lucide-react v0.536.0 - ISC
1672
- *
1673
- * This source code is licensed under the ISC license.
1674
- * See the LICENSE file in the root directory of this source tree.
1675
- */
1676
- const __iconNode$h = [
1677
- ["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
1678
- [
1679
- "path",
1680
- {
1681
- 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",
1682
- key: "1d0kgt"
1683
- }
1684
- ]
1685
- ];
1686
- const House = createLucideIcon("house", __iconNode$h);
1687
- /**
1688
- * @license lucide-react v0.536.0 - ISC
1689
- *
1690
- * This source code is licensed under the ISC license.
1691
- * See the LICENSE file in the root directory of this source tree.
1692
- */
1693
- const __iconNode$g = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
1694
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$g);
1695
- /**
1696
- * @license lucide-react v0.536.0 - ISC
1697
- *
1698
- * This source code is licensed under the ISC license.
1699
- * See the LICENSE file in the root directory of this source tree.
1700
- */
1701
- const __iconNode$f = [
1702
- ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
1703
- ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
1704
- ];
1705
- const Mail = createLucideIcon("mail", __iconNode$f);
1706
- /**
1707
- * @license lucide-react v0.536.0 - ISC
1708
- *
1709
- * This source code is licensed under the ISC license.
1710
- * See the LICENSE file in the root directory of this source tree.
1711
- */
1712
- const __iconNode$e = [
1713
- [
1714
- "path",
1715
- {
1716
- 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",
1717
- key: "q8bfy3"
1718
- }
1719
- ],
1720
- ["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" }],
1721
- ["path", { d: "M8 6v8", key: "15ugcq" }]
1722
- ];
1723
- const Megaphone = createLucideIcon("megaphone", __iconNode$e);
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$d = [
1731
- [
1732
- "path",
1733
- {
1734
- 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",
1735
- key: "1a0edw"
1736
- }
1737
- ],
1738
- ["path", { d: "M12 22V12", key: "d0xqtd" }],
1739
- ["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }],
1740
- ["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }]
1741
- ];
1742
- const Package = createLucideIcon("package", __iconNode$d);
1743
- /**
1744
- * @license lucide-react v0.536.0 - ISC
1745
- *
1746
- * This source code is licensed under the ISC license.
1747
- * See the LICENSE file in the root directory of this source tree.
1748
- */
1749
- const __iconNode$c = [
1750
- [
1751
- "path",
1752
- {
1753
- 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",
1754
- key: "9njp5v"
1755
- }
1756
- ]
1757
- ];
1758
- const Phone = createLucideIcon("phone", __iconNode$c);
1759
- /**
1760
- * @license lucide-react v0.536.0 - ISC
1761
- *
1762
- * This source code is licensed under the ISC license.
1763
- * See the LICENSE file in the root directory of this source tree.
1764
- */
1765
- const __iconNode$b = [
1766
- [
1767
- "path",
1768
- {
1769
- 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",
1770
- key: "1v9wt8"
1771
- }
1772
- ]
1773
- ];
1774
- const Plane = createLucideIcon("plane", __iconNode$b);
1775
- /**
1776
- * @license lucide-react v0.536.0 - ISC
1777
- *
1778
- * This source code is licensed under the ISC license.
1779
- * See the LICENSE file in the root directory of this source tree.
1780
- */
1781
- const __iconNode$a = [
1782
- [
1783
- "path",
1784
- {
1785
- 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",
1786
- key: "1ffxy3"
1787
- }
1788
- ],
1789
- ["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
1790
- ];
1791
- const Send = createLucideIcon("send", __iconNode$a);
1792
- /**
1793
- * @license lucide-react v0.536.0 - ISC
1794
- *
1795
- * This source code is licensed under the ISC license.
1796
- * See the LICENSE file in the root directory of this source tree.
1797
- */
1798
- const __iconNode$9 = [
1799
- [
1800
- "path",
1801
- {
1802
- 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",
1803
- key: "1i5ecw"
1804
- }
1805
- ],
1806
- ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
1807
- ];
1808
- const Settings = createLucideIcon("settings", __iconNode$9);
1809
- /**
1810
- * @license lucide-react v0.536.0 - ISC
1811
- *
1812
- * This source code is licensed under the ISC license.
1813
- * See the LICENSE file in the root directory of this source tree.
1814
- */
1815
- const __iconNode$8 = [
1816
- [
1817
- "path",
1818
- {
1819
- 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",
1820
- key: "oel41y"
1821
- }
1822
- ]
1823
- ];
1824
- const Shield = createLucideIcon("shield", __iconNode$8);
1825
- /**
1826
- * @license lucide-react v0.536.0 - ISC
1827
- *
1828
- * This source code is licensed under the ISC license.
1829
- * See the LICENSE file in the root directory of this source tree.
1830
- */
1831
- const __iconNode$7 = [
1832
- ["circle", { cx: "8", cy: "21", r: "1", key: "jimo8o" }],
1833
- ["circle", { cx: "19", cy: "21", r: "1", key: "13723u" }],
1834
- [
1835
- "path",
1836
- {
1837
- 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",
1838
- key: "9zh506"
1839
- }
1840
- ]
1841
- ];
1842
- const ShoppingCart = createLucideIcon("shopping-cart", __iconNode$7);
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$6 = [
1850
- ["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }],
1851
- ["path", { d: "M12 18h.01", key: "mhygvu" }]
1852
- ];
1853
- const Smartphone = createLucideIcon("smartphone", __iconNode$6);
1854
- /**
1855
- * @license lucide-react v0.536.0 - ISC
1856
- *
1857
- * This source code is licensed under the ISC license.
1858
- * See the LICENSE file in the root directory of this source tree.
1859
- */
1860
- const __iconNode$5 = [
1861
- ["path", { d: "M16 7h6v6", key: "box55l" }],
1862
- ["path", { d: "m22 7-8.5 8.5-5-5L2 17", key: "1t1m79" }]
1863
- ];
1864
- const TrendingUp = createLucideIcon("trending-up", __iconNode$5);
1865
- /**
1866
- * @license lucide-react v0.536.0 - ISC
1867
- *
1868
- * This source code is licensed under the ISC license.
1869
- * See the LICENSE file in the root directory of this source tree.
1870
- */
1871
- const __iconNode$4 = [
1872
- ["path", { d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2", key: "wrbu53" }],
1873
- ["path", { d: "M15 18H9", key: "1lyqi6" }],
1874
- [
1875
- "path",
1876
- {
1877
- 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",
1878
- key: "lysw3i"
1879
- }
1880
- ],
1881
- ["circle", { cx: "17", cy: "18", r: "2", key: "332jqn" }],
1882
- ["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }]
1883
- ];
1884
- const Truck = createLucideIcon("truck", __iconNode$4);
1885
- /**
1886
- * @license lucide-react v0.536.0 - ISC
1887
- *
1888
- * This source code is licensed under the ISC license.
1889
- * See the LICENSE file in the root directory of this source tree.
1890
- */
1891
- const __iconNode$3 = [
1892
- ["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
1893
- ["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
1894
- ];
1895
- const User = createLucideIcon("user", __iconNode$3);
1896
- /**
1897
- * @license lucide-react v0.536.0 - ISC
1898
- *
1899
- * This source code is licensed under the ISC license.
1900
- * See the LICENSE file in the root directory of this source tree.
1901
- */
1902
- const __iconNode$2 = [
1903
- ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
1904
- ["path", { d: "M16 3.128a4 4 0 0 1 0 7.744", key: "16gr8j" }],
1905
- ["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" }],
1906
- ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
1907
- ];
1908
- const Users = createLucideIcon("users", __iconNode$2);
1909
- /**
1910
- * @license lucide-react v0.536.0 - ISC
1911
- *
1912
- * This source code is licensed under the ISC license.
1913
- * See the LICENSE file in the root directory of this source tree.
1914
- */
1915
- const __iconNode$1 = [
1916
- [
1917
- "path",
1918
- {
1919
- 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",
1920
- key: "1ngwbx"
1921
- }
1922
- ]
1923
- ];
1924
- const Wrench = createLucideIcon("wrench", __iconNode$1);
1925
- /**
1926
- * @license lucide-react v0.536.0 - ISC
1927
- *
1928
- * This source code is licensed under the ISC license.
1929
- * See the LICENSE file in the root directory of this source tree.
1930
- */
1931
- const __iconNode = [
1932
- [
1933
- "path",
1934
- {
1935
- 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",
1936
- key: "1xq2db"
1937
- }
1938
- ]
1939
- ];
1940
- const Zap = createLucideIcon("zap", __iconNode);
1941
- const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService }) => {
1942
- const [formData, setFormData] = useState({
1943
- fullName: "",
1944
- workEmail: "",
1945
- phoneNumber: "",
1946
- companyName: "",
1947
- jobTitle: "",
1948
- businessType: "",
1949
- expectedBudget: "",
1950
- expectedTimeline: "",
1951
- requestTitle: "",
1952
- requestDescription: ""
1953
- });
1954
- const [formErrors, setFormErrors] = useState({});
1955
- const [isSubmitting, setIsSubmitting] = useState(false);
1956
- const [submitStatus, setSubmitStatus] = useState(null);
1957
- const [submitMessage, setSubmitMessage] = useState("");
1958
- const validateField = (name, value) => {
1959
- const errors = {};
1960
- switch (name) {
1961
- case "fullName":
1962
- if (!(value == null ? void 0 : value.trim())) errors.fullName = "Họ và tên là bắt buộc";
1963
- else if (value.trim().length < 2) errors.fullName = "Tên phải có ít nhất 2 ký tự";
1964
- break;
1965
- case "workEmail":
1966
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
1967
- if (!(value == null ? void 0 : value.trim())) errors.workEmail = "Email là bắt buộc";
1968
- else if (!emailRegex.test(value.trim())) errors.workEmail = "Email không hợp lệ";
1969
- break;
1970
- case "phoneNumber":
1971
- const phoneRegex = /^[0-9\s\-\+\(\)]{10,15}$/;
1972
- if (value && !phoneRegex.test(value.trim())) errors.phoneNumber = "Số điện thoại không hợp lệ";
1973
- break;
1974
- case "requestTitle":
1975
- if (!(value == null ? void 0 : value.trim())) errors.requestTitle = "Tiêu đề yêu cầu là bắt buộc";
1976
- else if (value.trim().length < 5) errors.requestTitle = "Tiêu đề phải có ít nhất 5 ký tự";
1977
- break;
1978
- case "requestDescription":
1979
- if (!(value == null ? void 0 : value.trim())) errors.requestDescription = "Mô tả yêu cầu là bắt buộc";
1980
- else if (value.trim().length < 10) errors.requestDescription = "Mô tả phải có ít nhất 10 ký tự";
1981
- break;
1982
- case "companyName":
1983
- if (value && value.trim().length > 0 && value.trim().length < 2) {
1984
- errors.companyName = "Tên công ty phải có ít nhất 2 ký tự";
1985
- }
1986
- break;
1987
- case "jobTitle":
1988
- if (value && value.trim().length > 0 && value.trim().length < 2) {
1989
- errors.jobTitle = "Chức vụ phải có ít nhất 2 ký tự";
1990
- }
1991
- break;
1992
- }
1993
- return errors;
1994
- };
1995
- const handleInputChange = (e) => {
1996
- const { name, value } = e.target;
1997
- setFormData((prev) => __spreadProps(__spreadValues({}, prev), {
1998
- [name]: value || ""
1999
- }));
2000
- if (formErrors[name]) {
2001
- setFormErrors((prev) => {
2002
- const newErrors = __spreadValues({}, prev);
2003
- delete newErrors[name];
2004
- return newErrors;
2005
- });
1415
+ return errors;
1416
+ };
1417
+ const handleInputChange = (e) => {
1418
+ const { name, value } = e.target;
1419
+ setFormData((prev) => __spreadProps(__spreadValues({}, prev), {
1420
+ [name]: value || ""
1421
+ }));
1422
+ if (formErrors[name]) {
1423
+ setFormErrors((prev) => {
1424
+ const newErrors = __spreadValues({}, prev);
1425
+ delete newErrors[name];
1426
+ return newErrors;
1427
+ });
2006
1428
  }
2007
1429
  };
2008
1430
  const handleBlur = (e) => {
@@ -2074,14 +1496,14 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2074
1496
  `;
2075
1497
  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: [
2076
1498
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-6", children: [
2077
- /* @__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(Send, { size: 20, className: "text-white" }) }),
1499
+ /* @__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" }) }),
2078
1500
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2079
1501
  /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-subtitle font-bold text-main", children: t("form.title") || "Gửi yêu cầu tư vấn" }),
2080
1502
  /* @__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" })
2081
1503
  ] })
2082
1504
  ] }),
2083
1505
  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: [
2084
- submitStatus === "success" ? /* @__PURE__ */ jsxRuntimeExports.jsx(CircleCheckBig, { size: 20, className: "mr-2 flex-shrink-0" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 20, className: "mr-2 flex-shrink-0" }),
1506
+ 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" }),
2085
1507
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small font-medium", children: submitMessage })
2086
1508
  ] }) }),
2087
1509
  /* @__PURE__ */ jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, className: "space-y-6", children: [
@@ -2106,7 +1528,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2106
1528
  }
2107
1529
  ),
2108
1530
  formErrors.fullName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2109
- /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
1531
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
2110
1532
  formErrors.fullName
2111
1533
  ] })
2112
1534
  ] }),
@@ -2130,7 +1552,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2130
1552
  }
2131
1553
  ),
2132
1554
  formErrors.workEmail && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2133
- /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
1555
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
2134
1556
  formErrors.workEmail
2135
1557
  ] })
2136
1558
  ] })
@@ -2152,7 +1574,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2152
1574
  }
2153
1575
  ),
2154
1576
  formErrors.phoneNumber && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2155
- /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
1577
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
2156
1578
  formErrors.phoneNumber
2157
1579
  ] })
2158
1580
  ] }),
@@ -2172,7 +1594,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2172
1594
  }
2173
1595
  ),
2174
1596
  formErrors.companyName && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2175
- /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
1597
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
2176
1598
  formErrors.companyName
2177
1599
  ] })
2178
1600
  ] })
@@ -2194,7 +1616,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2194
1616
  }
2195
1617
  ),
2196
1618
  formErrors.jobTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2197
- /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
1619
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
2198
1620
  formErrors.jobTitle
2199
1621
  ] })
2200
1622
  ] }),
@@ -2266,7 +1688,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2266
1688
  }
2267
1689
  ),
2268
1690
  formErrors.requestTitle && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2269
- /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
1691
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
2270
1692
  formErrors.requestTitle
2271
1693
  ] })
2272
1694
  ] }),
@@ -2290,7 +1712,7 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2290
1712
  }
2291
1713
  ),
2292
1714
  formErrors.requestDescription && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-small text-red-500 flex items-center", children: [
2293
- /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { size: 14, className: "mr-1" }),
1715
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormAlertCircle", className: "w-4 h-4 icon-gradient" }),
2294
1716
  formErrors.requestDescription
2295
1717
  ] })
2296
1718
  ] }),
@@ -2301,10 +1723,10 @@ const ContactFormSection = ({ data, t, isDarkMode, consultationRequestService })
2301
1723
  disabled: isSubmitting,
2302
1724
  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",
2303
1725
  children: isSubmitting ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
2304
- /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "animate-spin h-5 w-5 mr-2" }),
1726
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-ContactFormLoader2", className: "w-4 h-4 icon-muted" }),
2305
1727
  t("form.submitting") || "Đang gửi..."
2306
1728
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
2307
- /* @__PURE__ */ jsxRuntimeExports.jsx(Send, { size: 20, className: "mr-2" }),
1729
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactFormSend", className: "w-4 h-4 icon-gradient" }),
2308
1730
  t("form.submit") || "Gửi yêu cầu"
2309
1731
  ] })
2310
1732
  }
@@ -2319,7 +1741,7 @@ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
2319
1741
  if (!contactData.length) return null;
2320
1742
  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: [
2321
1743
  /* @__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: [
2322
- /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 22, className: "mr-2 text-brand-primary" }),
1744
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }),
2323
1745
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-main", children: sectionTitle })
2324
1746
  ] }) }),
2325
1747
  /* @__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: [
@@ -2332,7 +1754,7 @@ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
2332
1754
  display: "flex",
2333
1755
  alignItems: "center",
2334
1756
  justifyContent: "center"
2335
- }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 32, style: { color: "white" } }) }),
1757
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }) }),
2336
1758
  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-subtitle mb-2", children: contact.name }),
2337
1759
  /* @__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 })
2338
1760
  ] }),
@@ -2359,7 +1781,7 @@ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
2359
1781
  alignItems: "center",
2360
1782
  justifyContent: "center",
2361
1783
  marginRight: "0.75rem"
2362
- }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 18, style: { color: "white" } }) }),
1784
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoPhone", className: "w-4 h-4 icon-gradient" }) }),
2363
1785
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2364
1786
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contact.info.phone") || "Điện thoại" }),
2365
1787
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.phone })
@@ -2389,7 +1811,7 @@ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
2389
1811
  alignItems: "center",
2390
1812
  justifyContent: "center",
2391
1813
  marginRight: "0.75rem"
2392
- }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Mail, { size: 18, style: { color: "white" } }) }),
1814
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoEmail", className: "w-4 h-4 icon-gradient" }) }),
2393
1815
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2394
1816
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: "Email" }),
2395
1817
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.email })
@@ -2414,7 +1836,7 @@ const ContactInfoSection = ({ data, t, isDarkMode, section }) => {
2414
1836
  alignItems: "center",
2415
1837
  justifyContent: "center",
2416
1838
  marginRight: "0.75rem"
2417
- }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { size: 18, style: { color: "white" } }) }),
1839
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoClock", className: "w-4 h-4 icon-muted" }) }),
2418
1840
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2419
1841
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contact.info.workingHours") || "Giờ làm việc" }),
2420
1842
  /* @__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" })
@@ -2472,7 +1894,7 @@ const ContactListAutoSection = ({ data, t, isDarkMode, getContactList, section }
2472
1894
  }
2473
1895
  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: [
2474
1896
  /* @__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: [
2475
- /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 22, className: "mr-2 text-brand-primary" }),
1897
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }),
2476
1898
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-main", children: sectionTitle })
2477
1899
  ] }) }),
2478
1900
  /* @__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)) })
@@ -2489,7 +1911,7 @@ const ContactCard = ({ contact, t, isDarkMode }) => {
2489
1911
  display: "flex",
2490
1912
  alignItems: "center",
2491
1913
  justifyContent: "center"
2492
- }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 32, style: { color: "white" } }) }),
1914
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoUser", className: "w-4 h-4 icon-gradient" }) }),
2493
1915
  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "card-title text-subtitle mb-2", children: contact.name || t("contactList.card.noName") || "Không có tên" }),
2494
1916
  /* @__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ụ" })
2495
1917
  ] }),
@@ -2516,7 +1938,7 @@ const ContactCard = ({ contact, t, isDarkMode }) => {
2516
1938
  alignItems: "center",
2517
1939
  justifyContent: "center",
2518
1940
  marginRight: "0.75rem"
2519
- }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Phone, { size: 18, style: { color: "white" } }) }),
1941
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoPhone", className: "w-4 h-4 icon-gradient" }) }),
2520
1942
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2521
1943
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contactList.card.phone") || "Điện thoại" }),
2522
1944
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.phone })
@@ -2546,7 +1968,7 @@ const ContactCard = ({ contact, t, isDarkMode }) => {
2546
1968
  alignItems: "center",
2547
1969
  justifyContent: "center",
2548
1970
  marginRight: "0.75rem"
2549
- }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Mail, { size: 18, style: { color: "white" } }) }),
1971
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoEmail", className: "w-4 h-4 icon-gradient" }) }),
2550
1972
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2551
1973
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: "Email" }),
2552
1974
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-body text-main", style: { fontWeight: 600 }, children: contact.email })
@@ -2571,7 +1993,7 @@ const ContactCard = ({ contact, t, isDarkMode }) => {
2571
1993
  alignItems: "center",
2572
1994
  justifyContent: "center",
2573
1995
  marginRight: "0.75rem"
2574
- }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { size: 18, style: { color: "white" } }) }),
1996
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-contactInfoClock", className: "w-4 h-4 icon-muted" }) }),
2575
1997
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 1 }, children: [
2576
1998
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-small text-muted", style: { marginBottom: "0.25rem" }, children: t("contactList.card.workingHours") || "Giờ làm việc" }),
2577
1999
  /* @__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" })
@@ -2664,7 +2086,8 @@ const CustomerFeedbackAutoSection = ({ data, t, isDarkMode, loadCustomerFeedback
2664
2086
  {
2665
2087
  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 ",
2666
2088
  children: [
2667
- "💬 ",
2089
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-testimonials", folder: "TestimonialsSection", className: "w-4 h-4 icon-gradient" }),
2090
+ " ",
2668
2091
  sectionTitle
2669
2092
  ]
2670
2093
  }
@@ -2681,7 +2104,7 @@ const CustomerFeedbackAutoSection = ({ data, t, isDarkMode, loadCustomerFeedback
2681
2104
  '"'
2682
2105
  ] }),
2683
2106
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-4", children: [
2684
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: "👤" }),
2107
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-testimonialsUser", folder: "TestimonialsSection", className: "w-4 h-4 icon-gradient" }) }),
2685
2108
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-left", children: [
2686
2109
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-title text-base mb-1", children: currentFeedback.customerName }),
2687
2110
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "card-link text-sm", children: currentFeedback.customerTitle }),
@@ -2719,264 +2142,761 @@ const CustomerFeedbackAutoSection = ({ data, t, isDarkMode, loadCustomerFeedback
2719
2142
  opacity: 1;
2720
2143
  transform: translateY(0);
2721
2144
  }
2722
- }
2723
- ` })
2724
- ] });
2145
+ }
2146
+ ` })
2147
+ ] });
2148
+ };
2149
+ const ProductListSection = ({ data, t, isDarkMode, getProductList }) => {
2150
+ const [products, setProducts] = useState([]);
2151
+ const [loading, setLoading] = useState(true);
2152
+ const [error, setError] = useState(null);
2153
+ useEffect(() => {
2154
+ const fetchProducts = () => __async(null, null, function* () {
2155
+ try {
2156
+ setLoading(true);
2157
+ const result = yield getProductList();
2158
+ if (result.success) {
2159
+ setProducts(result.data || []);
2160
+ } else {
2161
+ setError(result.error || t("productList.errors.loadFailed"));
2162
+ }
2163
+ } catch (err) {
2164
+ console.error("Error fetching products:", err);
2165
+ setError(t("productList.errors.loadError"));
2166
+ } finally {
2167
+ setLoading(false);
2168
+ }
2169
+ });
2170
+ fetchProducts();
2171
+ }, [t]);
2172
+ if (loading) {
2173
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2174
+ /* @__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` }),
2175
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `mt-2.5 text-base ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productList.loading") })
2176
+ ] });
2177
+ }
2178
+ if (error) {
2179
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2180
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-red-500 text-5xl mb-4", children: "⚠️" }),
2181
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-red-500 text-base m-0", children: error })
2182
+ ] });
2183
+ }
2184
+ if (!products || products.length === 0) {
2185
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2186
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `text-5xl mb-4 ${isDarkMode ? "text-gray-400" : "text-gray-500"}`, children: "📦" }),
2187
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-base m-0 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productList.noProducts") })
2188
+ ] });
2189
+ }
2190
+ 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)) }) }) });
2191
+ };
2192
+ const ProductCard = ({ product, t, isDarkMode }) => {
2193
+ var _a, _b, _c, _d, _e, _f, _g;
2194
+ const [activeTab, setActiveTab] = useState("overview");
2195
+ const [isHovered, setIsHovered] = useState(false);
2196
+ 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";
2197
+ const tabs = [
2198
+ { id: "overview", label: t("productCard.tabs.overview"), count: null },
2199
+ { id: "features", label: t("productCard.tabs.features"), count: ((_e = product.features) == null ? void 0 : _e.length) || 0 },
2200
+ { id: "contacts", label: t("productCard.tabs.contacts"), count: ((_f = product.contacts) == null ? void 0 : _f.length) || 0 },
2201
+ { id: "downloads", label: t("productCard.tabs.downloads"), count: ((_g = product.productDownloads) == null ? void 0 : _g.length) || 0 }
2202
+ ];
2203
+ const renderOverview = () => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
2204
+ "div",
2205
+ {
2206
+ className: `text-sm leading-relaxed ${isDarkMode ? "text-gray-300" : "text-gray-700"}`,
2207
+ dangerouslySetInnerHTML: {
2208
+ __html: product.overviewContent || product.description || t("productCard.noOverview")
2209
+ }
2210
+ }
2211
+ ) });
2212
+ const renderFeatures = () => {
2213
+ const features = product.features || [];
2214
+ if (features.length === 0) {
2215
+ 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") }) });
2216
+ }
2217
+ const sortedFeatures = [...features].sort((a, b) => (a.order || 0) - (b.order || 0));
2218
+ 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(
2219
+ "div",
2220
+ {
2221
+ className: `p-4 rounded-lg border-l-4 border-blue-500 ${isDarkMode ? "bg-gray-700" : "bg-gray-100"}`,
2222
+ children: [
2223
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-2 text-sm font-bold ${isDarkMode ? "text-white" : "text-gray-900"}`, children: feature.title }),
2224
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs leading-relaxed ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: feature.description })
2225
+ ]
2226
+ },
2227
+ index2
2228
+ )) }) });
2229
+ };
2230
+ const renderContacts = () => {
2231
+ const contacts = product.contacts || [];
2232
+ if (contacts.length === 0) {
2233
+ 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") }) });
2234
+ }
2235
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-4", children: contacts.map((contact, index2) => {
2236
+ var _a2, _b2;
2237
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2238
+ "div",
2239
+ {
2240
+ className: `p-4 rounded-lg border ${isDarkMode ? "bg-gray-700 border-gray-600" : "bg-gray-100 border-gray-200"}`,
2241
+ children: [
2242
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-2", children: [
2243
+ /* @__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()) || "?" }) }),
2244
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2245
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-0.5 text-sm font-bold ${isDarkMode ? "text-white" : "text-gray-900"}`, children: contact.name }),
2246
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: contact.position })
2247
+ ] })
2248
+ ] }),
2249
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-1", children: [
2250
+ contact.phone && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
2251
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `text-sm ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "📞" }),
2252
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2253
+ "a",
2254
+ {
2255
+ href: `tel:${contact.phone}`,
2256
+ className: `text-xs no-underline hover:underline ${isDarkMode ? "text-blue-400" : "text-blue-500"}`,
2257
+ children: contact.phone
2258
+ }
2259
+ )
2260
+ ] }),
2261
+ contact.email && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
2262
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `text-sm ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "✉️" }),
2263
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2264
+ "a",
2265
+ {
2266
+ href: `mailto:${contact.email}`,
2267
+ className: `text-xs no-underline hover:underline ${isDarkMode ? "text-blue-400" : "text-blue-500"}`,
2268
+ children: contact.email
2269
+ }
2270
+ )
2271
+ ] })
2272
+ ] })
2273
+ ]
2274
+ },
2275
+ contact.id || index2
2276
+ );
2277
+ }) }) });
2278
+ };
2279
+ const renderDownloads = () => {
2280
+ const downloads = product.productDownloads || [];
2281
+ if (downloads.length === 0) {
2282
+ 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") }) });
2283
+ }
2284
+ const handleDownload = (fileUrl, title) => {
2285
+ try {
2286
+ const link = document.createElement("a");
2287
+ link.href = fileUrl;
2288
+ link.download = title || "download";
2289
+ link.target = "_blank";
2290
+ document.body.appendChild(link);
2291
+ link.click();
2292
+ document.body.removeChild(link);
2293
+ } catch (error) {
2294
+ console.error("Download error:", error);
2295
+ }
2296
+ };
2297
+ 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(
2298
+ "div",
2299
+ {
2300
+ onClick: () => handleDownload(download.fileUrl, download.title),
2301
+ 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"}`,
2302
+ children: [
2303
+ /* @__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: "📄" }) }),
2304
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
2305
+ /* @__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 }),
2306
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productCard.downloadClick") })
2307
+ ] }),
2308
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `flex-shrink-0 text-base ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "⬇️" })
2309
+ ]
2310
+ },
2311
+ index2
2312
+ )) }) });
2313
+ };
2314
+ const renderTabContent = () => {
2315
+ switch (activeTab) {
2316
+ case "overview":
2317
+ return renderOverview();
2318
+ case "features":
2319
+ return renderFeatures();
2320
+ case "contacts":
2321
+ return renderContacts();
2322
+ case "downloads":
2323
+ return renderDownloads();
2324
+ default:
2325
+ return null;
2326
+ }
2327
+ };
2328
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2329
+ "div",
2330
+ {
2331
+ className: `
2332
+ rounded-xl overflow-hidden cursor-pointer transition-all duration-300 border
2333
+ ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"}
2334
+ ${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"}`}
2335
+ `,
2336
+ onMouseEnter: () => setIsHovered(true),
2337
+ onMouseLeave: () => setIsHovered(false),
2338
+ children: [
2339
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
2340
+ "div",
2341
+ {
2342
+ className: `relative h-48 bg-cover bg-center ${isDarkMode ? "bg-gray-700" : "bg-gray-200"}`,
2343
+ style: {
2344
+ backgroundImage: `url(${mainImage})`
2345
+ },
2346
+ 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: [
2347
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "m-0 mb-2 text-lg font-bold", children: product.name }),
2348
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0 text-sm opacity-90", children: product.description })
2349
+ ] })
2350
+ }
2351
+ ),
2352
+ /* @__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(
2353
+ "button",
2354
+ {
2355
+ onClick: () => setActiveTab(tab.id),
2356
+ className: `
2357
+ 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
2358
+ ${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"}`}
2359
+ `,
2360
+ children: [
2361
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: tab.label }),
2362
+ tab.count !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `
2363
+ text-xs py-0.5 px-1.5 rounded-full min-w-[18px] text-center
2364
+ ${activeTab === tab.id ? "bg-white/20 text-white" : `${isDarkMode ? "bg-gray-600 text-gray-400" : "bg-gray-200 text-gray-600"}`}
2365
+ `, children: tab.count })
2366
+ ]
2367
+ },
2368
+ tab.id
2369
+ )) }) }),
2370
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-[200px] max-h-[300px] overflow-y-auto", children: renderTabContent() })
2371
+ ]
2372
+ }
2373
+ );
2725
2374
  };
2726
- const ProductListSection = ({ data, t, isDarkMode, getProductList }) => {
2727
- const [products, setProducts] = useState([]);
2728
- const [loading, setLoading] = useState(true);
2729
- const [error, setError] = useState(null);
2730
- useEffect(() => {
2731
- const fetchProducts = () => __async(null, null, function* () {
2732
- try {
2733
- setLoading(true);
2734
- const result = yield getProductList();
2735
- if (result.success) {
2736
- setProducts(result.data || []);
2737
- } else {
2738
- setError(result.error || t("productList.errors.loadFailed"));
2739
- }
2740
- } catch (err) {
2741
- console.error("Error fetching products:", err);
2742
- setError(t("productList.errors.loadError"));
2743
- } finally {
2744
- setLoading(false);
2745
- }
2746
- });
2747
- fetchProducts();
2748
- }, [t]);
2749
- if (loading) {
2750
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2751
- /* @__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` }),
2752
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `mt-2.5 text-base ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productList.loading") })
2753
- ] });
2754
- }
2755
- if (error) {
2756
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2757
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-red-500 text-5xl mb-4", children: "⚠️" }),
2758
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-red-500 text-base m-0", children: error })
2759
- ] });
2375
+ const TextWithTitleSection = ({ section, data, isDarkMode }) => {
2376
+ var _a;
2377
+ const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
2378
+ const title = ((_a = textItems[0]) == null ? void 0 : _a.value) || "";
2379
+ const descriptions = textItems.slice(1);
2380
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-6xl mx-auto", children: [
2381
+ title && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-title font-black mb-4 leading-tight text-left text-main", children: title }),
2382
+ descriptions.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
2383
+ "div",
2384
+ {
2385
+ className: `text-body leading-relaxed text-left font-normal text-muted ${index2 < descriptions.length - 1 ? "mb-4" : ""}`,
2386
+ children: item.value
2387
+ },
2388
+ item.id || index2
2389
+ ))
2390
+ ] }) });
2391
+ };
2392
+ const TextSection = ({ data, isDarkMode }) => {
2393
+ const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
2394
+ 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(
2395
+ "div",
2396
+ {
2397
+ className: "mb-5 text-subtitle font-black leading-snug text-left text-main",
2398
+ children: item.value
2399
+ },
2400
+ item.id || index2
2401
+ )) }) });
2402
+ };
2403
+ /**
2404
+ * @license lucide-react v0.536.0 - ISC
2405
+ *
2406
+ * This source code is licensed under the ISC license.
2407
+ * See the LICENSE file in the root directory of this source tree.
2408
+ */
2409
+ const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
2410
+ const toCamelCase = (string) => string.replace(
2411
+ /^([A-Z])|[\s-_]+(\w)/g,
2412
+ (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
2413
+ );
2414
+ const toPascalCase = (string) => {
2415
+ const camelCase = toCamelCase(string);
2416
+ return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
2417
+ };
2418
+ const mergeClasses = (...classes) => classes.filter((className, index2, array) => {
2419
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index2;
2420
+ }).join(" ").trim();
2421
+ const hasA11yProp = (props) => {
2422
+ for (const prop in props) {
2423
+ if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
2424
+ return true;
2425
+ }
2760
2426
  }
2761
- if (!products || products.length === 0) {
2762
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `py-16 px-5 text-center ${isDarkMode ? "bg-gray-900" : "bg-gray-50"}`, children: [
2763
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `text-5xl mb-4 ${isDarkMode ? "text-gray-400" : "text-gray-500"}`, children: "📦" }),
2764
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-base m-0 ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productList.noProducts") })
2765
- ] });
2427
+ };
2428
+ /**
2429
+ * @license lucide-react v0.536.0 - ISC
2430
+ *
2431
+ * This source code is licensed under the ISC license.
2432
+ * See the LICENSE file in the root directory of this source tree.
2433
+ */
2434
+ var defaultAttributes = {
2435
+ xmlns: "http://www.w3.org/2000/svg",
2436
+ width: 24,
2437
+ height: 24,
2438
+ viewBox: "0 0 24 24",
2439
+ fill: "none",
2440
+ stroke: "currentColor",
2441
+ strokeWidth: 2,
2442
+ strokeLinecap: "round",
2443
+ strokeLinejoin: "round"
2444
+ };
2445
+ /**
2446
+ * @license lucide-react v0.536.0 - ISC
2447
+ *
2448
+ * This source code is licensed under the ISC license.
2449
+ * See the LICENSE file in the root directory of this source tree.
2450
+ */
2451
+ const Icon = forwardRef(
2452
+ (_a, ref) => {
2453
+ var _b = _a, {
2454
+ color = "currentColor",
2455
+ size = 24,
2456
+ strokeWidth = 2,
2457
+ absoluteStrokeWidth,
2458
+ className = "",
2459
+ children,
2460
+ iconNode
2461
+ } = _b, rest = __objRest(_b, [
2462
+ "color",
2463
+ "size",
2464
+ "strokeWidth",
2465
+ "absoluteStrokeWidth",
2466
+ "className",
2467
+ "children",
2468
+ "iconNode"
2469
+ ]);
2470
+ return createElement(
2471
+ "svg",
2472
+ __spreadValues(__spreadValues(__spreadProps(__spreadValues({
2473
+ ref
2474
+ }, defaultAttributes), {
2475
+ width: size,
2476
+ height: size,
2477
+ stroke: color,
2478
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
2479
+ className: mergeClasses("lucide", className)
2480
+ }), !children && !hasA11yProp(rest) && { "aria-hidden": "true" }), rest),
2481
+ [
2482
+ ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
2483
+ ...Array.isArray(children) ? children : [children]
2484
+ ]
2485
+ );
2766
2486
  }
2767
- 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)) }) }) });
2487
+ );
2488
+ /**
2489
+ * @license lucide-react v0.536.0 - ISC
2490
+ *
2491
+ * This source code is licensed under the ISC license.
2492
+ * See the LICENSE file in the root directory of this source tree.
2493
+ */
2494
+ const createLucideIcon = (iconName, iconNode) => {
2495
+ const Component = forwardRef(
2496
+ (_a, ref) => {
2497
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2498
+ return createElement(Icon, __spreadValues({
2499
+ ref,
2500
+ iconNode,
2501
+ className: mergeClasses(
2502
+ `lucide-${toKebabCase(toPascalCase(iconName))}`,
2503
+ `lucide-${iconName}`,
2504
+ className
2505
+ )
2506
+ }, props));
2507
+ }
2508
+ );
2509
+ Component.displayName = toPascalCase(iconName);
2510
+ return Component;
2768
2511
  };
2769
- const ProductCard = ({ product, t, isDarkMode }) => {
2770
- var _a, _b, _c, _d, _e, _f, _g;
2771
- const [activeTab, setActiveTab] = useState("overview");
2772
- const [isHovered, setIsHovered] = useState(false);
2773
- 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";
2774
- const tabs = [
2775
- { id: "overview", label: t("productCard.tabs.overview"), count: null },
2776
- { id: "features", label: t("productCard.tabs.features"), count: ((_e = product.features) == null ? void 0 : _e.length) || 0 },
2777
- { id: "contacts", label: t("productCard.tabs.contacts"), count: ((_f = product.contacts) == null ? void 0 : _f.length) || 0 },
2778
- { id: "downloads", label: t("productCard.tabs.downloads"), count: ((_g = product.productDownloads) == null ? void 0 : _g.length) || 0 }
2779
- ];
2780
- const renderOverview = () => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
2781
- "div",
2512
+ /**
2513
+ * @license lucide-react v0.536.0 - ISC
2514
+ *
2515
+ * This source code is licensed under the ISC license.
2516
+ * See the LICENSE file in the root directory of this source tree.
2517
+ */
2518
+ const __iconNode$o = [
2519
+ ["path", { d: "M2 4v16", key: "vw9hq8" }],
2520
+ ["path", { d: "M2 8h18a2 2 0 0 1 2 2v10", key: "1dgv2r" }],
2521
+ ["path", { d: "M2 17h20", key: "18nfp3" }],
2522
+ ["path", { d: "M6 8v9", key: "1yriud" }]
2523
+ ];
2524
+ const Bed = createLucideIcon("bed", __iconNode$o);
2525
+ /**
2526
+ * @license lucide-react v0.536.0 - ISC
2527
+ *
2528
+ * This source code is licensed under the ISC license.
2529
+ * See the LICENSE file in the root directory of this source tree.
2530
+ */
2531
+ const __iconNode$n = [
2532
+ ["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
2533
+ ["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
2534
+ ];
2535
+ const Briefcase = createLucideIcon("briefcase", __iconNode$n);
2536
+ /**
2537
+ * @license lucide-react v0.536.0 - ISC
2538
+ *
2539
+ * This source code is licensed under the ISC license.
2540
+ * See the LICENSE file in the root directory of this source tree.
2541
+ */
2542
+ const __iconNode$m = [
2543
+ ["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
2544
+ ["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
2545
+ ["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
2546
+ ["path", { d: "M10 6h4", key: "1itunk" }],
2547
+ ["path", { d: "M10 10h4", key: "tcdvrf" }],
2548
+ ["path", { d: "M10 14h4", key: "kelpxr" }],
2549
+ ["path", { d: "M10 18h4", key: "1ulq68" }]
2550
+ ];
2551
+ const Building2 = createLucideIcon("building-2", __iconNode$m);
2552
+ /**
2553
+ * @license lucide-react v0.536.0 - ISC
2554
+ *
2555
+ * This source code is licensed under the ISC license.
2556
+ * See the LICENSE file in the root directory of this source tree.
2557
+ */
2558
+ const __iconNode$l = [
2559
+ ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }],
2560
+ ["path", { d: "M9 22v-4h6v4", key: "r93iot" }],
2561
+ ["path", { d: "M8 6h.01", key: "1dz90k" }],
2562
+ ["path", { d: "M16 6h.01", key: "1x0f13" }],
2563
+ ["path", { d: "M12 6h.01", key: "1vi96p" }],
2564
+ ["path", { d: "M12 10h.01", key: "1nrarc" }],
2565
+ ["path", { d: "M12 14h.01", key: "1etili" }],
2566
+ ["path", { d: "M16 10h.01", key: "1m94wz" }],
2567
+ ["path", { d: "M16 14h.01", key: "1gbofw" }],
2568
+ ["path", { d: "M8 10h.01", key: "19clt8" }],
2569
+ ["path", { d: "M8 14h.01", key: "6423bh" }]
2570
+ ];
2571
+ const Building = createLucideIcon("building", __iconNode$l);
2572
+ /**
2573
+ * @license lucide-react v0.536.0 - ISC
2574
+ *
2575
+ * This source code is licensed under the ISC license.
2576
+ * See the LICENSE file in the root directory of this source tree.
2577
+ */
2578
+ const __iconNode$k = [
2579
+ ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }],
2580
+ ["line", { x1: "8", x2: "16", y1: "6", y2: "6", key: "x4nwl0" }],
2581
+ ["line", { x1: "16", x2: "16", y1: "14", y2: "18", key: "wjye3r" }],
2582
+ ["path", { d: "M16 10h.01", key: "1m94wz" }],
2583
+ ["path", { d: "M12 10h.01", key: "1nrarc" }],
2584
+ ["path", { d: "M8 10h.01", key: "19clt8" }],
2585
+ ["path", { d: "M12 14h.01", key: "1etili" }],
2586
+ ["path", { d: "M8 14h.01", key: "6423bh" }],
2587
+ ["path", { d: "M12 18h.01", key: "mhygvu" }],
2588
+ ["path", { d: "M8 18h.01", key: "lrp35t" }]
2589
+ ];
2590
+ const Calculator = createLucideIcon("calculator", __iconNode$k);
2591
+ /**
2592
+ * @license lucide-react v0.536.0 - ISC
2593
+ *
2594
+ * This source code is licensed under the ISC license.
2595
+ * See the LICENSE file in the root directory of this source tree.
2596
+ */
2597
+ const __iconNode$j = [
2598
+ ["path", { d: "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "p7xjir" }]
2599
+ ];
2600
+ const Cloud = createLucideIcon("cloud", __iconNode$j);
2601
+ /**
2602
+ * @license lucide-react v0.536.0 - ISC
2603
+ *
2604
+ * This source code is licensed under the ISC license.
2605
+ * See the LICENSE file in the root directory of this source tree.
2606
+ */
2607
+ const __iconNode$i = [
2608
+ ["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
2609
+ ["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
2610
+ ["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
2611
+ ];
2612
+ const Database = createLucideIcon("database", __iconNode$i);
2613
+ /**
2614
+ * @license lucide-react v0.536.0 - ISC
2615
+ *
2616
+ * This source code is licensed under the ISC license.
2617
+ * See the LICENSE file in the root directory of this source tree.
2618
+ */
2619
+ const __iconNode$h = [
2620
+ ["path", { d: "M12 16h.01", key: "1drbdi" }],
2621
+ ["path", { d: "M16 16h.01", key: "1f9h7w" }],
2622
+ [
2623
+ "path",
2782
2624
  {
2783
- className: `text-sm leading-relaxed ${isDarkMode ? "text-gray-300" : "text-gray-700"}`,
2784
- dangerouslySetInnerHTML: {
2785
- __html: product.overviewContent || product.description || t("productCard.noOverview")
2786
- }
2625
+ 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",
2626
+ key: "1iv0i2"
2787
2627
  }
2788
- ) });
2789
- const renderFeatures = () => {
2790
- const features = product.features || [];
2791
- if (features.length === 0) {
2792
- 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") }) });
2628
+ ],
2629
+ ["path", { d: "M8 16h.01", key: "18s6g9" }]
2630
+ ];
2631
+ const Factory = createLucideIcon("factory", __iconNode$h);
2632
+ /**
2633
+ * @license lucide-react v0.536.0 - ISC
2634
+ *
2635
+ * This source code is licensed under the ISC license.
2636
+ * See the LICENSE file in the root directory of this source tree.
2637
+ */
2638
+ const __iconNode$g = [
2639
+ ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
2640
+ ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
2641
+ ["path", { d: "M10 9H8", key: "b1mrlr" }],
2642
+ ["path", { d: "M16 13H8", key: "t4e002" }],
2643
+ ["path", { d: "M16 17H8", key: "z1uh3a" }]
2644
+ ];
2645
+ const FileText = createLucideIcon("file-text", __iconNode$g);
2646
+ /**
2647
+ * @license lucide-react v0.536.0 - ISC
2648
+ *
2649
+ * This source code is licensed under the ISC license.
2650
+ * See the LICENSE file in the root directory of this source tree.
2651
+ */
2652
+ const __iconNode$f = [
2653
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
2654
+ ["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
2655
+ ["path", { d: "M2 12h20", key: "9i4pu4" }]
2656
+ ];
2657
+ const Globe = createLucideIcon("globe", __iconNode$f);
2658
+ /**
2659
+ * @license lucide-react v0.536.0 - ISC
2660
+ *
2661
+ * This source code is licensed under the ISC license.
2662
+ * See the LICENSE file in the root directory of this source tree.
2663
+ */
2664
+ const __iconNode$e = [
2665
+ [
2666
+ "path",
2667
+ {
2668
+ 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",
2669
+ key: "j76jl0"
2793
2670
  }
2794
- const sortedFeatures = [...features].sort((a, b) => (a.order || 0) - (b.order || 0));
2795
- 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(
2796
- "div",
2797
- {
2798
- className: `p-4 rounded-lg border-l-4 border-blue-500 ${isDarkMode ? "bg-gray-700" : "bg-gray-100"}`,
2799
- children: [
2800
- /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-2 text-sm font-bold ${isDarkMode ? "text-white" : "text-gray-900"}`, children: feature.title }),
2801
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs leading-relaxed ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: feature.description })
2802
- ]
2803
- },
2804
- index2
2805
- )) }) });
2806
- };
2807
- const renderContacts = () => {
2808
- const contacts = product.contacts || [];
2809
- if (contacts.length === 0) {
2810
- 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") }) });
2671
+ ],
2672
+ ["path", { d: "M22 10v6", key: "1lu8f3" }],
2673
+ ["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
2674
+ ];
2675
+ const GraduationCap = createLucideIcon("graduation-cap", __iconNode$e);
2676
+ /**
2677
+ * @license lucide-react v0.536.0 - ISC
2678
+ *
2679
+ * This source code is licensed under the ISC license.
2680
+ * See the LICENSE file in the root directory of this source tree.
2681
+ */
2682
+ const __iconNode$d = [
2683
+ [
2684
+ "path",
2685
+ {
2686
+ 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",
2687
+ key: "mvr1a0"
2811
2688
  }
2812
- return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-4", children: contacts.map((contact, index2) => {
2813
- var _a2, _b2;
2814
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2815
- "div",
2816
- {
2817
- className: `p-4 rounded-lg border ${isDarkMode ? "bg-gray-700 border-gray-600" : "bg-gray-100 border-gray-200"}`,
2818
- children: [
2819
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center mb-2", children: [
2820
- /* @__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()) || "?" }) }),
2821
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
2822
- /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: `m-0 mb-0.5 text-sm font-bold ${isDarkMode ? "text-white" : "text-gray-900"}`, children: contact.name }),
2823
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: contact.position })
2824
- ] })
2825
- ] }),
2826
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-1", children: [
2827
- contact.phone && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
2828
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `text-sm ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "📞" }),
2829
- /* @__PURE__ */ jsxRuntimeExports.jsx(
2830
- "a",
2831
- {
2832
- href: `tel:${contact.phone}`,
2833
- className: `text-xs no-underline hover:underline ${isDarkMode ? "text-blue-400" : "text-blue-500"}`,
2834
- children: contact.phone
2835
- }
2836
- )
2837
- ] }),
2838
- contact.email && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
2839
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `text-sm ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "✉️" }),
2840
- /* @__PURE__ */ jsxRuntimeExports.jsx(
2841
- "a",
2842
- {
2843
- href: `mailto:${contact.email}`,
2844
- className: `text-xs no-underline hover:underline ${isDarkMode ? "text-blue-400" : "text-blue-500"}`,
2845
- children: contact.email
2846
- }
2847
- )
2848
- ] })
2849
- ] })
2850
- ]
2851
- },
2852
- contact.id || index2
2853
- );
2854
- }) }) });
2855
- };
2856
- const renderDownloads = () => {
2857
- const downloads = product.productDownloads || [];
2858
- if (downloads.length === 0) {
2859
- 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") }) });
2689
+ ]
2690
+ ];
2691
+ const Heart = createLucideIcon("heart", __iconNode$d);
2692
+ /**
2693
+ * @license lucide-react v0.536.0 - ISC
2694
+ *
2695
+ * This source code is licensed under the ISC license.
2696
+ * See the LICENSE file in the root directory of this source tree.
2697
+ */
2698
+ const __iconNode$c = [
2699
+ ["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
2700
+ [
2701
+ "path",
2702
+ {
2703
+ 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",
2704
+ key: "1d0kgt"
2705
+ }
2706
+ ]
2707
+ ];
2708
+ const House = createLucideIcon("house", __iconNode$c);
2709
+ /**
2710
+ * @license lucide-react v0.536.0 - ISC
2711
+ *
2712
+ * This source code is licensed under the ISC license.
2713
+ * See the LICENSE file in the root directory of this source tree.
2714
+ */
2715
+ const __iconNode$b = [
2716
+ [
2717
+ "path",
2718
+ {
2719
+ 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",
2720
+ key: "q8bfy3"
2721
+ }
2722
+ ],
2723
+ ["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" }],
2724
+ ["path", { d: "M8 6v8", key: "15ugcq" }]
2725
+ ];
2726
+ const Megaphone = createLucideIcon("megaphone", __iconNode$b);
2727
+ /**
2728
+ * @license lucide-react v0.536.0 - ISC
2729
+ *
2730
+ * This source code is licensed under the ISC license.
2731
+ * See the LICENSE file in the root directory of this source tree.
2732
+ */
2733
+ const __iconNode$a = [
2734
+ [
2735
+ "path",
2736
+ {
2737
+ 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",
2738
+ key: "1a0edw"
2739
+ }
2740
+ ],
2741
+ ["path", { d: "M12 22V12", key: "d0xqtd" }],
2742
+ ["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }],
2743
+ ["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }]
2744
+ ];
2745
+ const Package = createLucideIcon("package", __iconNode$a);
2746
+ /**
2747
+ * @license lucide-react v0.536.0 - ISC
2748
+ *
2749
+ * This source code is licensed under the ISC license.
2750
+ * See the LICENSE file in the root directory of this source tree.
2751
+ */
2752
+ const __iconNode$9 = [
2753
+ [
2754
+ "path",
2755
+ {
2756
+ 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",
2757
+ key: "1v9wt8"
2860
2758
  }
2861
- const handleDownload = (fileUrl, title) => {
2862
- try {
2863
- const link = document.createElement("a");
2864
- link.href = fileUrl;
2865
- link.download = title || "download";
2866
- link.target = "_blank";
2867
- document.body.appendChild(link);
2868
- link.click();
2869
- document.body.removeChild(link);
2870
- } catch (error) {
2871
- console.error("Download error:", error);
2872
- }
2873
- };
2874
- 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(
2875
- "div",
2876
- {
2877
- onClick: () => handleDownload(download.fileUrl, download.title),
2878
- 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"}`,
2879
- children: [
2880
- /* @__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: "📄" }) }),
2881
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
2882
- /* @__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 }),
2883
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `m-0 text-xs ${isDarkMode ? "text-gray-400" : "text-gray-600"}`, children: t("productCard.downloadClick") })
2884
- ] }),
2885
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `flex-shrink-0 text-base ${isDarkMode ? "text-blue-400" : "text-blue-500"}`, children: "⬇️" })
2886
- ]
2887
- },
2888
- index2
2889
- )) }) });
2890
- };
2891
- const renderTabContent = () => {
2892
- switch (activeTab) {
2893
- case "overview":
2894
- return renderOverview();
2895
- case "features":
2896
- return renderFeatures();
2897
- case "contacts":
2898
- return renderContacts();
2899
- case "downloads":
2900
- return renderDownloads();
2901
- default:
2902
- return null;
2759
+ ]
2760
+ ];
2761
+ const Plane = createLucideIcon("plane", __iconNode$9);
2762
+ /**
2763
+ * @license lucide-react v0.536.0 - ISC
2764
+ *
2765
+ * This source code is licensed under the ISC license.
2766
+ * See the LICENSE file in the root directory of this source tree.
2767
+ */
2768
+ const __iconNode$8 = [
2769
+ [
2770
+ "path",
2771
+ {
2772
+ 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",
2773
+ key: "1i5ecw"
2903
2774
  }
2904
- };
2905
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
2906
- "div",
2775
+ ],
2776
+ ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
2777
+ ];
2778
+ const Settings = createLucideIcon("settings", __iconNode$8);
2779
+ /**
2780
+ * @license lucide-react v0.536.0 - ISC
2781
+ *
2782
+ * This source code is licensed under the ISC license.
2783
+ * See the LICENSE file in the root directory of this source tree.
2784
+ */
2785
+ const __iconNode$7 = [
2786
+ [
2787
+ "path",
2907
2788
  {
2908
- className: `
2909
- rounded-xl overflow-hidden cursor-pointer transition-all duration-300 border
2910
- ${isDarkMode ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"}
2911
- ${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"}`}
2912
- `,
2913
- onMouseEnter: () => setIsHovered(true),
2914
- onMouseLeave: () => setIsHovered(false),
2915
- children: [
2916
- /* @__PURE__ */ jsxRuntimeExports.jsx(
2917
- "div",
2918
- {
2919
- className: `relative h-48 bg-cover bg-center ${isDarkMode ? "bg-gray-700" : "bg-gray-200"}`,
2920
- style: {
2921
- backgroundImage: `url(${mainImage})`
2922
- },
2923
- 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: [
2924
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "m-0 mb-2 text-lg font-bold", children: product.name }),
2925
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "m-0 text-sm opacity-90", children: product.description })
2926
- ] })
2927
- }
2928
- ),
2929
- /* @__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(
2930
- "button",
2931
- {
2932
- onClick: () => setActiveTab(tab.id),
2933
- className: `
2934
- 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
2935
- ${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"}`}
2936
- `,
2937
- children: [
2938
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: tab.label }),
2939
- tab.count !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `
2940
- text-xs py-0.5 px-1.5 rounded-full min-w-[18px] text-center
2941
- ${activeTab === tab.id ? "bg-white/20 text-white" : `${isDarkMode ? "bg-gray-600 text-gray-400" : "bg-gray-200 text-gray-600"}`}
2942
- `, children: tab.count })
2943
- ]
2944
- },
2945
- tab.id
2946
- )) }) }),
2947
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-[200px] max-h-[300px] overflow-y-auto", children: renderTabContent() })
2948
- ]
2789
+ 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",
2790
+ key: "oel41y"
2949
2791
  }
2950
- );
2951
- };
2952
- const TextWithTitleSection = ({ section, data, isDarkMode }) => {
2953
- var _a;
2954
- const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
2955
- const title = ((_a = textItems[0]) == null ? void 0 : _a.value) || "";
2956
- const descriptions = textItems.slice(1);
2957
- return /* @__PURE__ */ jsxRuntimeExports.jsx(SectionWrapper, { isDarkMode, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-6xl mx-auto", children: [
2958
- title && /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-title font-black mb-4 leading-tight text-left text-main", children: title }),
2959
- descriptions.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
2960
- "div",
2961
- {
2962
- className: `text-body leading-relaxed text-left font-normal text-muted ${index2 < descriptions.length - 1 ? "mb-4" : ""}`,
2963
- children: item.value
2964
- },
2965
- item.id || index2
2966
- ))
2967
- ] }) });
2968
- };
2969
- const TextSection = ({ data, isDarkMode }) => {
2970
- const textItems = (data == null ? void 0 : data.sectionDataBindingItems) || [];
2971
- 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(
2972
- "div",
2792
+ ]
2793
+ ];
2794
+ const Shield = createLucideIcon("shield", __iconNode$7);
2795
+ /**
2796
+ * @license lucide-react v0.536.0 - ISC
2797
+ *
2798
+ * This source code is licensed under the ISC license.
2799
+ * See the LICENSE file in the root directory of this source tree.
2800
+ */
2801
+ const __iconNode$6 = [
2802
+ ["circle", { cx: "8", cy: "21", r: "1", key: "jimo8o" }],
2803
+ ["circle", { cx: "19", cy: "21", r: "1", key: "13723u" }],
2804
+ [
2805
+ "path",
2973
2806
  {
2974
- className: "mb-5 text-subtitle font-black leading-snug text-left text-main",
2975
- children: item.value
2976
- },
2977
- item.id || index2
2978
- )) }) });
2979
- };
2807
+ 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",
2808
+ key: "9zh506"
2809
+ }
2810
+ ]
2811
+ ];
2812
+ const ShoppingCart = createLucideIcon("shopping-cart", __iconNode$6);
2813
+ /**
2814
+ * @license lucide-react v0.536.0 - ISC
2815
+ *
2816
+ * This source code is licensed under the ISC license.
2817
+ * See the LICENSE file in the root directory of this source tree.
2818
+ */
2819
+ const __iconNode$5 = [
2820
+ ["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }],
2821
+ ["path", { d: "M12 18h.01", key: "mhygvu" }]
2822
+ ];
2823
+ const Smartphone = createLucideIcon("smartphone", __iconNode$5);
2824
+ /**
2825
+ * @license lucide-react v0.536.0 - ISC
2826
+ *
2827
+ * This source code is licensed under the ISC license.
2828
+ * See the LICENSE file in the root directory of this source tree.
2829
+ */
2830
+ const __iconNode$4 = [
2831
+ ["path", { d: "M16 7h6v6", key: "box55l" }],
2832
+ ["path", { d: "m22 7-8.5 8.5-5-5L2 17", key: "1t1m79" }]
2833
+ ];
2834
+ const TrendingUp = createLucideIcon("trending-up", __iconNode$4);
2835
+ /**
2836
+ * @license lucide-react v0.536.0 - ISC
2837
+ *
2838
+ * This source code is licensed under the ISC license.
2839
+ * See the LICENSE file in the root directory of this source tree.
2840
+ */
2841
+ const __iconNode$3 = [
2842
+ ["path", { d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2", key: "wrbu53" }],
2843
+ ["path", { d: "M15 18H9", key: "1lyqi6" }],
2844
+ [
2845
+ "path",
2846
+ {
2847
+ 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",
2848
+ key: "lysw3i"
2849
+ }
2850
+ ],
2851
+ ["circle", { cx: "17", cy: "18", r: "2", key: "332jqn" }],
2852
+ ["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }]
2853
+ ];
2854
+ const Truck = createLucideIcon("truck", __iconNode$3);
2855
+ /**
2856
+ * @license lucide-react v0.536.0 - ISC
2857
+ *
2858
+ * This source code is licensed under the ISC license.
2859
+ * See the LICENSE file in the root directory of this source tree.
2860
+ */
2861
+ const __iconNode$2 = [
2862
+ ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
2863
+ ["path", { d: "M16 3.128a4 4 0 0 1 0 7.744", key: "16gr8j" }],
2864
+ ["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" }],
2865
+ ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
2866
+ ];
2867
+ const Users = createLucideIcon("users", __iconNode$2);
2868
+ /**
2869
+ * @license lucide-react v0.536.0 - ISC
2870
+ *
2871
+ * This source code is licensed under the ISC license.
2872
+ * See the LICENSE file in the root directory of this source tree.
2873
+ */
2874
+ const __iconNode$1 = [
2875
+ [
2876
+ "path",
2877
+ {
2878
+ 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",
2879
+ key: "1ngwbx"
2880
+ }
2881
+ ]
2882
+ ];
2883
+ const Wrench = createLucideIcon("wrench", __iconNode$1);
2884
+ /**
2885
+ * @license lucide-react v0.536.0 - ISC
2886
+ *
2887
+ * This source code is licensed under the ISC license.
2888
+ * See the LICENSE file in the root directory of this source tree.
2889
+ */
2890
+ const __iconNode = [
2891
+ [
2892
+ "path",
2893
+ {
2894
+ 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",
2895
+ key: "1xq2db"
2896
+ }
2897
+ ]
2898
+ ];
2899
+ const Zap = createLucideIcon("zap", __iconNode);
2980
2900
  const DiagramSection = ({ data, t, isDarkMode }) => {
2981
2901
  var _a, _b;
2982
2902
  const [mounted, setMounted] = useState(false);
@@ -3603,7 +3523,7 @@ const MindMapNode = ({ id, icon: Icon2, text, color, position, delay = 0, onDrag
3603
3523
  style: {
3604
3524
  background: isHovered || isDragging ? colorStyle.gradientHover : colorStyle.gradient,
3605
3525
  borderColor: colorStyle.border + "80",
3606
- boxShadow: `0 10px 40px ${colorStyle.shadowColor}4D`,
3526
+ boxShadow: `0 10px 40px rgba(var(--brand-primary), 0.3)`,
3607
3527
  transform: isHovered || isDragging ? "scale(1.1)" : "scale(1)",
3608
3528
  filter: isHovered || isDragging ? "brightness(1.1)" : "brightness(1)",
3609
3529
  rotate: isDragging ? "2deg" : "0deg"
@@ -4057,8 +3977,7 @@ const DiagramSection2 = ({ data, t, isDarkMode }) => {
4057
3977
  {
4058
3978
  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",
4059
3979
  style: {
4060
- borderColor: "var(--brand-primary)",
4061
- borderOpacity: 0.5,
3980
+ borderColor: "rgba(var(--brand-primary-rgb), 0.5)",
4062
3981
  transform: isDragging ? "scale(1.1)" : "scale(1)",
4063
3982
  transition: "transform 0.3s ease"
4064
3983
  },
@@ -4133,7 +4052,14 @@ const FaqItem = ({ faq, index: index2, isActive, onToggle, t }) => {
4133
4052
  flex-shrink-0 w-10 h-10 rounded-full flex items-center justify-center
4134
4053
  transition-all duration-500 transform
4135
4054
  ${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"}
4136
- `, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: `w-5 h-5 transition-transform duration-500 ${isActive ? "rotate-180" : ""}` }) })
4055
+ `, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
4056
+ ThemeIcon,
4057
+ {
4058
+ name: "icon-faqChevronDown",
4059
+ folder: "common",
4060
+ className: `w-5 h-5 icon-muted transition-transform duration-500 ${isActive ? "rotate-180" : ""}`
4061
+ }
4062
+ ) })
4137
4063
  ]
4138
4064
  }
4139
4065
  ),
@@ -4212,15 +4138,7 @@ const FaqSection = ({ data, t, isDarkMode, section }) => {
4212
4138
  },
4213
4139
  onMouseEnter: (e) => e.currentTarget.style.transform = "scale(1.1)",
4214
4140
  onMouseLeave: (e) => e.currentTarget.style.transform = "scale(1)",
4215
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
4216
- "svg",
4217
- {
4218
- className: "w-6 h-6 text-white",
4219
- fill: "currentColor",
4220
- viewBox: "0 0 24 24",
4221
- 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" })
4222
- }
4223
- )
4141
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-faqQuestion", className: "w-4 h-4 icon-gradient" })
4224
4142
  }
4225
4143
  ) }),
4226
4144
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-12 animate-fade-in", children: [
@@ -4593,7 +4511,7 @@ const PageChildrenSelectSection = ({ data, isDarkMode, t, section, imageBaseUrl
4593
4511
  },
4594
4512
  children: [
4595
4513
  t("pageChildrenSelect.moreInsights"),
4596
- /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowRight, { size: 18 })
4514
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectArrowRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 icon-muted" })
4597
4515
  ]
4598
4516
  }
4599
4517
  ) })
@@ -4668,13 +4586,7 @@ const PageChildrenSelectSection1 = ({ data, isDarkMode, t, section, imageBaseUrl
4668
4586
  display: "flex",
4669
4587
  alignItems: "center",
4670
4588
  paddingLeft: "16px"
4671
- }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
4672
- ChevronRight,
4673
- {
4674
- size: 20,
4675
- className: "card-text"
4676
- }
4677
- ) })
4589
+ }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectChevronRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 card-text" }) })
4678
4590
  ]
4679
4591
  },
4680
4592
  page.id
@@ -4699,7 +4611,7 @@ const PageChildrenSelectSection1 = ({ data, isDarkMode, t, section, imageBaseUrl
4699
4611
  },
4700
4612
  children: [
4701
4613
  t("pageChildrenSelect.moreInsights"),
4702
- /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowRight, { size: 18 })
4614
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectArrowRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 icon-muted" })
4703
4615
  ]
4704
4616
  }
4705
4617
  ) })
@@ -4809,7 +4721,7 @@ const PageChildrenSelectSection2 = ({ data, isDarkMode, t, section, imageBaseUrl
4809
4721
  },
4810
4722
  children: [
4811
4723
  t("pageChildrenSelect.moreInsights"),
4812
- /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowRight, { size: 18 })
4724
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeIcon, { name: "icon-pageChildrenSelectArrowRight", folder: "PageChildrenSelectSection", className: "w-4 h-4 icon-muted" })
4813
4725
  ]
4814
4726
  }
4815
4727
  ) })