@opensite/ui 2.5.0 → 2.5.1

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.
@@ -6,10 +6,10 @@ var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var classVarianceAuthority = require('class-variance-authority');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
- var img = require('@page-speed/img');
10
9
  var icon = require('@page-speed/icon');
11
10
  var usePlatformFromUrl = require('@opensite/hooks/usePlatformFromUrl');
12
11
  var integration = require('@page-speed/forms/integration');
12
+ var img = require('@page-speed/img');
13
13
 
14
14
  function _interopNamespace(e) {
15
15
  if (e && e.__esModule) return e;
@@ -453,77 +453,6 @@ var Pressable = React__namespace.forwardRef(
453
453
  }
454
454
  );
455
455
  Pressable.displayName = "Pressable";
456
- function isThemedLogo(logo) {
457
- return "light" in logo || "dark" in logo;
458
- }
459
- var FooterLogo = ({
460
- logo,
461
- logoSlot,
462
- logoClassName,
463
- logoImageClassName,
464
- logoTitleClassName,
465
- optixFlowConfig
466
- }) => {
467
- if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
468
- if (!logo) return null;
469
- const hasThemedSources = isThemedLogo(logo) && (logo.light || logo.dark);
470
- const hasStandardSource = !isThemedLogo(logo) && logo.src;
471
- const logoContent = hasThemedSources ? (
472
- // Themed logo with light/dark mode sources
473
- /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
474
- logo.light && /* @__PURE__ */ jsxRuntime.jsx(
475
- img.Img,
476
- {
477
- src: logo.light,
478
- alt: logo.alt || "Logo",
479
- className: cn(
480
- "h-8 w-auto object-contain dark:hidden md:h-10",
481
- logoImageClassName
482
- ),
483
- optixFlowConfig
484
- }
485
- ),
486
- logo.dark && /* @__PURE__ */ jsxRuntime.jsx(
487
- img.Img,
488
- {
489
- src: logo.dark,
490
- alt: logo.alt || "Logo",
491
- className: cn(
492
- "hidden h-8 w-auto object-contain dark:block md:h-10",
493
- logoImageClassName
494
- ),
495
- optixFlowConfig
496
- }
497
- )
498
- ] })
499
- ) : hasStandardSource ? (
500
- // Standard single logo image
501
- /* @__PURE__ */ jsxRuntime.jsx(
502
- img.Img,
503
- {
504
- src: logo.src,
505
- alt: logo.alt || "Logo",
506
- className: cn("h-8 w-auto object-contain md:h-10", logoImageClassName),
507
- optixFlowConfig
508
- }
509
- )
510
- ) : logo.title ? (
511
- // Text-based logo fallback
512
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-lg font-semibold md:text-xl", logoTitleClassName), children: logo.title })
513
- ) : null;
514
- if (!logoContent) return null;
515
- if (logo.url) {
516
- return /* @__PURE__ */ jsxRuntime.jsx(
517
- Pressable,
518
- {
519
- href: logo.url,
520
- className: cn("inline-flex items-center", logoClassName),
521
- children: logoContent
522
- }
523
- );
524
- }
525
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("inline-flex items-center", logoClassName), children: logoContent });
526
- };
527
456
  function FooterCopyright({
528
457
  copyright,
529
458
  className
@@ -1551,20 +1480,15 @@ function FooterAccordionSocial({
1551
1480
  pattern,
1552
1481
  patternOpacity,
1553
1482
  patternClassName,
1554
- formEngineSetup,
1555
- buttonAction,
1556
- formSlot,
1557
- newsletterFormClassName
1483
+ formEngineSetup
1558
1484
  }) {
1559
1485
  const renderForm = React__namespace.useMemo(() => {
1560
- if (formSlot) return formSlot;
1561
1486
  if (!formEngineSetup) return null;
1562
- const defaultButtonAction = {
1487
+ const action = {
1563
1488
  label: "",
1564
1489
  variant: "default",
1565
1490
  icon: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
1566
1491
  };
1567
- const action = buttonAction || defaultButtonAction;
1568
1492
  return /* @__PURE__ */ jsxRuntime.jsx(
1569
1493
  integration.FormEngine,
1570
1494
  {
@@ -1577,21 +1501,18 @@ function FooterAccordionSocial({
1577
1501
  ...formEngineSetup.formLayoutSettings?.buttonGroupSetup,
1578
1502
  size: "default",
1579
1503
  submitLabel: action.icon || action.label,
1580
- submitVariant: action.variant || "default"
1504
+ submitVariant: action.variant
1581
1505
  }
1582
1506
  }
1583
1507
  },
1584
1508
  defaultFields: DEFAULT_FORM_FIELDS,
1585
1509
  defaultStyleRules: {
1586
1510
  ...DEFAULT_STYLE_RULES,
1587
- formContainer: cn(
1588
- DEFAULT_STYLE_RULES.formContainer,
1589
- newsletterFormClassName
1590
- )
1511
+ formContainer: cn(DEFAULT_STYLE_RULES.formContainer)
1591
1512
  }
1592
1513
  }
1593
1514
  );
1594
- }, [formSlot, formEngineSetup, buttonAction, newsletterFormClassName]);
1515
+ }, [formEngineSetup]);
1595
1516
  return /* @__PURE__ */ jsxRuntime.jsx(
1596
1517
  Section,
1597
1518
  {
@@ -1605,19 +1526,19 @@ function FooterAccordionSocial({
1605
1526
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-10", children: [
1606
1527
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-10 lg:grid-cols-2 lg:gap-20", children: [
1607
1528
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
1608
- logo && /* @__PURE__ */ jsxRuntime.jsx(
1609
- FooterLogo,
1529
+ logo && /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: logo.url || "/", className: "block mb-8 md:mb-12", children: /* @__PURE__ */ jsxRuntime.jsx(
1530
+ img.Img,
1610
1531
  {
1611
- logo,
1612
- logoClassName: "inline-block max-w-48",
1532
+ src: logo.src,
1533
+ className: "h-16 object-contain w-auto max-w-full",
1613
1534
  optixFlowConfig
1614
1535
  }
1615
- ),
1616
- formEngineSetup && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1617
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
1618
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-semibold", children: newsletterTitle }),
1619
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "opacity-80", children: newsletterDescription })
1620
- ] }),
1536
+ ) }),
1537
+ formEngineSetup && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1538
+ newsletterTitle || newsletterDescription ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1539
+ newsletterTitle ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xl font-semibold", children: newsletterTitle }) : null,
1540
+ newsletterDescription ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "opacity-70", children: newsletterDescription }) : null
1541
+ ] }) : null,
1621
1542
  renderForm
