@aws505/sheetsite 1.0.3 → 1.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.
@@ -472,6 +472,7 @@ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
472
472
  var defaultNavigation = [
473
473
  { label: "Home", href: "/" },
474
474
  { label: "Services", href: "/#services" },
475
+ { label: "Gallery", href: "/#gallery" },
475
476
  { label: "Hours", href: "/#hours" },
476
477
  { label: "Reviews", href: "/#reviews" },
477
478
  { label: "FAQ", href: "/#faq" }
@@ -730,6 +731,15 @@ function Footer({
730
731
 
731
732
  // src/components/sections/Hero.tsx
732
733
  import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
734
+ var defaultTrustSignals = {
735
+ salon: ["Expert Stylists", "Walk-Ins Welcome", "Quality Products"],
736
+ restaurant: ["Fresh Ingredients", "Family Recipes", "Friendly Service"],
737
+ repair: ["Certified Technicians", "Honest Estimates", "Quality Parts"],
738
+ tailor: ["Expert Craftsmanship", "Perfect Fit Guaranteed", "Quick Turnaround"],
739
+ professional: ["Quality Work", "Fair Prices", "Fast Service"],
740
+ retail: ["Quality Products", "Great Selection", "Friendly Service"],
741
+ default: ["Quality Work", "Fair Prices", "Fast Service"]
742
+ };
733
743
  function Hero({
734
744
  business,
735
745
  variant = "centered",
@@ -738,8 +748,11 @@ function Hero({
738
748
  todayHours,
739
749
  backgroundImage,
740
750
  overlay = true,
741
- className = ""
751
+ className = "",
752
+ trustSignals
742
753
  }) {
754
+ const businessType = business.type || "default";
755
+ const signals = trustSignals || defaultTrustSignals[businessType] || defaultTrustSignals.default;
743
756
  const bgStyle = backgroundImage ? { backgroundImage: `url(${backgroundImage})` } : void 0;
744
757
  const handleCallClick = () => {
745
758
  if (business.phone) {
@@ -819,8 +832,8 @@ function Hero({
819
832
  ) }),
820
833
  /* @__PURE__ */ jsx4("h1", { className: "text-4xl md:text-5xl lg:text-6xl font-bold text-white mb-4", children: business.name }),
821
834
  business.tagline && /* @__PURE__ */ jsx4("p", { className: "text-xl md:text-2xl text-white/90 mb-6", children: business.tagline }),
822
- business.aboutShort && /* @__PURE__ */ jsx4("p", { className: "text-lg text-white/80 mb-8 max-w-xl", children: business.aboutShort }),
823
- /* @__PURE__ */ jsx4("div", { className: "flex flex-wrap justify-center gap-4 mb-8", children: ["Quality Work", "Fair Prices", "Fast Service"].map((signal) => /* @__PURE__ */ jsxs4("div", { className: "flex items-center text-white/90", children: [
835
+ business.aboutShort && /* @__PURE__ */ jsx4("p", { className: `text-lg text-white/80 mb-8 max-w-xl ${variant === "centered" ? "mx-auto" : ""}`, children: business.aboutShort }),
836
+ /* @__PURE__ */ jsx4("div", { className: `flex flex-wrap gap-4 mb-8 ${variant === "centered" ? "justify-center" : ""}`, children: signals.map((signal) => /* @__PURE__ */ jsxs4("div", { className: "flex items-center text-white/90", children: [
824
837
  /* @__PURE__ */ jsx4("svg", { className: "w-5 h-5 text-accent-400 mr-2", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ jsx4(
825
838
  "path",
826
839
  {
@@ -2318,6 +2331,116 @@ function StaggerContainer({
2318
2331
  }
2319
2332
  )) });
2320
2333
  }
2334
+
2335
+ // src/components/ui/FloatingClaimBanner.tsx
2336
+ import { useState as useState7, useEffect as useEffect2 } from "react";
2337
+ import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
2338
+ function FloatingClaimBanner({
2339
+ contactEmail = "andrew@whotookmy.com",
2340
+ siteUrl,
2341
+ businessName,
2342
+ position = "bottom-right",
2343
+ showDelay = 3e3,
2344
+ dismissible = true,
2345
+ message = "Is this your business?",
2346
+ buttonText = "Claim This Site",
2347
+ className = ""
2348
+ }) {
2349
+ const [isVisible, setIsVisible] = useState7(false);
2350
+ const [isDismissed, setIsDismissed] = useState7(false);
2351
+ useEffect2(() => {
2352
+ const dismissed = sessionStorage.getItem("claimBannerDismissed");
2353
+ if (dismissed) {
2354
+ setIsDismissed(true);
2355
+ return;
2356
+ }
2357
+ const timer = setTimeout(() => {
2358
+ setIsVisible(true);
2359
+ }, showDelay);
2360
+ return () => clearTimeout(timer);
2361
+ }, [showDelay]);
2362
+ const handleDismiss = () => {
2363
+ setIsVisible(false);
2364
+ setIsDismissed(true);
2365
+ sessionStorage.setItem("claimBannerDismissed", "true");
2366
+ };
2367
+ const handleClaim = () => {
2368
+ const url = siteUrl || (typeof window !== "undefined" ? window.location.hostname : "unknown");
2369
+ const subject = encodeURIComponent(`Claim my site - ${url}`);
2370
+ const body = encodeURIComponent(
2371
+ `Hi,
2372
+
2373
+ I am the owner of ${businessName || "this business"} and I would like to claim my website at ${url}.
2374
+
2375
+ Please contact me to discuss.
2376
+
2377
+ Thank you!`
2378
+ );
2379
+ window.location.href = `mailto:${contactEmail}?subject=${subject}&body=${body}`;
2380
+ };
2381
+ if (isDismissed || !isVisible) {
2382
+ return null;
2383
+ }
2384
+ const positionClasses = {
2385
+ "bottom-right": "bottom-4 right-4",
2386
+ "bottom-left": "bottom-4 left-4",
2387
+ "bottom-center": "bottom-4 left-1/2 -translate-x-1/2"
2388
+ };
2389
+ return /* @__PURE__ */ jsxs15(
2390
+ "div",
2391
+ {
2392
+ className: `
2393
+ fixed z-50 ${positionClasses[position]}
2394
+ animate-slide-up
2395
+ ${className}
2396
+ `,
2397
+ style: {
2398
+ animation: "slideUp 0.5s ease-out"
2399
+ },
2400
+ children: [
2401
+ /* @__PURE__ */ jsx16("div", { className: "bg-white rounded-lg shadow-2xl border border-gray-200 p-4 max-w-sm", children: /* @__PURE__ */ jsxs15("div", { className: "flex items-start gap-3", children: [
2402
+ /* @__PURE__ */ jsx16("div", { className: "flex-shrink-0 w-10 h-10 bg-primary-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx16("svg", { className: "w-5 h-5 text-primary-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx16("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }) }),
2403
+ /* @__PURE__ */ jsxs15("div", { className: "flex-1 min-w-0", children: [
2404
+ /* @__PURE__ */ jsx16("p", { className: "text-sm font-medium text-gray-900", children: message }),
2405
+ /* @__PURE__ */ jsx16("p", { className: "text-xs text-gray-500 mt-1", children: "We built this site for you. Claim it today!" }),
2406
+ /* @__PURE__ */ jsxs15(
2407
+ "button",
2408
+ {
2409
+ onClick: handleClaim,
2410
+ className: "mt-3 w-full inline-flex items-center justify-center px-4 py-2 bg-primary-600 text-white text-sm font-medium rounded-lg hover:bg-primary-700 transition-colors",
2411
+ children: [
2412
+ /* @__PURE__ */ jsx16("svg", { className: "w-4 h-4 mr-2", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx16("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" }) }),
2413
+ buttonText
2414
+ ]
2415
+ }
2416
+ )
2417
+ ] }),
2418
+ dismissible && /* @__PURE__ */ jsx16(
2419
+ "button",
2420
+ {
2421
+ onClick: handleDismiss,
2422
+ className: "flex-shrink-0 text-gray-400 hover:text-gray-600 transition-colors",
2423
+ "aria-label": "Dismiss",
2424
+ children: /* @__PURE__ */ jsx16("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx16("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
2425
+ }
2426
+ )
2427
+ ] }) }),
2428
+ /* @__PURE__ */ jsx16("style", { jsx: true, children: `
2429
+ @keyframes slideUp {
2430
+ from {
2431
+ opacity: 0;
2432
+ transform: translateY(20px);
2433
+ }
2434
+ to {
2435
+ opacity: 1;
2436
+ transform: translateY(0);
2437
+ }
2438
+ }
2439
+ ` })
2440
+ ]
2441
+ }
2442
+ );
2443
+ }
2321
2444
  export {
2322
2445
  AnimatedSection,
2323
2446
  BeforeAfter,
@@ -2336,6 +2459,7 @@ export {
2336
2459
  ClockIcon,
2337
2460
  FAQ,
2338
2461
  FacebookIcon,
2462
+ FloatingClaimBanner,
2339
2463
  Footer,
2340
2464
  Gallery,
2341
2465
  Header,