@aws505/sheetsite 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __esm = (fn, res) => function __init() {
7
9
  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
@@ -18,6 +20,14 @@ var __copyProps = (to, from, except, desc) => {
18
20
  }
19
21
  return to;
20
22
  };
23
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
24
+ // If the importer is in node compatibility mode or this is not an ESM
25
+ // file that has been converted to a CommonJS file using a Babel-
26
+ // compatible transform (i.e. "__esModule" has not been set), then set
27
+ // "default" to the CommonJS "module.exports" for node compatibility.
28
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
29
+ mod
30
+ ));
21
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
32
 
23
33
  // src/theme/colors.ts
@@ -4316,7 +4326,7 @@ function Services({
4316
4326
  4: "md:grid-cols-2 lg:grid-cols-4"
4317
4327
  };
4318
4328
  if (variant === "list") {
4319
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("section", { id, className: `py-16 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "container mx-auto px-4", children: [
4329
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("section", { id, className: `py-16 scroll-mt-20 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "container mx-auto px-4", children: [
4320
4330
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SectionHeader, { title, subtitle }),
4321
4331
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "max-w-3xl mx-auto divide-y divide-gray-200", children: displayedServices.map((service) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
4322
4332
  ServiceListItem,
@@ -4330,7 +4340,7 @@ function Services({
4330
4340
  ] }) });
4331
4341
  }
4332
4342
  if (variant === "minimal") {
4333
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("section", { id, className: `py-16 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "container mx-auto px-4", children: [
4343
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("section", { id, className: `py-16 scroll-mt-20 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "container mx-auto px-4", children: [
4334
4344
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SectionHeader, { title, subtitle }),
4335
4345
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: `grid gap-6 ${gridCols[columns]}`, children: displayedServices.map((service) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
4336
4346
  ServiceMinimalCard,
@@ -4342,7 +4352,7 @@ function Services({
4342
4352
  )) })
4343
4353
  ] }) });
4344
4354
  }
4345
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("section", { id, className: `py-16 bg-gray-50 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "container mx-auto px-4", children: [
4355
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("section", { id, className: `py-16 scroll-mt-20 bg-gray-50 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "container mx-auto px-4", children: [
4346
4356
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SectionHeader, { title, subtitle }),
4347
4357
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: `grid gap-6 ${gridCols[columns]}`, children: displayedServices.map((service) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
4348
4358
  ServiceCard,
@@ -4425,7 +4435,7 @@ function Testimonials({
4425
4435
  2: "md:grid-cols-2 max-w-4xl mx-auto",
4426
4436
  3: "md:grid-cols-2 lg:grid-cols-3"
4427
4437
  };
4428
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("section", { id, className: `py-16 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "container mx-auto px-4", children: [
4438
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("section", { id, className: `py-16 scroll-mt-20 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "container mx-auto px-4", children: [
4429
4439
  /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "text-center mb-12", children: [
4430
4440
  /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h2", { className: "text-3xl md:text-4xl font-bold text-gray-900 mb-4", children: title }),
4431
4441
  subtitle && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-lg text-gray-600 max-w-2xl mx-auto", children: subtitle })
@@ -4545,18 +4555,18 @@ function FAQ({
4545
4555
  }
4546
4556
  };
4547
4557
  if (variant === "cards") {
4548
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("section", { id, className: `py-16 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "container mx-auto px-4", children: [
4558
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("section", { id, className: `py-16 scroll-mt-20 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "container mx-auto px-4", children: [
4549
4559
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SectionHeader2, { title, subtitle }),
4550
4560
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "grid md:grid-cols-2 gap-6 max-w-4xl mx-auto", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(FAQCard, { item }, item.id || item.question)) })
4551
4561
  ] }) });
4552
4562
  }
4553
4563
  if (variant === "simple") {
4554
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("section", { id, className: `py-16 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "container mx-auto px-4", children: [
4564
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("section", { id, className: `py-16 scroll-mt-20 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "container mx-auto px-4", children: [
4555
4565
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SectionHeader2, { title, subtitle }),
4556
4566
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "max-w-3xl mx-auto space-y-8", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(FAQSimple, { item }, item.id || item.question)) })
4557
4567
  ] }) });