1622
1543
  ] })
1623
1544
  ] }),
@@ -1635,27 +1556,24 @@ function FooterAccordionSocial({
1635
1556
  ] }),
1636
1557
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-6 border-t pt-8", children: [
1637
1558
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 text-sm opacity-80 md:flex-row md:items-center md:gap-4", children: [
1638
- /* @__PURE__ */ jsxRuntime.jsx(FooterCopyright, { copyright }),
1559
+ /* @__PURE__ */ jsxRuntime.jsx(FooterCopyright, { copyright, className: "opacity-50" }),
1639
1560
  /* @__PURE__ */ jsxRuntime.jsx(
1640
1561
  BrandAttribution,
1641
1562
  {
1642
1563
  internalBrandSlug: "open_site_ai",
1643
1564
  optionIndex: 1,
1644
1565
  variant: "span",
1645
- linkClassName: "hover:opacity-100"
1566
+ linkClassName: "opacity-50 hover:opacity-100"
1646
1567
  }
1647
1568
  )
1648
1569
  ] }),
1649
1570
  socialLinks && socialLinks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-wrap gap-4", children: socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1650
1571
  SocialLinkIcon,
1651
1572
  {
1652
- href: social.href,
1653
- label: social.label,
1654
- iconNameOverride: social.iconNameOverride,
1655
- variant: "outline",
1656
- size: "icon",
1657
- asButton: true,
1658
- className: "rounded-full"
1573
+ ...social,
1574
+ variant: "ghost",
1575
+ size: "icon-lg",
1576
+ asButton: true
1659
1577
  }
1660
1578
  ) }, idx)) })
1661
1579
  ] })
@@ -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
  ] }),