@shohojdhara/atomix 0.4.4 → 0.4.5
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/atomix.css +25 -5
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +1 -1
- package/dist/atomix.min.css.map +1 -1
- package/dist/charts.js +2 -6
- package/dist/charts.js.map +1 -1
- package/dist/core.d.ts +4 -4
- package/dist/core.js +12 -16
- package/dist/core.js.map +1 -1
- package/dist/forms.js +2 -6
- package/dist/forms.js.map +1 -1
- package/dist/heavy.js +7 -11
- package/dist/heavy.js.map +1 -1
- package/dist/index.d.ts +40 -16
- package/dist/index.esm.js +305 -331
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +335 -347
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
- package/src/components/AtomixGlass/AtomixGlass.tsx +0 -1
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +3 -8
- package/src/components/Breadcrumb/Breadcrumb.tsx +5 -5
- package/src/components/Breadcrumb/BreadcrumbCompound.test.tsx +2 -2
- package/src/components/Button/Button.tsx +6 -6
- package/src/components/Card/Card.tsx +3 -3
- package/src/components/Dropdown/Dropdown.tsx +5 -3
- package/src/components/Footer/Footer.tsx +124 -166
- package/src/components/Footer/FooterLink.tsx +16 -19
- package/src/components/Footer/FooterSection.tsx +40 -39
- package/src/components/Footer/FooterSocialLink.tsx +59 -58
- package/src/components/Footer/README.md +1 -1
- package/src/components/Hero/Hero.tsx +72 -142
- package/src/components/Navigation/Menu/MegaMenu.tsx +17 -12
- package/src/components/Navigation/Menu/Menu.tsx +49 -24
- package/src/components/Navigation/Nav/NavItem.tsx +5 -3
- package/src/components/Navigation/SideMenu/SideMenu.tsx +2 -2
- package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -4
- package/src/components/Slider/Slider.tsx +7 -4
- package/src/lib/composables/useFooter.ts +117 -20
- package/src/lib/composables/useSlider.ts +3 -1
- package/src/lib/types/components.ts +44 -12
- package/src/styles/06-components/_components.atomix-glass.scss +38 -5
- package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +0 -222
package/dist/index.js
CHANGED
|
@@ -2221,7 +2221,7 @@ const sharedShaderCache = new Map, AtomixGlassContainer = React.forwardRef((({c
|
|
|
2221
2221
|
}, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseDown: onMouseDown, onMouseUp: onMouseUp, isHovered: isHovered = !1, isActive: isActive = !1, overLight: overLight = !1, overLightConfig: overLightConfig = {}, borderRadius: borderRadius = 0, padding: padding = "0 0", glassSize: glassSize = {
|
|
2222
2222
|
width: 0,
|
|
2223
2223
|
height: 0
|
|
2224
|
-
}, onClick: onClick, mode: mode = "standard", effectiveWithoutEffects: effectiveWithoutEffects = !1, effectiveReducedMotion: effectiveReducedMotion = !1, shaderVariant: shaderVariant = "liquidGlass", withLiquidBlur: withLiquidBlur = !1,
|
|
2224
|
+
}, onClick: onClick, mode: mode = "standard", effectiveWithoutEffects: effectiveWithoutEffects = !1, effectiveReducedMotion: effectiveReducedMotion = !1, shaderVariant: shaderVariant = "liquidGlass", withLiquidBlur: withLiquidBlur = !1, contentRef: contentRef}, ref) => {
|
|
2225
2225
|
// Generate a stable, deterministic ID for SSR compatibility
|
|
2226
2226
|
// Use a module-level counter that's consistent across server and client
|
|
2227
2227
|
const filterId = React.useMemo((() => "atomix-glass-filter-" + ++idCounter), []), [shaderMapUrl, setShaderMapUrl] = React.useState(""), shaderGeneratorRef = React.useRef(null), shaderUtilsRef = React.useRef(null), shaderDebounceTimeoutRef = React.useRef(null);
|
|
@@ -2419,7 +2419,6 @@ const sharedShaderCache = new Map, AtomixGlassContainer = React.forwardRef((({c
|
|
|
2419
2419
|
children: [ jsxRuntime.jsxs("div", {
|
|
2420
2420
|
className: ATOMIX_GLASS.FILTER_CLASS,
|
|
2421
2421
|
style: {
|
|
2422
|
-
zIndex: 1,
|
|
2423
2422
|
position: "absolute",
|
|
2424
2423
|
inset: 0
|
|
2425
2424
|
},
|
|
@@ -2455,9 +2454,7 @@ const sharedShaderCache = new Map, AtomixGlassContainer = React.forwardRef((({c
|
|
|
2455
2454
|
className: ATOMIX_GLASS.CONTENT_CLASS,
|
|
2456
2455
|
style: {
|
|
2457
2456
|
position: "relative",
|
|
2458
|
-
textShadow: "var(--atomix-glass-container-text-shadow)"
|
|
2459
|
-
// Ensure content is always above the filter layer (zIndex 1)
|
|
2460
|
-
zIndex: elasticity > 0 ? 100 : 2
|
|
2457
|
+
textShadow: "var(--atomix-glass-container-text-shadow)"
|
|
2461
2458
|
},
|
|
2462
2459
|
children: children
|
|
2463
2460
|
}) ]
|
|
@@ -3330,7 +3327,6 @@ function useAtomixGlass({glassRef: glassRef, contentRef: contentRef, wrapperRef:
|
|
|
3330
3327
|
effectiveWithoutEffects: effectiveWithoutEffects,
|
|
3331
3328
|
effectiveReducedMotion: effectiveReducedMotion,
|
|
3332
3329
|
shaderVariant: shaderVariant,
|
|
3333
|
-
elasticity: elasticity,
|
|
3334
3330
|
withLiquidBlur: withLiquidBlur,
|
|
3335
3331
|
children: children
|
|
3336
3332
|
}), Boolean(onClick) && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
@@ -4124,7 +4120,7 @@ const BreadcrumbItem = React.forwardRef((({children: children, href: href, acti
|
|
|
4124
4120
|
|
|
4125
4121
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
4126
4122
|
|
|
4127
|
-
const Breadcrumb = React.memo((function({items: items, divider: divider, className: className = "", "aria-label": ariaLabel = "Breadcrumb",
|
|
4123
|
+
const Breadcrumb = React.memo((function({items: items, divider: divider, className: className = "", "aria-label": ariaLabel = "Breadcrumb", linkComponent: linkComponent, style: style, children: children}) {
|
|
4128
4124
|
const breadcrumbClasses = [ BREADCRUMB.CLASSES.BASE, className ].filter(Boolean).join(" ");
|
|
4129
4125
|
let content;
|
|
4130
4126
|
if (items && items.length > 0)
|
|
@@ -4138,7 +4134,7 @@ const Breadcrumb = React.memo((function({items: items, divider: divider, classN
|
|
|
4138
4134
|
onClick: item.onClick,
|
|
4139
4135
|
className: item.className,
|
|
4140
4136
|
style: item.style,
|
|
4141
|
-
linkAs:
|
|
4137
|
+
linkAs: linkComponent,
|
|
4142
4138
|
children: item.label
|
|
4143
4139
|
}, index);
|
|
4144
4140
|
})); else {
|
|
@@ -4148,7 +4144,7 @@ const Breadcrumb = React.memo((function({items: items, divider: divider, classN
|
|
|
4148
4144
|
if ( React.isValidElement(child)) {
|
|
4149
4145
|
const isLast = index === childrenCount - 1, childProps = child.props, {active: active, linkAs: linkAs, ...otherProps} = childProps, newProps = {
|
|
4150
4146
|
active: active ?? (!!isLast || void 0),
|
|
4151
|
-
linkAs: linkAs ??
|
|
4147
|
+
linkAs: linkAs ?? linkComponent
|
|
4152
4148
|
};
|
|
4153
4149
|
|
|
4154
4150
|
return React.cloneElement(child, newProps);
|
|
@@ -4324,7 +4320,7 @@ class ThemeNaming {
|
|
|
4324
4320
|
|
|
4325
4321
|
ThemeNaming.prefix = "atomix";
|
|
4326
4322
|
|
|
4327
|
-
const Button = React__default.default.memo( React.forwardRef((({label: label, children: children, onClick: onClick, variant: variant = "primary", size: size = "md", disabled: disabled = !1, loading: loading = !1, loadingText: loadingText, icon: icon, iconName: iconName, iconSize: iconSize = "sm", iconPosition: iconPosition = "start", iconOnly: iconOnly = !1, rounded: rounded = !1, fullWidth: fullWidth = !1, block: block = !1, active: active = !1, selected: selected = !1, type: type = "button", className: className = "", as: Component = "button", href: href, target: target, glass: glass, onHover: onHover, onFocus: onFocus, onBlur: onBlur, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, tabIndex: tabIndex, style: style,
|
|
4323
|
+
const Button = React__default.default.memo( React.forwardRef((({label: label, children: children, onClick: onClick, variant: variant = "primary", size: size = "md", disabled: disabled = !1, loading: loading = !1, loadingText: loadingText, icon: icon, iconName: iconName, iconSize: iconSize = "sm", iconPosition: iconPosition = "start", iconOnly: iconOnly = !1, rounded: rounded = !1, fullWidth: fullWidth = !1, block: block = !1, active: active = !1, selected: selected = !1, type: type = "button", className: className = "", as: Component = "button", href: href, target: target, glass: glass, onHover: onHover, onFocus: onFocus, onBlur: onBlur, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, tabIndex: tabIndex, style: style, linkComponent: linkComponent, ...props}, ref) => {
|
|
4328
4324
|
const isDisabled = disabled || loading, shouldRenderAsLink = Boolean(href && !isDisabled), iconElement = iconName ? jsxRuntime.jsx(Icon, {
|
|
4329
4325
|
name: iconName,
|
|
4330
4326
|
size: iconSize
|
|
@@ -4375,12 +4371,12 @@ const Button = React__default.default.memo( React.forwardRef((({label: label, c
|
|
|
4375
4371
|
let content;
|
|
4376
4372
|
// Render as anchor if href is provided
|
|
4377
4373
|
if (shouldRenderAsLink)
|
|
4378
|
-
// Use custom
|
|
4379
|
-
if (
|
|
4380
|
-
const LinkComp =
|
|
4374
|
+
// Use custom linkComponent if provided (e.g., Next.js Link)
|
|
4375
|
+
if (linkComponent) {
|
|
4376
|
+
const LinkComp = linkComponent, linkProps = {
|
|
4381
4377
|
...buttonProps,
|
|
4382
4378
|
ref: ref,
|
|
4383
|
-
//
|
|
4379
|
+
// linkComponent usually forwards ref to anchor
|
|
4384
4380
|
href: href,
|
|
4385
4381
|
to: href,
|
|
4386
4382
|
target: target,
|
|
@@ -4678,7 +4674,7 @@ header: header, image: image, imageAlt: imageAlt = "", title: title, text: text,
|
|
|
4678
4674
|
// Interaction
|
|
4679
4675
|
onClick: onClick, onHover: onHover, onFocus: onFocus, href: href, target: target,
|
|
4680
4676
|
// Custom Link
|
|
4681
|
-
|
|
4677
|
+
linkComponent: linkComponent,
|
|
4682
4678
|
// Glass
|
|
4683
4679
|
glass: glass,
|
|
4684
4680
|
// Accessibility
|
|
@@ -4763,8 +4759,8 @@ className: className = "", style: style, ...rest}, ref) => {
|
|
|
4763
4759
|
// Render as anchor if href is provided
|
|
4764
4760
|
if (href && !isDisabled) {
|
|
4765
4761
|
let anchorElement;
|
|
4766
|
-
if (
|
|
4767
|
-
const LinkComp =
|
|
4762
|
+
if (linkComponent) {
|
|
4763
|
+
const LinkComp = linkComponent;
|
|
4768
4764
|
anchorElement = jsxRuntime.jsx(LinkComp, {
|
|
4769
4765
|
...commonProps,
|
|
4770
4766
|
ref: ref,
|
|
@@ -9869,7 +9865,7 @@ DropdownTrigger.displayName = "DropdownTrigger";
|
|
|
9869
9865
|
/**
|
|
9870
9866
|
* DropdownItem component for menu items
|
|
9871
9867
|
*/
|
|
9872
|
-
const DropdownItem = React.memo((({children: children, href: href, active: active = !1, disabled: disabled = !1, icon: icon, onClick: onClick, className: className = "",
|
|
9868
|
+
const DropdownItem = React.memo((({children: children, href: href, target: target, active: active = !1, disabled: disabled = !1, icon: icon, onClick: onClick, className: className = "", linkComponent: linkComponent, ...props}) => {
|
|
9873
9869
|
const {close: close} = React.useContext(DropdownContext), handleClick = e => {
|
|
9874
9870
|
disabled ? e.preventDefault() : (onClick && onClick(e),
|
|
9875
9871
|
// Always close the dropdown when an item is clicked
|
|
@@ -9877,6 +9873,7 @@ const DropdownItem = React.memo((({children: children, href: href, active: acti
|
|
|
9877
9873
|
}, itemClasses = [ "c-dropdown__menu-item", active ? "is-active" : "", disabled ? "is-disabled" : "", className ].filter(Boolean).join(" "), linkProps = {
|
|
9878
9874
|
href: href,
|
|
9879
9875
|
to: href,
|
|
9876
|
+
target: target,
|
|
9880
9877
|
className: itemClasses,
|
|
9881
9878
|
onClick: handleClick,
|
|
9882
9879
|
role: "menuitem",
|
|
@@ -9884,8 +9881,8 @@ const DropdownItem = React.memo((({children: children, href: href, active: acti
|
|
|
9884
9881
|
...props
|
|
9885
9882
|
};
|
|
9886
9883
|
return href && !disabled ? jsxRuntime.jsx("li", {
|
|
9887
|
-
children:
|
|
9888
|
-
const Component =
|
|
9884
|
+
children: linkComponent ? (() => {
|
|
9885
|
+
const Component = linkComponent;
|
|
9889
9886
|
return jsxRuntime.jsxs(Component, {
|
|
9890
9887
|
...linkProps,
|
|
9891
9888
|
children: [ icon && jsxRuntime.jsx("span", {
|
|
@@ -12614,7 +12611,7 @@ const DEFAULT_ATOMIX_FONTS = [ {
|
|
|
12614
12611
|
}
|
|
12615
12612
|
|
|
12616
12613
|
function useSlider(options) {
|
|
12617
|
-
const {slides:
|
|
12614
|
+
const {slides: rawSlides, slidesToShow: slidesToShow = 1, spaceBetween: spaceBetween = 0, loop: loop = !1, initialSlide: initialSlide = 0, direction: direction = "horizontal", speed: speed = 300, allowTouchMove: allowTouchMove = !0, threshold: threshold = 50, autoplay: autoplay, onSlideChange: onSlideChange} = options, slides = Array.isArray(rawSlides) ? rawSlides : [], containerRef = React.useRef(null), wrapperRef = React.useRef(null), repositioningRef = React.useRef(!1), autoplayRef = React.useRef(null), [autoplayRunning, setAutoplayRunning] = React.useState(!1), sliderStateRef = React.useRef({
|
|
12618
12615
|
isTransitioning: !1,
|
|
12619
12616
|
loop: loop,
|
|
12620
12617
|
slides: slides,
|
|
@@ -13314,7 +13311,60 @@ const Textarea = React.memo( React.forwardRef((({value: value, defaultValue: de
|
|
|
13314
13311
|
|
|
13315
13312
|
Textarea.displayName = "Textarea";
|
|
13316
13313
|
|
|
13317
|
-
|
|
13314
|
+
// ─── Platform Maps ───────────────────────────────────────────────
|
|
13315
|
+
const PLATFORM_ICON_MAP = {
|
|
13316
|
+
facebook: "FacebookLogo",
|
|
13317
|
+
twitter: "TwitterLogo",
|
|
13318
|
+
instagram: "InstagramLogo",
|
|
13319
|
+
linkedin: "LinkedinLogo",
|
|
13320
|
+
youtube: "YoutubeLogo",
|
|
13321
|
+
github: "GithubLogo",
|
|
13322
|
+
discord: "DiscordLogo",
|
|
13323
|
+
tiktok: "TiktokLogo",
|
|
13324
|
+
pinterest: "PinterestLogo",
|
|
13325
|
+
snapchat: "SnapchatLogo",
|
|
13326
|
+
whatsapp: "WhatsappLogo",
|
|
13327
|
+
telegram: "TelegramLogo",
|
|
13328
|
+
reddit: "RedditLogo",
|
|
13329
|
+
twitch: "TwitchLogo",
|
|
13330
|
+
spotify: "SpotifyLogo",
|
|
13331
|
+
dribbble: "DribbbleLogo",
|
|
13332
|
+
behance: "BehanceLogo",
|
|
13333
|
+
medium: "MediumLogo",
|
|
13334
|
+
dev: "DevToLogo",
|
|
13335
|
+
codepen: "CodepenLogo"
|
|
13336
|
+
}, PLATFORM_LABEL_MAP = {
|
|
13337
|
+
facebook: "Facebook",
|
|
13338
|
+
twitter: "Twitter",
|
|
13339
|
+
instagram: "Instagram",
|
|
13340
|
+
linkedin: "LinkedIn",
|
|
13341
|
+
youtube: "YouTube",
|
|
13342
|
+
github: "GitHub",
|
|
13343
|
+
discord: "Discord",
|
|
13344
|
+
tiktok: "TikTok",
|
|
13345
|
+
pinterest: "Pinterest",
|
|
13346
|
+
snapchat: "Snapchat",
|
|
13347
|
+
whatsapp: "WhatsApp",
|
|
13348
|
+
telegram: "Telegram",
|
|
13349
|
+
reddit: "Reddit",
|
|
13350
|
+
twitch: "Twitch",
|
|
13351
|
+
spotify: "Spotify",
|
|
13352
|
+
dribbble: "Dribbble",
|
|
13353
|
+
behance: "Behance",
|
|
13354
|
+
medium: "Medium",
|
|
13355
|
+
dev: "Dev.to",
|
|
13356
|
+
codepen: "CodePen"
|
|
13357
|
+
}, getPlatformIcon = platform => {
|
|
13358
|
+
const iconName = PLATFORM_ICON_MAP[platform];
|
|
13359
|
+
return iconName ? jsxRuntime.jsx(Icon, {
|
|
13360
|
+
name: iconName
|
|
13361
|
+
}) : jsxRuntime.jsx(Icon, {
|
|
13362
|
+
name: "Link"
|
|
13363
|
+
});
|
|
13364
|
+
}, FooterSocialLink = React.forwardRef((({platform: platform, url: url, icon: icon, label: label, size: size = "md", variant: variant = "default", disabled: disabled = !1, className: className = "", ...props}, ref) => {
|
|
13365
|
+
const linkClass = [ "c-footer__social-link", `c-footer__social-link--${platform}`, `c-footer__social-link--${size}`, `c-footer__social-link--${variant}`, disabled && "c-footer__social-link--disabled", className ].filter(Boolean).join(" "), ariaLabel = label || `Follow us on ${(platform => PLATFORM_LABEL_MAP[platform] || platform)
|
|
13366
|
+
// ─── Component ───────────────────────────────────────────────────
|
|
13367
|
+
/**
|
|
13318
13368
|
* FooterSocialLink component provides styled social media links with platform-specific icons.
|
|
13319
13369
|
*
|
|
13320
13370
|
* @example
|
|
@@ -13322,30 +13372,7 @@ Textarea.displayName = "Textarea";
|
|
|
13322
13372
|
* <FooterSocialLink platform="twitter" url="https://twitter.com/company" />
|
|
13323
13373
|
* <FooterSocialLink platform="custom" url="https://example.com" icon={<CustomIcon />} label="Custom Platform" />
|
|
13324
13374
|
* ```
|
|
13325
|
-
*/
|
|
13326
|
-
const FooterSocialLink = React.forwardRef((({platform: platform, url: url, icon: icon, label: label, size: size = "md", variant: variant = "default", disabled: disabled = !1, className: className = "", ...props}, ref) => {
|
|
13327
|
-
const linkClass = [ "c-footer__social-link", `c-footer__social-link--${platform}`, `c-footer__social-link--${size}`, `c-footer__social-link--${variant}`, disabled && "c-footer__social-link--disabled", className ].filter(Boolean).join(" "), ariaLabel = label || `Follow us on ${(platform => ({
|
|
13328
|
-
facebook: "Facebook",
|
|
13329
|
-
twitter: "Twitter",
|
|
13330
|
-
instagram: "Instagram",
|
|
13331
|
-
linkedin: "LinkedIn",
|
|
13332
|
-
youtube: "YouTube",
|
|
13333
|
-
github: "GitHub",
|
|
13334
|
-
discord: "Discord",
|
|
13335
|
-
tiktok: "TikTok",
|
|
13336
|
-
pinterest: "Pinterest",
|
|
13337
|
-
snapchat: "Snapchat",
|
|
13338
|
-
whatsapp: "WhatsApp",
|
|
13339
|
-
telegram: "Telegram",
|
|
13340
|
-
reddit: "Reddit",
|
|
13341
|
-
twitch: "Twitch",
|
|
13342
|
-
spotify: "Spotify",
|
|
13343
|
-
dribbble: "Dribbble",
|
|
13344
|
-
behance: "Behance",
|
|
13345
|
-
medium: "Medium",
|
|
13346
|
-
dev: "Dev.to",
|
|
13347
|
-
codepen: "CodePen"
|
|
13348
|
-
}[platform] || platform))(platform)}`;
|
|
13375
|
+
*/ (platform)}`;
|
|
13349
13376
|
return jsxRuntime.jsxs("a", {
|
|
13350
13377
|
ref: ref,
|
|
13351
13378
|
href: disabled ? void 0 : url,
|
|
@@ -13357,35 +13384,7 @@ const FooterSocialLink = React.forwardRef((({platform: platform, url: url, icon
|
|
|
13357
13384
|
...props,
|
|
13358
13385
|
children: [ jsxRuntime.jsx("span", {
|
|
13359
13386
|
className: "c-footer__social-link-icon",
|
|
13360
|
-
children: icon || (platform
|
|
13361
|
-
const iconName = {
|
|
13362
|
-
facebook: "FacebookLogo",
|
|
13363
|
-
twitter: "TwitterLogo",
|
|
13364
|
-
instagram: "InstagramLogo",
|
|
13365
|
-
linkedin: "LinkedinLogo",
|
|
13366
|
-
youtube: "YoutubeLogo",
|
|
13367
|
-
github: "GithubLogo",
|
|
13368
|
-
discord: "DiscordLogo",
|
|
13369
|
-
tiktok: "TiktokLogo",
|
|
13370
|
-
pinterest: "PinterestLogo",
|
|
13371
|
-
snapchat: "SnapchatLogo",
|
|
13372
|
-
whatsapp: "WhatsappLogo",
|
|
13373
|
-
telegram: "TelegramLogo",
|
|
13374
|
-
reddit: "RedditLogo",
|
|
13375
|
-
twitch: "TwitchLogo",
|
|
13376
|
-
spotify: "SpotifyLogo",
|
|
13377
|
-
dribbble: "DribbbleLogo",
|
|
13378
|
-
behance: "BehanceLogo",
|
|
13379
|
-
medium: "MediumLogo",
|
|
13380
|
-
dev: "DevToLogo",
|
|
13381
|
-
codepen: "CodepenLogo"
|
|
13382
|
-
}[platform];
|
|
13383
|
-
return iconName ? jsxRuntime.jsx(Icon, {
|
|
13384
|
-
name: iconName
|
|
13385
|
-
}) : jsxRuntime.jsx(Icon, {
|
|
13386
|
-
name: "Link"
|
|
13387
|
-
});
|
|
13388
|
-
})(platform)
|
|
13387
|
+
children: icon || getPlatformIcon(platform)
|
|
13389
13388
|
}), jsxRuntime.jsx("span", {
|
|
13390
13389
|
className: "c-footer__social-link-label u-visually-hidden",
|
|
13391
13390
|
children: ariaLabel
|
|
@@ -13508,17 +13507,83 @@ Row.displayName = "Row";
|
|
|
13508
13507
|
* ```
|
|
13509
13508
|
*/
|
|
13510
13509
|
const Footer = React.forwardRef((({brand: brand, brandLogo: brandLogo, brandDescription: brandDescription, copyright: copyright, layout: layout = "columns", variant: variant = "primary", size: size = "md", showNewsletter: showNewsletter = !1, newsletterTitle: newsletterTitle = "Stay Updated", newsletterDescription: newsletterDescription = "Subscribe to our newsletter for the latest updates.", newsletterPlaceholder: newsletterPlaceholder = "Enter your email", newsletterButtonText: newsletterButtonText = "Subscribe", onNewsletterSubmit: onNewsletterSubmit, socialLinks: socialLinks = [], showBackToTop: showBackToTop = !1, backToTopText: backToTopText = "Back to Top", onBackToTop: onBackToTop, showDivider: showDivider = !0, sticky: sticky = !1, children: children, className: className = "", disabled: disabled = !1, glass: glass, ...props}, ref) => {
|
|
13511
|
-
const {footerClass: footerClass, containerClass: containerClass, brandClass: brandClass, sectionsClass: sectionsClass, bottomClass: bottomClass, handleNewsletterSubmit: handleNewsletterSubmit, handleBackToTop: handleBackToTop
|
|
13512
|
-
const {layout: layout = FOOTER.DEFAULTS.LAYOUT, variant: variant = FOOTER.DEFAULTS.VARIANT, size: size = FOOTER.DEFAULTS.SIZE, sticky: sticky = FOOTER.DEFAULTS.STICKY, showNewsletter: showNewsletter = FOOTER.DEFAULTS.SHOW_NEWSLETTER, showBackToTop: showBackToTop = FOOTER.DEFAULTS.SHOW_BACK_TO_TOP, socialLinks: socialLinks = [], onNewsletterSubmit: onNewsletterSubmit, onBackToTop: onBackToTop, className: className = ""} = options
|
|
13513
|
-
|
|
13510
|
+
const {footerClass: footerClass, containerClass: containerClass, brandClass: brandClass, sectionsClass: sectionsClass, bottomClass: bottomClass, getResponsiveColumnProps: getResponsiveColumnProps, handleNewsletterSubmit: handleNewsletterSubmit, handleBackToTop: handleBackToTop} = function(options = {}) {
|
|
13511
|
+
const {layout: layout = FOOTER.DEFAULTS.LAYOUT, variant: variant = FOOTER.DEFAULTS.VARIANT, size: size = FOOTER.DEFAULTS.SIZE, sticky: sticky = FOOTER.DEFAULTS.STICKY, showNewsletter: showNewsletter = FOOTER.DEFAULTS.SHOW_NEWSLETTER, showBackToTop: showBackToTop = FOOTER.DEFAULTS.SHOW_BACK_TO_TOP, showDivider: showDivider = FOOTER.DEFAULTS.SHOW_DIVIDER, socialLinks: socialLinks = [], onNewsletterSubmit: onNewsletterSubmit, onBackToTop: onBackToTop, glass: glass = !1, className: className = ""} = options, footerClass = React.useMemo((() => {
|
|
13512
|
+
const layoutKey = layout.toUpperCase(), sizeKey = size.toUpperCase();
|
|
13513
|
+
return [ FOOTER.CLASSES.BASE, FOOTER.CLASSES[layoutKey] || FOOTER.CLASSES.COLUMNS, `c-footer--${variant}`, FOOTER.CLASSES[sizeKey] || FOOTER.CLASSES.MD, sticky && FOOTER.CLASSES.STICKY, showNewsletter && "c-footer--with-newsletter", glass && "c-footer--glass", className ].filter(Boolean).join(" ");
|
|
13514
|
+
}), [ layout, variant, size, sticky, showNewsletter, glass, className ]), containerClass = FOOTER.CLASSES.CONTAINER, brandClass = FOOTER.CLASSES.BRAND, sectionsClass = React.useMemo((() => [ FOOTER.CLASSES.SECTIONS, "columns" === layout && "c-footer__sections--columns", "centered" === layout && "c-footer__sections--centered", "stacked" === layout && "c-footer__sections--stacked" ].filter(Boolean).join(" ")), [ layout ]), bottomClass = FOOTER.CLASSES.BOTTOM, columnSizes = React.useMemo((() =>
|
|
13515
|
+
/**
|
|
13516
|
+
* Resolves grid column size map for a given layout.
|
|
13517
|
+
*/
|
|
13518
|
+
function(layout, showNewsletter) {
|
|
13519
|
+
switch (layout) {
|
|
13520
|
+
case "columns":
|
|
13521
|
+
default:
|
|
13522
|
+
return {
|
|
13523
|
+
brand: 4,
|
|
13524
|
+
content: showNewsletter ? 4 : 8,
|
|
13525
|
+
newsletter: showNewsletter ? 4 : 0
|
|
13526
|
+
};
|
|
13527
|
+
|
|
13528
|
+
case "centered":
|
|
13529
|
+
case "minimal":
|
|
13530
|
+
case "stacked":
|
|
13514
13531
|
return {
|
|
13515
|
-
|
|
13516
|
-
|
|
13517
|
-
|
|
13518
|
-
|
|
13519
|
-
|
|
13532
|
+
brand: 12,
|
|
13533
|
+
content: 12,
|
|
13534
|
+
newsletter: showNewsletter ? 12 : 0
|
|
13535
|
+
};
|
|
13536
|
+
|
|
13537
|
+
case "flexible":
|
|
13538
|
+
return {
|
|
13539
|
+
brand: "auto",
|
|
13540
|
+
content: "auto",
|
|
13541
|
+
newsletter: "auto"
|
|
13542
|
+
};
|
|
13543
|
+
|
|
13544
|
+
case "sidebar":
|
|
13545
|
+
return {
|
|
13546
|
+
brand: 3,
|
|
13547
|
+
content: 9,
|
|
13548
|
+
newsletter: showNewsletter ? 9 : 0
|
|
13549
|
+
};
|
|
13550
|
+
|
|
13551
|
+
case "wide":
|
|
13552
|
+
return {
|
|
13553
|
+
brand: 3,
|
|
13554
|
+
content: 6,
|
|
13555
|
+
newsletter: showNewsletter ? 3 : 0
|
|
13556
|
+
};
|
|
13557
|
+
}
|
|
13558
|
+
}
|
|
13559
|
+
/**
|
|
13560
|
+
* Computes responsive GridCol props for a given column type.
|
|
13561
|
+
*/ (layout, showNewsletter)), [ layout, showNewsletter ]);
|
|
13562
|
+
// ---------- CSS class strings ----------
|
|
13563
|
+
return {
|
|
13564
|
+
// Classes
|
|
13565
|
+
footerClass: footerClass,
|
|
13566
|
+
containerClass: containerClass,
|
|
13567
|
+
brandClass: brandClass,
|
|
13568
|
+
sectionsClass: sectionsClass,
|
|
13569
|
+
bottomClass: bottomClass,
|
|
13570
|
+
// Grid helpers
|
|
13571
|
+
columnSizes: columnSizes,
|
|
13572
|
+
getResponsiveColumnProps: columnType => function(columnType, layout, columnSizes) {
|
|
13573
|
+
return "flexible" === layout && "auto" === columnSizes[columnType] ? {
|
|
13574
|
+
xs: 12,
|
|
13575
|
+
sm: !0,
|
|
13576
|
+
md: !0
|
|
13577
|
+
} : {
|
|
13578
|
+
xs: 12,
|
|
13579
|
+
md: "columns" === layout || "sidebar" === layout || "wide" === layout ? columnSizes[columnType] : 12
|
|
13580
|
+
};
|
|
13581
|
+
}(columnType, layout, columnSizes)
|
|
13582
|
+
// ---------- Handlers ----------
|
|
13583
|
+
,
|
|
13584
|
+
// Handlers
|
|
13520
13585
|
handleNewsletterSubmit: email => {
|
|
13521
|
-
onNewsletterSubmit
|
|
13586
|
+
onNewsletterSubmit?.(email);
|
|
13522
13587
|
},
|
|
13523
13588
|
handleBackToTop: () => {
|
|
13524
13589
|
onBackToTop ? onBackToTop() : window.scrollTo({
|
|
@@ -13526,8 +13591,11 @@ const Footer = React.forwardRef((({brand: brand, brandLogo: brandLogo, brandDes
|
|
|
13526
13591
|
behavior: "smooth"
|
|
13527
13592
|
});
|
|
13528
13593
|
},
|
|
13594
|
+
// Pass-through state
|
|
13529
13595
|
socialLinks: socialLinks,
|
|
13530
|
-
showNewsletter: showNewsletter
|
|
13596
|
+
showNewsletter: showNewsletter,
|
|
13597
|
+
showBackToTop: showBackToTop,
|
|
13598
|
+
showDivider: showDivider
|
|
13531
13599
|
};
|
|
13532
13600
|
}({
|
|
13533
13601
|
layout: layout,
|
|
@@ -13536,73 +13604,19 @@ const Footer = React.forwardRef((({brand: brand, brandLogo: brandLogo, brandDes
|
|
|
13536
13604
|
sticky: sticky,
|
|
13537
13605
|
showNewsletter: showNewsletter,
|
|
13538
13606
|
showBackToTop: showBackToTop,
|
|
13607
|
+
showDivider: showDivider,
|
|
13539
13608
|
socialLinks: socialLinks,
|
|
13540
13609
|
onNewsletterSubmit: onNewsletterSubmit,
|
|
13541
13610
|
onBackToTop: onBackToTop,
|
|
13611
|
+
glass: Boolean(glass),
|
|
13542
13612
|
className: className
|
|
13543
|
-
}),
|
|
13544
|
-
switch (layout) {
|
|
13545
|
-
case "columns":
|
|
13546
|
-
default:
|
|
13547
|
-
return {
|
|
13548
|
-
brand: 4,
|
|
13549
|
-
content: showNewsletter ? 4 : 8,
|
|
13550
|
-
newsletter: showNewsletter ? 4 : 0
|
|
13551
|
-
};
|
|
13552
|
-
|
|
13553
|
-
case "centered":
|
|
13554
|
-
case "minimal":
|
|
13555
|
-
case "stacked":
|
|
13556
|
-
// For stacked layout, everything takes full width but stacked vertically
|
|
13557
|
-
return {
|
|
13558
|
-
brand: 12,
|
|
13559
|
-
content: 12,
|
|
13560
|
-
newsletter: showNewsletter ? 12 : 0
|
|
13561
|
-
};
|
|
13562
|
-
|
|
13563
|
-
case "flexible":
|
|
13564
|
-
// For flexible layout, adjust based on content
|
|
13565
|
-
return {
|
|
13566
|
-
brand: "auto",
|
|
13567
|
-
content: "auto",
|
|
13568
|
-
newsletter: "auto"
|
|
13569
|
-
};
|
|
13570
|
-
|
|
13571
|
-
case "sidebar":
|
|
13572
|
-
// For sidebar layout, brand on left, content and newsletter on right
|
|
13573
|
-
return {
|
|
13574
|
-
brand: 3,
|
|
13575
|
-
content: 9,
|
|
13576
|
-
newsletter: showNewsletter ? 9 : 0
|
|
13577
|
-
};
|
|
13578
|
-
|
|
13579
|
-
case "wide":
|
|
13580
|
-
// For wide layout, content takes more space
|
|
13581
|
-
return {
|
|
13582
|
-
brand: 3,
|
|
13583
|
-
content: 6,
|
|
13584
|
-
newsletter: showNewsletter ? 3 : 0
|
|
13585
|
-
};
|
|
13586
|
-
}
|
|
13587
|
-
})(), getResponsiveColumnProps = columnType => {
|
|
13588
|
-
const baseMd = "columns" === layout || "sidebar" === layout || "wide" === layout ? columnSizes[columnType] : 12;
|
|
13589
|
-
// For flexible layout, we want auto-sizing
|
|
13590
|
-
return "flexible" === layout && "auto" === columnSizes[columnType] ? {
|
|
13591
|
-
xs: 12,
|
|
13592
|
-
sm: !0,
|
|
13593
|
-
md: !0
|
|
13594
|
-
} : {
|
|
13595
|
-
xs: 12,
|
|
13596
|
-
md: baseMd
|
|
13597
|
-
};
|
|
13598
|
-
// For other layouts, we use specific sizes
|
|
13599
|
-
}, footerContent = jsxRuntime.jsxs("div", {
|
|
13613
|
+
}), footerContent = jsxRuntime.jsxs("div", {
|
|
13600
13614
|
className: containerClass,
|
|
13601
13615
|
children: [ jsxRuntime.jsxs(Grid, {
|
|
13602
13616
|
className: sectionsClass,
|
|
13603
13617
|
alignItems: "start",
|
|
13604
13618
|
justifyContent: "centered" === layout ? "center" : void 0,
|
|
13605
|
-
children: [
|
|
13619
|
+
children: [ brand || brandLogo || brandDescription ? jsxRuntime.jsxs(GridCol, {
|
|
13606
13620
|
...getResponsiveColumnProps("brand"),
|
|
13607
13621
|
className: brandClass,
|
|
13608
13622
|
children: [ brandLogo && jsxRuntime.jsx("div", {
|
|
@@ -13630,19 +13644,17 @@ const Footer = React.forwardRef((({brand: brand, brandLogo: brandLogo, brandDes
|
|
|
13630
13644
|
size: size
|
|
13631
13645
|
}, `${link.platform}-${index}`)))
|
|
13632
13646
|
}) ]
|
|
13633
|
-
}), children
|
|
13647
|
+
}) : null, children ? jsxRuntime.jsx(GridCol, {
|
|
13634
13648
|
...getResponsiveColumnProps("content"),
|
|
13635
13649
|
className: "c-footer__content",
|
|
13636
13650
|
children: jsxRuntime.jsx(Grid, {
|
|
13637
13651
|
className: "c-footer__sections",
|
|
13638
13652
|
alignItems: "centered" === layout || "stacked" === layout ? "center" : void 0,
|
|
13639
|
-
children: React__default.default.Children.map(children, (child =>
|
|
13640
|
-
// Check if the child is a valid React element
|
|
13641
|
-
React__default.default.isValidElement(child) ? React__default.default.cloneElement(child, {
|
|
13653
|
+
children: React__default.default.Children.map(children, (child => React__default.default.isValidElement(child) ? React__default.default.cloneElement(child, {
|
|
13642
13654
|
showNewsletter: showNewsletter
|
|
13643
13655
|
}) : child))
|
|
13644
13656
|
})
|
|
13645
|
-
}), showNewsletter
|
|
13657
|
+
}) : null, showNewsletter ? jsxRuntime.jsxs(GridCol, {
|
|
13646
13658
|
...getResponsiveColumnProps("newsletter"),
|
|
13647
13659
|
className: "c-footer__newsletter",
|
|
13648
13660
|
children: [ jsxRuntime.jsx("h4", {
|
|
@@ -13673,32 +13685,41 @@ const Footer = React.forwardRef((({brand: brand, brandLogo: brandLogo, brandDes
|
|
|
13673
13685
|
}) ]
|
|
13674
13686
|
})
|
|
13675
13687
|
}) ]
|
|
13676
|
-
}) ]
|
|
13677
|
-
}),
|
|
13678
|
-
|
|
13679
|
-
|
|
13680
|
-
|
|
13681
|
-
|
|
13682
|
-
|
|
13683
|
-
|
|
13684
|
-
|
|
13685
|
-
|
|
13686
|
-
|
|
13687
|
-
|
|
13688
|
-
|
|
13689
|
-
|
|
13690
|
-
|
|
13691
|
-
|
|
13692
|
-
|
|
13693
|
-
|
|
13688
|
+
}) : null ]
|
|
13689
|
+
}), copyright || showBackToTop ? jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
13690
|
+
children: [ showDivider && jsxRuntime.jsx("hr", {
|
|
13691
|
+
className: "c-footer__divider"
|
|
13692
|
+
}), jsxRuntime.jsxs("div", {
|
|
13693
|
+
className: bottomClass,
|
|
13694
|
+
children: [ copyright && jsxRuntime.jsx("div", {
|
|
13695
|
+
className: "c-footer__copyright",
|
|
13696
|
+
children: copyright
|
|
13697
|
+
}), showBackToTop && jsxRuntime.jsxs(Button, {
|
|
13698
|
+
variant: "ghost",
|
|
13699
|
+
className: "c-footer__back-to-top",
|
|
13700
|
+
onClick: handleBackToTop,
|
|
13701
|
+
disabled: disabled,
|
|
13702
|
+
"aria-label": backToTopText,
|
|
13703
|
+
children: [ jsxRuntime.jsx("span", {
|
|
13704
|
+
className: "c-footer__back-to-top-icon",
|
|
13705
|
+
children: "↑"
|
|
13706
|
+
}), jsxRuntime.jsx("span", {
|
|
13707
|
+
className: "c-footer__back-to-top-text",
|
|
13708
|
+
children: backToTopText
|
|
13709
|
+
}) ]
|
|
13694
13710
|
}) ]
|
|
13695
13711
|
}) ]
|
|
13696
|
-
}) ]
|
|
13712
|
+
}) : null ]
|
|
13697
13713
|
});
|
|
13698
|
-
//
|
|
13699
|
-
|
|
13714
|
+
// ──────────────────────────────────────────
|
|
13715
|
+
// Render helpers
|
|
13716
|
+
// ──────────────────────────────────────────
|
|
13717
|
+
// ──────────────────────────────────────────
|
|
13718
|
+
// Root element
|
|
13719
|
+
// ──────────────────────────────────────────
|
|
13720
|
+
return jsxRuntime.jsx("footer", {
|
|
13700
13721
|
ref: ref,
|
|
13701
|
-
className: footerClass
|
|
13722
|
+
className: footerClass,
|
|
13702
13723
|
...props,
|
|
13703
13724
|
children: glass ? jsxRuntime.jsx(AtomixGlass, {
|
|
13704
13725
|
...glass,
|
|
@@ -13946,7 +13967,7 @@ var layouts = Object.freeze({
|
|
|
13946
13967
|
* </FooterSection>
|
|
13947
13968
|
* ```
|
|
13948
13969
|
*/ const FooterSection = React.forwardRef((({title: title, icon: icon, collapsible: collapsible = !1, defaultCollapsed: defaultCollapsed = !1, showNewsletter: showNewsletter = !1, children: children, className: className = "", ...props}, ref) => {
|
|
13949
|
-
const [isCollapsed, setIsCollapsed] =
|
|
13970
|
+
const [isCollapsed, setIsCollapsed] = React.useState(defaultCollapsed), sectionId = title ? `footer-section-${title.toString().toLowerCase().replace(/\s+/g, "-")}` : void 0, sectionClass = [ "c-footer__section", collapsible && "c-footer__section--collapsible", isCollapsed && "c-footer__section--collapsed", className ].filter(Boolean).join(" ");
|
|
13950
13971
|
return jsxRuntime.jsx(GridCol, {
|
|
13951
13972
|
xs: 12,
|
|
13952
13973
|
md: showNewsletter ? 6 : 3,
|
|
@@ -13955,16 +13976,16 @@ var layouts = Object.freeze({
|
|
|
13955
13976
|
ref: ref,
|
|
13956
13977
|
className: sectionClass,
|
|
13957
13978
|
...props,
|
|
13958
|
-
children: [ title
|
|
13979
|
+
children: [ title ? collapsible ? jsxRuntime.jsx("div", {
|
|
13959
13980
|
className: "c-footer__section-header",
|
|
13960
|
-
children:
|
|
13981
|
+
children: jsxRuntime.jsxs("button", {
|
|
13961
13982
|
type: "button",
|
|
13962
13983
|
className: "c-footer__section-toggle",
|
|
13963
13984
|
onClick: () => {
|
|
13964
|
-
collapsible && setIsCollapsed(!
|
|
13985
|
+
collapsible && setIsCollapsed((prev => !prev));
|
|
13965
13986
|
},
|
|
13966
13987
|
"aria-expanded": !isCollapsed,
|
|
13967
|
-
"aria-controls":
|
|
13988
|
+
"aria-controls": sectionId,
|
|
13968
13989
|
children: [ icon && jsxRuntime.jsx("span", {
|
|
13969
13990
|
className: "c-footer__section-icon",
|
|
13970
13991
|
children: icon
|
|
@@ -13975,7 +13996,10 @@ var layouts = Object.freeze({
|
|
|
13975
13996
|
className: "c-footer__section-chevron",
|
|
13976
13997
|
children: isCollapsed ? "▼" : "▲"
|
|
13977
13998
|
}) ]
|
|
13978
|
-
})
|
|
13999
|
+
})
|
|
14000
|
+
}) : jsxRuntime.jsx("div", {
|
|
14001
|
+
className: "c-footer__section-header",
|
|
14002
|
+
children: jsxRuntime.jsxs("div", {
|
|
13979
14003
|
className: "c-footer__section-header-content",
|
|
13980
14004
|
children: [ icon && jsxRuntime.jsx("span", {
|
|
13981
14005
|
className: "c-footer__section-icon",
|
|
@@ -13985,12 +14009,9 @@ var layouts = Object.freeze({
|
|
|
13985
14009
|
children: title
|
|
13986
14010
|
}) ]
|
|
13987
14011
|
})
|
|
13988
|
-
}), jsxRuntime.jsx("div", {
|
|
14012
|
+
}) : null, jsxRuntime.jsx("div", {
|
|
13989
14013
|
className: "c-footer__section-content",
|
|
13990
|
-
id:
|
|
13991
|
-
style: {
|
|
13992
|
-
display: collapsible && isCollapsed ? "none" : "flex"
|
|
13993
|
-
},
|
|
14014
|
+
id: sectionId,
|
|
13994
14015
|
children: children
|
|
13995
14016
|
}) ]
|
|
13996
14017
|
})
|
|
@@ -14009,8 +14030,8 @@ FooterSection.displayName = "FooterSection";
|
|
|
14009
14030
|
* </FooterLink>
|
|
14010
14031
|
* ```
|
|
14011
14032
|
*/
|
|
14012
|
-
const FooterLink = React.forwardRef((({href: href, icon: icon, external: external = !1, active: active = !1, disabled: disabled = !1, onClick: onClick, children: children, className: className = "",
|
|
14013
|
-
const
|
|
14033
|
+
const FooterLink = React.forwardRef((({href: href, icon: icon, external: external = !1, active: active = !1, disabled: disabled = !1, onClick: onClick, children: children, className: className = "", linkComponent: linkComponent, ...props}, ref) => {
|
|
14034
|
+
const sharedProps = {
|
|
14014
14035
|
className: [ "c-footer__link", active && "c-footer__link--active", disabled && "c-footer__link--disabled", className ].filter(Boolean).join(" "),
|
|
14015
14036
|
onClick: disabled ? void 0 : onClick,
|
|
14016
14037
|
"aria-disabled": disabled,
|
|
@@ -14019,35 +14040,7 @@ const FooterLink = React.forwardRef((({href: href, icon: icon, external: extern
|
|
|
14019
14040
|
rel: "noopener noreferrer"
|
|
14020
14041
|
},
|
|
14021
14042
|
...props
|
|
14022
|
-
}
|
|
14023
|
-
if (LinkComponent) {
|
|
14024
|
-
const Component = LinkComponent, componentProps = {
|
|
14025
|
-
ref: ref,
|
|
14026
|
-
...href && !disabled ? {
|
|
14027
|
-
href: href,
|
|
14028
|
-
to: href
|
|
14029
|
-
} : {},
|
|
14030
|
-
...linkProps
|
|
14031
|
-
};
|
|
14032
|
-
// Only pass href/to if the link is not disabled and href exists
|
|
14033
|
-
return jsxRuntime.jsxs(Component, {
|
|
14034
|
-
...componentProps,
|
|
14035
|
-
children: [ icon && jsxRuntime.jsx("span", {
|
|
14036
|
-
className: "c-footer__link-icon",
|
|
14037
|
-
children: icon
|
|
14038
|
-
}), jsxRuntime.jsx("span", {
|
|
14039
|
-
className: "c-footer__link-text",
|
|
14040
|
-
children: children
|
|
14041
|
-
}), external && jsxRuntime.jsx("span", {
|
|
14042
|
-
className: "c-footer__link-external",
|
|
14043
|
-
children: "↗"
|
|
14044
|
-
}) ]
|
|
14045
|
-
});
|
|
14046
|
-
}
|
|
14047
|
-
return jsxRuntime.jsxs("a", {
|
|
14048
|
-
ref: ref,
|
|
14049
|
-
href: disabled ? void 0 : href,
|
|
14050
|
-
...linkProps,
|
|
14043
|
+
}, linkContent = jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
14051
14044
|
children: [ icon && jsxRuntime.jsx("span", {
|
|
14052
14045
|
className: "c-footer__link-icon",
|
|
14053
14046
|
children: icon
|
|
@@ -14059,11 +14052,37 @@ const FooterLink = React.forwardRef((({href: href, icon: icon, external: extern
|
|
|
14059
14052
|
children: "↗"
|
|
14060
14053
|
}) ]
|
|
14061
14054
|
});
|
|
14055
|
+
if (linkComponent) {
|
|
14056
|
+
const Component = linkComponent;
|
|
14057
|
+
return jsxRuntime.jsx(Component, {
|
|
14058
|
+
ref: ref,
|
|
14059
|
+
...href && !disabled ? {
|
|
14060
|
+
href: href,
|
|
14061
|
+
to: href
|
|
14062
|
+
} : {},
|
|
14063
|
+
...sharedProps,
|
|
14064
|
+
children: linkContent
|
|
14065
|
+
});
|
|
14066
|
+
}
|
|
14067
|
+
return jsxRuntime.jsx("a", {
|
|
14068
|
+
ref: ref,
|
|
14069
|
+
href: disabled ? void 0 : href,
|
|
14070
|
+
...sharedProps,
|
|
14071
|
+
children: linkContent
|
|
14072
|
+
});
|
|
14062
14073
|
}));
|
|
14063
14074
|
|
|
14064
14075
|
FooterLink.displayName = "FooterLink";
|
|
14065
14076
|
|
|
14066
|
-
const
|
|
14077
|
+
const HERO_DEFAULT_GLASS_PROPS = {
|
|
14078
|
+
displacementScale: 60,
|
|
14079
|
+
blurAmount: 3,
|
|
14080
|
+
saturation: 180,
|
|
14081
|
+
aberrationIntensity: 0,
|
|
14082
|
+
borderRadius: 8,
|
|
14083
|
+
overLight: !1,
|
|
14084
|
+
mode: "standard"
|
|
14085
|
+
}, Hero = ({title: title, subtitle: subtitle, text: text, imageSrc: imageSrc, imageAlt: imageAlt = "Hero image", alignment: alignment = "left", backgroundImageSrc: backgroundImageSrc, showOverlay: showOverlay = !0, fullViewportHeight: fullViewportHeight = !1, actions: actions, imageColSize: imageColSize = 7, imageColClassName: imageColClassName, imageColStyle: imageColStyle, contentColSize: contentColSize = 5, contentColClassName: contentColClassName, contentColStyle: contentColStyle, contentWidth: contentWidth, className: className = "", style: style, parallax: parallax = !1, parallaxIntensity: parallaxIntensity = .5, videoBackground: videoBackground, children: children, glass: glass, videoOptions: videoOptions = {
|
|
14067
14086
|
autoplay: !0,
|
|
14068
14087
|
loop: !0,
|
|
14069
14088
|
muted: !0
|
|
@@ -14106,9 +14125,8 @@ const Hero = ({title: title, subtitle: subtitle, text: text, imageSrc: imageSrc,
|
|
|
14106
14125
|
}), "Your browser does not support the video tag." ]
|
|
14107
14126
|
});
|
|
14108
14127
|
}, renderContent = () => {
|
|
14109
|
-
|
|
14110
|
-
|
|
14111
|
-
style: parts?.content?.style,
|
|
14128
|
+
// Build inner content elements ONCE — no duplication
|
|
14129
|
+
const innerElements = jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
14112
14130
|
children: [ subtitle && jsxRuntime.jsx("p", {
|
|
14113
14131
|
className: `${HERO.SELECTORS.SUBTITLE.replace(".", "")} ${parts?.subtitle?.className || ""}`.trim(),
|
|
14114
14132
|
style: parts?.subtitle?.style,
|
|
@@ -14126,71 +14144,25 @@ const Hero = ({title: title, subtitle: subtitle, text: text, imageSrc: imageSrc,
|
|
|
14126
14144
|
style: parts?.actions?.style,
|
|
14127
14145
|
children: actions
|
|
14128
14146
|
}) ]
|
|
14129
|
-
})
|
|
14130
|
-
|
|
14131
|
-
|
|
14132
|
-
|
|
14133
|
-
|
|
14134
|
-
|
|
14135
|
-
|
|
14136
|
-
|
|
14137
|
-
style: parts?.content?.style,
|
|
14138
|
-
children: jsxRuntime.jsx(AtomixGlass, {
|
|
14139
|
-
displacementScale: 60,
|
|
14140
|
-
blurAmount: 3,
|
|
14141
|
-
saturation: 180,
|
|
14142
|
-
aberrationIntensity: 0,
|
|
14143
|
-
borderRadius: 8,
|
|
14144
|
-
overLight: !1,
|
|
14145
|
-
mode: "standard",
|
|
14146
|
-
children: jsxRuntime.jsxs("div", {
|
|
14147
|
+
}), contentBody = glass ? (() => {
|
|
14148
|
+
const glassProps = !0 === glass ? HERO_DEFAULT_GLASS_PROPS : {
|
|
14149
|
+
...HERO_DEFAULT_GLASS_PROPS,
|
|
14150
|
+
...glass
|
|
14151
|
+
};
|
|
14152
|
+
return jsxRuntime.jsx(AtomixGlass, {
|
|
14153
|
+
...glassProps,
|
|
14154
|
+
children: jsxRuntime.jsx("div", {
|
|
14147
14155
|
className: "u-p-4",
|
|
14148
|
-
children:
|
|
14149
|
-
className: `${HERO.SELECTORS.SUBTITLE.replace(".", "")} ${parts?.subtitle?.className || ""}`.trim(),
|
|
14150
|
-
style: parts?.subtitle?.style,
|
|
14151
|
-
children: subtitle
|
|
14152
|
-
}), jsxRuntime.jsx(HeadingTag, {
|
|
14153
|
-
className: `${HERO.SELECTORS.TITLE.replace(".", "")} ${parts?.title?.className || ""}`.trim(),
|
|
14154
|
-
style: parts?.title?.style,
|
|
14155
|
-
children: title
|
|
14156
|
-
}), text && jsxRuntime.jsx("p", {
|
|
14157
|
-
className: `${HERO.SELECTORS.TEXT.replace(".", "")} ${parts?.text?.className || ""}`.trim(),
|
|
14158
|
-
style: parts?.text?.style,
|
|
14159
|
-
children: text
|
|
14160
|
-
}), actions && jsxRuntime.jsx("div", {
|
|
14161
|
-
className: `${HERO.SELECTORS.ACTIONS.replace(".", "")} ${parts?.actions?.className || ""}`.trim(),
|
|
14162
|
-
style: parts?.actions?.style,
|
|
14163
|
-
children: actions
|
|
14164
|
-
}) ]
|
|
14156
|
+
children: innerElements
|
|
14165
14157
|
})
|
|
14166
|
-
})
|
|
14167
|
-
}) :
|
|
14158
|
+
});
|
|
14159
|
+
})() : innerElements;
|
|
14160
|
+
// Conditionally wrap with AtomixGlass using the standard glass prop pattern
|
|
14161
|
+
return jsxRuntime.jsx("div", {
|
|
14168
14162
|
className: `${HERO.SELECTORS.CONTENT.replace(".", "")} ${parts?.content?.className || ""}`.trim(),
|
|
14169
14163
|
style: parts?.content?.style,
|
|
14170
|
-
children:
|
|
14171
|
-
|
|
14172
|
-
children: jsxRuntime.jsxs("div", {
|
|
14173
|
-
className: "u-p-4",
|
|
14174
|
-
children: [ subtitle && jsxRuntime.jsx("p", {
|
|
14175
|
-
className: `${HERO.SELECTORS.SUBTITLE.replace(".", "")} ${parts?.subtitle?.className || ""}`.trim(),
|
|
14176
|
-
style: parts?.subtitle?.style,
|
|
14177
|
-
children: subtitle
|
|
14178
|
-
}), jsxRuntime.jsx(HeadingTag, {
|
|
14179
|
-
className: `${HERO.SELECTORS.TITLE.replace(".", "")} ${parts?.title?.className || ""}`.trim(),
|
|
14180
|
-
style: parts?.title?.style,
|
|
14181
|
-
children: title
|
|
14182
|
-
}), text && jsxRuntime.jsx("p", {
|
|
14183
|
-
className: `${HERO.SELECTORS.TEXT.replace(".", "")} ${parts?.text?.className || ""}`.trim(),
|
|
14184
|
-
style: parts?.text?.style,
|
|
14185
|
-
children: text
|
|
14186
|
-
}), actions && jsxRuntime.jsx("div", {
|
|
14187
|
-
className: `${HERO.SELECTORS.ACTIONS.replace(".", "")} ${parts?.actions?.className || ""}`.trim(),
|
|
14188
|
-
style: parts?.actions?.style,
|
|
14189
|
-
children: actions
|
|
14190
|
-
}) ]
|
|
14191
|
-
})
|
|
14192
|
-
})
|
|
14193
|
-
}) : content;
|
|
14164
|
+
children: contentBody
|
|
14165
|
+
});
|
|
14194
14166
|
}, renderForegroundImage = () => hasForegroundImage ? "center" === alignment ? jsxRuntime.jsx("div", {
|
|
14195
14167
|
className: `${HERO.SELECTORS.IMAGE_WRAPPER.replace(".", "")} ${imageColClassName || ""} ${parts?.imageWrapper?.className || ""}`.trim(),
|
|
14196
14168
|
style: {
|
|
@@ -14341,35 +14313,24 @@ Hero.Title = ({children: children, className: className, level: level = "h1", ..
|
|
|
14341
14313
|
...props,
|
|
14342
14314
|
children: children
|
|
14343
14315
|
}), Hero.Content = ({children: children, className: className, style: style, glass: glass, ...props}) => {
|
|
14344
|
-
const contentClass = `${HERO.SELECTORS.CONTENT.replace(".", "")} ${className || ""}`.trim()
|
|
14345
|
-
|
|
14346
|
-
|
|
14347
|
-
|
|
14348
|
-
|
|
14349
|
-
|
|
14350
|
-
|
|
14351
|
-
|
|
14352
|
-
|
|
14353
|
-
|
|
14354
|
-
|
|
14355
|
-
return jsxRuntime.jsx("div", {
|
|
14356
|
-
className: contentClass,
|
|
14357
|
-
style: style,
|
|
14358
|
-
...props,
|
|
14359
|
-
children: jsxRuntime.jsx(AtomixGlass, {
|
|
14360
|
-
...glassProps,
|
|
14361
|
-
children: jsxRuntime.jsx("div", {
|
|
14362
|
-
className: "u-p-4",
|
|
14363
|
-
children: children
|
|
14364
|
-
})
|
|
14365
|
-
})
|
|
14316
|
+
const contentClass = `${HERO.SELECTORS.CONTENT.replace(".", "")} ${className || ""}`.trim(), innerContent = glass ? jsxRuntime.jsx("div", {
|
|
14317
|
+
className: "u-p-4",
|
|
14318
|
+
children: children
|
|
14319
|
+
}) : children, wrappedContent = glass ? (() => {
|
|
14320
|
+
const glassProps = !0 === glass ? HERO_DEFAULT_GLASS_PROPS : {
|
|
14321
|
+
...HERO_DEFAULT_GLASS_PROPS,
|
|
14322
|
+
...glass
|
|
14323
|
+
};
|
|
14324
|
+
return jsxRuntime.jsx(AtomixGlass, {
|
|
14325
|
+
...glassProps,
|
|
14326
|
+
children: innerContent
|
|
14366
14327
|
});
|
|
14367
|
-
}
|
|
14328
|
+
})() : innerContent;
|
|
14368
14329
|
return jsxRuntime.jsx("div", {
|
|
14369
14330
|
className: contentClass,
|
|
14370
14331
|
style: style,
|
|
14371
14332
|
...props,
|
|
14372
|
-
children:
|
|
14333
|
+
children: wrappedContent
|
|
14373
14334
|
});
|
|
14374
14335
|
}, Hero.Image = ({src: src, alt: alt = "", className: className, wrapperClassName: wrapperClassName, wrapperStyle: wrapperStyle, ...props}) => jsxRuntime.jsx("div", {
|
|
14375
14336
|
className: `${HERO.SELECTORS.IMAGE_WRAPPER.replace(".", "")} ${wrapperClassName || ""}`.trim(),
|
|
@@ -14912,7 +14873,7 @@ function setRef(ref, value) {
|
|
|
14912
14873
|
* ```
|
|
14913
14874
|
*/ Nav.displayName = "Nav";
|
|
14914
14875
|
|
|
14915
|
-
const NavItem = React.forwardRef((({children: children, dropdown: dropdown = !1, megaMenu: megaMenu = !1, active: active = !1, href: href, onClick: onClick, className: className = "", disabled: disabled = !1, "aria-expanded": ariaExpanded,
|
|
14876
|
+
const NavItem = React.forwardRef((({children: children, dropdown: dropdown = !1, megaMenu: megaMenu = !1, active: active = !1, href: href, target: target, onClick: onClick, className: className = "", disabled: disabled = !1, "aria-expanded": ariaExpanded, linkComponent: linkComponent}, ref) => {
|
|
14916
14877
|
const {generateNavItemClass: generateNavItemClass, generateNavLinkClass: generateNavLinkClass, handleClick: handleClick} = useNavItem({
|
|
14917
14878
|
dropdown: dropdown,
|
|
14918
14879
|
megaMenu: megaMenu,
|
|
@@ -14952,6 +14913,7 @@ const NavItem = React.forwardRef((({children: children, dropdown: dropdown = !1
|
|
|
14952
14913
|
ref: combinedRef,
|
|
14953
14914
|
href: href || "#",
|
|
14954
14915
|
to: href || "#",
|
|
14916
|
+
target: target,
|
|
14955
14917
|
className: navLinkClass,
|
|
14956
14918
|
onClick: dropdown || megaMenu ? e => {
|
|
14957
14919
|
(dropdown || megaMenu) && (e.preventDefault(), setIsActive(!isActive));
|
|
@@ -14964,8 +14926,8 @@ const NavItem = React.forwardRef((({children: children, dropdown: dropdown = !1
|
|
|
14964
14926
|
className: navItemClass,
|
|
14965
14927
|
role: "menuitem",
|
|
14966
14928
|
"aria-haspopup": dropdown || megaMenu,
|
|
14967
|
-
children: [
|
|
14968
|
-
const Component =
|
|
14929
|
+
children: [ linkComponent ? (() => {
|
|
14930
|
+
const Component = linkComponent;
|
|
14969
14931
|
return jsxRuntime.jsx(Component, {
|
|
14970
14932
|
...linkProps,
|
|
14971
14933
|
children: dropdown || megaMenu ? childContent[0] : children
|
|
@@ -15151,7 +15113,7 @@ SideMenuList.displayName = "SideMenuList";
|
|
|
15151
15113
|
*
|
|
15152
15114
|
* // With icon and custom link component
|
|
15153
15115
|
* import Link from 'next/link';
|
|
15154
|
-
* <SideMenuItem href="/settings" icon={<Icon name="Settings" />}
|
|
15116
|
+
* <SideMenuItem href="/settings" icon={<Icon name="Settings" />} linkComponent={Link}>
|
|
15155
15117
|
* Settings
|
|
15156
15118
|
* </SideMenuItem>
|
|
15157
15119
|
*
|
|
@@ -15166,7 +15128,7 @@ SideMenuList.displayName = "SideMenuList";
|
|
|
15166
15128
|
* </SideMenuItem>
|
|
15167
15129
|
* ```
|
|
15168
15130
|
*/
|
|
15169
|
-
const SideMenuItem = React.forwardRef((({children: children, href: href, onClick: onClick, active: active = !1, disabled: disabled = !1, icon: icon, className: className = "", target: target, rel: rel,
|
|
15131
|
+
const SideMenuItem = React.forwardRef((({children: children, href: href, onClick: onClick, active: active = !1, disabled: disabled = !1, icon: icon, className: className = "", target: target, rel: rel, linkComponent: linkComponentProp}, ref) => {
|
|
15170
15132
|
const {generateSideMenuItemClass: generateSideMenuItemClass, handleClick: handleClick} = useSideMenuItem({
|
|
15171
15133
|
active: active,
|
|
15172
15134
|
disabled: disabled,
|
|
@@ -15174,8 +15136,8 @@ const SideMenuItem = React.forwardRef((({children: children, href: href, onClic
|
|
|
15174
15136
|
}), itemClass = generateSideMenuItemClass();
|
|
15175
15137
|
// Render as link if href is provided
|
|
15176
15138
|
if (href) {
|
|
15177
|
-
if (
|
|
15178
|
-
const LinkComp =
|
|
15139
|
+
if (linkComponentProp) {
|
|
15140
|
+
const LinkComp = linkComponentProp, linkProps = {
|
|
15179
15141
|
ref: ref,
|
|
15180
15142
|
className: itemClass,
|
|
15181
15143
|
onClick: disabled ? e => {
|
|
@@ -15261,7 +15223,7 @@ SideMenuItem.displayName = "SideMenuItem";
|
|
|
15261
15223
|
* </SideMenu>
|
|
15262
15224
|
* ```
|
|
15263
15225
|
*/
|
|
15264
|
-
const SideMenu = React.forwardRef((({title: title, children: children, menuItems: menuItems = [], isOpen: isOpen, onToggle: onToggle, collapsible: collapsible = !0, collapsibleDesktop: collapsibleDesktop = !1, defaultCollapsedDesktop: defaultCollapsedDesktop = !1, className: className = "", style: style, disabled: disabled = !1, toggleIcon: toggleIcon, id: id, glass: glass,
|
|
15226
|
+
const SideMenu = React.forwardRef((({title: title, children: children, menuItems: menuItems = [], isOpen: isOpen, onToggle: onToggle, collapsible: collapsible = !0, collapsibleDesktop: collapsibleDesktop = !1, defaultCollapsedDesktop: defaultCollapsedDesktop = !1, className: className = "", style: style, disabled: disabled = !1, toggleIcon: toggleIcon, id: id, glass: glass, linkComponent: linkComponent}, ref) => {
|
|
15265
15227
|
const {isOpenState: isOpenState, wrapperRef: wrapperRef, innerRef: innerRef, sideMenuRef: sideMenuRef, generateSideMenuClass: generateSideMenuClass, generateWrapperClass: generateWrapperClass, handleToggle: handleToggle} = useSideMenu({
|
|
15266
15228
|
isOpen: isOpen,
|
|
15267
15229
|
onToggle: onToggle,
|
|
@@ -15415,7 +15377,7 @@ const SideMenu = React.forwardRef((({title: title, children: children, menuItem
|
|
|
15415
15377
|
active: subItem.active,
|
|
15416
15378
|
disabled: subItem.disabled,
|
|
15417
15379
|
icon: subItem.icon,
|
|
15418
|
-
|
|
15380
|
+
linkComponent: linkComponent,
|
|
15419
15381
|
children: subItem.title
|
|
15420
15382
|
}, subIndex)))
|
|
15421
15383
|
})
|
|
@@ -15482,31 +15444,43 @@ const Menu = React.forwardRef((({children: children, className: className = "",
|
|
|
15482
15444
|
|
|
15483
15445
|
Menu.displayName = "Menu";
|
|
15484
15446
|
|
|
15485
|
-
const MenuItem = React.forwardRef((({children: children, href: href = "#", icon: icon, active: active = !1, disabled: disabled = !1, onClick: onClick, className: className = ""}, ref) => {
|
|
15486
|
-
const itemClass = `c-menu__item ${active ? "is-active" : ""} ${disabled ? "is-disabled" : ""} ${className}
|
|
15447
|
+
const MenuItem = React.forwardRef((({children: children, href: href = "#", target: target, linkComponent: linkComponent, icon: icon, active: active = !1, disabled: disabled = !1, onClick: onClick, className: className = ""}, ref) => {
|
|
15448
|
+
const itemClass = `c-menu__item ${active ? "is-active" : ""} ${disabled ? "is-disabled" : ""} ${className}`, linkProps = {
|
|
15449
|
+
href: href,
|
|
15450
|
+
to: href,
|
|
15451
|
+
target: target,
|
|
15452
|
+
className: "c-menu__link",
|
|
15453
|
+
onClick: e => {
|
|
15454
|
+
disabled ? e.preventDefault() : onClick && onClick();
|
|
15455
|
+
},
|
|
15456
|
+
"aria-disabled": disabled,
|
|
15457
|
+
"aria-current": active ? "page" : void 0
|
|
15458
|
+
}, content = jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
15459
|
+
children: [ icon && ("string" == typeof icon ? icon.startsWith("c-icon-") ? jsxRuntime.jsx(Icon, {
|
|
15460
|
+
name: mapIconName(icon.replace("c-icon-", "")),
|
|
15461
|
+
size: "sm",
|
|
15462
|
+
className: "c-menu__icon"
|
|
15463
|
+
}) : jsxRuntime.jsx("i", {
|
|
15464
|
+
className: `c-menu__icon ${icon}`,
|
|
15465
|
+
children: "string" != typeof icon && icon
|
|
15466
|
+
}) : jsxRuntime.jsx("span", {
|
|
15467
|
+
className: "c-menu__icon",
|
|
15468
|
+
children: icon
|
|
15469
|
+
})), children ]
|
|
15470
|
+
});
|
|
15487
15471
|
return jsxRuntime.jsx("li", {
|
|
15488
15472
|
ref: ref,
|
|
15489
15473
|
className: itemClass,
|
|
15490
15474
|
role: "menuitem",
|
|
15491
|
-
children:
|
|
15492
|
-
|
|
15493
|
-
|
|
15494
|
-
|
|
15495
|
-
|
|
15496
|
-
}
|
|
15497
|
-
|
|
15498
|
-
|
|
15499
|
-
children:
|
|
15500
|
-
name: mapIconName(icon.replace("c-icon-", "")),
|
|
15501
|
-
size: "sm",
|
|
15502
|
-
className: "c-menu__icon"
|
|
15503
|
-
}) : jsxRuntime.jsx("i", {
|
|
15504
|
-
className: `c-menu__icon ${icon}`,
|
|
15505
|
-
children: "string" != typeof icon && icon
|
|
15506
|
-
}) : jsxRuntime.jsx("span", {
|
|
15507
|
-
className: "c-menu__icon",
|
|
15508
|
-
children: icon
|
|
15509
|
-
})), children ]
|
|
15475
|
+
children: linkComponent ? (() => {
|
|
15476
|
+
const Component = linkComponent;
|
|
15477
|
+
return jsxRuntime.jsx(Component, {
|
|
15478
|
+
...linkProps,
|
|
15479
|
+
children: content
|
|
15480
|
+
});
|
|
15481
|
+
})() : jsxRuntime.jsx("a", {
|
|
15482
|
+
...linkProps,
|
|
15483
|
+
children: content
|
|
15510
15484
|
})
|
|
15511
15485
|
});
|
|
15512
15486
|
}));
|
|
@@ -15607,16 +15581,30 @@ const MegaMenuColumn = React.forwardRef((({title: title, icon: icon, children:
|
|
|
15607
15581
|
|
|
15608
15582
|
MegaMenuColumn.displayName = "MegaMenuColumn";
|
|
15609
15583
|
|
|
15610
|
-
const MegaMenuLink = React.forwardRef((({href: href, children: children, className: className = "", disabled: disabled = !1, onClick: onClick}, ref) =>
|
|
15611
|
-
|
|
15612
|
-
|
|
15613
|
-
|
|
15614
|
-
|
|
15615
|
-
|
|
15616
|
-
|
|
15617
|
-
|
|
15618
|
-
|
|
15619
|
-
}
|
|
15584
|
+
const MegaMenuLink = React.forwardRef((({href: href, target: target, linkComponent: linkComponent, children: children, className: className = "", disabled: disabled = !1, onClick: onClick}, ref) => {
|
|
15585
|
+
const linkProps = {
|
|
15586
|
+
ref: ref,
|
|
15587
|
+
href: href,
|
|
15588
|
+
to: href,
|
|
15589
|
+
target: target,
|
|
15590
|
+
className: `c-menu__subitem-link ${disabled ? "is-disabled" : ""} ${className}`,
|
|
15591
|
+
onClick: e => {
|
|
15592
|
+
disabled ? e.preventDefault() : onClick && onClick();
|
|
15593
|
+
},
|
|
15594
|
+
"aria-disabled": disabled
|
|
15595
|
+
};
|
|
15596
|
+
if (linkComponent) {
|
|
15597
|
+
const Component = linkComponent;
|
|
15598
|
+
return jsxRuntime.jsx(Component, {
|
|
15599
|
+
...linkProps,
|
|
15600
|
+
children: children
|
|
15601
|
+
});
|
|
15602
|
+
}
|
|
15603
|
+
return jsxRuntime.jsx("a", {
|
|
15604
|
+
...linkProps,
|
|
15605
|
+
children: children
|
|
15606
|
+
});
|
|
15607
|
+
}));
|
|
15620
15608
|
|
|
15621
15609
|
MegaMenuLink.displayName = "MegaMenuLink";
|
|
15622
15610
|
|
|
@@ -17599,8 +17587,8 @@ const SectionIntro = ({title: title, label: label, text: text, actions: actions,
|
|
|
17599
17587
|
SectionIntro.displayName = "SectionIntro";
|
|
17600
17588
|
|
|
17601
17589
|
const Slider = React.forwardRef(((props, ref) => {
|
|
17602
|
-
const {slides: slides = [], height: height = 300, width: width = "100%", slidesToShow: slidesToShow = 1, spaceBetween: spaceBetween = 0, loop: loop = !1, initialSlide: initialSlide = 0, direction: direction = "horizontal", speed: speed = 300, allowTouchMove: allowTouchMove = !0, threshold: threshold = 50, grabCursor: grabCursor = !0, autoplay: autoplay, navigation: navigation, pagination: pagination, className: className, style: style, onSlideChange: onSlideChange, ...rest} = props, slider = useSlider({
|
|
17603
|
-
slides:
|
|
17590
|
+
const {slides: slides = [], height: height = 300, width: width = "100%", slidesToShow: slidesToShow = 1, spaceBetween: spaceBetween = 0, loop: loop = !1, initialSlide: initialSlide = 0, direction: direction = "horizontal", speed: speed = 300, allowTouchMove: allowTouchMove = !0, threshold: threshold = 50, grabCursor: grabCursor = !0, autoplay: autoplay, navigation: navigation, pagination: pagination, className: className, style: style, onSlideChange: onSlideChange, ...rest} = props, validSlides = Array.isArray(slides) ? slides : [], slider = useSlider({
|
|
17591
|
+
slides: validSlides,
|
|
17604
17592
|
slidesToShow: slidesToShow,
|
|
17605
17593
|
spaceBetween: spaceBetween,
|
|
17606
17594
|
loop: loop,
|
|
@@ -17612,8 +17600,8 @@ const Slider = React.forwardRef(((props, ref) => {
|
|
|
17612
17600
|
autoplay: autoplay,
|
|
17613
17601
|
onSlideChange: onSlideChange
|
|
17614
17602
|
}), {containerRef: containerRef, wrapperRef: wrapperRef, allSlides: allSlides, realIndex: realIndex, translateValue: translateValue, slideWidth: slideWidth, transitioning: transitioning, touching: touching, slideNext: slideNext, slidePrev: slidePrev, goToSlide: goToSlide, canSlideNext: canSlideNext, canSlidePrev: canSlidePrev, handleTouchStart: handleTouchStart, handleTouchMove: handleTouchMove, handleTouchEnd: handleTouchEnd, loopedSlides: loopedSlides} = slider, totalWrapperWidth = React.useMemo((() => 0 === slideWidth ? 0 : allSlides.length * (slideWidth + spaceBetween) - spaceBetween), [ allSlides.length, slideWidth, spaceBetween ]);
|
|
17615
|
-
//
|
|
17616
|
-
if (
|
|
17603
|
+
// Ensure slides is an array to prevent .map errors
|
|
17604
|
+
if (0 === validSlides.length) return jsxRuntime.jsx("div", {
|
|
17617
17605
|
className: "c-slider c-slider--empty",
|
|
17618
17606
|
style: {
|
|
17619
17607
|
height: height,
|
|
@@ -17657,7 +17645,7 @@ const Slider = React.forwardRef(((props, ref) => {
|
|
|
17657
17645
|
willChange: "transform"
|
|
17658
17646
|
},
|
|
17659
17647
|
children: allSlides.map(((slide, index) => jsxRuntime.jsxs("div", {
|
|
17660
|
-
className: [ "c-slider__slide", (loop ? index %
|
|
17648
|
+
className: [ "c-slider__slide", (loop ? index % validSlides.length === realIndex : index === realIndex) && "c-slider__slide--active", slide.isClone && "c-slider__slide--duplicate" ].filter(Boolean).join(" "),
|
|
17661
17649
|
style: {
|
|
17662
17650
|
width: "vertical" === direction ? "100%" : `${slideWidth}px`,
|
|
17663
17651
|
height: "vertical" === direction ? `${slideWidth}px` : "100%",
|
|
@@ -17719,7 +17707,7 @@ const Slider = React.forwardRef(((props, ref) => {
|
|
|
17719
17707
|
}) ]
|
|
17720
17708
|
}), pagination && jsxRuntime.jsx("div", {
|
|
17721
17709
|
className: "c-slider__pagination",
|
|
17722
|
-
children:
|
|
17710
|
+
children: validSlides.map(((_, index) => jsxRuntime.jsx("button", {
|
|
17723
17711
|
type: "button",
|
|
17724
17712
|
className: "c-slider__pagination-bullet " + (index === realIndex ? "c-slider__pagination-bullet--active" : ""),
|
|
17725
17713
|
onClick: () => goToSlide(index),
|