@opensite/ui 1.3.7 → 1.3.8

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 (53) hide show
  1. package/dist/components.cjs +159 -83
  2. package/dist/components.js +159 -83
  3. package/dist/feature-showcase.cjs +3 -3
  4. package/dist/feature-showcase.js +3 -3
  5. package/dist/footer-accordion-social.cjs +18 -0
  6. package/dist/footer-accordion-social.js +18 -0
  7. package/dist/footer-animated-social.cjs +18 -0
  8. package/dist/footer-animated-social.js +18 -0
  9. package/dist/footer-brand-description.cjs +18 -0
  10. package/dist/footer-brand-description.js +18 -0
  11. package/dist/footer-brand-links-contact.cjs +18 -0
  12. package/dist/footer-brand-links-contact.js +18 -0
  13. package/dist/footer-comprehensive-links.cjs +18 -0
  14. package/dist/footer-comprehensive-links.js +18 -0
  15. package/dist/footer-contact-card.cjs +18 -0
  16. package/dist/footer-contact-card.js +18 -0
  17. package/dist/footer-cta-banner.cjs +18 -0
  18. package/dist/footer-cta-banner.js +18 -0
  19. package/dist/footer-cta-social.cjs +18 -0
  20. package/dist/footer-cta-social.js +18 -0
  21. package/dist/footer-info-cards-accordion.cjs +18 -0
  22. package/dist/footer-info-cards-accordion.js +18 -0
  23. package/dist/footer-links-grid.cjs +9 -14
  24. package/dist/footer-links-grid.d.cts +5 -1
  25. package/dist/footer-links-grid.d.ts +5 -1
  26. package/dist/footer-links-grid.js +9 -14
  27. package/dist/footer-nav-social.cjs +18 -0
  28. package/dist/footer-nav-social.js +18 -0
  29. package/dist/footer-newsletter-contact.cjs +18 -0
  30. package/dist/footer-newsletter-contact.js +18 -0
  31. package/dist/footer-newsletter-grid.cjs +18 -0
  32. package/dist/footer-newsletter-grid.js +18 -0
  33. package/dist/footer-newsletter-minimal.cjs +18 -0
  34. package/dist/footer-newsletter-minimal.js +18 -0
  35. package/dist/footer-social-apps.cjs +18 -0
  36. package/dist/footer-social-apps.js +18 -0
  37. package/dist/footer-social-newsletter.cjs +150 -99
  38. package/dist/footer-social-newsletter.d.cts +5 -1
  39. package/dist/footer-social-newsletter.d.ts +5 -1
  40. package/dist/footer-social-newsletter.js +150 -99
  41. package/dist/footer-split-image-accordion.cjs +18 -0
  42. package/dist/footer-split-image-accordion.js +18 -0
  43. package/dist/index.cjs +159 -83
  44. package/dist/index.js +159 -83
  45. package/dist/navbar-fullscreen-menu.cjs +18 -0
  46. package/dist/navbar-fullscreen-menu.js +18 -0
  47. package/dist/navbar-transparent-overlay.cjs +18 -0
  48. package/dist/navbar-transparent-overlay.js +18 -0
  49. package/dist/registry.cjs +162 -86
  50. package/dist/registry.js +162 -86
  51. package/dist/social-link-icon.cjs +18 -0
  52. package/dist/social-link-icon.js +18 -0
  53. package/package.json +2 -2
@@ -1658,6 +1658,24 @@ var platformIconMap = {
1658
1658
  spotify: "cib/spotify",
1659
1659
  apple: "cib/apple",
1660
1660
  x: "line-md/twitter-x",
1661
+ github: "cib/github",
1662
+ snapchat: "cib/snapchat",
1663
+ discord: "cib/discord",
1664
+ dev: "simple-icons/devdotto",
1665
+ substack: "simple-icons/substack",
1666
+ reddit: "cib/reddit",
1667
+ pinterest: "cib/pinterest",
1668
+ threads: "simple-icons/threads",
1669
+ twitch: "cib/twitch",
1670
+ whatsapp: "cib/whatsapp",
1671
+ telegram: "cib/telegram",
1672
+ medium: "simple-icons/medium",
1673
+ patreon: "cib/patreon",
1674
+ onlyfans: "simple-icons/onlyfans",
1675
+ eventbrite: "cib/eventbrite",
1676
+ npmjs: "simple-icons/npm",
1677
+ crates: "cib/rust",
1678
+ rubygems: "cib/rubygems",
1661
1679
  unknown: "icon-park-solid/circular-connection"
1662
1680
  };
