@opensite/ui 2.5.0 → 2.5.2

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.
@@ -1,9 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
2
  import { f as SectionBackground, g as SectionSpacing, t as PatternName } from './community-initiatives-B658AD6n.cjs';
4
3
  import { F as FooterSocialLink } from './types-Cs1jk79n.cjs';
5
4
  import { FormEngineProps } from '@page-speed/forms/integration';
6
- import { A as ActionConfig } from './blocks-DUr75v0S.cjs';
5
+ import 'react';
6
+ import './blocks-DUr75v0S.cjs';
7
7
  import 'class-variance-authority';
8
8
  import './button-variants-lRElsmTc.cjs';
9
9
  import 'class-variance-authority/types';
@@ -54,9 +54,11 @@ interface FooterAccordionSocialProps {
54
54
  * Logo configuration
55
55
  */
56
56
  logo?: {
57
- light: string;
58
- dark: string;
59
- url: string;
57
+ src: string;
58
+ /** Logo link URL */
59
+ url?: string;
60
+ /** Brand title */
61
+ alt?: string;
60
62
  };
61
63
  /**
62
64
  * Brand/company name for the copyright notice
@@ -101,18 +103,6 @@ interface FooterAccordionSocialProps {
101
103
  * Full form engine setup and props
102
104
  */
103
105
  formEngineSetup?: FormEngineProps;
104
- /**
105
- * Submit button configuration
106
- */
107
- buttonAction?: ActionConfig;
108
- /**
109
- * Custom slot for the form (overrides form props)
110
- */
111
- formSlot?: React.ReactNode;
112
- /**
113
- * Additional CSS classes for the newsletter form
114
- */
115
- newsletterFormClassName?: string;
116
106
  }
117
107
  /**
118
108
  * Footer Accordion Social - A footer with newsletter, navigation links,
@@ -139,6 +129,6 @@ interface FooterAccordionSocialProps {
139
129
  * />
140
130
  * ```
141
131
  */
142
- declare function FooterAccordionSocial({ newsletterTitle, newsletterDescription, footerLinks, socialLinks, logo, copyright, className, optixFlowConfig, background, containerClassName, spacing, pattern, patternOpacity, patternClassName, formEngineSetup, buttonAction, formSlot, newsletterFormClassName, }: FooterAccordionSocialProps): react_jsx_runtime.JSX.Element;
132
+ declare function FooterAccordionSocial({ newsletterTitle, newsletterDescription, footerLinks, socialLinks, logo, copyright, className, optixFlowConfig, background, containerClassName, spacing, pattern, patternOpacity, patternClassName, formEngineSetup, }: FooterAccordionSocialProps): react_jsx_runtime.JSX.Element;
143
133
 
144
134
  export { FooterAccordionSocial, type FooterAccordionSocialNavLink, type FooterAccordionSocialProps, type FooterAccordionSocialSection };
@@ -1,9 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
2
  import { f as SectionBackground, g as SectionSpacing, t as PatternName } from './community-initiatives-BphRfrhZ.js';
4
3
  import { F as FooterSocialLink } from './types-Cs1jk79n.js';
5
4
  import { FormEngineProps } from '@page-speed/forms/integration';
6
- import { A as ActionConfig } from './blocks-BzFuQGP0.js';
5
+ import 'react';
6
+ import './blocks-BzFuQGP0.js';
7
7
  import 'class-variance-authority';
8
8
  import './button-variants-lRElsmTc.js';
9
9
  import 'class-variance-authority/types';
@@ -54,9 +54,11 @@ interface FooterAccordionSocialProps {
54
54
  * Logo configuration
55
55
  */
56
56
  logo?: {
57
- light: string;
58
- dark: string;
59
- url: string;
57
+ src: string;
58
+ /** Logo link URL */
59
+ url?: string;
60
+ /** Brand title */
61
+ alt?: string;
60
62
  };
61
63
  /**
62
64
  * Brand/company name for the copyright notice
@@ -101,18 +103,6 @@ interface FooterAccordionSocialProps {
101
103
  * Full form engine setup and props
102
104
  */
103
105
  formEngineSetup?: FormEngineProps;
104
- /**
105
- * Submit button configuration
106
- */
107
- buttonAction?: ActionConfig;
108
- /**
109
- * Custom slot for the form (overrides form props)
110
- */
111
- formSlot?: React.ReactNode;
112
- /**
113
- * Additional CSS classes for the newsletter form
114
- */
115
- newsletterFormClassName?: string;
116
106
  }