4558
4568
  }
4559
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("section", { id, className: `py-16 bg-gray-50 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "container mx-auto px-4", children: [
4569
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("section", { id, className: `py-16 scroll-mt-20 bg-gray-50 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "container mx-auto px-4", children: [
4560
4570
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SectionHeader2, { title, subtitle }),
4561
4571
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "max-w-3xl mx-auto", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4562
4572
  FAQAccordionItem,
@@ -4768,53 +4778,155 @@ function Gallery({
4768
4778
  columns = 3,
4769
4779
  variant = "grid",
4770
4780
  showCaptions = true,
4781
+ enableLightbox = true,
4771
4782
  limit,
4772
- className = ""
4783
+ className = "",
4784
+ id = "gallery"
4773
4785
  }) {
4774
4786
  const displayedItems = limit ? items.slice(0, limit) : items;
4775
4787
  const [failedImages, setFailedImages] = (0, import_react3.useState)(/* @__PURE__ */ new Set());
4776
- const handleImageError = (id) => {
4777
- setFailedImages((prev) => new Set(prev).add(id));
4788
+ const [lightboxIndex, setLightboxIndex] = (0, import_react3.useState)(null);
4789
+ const handleImageError = (id2) => {
4790
+ setFailedImages((prev) => new Set(prev).add(id2));
4778
4791
  };
4779
4792
  const gridCols = {
4780
4793
  2: "grid-cols-1 sm:grid-cols-2",
4781
4794
  3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
4782
4795
  4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4"
4783
4796
  };
4784
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("section", { className: `py-16 ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "container mx-auto px-4", children: [
4785
- (title || subtitle) && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "text-center mb-12", children: [
4786
- title && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h2", { className: "text-3xl md:text-4xl font-bold text-gray-900 mb-4", children: title }),
4787
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-lg text-gray-600 max-w-2xl mx-auto", children: subtitle })
4797
+ const openLightbox = (index) => {
4798
+ if (enableLightbox) {
4799
+ setLightboxIndex(index);
4800
+ }
4801
+ };
4802
+ const closeLightbox = () => setLightboxIndex(null);
4803
+ const goToPrevious = () => {
4804
+ if (lightboxIndex !== null) {
4805
+ setLightboxIndex(lightboxIndex === 0 ? displayedItems.length - 1 : lightboxIndex - 1);
4806
+ }
4807
+ };
4808
+ const goToNext = () => {
4809
+ if (lightboxIndex !== null) {
4810
+ setLightboxIndex(lightboxIndex === displayedItems.length - 1 ? 0 : lightboxIndex + 1);
4811
+ }
4812
+ };
4813
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("section", { id, className: `py-16 scroll-mt-20 ${className}`, children: [
4814
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "container mx-auto px-4", children: [
4815
+ (title || subtitle) && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "text-center mb-12", children: [
4816
+ title && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h2", { className: "text-3xl md:text-4xl font-bold text-gray-900 mb-4", children: title }),
4817
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-lg text-gray-600 max-w-2xl mx-auto", children: subtitle })
4818
+ ] }),
4819
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: `grid gap-4 ${gridCols[columns]}`, children: displayedItems.map((item, index) => {
4820
+ const itemId = item.id || item.imageUrl;
4821
+ const hasFailed = failedImages.has(itemId);
4822
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4823
+ "div",
4824
+ {
4825
+ className: `group relative aspect-square overflow-hidden rounded-lg bg-gray-100 ${enableLightbox ? "cursor-pointer" : ""}`,
4826
+ onClick: () => openLightbox(index),
4827
+ role: enableLightbox ? "button" : void 0,
4828
+ tabIndex: enableLightbox ? 0 : void 0,
4829
+ onKeyDown: enableLightbox ? (e) => e.key === "Enter" && openLightbox(index) : void 0,
4830
+ children: hasFailed ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "absolute inset-0 flex items-center justify-center text-gray-400", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: "Image unavailable" }) }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
4831
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4832
+ "img",
4833
+ {
4834
+ src: item.imageUrl,
4835
+ alt: item.alt || "",
4836
+ loading: "lazy",
4837
+ className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105",
4838
+ onError: () => handleImageError(itemId)
4839
+ }
4840
+ ),
4841
+ enableLightbox && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "absolute inset-0 bg-black/30 opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { className: "w-10 h-10 text-white", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM10 7v3m0 0v3m0-3h3m-3 0H7" }) }) }),
4842
+ showCaptions && item.caption && !enableLightbox && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "absolute bottom-0 left-0 right-0 p-4", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-white text-sm", children: item.caption }) }) })
4843
+ ] })
4844
+ },
4845
+ itemId
4846
+ );
4847
+ }) })
4788
4848
  ] }),
4789
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: `grid gap-4 ${gridCols[columns]}`, children: displayedItems.map((item) => {
4790
- const itemId = item.id || item.imageUrl;
4791
- const hasFailed = failedImages.has(itemId);
4792
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4793
- "div",
4794
- {
4795
- className: "group relative aspect-square overflow-hidden rounded-lg bg-gray-100",
4796
- children: hasFailed ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "absolute inset-0 flex items-center justify-center text-gray-400", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: "Image unavailable" }) }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
4797
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4798
- "img",
4799
- {
4800
- src: item.imageUrl,
4801
- alt: item.alt || "",
4802
- loading: "lazy",
4803
- className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105",
4804
- onError: () => handleImageError(itemId)
4805
- }
4806
- ),
4807
- showCaptions && item.caption && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "absolute bottom-0 left-0 right-0 p-4", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-white text-sm", children: item.caption }) }) })
4849
+ enableLightbox && lightboxIndex !== null && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
4850
+ "div",
4851
+ {
4852
+ className: "fixed inset-0 z-50 bg-black/90 flex items-center justify-center",
4853
+ onClick: closeLightbox,
4854
+ children: [
4855
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4856
+ "button",
4857
+ {
4858
+ onClick: closeLightbox,
4859
+ className: "absolute top-4 right-4 text-white hover:text-gray-300 transition-colors z-10",
4860
+ "aria-label": "Close lightbox",
4861
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { className: "w-8 h-8", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
4862
+ }
4863
+ ),
4864
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4865
+ "button",
4866
+ {
4867
+ onClick: (e) => {
4868
+ e.stopPropagation();
4869
+ goToPrevious();
4870
+ },
4871
+ className: "absolute left-4 top-1/2 -translate-y-1/2 text-white hover:text-gray-300 transition-colors z-10",
4872
+ "aria-label": "Previous image",
4873
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { className: "w-10 h-10", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) })
4874
+ }
4875
+ ),
4876
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4877
+ "button",
4878
+ {
4879
+ onClick: (e) => {
4880
+ e.stopPropagation();
4881
+ goToNext();
4882
+ },
4883
+ className: "absolute right-4 top-1/2 -translate-y-1/2 text-white hover:text-gray-300 transition-colors z-10",
4884
+ "aria-label": "Next image",
4885
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { className: "w-10 h-10", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
4886
+ }
4887
+ ),
4888
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
4889
+ "div",
4890
+ {
4891
+ className: "max-w-5xl max-h-[85vh] mx-4",
4892
+ onClick: (e) => e.stopPropagation(),
4893
+ children: [
4894
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4895
+ "img",
4896
+ {
4897
+ src: displayedItems[lightboxIndex].imageUrl,
4898
+ alt: displayedItems[lightboxIndex].alt || "",
4899
+ className: "max-w-full max-h-[85vh] object-contain"
4900
+ }
4901
+ ),
4902
+ showCaptions && displayedItems[lightboxIndex].caption && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-white text-center mt-4 text-lg", children: displayedItems[lightboxIndex].caption })
4903
+ ]
4904
+ }
4905
+ ),
4906
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "absolute bottom-4 left-1/2 -translate-x-1/2 text-white text-sm", children: [
4907
+ lightboxIndex + 1,
4908
+ " / ",
4909
+ displayedItems.length
4808
4910
  ] })
4809
- },
4810
- itemId
4811
- );
4812
- }) })
4813
- ] }) });
4911
+ ]
4912
+ }
4913
+ )
4914
+ ] });
4814
4915
  }
4815
4916
 
4816
- // src/components/ui/Button.tsx
4917
+ // src/components/sections/Menu.tsx
4918
+ var import_react4 = require("react");
4817
4919
  var import_jsx_runtime10 = require("react/jsx-runtime");
4920
+
4921
+ // src/components/sections/TrustBadges.tsx
4922
+ var import_jsx_runtime11 = require("react/jsx-runtime");
4923
+
4924
+ // src/components/sections/BeforeAfter.tsx
4925
+ var import_react5 = require("react");
4926
+ var import_jsx_runtime12 = require("react/jsx-runtime");
4927
+
4928
+ // src/components/ui/Button.tsx
4929
+ var import_jsx_runtime13 = require("react/jsx-runtime");
4818
4930
  function getButtonClasses(props) {
4819
4931
  const { variant = "primary", size = "md", fullWidth, disabled } = props;
4820
4932
  const baseClasses = [
@@ -4856,16 +4968,16 @@ function Button({
4856
4968
  ...props
4857
4969
  }) {
4858
4970
  const classes = getButtonClasses({ variant, size, fullWidth, disabled: disabled || loading });
4859
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4971
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4860
4972
  "button",
4861
4973
  {
4862
4974
  className: `${classes} ${className}`,
4863
4975
  disabled: disabled || loading,
4864
4976
  ...props,
4865
- children: loading ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(LoadingSpinner, { size }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
4866
- leftIcon && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "mr-2", children: leftIcon }),
4977
+ children: loading ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(LoadingSpinner, { size }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
4978
+ leftIcon && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "mr-2", children: leftIcon }),
4867
4979
  children,
4868
- rightIcon && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "ml-2", children: rightIcon })
4980
+ rightIcon && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "ml-2", children: rightIcon })
4869
4981
  ] })
4870
4982
  }
4871
4983
  );
@@ -4876,7 +4988,7 @@ function LoadingSpinner({ size }) {
4876
4988
  md: "w-5 h-5",
4877
4989
  lg: "w-6 h-6"
4878
4990
  };
4879
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
4991
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4880
4992
  "svg",
4881
4993
  {
4882
4994
  className: `animate-spin ${sizeClasses[size || "md"]}`,
@@ -4884,7 +4996,7 @@ function LoadingSpinner({ size }) {
4884
4996
  fill: "none",
4885
4997
  viewBox: "0 0 24 24",
4886
4998
  children: [
4887
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4999
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4888
5000
  "circle",
4889
5001
  {
4890
5002
  className: "opacity-25",
@@ -4895,7 +5007,7 @@ function LoadingSpinner({ size }) {
4895
5007
  strokeWidth: "4"
4896
5008
  }
4897
5009
  ),
4898
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
5010
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4899
5011
  "path",
4900
5012
  {
4901
5013
  className: "opacity-75",
@@ -4918,15 +5030,15 @@ function ButtonLink({
4918
5030
  ...props
4919
5031
  }) {
4920
5032
  const classes = getButtonClasses({ variant, size, fullWidth, disabled: false });
4921
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("a", { className: `${classes} ${className}`, ...props, children: [
4922
- leftIcon && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "mr-2", children: leftIcon }),
5033
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("a", { className: `${classes} ${className}`, ...props, children: [
5034
+ leftIcon && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "mr-2", children: leftIcon }),
4923
5035
  children,
4924
- rightIcon && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "ml-2", children: rightIcon })
5036
+ rightIcon && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "ml-2", children: rightIcon })
4925
5037
  ] });
4926
5038
  }
4927
5039
 
4928
5040
  // src/components/ui/Card.tsx
4929
- var import_jsx_runtime11 = require("react/jsx-runtime");
5041
+ var import_jsx_runtime14 = require("react/jsx-runtime");
4930
5042
  function getCardClasses(props) {
4931
5043
  const { variant = "default", padding = "md", hover = false } = props;
4932
5044
  const baseClasses = ["rounded-lg", "overflow-hidden"];
@@ -4959,7 +5071,7 @@ function Card({
4959
5071
  ...props
4960
5072
  }) {
4961
5073
  const classes = getCardClasses({ variant, padding, hover });
4962
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: `${classes} ${className}`, ...props, children });
5074
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: `${classes} ${className}`, ...props, children });
4963
5075
  }
4964
5076
  function CardHeader({
4965
5077
  title,
@@ -4969,13 +5081,13 @@ function CardHeader({
4969
5081
  className = "",
4970
5082
  ...props
4971
5083
  }) {
4972
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: `flex items-start justify-between ${className}`, ...props, children: [
4973
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { children: [
4974
- title && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h3", { className: "text-lg font-semibold text-gray-900", children: title }),
4975
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "mt-1 text-sm text-gray-500", children: subtitle }),
5084
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: `flex items-start justify-between ${className}`, ...props, children: [
5085
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { children: [
5086
+ title && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("h3", { className: "text-lg font-semibold text-gray-900", children: title }),
5087
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "mt-1 text-sm text-gray-500", children: subtitle }),
4976
5088
  children
4977
5089
  ] }),
4978
- action && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex-shrink-0 ml-4", children: action })
5090
+ action && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex-shrink-0 ml-4", children: action })
4979
5091
  ] });
4980
5092
  }
4981
5093
  function CardBody({
@@ -4983,14 +5095,14 @@ function CardBody({
4983
5095
  className = "",
4984
5096
  ...props
4985
5097
  }) {
4986
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: `mt-4 ${className}`, ...props, children });
5098
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: `mt-4 ${className}`, ...props, children });
4987
5099
  }
4988
5100
  function CardFooter({
4989
5101
  children,
4990
5102
  className = "",
4991
5103
  ...props
4992
5104
  }) {
4993
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: `mt-4 pt-4 border-t border-gray-100 ${className}`, ...props, children });
5105
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: `mt-4 pt-4 border-t border-gray-100 ${className}`, ...props, children });
4994
5106
  }
4995
5107
  function CardImage({
4996
5108
  aspectRatio = "video",
@@ -5004,7 +5116,7 @@ function CardImage({
5004
5116
  wide: "aspect-[2/1]",
5005
5117
  auto: ""
5006
5118
  };
5007
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: `-m-5 mb-4 ${aspectClasses[aspectRatio]} overflow-hidden`, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
5119
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: `-m-5 mb-4 ${aspectClasses[aspectRatio]} overflow-hidden`, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
5008
5120
  "img",
5009
5121
  {
5010
5122
  className: `w-full h-full object-cover ${className}`,
@@ -5014,6 +5126,10 @@ function CardImage({
5014
5126
  ) });
5015
5127
  }
5016
5128
 
5129
+ // src/components/ui/AnimatedSection.tsx
5130
+ var import_react6 = __toESM(require("react"));
5131
+ var import_jsx_runtime15 = require("react/jsx-runtime");
5132
+
5017
5133
  // src/seo/index.ts
5018
5134
  function generateMetadata(business, pageTitle, pageDescription, options = {}) {
5019
5135
  const { titleTemplate = "%s", baseUrl } = options;