1663
1681
  var SocialLinkIcon = React4__namespace.forwardRef(
@@ -2953,10 +2971,11 @@ function FooterLinksGrid({
2953
2971
  attributionHref,
2954
2972
  bottomLinks,
2955
2973
  background,
2956
- spacing,
2957
2974
  pattern,
2958
2975
  patternOpacity,
2959
- optixFlowConfig
2976
+ optixFlowConfig,
2977
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
2978
+ spacing = "py-6 md:py-32"
2960
2979
  }) {
2961
2980
  const currentYear = React4.useMemo(() => (/* @__PURE__ */ new Date()).getFullYear(), []);
2962
2981
  const copyrightText = copyright ?? `\xA9 ${currentYear}`;
@@ -2968,9 +2987,10 @@ function FooterLinksGrid({
2968
2987
  pattern,
2969
2988
  patternOpacity,
2970
2989
  className: cn(className),
2990
+ containerClassName,
2971
2991
  children: /* @__PURE__ */ jsxRuntime.jsxs("footer", { children: [
2972
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-8 lg:grid-cols-6", children: [
2973
- (logo || tagline) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-2 mb-8 lg:mb-0", children: [
2992
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4 md:gap-8 md:grid-cols-6", children: [
2993
+ (logo || tagline) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex space-y-2 col-span-2 flex-col mb-6 md:mb-0 pr-0 md:pr-6", children: [
2974
2994
  logo && /* @__PURE__ */ jsxRuntime.jsx(
2975
2995
  FooterLogo,
2976
2996
  {
@@ -2983,17 +3003,10 @@ function FooterLinksGrid({
2983
3003
  ] }),
2984
3004
  menuItems && menuItems.length > 0 && menuItems.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2985
3005
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 font-bold", children: section.title }),
2986
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-4 text-muted-foreground", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx(
2987
- "li",
2988
- {
2989
- className: "font-medium hover:text-primary",
2990
- children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: link.url, children: link.text })
2991
- },
2992
- linkIdx
2993
- )) })
3006
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-4", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "text-sm font-medium", children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: link.url, children: link.text }) }, linkIdx)) })
2994
3007
  ] }, sectionIdx))
2995
3008
  ] }),
2996
- /* @__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: [
3009
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-24 flex flex-col justify-between gap-4 border-t pt-8 text-sm font-medium md:flex-row md:items-center", children: [
2997
3010
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 md:flex-row md:items-center md:gap-4", children: [
2998
3011
  /* @__PURE__ */ jsxRuntime.jsx("p", { children: copyrightText }),
2999
3012
  attributionText && /* @__PURE__ */ jsxRuntime.jsx(
@@ -3005,7 +3018,7 @@ function FooterLinksGrid({
3005
3018
  }
3006
3019
  )
3007
3020
  ] }),
3008
- bottomLinks && bottomLinks.length > 0 && /* @__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(Pressable, { href: link.url, children: link.text }) }, linkIdx)) })
3021
+ bottomLinks && bottomLinks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex gap-4", children: bottomLinks.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "underline", children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: link.url, children: link.text }) }, linkIdx)) })
3009
3022
  ] })
3010
3023
  ] })
3011
3024
  }
@@ -3043,7 +3056,8 @@ function FooterSocialNewsletter({
3043
3056
  bottomClassName,
3044
3057
  copyrightClassName,
3045
3058
  background,
3046
- spacing,
3059
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
3060
+ spacing = "py-6 md:py-32",
3047
3061
  pattern,
3048
3062
  patternOpacity,
3049
3063
  optixFlowConfig
@@ -3058,88 +3072,150 @@ function FooterSocialNewsletter({
3058
3072
  pattern,
3059
3073
  patternOpacity,
3060
3074
  className: cn(className),
3075
+ containerClassName,
3061
3076
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(contentClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("footer", { children: [
3062
3077
  logo && /* @__PURE__ */ jsxRuntime.jsx(
3063
3078
  FooterLogo,
3064
3079
  {
3065
3080
  logo,
3066
- logoClassName: cn("flex items-center gap-2", logoWrapperClassName),
3081
+ logoClassName: cn(
3082
+ "flex items-center gap-2",
3083
+ logoWrapperClassName
3084
+ ),
3067
3085
  logoImageClassName: cn("h-10", logoClassName),
3068
3086
  optixFlowConfig
3069
3087
  }
3070
3088
  ),
