@opensite/ui 0.1.2 → 0.1.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.
Files changed (105) hide show
  1. package/dist/components.cjs +1511 -3
  2. package/dist/components.cjs.map +1 -1
  3. package/dist/components.d.cts +13 -0
  4. package/dist/components.d.ts +13 -0
  5. package/dist/components.js +1499 -4
  6. package/dist/components.js.map +1 -1
  7. package/dist/footer-animated-social.cjs +272 -0
  8. package/dist/footer-animated-social.cjs.map +1 -0
  9. package/dist/footer-animated-social.d.cts +41 -0
  10. package/dist/footer-animated-social.d.ts +41 -0
  11. package/dist/footer-animated-social.js +250 -0
  12. package/dist/footer-animated-social.js.map +1 -0
  13. package/dist/footer-background-card.cjs +149 -0
  14. package/dist/footer-background-card.cjs.map +1 -0
  15. package/dist/footer-background-card.d.cts +74 -0
  16. package/dist/footer-background-card.d.ts +74 -0
  17. package/dist/footer-background-card.js +147 -0
  18. package/dist/footer-background-card.js.map +1 -0
  19. package/dist/footer-brand-description.cjs +244 -0
  20. package/dist/footer-brand-description.cjs.map +1 -0
  21. package/dist/footer-brand-description.d.cts +65 -0
  22. package/dist/footer-brand-description.d.ts +65 -0
  23. package/dist/footer-brand-description.js +222 -0
  24. package/dist/footer-brand-description.js.map +1 -0
  25. package/dist/footer-contact-card.cjs +238 -0
  26. package/dist/footer-contact-card.cjs.map +1 -0
  27. package/dist/footer-contact-card.d.cts +65 -0
  28. package/dist/footer-contact-card.d.ts +65 -0
  29. package/dist/footer-contact-card.js +216 -0
  30. package/dist/footer-contact-card.js.map +1 -0
  31. package/dist/footer-cta-banner.cjs +282 -0
  32. package/dist/footer-cta-banner.cjs.map +1 -0
  33. package/dist/footer-cta-banner.d.cts +77 -0
  34. package/dist/footer-cta-banner.d.ts +77 -0
  35. package/dist/footer-cta-banner.js +260 -0
  36. package/dist/footer-cta-banner.js.map +1 -0
  37. package/dist/footer-cta-social.cjs +221 -0
  38. package/dist/footer-cta-social.cjs.map +1 -0
  39. package/dist/footer-cta-social.d.cts +45 -0
  40. package/dist/footer-cta-social.d.ts +45 -0
  41. package/dist/footer-cta-social.js +199 -0
  42. package/dist/footer-cta-social.js.map +1 -0
  43. package/dist/footer-links-grid.cjs +119 -0
  44. package/dist/footer-links-grid.cjs.map +1 -0
  45. package/dist/footer-links-grid.d.cts +54 -0
  46. package/dist/footer-links-grid.d.ts +54 -0
  47. package/dist/footer-links-grid.js +117 -0
  48. package/dist/footer-links-grid.js.map +1 -0
  49. package/dist/footer-nav-social.cjs +273 -0
  50. package/dist/footer-nav-social.cjs.map +1 -0
  51. package/dist/footer-nav-social.d.cts +72 -0
  52. package/dist/footer-nav-social.d.ts +72 -0
  53. package/dist/footer-nav-social.js +251 -0
  54. package/dist/footer-nav-social.js.map +1 -0
  55. package/dist/footer-newsletter-grid.cjs +271 -0
  56. package/dist/footer-newsletter-grid.cjs.map +1 -0
  57. package/dist/footer-newsletter-grid.d.cts +74 -0
  58. package/dist/footer-newsletter-grid.d.ts +74 -0
  59. package/dist/footer-newsletter-grid.js +249 -0
  60. package/dist/footer-newsletter-grid.js.map +1 -0
  61. package/dist/footer-newsletter-minimal.cjs +271 -0
  62. package/dist/footer-newsletter-minimal.cjs.map +1 -0
  63. package/dist/footer-newsletter-minimal.d.cts +57 -0
  64. package/dist/footer-newsletter-minimal.d.ts +57 -0
  65. package/dist/footer-newsletter-minimal.js +249 -0
  66. package/dist/footer-newsletter-minimal.js.map +1 -0
  67. package/dist/footer-simple-centered.cjs +101 -0
  68. package/dist/footer-simple-centered.cjs.map +1 -0
  69. package/dist/footer-simple-centered.d.cts +52 -0
  70. package/dist/footer-simple-centered.d.ts +52 -0
  71. package/dist/footer-simple-centered.js +99 -0
  72. package/dist/footer-simple-centered.js.map +1 -0
  73. package/dist/footer-social-apps.cjs +247 -0
  74. package/dist/footer-social-apps.cjs.map +1 -0
  75. package/dist/footer-social-apps.d.cts +75 -0
  76. package/dist/footer-social-apps.d.ts +75 -0
  77. package/dist/footer-social-apps.js +225 -0
  78. package/dist/footer-social-apps.js.map +1 -0
  79. package/dist/footer-social-newsletter.cjs +267 -0
  80. package/dist/footer-social-newsletter.cjs.map +1 -0
  81. package/dist/footer-social-newsletter.d.cts +68 -0
  82. package/dist/footer-social-newsletter.d.ts +68 -0
  83. package/dist/footer-social-newsletter.js +245 -0
  84. package/dist/footer-social-newsletter.js.map +1 -0
  85. package/dist/index.cjs +1511 -3
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.d.cts +13 -0
  88. package/dist/index.d.ts +13 -0
  89. package/dist/index.js +1499 -4
  90. package/dist/index.js.map +1 -1
  91. package/dist/pressable.cjs +10 -3
  92. package/dist/pressable.cjs.map +1 -1
  93. package/dist/pressable.js +10 -3
  94. package/dist/pressable.js.map +1 -1
  95. package/dist/registry.cjs +1971 -1
  96. package/dist/registry.cjs.map +1 -1
  97. package/dist/registry.js +1971 -1
  98. package/dist/registry.js.map +1 -1
  99. package/dist/team-media-showcase.cjs +182 -0
  100. package/dist/team-media-showcase.cjs.map +1 -0
  101. package/dist/team-media-showcase.d.cts +145 -0
  102. package/dist/team-media-showcase.d.ts +145 -0
  103. package/dist/team-media-showcase.js +160 -0
  104. package/dist/team-media-showcase.js.map +1 -0
  105. package/package.json +71 -1
package/dist/registry.cjs CHANGED
@@ -8,6 +8,7 @@ var img = require('@page-speed/img');
8
8
  var useEmblaCarousel = require('embla-carousel-react');
9
9
  var reactSlot = require('@radix-ui/react-slot');
10
10
  var classVarianceAuthority = require('class-variance-authority');
11
+ var framerMotion = require('framer-motion');
11
12
 
12
13
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
14
 
@@ -763,6 +764,1559 @@ function FeatureShowcase({
763
764
  ] })
764
765
  ] });
765
766
  }