117
107
  /**
118
108
  * Footer Accordion Social - A footer with newsletter, navigation links,
@@ -139,6 +129,6 @@ interface FooterAccordionSocialProps {
139
129
  * />
140
130
  * ```
141
131
  */
142
- declare function FooterAccordionSocial({ newsletterTitle, newsletterDescription, footerLinks, socialLinks, logo, copyright, className, optixFlowConfig, background, containerClassName, spacing, pattern, patternOpacity, patternClassName, formEngineSetup, buttonAction, formSlot, newsletterFormClassName, }: FooterAccordionSocialProps): react_jsx_runtime.JSX.Element;
132
+ declare function FooterAccordionSocial({ newsletterTitle, newsletterDescription, footerLinks, socialLinks, logo, copyright, className, optixFlowConfig, background, containerClassName, spacing, pattern, patternOpacity, patternClassName, formEngineSetup, }: FooterAccordionSocialProps): react_jsx_runtime.JSX.Element;
143
133
 
144
134
  export { FooterAccordionSocial, type FooterAccordionSocialNavLink, type FooterAccordionSocialProps, type FooterAccordionSocialSection };
@@ -4,11 +4,11 @@ import React__default, { useMemo } from 'react';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { cva } from 'class-variance-authority';
7
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
- import { Img } from '@page-speed/img';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
9
8
  import { Icon } from '@page-speed/icon';
10
9
  import { usePlatformFromUrl } from '@opensite/hooks/usePlatformFromUrl';
11
10
  import { FormEngine } from '@page-speed/forms/integration';
11
+ import { Img } from '@page-speed/img';
12
12
 
13
13
  // components/blocks/footers/footer-accordion-social.tsx
14
14
  function cn(...inputs) {
@@ -432,77 +432,6 @@ var Pressable = React.forwardRef(
432
432
  }
433
433
  );
434
434
  Pressable.displayName = "Pressable";