3071
- (sections && sections.length > 0 || socialLinks && socialLinks.length > 0 || newsletterLabel || newsletterButtonText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-14 grid gap-8 md:grid-cols-2 lg:grid-cols-5 xl:grid-cols-4", gridClassName), children: [
3072
- sections && sections.length > 0 && sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(navSectionClassName), children: [
3073
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-4 font-bold", navTitleClassName), children: section.title }),
3074
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("space-y-4 text-muted-foreground", navLinksClassName), children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx(
3075
- "li",
3076
- {
3077
- className: cn("font-medium hover:text-primary", navLinkClassName),
3078
- children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: link.href, children: link.name })
3079
- },
3080
- linkIdx
3081
- )) })
3082
- ] }, sectionIdx)),
3083
- (socialLinks && socialLinks.length > 0 || newsletterLabel || newsletterButtonText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("lg:col-span-2 xl:col-span-1", socialColumnClassName), children: [
3084
- socialLinks && socialLinks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("mb-10 flex items-center gap-2 text-muted-foreground", socialLinksClassName), children: socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsxRuntime.jsx(
3085
- SocialLinkIcon,
3086
- {
3087
- href: social.href,
3088
- label: social.label,
3089
- iconNameOverride: social.iconNameOverride,
3090
- iconSize: 24,
3091
- className: cn(
3092
- "flex size-12 items-center justify-center rounded-full transition-colors hover:text-primary",
3093
- getNestedCardBg(background),
3094
- getNestedCardTextColor(background),
3095
- socialLinkClassName
3096
- )
3097
- }
3098
- ) }, idx)) }),
3099
- (newsletterLabel || newsletterButtonText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid w-full max-w-sm items-center gap-1.5", newsletterClassName), children: [
3100
- newsletterLabel && /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "newsletter-email", className: "text-sm font-medium", children: newsletterLabel }),
3101
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full max-w-sm items-center space-x-2", children: [
3102
- /* @__PURE__ */ jsxRuntime.jsx(
3103
- "input",
3089
+ sections && sections.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
3090
+ "div",
3091
+ {
3092
+ className: cn(
3093
+ "mt-14 grid gap-8 md:grid-cols-2 lg:grid-cols-5 xl:grid-cols-4",
3094
+ gridClassName
3095
+ ),
3096
+ children: sections && sections.length > 0 && sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(navSectionClassName), children: [
3097
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-4 font-bold", navTitleClassName), children: section.title }),
3098
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("space-y-4", navLinksClassName), children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx(
3099
+ "li",
3100
+ {
3101
+ className: cn("font-medium", navLinkClassName),
3102
+ children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: link.href, children: link.name })
3103
+ },
3104
+ linkIdx
3105
+ )) })
3106
+ ] }, sectionIdx))
3107
+ }
3108
+ ) : null,
3109
+ (socialLinks && socialLinks.length > 0 || newsletterLabel || newsletterButtonText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("lg:col-span-2 xl:col-span-1"), children: [
3110
+ (newsletterLabel || newsletterButtonText) && /* @__PURE__ */ jsxRuntime.jsxs(
3111
+ "div",
3112
+ {
3113
+ className: cn(
3114
+ "grid w-full max-w-sm items-center gap-1.5",
3115
+ newsletterClassName
3116
+ ),
3117
+ children: [
3118
+ newsletterLabel && /* @__PURE__ */ jsxRuntime.jsx(
3119
+ "label",
3104
3120
  {
3105
- type: "email",
3106
- id: "newsletter-email",
3107
- placeholder: newsletterPlaceholder || "Email",
3108
- className: cn("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", newsletterInputClassName)
3121
+ htmlFor: "newsletter-email",
3122
+ className: "text-sm font-medium",
3123
+ children: newsletterLabel
3109
3124
  }
3110
3125
  ),
3111
- newsletterButtonText && /* @__PURE__ */ jsxRuntime.jsx(
3112
- Pressable,
3113
- {
3114
- onClick: (e) => {
3115
- e.preventDefault();
3116
- },
3117
- variant: "default",
3118
- size: "default",
3119
- asButton: true,
3120
- className: cn(newsletterButtonClassName),
3121
- children: newsletterButtonText
3122
- }
3123
- )
3124
- ] }),
3125
- (privacyConsentText || privacyLinkText) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("mt-1 text-xs text-muted-foreground", privacyClassName), children: [
3126
- privacyConsentText,
3127
- privacyLinkText && /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: privacyLinkUrl || "#", className: "ml-1 text-primary hover:underline", children: privacyLinkText })
3128
- ] })
3129
- ] })
3130
- ] })
3131
- ] }),
3132
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("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", bottomClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-2 md:flex-row md:items-center md:gap-4", copyrightClassName), children: [
3133
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: copyrightText }),
3134
- attributionText && /* @__PURE__ */ jsxRuntime.jsx(
3135
- Pressable,
3126
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full max-w-sm items-center space-x-2", children: [
3127
+ /* @__PURE__ */ jsxRuntime.jsx(
3128
+ "input",
3129
+ {
3130
+ type: "email",
3131
+ id: "newsletter-email",
3132
+ placeholder: newsletterPlaceholder || "Email",
3133
+ className: cn(
3134
+ "flex h-10 w-full rounded-md border border-input px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
3135
+ newsletterInputClassName
3136
+ )
3137
+ }
3138
+ ),
3139
+ newsletterButtonText && /* @__PURE__ */ jsxRuntime.jsx(
3140
+ Pressable,
3141
+ {
3142
+ onClick: (e) => {
3143
+ e.preventDefault();
3144
+ },
3145
+ variant: "default",
3146
+ size: "default",
3147
+ asButton: true,
3148
+ className: cn(newsletterButtonClassName),
3149
+ children: newsletterButtonText
3150
+ }
3151
+ )
3152
+ ] }),
3153
+ (privacyConsentText || privacyLinkText) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("mt-1 text-xs ", privacyClassName), children: [
3154
+ privacyConsentText,
3155
+ privacyLinkText && /* @__PURE__ */ jsxRuntime.jsx(
3156
+ Pressable,
3157
+ {
3158
+ href: privacyLinkUrl || "#",
3159
+ className: "ml-1 hover:underline",
3160
+ children: privacyLinkText
3161
+ }
3162
+ )
3163
+ ] })
3164
+ ]
3165
+ }
3166
+ ),
3167
+ socialLinks && socialLinks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("", socialColumnClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
3168
+ "ul",
3136
3169
  {
3137
- href: attributionHref || "https://opensite.ai",
3138
- className: "hover:text-primary",
3139
- children: attributionText
3170
+ className: cn(
3171
+ "mb-10 flex items-center gap-2",
3172
+ socialLinksClassName
3173
+ ),
3174
+ children: socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsxRuntime.jsx(
3175
+ SocialLinkIcon,
3176
+ {
3177
+ href: social.href,
3178
+ label: social.label,
3179
+ iconNameOverride: social.iconNameOverride,
3180
+ iconSize: 24,
3181
+ className: cn(
3182
+ "flex size-12 items-center justify-center rounded-full transition-colors",
3183
+ socialLinkClassName
3184
+ )
3185
+ }
3186
+ ) }, idx))
3140
3187
  }