767
+ var TeamMemberBackgroundImageCard = React4__namespace.forwardRef(({ className, imageUrl, imageAlt, children, optixFlowConfig, ...props }, ref) => {
768
+ return /* @__PURE__ */ jsxRuntime.jsxs(
769
+ "div",
770
+ {
771
+ ref,
772
+ className: cn(
773
+ "group h-[400px] relative w-full max-w-sm overflow-hidden rounded-xl border border-border bg-card shadow-lg",
774
+ "transition-all duration-300 ease-in-out",
775
+ className
776
+ ),
777
+ ...props,
778
+ children: [
779
+ /* @__PURE__ */ jsxRuntime.jsx(
780
+ img.Img,
781
+ {
782
+ src: imageUrl,
783
+ alt: imageAlt,
784
+ className: "absolute inset-0 h-full w-full object-cover transition-transform duration-500 ease-in-out group-hover:scale-110",
785
+ optixFlowConfig
786
+ }
787
+ ),
788
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/80 via-black/20 to-transparent" }),
789
+ children
790
+ ]
791
+ }
792
+ );
793
+ });
794
+ TeamMemberBackgroundImageCard.displayName = "TeamMemberBackgroundImageCard";
795
+ function TeamMediaShowcase({
796
+ items,
797
+ children,
798
+ listEyebrow,
799
+ background = "white",
800
+ verticalMargin = "lg",
801
+ gridClassName = "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
802
+ className,
803
+ optixFlowConfig
804
+ }) {
805
+ return /* @__PURE__ */ jsxRuntime.jsx(Section, { background, spacing: verticalMargin, className, children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { children: [
806
+ children,
807
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-12", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
808
+ listEyebrow && typeof listEyebrow === "string" && listEyebrow.trim() !== "" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-md pt-8 uppercase text-dark-charcoal/70 tracking-[0.2em] font-semibold", children: listEyebrow }),
809
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: gridClassName, children: items.map((member, idx) => {
810
+ const imageAlt = member.imageAlt || (member.name && typeof member.name === "string" && member.name.trim() !== "" ? member.name : `member-${idx}`);
811
+ return /* @__PURE__ */ jsxRuntime.jsx(
812
+ TeamMemberBackgroundImageCard,
813
+ {
814
+ imageUrl: member.imageSrc,
815
+ imageAlt,
816
+ className: member.cardClassName,
817
+ optixFlowConfig,
818
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex h-full flex-col justify-end p-6 text-card-foreground", children: [
819
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4 transition-transform duration-500 ease-in-out group-hover:-translate-y-12", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
820
+ member.name && typeof member.name === "string" && member.name.trim() !== "" && /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-3xl font-bold text-white", children: member.name }),
821
+ member.role && typeof member.role === "string" && member.role.trim() !== "" && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-white/80", children: member.role })
822
+ ] }) }),
823
+ member.action ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -bottom-20 left-0 w-full pt-2 p-6 opacity-0 transition-all duration-500 ease-in-out group-hover:bottom-0 group-hover:opacity-100", children: member.action }) : null
824
+ ] })
825
+ },
826
+ idx
827
+ );
828
+ }) })
829
+ ] }) })
830
+ ] }) });
831
+ }
832
+ var defaultMenuItems = [
833
+ {
834
+ title: "Product",
835
+ links: [
836
+ { text: "Overview", url: "#" },
837
+ { text: "Pricing", url: "#" },
838
+ { text: "Marketplace", url: "#" },
839
+ { text: "Features", url: "#" },
840
+ { text: "Integrations", url: "#" }
841
+ ]
842
+ },
843
+ {
844
+ title: "Company",
845
+ links: [
846
+ { text: "About", url: "#" },
847
+ { text: "Team", url: "#" },
848
+ { text: "Blog", url: "#" },
849
+ { text: "Careers", url: "#" },
850
+ { text: "Contact", url: "#" }
851
+ ]
852
+ },
853
+ {
854
+ title: "Resources",
855
+ links: [
856
+ { text: "Help", url: "#" },
857
+ { text: "Sales", url: "#" },
858
+ { text: "Advertise", url: "#" }
859
+ ]
860
+ },
861
+ {
862
+ title: "Social",
863
+ links: [
864
+ { text: "Twitter", url: "#" },
865
+ { text: "Instagram", url: "#" },
866
+ { text: "LinkedIn", url: "#" }
867
+ ]
868
+ }
869
+ ];
870
+ var defaultBottomLinks = [
871
+ { text: "Terms and Conditions", url: "#" },
872
+ { text: "Privacy Policy", url: "#" }
873
+ ];
874
+ function FooterLinksGrid({
875
+ logo = {
876
+ src: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/os-suircle-black-white.png",
877
+ alt: "Opensite AI",
878
+ title: "Opensite AI",
879
+ url: "https://opensite.ai"
880
+ },
881
+ className,
882
+ tagline = "Components made easy.",
883
+ menuItems = defaultMenuItems,
884
+ copyright = `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} Opensite AI. All rights reserved.`,
885
+ bottomLinks = defaultBottomLinks,
886
+ optixFlowConfig
887
+ }) {
888
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container", children: /* @__PURE__ */ jsxRuntime.jsxs("footer", { children: [
889
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-8 lg:grid-cols-6", children: [
890
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-2 mb-8 lg:mb-0", children: [
891
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 lg:justify-start", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: logo.url, className: "flex items-center gap-2", children: [
892
+ /* @__PURE__ */ jsxRuntime.jsx(
893
+ img.Img,
894
+ {
895
+ src: logo.src,
896
+ alt: logo.alt,
897
+ className: "h-10 dark:invert",
898
+ optixFlowConfig
899
+ }
900
+ ),
901
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-semibold", children: logo.title })
902
+ ] }) }),
903
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 font-bold", children: tagline })
904
+ ] }),
905
+ menuItems.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
906
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 font-bold", children: section.title }),
907
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-4 text-muted-foreground", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx(
908
+ "li",
909
+ {
910
+ className: "font-medium hover:text-primary",
911
+ children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.url, children: link.text })
912
+ },
913
+ linkIdx
914
+ )) })
915
+ ] }, sectionIdx))
916
+ ] }),
917
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-24 flex flex-col justify-between gap-4 border-t pt-8 text-sm font-medium text-muted-foreground md:flex-row md:items-center", children: [
918
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 md:flex-row md:items-center md:gap-4", children: [
919
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: copyright }),
920
+ /* @__PURE__ */ jsxRuntime.jsx(
921
+ "a",
922
+ {
923
+ href: "https://opensite.ai",
924
+ className: "hover:text-primary",
925
+ target: "_blank",
926
+ rel: "noopener noreferrer",
927
+ children: "AI Website and Automation Platform by Opensite"
928
+ }
929
+ )
930
+ ] }),
931
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex gap-4", children: bottomLinks.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "underline hover:text-primary", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.url, children: link.text }) }, linkIdx)) })
932
+ ] })
933
+ ] }) }) });
934
+ }
935
+ var defaultSections = [
936
+ {
937
+ title: "Product",
938
+ links: [
939
+ { name: "Overview", href: "#" },
940
+ { name: "Pricing", href: "#" },
941
+ { name: "Marketplace", href: "#" },
942
+ { name: "Features", href: "#" },
943
+ { name: "Integrations", href: "#" }
944
+ ]
945
+ },
946
+ {
947
+ title: "Company",
948
+ links: [
949
+ { name: "About", href: "#" },
950
+ { name: "Team", href: "#" },
951
+ { name: "Blog", href: "#" },
952
+ { name: "Careers", href: "#" },
953
+ { name: "Contact", href: "#" }
954
+ ]
955
+ },
956
+ {
957
+ title: "Resources",
958
+ links: [
959
+ { name: "Help", href: "#" },
960
+ { name: "Sales", href: "#" },
961
+ { name: "Advertise", href: "#" }
962
+ ]
963
+ }
964
+ ];
965
+ var defaultSocialLinks = [
966
+ { icon: "simple-icons/discord", href: "#", label: "Discord" },
967
+ { icon: "simple-icons/reddit", href: "#", label: "Reddit" },
968
+ { icon: "simple-icons/x", href: "#", label: "X (Twitter)" },
969
+ { icon: "simple-icons/telegram", href: "#", label: "Telegram" },
970
+ { icon: "simple-icons/linkedin", href: "#", label: "LinkedIn" }
971
+ ];
972
+ function FooterSocialNewsletter({
973
+ logo = {
974
+ url: "https://opensite.ai",
975
+ src: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/os-suircle-black-white.png",
976
+ alt: "Opensite AI",
977
+ title: "Opensite AI"
978
+ },
979
+ className,
980
+ sections = defaultSections,
981
+ socialLinks = defaultSocialLinks,
982
+ newsletterLabel = "Subscribe to our newsletter",
983
+ newsletterPlaceholder = "Email",
984
+ newsletterButtonText = "Subscribe",
985
+ privacyLinkText = "Privacy Policy",
986
+ privacyLinkUrl = "#",
987
+ copyright = `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} Opensite AI. All rights reserved.`,
988
+ optixFlowConfig
989
+ }) {
990
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container", children: /* @__PURE__ */ jsxRuntime.jsxs("footer", { children: [
991
+ /* @__PURE__ */ jsxRuntime.jsxs("a", { href: logo.url, className: "flex items-center gap-2", children: [
992
+ /* @__PURE__ */ jsxRuntime.jsx(
993
+ img.Img,
994
+ {
995
+ src: logo.src,
996
+ alt: logo.alt,
997
+ className: "h-10",
998
+ optixFlowConfig
999
+ }
1000
+ ),
1001
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-semibold", children: logo.title })
1002
+ ] }),
1003
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-14 grid gap-8 md:grid-cols-2 lg:grid-cols-5 xl:grid-cols-4", children: [
1004
+ sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1005
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 font-bold", children: section.title }),
1006
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-4 text-muted-foreground", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx(
1007
+ "li",
1008
+ {
1009
+ className: "font-medium hover:text-primary",
1010
+ children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, children: link.name })
1011
+ },
1012
+ linkIdx
1013
+ )) })
1014
+ ] }, sectionIdx)),
1015
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "lg:col-span-2 xl:col-span-1", children: [
1016
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mb-10 flex items-center gap-2 text-muted-foreground", children: socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: social.href, "aria-label": social.label, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-12 items-center justify-center rounded-full bg-muted transition-colors hover:text-primary", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: social.icon, size: 24 }) }) }) }, idx)) }),
1017
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-full max-w-sm items-center gap-1.5", children: [
1018
+ /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "newsletter-email", className: "text-sm font-medium", children: newsletterLabel }),
1019
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full max-w-sm items-center space-x-2", children: [
1020
+ /* @__PURE__ */ jsxRuntime.jsx(
1021
+ "input",
1022
+ {
1023
+ type: "email",
1024
+ id: "newsletter-email",
1025
+ placeholder: newsletterPlaceholder,
1026
+ className: "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
1027
+ }
1028
+ ),
1029
+ /* @__PURE__ */ jsxRuntime.jsx(
1030
+ "button",
1031
+ {
1032
+ type: "submit",
1033
+ className: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2",
1034
+ children: newsletterButtonText
1035
+ }
1036
+ )
1037
+ ] }),
1038
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mt-1 text-xs text-muted-foreground", children: [
1039
+ "By submitting, you agree to our",
1040
+ /* @__PURE__ */ jsxRuntime.jsx("a", { href: privacyLinkUrl, className: "ml-1 text-primary hover:underline", children: privacyLinkText })
1041
+ ] })
1042
+ ] })
1043
+ ] })
1044
+ ] }),
1045
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-20 flex flex-col justify-between gap-4 border-t pt-8 text-sm font-medium text-muted-foreground md:flex-row md:items-center", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 md:flex-row md:items-center md:gap-4", children: [
1046
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: copyright }),
1047
+ /* @__PURE__ */ jsxRuntime.jsx(
1048
+ "a",
1049
+ {
1050
+ href: "https://opensite.ai",
1051
+ className: "hover:text-primary",
1052
+ target: "_blank",
1053
+ rel: "noopener noreferrer",
1054
+ children: "AI Website and Automation Platform by Opensite"
1055
+ }
1056
+ )
1057
+ ] }) })
1058
+ ] }) }) });
1059
+ }
1060
+ var defaultSections2 = [
1061
+ {
1062
+ title: "Product",
1063
+ links: [
1064
+ { name: "Overview", href: "#" },
1065
+ { name: "Pricing", href: "#" },
1066
+ { name: "Marketplace", href: "#" },
1067
+ { name: "Features", href: "#" }
1068
+ ]
1069
+ },
1070
+ {
1071
+ title: "Company",
1072
+ links: [
1073
+ { name: "About", href: "#" },
1074
+ { name: "Team", href: "#" },
1075
+ { name: "Blog", href: "#" },
1076
+ { name: "Careers", href: "#" }
1077
+ ]
1078
+ },
1079
+ {
1080
+ title: "Resources",
1081
+ links: [
1082
+ { name: "Help", href: "#" },
1083
+ { name: "Sales", href: "#" },
1084
+ { name: "Advertise", href: "#" }
1085
+ ]
1086
+ }
1087
+ ];
1088
+ var defaultSocialLinks2 = [
1089
+ { icon: "simple-icons/discord", href: "#", label: "Discord" },
1090
+ { icon: "simple-icons/x", href: "#", label: "X (Twitter)" },
1091
+ { icon: "simple-icons/instagram", href: "#", label: "Instagram" },
1092
+ { icon: "simple-icons/linkedin", href: "#", label: "LinkedIn" }
1093
+ ];
1094
+ var defaultAppLinks = [
1095
+ { icon: "mdi/android", href: "#", label: "Android" },
1096
+ { icon: "mdi/apple", href: "#", label: "iOS" }
1097
+ ];
1098
+ function FooterSocialApps({
1099
+ logo = {
1100
+ url: "https://opensite.ai",
1101
+ src: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/os-suircle-black-white.png",
1102
+ alt: "Opensite AI",
1103
+ title: "Opensite AI"
1104
+ },
1105
+ className,
1106
+ sections = defaultSections2,
1107
+ socialLinks = defaultSocialLinks2,
1108
+ appLinks = defaultAppLinks,
1109
+ socialLabel = "Follow Us",
1110
+ appLabel = "Mobile App",
1111
+ copyright = `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} Opensite AI. All rights reserved.`,
1112
+ optixFlowConfig
1113
+ }) {
1114
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container", children: /* @__PURE__ */ jsxRuntime.jsxs("footer", { children: [
1115
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between gap-10 lg:flex-row lg:gap-20", children: [
1116
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-6", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: logo.url, className: "flex items-center gap-2", children: [
1117
+ /* @__PURE__ */ jsxRuntime.jsx(
1118
+ img.Img,
1119
+ {
1120
+ src: logo.src,
1121
+ alt: logo.alt,
1122
+ className: "h-10",
1123
+ optixFlowConfig
1124
+ }
1125
+ ),
1126
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-semibold", children: logo.title })
1127
+ ] }) }),
1128
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid flex-1 gap-8 sm:grid-cols-2 md:grid-cols-3", children: sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1129
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 font-bold", children: section.title }),
1130
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-4 text-muted-foreground", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx(
1131
+ "li",
1132
+ {
1133
+ className: "font-medium hover:text-primary",
1134
+ children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, children: link.name })
1135
+ },
1136
+ linkIdx
1137
+ )) })
1138
+ ] }, sectionIdx)) }),
1139
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6", children: [
1140
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1141
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 font-bold", children: socialLabel }),
1142
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex items-center gap-2 text-muted-foreground", children: socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: social.href, "aria-label": social.label, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-12 items-center justify-center rounded-full bg-muted transition-colors hover:text-primary", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: social.icon, size: 24 }) }) }) }, idx)) })
1143
+ ] }),
1144
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1145
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 font-bold", children: appLabel }),
1146
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex items-center gap-2 text-muted-foreground", children: appLinks.map((app, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: app.href, "aria-label": app.label, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-12 items-center justify-center rounded-full bg-muted transition-colors hover:text-primary", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: app.icon, size: 24 }) }) }) }, idx)) })
1147
+ ] })
1148
+ ] })
1149
+ ] }),
1150
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-24 border-t pt-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between gap-4 text-center text-sm font-medium text-muted-foreground md:flex-row md:text-left", children: [
1151
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: copyright }),
1152
+ /* @__PURE__ */ jsxRuntime.jsx(
1153
+ "a",
1154
+ {
1155
+ href: "https://opensite.ai",
1156
+ className: "hover:text-primary",
1157
+ target: "_blank",
1158
+ rel: "noopener noreferrer",
1159
+ children: "AI Website and Automation Platform by Opensite"
1160
+ }
1161
+ )
1162
+ ] }) })
1163
+ ] }) }) });
1164
+ }
1165
+ var defaultSitemap = [
1166
+ {
1167
+ title: "Company",
1168
+ links: [
1169
+ { title: "About Us", href: "#" },
1170
+ { title: "Careers", href: "#" },
1171
+ { title: "Contact", href: "#" },
1172
+ { title: "Press", href: "#" }
1173
+ ]
1174
+ },
1175
+ {
1176
+ title: "Support",
1177
+ links: [
1178
+ { title: "Help Center", href: "#" },
1179
+ { title: "Community", href: "#" },
1180
+ { title: "Status", href: "#" },
1181
+ { title: "API Docs", href: "#" }
1182
+ ]
1183
+ }
1184
+ ];
1185
+ var defaultBottomLinks2 = [
1186
+ { text: "Terms & Conditions", href: "#" },
1187
+ { text: "Privacy Policy", href: "#" }
1188
+ ];
1189
+ function FooterSimpleCentered({
1190
+ logo = {
1191
+ url: "https://opensite.ai",
1192
+ src: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/os-suircle-black-white.png",
1193
+ alt: "Opensite AI",
1194
+ title: "Opensite AI"
1195
+ },
1196
+ className,
1197
+ tagline = "Components made easy.",
1198
+ sitemap = defaultSitemap,
1199
+ copyright = `\xA9 Opensite AI ${(/* @__PURE__ */ new Date()).getFullYear()}`,
1200
+ bottomLinks = defaultBottomLinks2,
1201
+ optixFlowConfig
1202
+ }) {
1203
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("py-16", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container", children: /* @__PURE__ */ jsxRuntime.jsxs("footer", { children: [
1204
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative mb-8 flex w-full flex-col gap-x-28 gap-y-8 md:flex-row md:justify-between md:gap-y-0", children: [
1205
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-96", children: [
1206
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6 flex items-center gap-3", children: [
1207
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-12 items-center justify-center rounded-lg border border-border bg-accent p-2", children: /* @__PURE__ */ jsxRuntime.jsx(
1208
+ img.Img,
1209
+ {
1210
+ src: logo.src,
1211
+ alt: logo.alt,
1212
+ className: "size-12 h-full w-full object-contain object-center",
1213
+ optixFlowConfig
1214
+ }
1215
+ ) }),
1216
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xl font-bold", children: logo.title })
1217
+ ] }),
1218
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-medium text-muted-foreground", children: tagline })
1219
+ ] }),
1220
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-start gap-x-20 gap-y-14 xl:flex-row", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-grid w-fit grid-cols-1 gap-x-20 gap-y-14 sm:grid-cols-2", children: sitemap.map((section) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "h-fit w-min", children: [
1221
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-6 text-base font-semibold whitespace-nowrap", children: section.title }),
1222
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-3 text-base font-medium text-muted-foreground", children: section.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1223
+ "a",
1224
+ {
1225
+ href: link.href,
1226
+ className: "text-base whitespace-nowrap hover:text-accent-foreground",
1227
+ children: link.title
1228
+ }
1229
+ ) }, link.title)) })
1230
+ ] }, section.title)) }) })
1231
+ ] }),
1232
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-baseline justify-between gap-8 border-t border-border pt-8 md:flex-row md:gap-16", children: [
1233
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 text-xs text-muted-foreground sm:flex-row sm:items-center sm:gap-4 sm:text-sm", children: [
1234
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: copyright }),
1235
+ /* @__PURE__ */ jsxRuntime.jsx(
1236
+ "a",
1237
+ {
1238
+ href: "https://opensite.ai",
1239
+ className: "hover:text-accent-foreground",
1240
+ target: "_blank",
1241
+ rel: "noopener noreferrer",
1242
+ children: "AI Website and Automation Platform by Opensite"
1243
+ }
1244
+ )
1245
+ ] }),
1246
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-start gap-4 text-xs text-muted-foreground sm:text-sm md:flex-row lg:items-center", children: bottomLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, className: "hover:text-accent-foreground", children: link.text }, idx)) })
1247
+ ] })
1248
+ ] }) }) });
1249
+ }
1250
+ var defaultSections3 = [
1251
+ {
1252
+ title: "Product",
1253
+ links: [
1254
+ { name: "Overview", href: "#" },
1255
+ { name: "Pricing", href: "#" },
1256
+ { name: "Marketplace", href: "#" },
1257
+ { name: "Features", href: "#" }
1258
+ ]
1259
+ },
1260
+ {
1261
+ title: "Company",
1262
+ links: [
1263
+ { name: "About", href: "#" },
1264
+ { name: "Team", href: "#" },
1265
+ { name: "Blog", href: "#" },
1266
+ { name: "Careers", href: "#" }
1267
+ ]
1268
+ },
1269
+ {
1270
+ title: "Resources",
1271
+ links: [
1272
+ { name: "Help", href: "#" },
1273
+ { name: "Sales", href: "#" },
1274
+ { name: "Advertise", href: "#" },
1275
+ { name: "Privacy", href: "#" }
1276
+ ]
1277
+ }
1278
+ ];
1279
+ var defaultSocialLinks3 = [
1280
+ { icon: "simple-icons/instagram", href: "#", label: "Instagram" },
1281
+ { icon: "simple-icons/facebook", href: "#", label: "Facebook" },
1282
+ { icon: "simple-icons/x", href: "#", label: "X (Twitter)" },
1283
+ { icon: "simple-icons/linkedin", href: "#", label: "LinkedIn" }
1284
+ ];
1285
+ var defaultLegalLinks = [
1286
+ { name: "Terms and Conditions", href: "#" },
1287
+ { name: "Privacy Policy", href: "#" }
1288
+ ];
1289
+ function FooterBrandDescription({
1290
+ logo = {
1291
+ url: "https://opensite.ai",
1292
+ src: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/os-suircle-black-white.png",
1293
+ alt: "Opensite AI",
1294
+ title: "Opensite AI"
1295
+ },
1296
+ className,
1297
+ sections = defaultSections3,
1298
+ description = "A collection of components for your startup business or side project.",
1299
+ socialLinks = defaultSocialLinks3,
1300
+ copyright = `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} Opensite AI. All rights reserved.`,
1301
+ legalLinks = defaultLegalLinks,
1302
+ optixFlowConfig
1303
+ }) {
1304
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "container", children: [
1305
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col justify-between gap-10 lg:flex-row lg:items-start lg:text-left", children: [
1306
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col justify-between gap-6 lg:items-start", children: [
1307
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 lg:justify-start", children: [
1308
+ /* @__PURE__ */ jsxRuntime.jsx("a", { href: logo.url, children: /* @__PURE__ */ jsxRuntime.jsx(
1309
+ img.Img,
1310
+ {
1311
+ src: logo.src,
1312
+ alt: logo.alt,
1313
+ className: "h-8",
1314
+ optixFlowConfig
1315
+ }
1316
+ ) }),
1317
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-semibold", children: logo.title })
1318
+ ] }),
1319
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "max-w-[70%] text-sm text-muted-foreground", children: description }),
1320
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex items-center space-x-6 text-muted-foreground", children: socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium hover:text-primary", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: social.href, "aria-label": social.label, children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: social.icon, size: 20 }) }) }, idx)) })
1321
+ ] }),
1322
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid w-full gap-6 md:grid-cols-3 lg:gap-20", children: sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1323
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 font-bold", children: section.title }),
1324
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-3 text-sm text-muted-foreground", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx(
1325
+ "li",
1326
+ {
1327
+ className: "font-medium hover:text-primary",
1328
+ children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, children: link.name })
1329
+ },
1330
+ linkIdx
1331
+ )) })
1332
+ ] }, sectionIdx)) })
1333
+ ] }),
1334
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 flex flex-col justify-between gap-4 border-t py-8 text-xs font-medium text-muted-foreground md:flex-row md:items-center md:text-left", children: [
1335
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "order-2 flex flex-col gap-2 lg:order-1 lg:flex-row lg:items-center lg:gap-4", children: [
1336
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: copyright }),
1337
+ /* @__PURE__ */ jsxRuntime.jsx(
1338
+ "a",
1339
+ {
1340
+ href: "https://opensite.ai",
1341
+ className: "hover:text-primary",
1342
+ target: "_blank",
1343
+ rel: "noopener noreferrer",
1344
+ children: "AI Website and Automation Platform by Opensite"
1345
+ }
1346
+ )
1347
+ ] }),
1348
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "order-1 flex flex-col gap-2 md:order-2 md:flex-row", children: legalLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "hover:text-primary", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, children: link.name }) }, idx)) })
1349
+ ] })
1350
+ ] }) });
1351
+ }
1352
+ var defaultSections4 = [
1353
+ {
1354
+ title: "Product",
1355
+ links: [
1356
+ { name: "Overview", href: "#" },
1357
+ { name: "Pricing", href: "#" },
1358
+ { name: "Marketplace", href: "#" },
1359
+ { name: "Features", href: "#" },
1360
+ { name: "Integrations", href: "#" },
1361
+ { name: "Marketing", href: "#" }
1362
+ ]
1363
+ },
1364
+ {
1365
+ title: "Company",
1366
+ links: [
1367
+ { name: "About", href: "#" },
1368
+ { name: "Team", href: "#" },
1369
+ { name: "Blog", href: "#" },
1370
+ { name: "Careers", href: "#" },
1371
+ { name: "Contact", href: "#" }
1372
+ ]
1373
+ }
1374
+ ];
1375
+ var defaultSocialLinks4 = [
1376
+ { icon: "simple-icons/instagram", href: "#", label: "Instagram" },
1377
+ { icon: "simple-icons/facebook", href: "#", label: "Facebook" },
1378
+ { icon: "simple-icons/x", href: "#", label: "X (Twitter)" },
1379
+ { icon: "simple-icons/linkedin", href: "#", label: "LinkedIn" }
1380
+ ];
1381
+ function FooterNewsletterGrid({
1382
+ logo = {
1383
+ url: "https://opensite.ai",
1384
+ src: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/os-suircle-black-white.png",
1385
+ alt: "Opensite AI",
1386
+ title: "Opensite AI"
1387
+ },
1388
+ className,
1389
+ description = "A collection of 100+ responsive HTML templates for your startup business or side project.",
1390
+ sections = defaultSections4,
1391
+ socialLinks = defaultSocialLinks4,
1392
+ newsletterTitle = "Newsletter",
1393
+ newsletterPlaceholder = "Email",
1394
+ newsletterButtonText = "Subscribe",
1395
+ privacyText = "By submitting, you agree to our",
1396
+ privacyLinkText = "Privacy Policy",
1397
+ privacyLinkUrl = "#",
1398
+ copyright = `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} Opensite AI. All rights reserved.`,
1399
+ optixFlowConfig
1400
+ }) {
1401
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container", children: /* @__PURE__ */ jsxRuntime.jsxs("footer", { children: [
1402
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-4 justify-between gap-10 lg:grid-cols-6 lg:text-left", children: [
1403
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-4 flex w-full flex-col gap-6 lg:col-span-2", children: [
1404
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 lg:justify-start", children: [
1405
+ /* @__PURE__ */ jsxRuntime.jsx("a", { href: logo.url, children: /* @__PURE__ */ jsxRuntime.jsx(
1406
+ img.Img,
1407
+ {
1408
+ src: logo.src,
1409
+ alt: logo.alt,
1410
+ className: "h-8",
1411
+ optixFlowConfig
1412
+ }
1413
+ ) }),
1414
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-semibold", children: logo.title })
1415
+ ] }),
1416
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: description }),
1417
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex items-center space-x-6", children: socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx(
1418
+ "li",
1419
+ {
1420
+ className: "font-medium duration-200 hover:scale-110 hover:text-muted-foreground",
1421
+ children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: social.href, "aria-label": social.label, children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: social.icon, size: 24 }) })
1422
+ },
1423
+ idx
1424
+ )) })
1425
+ ] }),
1426
+ sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-2 md:col-span-1", children: [
1427
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-5 font-medium", children: section.title }),
1428
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-4 text-sm text-muted-foreground", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx(
1429
+ "li",
1430
+ {
1431
+ className: "font-medium hover:text-primary",
1432
+ children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, children: link.name })
1433
+ },
1434
+ linkIdx
1435
+ )) })
1436
+ ] }, sectionIdx)),
1437
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-4 md:col-span-2", children: [
1438
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-5 font-medium", children: newsletterTitle }),
1439
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-1.5", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center space-x-2", children: [
1440
+ /* @__PURE__ */ jsxRuntime.jsx(
1441
+ "input",
1442
+ {
1443
+ type: "email",
1444
+ placeholder: newsletterPlaceholder,
1445
+ className: "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
1446
+ }
1447
+ ),
1448
+ /* @__PURE__ */ jsxRuntime.jsx(
1449
+ "button",
1450
+ {
1451
+ type: "submit",
1452
+ className: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2",
1453
+ children: newsletterButtonText
1454
+ }
1455
+ )
1456
+ ] }) }),
1457
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mt-1 text-xs font-medium text-muted-foreground", children: [
1458
+ privacyText,
1459
+ /* @__PURE__ */ jsxRuntime.jsx("a", { href: privacyLinkUrl, className: "ml-1 text-primary hover:underline", children: privacyLinkText })
1460
+ ] })
1461
+ ] })
1462
+ ] }),
1463
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-20 flex flex-col justify-between gap-4 border-t pt-8 text-sm font-medium text-muted-foreground lg:flex-row lg:items-center lg:text-left", children: [
1464
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-2 lg:flex-row lg:items-center lg:gap-4", children: /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
1465
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mr-1 font-bold text-primary", children: "Opensite AI" }),
1466
+ copyright
1467
+ ] }) }),
1468
+ /* @__PURE__ */ jsxRuntime.jsx(
1469
+ "a",
1470
+ {
1471
+ href: "https://opensite.ai",
1472
+ className: "hover:text-primary",
1473
+ target: "_blank",
1474
+ rel: "noopener noreferrer",
1475
+ children: "AI Website and Automation Platform by Opensite"
1476
+ }
1477
+ )
1478
+ ] })
1479
+ ] }) }) });
1480
+ }
1481
+ var defaultSections5 = [
1482
+ {
1483
+ title: "Product",
1484
+ links: [
1485
+ { name: "Overview", href: "#" },
1486
+ { name: "Pricing", href: "#" },
1487
+ { name: "Marketplace", href: "#" },
1488
+ { name: "Features", href: "#" }
1489
+ ]
1490
+ },
1491
+ {
1492
+ title: "Company",
1493
+ links: [
1494
+ { name: "About", href: "#" },
1495
+ { name: "Team", href: "#" },
1496
+ { name: "Blog", href: "#" },
1497
+ { name: "Careers", href: "#" }
1498
+ ]
1499
+ },
1500
+ {
1501
+ title: "Resources",
1502
+ links: [
1503
+ { name: "Help", href: "#" },
1504
+ { name: "Sales", href: "#" },
1505
+ { name: "Advertise", href: "#" }
1506
+ ]
1507
+ }
1508
+ ];
1509
+ var defaultSocialLinks5 = [
1510
+ { icon: "simple-icons/instagram", href: "#", label: "Instagram" },
1511
+ { icon: "simple-icons/facebook", href: "#", label: "Facebook" },
1512
+ { icon: "simple-icons/x", href: "#", label: "X (Twitter)" },
1513
+ { icon: "simple-icons/linkedin", href: "#", label: "LinkedIn" }
1514
+ ];
1515
+ var defaultLegalLinks2 = [
1516
+ { name: "Terms and Conditions", href: "#" },
1517
+ { name: "Privacy Policy", href: "#" }
1518
+ ];
1519
+ function FooterCtaBanner({
1520
+ logo = {
1521
+ url: "https://opensite.ai",
1522
+ src: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/os-suircle-black-white.png",
1523
+ alt: "Opensite AI",
1524
+ title: "Opensite AI"
1525
+ },
1526
+ className,
1527
+ ctaHeading = "Ready to get started?",
1528
+ ctaDescription = "Join thousands of satisfied customers using our platform to build amazing websites.",
1529
+ ctaButtonText = "Get Started",
1530
+ ctaButtonUrl = "#",
1531
+ sections = defaultSections5,
1532
+ socialLinks = defaultSocialLinks5,
1533
+ newsletterLabel = "Subscribe to our newsletter",
1534
+ newsletterPlaceholder = "Enter your email",
1535
+ newsletterButtonText = "Subscribe",
1536
+ copyright = `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} Opensite AI. All rights reserved.`,
1537
+ legalLinks = defaultLegalLinks2,
1538
+ optixFlowConfig
1539
+ }) {
1540
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("dark bg-background py-16 text-foreground", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container", children: /* @__PURE__ */ jsxRuntime.jsxs("footer", { children: [
1541
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-16 rounded-lg bg-primary/10 p-8 text-center md:p-12", children: [
1542
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mb-4 text-3xl font-bold md:text-4xl", children: ctaHeading }),
1543
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mx-auto mb-6 max-w-2xl text-muted-foreground", children: ctaDescription }),
1544
+ /* @__PURE__ */ jsxRuntime.jsx(
1545
+ "a",
1546
+ {
1547
+ href: ctaButtonUrl,
1548
+ className: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-11 px-8",
1549
+ children: ctaButtonText
1550
+ }
1551
+ )
1552
+ ] }),
1553
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-10 lg:grid-cols-5", children: [
1554
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "lg:col-span-2", children: [
1555
+ /* @__PURE__ */ jsxRuntime.jsxs("a", { href: logo.url, className: "mb-6 flex items-center gap-2", children: [
1556
+ /* @__PURE__ */ jsxRuntime.jsx(
1557
+ img.Img,
1558
+ {
1559
+ src: logo.src,
1560
+ alt: logo.alt,
1561
+ className: "h-8 invert",
1562
+ optixFlowConfig
1563
+ }
1564
+ ),
1565
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-semibold", children: logo.title })
1566
+ ] }),
1567
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6", children: [
1568
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-sm font-medium", children: newsletterLabel }),
1569
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex max-w-sm gap-2", children: [
1570
+ /* @__PURE__ */ jsxRuntime.jsx(
1571
+ "input",
1572
+ {
1573
+ type: "email",
1574
+ placeholder: newsletterPlaceholder,
1575
+ className: "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
1576
+ }
1577
+ ),
1578
+ /* @__PURE__ */ jsxRuntime.jsx(
1579
+ "button",
1580
+ {
1581
+ type: "submit",
1582
+ className: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2",
1583
+ children: newsletterButtonText
1584
+ }
1585
+ )
1586
+ ] })
1587
+ ] }),
1588
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex items-center gap-4", children: socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1589
+ "a",
1590
+ {
1591
+ href: social.href,
1592
+ "aria-label": social.label,
1593
+ className: "text-muted-foreground transition-colors hover:text-foreground",
1594
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: social.icon, size: 20 })
1595
+ }
1596
+ ) }, idx)) })
1597
+ ] }),
1598
+ sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1599
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 font-semibold", children: section.title }),
1600
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-3 text-sm text-muted-foreground", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, className: "hover:text-foreground", children: link.name }) }, linkIdx)) })
1601
+ ] }, sectionIdx))
1602
+ ] }),
1603
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-16 flex flex-col justify-between gap-4 border-t border-border pt-8 text-sm text-muted-foreground md:flex-row md:items-center", children: [
1604
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 md:flex-row md:items-center md:gap-4", children: [
1605
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: copyright }),
1606
+ /* @__PURE__ */ jsxRuntime.jsx(
1607
+ "a",
1608
+ {
1609
+ href: "https://opensite.ai",
1610
+ className: "hover:text-foreground",
1611
+ target: "_blank",
1612
+ rel: "noopener noreferrer",
1613
+ children: "AI Website and Automation Platform by Opensite"
1614
+ }
1615
+ )
1616
+ ] }),
1617
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex gap-4", children: legalLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, className: "hover:text-foreground", children: link.name }) }, idx)) })
1618
+ ] })
1619
+ ] }) }) });
1620
+ }
1621
+ var defaultSocialLinks6 = [
1622
+ { icon: "simple-icons/instagram", href: "#", label: "Instagram" },
1623
+ { icon: "simple-icons/facebook", href: "#", label: "Facebook" },
1624
+ { icon: "simple-icons/x", href: "#", label: "X (Twitter)" },
1625
+ { icon: "simple-icons/linkedin", href: "#", label: "LinkedIn" }
1626
+ ];
1627
+ var defaultNavLinks = [
1628
+ { name: "Home", href: "#" },
1629
+ { name: "About", href: "#" },
1630
+ { name: "Services", href: "#" },
1631
+ { name: "Contact", href: "#" }
1632
+ ];
1633
+ function FooterContactCard({
1634
+ logo = {
1635
+ url: "https://opensite.ai",
1636
+ src: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/os-suircle-black-white.png",
1637
+ alt: "Opensite AI",
1638
+ title: "Opensite AI"
1639
+ },
1640
+ className,
1641
+ heading = "Let's work together",
1642
+ email = "hello@opensite.ai",
1643
+ phone = "+1 (555) 123-4567",
1644
+ address = "123 Main Street, San Francisco, CA 94102",
1645
+ socialLinks = defaultSocialLinks6,
1646
+ navLinks = defaultNavLinks,
1647
+ location = "San Francisco",
1648
+ copyright = `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} Opensite AI. All rights reserved.`,
1649
+ optixFlowConfig
1650
+ }) {
1651
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container", children: /* @__PURE__ */ jsxRuntime.jsxs("footer", { children: [
1652
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-12 lg:grid-cols-2", children: [
1653
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1654
+ /* @__PURE__ */ jsxRuntime.jsxs("a", { href: logo.url, className: "mb-8 flex items-center gap-2", children: [
1655
+ /* @__PURE__ */ jsxRuntime.jsx(
1656
+ img.Img,
1657
+ {
1658
+ src: logo.src,
1659
+ alt: logo.alt,
1660
+ className: "h-10",
1661
+ optixFlowConfig
1662
+ }
1663
+ ),
1664
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-semibold", children: logo.title })
1665
+ ] }),
1666
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mb-8 text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", children: heading }),
1667
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 text-muted-foreground", children: [
1668
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: `mailto:${email}`, className: "hover:text-primary", children: email }) }),
1669
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: `tel:${phone}`, className: "hover:text-primary", children: phone }) }),
1670
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: address })
1671
+ ] })
1672
+ ] }),
1673
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between", children: [
1674
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1675
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 font-medium", children: "Follow Us" }),
1676
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex items-center gap-4", children: socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1677
+ "a",
1678
+ {
1679
+ href: social.href,
1680
+ "aria-label": social.label,
1681
+ className: "flex size-12 items-center justify-center rounded-full bg-muted text-muted-foreground transition-colors hover:bg-primary hover:text-primary-foreground",
1682
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: social.icon, size: 20 })
1683
+ }
1684
+ ) }, idx)) })
1685
+ ] }),
1686
+ /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "mt-8", children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-wrap gap-6", children: navLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1687
+ "a",
1688
+ {
1689
+ href: link.href,
1690
+ className: "text-muted-foreground hover:text-primary",
1691
+ children: link.name
1692
+ }
1693
+ ) }, idx)) }) })
1694
+ ] })
1695
+ ] }),
1696
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-16 flex flex-col justify-between gap-4 border-t pt-8 text-sm text-muted-foreground md:flex-row md:items-center", children: [
1697
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 md:flex-row md:items-center md:gap-4", children: [
1698
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: copyright }),
1699
+ /* @__PURE__ */ jsxRuntime.jsx(
1700
+ "a",
1701
+ {
1702
+ href: "https://opensite.ai",
1703
+ className: "hover:text-primary",
1704
+ target: "_blank",
1705
+ rel: "noopener noreferrer",
1706
+ children: "AI Website and Automation Platform by Opensite"
1707
+ }
1708
+ )
1709
+ ] }),
1710
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
1711
+ "Designed in ",
1712
+ /* @__PURE__ */ jsxRuntime.jsx("strong", { children: location })
1713
+ ] })
1714
+ ] })
1715
+ ] }) }) });
1716
+ }
1717
+ var defaultMenuItems2 = [
1718
+ {
1719
+ title: "Portfolio",
1720
+ links: [
1721
+ { text: "Overview", url: "#" },
1722
+ { text: "Projects", url: "#" },
1723
+ { text: "Pricing", url: "#" },
1724
+ { text: "About", url: "#" }
1725
+ ]
1726
+ },
1727
+ {
1728
+ title: "Social",
1729
+ links: [
1730
+ { text: "Twitter", url: "#" },
1731
+ { text: "Instagram", url: "#" },
1732
+ { text: "LinkedIn", url: "#" }
1733
+ ]
1734
+ }
1735
+ ];
1736
+ var defaultContact = {
1737
+ phone: "+1 (555) 123-4567",
1738
+ email: "hello@opensite.ai",
1739
+ location: "NYC",
1740
+ timezone: "EST"
1741
+ };
1742
+ var defaultBottomLinks3 = [
1743
+ { text: "Terms and Conditions", url: "#" },
1744
+ { text: "Privacy Policy", url: "#" }
1745
+ ];
1746
+ function FooterBackgroundCard({
1747
+ logo = {
1748
+ url: "https://opensite.ai",
1749
+ src: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/os-suircle-black-white.png",
1750
+ alt: "Opensite AI",
1751
+ title: "Opensite AI"
1752
+ },
1753
+ className,
1754
+ backgroundImage = "https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1920&q=80",
1755
+ profileImage = "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=200&q=80",
1756
+ tagline = "Let's Connect",
1757
+ personalMessage = "I'm passionate about creating beautiful, functional components that make your projects shine. Let's work together to bring your vision to life.",
1758
+ ctaText = "Schedule a call",
1759
+ ctaUrl = "#",
1760
+ contact = defaultContact,
1761
+ menuItems = defaultMenuItems2,
1762
+ copyright = `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} Opensite AI. All rights reserved.`,
1763
+ bottomLinks = defaultBottomLinks3,
1764
+ optixFlowConfig
1765
+ }) {
1766
+ return /* @__PURE__ */ jsxRuntime.jsx(
1767
+ "section",
1768
+ {
1769
+ className: cn("bg-cover bg-center bg-no-repeat py-32", className),
1770
+ style: {
1771
+ backgroundImage: `url('${backgroundImage}')`
1772
+ },
1773
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-7xl rounded-lg bg-background p-8 shadow-lg md:p-12", children: [
1774
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-4 lg:gap-12", children: [
1775
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "lg:col-span-1", children: [
1776
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex items-center gap-4", children: [
1777
+ /* @__PURE__ */ jsxRuntime.jsx(
1778
+ img.Img,
1779
+ {
1780
+ src: profileImage,
1781
+ alt: "Profile",
1782
+ className: "h-16 w-16 rounded-full object-cover",
1783
+ optixFlowConfig
1784
+ }
1785
+ ),
1786
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-medium", children: tagline })
1787
+ ] }),
1788
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-6 text-sm leading-relaxed text-muted-foreground", children: personalMessage }),
1789
+ /* @__PURE__ */ jsxRuntime.jsx(
1790
+ "a",
1791
+ {
1792
+ href: ctaUrl,
1793
+ className: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2",
1794
+ children: ctaText
1795
+ }
1796
+ )
1797
+ ] }),
1798
+ menuItems.map((menu, idx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1799
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 text-sm font-medium tracking-wider text-primary uppercase", children: menu.title }),
1800
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-3", children: menu.links.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1801
+ "a",
1802
+ {
1803
+ href: link.url,
1804
+ className: "border-b border-transparent text-muted-foreground transition-all duration-300 ease-in-out hover:border-primary hover:text-primary",
1805
+ children: link.text
1806
+ }
1807
+ ) }, index)) })
1808
+ ] }, idx)),
1809
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1810
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 text-sm font-medium tracking-wider text-primary uppercase", children: "Contact" }),
1811
+ /* @__PURE__ */ jsxRuntime.jsxs("ul", { className: "space-y-3", children: [
1812
+ /* @__PURE__ */ jsxRuntime.jsx("li", { className: "text-muted-foreground", children: contact.phone }),
1813
+ /* @__PURE__ */ jsxRuntime.jsx("li", { className: "text-muted-foreground", children: contact.email }),
1814
+ /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "text-muted-foreground", children: [
1815
+ contact.location,
1816
+ " \u2022 ",
1817
+ contact.timezone
1818
+ ] })
1819
+ ] })
1820
+ ] })
1821
+ ] }),
1822
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-12 flex flex-col items-center justify-between gap-4 border-t border-border pt-8 md:flex-row", children: [
1823
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 text-sm text-muted-foreground md:flex-row md:items-center md:gap-4", children: [
1824
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: copyright }),
1825
+ /* @__PURE__ */ jsxRuntime.jsx(
1826
+ "a",
1827
+ {
1828
+ href: "https://opensite.ai",
1829
+ className: "hover:text-primary",
1830
+ target: "_blank",
1831
+ rel: "noopener noreferrer",
1832
+ children: "AI Website and Automation Platform by Opensite"
1833
+ }
1834
+ )
1835
+ ] }),
1836
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4", children: bottomLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx(
1837
+ "a",
1838
+ {
1839
+ href: link.url,
1840
+ className: "text-sm text-muted-foreground transition-colors hover:text-primary",
1841
+ children: link.text
1842
+ },
1843
+ idx
1844
+ )) })
1845
+ ] })
1846
+ ] }) })
1847
+ }
1848
+ );
1849
+ }
1850
+ var defaultSocialLinks7 = [
1851
+ { name: "Instagram", href: "#" },
1852
+ { name: "X (Twitter)", href: "#" }
1853
+ ];
1854
+ var containerVariants = {
1855
+ hidden: { opacity: 0 },
1856
+ visible: {
1857
+ opacity: 1,
1858
+ transition: {
1859
+ duration: 0.6,
1860
+ staggerChildren: 0.1
1861
+ }
1862
+ }
1863
+ };
1864
+ var itemVariants = {
1865
+ hidden: { opacity: 0, y: 20 },
1866
+ visible: {
1867
+ opacity: 1,
1868
+ y: 0,
1869
+ transition: { duration: 0.5 }
1870
+ }
1871
+ };
1872
+ function FooterAnimatedSocial({
1873
+ className,
1874
+ heading = "Connect with Me",
1875
+ description = "No commitments. Just a quick chat to see if we click.",
1876
+ ctaText = "Get in Touch",
1877
+ ctaUrl = "#",
1878
+ socialLinks = defaultSocialLinks7,
1879
+ copyright = `\xA9 Copyright ${(/* @__PURE__ */ new Date()).getFullYear()}. All rights Reserved.`
1880
+ }) {
1881
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container", children: /* @__PURE__ */ jsxRuntime.jsx("footer", { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1882
+ /* @__PURE__ */ jsxRuntime.jsxs(
1883
+ framerMotion.motion.div,
1884
+ {
1885
+ variants: containerVariants,
1886
+ initial: "hidden",
1887
+ whileInView: "visible",
1888
+ viewport: { once: true },
1889
+ className: "flex flex-col justify-between md:flex-row md:items-center",
1890
+ children: [
1891
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-8", children: [
1892
+ /* @__PURE__ */ jsxRuntime.jsxs(framerMotion.motion.div, { variants: itemVariants, className: "space-y-6", children: [
1893
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-4xl leading-tight font-bold text-foreground lg:text-5xl", children: heading }),
1894
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "max-w-md text-lg leading-relaxed text-muted-foreground", children: description })
1895
+ ] }),
1896
+ /* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.div, { variants: itemVariants, children: /* @__PURE__ */ jsxRuntime.jsx(
1897
+ "a",
1898
+ {
1899
+ href: ctaUrl,
1900
+ className: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-11 px-8",
1901
+ children: ctaText
1902
+ }
1903
+ ) })
1904
+ ] }),
1905
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-5 space-y-8 md:mt-0", children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.div, { variants: itemVariants, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: socialLinks.map((link) => /* @__PURE__ */ jsxRuntime.jsx(
1906
+ framerMotion.motion.div,
1907
+ {
1908
+ variants: itemVariants,
1909
+ whileHover: { x: 4 },
1910
+ transition: {
1911
+ type: "spring",
1912
+ stiffness: 300,
1913
+ damping: 20
1914
+ },
1915
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1916
+ "a",
1917
+ {
1918
+ href: link.href,
1919
+ className: "group flex items-center gap-2 py-2 text-foreground transition-colors hover:text-foreground/80",
1920
+ children: [
1921
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-medium", children: link.name }),
1922
+ /* @__PURE__ */ jsxRuntime.jsx(
1923
+ DynamicIcon,
1924
+ {
1925
+ name: "lucide/arrow-up-right",
1926
+ size: 24,
1927
+ className: "transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5"
1928
+ }
1929
+ )
1930
+ ]
1931
+ }
1932
+ )
1933
+ },
1934
+ link.name
1935
+ )) }) }) })
1936
+ ]
1937
+ }
1938
+ ),
1939
+ /* @__PURE__ */ jsxRuntime.jsxs(
1940
+ framerMotion.motion.div,
1941
+ {
1942
+ variants: containerVariants,
1943
+ initial: "hidden",
1944
+ whileInView: "visible",
1945
+ viewport: { once: true },
1946
+ className: "mt-16",
1947
+ children: [
1948
+ /* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.div, { variants: itemVariants, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-8 h-px w-full bg-border" }) }),
1949
+ /* @__PURE__ */ jsxRuntime.jsxs(
1950
+ framerMotion.motion.div,
1951
+ {
1952
+ variants: itemVariants,
1953
+ className: "flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center",
1954
+ children: [
1955
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: copyright }),
1956
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-6 text-sm", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(
1957
+ framerMotion.motion.a,
1958
+ {
1959
+ href: "https://opensite.ai",
1960
+ className: "underline underline-offset-4 transition-colors hover:text-foreground",
1961
+ whileHover: { scale: 1.05 },
1962
+ transition: {
1963
+ type: "spring",
1964
+ stiffness: 300,
1965
+ damping: 20
1966
+ },
1967
+ target: "_blank",
1968
+ rel: "noopener noreferrer",
1969
+ children: "AI Website and Automation Platform by Opensite"
1970
+ }
1971
+ ) }) })
1972
+ ]
1973
+ }
1974
+ )
1975
+ ]
1976
+ }
1977
+ )
1978
+ ] }) }) }) });
1979
+ }
1980
+ var defaultNavLinks2 = [
1981
+ { label: "Home", href: "#" },
1982
+ { label: "Collection", href: "#" },
1983
+ { label: "Projects", href: "#" },
1984
+ { label: "Pricing", href: "#" },
1985
+ { label: "Login", href: "#" }
1986
+ ];
1987
+ var defaultSocialLinks8 = [
1988
+ { label: "Linkedin", href: "#" },
1989
+ { label: "Twitter", href: "#" },
1990
+ { label: "Facebook", href: "#" }
1991
+ ];
1992
+ var defaultFooterLinks = [
1993
+ { label: "Privacy Policy", href: "#" },
1994
+ { label: "Terms & Conditions", href: "#" }
1995
+ ];
1996
+ function FooterNewsletterMinimal({
1997
+ className,
1998
+ heading = "Unlock 800+ blocks now",
1999
+ supportEmail = "hi@opensite.ai",
2000
+ navLinks = defaultNavLinks2,
2001
+ socialLinks = defaultSocialLinks8,
2002
+ footerLinks = defaultFooterLinks,
2003
+ newsletterLabel = "Sign up for newsletter :",
2004
+ newsletterPlaceholder = "Name*",
2005
+ location = "San Francisco, CA"
2006
+ }) {
2007
+ return /* @__PURE__ */ jsxRuntime.jsx(
2008
+ "section",
2009
+ {
2010
+ className: cn("dark bg-background py-32 text-foreground", className),
2011
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "container", children: [
2012
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between gap-15 lg:flex-row", children: [
2013
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-10", children: [
2014
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "relative text-4xl font-medium tracking-tight lg:text-5xl", children: heading }),
2015
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-sm font-light tracking-tight lg:text-base", children: [
2016
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Get Support : " }),
2017
+ /* @__PURE__ */ jsxRuntime.jsx("a", { href: `mailto:${supportEmail}`, children: supportEmail })
2018
+ ] })
2019
+ ] }),
2020
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-full max-w-xs grid-cols-2 gap-10 text-sm font-light lg:text-base", children: [
2021
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-1", children: navLinks.map((item) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
2022
+ "a",
2023
+ {
2024
+ href: item.href,
2025
+ className: "tracking-tight text-foreground hover:text-foreground/30",
2026
+ children: item.label
2027
+ }
2028
+ ) }, item.label)) }),
2029
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-1", children: socialLinks.map((item) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(
2030
+ "a",
2031
+ {
2032
+ href: item.href,
2033
+ className: "group flex items-center gap-1 tracking-tight text-foreground hover:text-foreground/30",
2034
+ children: [
2035
+ item.label,
2036
+ " ",
2037
+ /* @__PURE__ */ jsxRuntime.jsx(
2038
+ DynamicIcon,
2039
+ {
2040
+ name: "lucide/arrow-up-right",
2041
+ size: 14,
2042
+ className: "text-foreground group-hover:text-muted-foreground/50"
2043
+ }
2044
+ )
2045
+ ]
2046
+ }
2047
+ ) }, item.label)) })
2048
+ ] })
2049
+ ] }),
2050
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-20 flex flex-col justify-between gap-15 lg:flex-row", children: [
2051
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-full max-w-md flex-col gap-10", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-sm font-light tracking-tight lg:text-base", children: [
2052
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: newsletterLabel }),
2053
+ /* @__PURE__ */ jsxRuntime.jsxs("form", { className: "flex w-full items-end border-b border-b-foreground/10", children: [
2054
+ /* @__PURE__ */ jsxRuntime.jsx(
2055
+ "input",
2056
+ {
2057
+ type: "text",
2058
+ placeholder: newsletterPlaceholder,
2059
+ className: "mt-10 w-full rounded-none border-0 bg-transparent p-0 uppercase shadow-none placeholder:text-foreground/20 focus:outline-none focus:ring-0 lg:text-base"
2060
+ }
2061
+ ),
2062
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "submit", className: "p-2 hover:bg-muted/20", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 20 }) })
2063
+ ] })
2064
+ ] }) }),
2065
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-full max-w-xs grid-cols-2 gap-10 text-sm font-light lg:text-base", children: [
2066
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-32", children: location }),
2067
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-1", children: footerLinks.map((item) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
2068
+ "a",
2069
+ {
2070
+ href: item.href,
2071
+ className: "group flex items-center gap-1 tracking-tight text-foreground hover:text-foreground/30",
2072
+ children: item.label
2073
+ }
2074
+ ) }, item.label)) })
2075
+ ] })
2076
+ ] }),
2077
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-20 w-full lg:mt-32", children: /* @__PURE__ */ jsxRuntime.jsx(
2078
+ framerMotion.motion.div,
2079
+ {
2080
+ initial: { opacity: 0, y: 20 },
2081
+ whileInView: { opacity: 1, y: 0 },
2082
+ viewport: { once: true },
2083
+ transition: { duration: 0.6 },
2084
+ className: "text-center",
2085
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-6xl font-bold tracking-tighter md:text-8xl lg:text-9xl", children: "OPENSITE" })
2086
+ }
2087
+ ) }),
2088
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 text-center text-sm text-muted-foreground", children: [
2089
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
2090
+ "\xA9 ",
2091
+ (/* @__PURE__ */ new Date()).getFullYear(),
2092
+ " Opensite AI. All rights reserved."
2093
+ ] }),
2094
+ /* @__PURE__ */ jsxRuntime.jsx(
2095
+ "a",
2096
+ {
2097
+ href: "https://opensite.ai",
2098
+ className: "mt-2 inline-block hover:text-foreground",
2099
+ target: "_blank",
2100
+ rel: "noopener noreferrer",
2101
+ children: "AI Website and Automation Platform by Opensite"
2102
+ }
2103
+ )
2104
+ ] })
2105
+ ] })
2106
+ }
2107
+ );
2108
+ }
2109
+ var defaultSocialLinks9 = [
2110
+ { icon: "lucide/twitter", url: "#", label: "Twitter" },
2111
+ { icon: "lucide/instagram", url: "#", label: "Instagram" },
2112
+ { icon: "lucide/facebook", url: "#", label: "Facebook" }
2113
+ ];
2114
+ function FooterCtaSocial({
2115
+ className,
2116
+ preHeading = "Let's connect",
2117
+ heading = "You want to scale faster? Try Opensite today.",
2118
+ description = "Join thousands of companies already using our platform to scale their operations",
2119
+ buttonText = "Get Started Now",
2120
+ buttonUrl = "#",
2121
+ email = "hello@opensite.ai",
2122
+ socialLinks = defaultSocialLinks9
2123
+ }) {
2124
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("relative py-32", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-10 container", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto flex max-w-3xl flex-col items-center gap-2 text-center", children: [
2125
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center gap-4", children: [
2126
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-px flex-1 bg-[linear-gradient(270deg,var(--primary,rgb(255,255,255))_0%,var(--secondary,rgb(0,0,0))_100%)] opacity-50" }),
2127
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground italic md:text-base", children: preHeading }),
2128
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-px flex-1 bg-[linear-gradient(270deg,var(--secondary,rgb(0,0,0))_0%,var(--primary,rgb(255,255,255))_100%)] opacity-50" })
2129
+ ] }),
2130
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "py-6 text-5xl font-bold md:text-6xl", children: heading }),
2131
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "max-w-2xl text-base text-muted-foreground md:text-lg", children: description }),
2132
+ /* @__PURE__ */ jsxRuntime.jsxs(
2133
+ "a",
2134
+ {
2135
+ href: buttonUrl,
2136
+ className: "group relative mt-4 inline-flex items-center gap-2 rounded-lg border bg-background px-8 py-4 text-base font-medium transition-all hover:bg-muted",
2137
+ children: [
2138
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: buttonText }),
2139
+ /* @__PURE__ */ jsxRuntime.jsx(
2140
+ DynamicIcon,
2141
+ {
2142
+ name: "lucide/arrow-up-right",
2143
+ size: 16,
2144
+ className: "transition-transform group-hover:translate-x-1 group-hover:-translate-y-1"
2145
+ }
2146
+ )
2147
+ ]
2148
+ }
2149
+ ),
2150
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-6 pt-8", children: socialLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsxs(React4__namespace.Fragment, { children: [
2151
+ /* @__PURE__ */ jsxRuntime.jsx(
2152
+ "a",
2153
+ {
2154
+ href: link.url,
2155
+ className: "text-muted-foreground transition-colors hover:text-foreground",
2156
+ "aria-label": link.label,
2157
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: link.icon, size: 20 })
2158
+ }
2159
+ ),
2160
+ idx < socialLinks.length - 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-px bg-border" })
2161
+ ] }, idx)) }),
2162
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "pt-2 text-sm text-muted-foreground md:text-base", children: /* @__PURE__ */ jsxRuntime.jsx(
2163
+ "a",
2164
+ {
2165
+ href: `mailto:${email}`,
2166
+ className: "transition-colors hover:text-foreground",
2167
+ children: email
2168
+ }
2169
+ ) }),
2170
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 border-t pt-8 text-sm text-muted-foreground", children: [
2171
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
2172
+ "\xA9 ",
2173
+ (/* @__PURE__ */ new Date()).getFullYear(),
2174
+ " Opensite AI. All rights reserved."
2175
+ ] }),
2176
+ /* @__PURE__ */ jsxRuntime.jsx(
2177
+ "a",
2178
+ {
2179
+ href: "https://opensite.ai",
2180
+ className: "mt-2 inline-block hover:text-foreground",
2181
+ target: "_blank",
2182
+ rel: "noopener noreferrer",
2183
+ children: "AI Website and Automation Platform by Opensite"
2184
+ }
2185
+ )
2186
+ ] })
2187
+ ] }) }) });
2188
+ }
2189
+ var defaultSections6 = [
2190
+ {
2191
+ title: "Product",
2192
+ links: [
2193
+ { name: "Overview", href: "#" },
2194
+ { name: "Pricing", href: "#" },
2195
+ { name: "Marketplace", href: "#" },
2196
+ { name: "Features", href: "#" }
2197
+ ]
2198
+ },
2199
+ {
2200
+ title: "Company",
2201
+ links: [
2202
+ { name: "About", href: "#" },
2203
+ { name: "Team", href: "#" },
2204
+ { name: "Blog", href: "#" },
2205
+ { name: "Careers", href: "#" }
2206
+ ]
2207
+ },
2208
+ {
2209
+ title: "Resources",
2210
+ links: [
2211
+ { name: "Help", href: "#" },
2212
+ { name: "Sales", href: "#" },
2213
+ { name: "Advertise", href: "#" }
2214
+ ]
2215
+ }
2216
+ ];
2217
+ var defaultSocialLinks10 = [
2218
+ { icon: "simple-icons/instagram", href: "#", label: "Instagram" },
2219
+ { icon: "simple-icons/facebook", href: "#", label: "Facebook" },
2220
+ { icon: "simple-icons/x", href: "#", label: "X (Twitter)" },
2221
+ { icon: "simple-icons/linkedin", href: "#", label: "LinkedIn" }
2222
+ ];
2223
+ var defaultLegalLinks3 = [
2224
+ { name: "Terms and Conditions", href: "#" },
2225
+ { name: "Privacy Policy", href: "#" }
2226
+ ];
2227
+ function FooterNavSocial({
2228
+ logo = {
2229
+ url: "https://opensite.ai",
2230
+ src: "https://cdn.ing/assets/i/r/285975/eud79qeya11q5w6ueyhklueardyx/os-suircle-black-white.png",
2231
+ alt: "Opensite AI",
2232
+ title: "Opensite AI"
2233
+ },
2234
+ className,
2235
+ sections = defaultSections6,
2236
+ socialLinks = defaultSocialLinks10,
2237
+ newsletterHeading = "Stay Updated",
2238
+ newsletterDescription = "Subscribe to our newsletter for the latest updates and news.",
2239
+ newsletterPlaceholder = "Enter your email",
2240
+ newsletterButtonText = "Subscribe",
2241
+ copyright = `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} Opensite AI. All rights reserved.`,
2242
+ legalLinks = defaultLegalLinks3,
2243
+ optixFlowConfig
2244
+ }) {
2245
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container", children: /* @__PURE__ */ jsxRuntime.jsxs("footer", { children: [
2246
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-10 lg:grid-cols-2", children: [
2247
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2248
+ /* @__PURE__ */ jsxRuntime.jsxs("a", { href: logo.url, className: "mb-8 flex items-center gap-2", children: [
2249
+ /* @__PURE__ */ jsxRuntime.jsx(
2250
+ img.Img,
2251
+ {
2252
+ src: logo.src,
2253
+ alt: logo.alt,
2254
+ className: "h-10",
2255
+ optixFlowConfig
2256
+ }
2257
+ ),
2258
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-semibold", children: logo.title })
2259
+ ] }),
2260
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-8 sm:grid-cols-3", children: sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2261
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 font-semibold", children: section.title }),
2262
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-3 text-sm text-muted-foreground", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, className: "hover:text-primary", children: link.name }) }, linkIdx)) })
2263
+ ] }, sectionIdx)) })
2264
+ ] }),
2265
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between", children: [
2266
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-8", children: [
2267
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-lg font-semibold", children: newsletterHeading }),
2268
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 text-sm text-muted-foreground", children: newsletterDescription }),
2269
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex max-w-md gap-2", children: [
2270
+ /* @__PURE__ */ jsxRuntime.jsx(
2271
+ "input",
2272
+ {
2273
+ type: "email",
2274
+ placeholder: newsletterPlaceholder,
2275
+ className: "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
2276
+ }
2277
+ ),
2278
+ /* @__PURE__ */ jsxRuntime.jsx(
2279
+ "button",
2280
+ {
2281
+ type: "submit",
2282
+ className: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2",
2283
+ children: newsletterButtonText
2284
+ }
2285
+ )
2286
+ ] })
2287
+ ] }),
2288
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2289
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 font-medium", children: "Follow Us" }),
2290
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex items-center gap-4", children: socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
2291
+ "a",
2292
+ {
2293
+ href: social.href,
2294
+ "aria-label": social.label,
2295
+ className: "text-muted-foreground transition-colors hover:text-primary",
2296
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: social.icon, size: 20 })
2297
+ }
2298
+ ) }, idx)) })
2299
+ ] })
2300
+ ] })
2301
+ ] }),
2302
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-16 flex flex-col justify-between gap-4 border-t pt-8 text-sm text-muted-foreground md:flex-row md:items-center", children: [
2303
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 md:flex-row md:items-center md:gap-4", children: [
2304
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: copyright }),
2305
+ /* @__PURE__ */ jsxRuntime.jsx(
2306
+ "a",
2307
+ {
2308
+ href: "https://opensite.ai",
2309
+ className: "hover:text-primary",
2310
+ target: "_blank",
2311
+ rel: "noopener noreferrer",
2312
+ children: "AI Website and Automation Platform by Opensite"
2313
+ }
2314
+ )
2315
+ ] }),
2316
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex gap-4", children: legalLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, className: "hover:text-primary", children: link.name }) }, idx)) })
2317
+ ] })
2318
+ ] }) }) });
2319
+ }
766
2320
 