435
- function isThemedLogo(logo) {
436
- return "light" in logo || "dark" in logo;
437
- }
438
- var FooterLogo = ({
439
- logo,
440
- logoSlot,
441
- logoClassName,
442
- logoImageClassName,
443
- logoTitleClassName,
444
- optixFlowConfig
445
- }) => {
446
- if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
447
- if (!logo) return null;
448
- const hasThemedSources = isThemedLogo(logo) && (logo.light || logo.dark);
449
- const hasStandardSource = !isThemedLogo(logo) && logo.src;
450
- const logoContent = hasThemedSources ? (
451
- // Themed logo with light/dark mode sources
452
- /* @__PURE__ */ jsxs(Fragment, { children: [
453
- logo.light && /* @__PURE__ */ jsx(
454
- Img,
455
- {
456
- src: logo.light,
457
- alt: logo.alt || "Logo",
458
- className: cn(
459
- "h-8 w-auto object-contain dark:hidden md:h-10",
460
- logoImageClassName
461
- ),
462
- optixFlowConfig
463
- }
464
- ),
465
- logo.dark && /* @__PURE__ */ jsx(
466
- Img,
467
- {
468
- src: logo.dark,
469
- alt: logo.alt || "Logo",
470
- className: cn(
471
- "hidden h-8 w-auto object-contain dark:block md:h-10",
472
- logoImageClassName
473
- ),
474
- optixFlowConfig
475
- }
476
- )
477
- ] })
478
- ) : hasStandardSource ? (
479
- // Standard single logo image
480
- /* @__PURE__ */ jsx(
481
- Img,
482
- {
483
- src: logo.src,
484
- alt: logo.alt || "Logo",
485
- className: cn("h-8 w-auto object-contain md:h-10", logoImageClassName),
486
- optixFlowConfig
487
- }
488
- )
489
- ) : logo.title ? (
490
- // Text-based logo fallback
491
- /* @__PURE__ */ jsx("span", { className: cn("text-lg font-semibold md:text-xl", logoTitleClassName), children: logo.title })
492
- ) : null;
493
- if (!logoContent) return null;
494
- if (logo.url) {
495
- return /* @__PURE__ */ jsx(
496
- Pressable,
497
- {
498
- href: logo.url,
499
- className: cn("inline-flex items-center", logoClassName),
500
- children: logoContent
501
- }
502
- );
503
- }
504
- return /* @__PURE__ */ jsx("div", { className: cn("inline-flex items-center", logoClassName), children: logoContent });
505
- };
506
435
  function FooterCopyright({
507
436
  copyright,
508
437
  className
@@ -1530,20 +1459,15 @@ function FooterAccordionSocial({
1530
1459
  pattern,
1531
1460
  patternOpacity,
1532
1461
  patternClassName,
1533
- formEngineSetup,
1534
- buttonAction,
1535
- formSlot,
1536
- newsletterFormClassName
1462
+ formEngineSetup
1537
1463
  }) {
1538
1464
  const renderForm = React.useMemo(() => {
1539
- if (formSlot) return formSlot;
1540
1465
  if (!formEngineSetup) return null;
1541
- const defaultButtonAction = {
1466
+ const action = {
1542
1467
  label: "",
1543
1468
  variant: "default",
1544
1469
  icon: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
1545
1470
  };
1546
- const action = buttonAction || defaultButtonAction;
1547
1471
  return /* @__PURE__ */ jsx(
1548
1472
  FormEngine,
1549
1473
  {
@@ -1556,21 +1480,18 @@ function FooterAccordionSocial({
1556
1480
  ...formEngineSetup.formLayoutSettings?.buttonGroupSetup,
1557
1481
  size: "default",
1558
1482
  submitLabel: action.icon || action.label,
1559
- submitVariant: action.variant || "default"
1483
+ submitVariant: action.variant
1560
1484
  }
1561
1485
  }
1562
1486
  },
1563
1487
  defaultFields: DEFAULT_FORM_FIELDS,
1564
1488
  defaultStyleRules: {
1565
1489
  ...DEFAULT_STYLE_RULES,
1566
- formContainer: cn(
1567
- DEFAULT_STYLE_RULES.formContainer,
1568
- newsletterFormClassName
1569
- )
1490
+ formContainer: cn(DEFAULT_STYLE_RULES.formContainer)
1570
1491
  }
1571
1492
  }
1572
1493
  );
1573
- }, [formSlot, formEngineSetup, buttonAction, newsletterFormClassName]);
1494
+ }, [formEngineSetup]);
1574
1495
  return /* @__PURE__ */ jsx(
1575
1496
  Section,
1576
1497
  {
@@ -1584,19 +1505,19 @@ function FooterAccordionSocial({
1584
1505
  children: /* @__PURE__ */ jsxs("div", { className: "space-y-10", children: [
1585
1506
  /* @__PURE__ */ jsxs("div", { className: "grid gap-10 lg:grid-cols-2 lg:gap-20", children: [
1586
1507
  /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
1587
- logo && /* @__PURE__ */ jsx(
1588
- FooterLogo,
1508
+ logo && /* @__PURE__ */ jsx(Pressable, { href: logo.url || "/", className: "block mb-8 md:mb-12", children: /* @__PURE__ */ jsx(
1509
+ Img,
1589
1510
  {
1590
- logo,
1591
- logoClassName: "inline-block max-w-48",
1511
+ src: logo.src,
1512
+ className: "h-16 object-contain w-auto max-w-full",
1592
1513
  optixFlowConfig
1593
1514
  }
1594
- ),
1595
- formEngineSetup && /* @__PURE__ */ jsxs(Fragment, { children: [
1596
- /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
1597
- /* @__PURE__ */ jsx("h3", { className: "text-2xl font-semibold", children: newsletterTitle }),
1598
- /* @__PURE__ */ jsx("p", { className: "opacity-80", children: newsletterDescription })
1599
- ] }),
1515
+ ) }),
1516
+ formEngineSetup && /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
1517
+ newsletterTitle || newsletterDescription ? /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
1518
+ newsletterTitle ? /* @__PURE__ */ jsx("h3", { className: "text-xl font-semibold", children: newsletterTitle }) : null,
1519
+ newsletterDescription ? /* @__PURE__ */ jsx("p", { className: "opacity-70", children: newsletterDescription }) : null
1520
+ ] }) : null,
1600
1521
  renderForm
1601
1522
  ] })
1602
1523
  ] }),
@@ -1614,27 +1535,24 @@ function FooterAccordionSocial({
1614
1535
  ] }),
1615
1536
  /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-6 border-t pt-8", children: [
1616
1537
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 text-sm opacity-80 md:flex-row md:items-center md:gap-4", children: [
1617
- /* @__PURE__ */ jsx(FooterCopyright, { copyright }),
1538
+ /* @__PURE__ */ jsx(FooterCopyright, { copyright, className: "opacity-50" }),
1618
1539
  /* @__PURE__ */ jsx(
1619
1540
  BrandAttribution,
1620
1541
  {
1621
1542
  internalBrandSlug: "open_site_ai",
1622
1543
  optionIndex: 1,
1623
1544
  variant: "span",
1624
- linkClassName: "hover:opacity-100"
1545
+ linkClassName: "opacity-50 hover:opacity-100"
1625
1546
  }
1626
1547
  )
1627
1548
  ] }),