3141
- )
3142
- ] }) })
3188
+ ) })
3189
+ ] }),
3190
+ /* @__PURE__ */ jsxRuntime.jsx(
3191
+ "div",
3192
+ {
3193
+ className: cn(
3194
+ "mt-20 flex flex-col justify-between gap-4 border-t pt-8 text-sm font-medium md:flex-row md:items-center",
3195
+ bottomClassName
3196
+ ),
3197
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
3198
+ "div",
3199
+ {
3200
+ className: cn(
3201
+ "flex flex-col gap-2 md:flex-row md:items-center md:gap-4",
3202
+ copyrightClassName
3203
+ ),
3204
+ children: [
3205
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: copyrightText }),
3206
+ attributionText && /* @__PURE__ */ jsxRuntime.jsx(
3207
+ Pressable,
3208
+ {
3209
+ href: attributionHref || "https://opensite.ai",
3210
+ className: "hover:text-primary",
3211
+ children: attributionText
3212
+ }
3213
+ )
3214
+ ]
3215
+ }
3216
+ )
3217
+ }
3218
+ )
3143
3219
  ] }) })
3144
3220
  }
3145
3221
  );
@@ -1635,6 +1635,24 @@ var platformIconMap = {
1635
1635
  spotify: "cib/spotify",
1636
1636
  apple: "cib/apple",
1637
1637
  x: "line-md/twitter-x",
1638
+ github: "cib/github",
1639
+ snapchat: "cib/snapchat",
1640
+ discord: "cib/discord",
1641
+ dev: "simple-icons/devdotto",
1642
+ substack: "simple-icons/substack",
1643
+ reddit: "cib/reddit",
1644
+ pinterest: "cib/pinterest",
1645
+ threads: "simple-icons/threads",
1646
+ twitch: "cib/twitch",
1647
+ whatsapp: "cib/whatsapp",
1648
+ telegram: "cib/telegram",
1649
+ medium: "simple-icons/medium",
1650
+ patreon: "cib/patreon",
1651
+ onlyfans: "simple-icons/onlyfans",
1652
+ eventbrite: "cib/eventbrite",
1653
+ npmjs: "simple-icons/npm",
1654
+ crates: "cib/rust",
1655
+ rubygems: "cib/rubygems",
1638
1656
  unknown: "icon-park-solid/circular-connection"
1639
1657
  };
