@salesmind-ai/design-system 0.3.3 → 0.3.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/{SectionShell-BfBw5q0Y.d.cts → SectionShell-GlglHCzz.d.cts} +1 -0
- package/dist/{SectionShell-BfBw5q0Y.d.ts → SectionShell-GlglHCzz.d.ts} +1 -0
- package/dist/StatsSection-B8iD9L-o.d.ts +68 -0
- package/dist/StatsSection-wgd8Vge1.d.cts +68 -0
- package/dist/blog/index.cjs +13 -13
- package/dist/blog/index.d.cts +1 -1
- package/dist/blog/index.d.ts +1 -1
- package/dist/blog/index.js +2 -2
- package/dist/charts/index.cjs +11 -11
- package/dist/charts/index.js +1 -1
- package/dist/{chunk-F6YYWMME.js → chunk-2KQVZ5FB.js} +2 -2
- package/dist/{chunk-LMJPWXTZ.cjs → chunk-2ZNR2F2V.cjs} +8 -8
- package/dist/{chunk-TEC62D4A.cjs → chunk-6HKQ5ILL.cjs} +30 -30
- package/dist/chunk-6HKQ5ILL.cjs.map +1 -0
- package/dist/{chunk-IYPXJ6YC.cjs → chunk-EM7JHRYW.cjs} +1 -1
- package/dist/{chunk-IYPXJ6YC.cjs.map → chunk-EM7JHRYW.cjs.map} +1 -1
- package/dist/{chunk-REQ5Q6ZI.js → chunk-JNASH4OQ.js} +4 -4
- package/dist/chunk-JNASH4OQ.js.map +1 -0
- package/dist/{chunk-ZDLOA2UT.cjs → chunk-KDLH35OI.cjs} +4 -4
- package/dist/chunk-KDLH35OI.cjs.map +1 -0
- package/dist/{chunk-XQZVY7JJ.cjs → chunk-KK5UO2P4.cjs} +7 -7
- package/dist/{chunk-OLV7OD3X.cjs → chunk-LGNMFBLF.cjs} +4 -4
- package/dist/{chunk-ZWUKRCOJ.cjs → chunk-OGKGIXFC.cjs} +29 -29
- package/dist/{chunk-MTI27RDV.js → chunk-PE2KJVRN.js} +2 -2
- package/dist/{chunk-GUZIMHWS.js → chunk-RQUFZAZ7.js} +30 -30
- package/dist/chunk-RQUFZAZ7.js.map +1 -0
- package/dist/{chunk-LOWEAQST.js → chunk-T5H5PNLN.js} +2 -2
- package/dist/{chunk-TW5JB35D.js → chunk-U3LK2GID.js} +2 -2
- package/dist/{chunk-KBA2LFBG.js → chunk-UFAJY2DM.js} +1 -1
- package/dist/{chunk-KBA2LFBG.js.map → chunk-UFAJY2DM.js.map} +1 -1
- package/dist/index.cjs +93 -93
- package/dist/index.css +24 -13
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +7 -7
- package/dist/marketing/index.cjs +36 -36
- package/dist/marketing/index.d.cts +1 -1
- package/dist/marketing/index.d.ts +1 -1
- package/dist/marketing/index.js +2 -2
- package/dist/nav/index.cjs +16 -16
- package/dist/nav/index.css +24 -13
- package/dist/nav/index.css.map +1 -1
- package/dist/nav/index.js +1 -1
- package/dist/sections/index.cjs +14 -15
- package/dist/sections/index.cjs.map +1 -1
- package/dist/sections/index.d.cts +15 -69
- package/dist/sections/index.d.ts +15 -69
- package/dist/sections/index.js +11 -2
- package/dist/sections/index.js.map +1 -1
- package/dist/social-proof/index.cjs +12 -12
- package/dist/social-proof/index.d.cts +1 -1
- package/dist/social-proof/index.d.ts +1 -1
- package/dist/social-proof/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-GUZIMHWS.js.map +0 -1
- package/dist/chunk-REQ5Q6ZI.js.map +0 -1
- package/dist/chunk-TEC62D4A.cjs.map +0 -1
- package/dist/chunk-ZDLOA2UT.cjs.map +0 -1
- /package/dist/{chunk-F6YYWMME.js.map → chunk-2KQVZ5FB.js.map} +0 -0
- /package/dist/{chunk-LMJPWXTZ.cjs.map → chunk-2ZNR2F2V.cjs.map} +0 -0
- /package/dist/{chunk-LOWEAQST.js.map → chunk-KK5UO2P4.cjs.map} +0 -0
- /package/dist/{chunk-OLV7OD3X.cjs.map → chunk-LGNMFBLF.cjs.map} +0 -0
- /package/dist/{chunk-TW5JB35D.js.map → chunk-OGKGIXFC.cjs.map} +0 -0
- /package/dist/{chunk-MTI27RDV.js.map → chunk-PE2KJVRN.js.map} +0 -0
- /package/dist/{chunk-XQZVY7JJ.cjs.map → chunk-T5H5PNLN.js.map} +0 -0
- /package/dist/{chunk-ZWUKRCOJ.cjs.map → chunk-U3LK2GID.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Navbar/NavbarMobileHelpers.tsx","../src/components/Navbar/NavbarMegaMenu.tsx","../src/components/NavbarV2/NavbarV2.tsx","../src/components/SiteFooter/SiteFooter.tsx","../src/components/LocaleDropdown/LocaleDropdown.tsx","../src/components/OutboundLink/MDXOutboundLink.tsx"],"names":["forwardRef","clsx","jsx","useState","useRef","useEffect","useCallback","jsxs","ChevronDown","focusable","useId"],"mappings":"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","sourcesContent":["import React, { forwardRef, HTMLAttributes } from 'react';\nimport clsx from 'clsx';\nimport './Navbar.css';\n\n/* ============================================================================\n Mobile Menu Helpers — shared by NavbarV2 consumers\n ============================================================================\n These lightweight presentational components are used inside mobile menu\n overlays. They were originally part of Navbar V1 but are framework-agnostic\n and continue to be consumed by NavbarV2-based layouts.\n ============================================================================ */\n\nexport interface NavbarMobileNavItemProps extends HTMLAttributes<HTMLElement> {\n as?: React.ElementType;\n active?: boolean;\n href?: string;\n}\n\n/** Full-width touch-friendly nav item for the mobile menu. */\nexport const NavbarMobileNavItem = forwardRef<HTMLElement, NavbarMobileNavItemProps>(\n ({ as: Component = 'a', className, active, children, ...props }, ref) => (\n <Component\n ref={ref}\n className={clsx(\n 'ds-navbar__mobile-nav-item',\n active && 'ds-navbar__mobile-nav-item--active',\n className,\n )}\n aria-current={active ? 'page' : undefined}\n {...props}\n >\n {children}\n </Component>\n ),\n);\nNavbarMobileNavItem.displayName = 'NavbarMobileNavItem';\n\n/** Visual separator line inside the mobile menu. */\nexport function NavbarMobileSeparator({ className }: { className?: string }) {\n return <div className={clsx('ds-navbar__mobile-separator', className)} role=\"separator\" />;\n}\nNavbarMobileSeparator.displayName = 'NavbarMobileSeparator';\n\n/** Actions group at the bottom of the mobile menu (CTAs, auth). */\nexport const NavbarMobileActions = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={clsx('ds-navbar__mobile-actions', className)} {...props}>\n {children}\n </div>\n ),\n);\nNavbarMobileActions.displayName = 'NavbarMobileActions';\n","import React, { forwardRef, useState, useRef, useEffect, useCallback } from 'react';\nimport clsx from 'clsx';\nimport { Container } from '../LayoutPrimitives';\nimport './NavbarMegaMenu.css';\n\n/* ============================================================================\n Icons\n ============================================================================ */\n\nconst ChevronDown = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n/* ============================================================================\n NavbarMegaMenu\n ============================================================================ */\n\nexport interface NavbarMegaMenuProps {\n /** The text or element that toggles the menu */\n trigger: React.ReactNode;\n /** The content to display inside the mega menu */\n children: React.ReactNode;\n /** Optional class name */\n className?: string;\n /** Whether the menu is controlled */\n isOpen?: boolean;\n /** Change handler for controlled state */\n onOpenChange?: (isOpen: boolean) => void;\n /** Presentation style of the menu */\n variant?: 'fullWidth' | 'floating';\n}\n\nexport const NavbarMegaMenu = forwardRef<HTMLDivElement, NavbarMegaMenuProps>(\n (\n { trigger, children, className, isOpen: controlledOpen, onOpenChange, variant = 'fullWidth' },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const timeoutRef = useRef<number | null>(null);\n\n const handleOpen = useCallback(() => {\n const newState = true;\n if (isOpen !== newState) {\n if (!isControlled) setInternalOpen(newState);\n onOpenChange?.(newState);\n }\n }, [isOpen, isControlled, onOpenChange]);\n\n const handleClose = useCallback(() => {\n const newState = false;\n if (isOpen !== newState) {\n if (!isControlled) setInternalOpen(newState);\n onOpenChange?.(newState);\n }\n }, [isOpen, isControlled, onOpenChange]);\n\n const handleToggle = useCallback(() => {\n if (isOpen) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [isOpen, handleClose, handleOpen]);\n\n const handleMouseEnter = useCallback(() => {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n handleOpen();\n }, [handleOpen]);\n\n const handleMouseLeave = useCallback(() => {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = window.setTimeout(() => {\n handleClose();\n }, 150);\n }, [handleClose]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) window.clearTimeout(timeoutRef.current);\n };\n }, []);\n\n // Close on click outside\n useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n handleClose();\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen, handleClose]);\n\n // Close on Escape key\n useEffect(() => {\n if (!isOpen) return;\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') handleClose();\n };\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isOpen, handleClose]);\n\n return (\n <div\n className={clsx('ds-navbar-mega-menu', `ds-navbar-mega-menu--${variant}`, className)}\n ref={ref}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <button\n ref={triggerRef}\n className=\"ds-navbar-mega-menu__trigger\"\n onClick={handleToggle}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n >\n {trigger}\n <span\n className=\"ds-navbar-mega-menu__chevron\"\n data-state={isOpen ? 'open' : 'closed'}\n >\n <ChevronDown />\n </span>\n </button>\n\n {/* Content panel — always mounted, CSS transitions handle show/hide */}\n <div ref={containerRef}>\n <div\n className={clsx(\n 'ds-navbar-mega-menu__content',\n `ds-navbar-mega-menu__content--${variant}`,\n )}\n data-state={isOpen ? 'open' : 'closed'}\n >\n {variant === 'fullWidth' ? <Container>{children}</Container> : children}\n </div>\n </div>\n </div>\n );\n },\n);\n\nNavbarMegaMenu.displayName = 'NavbarMegaMenu';\n\n/* ============================================================================\n NavbarMegaMenuSection — Column with heading\n ============================================================================ */\n\nexport interface NavbarMegaMenuSectionProps {\n /** Section heading */\n heading?: string;\n /** Section children (NavbarMegaMenuItems) */\n children: React.ReactNode;\n /** Optional class name */\n className?: string;\n}\n\nexport function NavbarMegaMenuSection({ heading, children, className }: NavbarMegaMenuSectionProps) {\n return (\n <div className={clsx('ds-navbar-mega-menu__section', className)}>\n {heading && <p className=\"ds-navbar-mega-menu__section-heading\">{heading}</p>}\n <div className=\"ds-navbar-mega-menu__section-items\">{children}</div>\n </div>\n );\n}\n\nNavbarMegaMenuSection.displayName = 'NavbarMegaMenuSection';\n\n/* ============================================================================\n NavbarMegaMenuItem — Link with icon, label, description\n ============================================================================ */\n\nexport interface NavbarMegaMenuItemProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Icon element (e.g. lucide-react icon) */\n icon?: React.ReactNode;\n /** Item label */\n label: string;\n /** Optional description */\n description?: string;\n /** Render as custom element (for Next.js Link) */\n as?: React.ElementType;\n}\n\nexport const NavbarMegaMenuItem = forwardRef<HTMLAnchorElement, NavbarMegaMenuItemProps>(\n ({ icon, label, description, className, as: Comp = 'a', ...rest }, ref) => {\n return (\n <div className=\"ds-navbar-mega-menu__item-wrapper\">\n <Comp\n ref={ref}\n className={clsx('ds-navbar-mega-menu__item', className)}\n {...rest}\n >\n {icon && <span className=\"ds-navbar-mega-menu__item-icon\">{icon}</span>}\n <span className=\"ds-navbar-mega-menu__item-text\">\n <span className=\"ds-navbar-mega-menu__item-label\">{label}</span>\n {description && (\n <span className=\"ds-navbar-mega-menu__item-description\">{description}</span>\n )}\n </span>\n </Comp>\n </div>\n );\n },\n);\n\nNavbarMegaMenuItem.displayName = 'NavbarMegaMenuItem';\n","import React, {\n forwardRef,\n useState,\n useRef,\n useEffect,\n useCallback,\n useContext,\n createContext,\n useMemo,\n useId,\n} from 'react';\nimport clsx from 'clsx';\nimport './NavbarV2.css';\n\n/* ============================================================================\n Icons\n ============================================================================ */\n\nconst ChevronDown = () => (\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n/* ============================================================================\n Scroll State Context — lets children (e.g. NavbarV2Tabs) know when\n the outer container has activated its glass surface, so they can\n demote their own glass to avoid glass-on-glass visual noise.\n ============================================================================ */\n\ninterface ScrollContextValue {\n /** Whether the navbar container is in the scrolled (glass) state. */\n scrolled: boolean;\n}\n\nconst ScrollContext = createContext<ScrollContextValue>({ scrolled: false });\n\n/* ============================================================================\n Mutual Exclusion Context — only one mega menu open at a time\n ============================================================================ */\n\ninterface TabsContextValue {\n /** ID of the currently open menu (null = all closed). */\n activeMenuId: string | null;\n /** Request to open a menu. Closes any other open menu. */\n openMenu: (id: string) => void;\n /** Request to close a specific menu. */\n closeMenu: (id: string) => void;\n}\n\nconst TabsContext = createContext<TabsContextValue>({\n activeMenuId: null,\n openMenu: () => {},\n closeMenu: () => {},\n});\n\n/* ============================================================================\n Focus Trap Hook — traps Tab/Shift+Tab inside a container\n ============================================================================ */\n\nfunction useFocusTrap(containerRef: React.RefObject<HTMLElement | null>, active: boolean) {\n useEffect(() => {\n if (!active || !containerRef.current) return;\n\n const container = containerRef.current;\n const FOCUSABLE =\n 'a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Tab') return;\n\n const focusable = Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE));\n if (focusable.length === 0) {\n e.preventDefault();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === first) {\n e.preventDefault();\n last.focus();\n }\n } else {\n if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n }\n };\n\n // Focus first element on trap activation\n const focusable = container.querySelectorAll<HTMLElement>(FOCUSABLE);\n if (focusable.length > 0) {\n focusable[0].focus();\n }\n\n container.addEventListener('keydown', handleKeyDown);\n return () => container.removeEventListener('keydown', handleKeyDown);\n }, [active, containerRef]);\n}\n\n/* ============================================================================\n NavbarV2 — Floating Glass Pill Tab Navigation\n ============================================================================\n A centered floating glass pill with vertical icon+label tabs,\n flanked by brand (left) and actions (right).\n\n On scroll, an outer container activates a subtle glass surface with\n border, wrapping all content (brand + tabs + actions). The inner\n tabs pill demotes its own glass to avoid double-glass visual noise.\n\n Composition:\n <NavbarV2>\n <NavbarV2Brand />\n <NavbarV2Tabs>\n <NavbarV2Tab /> // simple link/button\n <NavbarV2TabMenu /> // tab with mega menu dropdown\n </NavbarV2Tabs>\n <NavbarV2Actions />\n </NavbarV2>\n ============================================================================ */\n\nexport interface NavbarV2Props extends React.HTMLAttributes<HTMLElement> {\n /** Content rendered inside the mobile menu overlay when open. */\n mobileContent?: React.ReactNode;\n /** Accessible labels for mobile toggle. Override for i18n. */\n mobileToggleLabels?: { open: string; close: string };\n /** Controlled mobile menu open state. */\n isMenuOpen?: boolean;\n /** Callback when mobile menu open state changes. */\n onMenuOpenChange?: (isOpen: boolean) => void;\n /** Enable scroll-aware glass container with border. @default true */\n scrollBorder?: boolean;\n /** Scroll distance (px) before glass activates. @default 32 */\n scrollThreshold?: number;\n}\n\n/** Hysteresis lower-bound ratio — glass disappears when scroll drops below threshold × this */\nconst HYSTERESIS_RATIO = 0.25;\n\nexport const NavbarV2 = forwardRef<HTMLElement, NavbarV2Props>(\n (\n {\n className,\n mobileContent,\n mobileToggleLabels,\n isMenuOpen,\n onMenuOpenChange,\n scrollBorder = true,\n scrollThreshold = 32,\n children,\n ...props\n },\n ref,\n ) => {\n const [internalMenuOpen, setInternalMenuOpen] = useState(false);\n const isMobileMenuOpen = isMenuOpen !== undefined ? isMenuOpen : internalMenuOpen;\n\n const navRef = useRef<HTMLElement>(null);\n const overlayRef = useRef<HTMLDivElement>(null);\n const [navHeight, setNavHeight] = useState(64);\n\n const openLabel = mobileToggleLabels?.open ?? 'Open menu';\n const closeLabel = mobileToggleLabels?.close ?? 'Close menu';\n\n /* ── Scroll detection with hysteresis ──────────────────────────────\n Glass appears at scrollThreshold (32px default).\n Glass disappears only when scrolling back above threshold × 0.25 (8px).\n This prevents flicker when hovering near the threshold.\n SSR flash guard: initial state is set synchronously from scrollY. */\n\n const [scrolled, setScrolled] = useState(() => {\n if (typeof window !== 'undefined') {\n return window.scrollY > scrollThreshold;\n }\n return false;\n });\n\n useEffect(() => {\n if (!scrollBorder) return;\n\n const lowerBound = scrollThreshold * HYSTERESIS_RATIO;\n\n const handleScroll = () => {\n const y = window.scrollY;\n setScrolled((prev) => {\n if (!prev && y > scrollThreshold) return true;\n if (prev && y < lowerBound) return false;\n return prev;\n });\n };\n\n // SSR flash guard — set correct state on mount\n handleScroll();\n\n window.addEventListener('scroll', handleScroll, { passive: true });\n return () => window.removeEventListener('scroll', handleScroll);\n }, [scrollBorder, scrollThreshold]);\n\n const isScrolled = scrollBorder && scrolled;\n\n const scrollCtx = useMemo<ScrollContextValue>(\n () => ({ scrolled: isScrolled }),\n [isScrolled],\n );\n\n const handleToggle = () => {\n const newState = !isMobileMenuOpen;\n setInternalMenuOpen(newState);\n onMenuOpenChange?.(newState);\n };\n\n /* Measure navbar height for mobile overlay positioning + CSS overlap var */\n useEffect(() => {\n const el = navRef.current;\n if (!el) return;\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const h = entry.contentRect.height;\n setNavHeight(h);\n /* Expose height as CSS custom property for layout overlap tricks */\n el.style.setProperty('--navbar-overlap', `${h}px`);\n }\n });\n observer.observe(el);\n return () => observer.disconnect();\n }, []);\n\n /* Lock body scroll when mobile menu is open */\n useEffect(() => {\n if (isMobileMenuOpen) {\n document.body.style.overflow = 'hidden';\n return () => {\n document.body.style.overflow = '';\n };\n }\n }, [isMobileMenuOpen]);\n\n /* Close on Escape */\n useEffect(() => {\n if (!isMobileMenuOpen) return;\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setInternalMenuOpen(false);\n onMenuOpenChange?.(false);\n }\n };\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isMobileMenuOpen, onMenuOpenChange]);\n\n /* Focus trap for mobile overlay */\n useFocusTrap(overlayRef, isMobileMenuOpen);\n\n /* Merge refs: forwardRef + internal navRef */\n const mergedRef = useMergedRef(ref, navRef);\n\n return (\n <ScrollContext.Provider value={scrollCtx}>\n <nav\n ref={mergedRef}\n className={clsx(\n 'ds-navbar-v2',\n isScrolled && 'ds-navbar-v2--scrolled',\n className,\n )}\n {...props}\n >\n {/* Inner container — receives glass treatment on scroll */}\n <div className=\"ds-navbar-v2__container\">\n {children}\n\n {/* Mobile Toggle */}\n <button\n className=\"ds-navbar-v2__toggle\"\n onClick={handleToggle}\n aria-label={isMobileMenuOpen ? closeLabel : openLabel}\n aria-expanded={isMobileMenuOpen}\n >\n {isMobileMenuOpen ? (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n ) : (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n )}\n </button>\n </div>\n\n {/* Mobile Menu Overlay — always mounted, CSS transitions handle show/hide */}\n <div\n ref={overlayRef}\n className=\"ds-navbar-v2__mobile-overlay\"\n style={{ top: navHeight }}\n data-state={isMobileMenuOpen ? 'open' : 'closed'}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={closeLabel}\n >\n <div className=\"ds-navbar-v2__mobile-content\">\n {mobileContent}\n </div>\n </div>\n </nav>\n </ScrollContext.Provider>\n );\n },\n);\n\nNavbarV2.displayName = 'NavbarV2';\n\n/* ============================================================================\n NavbarV2Brand — Logo area (left of pill)\n ============================================================================ */\n\nexport interface NavbarV2BrandProps extends React.HTMLAttributes<HTMLElement> {\n /** Render as custom element (e.g. Next.js Link). @default 'a' */\n as?: React.ElementType;\n href?: string;\n}\n\nexport const NavbarV2Brand = forwardRef<HTMLElement, NavbarV2BrandProps>(\n ({ as: Component = 'a', className, children, ...props }, ref) => (\n <Component ref={ref} className={clsx('ds-navbar-v2__brand', className)} {...props}>\n {children}\n </Component>\n ),\n);\n\nNavbarV2Brand.displayName = 'NavbarV2Brand';\n\n/* ============================================================================\n NavbarV2Tabs — The floating glass pill containing tab items\n Provides mutual-exclusion context so only one mega menu is open at a time.\n Reads ScrollContext to demote glass when outer container is active.\n ============================================================================ */\n\nexport const NavbarV2Tabs = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const [activeMenuId, setActiveMenuId] = useState<string | null>(null);\n const { scrolled } = useContext(ScrollContext);\n\n const ctxValue = useMemo<TabsContextValue>(\n () => ({\n activeMenuId,\n openMenu: (id: string) => setActiveMenuId(id),\n closeMenu: (id: string) =>\n setActiveMenuId((prev) => (prev === id ? null : prev)),\n }),\n [activeMenuId],\n );\n\n return (\n <TabsContext.Provider value={ctxValue}>\n {/* No role — parent <nav> already declares navigation landmark */}\n <div\n ref={ref}\n className={clsx(\n 'ds-navbar-v2__tabs',\n scrolled && 'ds-navbar-v2__tabs--demoted',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TabsContext.Provider>\n );\n },\n);\n\nNavbarV2Tabs.displayName = 'NavbarV2Tabs';\n\n/* ============================================================================\n NavbarV2Tab — Vertical icon + label tab (simple link or button)\n ============================================================================ */\n\nexport interface NavbarV2TabProps extends React.HTMLAttributes<HTMLElement> {\n /** Render as custom element (e.g. Next.js Link). @default 'button' */\n as?: React.ElementType;\n /** Whether this tab is the current page. */\n active?: boolean;\n /** Icon element (rendered above label). */\n icon?: React.ReactNode;\n /** Tab label text (rendered below icon). */\n label?: string;\n href?: string;\n}\n\nexport const NavbarV2Tab = forwardRef<HTMLElement, NavbarV2TabProps>(\n ({ as: Component = 'button', active, icon, label, className, children, ...props }, ref) => (\n <Component\n ref={ref}\n className={clsx('ds-navbar-v2__tab', active && 'ds-navbar-v2__tab--active', className)}\n aria-current={active ? 'page' : undefined}\n {...(Component === 'button' ? { type: 'button' } : {})}\n {...props}\n >\n {icon && <span className=\"ds-navbar-v2__tab-icon\">{icon}</span>}\n {label && <span className=\"ds-navbar-v2__tab-label\">{label}</span>}\n {children}\n </Component>\n ),\n);\n\nNavbarV2Tab.displayName = 'NavbarV2Tab';\n\n/* ============================================================================\n NavbarV2TabMenu — Vertical tab that triggers a mega menu dropdown\n ============================================================================ */\n\nexport interface NavbarV2TabMenuProps {\n /** Icon for the tab trigger (rendered above label). */\n icon?: React.ReactNode;\n /** Label for the tab trigger (rendered below icon). */\n label: string;\n /** Whether this tab represents the current section. */\n active?: boolean;\n /** Mega menu panel content. */\n children: React.ReactNode;\n /** Optional class name. */\n className?: string;\n /** Controlled open state. */\n isOpen?: boolean;\n /** Controlled open change handler. */\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport const NavbarV2TabMenu = forwardRef<HTMLDivElement, NavbarV2TabMenuProps>(\n (\n {\n icon,\n label,\n active,\n children,\n className,\n isOpen: controlledOpen,\n onOpenChange,\n },\n ref,\n ) => {\n /* Stable ID for mutual exclusion + aria-controls */\n const instanceId = useId();\n const panelId = `navbar-v2-panel-${instanceId}`;\n\n /* Mutual exclusion via context */\n const { activeMenuId, openMenu, closeMenu } = useContext(TabsContext);\n\n /* Support both controlled (isOpen prop) and context-driven state */\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : activeMenuId === instanceId;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<number | null>(null);\n\n const handleOpen = useCallback(() => {\n if (!isOpen) {\n if (!isControlled) openMenu(instanceId);\n onOpenChange?.(true);\n }\n }, [isOpen, isControlled, openMenu, instanceId, onOpenChange]);\n\n const handleClose = useCallback(() => {\n if (isOpen) {\n if (!isControlled) closeMenu(instanceId);\n onOpenChange?.(false);\n }\n }, [isOpen, isControlled, closeMenu, instanceId, onOpenChange]);\n\n const handleToggle = useCallback(() => {\n if (isOpen) handleClose();\n else handleOpen();\n }, [isOpen, handleClose, handleOpen]);\n\n const handleMouseEnter = useCallback(() => {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n handleOpen();\n }, [handleOpen]);\n\n const handleMouseLeave = useCallback(() => {\n if (timeoutRef.current) window.clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(handleClose, 150);\n }, [handleClose]);\n\n /* Cleanup timeout on unmount */\n useEffect(() => {\n return () => {\n if (timeoutRef.current) window.clearTimeout(timeoutRef.current);\n };\n }, []);\n\n /* Click outside → close */\n useEffect(() => {\n if (!isOpen) return;\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n handleClose();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen, handleClose]);\n\n /* Escape → close */\n useEffect(() => {\n if (!isOpen) return;\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleClose();\n triggerRef.current?.focus();\n }\n };\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isOpen, handleClose]);\n\n /* Viewport edge clamping — nudge panel so it doesn't overflow */\n useEffect(() => {\n if (!isOpen || !panelRef.current) return;\n\n const clampToViewport = () => {\n const panel = panelRef.current;\n if (!panel) return;\n\n // Reset any previous nudge\n panel.style.setProperty('--panel-nudge', '0px');\n\n const rect = panel.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const EDGE_PADDING = 16;\n\n if (rect.right > viewportWidth - EDGE_PADDING) {\n const overflow = rect.right - (viewportWidth - EDGE_PADDING);\n panel.style.setProperty('--panel-nudge', `${-overflow}px`);\n } else if (rect.left < EDGE_PADDING) {\n const overflow = EDGE_PADDING - rect.left;\n panel.style.setProperty('--panel-nudge', `${overflow}px`);\n }\n };\n\n // Clamp after render + animation start\n requestAnimationFrame(clampToViewport);\n window.addEventListener('resize', clampToViewport);\n return () => window.removeEventListener('resize', clampToViewport);\n }, [isOpen]);\n\n /* Merge refs for panel: containerRef (click-outside) + panelRef (clamping) */\n const panelRefCallback = useCallback((node: HTMLDivElement | null) => {\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n (panelRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }, []);\n\n return (\n <div\n ref={ref}\n className={clsx('ds-navbar-v2__tab-menu', className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <button\n ref={triggerRef}\n className={clsx(\n 'ds-navbar-v2__tab',\n (active || isOpen) && 'ds-navbar-v2__tab--active',\n )}\n onClick={handleToggle}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n aria-controls={isOpen ? panelId : undefined}\n type=\"button\"\n >\n {icon && <span className=\"ds-navbar-v2__tab-icon\">{icon}</span>}\n <span className=\"ds-navbar-v2__tab-label-row\">\n <span className=\"ds-navbar-v2__tab-label\">{label}</span>\n <span\n className=\"ds-navbar-v2__tab-chevron\"\n data-state={isOpen ? 'open' : 'closed'}\n >\n <ChevronDown />\n </span>\n </span>\n </button>\n\n {/* Mega panel — mount only when open to keep the global DOM budget low. */}\n {isOpen ? (\n <div\n ref={panelRefCallback}\n id={panelId}\n className=\"ds-navbar-v2__mega-panel\"\n data-state=\"open\"\n role=\"region\"\n aria-label={`${label} menu`}\n >\n {children}\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nNavbarV2TabMenu.displayName = 'NavbarV2TabMenu';\n\n/* ============================================================================\n NavbarV2Actions — Right-side actions (right of pill)\n ============================================================================ */\n\nexport const NavbarV2Actions = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={clsx('ds-navbar-v2__actions', className)} {...props}>\n {children}\n </div>\n ),\n);\n\nNavbarV2Actions.displayName = 'NavbarV2Actions';\n\n/* ============================================================================\n Utility — merge multiple refs (forwardRef + internal ref)\n ============================================================================ */\n\nfunction useMergedRef<T>(\n ...refs: (React.Ref<T> | React.MutableRefObject<T | null> | null | undefined)[]\n): React.RefCallback<T> {\n return useCallback(\n (value: T | null) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref && typeof ref === 'object') {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n refs,\n );\n}\n","import React, { forwardRef, HTMLAttributes, useState } from 'react';\nimport clsx from 'clsx';\nimport { Container } from '../LayoutPrimitives';\nimport './SiteFooter.css';\n\n/* ============================================================================\n Types\n ============================================================================ */\n\nexport interface FooterLink {\n label: string;\n href: string;\n /** Visual \"NEW\" indicator badge. */\n isNew?: boolean;\n}\n\nexport interface FooterSection {\n title: string;\n links: FooterLink[];\n}\n\nexport interface FooterCTA {\n /** Primary headline (e.g., \"Install Your Sales Operating System.\") */\n headline: string;\n /** Supporting subtext below the headline. */\n subtext?: string;\n /** Primary CTA slot (e.g., a <Button> component). */\n primaryCta?: React.ReactNode;\n /** Secondary CTA slot (e.g., a ghost <Button>). */\n secondaryCta?: React.ReactNode;\n /** Micro trust line below the CTA actions. */\n trustLine?: string;\n}\n\nexport interface FooterTrustBadge {\n /** Badge label (e.g., \"GDPR-ready\"). */\n label: string;\n}\n\nexport interface SiteFooterProps extends HTMLAttributes<HTMLElement> {\n /* ── Zone 1: Strategic CTA ─────────────────────────────────────────── */\n\n /** Strategic CTA rendered at the top of the footer. */\n cta?: FooterCTA;\n\n /* ── Zone 2: Structured Navigation Grid ────────────────────────────── */\n\n /** Navigation sections rendered as a 5-column grid on desktop. */\n sections?: FooterSection[];\n /** Quick orientation line above the navigation grid. */\n orientationLine?: React.ReactNode;\n /**\n * Custom element to render for each link (e.g., Next.js locale-aware Link).\n * Must accept `href`, `className`, and `children` props.\n * @default 'a'\n */\n linkAs?: React.ElementType;\n\n /* ── Zone 3: Authority Layer ───────────────────────────────────────── */\n\n /** Brand logo or name slot. */\n brand?: React.ReactNode;\n /** Tagline below the brand. */\n tagline?: React.ReactNode;\n /** Social icons slot. */\n socials?: React.ReactNode;\n /** Trust amplifier badges (e.g., \"Built for B2B Teams\", \"GDPR-ready\"). */\n trustBadges?: FooterTrustBadge[];\n\n /* ── Zone 4: System Controls ───────────────────────────────────────── */\n\n /** System controls slot (language switcher, theme toggle, etc.). */\n controls?: React.ReactNode;\n\n /* ── Zone 5: Legal + Ownership ─────────────────────────────────────── */\n\n /** Legal links rendered in the bottom bar. */\n legalLinks?: FooterLink[];\n /** Copyright text. Falls back to a default with the current year. */\n copyright?: React.ReactNode;\n /** Company registration or legal entity info line. */\n companyInfo?: string;\n /** Extra content rendered below the legal bar (e.g., AI summary links). */\n bottomExtra?: React.ReactNode;\n\n /* ── Deprecated ────────────────────────────────────────────────────── */\n\n /** @deprecated Use `controls` instead. Slot rendered in the bottom bar. */\n bottomActions?: React.ReactNode;\n}\n\n/* ============================================================================\n Internal: Mobile Accordion Item\n ============================================================================ */\n\ninterface FooterAccordionItemProps {\n section: FooterSection;\n LinkComponent: React.ElementType;\n}\n\nfunction FooterAccordionItem({ section, LinkComponent }: FooterAccordionItemProps) {\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n <div\n className={clsx(\n 'ds-footer__accordion-item',\n isOpen && 'ds-footer__accordion-item--open',\n )}\n >\n <button\n type=\"button\"\n className=\"ds-footer__accordion-trigger\"\n aria-expanded={isOpen}\n onClick={() => setIsOpen((prev) => !prev)}\n >\n <span>{section.title}</span>\n <svg\n className=\"ds-footer__accordion-chevron\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n <div className=\"ds-footer__accordion-panel\" hidden={!isOpen}>\n <ul className=\"ds-footer__links\">\n {section.links.map((link, idx) => (\n <li key={idx}>\n <LinkComponent href={link.href} className=\"ds-footer__link\">\n {link.label}\n {link.isNew && <span className=\"ds-footer__badge\">NEW</span>}\n </LinkComponent>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n}\n\n/* ============================================================================\n Component\n ============================================================================ */\n\nexport const SiteFooter = forwardRef<HTMLElement, SiteFooterProps>(\n (\n {\n cta,\n sections = [],\n orientationLine,\n linkAs,\n brand,\n tagline,\n socials,\n trustBadges,\n controls,\n legalLinks = [],\n copyright,\n companyInfo,\n bottomExtra,\n bottomActions,\n className,\n ...props\n },\n ref,\n ) => {\n const currentYear = new Date().getFullYear();\n const defaultCopyright = copyright || `© ${currentYear}. All rights reserved.`;\n const resolvedControls = controls || bottomActions;\n const LinkComponent = linkAs || 'a';\n\n return (\n <footer ref={ref} className={clsx('ds-footer', className)} {...props}>\n {/* ── Zone 1: Strategic CTA ──────────────────────────────────── */}\n {cta && (\n <div className=\"ds-footer__cta\" data-footer-zone=\"cta\">\n <Container>\n <div className=\"ds-footer__cta-content\">\n <h2 className=\"ds-footer__cta-headline\">{cta.headline}</h2>\n {cta.subtext && (\n <p className=\"ds-footer__cta-subtext\">{cta.subtext}</p>\n )}\n {(cta.primaryCta || cta.secondaryCta) && (\n <div className=\"ds-footer__cta-actions\">\n {cta.primaryCta}\n {cta.secondaryCta}\n </div>\n )}\n {cta.trustLine && (\n <p className=\"ds-footer__cta-trust\">{cta.trustLine}</p>\n )}\n </div>\n </Container>\n </div>\n )}\n\n {/* ── Zone 2: Navigation Grid ────────────────────────────────── */}\n {sections.length > 0 && (\n <div className=\"ds-footer__nav\" data-footer-zone=\"navigation\">\n <Container>\n {orientationLine && (\n <div className=\"ds-footer__orientation\">\n {orientationLine}\n </div>\n )}\n\n {/* Desktop: Grid layout */}\n <nav\n className=\"ds-footer__grid\"\n aria-label=\"Footer navigation\"\n >\n {sections.map((section, idx) => (\n <div\n key={idx}\n className=\"ds-footer__column\"\n data-footer-section={section.title\n .toLowerCase()\n .replace(/\\s+/g, '-')}\n >\n <p className=\"ds-footer__heading\">{section.title}</p>\n <ul className=\"ds-footer__links\">\n {section.links.map((link, linkIdx) => (\n <li key={linkIdx}>\n <LinkComponent\n href={link.href}\n className=\"ds-footer__link\"\n >\n {link.label}\n {link.isNew && (\n <span className=\"ds-footer__badge\">NEW</span>\n )}\n </LinkComponent>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </nav>\n\n {/* Mobile: Accordion layout */}\n <nav\n className=\"ds-footer__mobile-nav\"\n aria-label=\"Footer navigation\"\n >\n {sections.map((section, idx) => (\n <FooterAccordionItem\n key={idx}\n section={section}\n LinkComponent={LinkComponent}\n />\n ))}\n </nav>\n </Container>\n </div>\n )}\n\n {/* ── Zone 3: Authority Layer ────────────────────────────────── */}\n {(brand || socials || trustBadges) && (\n <div className=\"ds-footer__authority\" data-footer-zone=\"authority\">\n <Container>\n <div className=\"ds-footer__authority-content\">\n <div className=\"ds-footer__brand\">\n {brand && <div className=\"ds-footer__logo\">{brand}</div>}\n {tagline && (\n <p className=\"ds-footer__tagline\">{tagline}</p>\n )}\n {socials && (\n <div className=\"ds-footer__socials\">{socials}</div>\n )}\n </div>\n {trustBadges && trustBadges.length > 0 && (\n <div className=\"ds-footer__trust-badges\">\n {trustBadges.map((badge, idx) => (\n <span key={idx} className=\"ds-footer__trust-badge\">\n {badge.label}\n </span>\n ))}\n </div>\n )}\n </div>\n </Container>\n </div>\n )}\n\n {/* ── Zone 4 + 5: Controls + Legal ───────────────────────────── */}\n <div className=\"ds-footer__bottom\" data-footer-zone=\"legal\">\n <Container>\n <div className=\"ds-footer__bottom-content\">\n <div className=\"ds-footer__copyright\">\n {copyright || defaultCopyright}\n </div>\n {resolvedControls && (\n <div className=\"ds-footer__controls\">\n {resolvedControls}\n </div>\n )}\n {legalLinks.length > 0 && (\n <div className=\"ds-footer__legal\">\n {legalLinks.map((link, idx) => (\n <LinkComponent\n key={idx}\n href={link.href}\n className=\"ds-footer__legal-link\"\n >\n {link.label}\n </LinkComponent>\n ))}\n </div>\n )}\n </div>\n {bottomExtra && (\n <div className=\"ds-footer__bottom-extra\">{bottomExtra}</div>\n )}\n {companyInfo && (\n <p className=\"ds-footer__company-info\">{companyInfo}</p>\n )}\n </Container>\n </div>\n </footer>\n );\n },\n);\nSiteFooter.displayName = 'SiteFooter';\n","import React, {\n forwardRef,\n useState,\n useRef,\n useEffect,\n useCallback,\n useId,\n} from 'react';\nimport clsx from 'clsx';\nimport './LocaleDropdown.css';\n\n/* ============================================================================\n Icons\n ============================================================================ */\n\nconst GlobeIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M2 12h20\" />\n <path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\" />\n </svg>\n);\n\nconst ChevronDownIcon = () => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6L8 10L12 6\" />\n </svg>\n);\n\nconst CheckIcon = () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n);\n\n/* ============================================================================\n Types\n ============================================================================ */\n\nexport interface LocaleOption {\n /** ISO code, e.g. 'en', 'fr', 'es'. */\n code: string;\n /** Full display name, e.g. 'English', 'Français'. */\n label: string;\n /** Emoji flag or SVG component. Optional. */\n flag?: React.ReactNode;\n /** Short display code, e.g. 'EN', 'FR'. Used in the trigger. */\n shortLabel?: string;\n}\n\nexport interface LocaleDropdownProps {\n /** Available locales. */\n locales: LocaleOption[];\n /** Currently active locale code. */\n activeLocale: string;\n /** Called when user selects a locale. */\n onLocaleChange?: (code: string) => void;\n /**\n * Custom element for dropdown options (e.g. Next.js Link).\n * Receives `href` from `getHref`. @default 'button'\n */\n optionAs?: React.ElementType;\n /** Generate href for each locale option. Used with `optionAs`. */\n getHref?: (code: string) => string;\n /** Additional class name. */\n className?: string;\n /** Direction the dropdown should open. Defaults to 'down'. */\n direction?: 'up' | 'down';\n /** Alignment of the dropdown panel relative to the trigger. Defaults to 'right'. */\n align?: 'left' | 'right' | 'center';\n}\n\n/* ============================================================================\n LocaleDropdown — Globe + flag trigger with dropdown panel\n ============================================================================\n A compact locale selector showing the current locale with a globe icon\n and emoji flag. Clicking opens a dropdown with all available locales.\n\n Features:\n - Click outside / Escape to close\n - Keyboard navigation (ArrowUp/Down, Enter, Escape)\n - Active locale highlighted with checkmark\n - Animated chevron rotation via CSS\n - Supports polymorphic option elements (buttons or links)\n - Full ARIA: aria-haspopup, aria-expanded, aria-activedescendant\n - prefers-reduced-motion respected via CSS\n - Uses DS tokens only (no hardcoded colors)\n ============================================================================ */\n\nexport const LocaleDropdown = forwardRef<HTMLDivElement, LocaleDropdownProps>(\n (\n {\n locales,\n activeLocale,\n onLocaleChange,\n optionAs: OptionComponent = 'button',\n getHref,\n className,\n direction = 'down',\n align = 'right',\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [focusIndex, setFocusIndex] = useState(-1);\n const containerRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const instanceId = useId();\n const listboxId = `locale-dropdown-${instanceId}`;\n\n const currentLocale = locales.find((l) => l.code === activeLocale) ?? locales[0];\n\n const handleToggle = useCallback(() => {\n setIsOpen((prev) => {\n if (!prev) setFocusIndex(-1);\n return !prev;\n });\n }, []);\n\n const handleClose = useCallback(() => {\n setIsOpen(false);\n setFocusIndex(-1);\n triggerRef.current?.focus();\n }, []);\n\n const handleSelect = useCallback(\n (code: string) => {\n onLocaleChange?.(code);\n handleClose();\n },\n [onLocaleChange, handleClose],\n );\n\n /* Click outside → close */\n useEffect(() => {\n if (!isOpen) return;\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n handleClose();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen, handleClose]);\n\n /* Keyboard navigation */\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (!isOpen) {\n if (e.key === 'ArrowDown' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n setFocusIndex(0);\n }\n return;\n }\n\n switch (e.key) {\n case 'Escape':\n e.preventDefault();\n handleClose();\n break;\n case 'ArrowDown':\n e.preventDefault();\n setFocusIndex((prev) => (prev + 1) % locales.length);\n break;\n case 'ArrowUp':\n e.preventDefault();\n setFocusIndex((prev) => (prev - 1 + locales.length) % locales.length);\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (focusIndex >= 0 && focusIndex < locales.length) {\n handleSelect(locales[focusIndex].code);\n }\n break;\n case 'Home':\n e.preventDefault();\n setFocusIndex(0);\n break;\n case 'End':\n e.preventDefault();\n setFocusIndex(locales.length - 1);\n break;\n case 'Tab':\n handleClose();\n break;\n }\n },\n [isOpen, focusIndex, locales, handleClose, handleSelect],\n );\n\n /* Scroll focused item into view */\n useEffect(() => {\n if (!isOpen || focusIndex < 0 || !listRef.current) return;\n const items = listRef.current.querySelectorAll('[role=\"option\"]');\n items[focusIndex]?.scrollIntoView({ block: 'nearest' });\n }, [isOpen, focusIndex]);\n\n const activeDescendantId =\n isOpen && focusIndex >= 0 ? `${listboxId}-option-${focusIndex}` : undefined;\n\n return (\n <div\n ref={ref}\n className={clsx(\n 'ds-locale-dropdown',\n direction === 'up' && 'ds-locale-dropdown--up',\n align === 'left' && 'ds-locale-dropdown--align-left',\n align === 'center' && 'ds-locale-dropdown--align-center',\n className\n )}\n >\n <div ref={containerRef} className=\"ds-locale-dropdown__wrapper\">\n {/* Trigger */}\n <button\n ref={triggerRef}\n type=\"button\"\n className=\"ds-locale-dropdown__trigger\"\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? listboxId : undefined}\n aria-activedescendant={activeDescendantId}\n aria-label={`Language: ${currentLocale.label}. Change language.`}\n >\n <span className=\"ds-locale-dropdown__trigger-icon\">\n <GlobeIcon />\n </span>\n {currentLocale.flag && (\n <span className=\"ds-locale-dropdown__trigger-flag\" aria-hidden=\"true\">\n {currentLocale.flag}\n </span>\n )}\n <span\n className=\"ds-locale-dropdown__trigger-chevron\"\n data-state={isOpen ? 'open' : 'closed'}\n >\n <ChevronDownIcon />\n </span>\n </button>\n\n {/* Dropdown Panel — always mounted, CSS transitions handle show/hide */}\n <div\n ref={listRef}\n id={listboxId}\n className=\"ds-locale-dropdown__panel\"\n role=\"listbox\"\n aria-label=\"Select language\"\n data-state={isOpen ? 'open' : 'closed'}\n onKeyDown={handleKeyDown}\n >\n {locales.map((locale, index) => {\n const isActive = locale.code === activeLocale;\n const isFocused = index === focusIndex;\n const optionId = `${listboxId}-option-${index}`;\n\n const optionProps = {\n id: optionId,\n role: 'option' as const,\n 'aria-selected': isActive,\n className: clsx(\n 'ds-locale-dropdown__option',\n isActive && 'ds-locale-dropdown__option--active',\n isFocused && 'ds-locale-dropdown__option--focused',\n ),\n onClick: () => handleSelect(locale.code),\n ...(OptionComponent !== 'button' && getHref\n ? { href: getHref(locale.code) }\n : { type: 'button' as const }),\n };\n\n return (\n <OptionComponent key={locale.code} {...optionProps}>\n <span className=\"ds-locale-dropdown__option-content\">\n {locale.flag && (\n <span className=\"ds-locale-dropdown__option-flag\" aria-hidden=\"true\">\n {locale.flag}\n </span>\n )}\n <span className=\"ds-locale-dropdown__option-label\">\n {locale.label}\n </span>\n </span>\n {isActive && (\n <span className=\"ds-locale-dropdown__option-check\">\n <CheckIcon />\n </span>\n )}\n </OptionComponent>\n );\n })}\n </div>\n </div>\n </div>\n );\n },\n);\n\nLocaleDropdown.displayName = 'LocaleDropdown';\n","import React from 'react';\nimport { OutboundLink } from './OutboundLink';\n\n/**\n * A wrapper specifically designed to be passed into MDX component mappings.\n * It provides defaults suitable for markdown content.\n * \n * Usage:\n * <MDXRemote components={{ a: MDXOutboundLink }} />\n */\nexport const MDXOutboundLink = ({ \n href, \n children, \n ...props \n}: React.AnchorHTMLAttributes<HTMLAnchorElement> & { href?: string }) => {\n if (!href) {\n // eslint-disable-next-line no-restricted-syntax\n return <a {...props}>{children}</a>;\n }\n\n return (\n <OutboundLink \n href={href} \n context=\"cms_markdown\" \n preserveExistingUTM={true}\n openInNewTab={true}\n {...props}\n >\n {children}\n </OutboundLink>\n );\n};\n\nexport default MDXOutboundLink;"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkL352JRV6_cjs = require('./chunk-L352JRV6.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkEM7JHRYW_cjs = require('./chunk-EM7JHRYW.cjs');
|
|
5
5
|
var chunkLJADZITX_cjs = require('./chunk-LJADZITX.cjs');
|
|
6
6
|
var React3 = require('react');
|
|
7
7
|
var clsx4 = require('clsx');
|
|
@@ -400,7 +400,7 @@ var SocialProofGrid = React3.forwardRef(
|
|
|
400
400
|
});
|
|
401
401
|
}) : children;
|
|
402
402
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
403
|
-
|
|
403
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
404
404
|
{
|
|
405
405
|
ref,
|
|
406
406
|
padding: "md",
|
|
@@ -448,7 +448,7 @@ var LogoItemRender = ({ item, className }) => {
|
|
|
448
448
|
var SocialProofLogos = React3.forwardRef(
|
|
449
449
|
({ title, logos, variant = "grid", speed = 40, className, ...props }, ref) => {
|
|
450
450
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
451
|
-
|
|
451
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
452
452
|
{
|
|
453
453
|
ref,
|
|
454
454
|
padding: "sm",
|
|
@@ -501,7 +501,7 @@ var SocialProofFeatured = React3.forwardRef(
|
|
|
501
501
|
const showMedia = media || mediaSrc;
|
|
502
502
|
const effectiveOrientation = featuredVariant === "spotlight" ? "vertical" : orientation;
|
|
503
503
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
504
|
-
|
|
504
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
505
505
|
{
|
|
506
506
|
ref,
|
|
507
507
|
padding: "md",
|
|
@@ -561,7 +561,7 @@ SocialProofFeatured.displayName = "SocialProofFeatured";
|
|
|
561
561
|
var SocialProofCarousel = React3.forwardRef(
|
|
562
562
|
({ children, className, ...props }, ref) => {
|
|
563
563
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
564
|
-
|
|
564
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
565
565
|
{
|
|
566
566
|
ref,
|
|
567
567
|
padding: "none",
|
|
@@ -596,7 +596,7 @@ function getShortsEmbedUrl(url) {
|
|
|
596
596
|
}
|
|
597
597
|
function VerticalVideoGrid({ urls, className }) {
|
|
598
598
|
if (!urls || urls.length === 0) return null;
|
|
599
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
599
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionShell, { className: clsx4__default.default("ds-vertical-video-grid my-16", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-4 md:gap-6 max-w-6xl mx-auto", children: urls.map((url, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
600
600
|
"div",
|
|
601
601
|
{
|
|
602
602
|
className: "relative w-full overflow-hidden rounded-[20px] shadow-lg border border-white/10 bg-black",
|
|
@@ -714,4 +714,4 @@ exports.StarRating = StarRating;
|
|
|
714
714
|
exports.VerticalVideoGrid = VerticalVideoGrid;
|
|
715
715
|
exports.VideoLightbox = VideoLightbox;
|
|
716
716
|
//# sourceMappingURL=out.js.map
|
|
717
|
-
//# sourceMappingURL=chunk-
|
|
717
|
+
//# sourceMappingURL=chunk-KK5UO2P4.cjs.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var chunkECXBTUH6_cjs = require('./chunk-ECXBTUH6.cjs');
|
|
4
4
|
var chunkVC5LMUVQ_cjs = require('./chunk-VC5LMUVQ.cjs');
|
|
5
5
|
var chunkVM7WFMKI_cjs = require('./chunk-VM7WFMKI.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkEM7JHRYW_cjs = require('./chunk-EM7JHRYW.cjs');
|
|
7
7
|
var chunkLJADZITX_cjs = require('./chunk-LJADZITX.cjs');
|
|
8
8
|
var React9 = require('react');
|
|
9
9
|
var clsx9 = require('clsx');
|
|
@@ -290,14 +290,14 @@ var RelatedContent = React9.forwardRef(
|
|
|
290
290
|
const visibleItems = maxVisible ? items.slice(0, maxVisible) : items;
|
|
291
291
|
if (visibleItems.length === 0) return null;
|
|
292
292
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
293
|
-
|
|
293
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
294
294
|
{
|
|
295
295
|
ref,
|
|
296
296
|
className: clsx9__default.default("ds-related-content", className),
|
|
297
297
|
background: "muted",
|
|
298
298
|
...props,
|
|
299
299
|
children: [
|
|
300
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
300
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title }),
|
|
301
301
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-related-content__grid", children: visibleItems.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx(ArticleCard, { ...item }, i)) })
|
|
302
302
|
]
|
|
303
303
|
}
|
|
@@ -499,4 +499,4 @@ exports.TableOfContents = TableOfContents;
|
|
|
499
499
|
exports.VersionedSeriesNavigator = VersionedSeriesNavigator;
|
|
500
500
|
exports.VersionedUpgradeAlert = VersionedUpgradeAlert;
|
|
501
501
|
//# sourceMappingURL=out.js.map
|
|
502
|
-
//# sourceMappingURL=chunk-
|
|
502
|
+
//# sourceMappingURL=chunk-LGNMFBLF.cjs.map
|
|
@@ -7,7 +7,7 @@ var chunkDP74LUXG_cjs = require('./chunk-DP74LUXG.cjs');
|
|
|
7
7
|
var chunkQ75DBVDY_cjs = require('./chunk-Q75DBVDY.cjs');
|
|
8
8
|
var chunkVC5LMUVQ_cjs = require('./chunk-VC5LMUVQ.cjs');
|
|
9
9
|
var chunkVM7WFMKI_cjs = require('./chunk-VM7WFMKI.cjs');
|
|
10
|
-
var
|
|
10
|
+
var chunkEM7JHRYW_cjs = require('./chunk-EM7JHRYW.cjs');
|
|
11
11
|
var chunkLJADZITX_cjs = require('./chunk-LJADZITX.cjs');
|
|
12
12
|
var React34 = require('react');
|
|
13
13
|
var clsx27 = require('clsx');
|
|
@@ -853,13 +853,13 @@ var BeforeAfterBlock = React34.forwardRef(
|
|
|
853
853
|
i
|
|
854
854
|
));
|
|
855
855
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
856
|
-
|
|
856
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
857
857
|
{
|
|
858
858
|
ref,
|
|
859
859
|
className: clsx27__default.default("ds-before-after", className),
|
|
860
860
|
...props,
|
|
861
861
|
children: [
|
|
862
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
862
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title }),
|
|
863
863
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx27__default.default("ds-before-after__layout", `ds-before-after__layout--${variant}`), children: [
|
|
864
864
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-before-after__column ds-before-after__column--before", children: [
|
|
865
865
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-before-after__label", children: before.label }),
|
|
@@ -893,13 +893,13 @@ var CompetitorDiff = React34.forwardRef(
|
|
|
893
893
|
...props
|
|
894
894
|
}, ref) => {
|
|
895
895
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
896
|
-
|
|
896
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
897
897
|
{
|
|
898
898
|
ref,
|
|
899
899
|
className: clsx27__default.default("ds-competitor-diff", className),
|
|
900
900
|
...props,
|
|
901
901
|
children: [
|
|
902
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
902
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title, subtitle }),
|
|
903
903
|
variant === "table" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-competitor-diff__table", role: "table", "aria-label": "Feature comparison", children: [
|
|
904
904
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-competitor-diff__thead", role: "row", children: [
|
|
905
905
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-competitor-diff__th", role: "columnheader" }),
|
|
@@ -971,13 +971,13 @@ var StakeholderTabs = React34.forwardRef(
|
|
|
971
971
|
...props
|
|
972
972
|
}, ref) => {
|
|
973
973
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
974
|
-
|
|
974
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
975
975
|
{
|
|
976
976
|
ref,
|
|
977
977
|
className: clsx27__default.default("ds-stakeholder-tabs", className),
|
|
978
978
|
...props,
|
|
979
979
|
children: [
|
|
980
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
980
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title }),
|
|
981
981
|
/* @__PURE__ */ jsxRuntime.jsxs(chunkW2WTP6HS_cjs.Tabs, { defaultValue: defaultIndex, children: [
|
|
982
982
|
/* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.TabsList, { className: "ds-stakeholder-tabs__list", children: stakeholders.map((s, i) => /* @__PURE__ */ jsxRuntime.jsxs(chunkW2WTP6HS_cjs.TabsTrigger, { value: i, className: "ds-stakeholder-tabs__trigger", children: [
|
|
983
983
|
s.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-stakeholder-tabs__icon", "aria-hidden": "true", children: s.icon }),
|
|
@@ -1021,13 +1021,13 @@ var IntegrationShowcase = React34.forwardRef(
|
|
|
1021
1021
|
const allCategories = categories ?? ["All", ...new Set(integrations.map((i) => i.category))];
|
|
1022
1022
|
const filtered = activeCategory === "All" ? integrations : integrations.filter((i) => i.category === activeCategory);
|
|
1023
1023
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1024
|
-
|
|
1024
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
1025
1025
|
{
|
|
1026
1026
|
ref,
|
|
1027
1027
|
className: clsx27__default.default("ds-integration-showcase", className),
|
|
1028
1028
|
...props,
|
|
1029
1029
|
children: [
|
|
1030
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1030
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title, subtitle }),
|
|
1031
1031
|
filterable && allCategories.length > 1 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1032
1032
|
chunkW2WTP6HS_cjs.Tabs,
|
|
1033
1033
|
{
|
|
@@ -1070,13 +1070,13 @@ var SecurityBlock = React34.forwardRef(
|
|
|
1070
1070
|
...props
|
|
1071
1071
|
}, ref) => {
|
|
1072
1072
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1073
|
-
|
|
1073
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
1074
1074
|
{
|
|
1075
1075
|
ref,
|
|
1076
1076
|
className: clsx27__default.default("ds-security-block", className),
|
|
1077
1077
|
...props,
|
|
1078
1078
|
children: [
|
|
1079
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1079
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title, subtitle }),
|
|
1080
1080
|
certifications && certifications.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx27__default.default("ds-security-block__certs", `ds-security-block__certs--${variant}`), children: certifications.map((cert, i) => {
|
|
1081
1081
|
const inner = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-security-block__cert", children: [
|
|
1082
1082
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-security-block__cert-icon", children: cert.icon }),
|
|
@@ -1121,13 +1121,13 @@ var CaseStudySection = React34.forwardRef(
|
|
|
1121
1121
|
const filtered = activeFilter === "All" ? caseStudies : caseStudies.filter((cs) => cs.industry === activeFilter);
|
|
1122
1122
|
const visible = maxVisible ? filtered.slice(0, maxVisible) : filtered;
|
|
1123
1123
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1124
|
-
|
|
1124
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
1125
1125
|
{
|
|
1126
1126
|
ref,
|
|
1127
1127
|
className: clsx27__default.default("ds-case-study-section", className),
|
|
1128
1128
|
...props,
|
|
1129
1129
|
children: [
|
|
1130
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1130
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title, subtitle }),
|
|
1131
1131
|
filterable && allFilters.length > 1 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1132
1132
|
chunkW2WTP6HS_cjs.Tabs,
|
|
1133
1133
|
{
|
|
@@ -1157,7 +1157,7 @@ var ManifestoBlock = React34.forwardRef(
|
|
|
1157
1157
|
}, ref) => {
|
|
1158
1158
|
const initials = attribution ? attribution.name.split(" ").map((n) => n[0]).join("").slice(0, 2) : "";
|
|
1159
1159
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1160
|
-
|
|
1160
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
1161
1161
|
{
|
|
1162
1162
|
ref,
|
|
1163
1163
|
className: clsx27__default.default("ds-manifesto", `ds-manifesto--${variant}`, className),
|
|
@@ -1196,13 +1196,13 @@ var ComplianceGrid = React34.forwardRef(
|
|
|
1196
1196
|
...props
|
|
1197
1197
|
}, ref) => {
|
|
1198
1198
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1199
|
-
|
|
1199
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
1200
1200
|
{
|
|
1201
1201
|
ref,
|
|
1202
1202
|
className: clsx27__default.default("ds-compliance-grid", className),
|
|
1203
1203
|
...props,
|
|
1204
1204
|
children: [
|
|
1205
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1205
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title, subtitle }),
|
|
1206
1206
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-compliance-grid__items", children: items.map((item, i) => {
|
|
1207
1207
|
const inner = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1208
1208
|
"div",
|
|
@@ -1425,13 +1425,13 @@ var EvolutionTimeline = React34.forwardRef(
|
|
|
1425
1425
|
...props
|
|
1426
1426
|
}, ref) => {
|
|
1427
1427
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1428
|
-
|
|
1428
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
1429
1429
|
{
|
|
1430
1430
|
ref,
|
|
1431
1431
|
className: clsx27__default.default("ds-evolution-timeline", className),
|
|
1432
1432
|
...props,
|
|
1433
1433
|
children: [
|
|
1434
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1434
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title, subtitle }),
|
|
1435
1435
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-evolution-timeline__track", children: [
|
|
1436
1436
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-evolution-timeline__line", "aria-hidden": "true" }),
|
|
1437
1437
|
eras.map((era, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1480,13 +1480,13 @@ var EcosystemDiagram = React34.forwardRef(
|
|
|
1480
1480
|
...props
|
|
1481
1481
|
}, ref) => {
|
|
1482
1482
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1483
|
-
|
|
1483
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
1484
1484
|
{
|
|
1485
1485
|
ref,
|
|
1486
1486
|
className: clsx27__default.default("ds-ecosystem", `ds-ecosystem--${variant}`, className),
|
|
1487
1487
|
...props,
|
|
1488
1488
|
children: [
|
|
1489
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1489
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title, subtitle }),
|
|
1490
1490
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-ecosystem__diagram", role: "img", "aria-label": "Ecosystem diagram", children: [
|
|
1491
1491
|
centerLabel && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-ecosystem__center", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-ecosystem__center-label", children: centerLabel }) }),
|
|
1492
1492
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-ecosystem__layers", children: layers.map((layer, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-ecosystem__layer", children: [
|
|
@@ -1534,13 +1534,13 @@ var ValueAnchor = React34.forwardRef(
|
|
|
1534
1534
|
}, []);
|
|
1535
1535
|
const output = React34.useMemo(() => calculate(values), [values, calculate]);
|
|
1536
1536
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1537
|
-
|
|
1537
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
1538
1538
|
{
|
|
1539
1539
|
ref,
|
|
1540
1540
|
className: clsx27__default.default("ds-value-anchor", className),
|
|
1541
1541
|
...props,
|
|
1542
1542
|
children: [
|
|
1543
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1543
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title, subtitle }),
|
|
1544
1544
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-value-anchor__layout", children: [
|
|
1545
1545
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-value-anchor__inputs", children: inputs.map((input) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-value-anchor__input-group", children: [
|
|
1546
1546
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "ds-value-anchor__input-label", children: [
|
|
@@ -1625,13 +1625,13 @@ var EnterpriseSignaling = React34.forwardRef(
|
|
|
1625
1625
|
);
|
|
1626
1626
|
}
|
|
1627
1627
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1628
|
-
|
|
1628
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
1629
1629
|
{
|
|
1630
1630
|
ref,
|
|
1631
1631
|
className: clsx27__default.default("ds-enterprise-signaling", `ds-enterprise-signaling--${variant}`, className),
|
|
1632
1632
|
...props,
|
|
1633
1633
|
children: [
|
|
1634
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1634
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title, subtitle }),
|
|
1635
1635
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-enterprise-signaling__categories", children: categories.map((cat, ci) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-enterprise-signaling__category", children: [
|
|
1636
1636
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-enterprise-signaling__category-header", children: [
|
|
1637
1637
|
cat.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-enterprise-signaling__category-icon", children: cat.icon }),
|
|
@@ -1726,13 +1726,13 @@ var IntelligenceBlock = React34.forwardRef(
|
|
|
1726
1726
|
] })
|
|
1727
1727
|
] }, i)) });
|
|
1728
1728
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1729
|
-
|
|
1729
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
1730
1730
|
{
|
|
1731
1731
|
ref,
|
|
1732
1732
|
className: clsx27__default.default("ds-intelligence", `ds-intelligence--${variant}`, className),
|
|
1733
1733
|
...props,
|
|
1734
1734
|
children: [
|
|
1735
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1735
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title, subtitle }),
|
|
1736
1736
|
variant === "capabilities-first" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1737
1737
|
capabilitiesBlock,
|
|
1738
1738
|
metricsBlock
|
|
@@ -1781,13 +1781,13 @@ var PartnerValueProp = React34.forwardRef(
|
|
|
1781
1781
|
return calculator.calculate(values);
|
|
1782
1782
|
}, [values, calculator]);
|
|
1783
1783
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1784
|
-
|
|
1784
|
+
chunkEM7JHRYW_cjs.SectionShell,
|
|
1785
1785
|
{
|
|
1786
1786
|
ref,
|
|
1787
1787
|
className: clsx27__default.default("ds-partner-vp", className),
|
|
1788
1788
|
...props,
|
|
1789
1789
|
children: [
|
|
1790
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1790
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEM7JHRYW_cjs.SectionHeader, { eyebrow, title, subtitle }),
|
|
1791
1791
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__layout", children: [
|
|
1792
1792
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-partner-vp__benefits", children: benefits.map((b, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__benefit", children: [
|
|
1793
1793
|
b.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-partner-vp__benefit-icon", "aria-hidden": "true", children: b.icon }),
|
|
@@ -2159,4 +2159,4 @@ exports.StickyActionBar = StickyActionBar;
|
|
|
2159
2159
|
exports.ValueAnchor = ValueAnchor;
|
|
2160
2160
|
exports.VideoEmbed = VideoEmbed;
|
|
2161
2161
|
//# sourceMappingURL=out.js.map
|
|
2162
|
-
//# sourceMappingURL=chunk-
|
|
2162
|
+
//# sourceMappingURL=chunk-OGKGIXFC.cjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Stack } from './chunk-NN3TUHIH.js';
|
|
2
|
-
import { SectionShell, SectionHeader } from './chunk-
|
|
2
|
+
import { SectionShell, SectionHeader } from './chunk-UFAJY2DM.js';
|
|
3
3
|
import { Box } from './chunk-HN4PHABT.js';
|
|
4
4
|
import { forwardRef } from 'react';
|
|
5
5
|
import clsx from 'clsx';
|
|
@@ -182,4 +182,4 @@ StatsSection.displayName = "StatsSection";
|
|
|
182
182
|
|
|
183
183
|
export { CTASection, FeatureSection, HeroSection, StatsSection };
|
|
184
184
|
//# sourceMappingURL=out.js.map
|
|
185
|
-
//# sourceMappingURL=chunk-
|
|
185
|
+
//# sourceMappingURL=chunk-PE2KJVRN.js.map
|
|
@@ -1273,6 +1273,30 @@ var DIMENSION_LABELS = {
|
|
|
1273
1273
|
TF: { left: "Thinking", right: "Feeling", full: "T/F" },
|
|
1274
1274
|
JP: { left: "Judging", right: "Perceiving", full: "J/P" }
|
|
1275
1275
|
};
|
|
1276
|
+
var CustomTooltip = ({ active, payload }) => {
|
|
1277
|
+
if (!active || !payload?.length) return null;
|
|
1278
|
+
const data = payload[0].payload;
|
|
1279
|
+
return /* @__PURE__ */ jsxs("div", { className: "ds-mbti-radar__tooltip", children: [
|
|
1280
|
+
/* @__PURE__ */ jsx("p", { className: "ds-mbti-radar__tooltip-title", children: data.fullName }),
|
|
1281
|
+
/* @__PURE__ */ jsxs("p", { className: "ds-mbti-radar__tooltip-value", children: [
|
|
1282
|
+
data.leftLabel,
|
|
1283
|
+
": ",
|
|
1284
|
+
100 - data.value,
|
|
1285
|
+
"%"
|
|
1286
|
+
] }),
|
|
1287
|
+
/* @__PURE__ */ jsxs("p", { className: "ds-mbti-radar__tooltip-value", children: [
|
|
1288
|
+
data.rightLabel,
|
|
1289
|
+
": ",
|
|
1290
|
+
data.value,
|
|
1291
|
+
"%"
|
|
1292
|
+
] }),
|
|
1293
|
+
data.comparison !== void 0 && /* @__PURE__ */ jsxs("p", { className: "ds-mbti-radar__tooltip-comparison", children: [
|
|
1294
|
+
"Benchmark: ",
|
|
1295
|
+
data.comparison,
|
|
1296
|
+
"%"
|
|
1297
|
+
] })
|
|
1298
|
+
] });
|
|
1299
|
+
};
|
|
1276
1300
|
function MBTIRadar({
|
|
1277
1301
|
dimensions,
|
|
1278
1302
|
sampleSize,
|
|
@@ -1322,33 +1346,7 @@ function MBTIRadar({
|
|
|
1322
1346
|
) })
|
|
1323
1347
|
] });
|
|
1324
1348
|
}
|
|
1325
|
-
const
|
|
1326
|
-
active,
|
|
1327
|
-
payload
|
|
1328
|
-
}) => {
|
|
1329
|
-
if (!active || !payload?.length) return null;
|
|
1330
|
-
const data = payload[0].payload;
|
|
1331
|
-
return /* @__PURE__ */ jsxs("div", { className: "ds-mbti-radar__tooltip", children: [
|
|
1332
|
-
/* @__PURE__ */ jsx("p", { className: "ds-mbti-radar__tooltip-title", children: data.fullName }),
|
|
1333
|
-
/* @__PURE__ */ jsxs("p", { className: "ds-mbti-radar__tooltip-value", children: [
|
|
1334
|
-
data.leftLabel,
|
|
1335
|
-
": ",
|
|
1336
|
-
100 - data.value,
|
|
1337
|
-
"%"
|
|
1338
|
-
] }),
|
|
1339
|
-
/* @__PURE__ */ jsxs("p", { className: "ds-mbti-radar__tooltip-value", children: [
|
|
1340
|
-
data.rightLabel,
|
|
1341
|
-
": ",
|
|
1342
|
-
data.value,
|
|
1343
|
-
"%"
|
|
1344
|
-
] }),
|
|
1345
|
-
data.comparison !== void 0 && /* @__PURE__ */ jsxs("p", { className: "ds-mbti-radar__tooltip-comparison", children: [
|
|
1346
|
-
"Benchmark: ",
|
|
1347
|
-
data.comparison,
|
|
1348
|
-
"%"
|
|
1349
|
-
] })
|
|
1350
|
-
] });
|
|
1351
|
-
};
|
|
1349
|
+
const isTesting = typeof process !== "undefined" && (process.env.NODE_ENV === "test" || process.env.STORYBOOK_A11Y === "true");
|
|
1352
1350
|
return /* @__PURE__ */ jsxs("div", { className: clsx7("ds-mbti-radar", className), children: [
|
|
1353
1351
|
(title || subtitle) && /* @__PURE__ */ jsxs("header", { className: "ds-mbti-radar__header", children: [
|
|
1354
1352
|
/* @__PURE__ */ jsxs("div", { className: "ds-mbti-radar__header-text", children: [
|
|
@@ -1390,7 +1388,8 @@ function MBTIRadar({
|
|
|
1390
1388
|
stroke: "var(--brand-pink)",
|
|
1391
1389
|
fill: "var(--brand-pink)",
|
|
1392
1390
|
fillOpacity: 0.3,
|
|
1393
|
-
strokeWidth: 2
|
|
1391
|
+
strokeWidth: 2,
|
|
1392
|
+
isAnimationActive: !isTesting
|
|
1394
1393
|
}
|
|
1395
1394
|
),
|
|
1396
1395
|
comparison && /* @__PURE__ */ jsx(
|
|
@@ -1402,7 +1401,8 @@ function MBTIRadar({
|
|
|
1402
1401
|
fill: "var(--brand-yellow)",
|
|
1403
1402
|
fillOpacity: 0.1,
|
|
1404
1403
|
strokeWidth: 2,
|
|
1405
|
-
strokeDasharray: "5 5"
|
|
1404
|
+
strokeDasharray: "5 5",
|
|
1405
|
+
isAnimationActive: !isTesting
|
|
1406
1406
|
}
|
|
1407
1407
|
),
|
|
1408
1408
|
showValues && /* @__PURE__ */ jsx(Tooltip, { content: /* @__PURE__ */ jsx(CustomTooltip, {}) }),
|
|
@@ -1605,4 +1605,4 @@ MBTITypeGrid.displayName = "MBTITypeGrid";
|
|
|
1605
1605
|
|
|
1606
1606
|
export { BarChart, Chart, ChartContainer, ChartSwitchControl, FunnelChart, HeatmapChart, LineChart, MBTIRadar, MBTITypeGrid, PieChart };
|
|
1607
1607
|
//# sourceMappingURL=out.js.map
|
|
1608
|
-
//# sourceMappingURL=chunk-
|
|
1608
|
+
//# sourceMappingURL=chunk-RQUFZAZ7.js.map
|