1628
1549
  socialLinks && socialLinks.length > 0 && /* @__PURE__ */ jsx("ul", { className: "flex flex-wrap gap-4", children: socialLinks.map((social, idx) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
1629
1550
  SocialLinkIcon,
1630
1551
  {
1631
- href: social.href,
1632
- label: social.label,
1633
- iconNameOverride: social.iconNameOverride,
1634
- variant: "outline",
1635
- size: "icon",
1636
- asButton: true,
1637
- className: "rounded-full"
1552
+ ...social,
1553
+ variant: "ghost",
1554
+ size: "icon-lg",
1555
+ asButton: true
1638
1556
  }
1639
1557
  ) }, idx)) })
1640
1558
  ] })
@@ -1594,14 +1594,14 @@ function FooterNewsletterContact({
1594
1594
  }, [footerLinks]);
1595
1595
  const contactDetailsContent = React__namespace.useMemo(() => {
1596
1596
  if (!contactDetails || contactDetails.length === 0) return null;
1597
- return contactDetails.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-3", children: [
1598
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.icon, size: 16, className: "shrink-0" }),
1599
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: item.type === "none" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: item.text }) : /* @__PURE__ */ jsxRuntime.jsx(
1597
+ return contactDetails.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-3", children: [
1598
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center shrink-0 mt-1", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.icon, size: 16 }) }),
1599
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
1600
1600
  Pressable,
1601
1601
  {
1602
- href: item.type === "email" ? `mailto:${item.link}` : `tel:${item.link}`,
1602
+ href: item.link,
1603
1603
  className: "underline-offset-4 hover:underline",
1604
- children: item.text
1604
+ children: item.label
1605
1605
  }
1606
1606
  ) })
1607
1607
  ] }, idx));
@@ -1666,9 +1666,9 @@ function FooterNewsletterContact({
1666
1666
  className,
1667
1667
  containerClassName,
1668
1668
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-10", children: [
1669
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-x-16 gap-y-8 md:grid-cols-2 xl:grid-cols-4", children: [
1670
- formEngineSetup && (newsletterTitle || newsletterDescription) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6 col-span-2 md:col-span-1", children: [
1671
- newsletterTitle && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-3xl font-medium font-serif leading-none", children: newsletterTitle }),
1669
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-x-6 md:gap-x-8 lg:gap-x-12 xl:gap-x-16 gap-y-8 md:grid-cols-2 lg:grid-cols-4", children: [
1670
+ formEngineSetup && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 md:space-y-6 col-span-2 md:col-span-1", children: [
1671
+ newsletterTitle && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl md:text-3xl font-medium leading-none", children: newsletterTitle }),
1672
1672
  newsletterDescription && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-light leading-normal", children: newsletterDescription }),
1673
1673
  renderForm
1674
1674
  ] }),