1640
1658
  var SocialLinkIcon = React4.forwardRef(
@@ -2930,10 +2948,11 @@ function FooterLinksGrid({
2930
2948
  attributionHref,
2931
2949
  bottomLinks,
2932
2950
  background,
2933
- spacing,
2934
2951
  pattern,
2935
2952
  patternOpacity,
2936
- optixFlowConfig
2953
+ optixFlowConfig,
2954
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
2955
+ spacing = "py-6 md:py-32"
2937
2956
  }) {
2938
2957
  const currentYear = useMemo(() => (/* @__PURE__ */ new Date()).getFullYear(), []);
2939
2958
  const copyrightText = copyright ?? `\xA9 ${currentYear}`;
@@ -2945,9 +2964,10 @@ function FooterLinksGrid({
2945
2964
  pattern,
2946
2965
  patternOpacity,
2947
2966
  className: cn(className),
2967
+ containerClassName,
2948
2968
  children: /* @__PURE__ */ jsxs("footer", { children: [
2949
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-8 lg:grid-cols-6", children: [
2950
- (logo || tagline) && /* @__PURE__ */ jsxs("div", { className: "col-span-2 mb-8 lg:mb-0", children: [
2969
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4 md:gap-8 md:grid-cols-6", children: [
2970
+ (logo || tagline) && /* @__PURE__ */ jsxs("div", { className: "flex space-y-2 col-span-2 flex-col mb-6 md:mb-0 pr-0 md:pr-6", children: [
2951
2971
  logo && /* @__PURE__ */ jsx(
2952
2972
  FooterLogo,
2953
2973
  {
@@ -2960,17 +2980,10 @@ function FooterLinksGrid({
2960
2980
  ] }),
2961
2981
  menuItems && menuItems.length > 0 && menuItems.map((section, sectionIdx) => /* @__PURE__ */ jsxs("div", { children: [
2962
2982
  /* @__PURE__ */ jsx("h3", { className: "mb-4 font-bold", children: section.title }),
2963
- /* @__PURE__ */ jsx("ul", { className: "space-y-4 text-muted-foreground", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsx(
2964
- "li",
2965
- {
2966
- className: "font-medium hover:text-primary",
2967
- children: /* @__PURE__ */ jsx(Pressable, { href: link.url, children: link.text })
2968
- },
2969
- linkIdx
2970
- )) })
2983
+ /* @__PURE__ */ jsx("ul", { className: "space-y-4", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsx("li", { className: "text-sm font-medium", children: /* @__PURE__ */ jsx(Pressable, { href: link.url, children: link.text }) }, linkIdx)) })
2971
2984
  ] }, sectionIdx))
2972
2985
  ] }),
2973
- /* @__PURE__ */ 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: [
2986
+ /* @__PURE__ */ jsxs("div", { className: "mt-24 flex flex-col justify-between gap-4 border-t pt-8 text-sm font-medium md:flex-row md:items-center", children: [
2974
2987
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 md:flex-row md:items-center md:gap-4", children: [
2975
2988
  /* @__PURE__ */ jsx("p", { children: copyrightText }),
2976
2989
  attributionText && /* @__PURE__ */ jsx(
@@ -2982,7 +2995,7 @@ function FooterLinksGrid({
2982
2995
  }
2983
2996
  )
2984
2997
  ] }),
2985
- bottomLinks && bottomLinks.length > 0 && /* @__PURE__ */ jsx("ul", { className: "flex gap-4", children: bottomLinks.map((link, linkIdx) => /* @__PURE__ */ jsx("li", { className: "underline hover:text-primary", children: /* @__PURE__ */ jsx(Pressable, { href: link.url, children: link.text }) }, linkIdx)) })
2998
+ bottomLinks && bottomLinks.length > 0 && /* @__PURE__ */ jsx("ul", { className: "flex gap-4", children: bottomLinks.map((link, linkIdx) => /* @__PURE__ */ jsx("li", { className: "underline", children: /* @__PURE__ */ jsx(Pressable, { href: link.url, children: link.text }) }, linkIdx)) })
2986
2999
  ] })
2987
3000
  ] })
2988
3001
  }
@@ -3020,7 +3033,8 @@ function FooterSocialNewsletter({
3020
3033
  bottomClassName,
3021
3034
  copyrightClassName,
3022
3035
  background,
3023
- spacing,
3036
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
3037
+ spacing = "py-6 md:py-32",
3024
3038
  pattern,
3025
3039
  patternOpacity,
3026
3040
  optixFlowConfig
@@ -3035,88 +3049,150 @@ function FooterSocialNewsletter({
3035
3049
  pattern,
3036
3050
  patternOpacity,
3037
3051
  className: cn(className),
3052
+ containerClassName,
3038
3053
  children: /* @__PURE__ */ jsx("div", { className: cn(contentClassName), children: /* @__PURE__ */ jsxs("footer", { children: [
3039
3054
  logo && /* @__PURE__ */ jsx(
3040
3055
  FooterLogo,
3041
3056
  {
3042
3057
  logo,
3043
- logoClassName: cn("flex items-center gap-2", logoWrapperClassName),
3058
+ logoClassName: cn(
3059
+ "flex items-center gap-2",
3060
+ logoWrapperClassName
3061
+ ),
3044
3062
  logoImageClassName: cn("h-10", logoClassName),
3045
3063
  optixFlowConfig
3046
3064
  }
3047
3065
  ),
3048
- (sections && sections.length > 0 || socialLinks && socialLinks.length > 0 || newsletterLabel || newsletterButtonText) && /* @__PURE__ */ jsxs("div", { className: cn("mt-14 grid gap-8 md:grid-cols-2 lg:grid-cols-5 xl:grid-cols-4", gridClassName), children: [
3049
- sections && sections.length > 0 && sections.map((section, sectionIdx) => /* @__PURE__ */ jsxs("div", { className: cn(navSectionClassName), children: [
3050
- /* @__PURE__ */ jsx("h3", { className: cn("mb-4 font-bold", navTitleClassName), children: section.title }),
3051
- /* @__PURE__ */ jsx("ul", { className: cn("space-y-4 text-muted-foreground", navLinksClassName), children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsx(
3052
- "li",
3053
- {
3054
- className: cn("font-medium hover:text-primary", navLinkClassName),
3055
- children: /* @__PURE__ */ jsx(Pressable, { href: link.href, children: link.name })
3056
- },
3057
- linkIdx
3058
- )) })
3059
- ] }, sectionIdx)),
3060
- (socialLinks && socialLinks.length > 0 || newsletterLabel || newsletterButtonText) && /* @__PURE__ */ jsxs("div", { className: cn("lg:col-span-2 xl:col-span-1", socialColumnClassName), children: [
3061
- socialLinks && socialLinks.length > 0 && /* @__PURE__ */ jsx("ul", { className: cn("mb-10 flex items-center gap-2 text-muted-foreground", socialLinksClassName), children: socialLinks.map((social, idx) => /* @__PURE__ */ jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsx(
3062
- SocialLinkIcon,
3063
- {
3064
- href: social.href,
3065
- label: social.label,
3066
- iconNameOverride: social.iconNameOverride,
3067
- iconSize: 24,
3068
- className: cn(
3069
- "flex size-12 items-center justify-center rounded-full transition-colors hover:text-primary",
3070
- getNestedCardBg(background),
3071
- getNestedCardTextColor(background),
3072
- socialLinkClassName
3073
- )
3074
- }
3075
- ) }, idx)) }),
3076
- (newsletterLabel || newsletterButtonText) && /* @__PURE__ */ jsxs("div", { className: cn("grid w-full max-w-sm items-center gap-1.5", newsletterClassName), children: [
3077
- newsletterLabel && /* @__PURE__ */ jsx("label", { htmlFor: "newsletter-email", className: "text-sm font-medium", children: newsletterLabel }),
3078
- /* @__PURE__ */ jsxs("div", { className: "flex w-full max-w-sm items-center space-x-2", children: [
3079
- /* @__PURE__ */ jsx(
3080
- "input",
3066
+ sections && sections.length > 0 ? /* @__PURE__ */ jsx(
3067
+ "div",
3068
+ {
3069
+ className: cn(
3070
+ "mt-14 grid gap-8 md:grid-cols-2 lg:grid-cols-5 xl:grid-cols-4",
3071
+ gridClassName
3072
+ ),
3073
+ children: sections && sections.length > 0 && sections.map((section, sectionIdx) => /* @__PURE__ */ jsxs("div", { className: cn(navSectionClassName), children: [
3074
+ /* @__PURE__ */ jsx("h3", { className: cn("mb-4 font-bold", navTitleClassName), children: section.title }),
3075
+ /* @__PURE__ */ jsx("ul", { className: cn("space-y-4", navLinksClassName), children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsx(
3076
+ "li",
3077
+ {
3078
+ className: cn("font-medium", navLinkClassName),
3079
+ children: /* @__PURE__ */ jsx(Pressable, { href: link.href, children: link.name })
3080
+ },
3081
+ linkIdx
3082
+ )) })
3083
+ ] }, sectionIdx))
3084
+ }
3085
+ ) : null,
3086
+ (socialLinks && socialLinks.length > 0 || newsletterLabel || newsletterButtonText) && /* @__PURE__ */ jsxs("div", { className: cn("lg:col-span-2 xl:col-span-1"), children: [
3087
+ (newsletterLabel || newsletterButtonText) && /* @__PURE__ */ jsxs(
3088
+ "div",
3089
+ {
3090
+ className: cn(
3091
+ "grid w-full max-w-sm items-center gap-1.5",
3092
+ newsletterClassName
3093
+ ),
3094
+ children: [
3095
+ newsletterLabel && /* @__PURE__ */ jsx(
3096
+ "label",
3081
3097
  {
3082
- type: "email",
3083
- id: "newsletter-email",
3084
- placeholder: newsletterPlaceholder || "Email",
3085
- className: cn("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", newsletterInputClassName)
3098
+ htmlFor: "newsletter-email",
3099
+ className: "text-sm font-medium",
3100
+ children: newsletterLabel
3086
3101
  }
3087
3102
  ),
3088
- newsletterButtonText && /* @__PURE__ */ jsx(
3089
- Pressable,
3090
- {
3091
- onClick: (e) => {
3092
- e.preventDefault();
3093
- },
3094
- variant: "default",
3095
- size: "default",
3096
- asButton: true,
3097
- className: cn(newsletterButtonClassName),
3098
- children: newsletterButtonText
3099
- }
3100
- )
3101
- ] }),
3102
- (privacyConsentText || privacyLinkText) && /* @__PURE__ */ jsxs("p", { className: cn("mt-1 text-xs text-muted-foreground", privacyClassName), children: [
3103
- privacyConsentText,
3104
- privacyLinkText && /* @__PURE__ */ jsx(Pressable, { href: privacyLinkUrl || "#", className: "ml-1 text-primary hover:underline", children: privacyLinkText })
3105
- ] })
3106
- ] })
3107
- ] })
3108
- ] }),
3109
- /* @__PURE__ */ jsx("div", { className: cn("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", bottomClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-2 md:flex-row md:items-center md:gap-4", copyrightClassName), children: [
3110
- /* @__PURE__ */ jsx("p", { children: copyrightText }),
3111
- attributionText && /* @__PURE__ */ jsx(
3112
- Pressable,
3103
+ /* @__PURE__ */ jsxs("div", { className: "flex w-full max-w-sm items-center space-x-2", children: [
3104
+ /* @__PURE__ */ jsx(
3105
+ "input",
3106
+ {
3107
+ type: "email",
3108
+ id: "newsletter-email",
3109
+ placeholder: newsletterPlaceholder || "Email",
3110
+ className: cn(
3111
+ "flex h-10 w-full rounded-md border border-input px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
3112
+ newsletterInputClassName
3113
+ )
3114
+ }
3115
+ ),
3116
+ newsletterButtonText && /* @__PURE__ */ jsx(
3117
+ Pressable,
3118
+ {
3119
+ onClick: (e) => {
3120
+ e.preventDefault();
3121
+ },
3122
+ variant: "default",
3123
+ size: "default",
3124
+ asButton: true,
3125
+ className: cn(newsletterButtonClassName),
3126
+ children: newsletterButtonText
3127
+ }
3128
+ )
3129
+ ] }),
3130
+ (privacyConsentText || privacyLinkText) && /* @__PURE__ */ jsxs("p", { className: cn("mt-1 text-xs ", privacyClassName), children: [
3131
+ privacyConsentText,
3132
+ privacyLinkText && /* @__PURE__ */ jsx(
3133
+ Pressable,
3134
+ {
3135
+ href: privacyLinkUrl || "#",
3136
+ className: "ml-1 hover:underline",
3137
+ children: privacyLinkText
3138
+ }
3139
+ )
3140
+ ] })
3141
+ ]
3142
+ }
3143
+ ),
3144
+ socialLinks && socialLinks.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("", socialColumnClassName), children: /* @__PURE__ */ jsx(
3145
+ "ul",
3113
3146
  {
3114
- href: attributionHref || "https://opensite.ai",
3115
- className: "hover:text-primary",
3116
- children: attributionText
3147
+ className: cn(
3148
+ "mb-10 flex items-center gap-2",
3149
+ socialLinksClassName
3150
+ ),
3151
+ children: socialLinks.map((social, idx) => /* @__PURE__ */ jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsx(
3152
+ SocialLinkIcon,
3153
+ {
3154
+ href: social.href,
3155
+ label: social.label,
3156
+ iconNameOverride: social.iconNameOverride,
3157
+ iconSize: 24,
3158
+ className: cn(
3159
+ "flex size-12 items-center justify-center rounded-full transition-colors",
3160
+ socialLinkClassName
3161
+ )
3162
+ }
3163
+ ) }, idx))
3117
3164
  }
3118
- )
3119
- ] }) })
3165
+ ) })
3166
+ ] }),
3167
+ /* @__PURE__ */ jsx(
3168
+ "div",
3169
+ {
3170
+ className: cn(
3171
+ "mt-20 flex flex-col justify-between gap-4 border-t pt-8 text-sm font-medium md:flex-row md:items-center",
3172
+ bottomClassName
3173
+ ),
3174
+ children: /* @__PURE__ */ jsxs(
3175
+ "div",
3176
+ {
3177
+ className: cn(
3178
+ "flex flex-col gap-2 md:flex-row md:items-center md:gap-4",
3179
+ copyrightClassName
3180
+ ),
3181
+ children: [
3182
+ /* @__PURE__ */ jsx("p", { children: copyrightText }),
3183
+ attributionText && /* @__PURE__ */ jsx(
3184
+ Pressable,
3185
+ {
3186
+ href: attributionHref || "https://opensite.ai",
3187
+ className: "hover:text-primary",
3188
+ children: attributionText
3189
+ }
3190
+ )
3191
+ ]
3192
+ }
3193
+ )
3194
+ }
3195
+ )
3120
3196
  ] }) })
3121
3197
  }
3122
3198
  );