767
2321
  // src/registry/blocks.ts
768
2322
  var BLOCK_REGISTRY = {
@@ -926,10 +2480,426 @@ var BLOCK_REGISTRY = {
926
2480
  mediaComponent: <img src="..." alt="Integrations" className="rounded-lg" />
927
2481
  }
928
2482
  ]}
2483
+ />
2484
+ `.trim()
2485
+ },
2486
+ "team-media-showcase": {
2487
+ id: "team-media-showcase",
2488
+ name: "Team Media Showcase",
2489
+ description: "Display team members in a responsive grid with full-bleed background images and hover effects. Each card shows the member's name and role with an optional action element that appears on hover. Ideal for team pages, about sections, or leadership showcases.",
2490
+ semanticTags: [
2491
+ "team",
2492
+ "members",
2493
+ "staff",
2494
+ "people",
2495
+ "leadership",
2496
+ "about",
2497
+ "grid",
2498
+ "cards",
2499
+ "hover",
2500
+ "image-background",
2501
+ "profiles"
2502
+ ],
2503
+ category: "team",
2504
+ component: TeamMediaShowcase,
2505
+ props: "TeamMediaShowcaseProps",
2506
+ exampleUsage: `
2507
+ <TeamMediaShowcase
2508
+ listEyebrow="Our Team"
2509
+ background="white"
2510
+ verticalMargin="lg"
2511
+ items={[
2512
+ {
2513
+ imageSrc: "/team/john-doe.jpg",
2514
+ name: "John Doe",
2515
+ role: "CEO & Founder",
2516
+ action: (
2517
+ <Button variant="outline" className="text-white border-white">
2518
+ View Profile
2519
+ </Button>
2520
+ )
2521
+ },
2522
+ {
2523
+ imageSrc: "/team/jane-smith.jpg",
2524
+ name: "Jane Smith",
2525
+ role: "CTO"
2526
+ },
2527
+ {
2528
+ imageSrc: "/team/bob-wilson.jpg",
2529
+ name: "Bob Wilson",
2530
+ role: "Head of Design"
2531
+ }
2532
+ ]}
2533
+ />
2534
+ `.trim()
2535
+ },
2536
+ // Footer blocks
2537
+ "footer-links-grid": {
2538
+ id: "footer-links-grid",
2539
+ name: "Footer Links Grid",
2540
+ description: "A multi-column footer with logo, navigation links, and legal information. Features a responsive grid layout with customizable navigation sections, company branding, and bottom legal links. Ideal for corporate websites, SaaS products, and marketing sites that need organized footer navigation.",
2541
+ semanticTags: [
2542
+ "footer",
2543
+ "navigation",
2544
+ "links",
2545
+ "multi-column",
2546
+ "grid",
2547
+ "corporate",
2548
+ "legal",
2549
+ "sitemap",
2550
+ "branding"
2551
+ ],
2552
+ category: "footer",
2553
+ component: FooterLinksGrid,
2554
+ props: "FooterLinksGridProps",
2555
+ exampleUsage: `
2556
+ <FooterLinksGrid
2557
+ logo={{
2558
+ src: "https://example.com/logo.png",
2559
+ alt: "Company Logo",
2560
+ title: "Company Name",
2561
+ url: "/"
2562
+ }}
2563
+ tagline="Components made easy."
2564
+ menuItems={[
2565
+ {
2566
+ title: "Product",
2567
+ links: [
2568
+ { text: "Overview", url: "#" },
2569
+ { text: "Pricing", url: "#" }
2570
+ ]
2571
+ }
2572
+ ]}
2573
+ />
2574
+ `.trim()
2575
+ },
2576
+ "footer-social-newsletter": {
2577
+ id: "footer-social-newsletter",
2578
+ name: "Footer Social Newsletter",
2579
+ description: "A footer with social icons, navigation links, and newsletter signup. Features prominent social media icons in circular buttons, multi-column navigation, and an email newsletter subscription form. Ideal for community-focused products, SaaS platforms, and businesses that prioritize social engagement and email marketing.",
2580
+ semanticTags: [
2581
+ "footer",
2582
+ "social",
2583
+ "newsletter",
2584
+ "subscription",
2585
+ "email",
2586
+ "community",
2587
+ "icons",
2588
+ "navigation"
2589
+ ],
2590
+ category: "footer",
2591
+ component: FooterSocialNewsletter,
2592
+ props: "FooterSocialNewsletterProps",
2593
+ exampleUsage: `
2594
+ <FooterSocialNewsletter
2595
+ socialLinks={[
2596
+ { icon: "simple-icons/discord", href: "#", label: "Discord" },
2597
+ { icon: "simple-icons/x", href: "#", label: "X (Twitter)" }
2598
+ ]}
2599
+ newsletterLabel="Subscribe to our newsletter"
2600
+ />
2601
+ `.trim()
2602
+ },
2603
+ "footer-social-apps": {
2604
+ id: "footer-social-apps",
2605
+ name: "Footer Social Apps",
2606
+ description: "A footer with social icons, navigation links, and mobile app download links. Features prominent social media icons and mobile app store links in circular buttons, along with multi-column navigation. Ideal for products with mobile apps, community-focused platforms, and businesses that want to highlight their cross-platform presence.",
2607
+ semanticTags: [
2608
+ "footer",
2609
+ "social",
2610
+ "mobile",
2611
+ "apps",
2612
+ "download",
2613
+ "android",
2614
+ "ios",
2615
+ "app-store",
2616
+ "navigation"
2617
+ ],
2618
+ category: "footer",
2619
+ component: FooterSocialApps,
2620
+ props: "FooterSocialAppsProps",
2621
+ exampleUsage: `
2622
+ <FooterSocialApps
2623
+ socialLinks={[
2624
+ { icon: "simple-icons/discord", href: "#", label: "Discord" }
2625
+ ]}
2626
+ appLinks={[
2627
+ { icon: "mdi/android", href: "#", label: "Android" },
2628
+ { icon: "mdi/apple", href: "#", label: "iOS" }
2629
+ ]}
2630
+ />
2631
+ `.trim()
2632
+ },
2633
+ "footer-simple-centered": {
2634
+ id: "footer-simple-centered",
2635
+ name: "Footer Simple Centered",
2636
+ description: "A clean, minimal footer with logo, sitemap, and legal links. Features a simple two-column sitemap layout with company branding and bottom legal links. Ideal for corporate websites, landing pages, and products that prefer a clean, uncluttered footer design without social media or newsletter elements.",
2637
+ semanticTags: [
2638
+ "footer",
2639
+ "minimal",
2640
+ "simple",
2641
+ "clean",
2642
+ "sitemap",
2643
+ "corporate",
2644
+ "legal",
2645
+ "centered"
2646
+ ],
2647
+ category: "footer",
2648
+ component: FooterSimpleCentered,
2649
+ props: "FooterSimpleCenteredProps",
2650
+ exampleUsage: `
2651
+ <FooterSimpleCentered
2652
+ tagline="Components made easy."
2653
+ sitemap={[
2654
+ {
2655
+ title: "Company",
2656
+ links: [
2657
+ { title: "About Us", href: "#" },
2658
+ { title: "Careers", href: "#" }
2659
+ ]
2660
+ }
2661
+ ]}
2662
+ />
2663
+ `.trim()
2664
+ },
2665
+ "footer-brand-description": {
2666
+ id: "footer-brand-description",
2667
+ name: "Footer Brand Description",
2668
+ description: "A footer with logo, description, social icons, and navigation. Features a prominent brand section with logo, description, and social links on the left, with multi-column navigation on the right. Ideal for brand-focused websites, startups, and businesses that want to emphasize their identity and social presence in the footer.",
2669
+ semanticTags: [
2670
+ "footer",
2671
+ "brand",
2672
+ "description",
2673
+ "social",
2674
+ "identity",
2675
+ "startup",
2676
+ "navigation",
2677
+ "about"
2678
+ ],
2679
+ category: "footer",
2680
+ component: FooterBrandDescription,
2681
+ props: "FooterBrandDescriptionProps",
2682
+ exampleUsage: `
2683
+ <FooterBrandDescription
2684
+ description="A collection of components for your startup business or side project."
2685
+ socialLinks={[
2686
+ { icon: "simple-icons/instagram", href: "#", label: "Instagram" }
2687
+ ]}
2688
+ />
2689
+ `.trim()
2690
+ },
2691
+ "footer-newsletter-grid": {
2692
+ id: "footer-newsletter-grid",
2693
+ name: "Footer Newsletter Grid",
2694
+ description: "A comprehensive footer with logo, social icons, navigation, and newsletter. Features a full-width grid layout with brand section (logo, description, social icons), multi-column navigation, and a prominent newsletter signup form. Ideal for content-heavy websites, SaaS products, and businesses that prioritize email marketing and social engagement.",
2695
+ semanticTags: [
2696
+ "footer",
2697
+ "newsletter",
2698
+ "grid",
2699
+ "social",
2700
+ "comprehensive",
2701
+ "email",
2702
+ "marketing",
2703
+ "subscription"
2704
+ ],
2705
+ category: "footer",
2706
+ component: FooterNewsletterGrid,
2707
+ props: "FooterNewsletterGridProps",
2708
+ exampleUsage: `
2709
+ <FooterNewsletterGrid
2710
+ description="A collection of 100+ responsive HTML templates."
2711
+ newsletterTitle="Newsletter"
2712
+ newsletterPlaceholder="Email"
2713
+ />
2714
+ `.trim()
2715
+ },
2716
+ "footer-cta-banner": {
2717
+ id: "footer-cta-banner",
2718
+ name: "Footer CTA Banner",
2719
+ description: "A dark-themed footer with prominent CTA banner, navigation, and newsletter. Features a full-width call-to-action banner at the top with heading, description, and button, followed by multi-column navigation, newsletter signup, and social links. Ideal for SaaS products, marketing sites, and businesses that want to drive conversions directly from the footer.",
2720
+ semanticTags: [
2721
+ "footer",
2722
+ "cta",
2723
+ "banner",
2724
+ "dark",
2725
+ "conversion",
2726
+ "marketing",
2727
+ "newsletter",
2728
+ "call-to-action"
2729
+ ],
2730
+ category: "footer",
2731
+ component: FooterCtaBanner,
2732
+ props: "FooterCtaBannerProps",
2733
+ exampleUsage: `
2734
+ <FooterCtaBanner
2735
+ ctaHeading="Ready to get started?"
2736
+ ctaDescription="Join thousands of satisfied customers."
2737
+ ctaButtonText="Get Started"
2738
+ />
2739
+ `.trim()
2740
+ },
2741
+ "footer-contact-card": {
2742
+ id: "footer-contact-card",
2743
+ name: "Footer Contact Card",
2744
+ description: "A footer with large heading, contact information, and social links. Features a prominent heading, contact details (email, phone, address), social media icons, and horizontal navigation. Ideal for service businesses, agencies, and professional websites that want to emphasize contact information and make it easy for visitors to get in touch.",
2745
+ semanticTags: [
2746
+ "footer",
2747
+ "contact",
2748
+ "card",
2749
+ "email",
2750
+ "phone",
2751
+ "address",
2752
+ "social",
2753
+ "professional",
2754
+ "agency"
2755
+ ],
2756
+ category: "footer",
2757
+ component: FooterContactCard,
2758
+ props: "FooterContactCardProps",
2759
+ exampleUsage: `
2760
+ <FooterContactCard
2761
+ heading="Let's work together"
2762
+ email="hello@example.com"
2763
+ phone="+1 (555) 123-4567"
2764
+ address="123 Main Street, San Francisco, CA"
2765
+ />
2766
+ `.trim()
2767
+ },
2768
+ "footer-background-card": {
2769
+ id: "footer-background-card",
2770
+ name: "Footer Background Card",
2771
+ description: "A footer with background image and floating contact card. Features a full-width background image with a floating card containing profile image, personal message, CTA button, navigation links, and contact information. Ideal for creative professionals, agencies, portfolios, and businesses that want a visually striking footer with a personal touch.",
2772
+ semanticTags: [
2773
+ "footer",
2774
+ "background",
2775
+ "image",
2776
+ "card",
2777
+ "creative",
2778
+ "portfolio",
2779
+ "agency",
2780
+ "personal",
2781
+ "visual"
2782
+ ],
2783
+ category: "footer",
2784
+ component: FooterBackgroundCard,
2785
+ props: "FooterBackgroundCardProps",
2786
+ exampleUsage: `
2787
+ <FooterBackgroundCard
2788
+ backgroundImage="https://example.com/bg.jpg"
2789
+ profileImage="https://example.com/profile.jpg"
2790
+ tagline="Let's Connect"
2791
+ personalMessage="I'm passionate about creating beautiful components."
2792
+ ctaText="Schedule a call"
2793
+ />
2794
+ `.trim()
2795
+ },
2796
+ "footer-animated-social": {
2797
+ id: "footer-animated-social",
2798
+ name: "Footer Animated Social",
2799
+ description: "An animated footer with Framer Motion effects and social links. Features smooth entrance animations, a prominent heading with CTA button, animated social links with hover effects, and a clean separator. Ideal for modern websites, portfolios, and creative projects that want to add visual polish and interactivity to their footer.",
2800
+ semanticTags: [
2801
+ "footer",
2802
+ "animated",
2803
+ "motion",
2804
+ "social",
2805
+ "modern",
2806
+ "interactive",
2807
+ "creative",
2808
+ "portfolio"
2809
+ ],
2810
+ category: "footer",
2811
+ component: FooterAnimatedSocial,
2812
+ props: "FooterAnimatedSocialProps",
2813
+ exampleUsage: `
2814
+ <FooterAnimatedSocial
2815
+ heading="Connect with Me"
2816
+ description="No commitments. Just a quick chat to see if we click."
2817
+ ctaText="Get in Touch"
2818
+ socialLinks={[
2819
+ { name: "Instagram", href: "#" },
2820
+ { name: "X (Twitter)", href: "#" }
2821
+ ]}
2822
+ />
2823
+ `.trim()
2824
+ },
2825
+ "footer-newsletter-minimal": {
2826
+ id: "footer-newsletter-minimal",
2827
+ name: "Footer Newsletter Minimal",
2828
+ description: "A dark-themed minimal footer with newsletter and animated logo. Features a clean layout with main heading, support email, navigation columns, newsletter signup form, and a large animated brand logo. Ideal for modern SaaS products, creative agencies, and businesses that want a sophisticated, dark-themed footer with strong visual branding.",
2829
+ semanticTags: [
2830
+ "footer",
2831
+ "newsletter",
2832
+ "minimal",
2833
+ "dark",
2834
+ "animated",
2835
+ "logo",
2836
+ "saas",
2837
+ "sophisticated"
2838
+ ],
2839
+ category: "footer",
2840
+ component: FooterNewsletterMinimal,
2841
+ props: "FooterNewsletterMinimalProps",
2842
+ exampleUsage: `
2843
+ <FooterNewsletterMinimal
2844
+ heading="Unlock 800+ blocks now"
2845
+ supportEmail="hi@example.com"
2846
+ newsletterLabel="Sign up for newsletter :"
2847
+ />
2848
+ `.trim()
2849
+ },
2850
+ "footer-cta-social": {
2851
+ id: "footer-cta-social",
2852
+ name: "Footer CTA Social",
2853
+ description: "A centered CTA footer with decorative lines and social icons. Features a centered layout with decorative gradient lines, pre-heading text, large heading, description, prominent CTA button, social media icons, and contact email. Ideal for landing pages, marketing sites, and businesses that want a conversion-focused footer with strong visual appeal.",
2854
+ semanticTags: [
2855
+ "footer",
2856
+ "cta",
2857
+ "social",
2858
+ "centered",
2859
+ "conversion",
2860
+ "landing",
2861
+ "marketing",
2862
+ "decorative"
2863
+ ],
2864
+ category: "footer",
2865
+ component: FooterCtaSocial,
2866
+ props: "FooterCtaSocialProps",
2867
+ exampleUsage: `
2868
+ <FooterCtaSocial
2869
+ preHeading="Let's connect"
2870
+ heading="You want to scale faster? Try Opensite today."
2871
+ description="Join thousands of companies already using our platform."
2872
+ buttonText="Get Started Now"
2873
+ />
2874
+ `.trim()
2875
+ },
2876
+ "footer-nav-social": {
2877
+ id: "footer-nav-social",
2878
+ name: "Footer Nav Social",
2879
+ description: "A comprehensive footer with logo, navigation, newsletter, and social links. Features a logo with navigation sections, a newsletter signup form with heading and description, social media icons, and legal links. Ideal for SaaS products, corporate websites, and businesses that want a complete footer with all essential elements organized in a clean, professional layout.",
2880
+ semanticTags: [
2881
+ "footer",
2882
+ "navigation",
2883
+ "social",
2884
+ "newsletter",
2885
+ "comprehensive",
2886
+ "professional",
2887
+ "corporate",
2888
+ "complete"
2889
+ ],
2890
+ category: "footer",
2891
+ component: FooterNavSocial,
2892
+ props: "FooterNavSocialProps",
2893
+ exampleUsage: `
2894
+ <FooterNavSocial
2895
+ newsletterHeading="Stay Updated"
2896
+ newsletterDescription="Subscribe to our newsletter for the latest updates."
2897
+ socialLinks={[
2898
+ { icon: "simple-icons/instagram", href: "#", label: "Instagram" }
2899
+ ]}
929
2900
  />
930
2901
  `.trim()
931
2902
  }
932
- // Add more blocks here following this pattern
933
2903
  };
934
2904
  function getBlocksBySemanticTag(tag) {
935
2905
  return Object.values(BLOCK_REGISTRY).filter(