@@ -37,11 +37,11 @@ interface FooterNewsletterContactDetail {
37
37
  /**
38
38
  * Display text
39
39
  */
40
- text: string;
40
+ label: React.ReactNode;
41
41
  /**
42
42
  * Link type: "none" | "email" | "phone"
43
43
  */
44
- type: "none" | "email" | "phone";
44
+ type?: "none" | "email" | "phone";
45
45
  /**
46
46
  * Link value (email address or phone number)
47
47
  */
@@ -37,11 +37,11 @@ interface FooterNewsletterContactDetail {
37
37
  /**
38
38
  * Display text
39
39
  */
40
- text: string;
40
+ label: React.ReactNode;
41
41
  /**
42
42
  * Link type: "none" | "email" | "phone"
43
43
  */
44
- type: "none" | "email" | "phone";
44
+ type?: "none" | "email" | "phone";
45
45
  /**
46
46
  * Link value (email address or phone number)
47
47
  */
@@ -1572,14 +1572,14 @@ function FooterNewsletterContact({
1572
1572
  }, [footerLinks]);
1573
1573
  const contactDetailsContent = React.useMemo(() => {
1574
1574
  if (!contactDetails || contactDetails.length === 0) return null;
1575
- return contactDetails.map((item, idx) => /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-3", children: [
1576
- /* @__PURE__ */ jsx(DynamicIcon, { name: item.icon, size: 16, className: "shrink-0" }),
1577
- /* @__PURE__ */ jsx("div", { className: "flex-1", children: item.type === "none" ? /* @__PURE__ */ jsx("p", { children: item.text }) : /* @__PURE__ */ jsx(
1575
+ return contactDetails.map((item, idx) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-3", children: [
1576
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center shrink-0 mt-1", children: /* @__PURE__ */ jsx(DynamicIcon, { name: item.icon, size: 16 }) }),
1577
+ /* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsx(
1578
1578
  Pressable,
1579
1579
  {
1580
- href: item.type === "email" ? `mailto:${item.link}` : `tel:${item.link}`,
1580
+ href: item.link,
1581
1581
  className: "underline-offset-4 hover:underline",
1582
- children: item.text
1582
+ children: item.label
1583
1583
  }
1584
1584
  ) })
1585
1585
  ] }, idx));
@@ -1644,9 +1644,9 @@ function FooterNewsletterContact({
1644
1644
  className,
1645
1645
  containerClassName,
1646
1646
  children: /* @__PURE__ */ jsxs("div", { className: "space-y-10", children: [
1647
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-x-16 gap-y-8 md:grid-cols-2 xl:grid-cols-4", children: [
1648
- formEngineSetup && (newsletterTitle || newsletterDescription) && /* @__PURE__ */ jsxs("div", { className: "space-y-6 col-span-2 md:col-span-1", children: [
1649
- newsletterTitle && /* @__PURE__ */ jsx("h3", { className: "text-3xl font-medium font-serif leading-none", children: newsletterTitle }),
1647
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-x-6 md:gap-x-8 lg:gap-x-12 xl:gap-x-16 gap-y-8 md:grid-cols-2 lg:grid-cols-4", children: [
1648
+ formEngineSetup && /* @__PURE__ */ jsxs("div", { className: "space-y-4 md:space-y-6 col-span-2 md:col-span-1", children: [
1649
+ newsletterTitle && /* @__PURE__ */ jsx("h3", { className: "text-2xl md:text-3xl font-medium leading-none", children: newsletterTitle }),
1650
1650
  newsletterDescription && /* @__PURE__ */ jsx("p", { className: "font-light leading-normal", children: newsletterDescription }),
1651
1651
  renderForm
1652
1652
  ] }),
@@ -1487,6 +1487,7 @@ function FooterNewsletterMinimal({
1487
1487
  socialLinksClassName,
1488
1488
  socialLinkClassName,
1489
1489
  newsletterSectionClassName,
1490
+ newsletterLabelClassName,
1490
1491
  newsletterFormClassName,
1491
1492
  bottomGridClassName,
1492
1493
  locationClassName,
@@ -1600,29 +1601,41 @@ function FooterNewsletterMinimal({
1600
1601
  ),
1601
1602
  children: [
1602
1603
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-10", children: [
1603
- heading && /* @__PURE__ */ jsxRuntime.jsx(
1604
- "p",
1605
- {
1606
- className: cn(
1607
- "relative text-4xl font-medium tracking-tight lg:text-5xl",
1608
- headingClassName
1609
- ),
1610
- children: heading
1611
- }
1612
- ),
1613
- (supportLabel || supportEmail) && /* @__PURE__ */ jsxRuntime.jsxs(
1604
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4", children: [
1605
+ heading && /* @__PURE__ */ jsxRuntime.jsx(
1606
+ "h2",
1607
+ {
1608
+ className: cn(
1609
+ "relative text-4xl font-semibold tracking-tight lg:text-5xl text-balance",
1610
+ headingClassName
1611
+ ),
1612
+ children: heading
1613
+ }
1614
+ ),
1615
+ location && /* @__PURE__ */ jsxRuntime.jsx(
1616
+ "div",
1617
+ {
1618
+ className: cn(
1619
+ "font-semibold text-lg opacity-75",
1620
+ locationClassName
1621
+ ),
1622
+ children: location
1623
+ }
1624
+ )
1625
+ ] }),
1626
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4", children: (supportLabel || supportEmail) && /* @__PURE__ */ jsxRuntime.jsxs(
1614
1627
  "div",
1615
1628
  {
1616
1629
  className: cn(
1617
- "space-y-1 text-sm font-light tracking-tight lg:text-base",
1630
+ "space-y-1 text-sm tracking-tight lg:text-base",
1618
1631
  supportClassName
1619
1632
  ),
1620
1633
  children: [
1621
- supportLabel && /* @__PURE__ */ jsxRuntime.jsx("p", { children: supportLabel }),
1622
- supportEmail && /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: `mailto:${supportEmail}`, children: supportEmail })
1634
+ supportLabel && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-light opacity-75", children: supportLabel }),
1635
+ supportEmail && /* @__PURE__ */ jsxRuntime.jsx(Pressable, { className: "font-semibold", href: supportEmail, children: supportEmail })
1623
1636
  ]
1624
1637
  }
1625
- )
1638
+ ) })
1626
1639
  ] }),
1627
1640
  /* @__PURE__ */ jsxRuntime.jsxs(
1628
1641
  "div",
@@ -1640,41 +1653,35 @@ function FooterNewsletterMinimal({
1640
1653
  ]
1641
1654
  }
1642
1655
  ),
1643
- /* @__PURE__ */ jsxRuntime.jsxs(
1656
+ /* @__PURE__ */ jsxRuntime.jsx(
1644
1657
  "div",
1645
1658
  {
1646
1659
  className: cn(
1647
1660
  "mt-20 flex flex-col justify-between gap-15 lg:flex-row",
1648
1661
  newsletterSectionClassName
1649
1662
  ),
1650
- children: [
1651
- formEngineSetup && /* @__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: [
1652
- newsletterLabel && /* @__PURE__ */ jsxRuntime.jsx("p", { children: newsletterLabel }),
1653
- renderForm
1654
- ] }) }),
1655
- /* @__PURE__ */ jsxRuntime.jsxs(
1656
- "div",
1663
+ children: formEngineSetup && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-full max-w-md flex-col gap-10", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1664
+ newsletterLabel && /* @__PURE__ */ jsxRuntime.jsx(
1665
+ "p",
1657
1666
  {
1658
1667
  className: cn(
1659
- "grid w-full max-w-xs grid-cols-2 gap-10 text-sm font-light lg:text-base",
1660
- bottomGridClassName
1668
+ "text-xl font-light tracking-tight",
1669
+ newsletterLabelClassName
1661
1670
  ),
1662
- children: [
1663
- location && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-32", locationClassName), children: location }),
1664
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("space-y-1", footerLinksClassName), children: footerLinksContent })
1665
- ]
1671
+ children: newsletterLabel
1666
1672
  }
1667
- )
1668
- ]
1673
+ ),
1674
+ renderForm
1675
+ ] }) })
1669
1676
  }
