@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.
- package/dist/components.cjs +133 -162
- package/dist/components.js +134 -163
- package/dist/footer-accordion-social.cjs +22 -104
- package/dist/footer-accordion-social.d.cts +8 -18
- package/dist/footer-accordion-social.d.ts +8 -18
- package/dist/footer-accordion-social.js +23 -105
- package/dist/footer-newsletter-contact.cjs +8 -8
- package/dist/footer-newsletter-contact.d.cts +2 -2
- package/dist/footer-newsletter-contact.d.ts +2 -2
- package/dist/footer-newsletter-contact.js +8 -8
- package/dist/footer-newsletter-minimal.cjs +81 -42
- package/dist/footer-newsletter-minimal.d.cts +3 -1
- package/dist/footer-newsletter-minimal.d.ts +3 -1
- package/dist/footer-newsletter-minimal.js +81 -42
- package/dist/footer-social-newsletter.cjs +619 -758
- package/dist/footer-social-newsletter.d.cts +17 -54
- package/dist/footer-social-newsletter.d.ts +17 -54
- package/dist/footer-social-newsletter.js +620 -759
- package/dist/index.cjs +133 -162
- package/dist/index.js +134 -163
- package/dist/registry.cjs +272 -311
- package/dist/registry.js +273 -312
- package/package.json +4 -3
|
@@ -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
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
url
|
|
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,
|
|
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
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
url
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
-
}, [
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
1596
|
-
/* @__PURE__ */ jsxs("div", { className: "space-y-
|
|
1597
|
-
/* @__PURE__ */ jsx("h3", { className: "text-
|
|
1598
|
-
/* @__PURE__ */ jsx("p", { className: "opacity-
|
|
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
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
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-
|
|
1598
|
-
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.icon, size: 16
|
|
1599
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children:
|
|
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.
|
|
1602
|
+
href: item.link,
|
|
1603
1603
|
className: "underline-offset-4 hover:underline",
|
|
1604
|
-
children: item.
|
|
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
|
|
1670
|
-
formEngineSetup &&
|
|
1671
|
-
newsletterTitle && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-3xl font-medium
|
|
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
|
-
|
|
40
|
+
label: React.ReactNode;
|
|
41
41
|
/**
|
|
42
42
|
* Link type: "none" | "email" | "phone"
|
|
43
43
|
*/
|
|
44
|
-
type
|
|
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
|
-
|
|
40
|
+
label: React.ReactNode;
|
|
41
41
|
/**
|
|
42
42
|
* Link type: "none" | "email" | "phone"
|
|
43
43
|
*/
|
|
44
|
-
type
|
|
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-
|
|
1576
|
-
/* @__PURE__ */ jsx(DynamicIcon, { name: item.icon, size: 16
|
|
1577
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1", children:
|
|
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.
|
|
1580
|
+
href: item.link,
|
|
1581
1581
|
className: "underline-offset-4 hover:underline",
|
|
1582
|
-
children: item.
|
|
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
|
|
1648
|
-
formEngineSetup &&
|
|
1649
|
-
newsletterTitle && /* @__PURE__ */ jsx("h3", { className: "text-3xl font-medium
|
|
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
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
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
|
|
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:
|
|
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.
|
|
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
|
-
|
|
1652
|
-
|
|
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
|
-
"
|
|
1660
|
-
|
|
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:
|
|
1681
|
+
initial: { opacity: 0, y: 80 },
|
|
1675
1682
|
whileInView: { opacity: 1, y: 0 },
|
|
1676
|
-
viewport: { once: true },
|
|
1677
|
-
transition: { duration: 0.
|
|
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
|
-
"
|
|
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
|
-
|
|
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
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
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 };
|