1670
1677
  ),
1671
1678
  brandText && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-20 w-full lg:mt-32", brandSectionClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
1672
1679
  framerMotion.motion.div,
1673
1680
  {
1674
- initial: { opacity: 0, y: 20 },
1681
+ initial: { opacity: 0, y: 80 },
1675
1682
  whileInView: { opacity: 1, y: 0 },
1676
- viewport: { once: true },
1677
- transition: { duration: 0.6 },
1683
+ viewport: { once: true, amount: 0.5 },
1684
+ transition: { duration: 0.9, ease: [0.16, 1, 0.3, 1] },
1678
1685
  className: "text-center",
1679
1686
  children: /* @__PURE__ */ jsxRuntime.jsx(
1680
1687
  "span",
@@ -1692,19 +1699,51 @@ function FooterNewsletterMinimal({
1692
1699
  "div",
1693
1700
  {
1694
1701
  className: cn(
1695
- "mt-8 text-center text-sm opacity-80",
1702
+ "flex flex-col items-center space-y-6",
1703
+ brandText ? "mb-24" : "mt-8",
1696
1704
  copyrightClassName
1697
1705
  ),
1698
1706
  children: [
1699
- /* @__PURE__ */ jsxRuntime.jsx(FooterCopyright, { copyright }),
1700
1707
  /* @__PURE__ */ jsxRuntime.jsx(
1701
- BrandAttribution,
1708
+ "div",
1709
+ {
1710
+ className: cn(
1711
+ "flex items-center justify-center",
1712
+ bottomGridClassName
1713
+ ),
1714
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1715
+ "div",
1716
+ {
1717
+ className: cn(
1718
+ "flex gap-4 md:gap-6 text-sm font-light lg:text-base",
1719
+ "text-center items-center justify-center flex-wrap",
1720
+ footerLinksClassName
1721
+ ),
1722
+ children: footerLinksContent
1723
+ }
1724
+ )
1725
+ }
1726
+ ),
1727
+ /* @__PURE__ */ jsxRuntime.jsxs(
1728
+ "div",
1702
1729
  {
1703
- internalBrandSlug: "open_site_ai",
1704
- optionIndex: 4,
1705
- variant: "div",
1706
- containerClassName: "mt-2",
1707
- linkClassName: "underline underline-offset-4 transition-colors hover:opacity-100"
1730
+ className: cn(
1731
+ "mt-8 text-center text-sm opacity-50",
1732
+ copyrightClassName
1733
+ ),
1734
+ children: [
1735
+ /* @__PURE__ */ jsxRuntime.jsx(FooterCopyright, { copyright }),
1736
+ /* @__PURE__ */ jsxRuntime.jsx(
1737
+ BrandAttribution,
1738
+ {
1739
+ internalBrandSlug: "open_site_ai",
1740
+ optionIndex: 4,
1741
+ variant: "div",
1742
+ containerClassName: "mt-2",
1743
+ linkClassName: "underline underline-offset-4 transition-colors hover:opacity-100"
1744
+ }
1745
+ )
1746
+ ]
1708
1747
  }
1709
1748
  )
1710
1749
  ]
@@ -64,6 +64,8 @@ interface FooterNewsletterMinimalProps {
64
64
  socialLinkClassName?: string;
65
65
  /** Additional CSS classes for the newsletter section */
66
66
  newsletterSectionClassName?: string;
67
+ /** Additional CSS classes for the newsletter heading styles */
68
+ newsletterLabelClassName?: string;
67
69
  /** Additional CSS classes for the newsletter form */
68
70
  newsletterFormClassName?: string;
69
71
  /** Additional CSS classes for the location/footer links section */
@@ -131,6 +133,6 @@ interface FooterNewsletterMinimalProps {
131
133
  * />
132
134
  * ```
133
135
  */
134
- declare function FooterNewsletterMinimal({ heading, supportLabel, supportEmail, navLinks, socialLinks, footerLinks, newsletterLabel, brandText, copyright, location, className, contentClassName, topSectionClassName, headingClassName, supportClassName, navGridClassName, navLinksClassName, navLinkClassName, socialLinksClassName, socialLinkClassName, newsletterSectionClassName, newsletterFormClassName, bottomGridClassName, locationClassName, footerLinksClassName, footerLinkClassName, brandSectionClassName, brandTextClassName, copyrightClassName, background, containerClassName, spacing, pattern, patternOpacity, formEngineSetup, buttonAction, formSlot, }: FooterNewsletterMinimalProps): React.JSX.Element;
136
+ declare function FooterNewsletterMinimal({ heading, supportLabel, supportEmail, navLinks, socialLinks, footerLinks, newsletterLabel, brandText, copyright, location, className, contentClassName, topSectionClassName, headingClassName, supportClassName, navGridClassName, navLinksClassName, navLinkClassName, socialLinksClassName, socialLinkClassName, newsletterSectionClassName, newsletterLabelClassName, newsletterFormClassName, bottomGridClassName, locationClassName, footerLinksClassName, footerLinkClassName, brandSectionClassName, brandTextClassName, copyrightClassName, background, containerClassName, spacing, pattern, patternOpacity, formEngineSetup, buttonAction, formSlot, }: FooterNewsletterMinimalProps): React.JSX.Element;
135
137
 
136
138
  export { FooterNewsletterMinimal, type FooterNewsletterMinimalFooterLink, type FooterNewsletterMinimalProps };
@@ -64,6 +64,8 @@ interface FooterNewsletterMinimalProps {
64
64
  socialLinkClassName?: string;
65
65
  /** Additional CSS classes for the newsletter section */
66
66
  newsletterSectionClassName?: string;
67
+ /** Additional CSS classes for the newsletter heading styles */
68
+ newsletterLabelClassName?: string;
67
69
  /** Additional CSS classes for the newsletter form */
68
70
  newsletterFormClassName?: string;
69
71
  /** Additional CSS classes for the location/footer links section */
@@ -131,6 +133,6 @@ interface FooterNewsletterMinimalProps {
131
133
  * />
132
134
  * ```
133
135
  */
134
- declare function FooterNewsletterMinimal({ heading, supportLabel, supportEmail, navLinks, socialLinks, footerLinks, newsletterLabel, brandText, copyright, location, className, contentClassName, topSectionClassName, headingClassName, supportClassName, navGridClassName, navLinksClassName, navLinkClassName, socialLinksClassName, socialLinkClassName, newsletterSectionClassName, newsletterFormClassName, bottomGridClassName, locationClassName, footerLinksClassName, footerLinkClassName, brandSectionClassName, brandTextClassName, copyrightClassName, background, containerClassName, spacing, pattern, patternOpacity, formEngineSetup, buttonAction, formSlot, }: FooterNewsletterMinimalProps): React.JSX.Element;
136
+ declare function FooterNewsletterMinimal({ heading, supportLabel, supportEmail, navLinks, socialLinks, footerLinks, newsletterLabel, brandText, copyright, location, className, contentClassName, topSectionClassName, headingClassName, supportClassName, navGridClassName, navLinksClassName, navLinkClassName, socialLinksClassName, socialLinkClassName, newsletterSectionClassName, newsletterLabelClassName, newsletterFormClassName, bottomGridClassName, locationClassName, footerLinksClassName, footerLinkClassName, brandSectionClassName, brandTextClassName, copyrightClassName, background, containerClassName, spacing, pattern, patternOpacity, formEngineSetup, buttonAction, formSlot, }: FooterNewsletterMinimalProps): React.JSX.Element;
135
137
 
136
138
  export { FooterNewsletterMinimal, type FooterNewsletterMinimalFooterLink, type FooterNewsletterMinimalProps };