@deriv-web-design/ui 0.0.3 → 0.0.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/index.css +2253 -7
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +388 -1
- package/dist/index.d.ts +388 -1
- package/dist/index.js +1772 -134
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1774 -133
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../primitives/Button/Button.tsx","../primitives/Link/Link.tsx","../primitives/Chip/Chip.tsx","../primitives/Tag/Tag.tsx","../primitives/Accordion/Accordion.tsx","../primitives/TextField/TextField.tsx","../primitives/SearchField/SearchField.tsx","../primitives/Breadcrumb/Breadcrumb.tsx","../primitives/ChipDropdown/ChipDropdown.tsx","../components/Card/CardPrimaryVariant.tsx","../components/Card/CardSecondaryVariant.tsx","../components/Card/CardThumbnailVariant.tsx","../components/Card/Card.tsx","../primitives/Pagination/Pagination.tsx","../templates/FeatureCards/FeatureCards.tsx"],"sourcesContent":["import type { ButtonProps } from \"./Button.types\";\nimport \"./Button.css\";\n\nexport const Button = ({\n colorScheme = \"coral\",\n variant = \"primary\",\n iconPosition = \"none\",\n icon,\n label,\n fullWidth = false,\n showFocusRing = false,\n children,\n disabled,\n className,\n ...props\n}: ButtonProps) => {\n const isIconOnly = iconPosition === \"icon-only\";\n\n const classNames = [\n \"button\",\n `${colorScheme}_${variant}`,\n isIconOnly ? \"iconOnly\" : \"\",\n fullWidth ? \"fullWidth\" : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const iconNode = icon ? (\n <span className=\"icon\">{icon}</span>\n ) : null;\n\n return (\n <button\n className={classNames}\n disabled={disabled}\n aria-label={isIconOnly && label ? label : undefined}\n {...props}\n >\n {iconPosition === \"icon-left\" && iconNode}\n\n {!isIconOnly && (\n <span className=\"label\">{label ?? children}</span>\n )}\n\n {iconPosition === \"icon-only\" && iconNode}\n\n {iconPosition === \"icon-right\" && iconNode}\n\n {showFocusRing && (\n <span className=\"focusRing\" aria-hidden=\"true\" />\n )}\n </button>\n );\n};\n\nexport default Button;\n","import type { LinkProps } from \"./Link.types\";\nimport \"./Link.css\";\n\nconst ChevronIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M3 8h10M9 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nexport const Link = ({\n colorScheme = \"coral\",\n label,\n icon,\n showChevron = true,\n disabled = false,\n children,\n className,\n onClick,\n ...props\n}: LinkProps) => {\n const hasIcon = !!icon;\n\n const classNames = [\n \"link\",\n colorScheme,\n hasIcon ? \"withIcon\" : \"withChevron\",\n disabled ? \"disabled\" : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n return (\n <a\n className={classNames}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : undefined}\n onClick={handleClick}\n {...props}\n >\n {hasIcon && <span className=\"icon\">{icon}</span>}\n\n <span className=\"label\">{label ?? children}</span>\n\n {!hasIcon && showChevron && (\n <span className=\"chevron\" aria-hidden=\"true\">\n <ChevronIcon />\n </span>\n )}\n </a>\n );\n};\n\nexport default Link;\n","import type { ChipProps } from \"./Chip.types\";\nimport \"./Chip.css\";\n\nexport const Chip = ({\n size = \"md\",\n label,\n icon,\n tag,\n selected = false,\n showFocusRing = false,\n disabled = false,\n children,\n className,\n ...props\n}: ChipProps) => {\n const classNames = [\n \"chip\",\n size,\n selected ? \"selected\" : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button\n className={classNames}\n disabled={disabled}\n aria-pressed={selected}\n {...props}\n >\n {icon && <span className=\"icon\">{icon}</span>}\n <span className=\"label\">{label ?? children}</span>\n {tag && <span className=\"tag\">{tag}</span>}\n {showFocusRing && (\n <span className=\"focusRing\" aria-hidden=\"true\" />\n )}\n </button>\n );\n};\n\nexport default Chip;\n","import type { TagProps } from \"./Tag.types\";\nimport \"./Tag.css\";\n\nexport const Tag = ({\n size = \"sm\",\n variant = \"fill\",\n fontWeight = \"regular\",\n label,\n icon,\n children,\n className,\n ...props\n}: TagProps) => {\n const classNames = [\n \"tag\",\n size,\n variant,\n fontWeight,\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span className={classNames} {...props}>\n {icon && <span className=\"icon\">{icon}</span>}\n <span className=\"label\">{label ?? children}</span>\n </span>\n );\n};\n\nexport default Tag;\n","import { useState } from \"react\";\nimport type { AccordionProps } from \"./Accordion.types\";\nimport \"./Accordion.css\";\n\nconst ChevronIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nexport const Accordion = ({\n title,\n children,\n open,\n defaultOpen = false,\n onToggle,\n showTopDivider = true,\n showBottomDivider = true,\n showFocusRing = false,\n className,\n}: AccordionProps) => {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const isOpen = isControlled ? open : internalOpen;\n\n const handleToggle = () => {\n const next = !isOpen;\n if (!isControlled) setInternalOpen(next);\n onToggle?.(next);\n };\n\n const classNames = [\"accordion\", className ?? \"\"].filter(Boolean).join(\" \");\n\n return (\n <div\n className={classNames}\n style={{\n borderTop: showTopDivider ? `1px solid var(--accordion-divider-color)` : undefined,\n borderBottom: showBottomDivider ? `1px solid var(--accordion-divider-color)` : undefined,\n }}\n >\n <button\n className=\"header\"\n onClick={handleToggle}\n aria-expanded={isOpen}\n >\n <span className=\"titleWrapper\">\n <span className=\"title\">{title}</span>\n </span>\n <span className={[\"chevron\", isOpen ? \"chevronRotated\" : \"\"].filter(Boolean).join(\" \")}>\n <ChevronIcon />\n </span>\n {showFocusRing && (\n <span className=\"focusRing\" aria-hidden=\"true\" />\n )}\n </button>\n\n <div className={[\"bodyWrapper\", isOpen ? \"bodyWrapperOpen\" : \"\"].filter(Boolean).join(\" \")}>\n <div className=\"bodyInner\">\n <div className=\"body\">{children}</div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Accordion;\n","import { forwardRef } from \"react\";\nimport type { TextFieldProps } from \"./TextField.types\";\nimport \"./TextField.css\";\n\nconst SuccessIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M5.5 8l2 2 3-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst FailIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M8 2.5L14 13.5H2L8 2.5Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M8 6.5v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n);\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n variant = \"outline\",\n status = \"neutral\",\n disabled,\n className,\n ...inputProps\n },\n ref\n ) => {\n const wrapperClass = [\n \"tf-wrapper\",\n variant,\n status,\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={wrapperClass} data-disabled={disabled || undefined}>\n <input\n ref={ref}\n className=\"tf-input\"\n disabled={disabled}\n {...inputProps}\n />\n\n {status === \"success\" && (\n <span className=\"iconSlot iconSuccess\">\n <SuccessIcon />\n </span>\n )}\n {status === \"fail\" && (\n <span className=\"iconSlot iconFail\">\n <FailIcon />\n </span>\n )}\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport default TextField;\n","import { forwardRef, useRef, useState, useCallback, type ChangeEvent } from \"react\";\nimport type { SearchFieldProps } from \"./SearchField.types\";\nimport \"./SearchField.css\";\n\n/* ── Icons ────────────────────────────────────────────────── */\n\nconst SearchIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <circle cx=\"6.5\" cy=\"6.5\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.25\" />\n <path d=\"M9.5 9.5L13 13\" stroke=\"currentColor\" strokeWidth=\"1.25\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst ClearIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.25\" />\n <path d=\"M6 6l4 4M10 6l-4 4\" stroke=\"currentColor\" strokeWidth=\"1.25\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst SuccessIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M5.5 8l2 2 3-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst FailIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M8 2.5L14 13.5H2L8 2.5Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M8 6.5v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n);\n\n/* ── Component ────────────────────────────────────────────── */\n\nexport const SearchField = forwardRef<HTMLInputElement, SearchFieldProps>(\n (\n {\n status = \"neutral\",\n value,\n defaultValue,\n onChange,\n onClear,\n disabled,\n className,\n ...inputProps\n },\n ref\n ) => {\n const innerRef = useRef<HTMLInputElement>(null);\n\n // Merge forwarded ref with inner ref so we can clear the native input\n const setRef = useCallback(\n (node: HTMLInputElement | null) => {\n (innerRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n },\n [ref]\n );\n\n // Track whether the input has text for uncontrolled usage\n const isControlled = value !== undefined;\n const [internalHasValue, setInternalHasValue] = useState(\n Boolean(defaultValue)\n );\n const hasValue = isControlled ? Boolean(value) : internalHasValue;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalHasValue(Boolean(e.target.value));\n }\n onChange?.(e);\n };\n\n const handleClear = () => {\n if (!isControlled && innerRef.current) {\n innerRef.current.value = \"\";\n setInternalHasValue(false);\n }\n onClear?.();\n innerRef.current?.focus();\n };\n\n // ── Derived display state ──────────────────────────────\n // Fail icon always visible when status=fail (even with no input)\n const showFailIcon = status === \"fail\" && !disabled;\n // Success icon only visible when status=success + has input\n const showSuccessIcon = status === \"success\" && hasValue && !disabled;\n // Clear button visible when has input (all statuses)\n const showClearButton = hasValue && !disabled;\n\n const wrapperClass = [\n \"sf-wrapper\",\n status,\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n className={wrapperClass}\n data-disabled={disabled || undefined}\n >\n {/* Always-present search icon */}\n <span className=\"iconSlot\">\n <SearchIcon />\n </span>\n\n <input\n ref={setRef}\n className=\"sf-input\"\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n {...inputProps}\n />\n\n {/* Status icons — right of input, left of clear */}\n {showSuccessIcon && (\n <span className=\"iconSlot iconSuccess\">\n <SuccessIcon />\n </span>\n )}\n {showFailIcon && (\n <span className=\"iconSlot iconFail\">\n <FailIcon />\n </span>\n )}\n\n {/* Clear button — always rightmost */}\n {showClearButton && (\n <button\n type=\"button\"\n className=\"clearButton\"\n onClick={handleClear}\n aria-label=\"Clear search\"\n tabIndex={-1}\n >\n <ClearIcon />\n </button>\n )}\n </div>\n );\n }\n);\n\nSearchField.displayName = \"SearchField\";\n\nexport default SearchField;\n","import { useState } from \"react\";\nimport type { BreadcrumbProps, BreadcrumbItem } from \"./Breadcrumb.types\";\nimport \"./Breadcrumb.css\";\n\nconst ChevronRightIcon = () => (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M6 3.5L10.5 8L6 12.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nfunction BreadcrumbLink({ item }: { item: BreadcrumbItem }) {\n return (\n <>\n <a href={item.href} onClick={item.onClick} className=\"bc-link\">\n {item.label}\n </a>\n <span className=\"bc-separator\" aria-hidden=\"true\">\n <ChevronRightIcon />\n </span>\n </>\n );\n}\n\nexport function Breadcrumb({\n items,\n size = \"md\",\n collapsible = true,\n className,\n ...navProps\n}: BreadcrumbProps) {\n const [expanded, setExpanded] = useState(false);\n\n // Collapse only when there are enough items for the pattern:\n // first › … › parent › current (needs ≥ 4 items)\n const truncatable = collapsible && items.length > 3;\n\n const listClass = [\n \"bc-list\",\n size,\n truncatable ? \"collapsible\" : \"\",\n truncatable && expanded ? \"expanded\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (!truncatable) {\n return (\n <nav aria-label=\"Breadcrumb\" className={className} {...navProps}>\n <ol className={listClass}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <li key={index} className=\"bc-item\">\n {isLast ? (\n <span className=\"bc-current\" aria-current=\"page\">\n {item.label}\n </span>\n ) : (\n <BreadcrumbLink item={item} />\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n }\n\n const firstItem = items[0];\n const middleItems = items.slice(1, items.length - 2);\n const parentItem = items[items.length - 2];\n const currentItem = items[items.length - 1];\n\n return (\n <nav aria-label=\"Breadcrumb\" className={className} {...navProps}>\n <ol className={listClass}>\n {/* Always-visible: first item */}\n <li className=\"bc-item\">\n <BreadcrumbLink item={firstItem} />\n </li>\n\n {/* Mobile only — ellipsis button, hidden when expanded */}\n <li className=\"bc-ellipsisItem\" aria-hidden={expanded}>\n <button\n className=\"bc-ellipsisButton\"\n onClick={() => setExpanded(true)}\n aria-label=\"Show all breadcrumb items\"\n >\n …\n </button>\n <span className=\"bc-separator\" aria-hidden=\"true\">\n <ChevronRightIcon />\n </span>\n </li>\n\n {/* Middle items — hidden on mobile until expanded */}\n {middleItems.map((item, index) => (\n <li key={`m-${index}`} className=\"bc-middleItem\">\n <BreadcrumbLink item={item} />\n </li>\n ))}\n\n {/* Always-visible: parent (second-to-last) */}\n <li className=\"bc-item\">\n <BreadcrumbLink item={parentItem} />\n </li>\n\n {/* Always-visible: current page (last) */}\n <li className=\"bc-item\">\n <span className=\"bc-current\" aria-current=\"page\">\n {currentItem.label}\n </span>\n </li>\n </ol>\n </nav>\n );\n}\n\nexport default Breadcrumb;\n","import { useEffect, useRef, useState } from \"react\";\nimport type { ChipDropdownProps } from \"./ChipDropdown.types\";\nimport \"./ChipDropdown.css\";\n\nconst ChevronDownIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M3 6l5 5 5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst CheckIcon = () => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M2 6l3 3 5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const ChipDropdown = ({\n size = \"md\",\n label,\n tag,\n icon,\n options,\n value,\n onChange,\n disabled = false,\n className,\n ...props\n}: ChipDropdownProps) => {\n const [open, setOpen] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const selectedOption = options.find((o) => o.value === value) ?? null;\n const displayLabel = selectedOption ? selectedOption.label : label;\n const isSelected = selectedOption !== null;\n\n useEffect(() => {\n if (!open) return;\n const handleClickOutside = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [open]);\n\n const triggerClassNames = [\n \"cd-trigger\",\n size,\n isSelected ? \"selected\" : \"\",\n open ? \"expand\" : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n\n return (\n <div ref={wrapperRef} className=\"cd-wrapper\">\n <button\n type=\"button\"\n className={triggerClassNames}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n onClick={() => setOpen((prev) => !prev)}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {icon && <span className=\"cd-icon\">{icon}</span>}\n <span className=\"cd-label\">{displayLabel}</span>\n {tag && <span className=\"cd-tag\">{tag}</span>}\n <span\n className={[\"cd-chevron\", open ? \"chevronOpen\" : \"\"]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden=\"true\"\n >\n <ChevronDownIcon />\n </span>\n </button>\n\n {open && (\n <ul\n role=\"listbox\"\n aria-label={label}\n className=\"cd-list\"\n >\n {options.map((option) => {\n const isActive = option.value === value;\n return (\n <li\n key={option.value}\n role=\"option\"\n aria-selected={isActive}\n className={[\n \"cd-item\",\n isActive ? \"itemSelected\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => {\n onChange?.(option.value);\n setOpen(false);\n }}\n >\n <span className=\"cd-itemLabel\">{option.label}</span>\n {isActive && (\n <span className=\"cd-itemCheck\">\n <CheckIcon />\n </span>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n};\n\nexport default ChipDropdown;","import type { CardProps } from \"./Card.types\";\nimport { Link } from \"../../primitives/Link\";\nimport \"./CardPrimaryVariant.css\";\n\ntype PrimaryProps = Extract<CardProps, { variant: \"primary\" }>;\n\nexport const CardPrimaryVariant = ({\n colorScheme = \"light\",\n title,\n description,\n image,\n imageAlt = \"\",\n showLink = true,\n linkText = \"Learn more\",\n onLinkClick,\n className,\n variant: _variant,\n ...props\n}: PrimaryProps) => {\n const isInverse = colorScheme === \"dark\" || colorScheme === \"brand\" || colorScheme === \"image\";\n\n return (\n <div\n className={[\n \"card-primary\",\n `style--${colorScheme}`,\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n {/* ── Full-bleed image overlay (image colorScheme only) ─── */}\n {colorScheme === \"image\" && image && (\n <div aria-hidden=\"true\" className=\"cp-imageOverlay\">\n <img alt=\"\" className=\"cp-overlayImg\" src={image} />\n <div className=\"cp-gradient\" />\n </div>\n )}\n\n {/* ── Content ──────────────────────────────────────── */}\n <div className=\"cp-content\">\n <p className={[\"cp-title\", isInverse ? \"textInverse\" : \"textDefault\"].join(\" \")}>\n {title}\n </p>\n <p className={[\"cp-description\", isInverse ? \"textInverse\" : \"textDefault\"].join(\" \")}>\n {description}\n </p>\n {showLink && (\n <Link\n colorScheme={isInverse ? \"white\" : \"coral\"}\n label={linkText}\n onClick={onLinkClick}\n />\n )}\n </div>\n\n {/* ── Image section (light / dark / brand colorSchemes) ── */}\n {colorScheme !== \"image\" && image && (\n <div className=\"cp-imageSection\">\n <img alt={imageAlt} className=\"cp-image\" src={image} />\n </div>\n )}\n </div>\n );\n};\n","import type { CardProps } from \"./Card.types\";\nimport { Link } from \"../../primitives/Link\";\nimport \"./CardSecondaryVariant.css\";\n\ntype SecondaryProps = Extract<CardProps, { variant: \"secondary\" }>;\n\nexport const CardSecondaryVariant = ({\n title,\n description,\n icon,\n showIcon = true,\n showLink = true,\n linkText = \"Learn more\",\n onLinkClick,\n className,\n variant: _variant,\n ...props\n}: SecondaryProps) => {\n return (\n <div\n className={[\"card-secondary\", className ?? \"\"].filter(Boolean).join(\" \")}\n {...props}\n >\n {showIcon && icon && <span className=\"cs-icon\">{icon}</span>}\n\n <p className=\"cs-title\">{title}</p>\n\n <p className=\"cs-description\">{description}</p>\n\n {showLink && (\n <Link\n colorScheme=\"coral\"\n label={linkText}\n onClick={onLinkClick}\n />\n )}\n </div>\n );\n};\n","import type { CardProps } from \"./Card.types\";\nimport { Tag } from \"../../primitives/Tag\";\nimport \"./CardThumbnailVariant.css\";\n\nconst LinkIcon = () => (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n width=\"14\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.25 2.625H3.5A1.75 1.75 0 0 0 1.75 4.375v5.25A1.75 1.75 0 0 0 3.5 11.375h5.25a1.75 1.75 0 0 0 1.75-1.75V7.875\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.25\"\n />\n <path\n d=\"M7.875 1.75h4.375v4.375M12.25 1.75 6.125 7.875\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.25\"\n />\n </svg>\n);\n\nconst PlayIcon = () => (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"80\"\n viewBox=\"0 0 80 80\"\n width=\"80\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"40\" cy=\"40\" fill=\"rgba(255,255,255,0.88)\" r=\"40\" />\n <path d=\"M32 27l22 13-22 13V27z\" fill=\"rgba(24,28,37,0.72)\" />\n </svg>\n);\n\ntype ThumbnailProps = Extract<CardProps, { variant: \"thumbnail\" }>;\n\nexport const CardThumbnailVariant = ({\n type = \"video\",\n thumbnail,\n thumbnailAlt = \"\",\n title,\n summary,\n tags = [],\n hideTags = false,\n showCopyLink = true,\n onCopyLink,\n avatar,\n avatarAlt = \"\",\n className,\n variant: _variant,\n ...props\n}: ThumbnailProps) => {\n const isVideo = type === \"video\";\n\n return (\n <div\n className={[\"card-thumbnail\", className ?? \"\"].filter(Boolean).join(\" \")}\n {...props}\n >\n {/* ── Thumbnail ──────────────────────────────────── */}\n <div className=\"ct-thumbnailWrapper\">\n <img alt={thumbnailAlt} className=\"ct-thumbnailImage\" src={thumbnail} />\n {isVideo && (\n <span aria-label=\"Play video\" className=\"ct-playButton\">\n <PlayIcon />\n </span>\n )}\n {!isVideo && avatar && (\n <img alt={avatarAlt} className=\"ct-avatar\" src={avatar} />\n )}\n </div>\n\n {/* ── Content ────────────────────────────────────── */}\n <div className=\"ct-content\">\n <div className=\"ct-metaRow\">\n {!hideTags && (\n <div className=\"ct-tagsList\">\n {tags.map((tag, i) => (\n <Tag key={i} icon={tag.icon} label={tag.label} size=\"md\" variant=\"fill\" />\n ))}\n </div>\n )}\n {showCopyLink && (\n <button\n aria-label=\"Copy link\"\n className=\"ct-copyLink\"\n onClick={onCopyLink}\n type=\"button\"\n >\n <LinkIcon />\n </button>\n )}\n </div>\n <p className=\"ct-title\">{title}</p>\n <p className=\"ct-summary\">{summary}</p>\n </div>\n </div>\n );\n};\n","import type { CardProps } from \"./Card.types\";\nimport { CardPrimaryVariant } from \"./CardPrimaryVariant\";\nimport { CardSecondaryVariant } from \"./CardSecondaryVariant\";\nimport { CardThumbnailVariant } from \"./CardThumbnailVariant\";\n\nexport const Card = (props: CardProps) => {\n if (props.variant === \"primary\") {\n return <CardPrimaryVariant {...props} />;\n }\n if (props.variant === \"secondary\") {\n return <CardSecondaryVariant {...props} />;\n }\n return <CardThumbnailVariant {...props} />;\n};\n\nexport default Card;\n","import type { PaginationProps } from \"./Pagination.types\";\nimport \"./Pagination.css\";\n\nconst ChevronLeft = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M10 12L6 8L10 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst ChevronRight = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M6 4L10 8L6 12\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\ntype PageItem = number | \"ellipsis-left\" | \"ellipsis-right\";\n\nfunction getPageItems(currentPage: number, totalPages: number): PageItem[] {\n if (totalPages <= 5) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n if (currentPage <= 3) {\n return [1, 2, 3, 4, 5, \"ellipsis-right\", totalPages];\n }\n if (currentPage >= totalPages - 2) {\n return [1, \"ellipsis-left\", totalPages - 4, totalPages - 3, totalPages - 2, totalPages - 1, totalPages];\n }\n return [1, \"ellipsis-left\", currentPage - 1, currentPage, currentPage + 1, \"ellipsis-right\", totalPages];\n}\n\nexport const Pagination = ({\n currentPage,\n totalPages,\n onPageChange,\n className,\n}: PaginationProps) => {\n const items = getPageItems(currentPage, totalPages);\n const isPrevDisabled = currentPage <= 1;\n const isNextDisabled = currentPage >= totalPages;\n\n return (\n <nav\n className={[\"pagination\", className ?? \"\"].filter(Boolean).join(\" \")}\n aria-label=\"Pagination navigation\"\n >\n <button\n className={[\"navButton\", isPrevDisabled ? \"navButtonDisabled\" : \"\"].filter(Boolean).join(\" \")}\n onClick={() => onPageChange(currentPage - 1)}\n disabled={isPrevDisabled}\n aria-label=\"Previous page\"\n >\n <span className=\"navIcon\"><ChevronLeft /></span>\n </button>\n\n {items.map((item, index) => {\n if (item === \"ellipsis-left\" || item === \"ellipsis-right\") {\n return (\n <span\n key={`${item}-${index}`}\n className=\"ellipsis\"\n aria-hidden=\"true\"\n >\n …\n </span>\n );\n }\n\n const isSelected = item === currentPage;\n return (\n <button\n key={item}\n className={[\"pageButton\", isSelected ? \"pageButtonSelected\" : \"\"].filter(Boolean).join(\" \")}\n onClick={() => { if (!isSelected) onPageChange(item); }}\n aria-current={isSelected ? \"page\" : undefined}\n aria-label={`Page ${item}`}\n >\n {item}\n </button>\n );\n })}\n\n <button\n className={[\"navButton\", isNextDisabled ? \"navButtonDisabled\" : \"\"].filter(Boolean).join(\" \")}\n onClick={() => onPageChange(currentPage + 1)}\n disabled={isNextDisabled}\n aria-label=\"Next page\"\n >\n <span className=\"navIcon\"><ChevronRight /></span>\n </button>\n </nav>\n );\n};\n\nexport default Pagination;\n","import { Card } from \"../../components/Card\";\nimport { Link } from \"../../primitives/Link\";\nimport type { FeatureCardsProps } from \"./FeatureCards.types\";\nimport \"./FeatureCards.css\";\n\nexport const FeatureCards = ({\n sectionTitle,\n sectionDescription,\n showLink = false,\n linkText = \"Learn more\",\n onLinkClick,\n cardColorScheme = \"image\",\n cards,\n}: FeatureCardsProps) => {\n return (\n <section className=\"fc-section\">\n <div className=\"fc-container\">\n <div className=\"fc-header\">\n <h2 className=\"fc-sectionTitle\">{sectionTitle}</h2>\n\n {sectionDescription && (\n <p className=\"fc-sectionDescription\">{sectionDescription}</p>\n )}\n\n {showLink && (\n <Link\n colorScheme=\"coral\"\n label={linkText}\n onClick={onLinkClick}\n />\n )}\n </div>\n\n <div className=\"fc-grid\">\n {cards.map((card, index) => (\n <Card\n key={index}\n variant=\"primary\"\n colorScheme={card.colorScheme ?? cardColorScheme}\n title={card.title}\n description={card.description}\n image={card.image}\n imageAlt={card.imageAlt}\n showLink={card.showLink}\n linkText={card.linkText}\n onLinkClick={card.onLinkClick}\n />\n ))}\n </div>\n </div>\n </section>\n );\n};\n"],"mappings":"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","names":["jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","ChevronIcon","jsx","jsxs","forwardRef","useState","jsx","jsxs","SuccessIcon","FailIcon","forwardRef","useState","useState","jsx","jsxs","useState","useRef","useState","jsx","jsxs","useState","useRef","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs"]}
|
|
1
|
+
{"version":3,"sources":["../primitives/Button/Button.tsx","../primitives/Link/Link.tsx","../primitives/Chip/Chip.tsx","../primitives/Tag/Tag.tsx","../primitives/Accordion/Accordion.tsx","../primitives/TextField/TextField.tsx","../primitives/SearchField/SearchField.tsx","../primitives/Breadcrumb/Breadcrumb.tsx","../primitives/BottomSheet/BottomSheet.tsx","../primitives/ChipDropdown/ChipDropdown.tsx","../components/Card/CardPrimaryVariant.tsx","../components/Card/CardSecondaryVariant.tsx","../components/Card/CardThumbnailVariant.tsx","../components/Card/Card.tsx","../primitives/Pagination/Pagination.tsx","../templates/FeatureCards/FeatureCards.tsx","../templates/Footer/Footer.tsx","../templates/Hero/Hero.tsx","../templates/Stats/Stats.tsx","../templates/Scrollytelling/Scrollytelling.tsx","../templates/StickyStackedCards/StickyStackedCards.tsx","../templates/CTABanner/CTABanner.tsx","../templates/DayNightTransition/DayNightTransition.tsx","../templates/PaymentMethods/PaymentMethods.tsx"],"sourcesContent":["import type { ButtonProps } from \"./Button.types\";\nimport \"./Button.css\";\n\nexport const Button = ({\n colorScheme = \"coral\",\n variant = \"primary\",\n iconPosition = \"none\",\n icon,\n label,\n fullWidth = false,\n showFocusRing = false,\n children,\n disabled,\n className,\n ...props\n}: ButtonProps) => {\n const isIconOnly = iconPosition === \"icon-only\";\n\n const classNames = [\n \"button\",\n `${colorScheme}_${variant}`,\n isIconOnly ? \"iconOnly\" : \"\",\n fullWidth ? \"fullWidth\" : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const iconNode = icon ? (\n <span className=\"icon\">{icon}</span>\n ) : null;\n\n return (\n <button\n className={classNames}\n disabled={disabled}\n aria-label={isIconOnly && label ? label : undefined}\n {...props}\n >\n {iconPosition === \"icon-left\" && iconNode}\n\n {!isIconOnly && (\n <span className=\"label\">{label ?? children}</span>\n )}\n\n {iconPosition === \"icon-only\" && iconNode}\n\n {iconPosition === \"icon-right\" && iconNode}\n\n {showFocusRing && (\n <span className=\"focusRing\" aria-hidden=\"true\" />\n )}\n </button>\n );\n};\n\nexport default Button;\n","import type { LinkProps } from \"./Link.types\";\nimport \"./Link.css\";\n\nconst ChevronIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M3 8h10M9 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nexport const Link = ({\n colorScheme = \"coral\",\n label,\n icon,\n showChevron = true,\n disabled = false,\n children,\n className,\n onClick,\n ...props\n}: LinkProps) => {\n const hasIcon = !!icon;\n\n const classNames = [\n \"link\",\n colorScheme,\n hasIcon ? \"withIcon\" : \"withChevron\",\n disabled ? \"disabled\" : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n return (\n <a\n className={classNames}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : undefined}\n onClick={handleClick}\n {...props}\n >\n {hasIcon && <span className=\"icon\">{icon}</span>}\n\n <span className=\"label\">{label ?? children}</span>\n\n {!hasIcon && showChevron && (\n <span className=\"chevron\" aria-hidden=\"true\">\n <ChevronIcon />\n </span>\n )}\n </a>\n );\n};\n\nexport default Link;\n","import type { ChipProps } from \"./Chip.types\";\nimport \"./Chip.css\";\n\nexport const Chip = ({\n size = \"md\",\n label,\n icon,\n tag,\n selected = false,\n showFocusRing = false,\n disabled = false,\n children,\n className,\n ...props\n}: ChipProps) => {\n const classNames = [\n \"chip\",\n size,\n selected ? \"selected\" : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button\n className={classNames}\n disabled={disabled}\n aria-pressed={selected}\n {...props}\n >\n {icon && <span className=\"icon\">{icon}</span>}\n <span className=\"label\">{label ?? children}</span>\n {tag && <span className=\"tag\">{tag}</span>}\n {showFocusRing && (\n <span className=\"focusRing\" aria-hidden=\"true\" />\n )}\n </button>\n );\n};\n\nexport default Chip;\n","import type { TagProps } from \"./Tag.types\";\nimport \"./Tag.css\";\n\nexport const Tag = ({\n size = \"sm\",\n variant = \"fill\",\n fontWeight = \"regular\",\n label,\n icon,\n children,\n className,\n ...props\n}: TagProps) => {\n const classNames = [\n \"tag\",\n size,\n variant,\n fontWeight,\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span className={classNames} {...props}>\n {icon && <span className=\"icon\">{icon}</span>}\n <span className=\"label\">{label ?? children}</span>\n </span>\n );\n};\n\nexport default Tag;\n","import { useState } from \"react\";\nimport type { AccordionProps } from \"./Accordion.types\";\nimport \"./Accordion.css\";\n\nconst ChevronIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nexport const Accordion = ({\n title,\n children,\n open,\n defaultOpen = false,\n onToggle,\n showTopDivider = true,\n showBottomDivider = true,\n showFocusRing = false,\n className,\n}: AccordionProps) => {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const isOpen = isControlled ? open : internalOpen;\n\n const handleToggle = () => {\n const next = !isOpen;\n if (!isControlled) setInternalOpen(next);\n onToggle?.(next);\n };\n\n const classNames = [\"accordion\", className ?? \"\"].filter(Boolean).join(\" \");\n\n return (\n <div\n className={classNames}\n style={{\n borderTop: showTopDivider ? `1px solid var(--accordion-divider-color)` : undefined,\n borderBottom: showBottomDivider ? `1px solid var(--accordion-divider-color)` : undefined,\n }}\n >\n <button\n className=\"header\"\n onClick={handleToggle}\n aria-expanded={isOpen}\n >\n <span className=\"titleWrapper\">\n <span className=\"title\">{title}</span>\n </span>\n <span className={[\"chevron\", isOpen ? \"chevronRotated\" : \"\"].filter(Boolean).join(\" \")}>\n <ChevronIcon />\n </span>\n {showFocusRing && (\n <span className=\"focusRing\" aria-hidden=\"true\" />\n )}\n </button>\n\n <div className={[\"bodyWrapper\", isOpen ? \"bodyWrapperOpen\" : \"\"].filter(Boolean).join(\" \")}>\n <div className=\"bodyInner\">\n <div className=\"body\">{children}</div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Accordion;\n","import { forwardRef } from \"react\";\nimport type { TextFieldProps } from \"./TextField.types\";\nimport \"./TextField.css\";\n\nconst SuccessIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M5.5 8l2 2 3-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst FailIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M8 2.5L14 13.5H2L8 2.5Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M8 6.5v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n);\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n variant = \"outline\",\n status = \"neutral\",\n disabled,\n className,\n ...inputProps\n },\n ref\n ) => {\n const wrapperClass = [\n \"tf-wrapper\",\n variant,\n status,\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={wrapperClass} data-disabled={disabled || undefined}>\n <input\n ref={ref}\n className=\"tf-input\"\n disabled={disabled}\n {...inputProps}\n />\n\n {status === \"success\" && (\n <span className=\"iconSlot iconSuccess\">\n <SuccessIcon />\n </span>\n )}\n {status === \"fail\" && (\n <span className=\"iconSlot iconFail\">\n <FailIcon />\n </span>\n )}\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport default TextField;\n","import { forwardRef, useRef, useState, useCallback, type ChangeEvent } from \"react\";\nimport type { SearchFieldProps } from \"./SearchField.types\";\nimport \"./SearchField.css\";\n\n/* ── Icons ────────────────────────────────────────────────── */\n\nconst SearchIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <circle cx=\"6.5\" cy=\"6.5\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.25\" />\n <path d=\"M9.5 9.5L13 13\" stroke=\"currentColor\" strokeWidth=\"1.25\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst ClearIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.25\" />\n <path d=\"M6 6l4 4M10 6l-4 4\" stroke=\"currentColor\" strokeWidth=\"1.25\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst SuccessIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M5.5 8l2 2 3-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst FailIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M8 2.5L14 13.5H2L8 2.5Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M8 6.5v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n);\n\n/* ── Component ────────────────────────────────────────────── */\n\nexport const SearchField = forwardRef<HTMLInputElement, SearchFieldProps>(\n (\n {\n status = \"neutral\",\n value,\n defaultValue,\n onChange,\n onClear,\n disabled,\n className,\n ...inputProps\n },\n ref\n ) => {\n const innerRef = useRef<HTMLInputElement>(null);\n\n // Merge forwarded ref with inner ref so we can clear the native input\n const setRef = useCallback(\n (node: HTMLInputElement | null) => {\n (innerRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n },\n [ref]\n );\n\n // Track whether the input has text for uncontrolled usage\n const isControlled = value !== undefined;\n const [internalHasValue, setInternalHasValue] = useState(\n Boolean(defaultValue)\n );\n const hasValue = isControlled ? Boolean(value) : internalHasValue;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalHasValue(Boolean(e.target.value));\n }\n onChange?.(e);\n };\n\n const handleClear = () => {\n if (!isControlled && innerRef.current) {\n innerRef.current.value = \"\";\n setInternalHasValue(false);\n }\n onClear?.();\n innerRef.current?.focus();\n };\n\n // ── Derived display state ──────────────────────────────\n // Fail icon always visible when status=fail (even with no input)\n const showFailIcon = status === \"fail\" && !disabled;\n // Success icon only visible when status=success + has input\n const showSuccessIcon = status === \"success\" && hasValue && !disabled;\n // Clear button visible when has input (all statuses)\n const showClearButton = hasValue && !disabled;\n\n const wrapperClass = [\n \"sf-wrapper\",\n status,\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n className={wrapperClass}\n data-disabled={disabled || undefined}\n >\n {/* Always-present search icon */}\n <span className=\"iconSlot\">\n <SearchIcon />\n </span>\n\n <input\n ref={setRef}\n className=\"sf-input\"\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n {...inputProps}\n />\n\n {/* Status icons — right of input, left of clear */}\n {showSuccessIcon && (\n <span className=\"iconSlot iconSuccess\">\n <SuccessIcon />\n </span>\n )}\n {showFailIcon && (\n <span className=\"iconSlot iconFail\">\n <FailIcon />\n </span>\n )}\n\n {/* Clear button — always rightmost */}\n {showClearButton && (\n <button\n type=\"button\"\n className=\"clearButton\"\n onClick={handleClear}\n aria-label=\"Clear search\"\n tabIndex={-1}\n >\n <ClearIcon />\n </button>\n )}\n </div>\n );\n }\n);\n\nSearchField.displayName = \"SearchField\";\n\nexport default SearchField;\n","import { useState } from \"react\";\nimport type { BreadcrumbProps, BreadcrumbItem } from \"./Breadcrumb.types\";\nimport { BottomSheet } from \"../BottomSheet\";\nimport \"./Breadcrumb.css\";\n\nconst ChevronRightIcon = () => (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M6 3.5L10.5 8L6 12.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nfunction BreadcrumbLink({ item }: { item: BreadcrumbItem }) {\n return (\n <>\n <a href={item.href} onClick={item.onClick} className=\"bc-link\">\n {item.label}\n </a>\n <span className=\"bc-separator\" aria-hidden=\"true\">\n <ChevronRightIcon />\n </span>\n </>\n );\n}\n\nexport function Breadcrumb({\n items,\n size = \"md\",\n collapsible = true,\n className,\n ...navProps\n}: BreadcrumbProps) {\n const [sheetOpen, setSheetOpen] = useState(false);\n\n // Collapse only when there are enough items for the pattern:\n // first › … › parent › current (needs ≥ 4 items)\n const truncatable = collapsible && items.length > 3;\n\n const listClass = [\"bc-list\", size, truncatable ? \"collapsible\" : \"\"]\n .filter(Boolean)\n .join(\" \");\n\n if (!truncatable) {\n return (\n <nav aria-label=\"Breadcrumb\" className={className} {...navProps}>\n <ol className={listClass}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <li key={index} className=\"bc-item\">\n {isLast ? (\n <span className=\"bc-current\" aria-current=\"page\">\n {item.label}\n </span>\n ) : (\n <BreadcrumbLink item={item} />\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n }\n\n const firstItem = items[0];\n const middleItems = items.slice(1, items.length - 2);\n const parentItem = items[items.length - 2];\n const currentItem = items[items.length - 1];\n\n return (\n <>\n <nav aria-label=\"Breadcrumb\" className={className} {...navProps}>\n <ol className={listClass}>\n {/* Always-visible: first item */}\n <li className=\"bc-item\">\n <BreadcrumbLink item={firstItem} />\n </li>\n\n {/* Mobile only — ellipsis button, opens BottomSheet */}\n <li className=\"bc-ellipsisItem\">\n <button\n className=\"bc-ellipsisButton\"\n onClick={() => setSheetOpen(true)}\n aria-label=\"Show all breadcrumb items\"\n aria-haspopup=\"dialog\"\n >\n …\n </button>\n <span className=\"bc-separator\" aria-hidden=\"true\">\n <ChevronRightIcon />\n </span>\n </li>\n\n {/* Middle items — hidden on mobile (shown in BottomSheet instead) */}\n {middleItems.map((item, index) => (\n <li key={`m-${index}`} className=\"bc-middleItem\">\n <BreadcrumbLink item={item} />\n </li>\n ))}\n\n {/* Always-visible: parent (second-to-last) */}\n <li className=\"bc-item\">\n <BreadcrumbLink item={parentItem} />\n </li>\n\n {/* Always-visible: current page (last) */}\n <li className=\"bc-item\">\n <span className=\"bc-current\" aria-current=\"page\">\n {currentItem.label}\n </span>\n </li>\n </ol>\n </nav>\n\n {/* Mobile BottomSheet — shows hidden middle breadcrumb items */}\n <BottomSheet\n open={sheetOpen}\n onClose={() => setSheetOpen(false)}\n showHandleBar\n showHeader={false}\n >\n <ul className=\"bc-sheet-list\" role=\"list\">\n {middleItems.map((item, index) => (\n <li key={`sheet-${index}`} className=\"bc-sheet-item\">\n <a\n href={item.href}\n className=\"bc-sheet-link\"\n onClick={(e) => {\n item.onClick?.(e as React.MouseEvent<HTMLAnchorElement>);\n setSheetOpen(false);\n }}\n >\n {item.label}\n </a>\n </li>\n ))}\n </ul>\n </BottomSheet>\n </>\n );\n}\n\nexport default Breadcrumb;\n","import { useEffect, useId } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { BottomSheetProps } from \"./BottomSheet.types\";\nimport \"./BottomSheet.css\";\n\nconst XMarkIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M3 3l10 10M13 3L3 13\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport const BottomSheet = ({\n open,\n onClose,\n title,\n showHeader = true,\n showHandleBar = true,\n primaryAction,\n secondaryAction,\n children,\n}: BottomSheetProps) => {\n const titleId = useId();\n\n useEffect(() => {\n if (!open) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [open, onClose]);\n\n if (!open || typeof document === \"undefined\") return null;\n\n return createPortal(\n <div\n className=\"bs-overlay\"\n onClick={onClose}\n aria-hidden=\"true\"\n >\n <div\n className=\"bs-sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n onClick={(e) => e.stopPropagation()}\n >\n {showHandleBar && (\n <div className=\"bs-handle-container\">\n <div className=\"bs-handle-bar\" />\n </div>\n )}\n\n {showHeader && (\n <div className=\"bs-header\">\n <div className=\"bs-header-spacer\" />\n {title && (\n <p id={titleId} className=\"bs-title\">\n {title}\n </p>\n )}\n <div className=\"bs-close-container\">\n <button\n type=\"button\"\n className=\"bs-close-btn\"\n onClick={onClose}\n aria-label=\"Close\"\n >\n <XMarkIcon />\n </button>\n </div>\n </div>\n )}\n\n {children && <div className=\"bs-body\">{children}</div>}\n\n {(primaryAction || secondaryAction) && (\n <div className=\"bs-actions\">\n {primaryAction && (\n <button\n type=\"button\"\n className=\"bs-action-primary\"\n onClick={primaryAction.onClick}\n >\n {primaryAction.label}\n </button>\n )}\n {secondaryAction && (\n <button\n type=\"button\"\n className=\"bs-action-secondary\"\n onClick={secondaryAction.onClick}\n >\n {secondaryAction.label}\n </button>\n )}\n </div>\n )}\n </div>\n </div>,\n document.body\n );\n};\n\nexport default BottomSheet;\n","import { useEffect, useRef, useState } from \"react\";\nimport type { ChipDropdownProps } from \"./ChipDropdown.types\";\nimport { BottomSheet } from \"../BottomSheet\";\nimport \"./ChipDropdown.css\";\n\nconst ChevronDownIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M3 6l5 5 5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst CheckIcon = () => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M2 6l3 3 5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const ChipDropdown = ({\n size = \"md\",\n label,\n tag,\n icon,\n options,\n value,\n onChange,\n disabled = false,\n className,\n ...props\n}: ChipDropdownProps) => {\n const [open, setOpen] = useState(false);\n const [isMobile, setIsMobile] = useState(\n () => typeof window !== \"undefined\" && window.matchMedia(\"(max-width: 767px)\").matches\n );\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const selectedOption = options.find((o) => o.value === value) ?? null;\n const displayLabel = selectedOption ? selectedOption.label : label;\n const isSelected = selectedOption !== null;\n\n // Track mobile breakpoint reactively\n useEffect(() => {\n const mq = window.matchMedia(\"(max-width: 767px)\");\n const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches);\n mq.addEventListener(\"change\", handler);\n return () => mq.removeEventListener(\"change\", handler);\n }, []);\n\n // Close desktop dropdown on outside click\n useEffect(() => {\n if (!open || isMobile) return;\n const handleClickOutside = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [open, isMobile]);\n\n const triggerClassNames = [\n \"cd-trigger\",\n size,\n isSelected ? \"selected\" : \"\",\n open ? \"expand\" : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n\n const handleSelect = (optionValue: string) => {\n onChange?.(optionValue);\n setOpen(false);\n };\n\n const optionList = options.map((option) => {\n const isActive = option.value === value;\n return (\n <li\n key={option.value}\n role=\"option\"\n aria-selected={isActive}\n className={[\"cd-item\", isActive ? \"itemSelected\" : \"\"].filter(Boolean).join(\" \")}\n onClick={() => handleSelect(option.value)}\n >\n <span className=\"cd-itemLabel\">{option.label}</span>\n {isActive && (\n <span className=\"cd-itemCheck\">\n <CheckIcon />\n </span>\n )}\n </li>\n );\n });\n\n return (\n <div ref={wrapperRef} className=\"cd-wrapper\">\n <button\n type=\"button\"\n className={triggerClassNames}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n onClick={() => setOpen((prev) => !prev)}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {icon && <span className=\"cd-icon\">{icon}</span>}\n <span className=\"cd-label\">{displayLabel}</span>\n {tag && <span className=\"cd-tag\">{tag}</span>}\n <span\n className={[\"cd-chevron\", open ? \"chevronOpen\" : \"\"].filter(Boolean).join(\" \")}\n aria-hidden=\"true\"\n >\n <ChevronDownIcon />\n </span>\n </button>\n\n {/* Desktop: inline dropdown list */}\n {!isMobile && open && (\n <ul role=\"listbox\" aria-label={label} className=\"cd-list\">\n {optionList}\n </ul>\n )}\n\n {/* Mobile: bottom sheet */}\n {isMobile && (\n <BottomSheet\n open={open}\n onClose={() => setOpen(false)}\n title={label}\n showHandleBar\n showHeader\n >\n <ul role=\"listbox\" aria-label={label} className=\"cd-list cd-list--sheet\">\n {optionList}\n </ul>\n </BottomSheet>\n )}\n </div>\n );\n};\n\nexport default ChipDropdown;\n","import type { CardProps } from \"./Card.types\";\nimport { Link } from \"../../primitives/Link\";\nimport \"./CardPrimaryVariant.css\";\n\ntype PrimaryProps = Extract<CardProps, { variant: \"primary\" }>;\n\nexport const CardPrimaryVariant = ({\n colorScheme = \"light\",\n title,\n description,\n image,\n imageAlt = \"\",\n showLink = true,\n linkText = \"Learn more\",\n onLinkClick,\n className,\n variant: _variant,\n ...props\n}: PrimaryProps) => {\n const isInverse = colorScheme === \"dark\" || colorScheme === \"brand\" || colorScheme === \"image\";\n\n return (\n <div\n className={[\n \"card-primary\",\n `style--${colorScheme}`,\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n {/* ── Full-bleed image overlay (image colorScheme only) ─── */}\n {colorScheme === \"image\" && image && (\n <div aria-hidden=\"true\" className=\"cp-imageOverlay\">\n <img alt=\"\" className=\"cp-overlayImg\" src={image} />\n <div className=\"cp-gradient\" />\n </div>\n )}\n\n {/* ── Content ──────────────────────────────────────── */}\n <div className=\"cp-content\">\n <p className={[\"cp-title\", isInverse ? \"textInverse\" : \"textDefault\"].join(\" \")}>\n {title}\n </p>\n <p className={[\"cp-description\", isInverse ? \"textInverse\" : \"textDefault\"].join(\" \")}>\n {description}\n </p>\n {showLink && (\n <Link\n colorScheme={isInverse ? \"white\" : \"coral\"}\n label={linkText}\n onClick={onLinkClick}\n />\n )}\n </div>\n\n {/* ── Image section (light / dark / brand colorSchemes) ── */}\n {colorScheme !== \"image\" && image && (\n <div className=\"cp-imageSection\">\n <img alt={imageAlt} className=\"cp-image\" src={image} />\n </div>\n )}\n </div>\n );\n};\n","import type { CardProps } from \"./Card.types\";\nimport { Link } from \"../../primitives/Link\";\nimport \"./CardSecondaryVariant.css\";\n\ntype SecondaryProps = Extract<CardProps, { variant: \"secondary\" }>;\n\nexport const CardSecondaryVariant = ({\n title,\n description,\n icon,\n showIcon = true,\n showLink = true,\n linkText = \"Learn more\",\n onLinkClick,\n className,\n variant: _variant,\n ...props\n}: SecondaryProps) => {\n return (\n <div\n className={[\"card-secondary\", className ?? \"\"].filter(Boolean).join(\" \")}\n {...props}\n >\n {showIcon && icon && <span className=\"cs-icon\">{icon}</span>}\n\n <p className=\"cs-title\">{title}</p>\n\n <p className=\"cs-description\">{description}</p>\n\n {showLink && (\n <Link\n colorScheme=\"coral\"\n label={linkText}\n onClick={onLinkClick}\n />\n )}\n </div>\n );\n};\n","import type { CardProps } from \"./Card.types\";\nimport { Tag } from \"../../primitives/Tag\";\nimport \"./CardThumbnailVariant.css\";\n\nconst LinkIcon = () => (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n width=\"14\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.25 2.625H3.5A1.75 1.75 0 0 0 1.75 4.375v5.25A1.75 1.75 0 0 0 3.5 11.375h5.25a1.75 1.75 0 0 0 1.75-1.75V7.875\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.25\"\n />\n <path\n d=\"M7.875 1.75h4.375v4.375M12.25 1.75 6.125 7.875\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.25\"\n />\n </svg>\n);\n\nconst PlayIcon = () => (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"80\"\n viewBox=\"0 0 80 80\"\n width=\"80\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"40\" cy=\"40\" fill=\"rgba(255,255,255,0.88)\" r=\"40\" />\n <path d=\"M32 27l22 13-22 13V27z\" fill=\"rgba(24,28,37,0.72)\" />\n </svg>\n);\n\ntype ThumbnailProps = Extract<CardProps, { variant: \"thumbnail\" }>;\n\nexport const CardThumbnailVariant = ({\n type = \"video\",\n thumbnail,\n thumbnailAlt = \"\",\n title,\n summary,\n tags = [],\n hideTags = false,\n showCopyLink = true,\n onCopyLink,\n avatar,\n avatarAlt = \"\",\n className,\n variant: _variant,\n ...props\n}: ThumbnailProps) => {\n const isVideo = type === \"video\";\n\n return (\n <div\n className={[\"card-thumbnail\", className ?? \"\"].filter(Boolean).join(\" \")}\n {...props}\n >\n {/* ── Thumbnail ──────────────────────────────────── */}\n <div className=\"ct-thumbnailWrapper\">\n <img alt={thumbnailAlt} className=\"ct-thumbnailImage\" src={thumbnail} />\n {isVideo && (\n <span aria-label=\"Play video\" className=\"ct-playButton\">\n <PlayIcon />\n </span>\n )}\n {!isVideo && avatar && (\n <img alt={avatarAlt} className=\"ct-avatar\" src={avatar} />\n )}\n </div>\n\n {/* ── Content ────────────────────────────────────── */}\n <div className=\"ct-content\">\n <div className=\"ct-metaRow\">\n {!hideTags && (\n <div className=\"ct-tagsList\">\n {tags.map((tag, i) => (\n <Tag key={i} icon={tag.icon} label={tag.label} size=\"md\" variant=\"fill\" />\n ))}\n </div>\n )}\n {showCopyLink && (\n <button\n aria-label=\"Copy link\"\n className=\"ct-copyLink\"\n onClick={onCopyLink}\n type=\"button\"\n >\n <LinkIcon />\n </button>\n )}\n </div>\n <p className=\"ct-title\">{title}</p>\n <p className=\"ct-summary\">{summary}</p>\n </div>\n </div>\n );\n};\n","import type { CardProps } from \"./Card.types\";\nimport { CardPrimaryVariant } from \"./CardPrimaryVariant\";\nimport { CardSecondaryVariant } from \"./CardSecondaryVariant\";\nimport { CardThumbnailVariant } from \"./CardThumbnailVariant\";\n\nexport const Card = (props: CardProps) => {\n if (props.variant === \"primary\") {\n return <CardPrimaryVariant {...props} />;\n }\n if (props.variant === \"secondary\") {\n return <CardSecondaryVariant {...props} />;\n }\n return <CardThumbnailVariant {...props} />;\n};\n\nexport default Card;\n","import type { PaginationProps } from \"./Pagination.types\";\nimport \"./Pagination.css\";\n\nconst ChevronLeft = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M10 12L6 8L10 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst ChevronRight = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M6 4L10 8L6 12\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\ntype PageItem = number | \"ellipsis-left\" | \"ellipsis-right\";\n\nfunction getPageItems(currentPage: number, totalPages: number): PageItem[] {\n if (totalPages <= 5) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n if (currentPage <= 3) {\n return [1, 2, 3, 4, 5, \"ellipsis-right\", totalPages];\n }\n if (currentPage >= totalPages - 2) {\n return [1, \"ellipsis-left\", totalPages - 4, totalPages - 3, totalPages - 2, totalPages - 1, totalPages];\n }\n return [1, \"ellipsis-left\", currentPage - 1, currentPage, currentPage + 1, \"ellipsis-right\", totalPages];\n}\n\nexport const Pagination = ({\n currentPage,\n totalPages,\n onPageChange,\n className,\n}: PaginationProps) => {\n const items = getPageItems(currentPage, totalPages);\n const isPrevDisabled = currentPage <= 1;\n const isNextDisabled = currentPage >= totalPages;\n\n return (\n <nav\n className={[\"pagination\", className ?? \"\"].filter(Boolean).join(\" \")}\n aria-label=\"Pagination navigation\"\n >\n <button\n className={[\"navButton\", isPrevDisabled ? \"navButtonDisabled\" : \"\"].filter(Boolean).join(\" \")}\n onClick={() => onPageChange(currentPage - 1)}\n disabled={isPrevDisabled}\n aria-label=\"Previous page\"\n >\n <span className=\"navIcon\"><ChevronLeft /></span>\n </button>\n\n {items.map((item, index) => {\n if (item === \"ellipsis-left\" || item === \"ellipsis-right\") {\n return (\n <span\n key={`${item}-${index}`}\n className=\"ellipsis\"\n aria-hidden=\"true\"\n >\n …\n </span>\n );\n }\n\n const isSelected = item === currentPage;\n return (\n <button\n key={item}\n className={[\"pageButton\", isSelected ? \"pageButtonSelected\" : \"\"].filter(Boolean).join(\" \")}\n onClick={() => { if (!isSelected) onPageChange(item); }}\n aria-current={isSelected ? \"page\" : undefined}\n aria-label={`Page ${item}`}\n >\n {item}\n </button>\n );\n })}\n\n <button\n className={[\"navButton\", isNextDisabled ? \"navButtonDisabled\" : \"\"].filter(Boolean).join(\" \")}\n onClick={() => onPageChange(currentPage + 1)}\n disabled={isNextDisabled}\n aria-label=\"Next page\"\n >\n <span className=\"navIcon\"><ChevronRight /></span>\n </button>\n </nav>\n );\n};\n\nexport default Pagination;\n","import { Card } from \"../../components/Card\";\nimport { Link } from \"../../primitives/Link\";\nimport type { FeatureCardsProps } from \"./FeatureCards.types\";\nimport \"./FeatureCards.css\";\n\nexport const FeatureCards = ({\n sectionTitle,\n sectionDescription,\n showLink = false,\n linkText = \"Learn more\",\n onLinkClick,\n cardColorScheme = \"image\",\n cards,\n}: FeatureCardsProps) => {\n return (\n <section className=\"fc-section\">\n <div className=\"fc-container\">\n <div className=\"fc-header\">\n <h2 className=\"fc-sectionTitle\">{sectionTitle}</h2>\n\n {sectionDescription && (\n <p className=\"fc-sectionDescription\">{sectionDescription}</p>\n )}\n\n {showLink && (\n <Link\n colorScheme=\"coral\"\n label={linkText}\n onClick={onLinkClick}\n />\n )}\n </div>\n\n <div className=\"fc-grid\">\n {cards.map((card, index) => (\n <Card\n key={index}\n variant=\"primary\"\n colorScheme={card.colorScheme ?? cardColorScheme}\n title={card.title}\n description={card.description}\n image={card.image}\n imageAlt={card.imageAlt}\n showLink={card.showLink}\n linkText={card.linkText}\n onLinkClick={card.onLinkClick}\n />\n ))}\n </div>\n </div>\n </section>\n );\n};\n","import { useState } from \"react\";\nimport type { FooterProps, FooterDerivGoProps } from \"./Footer.types\";\nimport \"./Footer.css\";\n\n/* ── Internal icons ───────────────────────────────────────────── */\n\nconst ExternalLinkIcon = () => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path\n d=\"M2 2H10M10 2V10M10 2L2 10\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst ChevronDownIcon = () => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path\n d=\"M2 4L6 8L10 4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n/* ── Deriv GO shared content ──────────────────────────────────── */\n\ninterface DerivGoBadgesProps {\n googlePlayBadge?: FooterDerivGoProps[\"googlePlayBadge\"];\n appStoreBadge?: FooterDerivGoProps[\"appStoreBadge\"];\n huaweiBadge?: FooterDerivGoProps[\"huaweiBadge\"];\n availabilityNote?: string;\n}\n\nconst DerivGoBadges = ({\n googlePlayBadge,\n appStoreBadge,\n huaweiBadge,\n availabilityNote,\n}: DerivGoBadgesProps) => (\n <div className=\"footer__app-badges\">\n {googlePlayBadge && (\n <a\n href={googlePlayBadge.href}\n className={googlePlayBadge.icon ? \"footer__app-badge-svg\" : \"footer__app-badge\"}\n aria-label={googlePlayBadge.imageAlt}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {googlePlayBadge.icon ?? <img src={googlePlayBadge.imageSrc} alt={googlePlayBadge.imageAlt} />}\n </a>\n )}\n {appStoreBadge && (\n <a\n href={appStoreBadge.href}\n className={appStoreBadge.icon ? \"footer__app-badge-svg\" : \"footer__app-badge\"}\n aria-label={appStoreBadge.imageAlt}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {appStoreBadge.icon ?? <img src={appStoreBadge.imageSrc} alt={appStoreBadge.imageAlt} />}\n </a>\n )}\n {huaweiBadge && (\n <a\n href={huaweiBadge.href}\n className={huaweiBadge.icon ? \"footer__app-badge-svg\" : \"footer__app-badge\"}\n aria-label={huaweiBadge.imageAlt}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {huaweiBadge.icon ?? <img src={huaweiBadge.imageSrc} alt={huaweiBadge.imageAlt} />}\n </a>\n )}\n {availabilityNote && (\n <p className=\"footer__app-note\">{availabilityNote}</p>\n )}\n </div>\n);\n\n/* ── Nav link ─────────────────────────────────────────────────── */\n\ninterface NavLinkProps {\n label: string;\n href?: string;\n isExternal?: boolean;\n onClick?: () => void;\n}\n\nconst NavLink = ({ label, href, isExternal, onClick }: NavLinkProps) => (\n <a\n href={href}\n className=\"footer__nav-link\"\n onClick={onClick}\n {...(isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n >\n {label}\n {isExternal && <ExternalLinkIcon />}\n </a>\n);\n\n/* ── Footer ───────────────────────────────────────────────────── */\n\nexport const Footer = ({\n logoSrc,\n logoAlt = \"Deriv\",\n navColumns,\n socialLinks = [],\n derivGo,\n investorsInPeopleSrc,\n investorsInPeopleAlt = \"Investors in People - Platinum\",\n licenseText,\n riskWarningText,\n aiSummary,\n className,\n ...props\n}: FooterProps) => {\n // Flatten all nav sections for the mobile/tablet accordion\n const allSections = navColumns.flat();\n\n const [openSections, setOpenSections] = useState<Set<number>>(new Set());\n\n const toggleSection = (index: number) => {\n setOpenSections((prev) => {\n const next = new Set(prev);\n if (next.has(index)) {\n next.delete(index);\n } else {\n next.add(index);\n }\n return next;\n });\n };\n\n const aiLabel = aiSummary?.label ?? \"Ask AI for a summary of Deriv\";\n\n return (\n <footer\n className={[\"footer\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n <div className=\"footer__inner\">\n\n {/* ── HEADER ROW: Logo · [AI bar — desktop] · Social icons ── */}\n <div className=\"footer__header\">\n <div className=\"footer__logo-wrapper\">\n <img\n src={logoSrc}\n alt={logoAlt}\n className=\"footer__logo\"\n />\n </div>\n\n {/* AI summary bar — visible only on desktop, inline in header */}\n {aiSummary && (\n <div className=\"footer__ai-bar footer__ai-bar--inline\">\n <span className=\"footer__ai-bar-label\">{aiLabel}</span>\n <div className=\"footer__ai-bar-icons\">\n {aiSummary.items.map((item, i) => (\n <a\n key={i}\n href={item.href}\n className=\"footer__ai-icon\"\n aria-label={item.imageAlt}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={item.imageSrc} alt={item.imageAlt} />\n </a>\n ))}\n </div>\n </div>\n )}\n\n <div className=\"footer__social footer__social--in-header\">\n {socialLinks.map((link, i) => (\n <a\n key={i}\n href={link.href}\n className=\"footer__social-icon\"\n aria-label={link.ariaLabel}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {link.icon}\n </a>\n ))}\n </div>\n </div>\n\n {/* ── AI SUMMARY BAR — mobile only (standalone card) ── */}\n {aiSummary && (\n <div className=\"footer__ai-section\">\n <div className=\"footer__ai-bar footer__ai-bar--block\">\n <span className=\"footer__ai-bar-label\">{aiLabel}</span>\n <div className=\"footer__ai-bar-icons\">\n {aiSummary.items.map((item, i) => (\n <a\n key={i}\n href={item.href}\n className=\"footer__ai-icon\"\n aria-label={item.imageAlt}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={item.imageSrc} alt={item.imageAlt} />\n </a>\n ))}\n </div>\n </div>\n </div>\n )}\n\n {/* ── NAVIGATION — Desktop: multi-column grid + sidebar ── */}\n <div className=\"footer__nav footer__nav--columns\">\n {navColumns.map((column, colIdx) => (\n <div key={colIdx} className=\"footer__column\">\n {column.map((section, secIdx) => (\n <div key={secIdx} className=\"footer__nav-section\">\n <p className=\"footer__nav-title\">{section.title}</p>\n <ul className=\"footer__nav-links\">\n {section.links.map((link, linkIdx) => (\n <li key={linkIdx}>\n <NavLink {...link} />\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n ))}\n\n {/* Desktop sidebar: Investors in People + Deriv GO with QR */}\n <div className=\"footer__sidebar\">\n {investorsInPeopleSrc && (\n <div className=\"footer__investors-card\">\n <img\n src={investorsInPeopleSrc}\n alt={investorsInPeopleAlt}\n className=\"footer__investors-img\"\n />\n </div>\n )}\n\n {derivGo && (\n <div className=\"footer__deriv-go-card\">\n <div className=\"footer__deriv-go-header\">\n <img\n src={derivGo.logoSrc}\n alt={derivGo.logoAlt ?? \"Deriv GO\"}\n className=\"footer__deriv-go-logo\"\n />\n <span className=\"footer__deriv-go-title\">\n {derivGo.title ?? \"Deriv GO\"}\n </span>\n </div>\n <p className=\"footer__deriv-go-desc\">\n {derivGo.description ?? \"Trade multipliers on our mobile app.\"}\n </p>\n {(derivGo.qrCodeSrc || derivGo.qrCodeIcon) && (\n <div className=\"footer__deriv-go-qr\">\n {derivGo.qrCodeIcon ? (\n <div className=\"footer__deriv-go-qr-icon\">\n {derivGo.qrCodeIcon}\n </div>\n ) : (\n <img\n src={derivGo.qrCodeSrc}\n alt={derivGo.qrCodeAlt ?? \"Scan to download\"}\n className=\"footer__deriv-go-qr-img\"\n />\n )}\n <span className=\"footer__deriv-go-qr-label\">\n Scan to download\n </span>\n </div>\n )}\n <DerivGoBadges\n googlePlayBadge={derivGo.googlePlayBadge}\n appStoreBadge={derivGo.appStoreBadge}\n huaweiBadge={derivGo.huaweiBadge}\n availabilityNote={derivGo.availabilityNote}\n />\n </div>\n )}\n </div>\n </div>\n\n {/* ── NAVIGATION — Mobile/Tablet: accordion ── */}\n <div className=\"footer__nav footer__nav--accordion\">\n {allSections.map((section, idx) => {\n const isOpen = openSections.has(idx);\n return (\n <div\n key={idx}\n className={[\n \"footer__accordion-item\",\n isOpen && \"footer__accordion-item--open\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <button\n type=\"button\"\n className=\"footer__accordion-toggle\"\n onClick={() => toggleSection(idx)}\n aria-expanded={isOpen}\n >\n <span className=\"footer__accordion-label\">\n {section.title}\n </span>\n <span className=\"footer__accordion-chevron\">\n <ChevronDownIcon />\n </span>\n </button>\n {isOpen && (\n <ul className=\"footer__accordion-links\">\n {section.links.map((link, linkIdx) => (\n <li key={linkIdx}>\n <NavLink {...link} />\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n })}\n </div>\n\n {/* ── SOCIAL ICONS — Mobile only (standalone, above Deriv GO) ── */}\n {socialLinks.length > 0 && (\n <div className=\"footer__social footer__social--standalone\">\n {socialLinks.map((link, i) => (\n <a\n key={i}\n href={link.href}\n className=\"footer__social-icon\"\n aria-label={link.ariaLabel}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {link.icon}\n </a>\n ))}\n </div>\n )}\n\n {/* ── DERIV GO BANNER — Mobile/Tablet stacked (no QR) ── */}\n {derivGo && (\n <div className=\"footer__deriv-go-banner\">\n <div className=\"footer__deriv-go-banner-info\">\n <div className=\"footer__deriv-go-header\">\n <img\n src={derivGo.logoSrc}\n alt={derivGo.logoAlt ?? \"Deriv GO\"}\n className=\"footer__deriv-go-logo\"\n />\n <span className=\"footer__deriv-go-title\">\n {derivGo.title ?? \"Deriv GO\"}\n </span>\n </div>\n <p className=\"footer__deriv-go-desc\">\n {derivGo.description ?? \"Trade multipliers on our mobile app.\"}\n </p>\n </div>\n <div className=\"footer__deriv-go-banner-badges\">\n <DerivGoBadges\n googlePlayBadge={derivGo.googlePlayBadge}\n appStoreBadge={derivGo.appStoreBadge}\n huaweiBadge={derivGo.huaweiBadge}\n availabilityNote={derivGo.availabilityNote}\n />\n </div>\n </div>\n )}\n\n {/* ── LEGAL & RISK WARNING ── */}\n {(licenseText || riskWarningText) && (\n <div className=\"footer__legal-block\">\n {licenseText && (\n <div className=\"footer__license\">{licenseText}</div>\n )}\n {riskWarningText && (\n <div className=\"footer__risk-warning\">\n <p className=\"footer__risk-warning-text\">{riskWarningText}</p>\n </div>\n )}\n </div>\n )}\n\n {/* ── INVESTORS IN PEOPLE — Mobile/Tablet (centred) ── */}\n {investorsInPeopleSrc && (\n <div className=\"footer__investors-stacked\">\n <img\n src={investorsInPeopleSrc}\n alt={investorsInPeopleAlt}\n className=\"footer__investors-img\"\n />\n </div>\n )}\n </div>\n </footer>\n );\n};\n\nexport default Footer;\n","import type { HeroProps } from \"./Hero.types\";\nimport { Button } from \"../../primitives/Button\";\nimport \"./Hero.css\";\n\n/* ── Helpers ──────────────────────────────────────────────── */\n\n/** Renders a ReactNode or a plain string as an <img> */\nconst Visual = ({\n src,\n className,\n alt = \"\",\n}: {\n src: React.ReactNode | string;\n className: string;\n alt?: string;\n}) => (\n <div className={className}>\n {typeof src === \"string\" ? (\n <img src={src} alt={alt} />\n ) : (\n src\n )}\n </div>\n);\n\n/* ── Hero ─────────────────────────────────────────────────── */\n\nexport const Hero = ({\n variant,\n subtitle,\n title,\n description,\n primaryButton,\n secondaryButton,\n backgroundImageSrc,\n heroImage,\n leftVisual,\n rightVisual,\n className,\n ...props\n}: HeroProps) => {\n const variantClass = `hero--${variant}`;\n\n /* ── Shared text block ── */\n const textBlock = (\n <div className=\"hero__text\">\n {subtitle && <p className=\"hero__subtitle\">{subtitle}</p>}\n <p className=\"hero__title\">{title}</p>\n {description && <p className=\"hero__description\">{description}</p>}\n </div>\n );\n\n /* ── Shared button block ── */\n const buttonBlock = (primaryButton || secondaryButton) && (\n <div className=\"hero__buttons\">\n {primaryButton && (\n primaryButton.href ? (\n <a href={primaryButton.href}>\n <Button\n colorScheme=\"coral\"\n variant=\"primary\"\n label={primaryButton.label}\n onClick={primaryButton.onClick}\n />\n </a>\n ) : (\n <Button\n colorScheme=\"coral\"\n variant=\"primary\"\n label={primaryButton.label}\n onClick={primaryButton.onClick}\n />\n )\n )}\n {secondaryButton && (\n secondaryButton.href ? (\n <a href={secondaryButton.href}>\n <Button\n colorScheme=\"white\"\n variant=\"secondary\"\n label={secondaryButton.label}\n onClick={secondaryButton.onClick}\n />\n </a>\n ) : (\n <Button\n colorScheme=\"white\"\n variant=\"secondary\"\n label={secondaryButton.label}\n onClick={secondaryButton.onClick}\n />\n )\n )}\n </div>\n );\n\n /* ── Homepage ── */\n if (variant === \"homepage\") {\n return (\n <section\n className={[\"hero\", variantClass, className].filter(Boolean).join(\" \")}\n {...props}\n >\n {/* Layer 1: full-bleed background photo */}\n {backgroundImageSrc && (\n <img\n src={backgroundImageSrc}\n alt=\"\"\n className=\"hero__bg-image\"\n aria-hidden=\"true\"\n />\n )}\n {/* Layer 2: transparent PNG — direct child of section for correct z-index */}\n {heroImage && (\n <Visual\n src={heroImage}\n className=\"hero__image-slot\"\n alt=\"\"\n />\n )}\n {/* Layer 3: gradient overlay */}\n <div className=\"hero__overlay\" aria-hidden=\"true\" />\n {/* Layer 4: text + buttons */}\n <div className=\"hero__inner\">\n <div className=\"hero__content\">\n <div className=\"hero__left\">\n <div className=\"hero__body\">\n {textBlock}\n {buttonBlock}\n </div>\n </div>\n </div>\n </div>\n </section>\n );\n }\n\n /* ── Full Image ── */\n if (variant === \"full-image\") {\n return (\n <section\n className={[\"hero\", variantClass, className].filter(Boolean).join(\" \")}\n {...props}\n >\n {backgroundImageSrc && (\n <img\n src={backgroundImageSrc}\n alt=\"\"\n className=\"hero__bg-image\"\n aria-hidden=\"true\"\n />\n )}\n <div className=\"hero__overlay\" aria-hidden=\"true\" />\n <div className=\"hero__inner\">\n <div className=\"hero__content\">\n <div className=\"hero__body\">\n {textBlock}\n {buttonBlock}\n </div>\n </div>\n </div>\n </section>\n );\n }\n\n /* ── Visuals / Text Only ── */\n return (\n <section\n className={[\"hero\", variantClass, className].filter(Boolean).join(\" \")}\n {...props}\n >\n {/* Layer 1: grid pattern */}\n <div className=\"hero__grid\" aria-hidden=\"true\" />\n {/* Layer 2: floating visuals — direct children so z-index is below text */}\n {variant === \"visuals\" && leftVisual && (\n <Visual\n src={leftVisual}\n className=\"hero__visual hero__visual--left\"\n alt=\"\"\n />\n )}\n {variant === \"visuals\" && rightVisual && (\n <Visual\n src={rightVisual}\n className=\"hero__visual hero__visual--right\"\n alt=\"\"\n />\n )}\n {/* Layer 3: overlay fades the visuals at edges */}\n <div className=\"hero__overlay\" aria-hidden=\"true\" />\n {/* Layer 4: text + button always on top */}\n <div className=\"hero__inner\">\n <div className=\"hero__content\">\n <div className=\"hero__body\">\n {textBlock}\n {buttonBlock}\n </div>\n </div>\n </div>\n </section>\n );\n};\n\nexport default Hero;\n","import { useEffect, useRef, useState } from \"react\";\nimport type { CSSProperties } from \"react\";\nimport type { AwardItem, StatsProps } from \"./Stats.types\";\nimport \"./Stats.css\";\n\n/* ── Constants ────────────────────────────────────────────── */\n\nconst INTERVAL_MS = 2000;\nconst TRANSITION = \"transform 0.8s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1)\";\n\n/* ── Carousel helpers ─────────────────────────────────────── */\n\n/**\n * Returns a signed relative position:\n * 0 → active (centre)\n * -1 → one slot above\n * +1 → one slot below\n * ±2+ → off-screen (hidden)\n */\nfunction relativePos(index: number, active: number, total: number): number {\n const raw = ((index - active) % total + total) % total;\n return raw > total / 2 ? raw - total : raw;\n}\n\nfunction getStatStyle(rel: number): CSSProperties {\n if (rel === 0) {\n return { transform: \"translateY(-50%) scale(1)\", opacity: 1, zIndex: 2, transition: TRANSITION };\n }\n if (rel === -1) {\n return { transform: \"translateY(calc(-50% - 110%)) scale(0.7)\", opacity: 1, zIndex: 1, transition: TRANSITION };\n }\n if (rel === 1) {\n return { transform: \"translateY(calc(-50% + 110%)) scale(0.7)\", opacity: 1, zIndex: 1, transition: TRANSITION };\n }\n return {\n transform: rel < 0\n ? \"translateY(calc(-50% - 110%)) scale(0.4)\"\n : \"translateY(calc(-50% + 110%)) scale(0.4)\",\n opacity: 0, zIndex: 0, transition: TRANSITION,\n };\n}\n\n/* ── Award Badge ──────────────────────────────────────────── */\n\nconst AwardBadge = ({ imageSrc, imageAlt = \"\" }: AwardItem) => (\n <div className=\"stats__award\">\n <img src={imageSrc} alt={imageAlt} className=\"stats__award-image\" />\n </div>\n);\n\n/* ── Stats ────────────────────────────────────────────────── */\n\nexport const Stats = ({\n title,\n description,\n stats,\n leftAwards = [],\n rightAwards = [],\n className,\n ...props\n}: StatsProps) => {\n const [activeIndex, setActiveIndex] = useState(0);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n const hasAwards = leftAwards.length > 0 || rightAwards.length > 0;\n const allAwards: AwardItem[] = [...leftAwards, ...rightAwards];\n const total = stats.length;\n\n useEffect(() => {\n if (total <= 1) return;\n intervalRef.current = setInterval(() => {\n setActiveIndex(prev => (prev + 1) % total);\n }, INTERVAL_MS);\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current);\n };\n }, [total]);\n\n return (\n <section\n className={[\"stats\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n <div className=\"stats__inner\">\n {/* ── Header ── */}\n <div className=\"stats__header\">\n <h2 className=\"stats__title\">{title}</h2>\n {description && (\n <p className=\"stats__description\">{description}</p>\n )}\n </div>\n\n {/* ── Content row ── */}\n <div className=\"stats__content\">\n {/* Left award images — desktop only */}\n {leftAwards.length > 0 && (\n <div className=\"stats__awards-col stats__awards-col--left\">\n {leftAwards.map((award, i) => (\n <AwardBadge key={i} {...award} />\n ))}\n </div>\n )}\n\n {/* Centre stats card */}\n <div className=\"stats__card\">\n <div className=\"stats__card-track\">\n <div className=\"stats__fade stats__fade--top\" aria-hidden=\"true\" />\n <div className=\"stats__fade stats__fade--bottom\" aria-hidden=\"true\" />\n {stats.map((stat, i) => {\n const rel = relativePos(i, activeIndex, total);\n const active = rel === 0;\n return (\n <div\n key={i}\n className={[\n \"stats__stat\",\n active ? \"stats__stat--active\" : \"stats__stat--inactive\",\n ].join(\" \")}\n style={getStatStyle(rel)}\n aria-hidden={!active}\n >\n <span className=\"stats__stat-value\">{stat.value}</span>\n <span className=\"stats__stat-label\">{stat.label}</span>\n </div>\n );\n })}\n </div>\n </div>\n\n {/* Right award images — desktop only */}\n {rightAwards.length > 0 && (\n <div className=\"stats__awards-col stats__awards-col--right\">\n {rightAwards.map((award, i) => (\n <AwardBadge key={i} {...award} />\n ))}\n </div>\n )}\n\n {/* Awards grid — mobile only; lives inside stats__content so it\n inherits the 32px column gap from the card above it */}\n {hasAwards && (\n <div className=\"stats__awards-mobile\">\n {allAwards.map((award, i) => (\n <AwardBadge key={i} {...award} />\n ))}\n </div>\n )}\n </div>\n </div>\n </section>\n );\n};\n\nexport default Stats;\n","import { useEffect, useRef, useState } from \"react\";\nimport { DotLottieReact } from \"@lottiefiles/dotlottie-react\";\nimport type { ScrollytellingItem, ScrollytellingProps } from \"./Scrollytelling.types\";\nimport \"./Scrollytelling.css\";\n\n/* ── Default data ──────────────────────────────────────────── */\n\nexport const SCROLLYTELLING_DATA: ScrollytellingItem[] = [\n {\n title: \"Forex\",\n description: \"Trade the most popular currency pairs with high leverage, tight spreads, and fast execution.\",\n linkLabel: \"Learn more\",\n link: \"/markets/forex\",\n mediaUrl: \"https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a906489e5aadf94e501c4_Forex.lottie\",\n },\n {\n title: \"Derived Indices\",\n description: \"Trade 24/7 on exclusive Synthetic and Derived Indices. Choose volatility levels that match your strategy.\",\n linkLabel: \"Learn more\",\n link: \"/markets/derived-indices/synthetic-indices\",\n mediaUrl: \"https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a9064588b0d2709e7ceac_Derived%20Indices.lottie\",\n },\n {\n title: \"Stocks\",\n description: \"Trade global market leaders like Apple, Tesla, and NVIDIA.\",\n linkLabel: \"Learn more\",\n link: \"/markets/stocks\",\n mediaUrl: \"https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a9064892f97175b724a9c_Stocks.lottie\",\n },\n {\n title: \"Commodities\",\n description: \"Trade gold, silver, oil, natural gas, sugar, and more.\",\n linkLabel: \"Learn more\",\n link: \"/markets/commodities\",\n mediaUrl: \"https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a9064edd96a014a6092cf_Commodities.lottie\",\n },\n {\n title: \"Cryptos\",\n description: \"Trade round the clock on the volatility of cryptocurrencies like Bitcoin and Ethereum.\",\n linkLabel: \"Learn more\",\n link: \"/markets/cryptocurrencies\",\n mediaUrl: \"https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a90647b8d9652a28b94e3_Crypto.lottie\",\n },\n {\n title: \"Stock Indices\",\n description: \"Trade offerings that track the top global stock indices.\",\n linkLabel: \"Learn more\",\n link: \"/markets/stock-indices\",\n mediaUrl: \"https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a9064f2c16e4e0732abfb_Stock%20Indices.lottie\",\n },\n];\n\n/* ── Chevron SVG icon ──────────────────────────────────────── */\n\nconst ChevronRight = () => (\n <svg\n className=\"scrolly__item-link-icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M6 3l5 5-5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n/* ── Media renderer ────────────────────────────────────────── */\n\nfunction resolveMediaType(item: ScrollytellingItem): \"lottie\" | \"image\" {\n if (item.mediaType) return item.mediaType;\n return item.mediaUrl.split(\"?\")[0].endsWith(\".lottie\") ? \"lottie\" : \"image\";\n}\n\ninterface MediaRendererProps {\n item: ScrollytellingItem;\n active: boolean;\n}\n\nconst MediaRenderer = ({ item, active }: MediaRendererProps) => {\n if (resolveMediaType(item) === \"lottie\") {\n return (\n <DotLottieReact\n src={item.mediaUrl}\n loop\n autoplay={active}\n />\n );\n }\n return (\n <img\n src={item.mediaUrl}\n alt={item.title}\n loading=\"lazy\"\n />\n );\n};\n\n/* ── Scrollytelling ────────────────────────────────────────── */\n\nexport const Scrollytelling = ({\n header,\n items,\n variant = \"media-right\",\n className,\n ...props\n}: ScrollytellingProps) => {\n const [activeIndex, setActiveIndex] = useState(0);\n const itemRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n /* IntersectionObserver — fires when a desktop text block\n enters the viewport, updating which media is shown. */\n useEffect(() => {\n const elements = itemRefs.current.filter(Boolean) as HTMLDivElement[];\n if (!elements.length) return;\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const idx = itemRefs.current.indexOf(\n entry.target as HTMLDivElement\n );\n if (idx !== -1) setActiveIndex(idx);\n }\n });\n },\n {\n /* Fire when 50 % of the text block is visible.\n rootMargin trims the effective viewport to its\n middle third, preventing accidental fires when\n items are only just entering / leaving the screen. */\n threshold: 0.5,\n rootMargin: \"-15% 0px -15% 0px\",\n }\n );\n\n elements.forEach((el) => observer.observe(el));\n return () => observer.disconnect();\n }, [items.length]);\n\n const rootClass = [\n \"scrolly\",\n `scrolly--${variant}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <section className={rootClass} {...props}>\n <div className=\"scrolly__inner\">\n\n {/* ── Section header ── */}\n <h2 className=\"scrolly__header\">{header}</h2>\n\n {/* ══ DESKTOP LAYOUT (hidden on mobile) ══════════════\n * Two equal columns; sticky media + scrolling text.\n * Column order is reversed by .scrolly--media-left.\n */}\n <div className=\"scrolly__layout\">\n\n {/* Sticky media column */}\n <div className=\"scrolly__media-col\" aria-hidden=\"true\">\n <div className=\"scrolly__media-wrap\">\n {items.map((item, i) => (\n <div\n key={i}\n className={[\n \"scrolly__media-item\",\n i === activeIndex\n ? \"scrolly__media-item--active\"\n : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <MediaRenderer\n item={item}\n active={i === activeIndex}\n />\n </div>\n ))}\n </div>\n </div>\n\n {/* Scrolling text column */}\n <div className=\"scrolly__content-col\">\n {items.map((item, i) => (\n <div\n key={i}\n ref={(el) => {\n itemRefs.current[i] = el;\n }}\n className={[\n \"scrolly__item\",\n i === activeIndex\n ? \"scrolly__item--active\"\n : \"scrolly__item--inactive\",\n ].join(\" \")}\n >\n <h3 className=\"scrolly__item-title\">\n {item.title}\n </h3>\n <p className=\"scrolly__item-desc\">\n {item.description}\n </p>\n <a\n href={item.link}\n className=\"scrolly__item-link\"\n >\n <span>{item.linkLabel}</span>\n <ChevronRight />\n </a>\n </div>\n ))}\n </div>\n </div>\n\n {/* ══ MOBILE LAYOUT (hidden on desktop) ══════════════\n * Stacked items: Title → Description → Link → Media.\n * Variant prop has no effect; layout is always stacked.\n */}\n <div className=\"scrolly__mobile-list\">\n {items.map((item, i) => (\n <div key={i} className=\"scrolly__mobile-item\">\n <h3 className=\"scrolly__item-title\">\n {item.title}\n </h3>\n <p className=\"scrolly__item-desc\">\n {item.description}\n </p>\n <a\n href={item.link}\n className=\"scrolly__item-link\"\n >\n <span>Learn more</span>\n <ChevronRight />\n </a>\n <div className=\"scrolly__mobile-media\">\n <MediaRenderer item={item} active={true} />\n </div>\n </div>\n ))}\n </div>\n\n </div>\n </section>\n );\n};\n\nexport default Scrollytelling;\n","import { useEffect, useRef } from \"react\";\nimport type { StickyCardItem, StickyStackedCardsProps } from \"./StickyStackedCards.types\";\nimport \"./StickyStackedCards.css\";\n\n/* ── Default data ──────────────────────────────────────────── */\n\nexport const STEPS_DATA: StickyCardItem[] = [\n {\n title: \"Sign up\",\n description: \"Sign up in minutes. Practise with a zero-risk demo account.\",\n imageUrl: \"https://cdn.prod.website-files.com/66585fe0e1dc7e70cc75d440/677cfad9dd757e95ee7fb4d9_image%20phone.webp\",\n theme: \"light\",\n },\n {\n title: \"Deposit\",\n description: \"Use your favourite local payment method to fund your account.\",\n imageUrl: \"https://cdn.prod.website-files.com/66585fe0e1dc7e70cc75d440/6757df583bf331c84b6c6a61_card-2.webp\",\n theme: \"coral\",\n },\n {\n title: \"Trade\",\n description: \"Start your trading journey.\",\n imageUrl: \"https://cdn.prod.website-files.com/66585fe0e1dc7e70cc75d440/6757df583bf331c84b6c6a59_card-3.webp\",\n theme: \"dark\",\n },\n];\n\n/* ── Scale targets per card depth ─────────────────────────── */\n/*\n * When a card is fully covered by the card on top of it, its\n * scale reaches this minimum — creating the visual depth seen\n * in the stacked state. The last card always stays at 1.\n *\n * Index → minimum scale when fully covered:\n * 0 (Sign up) → 0.88 (furthest back)\n * 1 (Deposit) → 0.94 (one level back)\n * 2 (Trade) → 1.00 (front card, never scales down)\n */\nconst MIN_SCALE: Record<number, number> = { 0: 0.88, 1: 0.94 };\n\n/* ── StickyStackedCards ────────────────────────────────────── */\n\nexport const StickyStackedCards = ({\n header,\n items,\n className,\n ...props\n}: StickyStackedCardsProps) => {\n const cardRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n /*\n * SCALE SCROLL HANDLER\n * --------------------\n * Runs on every scroll tick (passive, rAF-debounced).\n * For each card that has a card on top of it, we measure\n * how close the next card is to its fully-stacked position\n * and interpolate --card-scale toward the MIN_SCALE value.\n *\n * progress = 0 → next card is still far below (no scale)\n * progress = 1 → next card has landed on its sticky top (full scale-down)\n */\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n let rafId = 0;\n\n const update = () => {\n const cards = cardRefs.current.filter(Boolean) as HTMLDivElement[];\n const n = cards.length;\n\n cards.forEach((card, i) => {\n const minScale = MIN_SCALE[i];\n if (minScale === undefined) {\n // Last card — always full size\n card.style.setProperty(\"--card-scale\", \"1\");\n return;\n }\n\n const nextCard = cards[i + 1];\n if (!nextCard) return;\n\n const cardRect = card.getBoundingClientRect();\n const nextRect = nextCard.getBoundingClientRect();\n\n /*\n * \"gap\" = how far the next card's top is above the\n * current card's top in the viewport.\n *\n * gap ≥ cardHeight → next card is a full card-height below\n * (hasn't started overlapping) → progress 0\n * gap ≈ 0 or negative → next card is fully on top → progress 1\n */\n const cardHeight = cardRect.height;\n const gap = nextRect.top - cardRect.top;\n const progress = Math.max(0, Math.min(1, 1 - gap / cardHeight));\n\n const scale = 1 - (1 - minScale) * progress;\n card.style.setProperty(\"--card-scale\", String(+scale.toFixed(4)));\n });\n };\n\n const onScroll = () => {\n cancelAnimationFrame(rafId);\n rafId = requestAnimationFrame(update);\n };\n\n window.addEventListener(\"scroll\", onScroll, { passive: true });\n // Run once immediately so initial state is correct\n update();\n\n return () => {\n window.removeEventListener(\"scroll\", onScroll);\n cancelAnimationFrame(rafId);\n };\n }, [items.length]);\n\n return (\n <section\n className={[\"ssc\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n <div className=\"ssc__inner\">\n\n {/* ── Section header ── */}\n <h2 className=\"ssc__header\">{header}</h2>\n\n {/* ── Card track ──────────────────────────────────────\n * CRITICAL:\n * • display:block on desktop (not flex) — see CSS note\n * • NO overflow:hidden — breaks position:sticky\n */}\n <div className=\"ssc__track\">\n {items.map((item, i) => (\n <div\n key={i}\n ref={(el) => { cardRefs.current[i] = el; }}\n className={[\n \"ssc__card\",\n `ssc__card--${item.theme ?? \"light\"}`,\n ].join(\" \")}\n style={{\n zIndex: i + 1,\n /*\n * PEEK OFFSET — every card gets i × peek-offset so each\n * prior card shows as a thin strip at the top of the next.\n *\n * Example with 3 cards, peek = 16px:\n * Card 0 (Sign up) → 80px\n * Card 1 (Deposit) → 96px (Sign up peeks 16px above)\n * Card 2 (Trade) → 112px (Deposit peeks 16px, Sign up 32px above)\n *\n * Final state: two 16px colour strips at top, Trade fills the rest.\n */\n top: `calc(var(--ssc-sticky-top) + ${i} * var(--ssc-peek-offset))`,\n } as React.CSSProperties}\n >\n {/* Left column — text content, top-left anchored */}\n <div className=\"ssc__card-content\">\n <h3 className=\"ssc__card-title\">{item.title}</h3>\n <p className=\"ssc__card-desc\">{item.description}</p>\n </div>\n\n {/* Right column — hero image */}\n <div className=\"ssc__card-image\">\n <img\n src={item.imageUrl}\n alt={item.title}\n loading={i === 0 ? \"eager\" : \"lazy\"}\n />\n </div>\n </div>\n ))}\n </div>\n\n </div>\n </section>\n );\n};\n\nexport default StickyStackedCards;\n","import { useRef } from \"react\";\nimport {\n motion,\n useScroll,\n useSpring,\n useTransform,\n useMotionTemplate,\n type MotionValue,\n} from \"framer-motion\";\nimport type { CTABannerProps, AvatarItem } from \"./CTABanner.types\";\nimport \"./CTABanner.css\";\n\n/* ── Entrance distance constants ─────────────────────────────────\n * How far from the centre each tier starts before scrolling in.\n * Values are intentionally large so the \"coming from far away\"\n * effect is clearly visible. Each avatar moves radially outward\n * from the centre — top avatars fly in from above, left avatars\n * from the left, corners from their diagonal, etc.\n *\n * Tier mapping (by staggerRank / distance from centre):\n * near → rank 0–1 → 80px\n * mid → rank 2–5 → 130px\n * far → rank 6–8 → 180px\n * edge → rank 9–11 → 240px (corners, most dramatic)\n *\n * blurStart: initial CSS blur in px when section enters.\n * blurStart corresponds to --spacing-16 (1rem = 16px).\n */\nconst ENTRANCE = {\n near: 80,\n mid: 130,\n far: 180,\n edge: 240,\n blurStart: 28,\n} as const;\n\n/* ── Spring config ───────────────────────────────────────────────\n * Wrapping scrollYProgress in useSpring adds a slight lag that\n * makes the parallax feel organic rather than mechanically locked\n * to the scroll wheel.\n *\n */\nconst SPRING = { stiffness: 80, damping: 30, restDelta: 0.001 } as const;\n\n/* ── Scroll range ────────────────────────────────────────────────\n * Avatars settle into their final grid positions by this progress\n * value (0 = section just entering viewport, 0.5 = section\n * centred). After LOCK_AT, y stays clamped at 0 — they \"snap\" to\n * the grid without continuing to move.\n */\nconst LOCK_AT = 0.5;\n\n/* ── Default data ────────────────────────────────────────────────\n * Desktop positions: 9-row stage (9 × 96px = 864px).\n * Stage centre = 432px = row 4 centre → hero aligns with mid-left/right.\n * Equal 1-cell breathing room top (row 1) and bottom (row 7 bottom = 768px, stage = 864px).\n *\n * Row 1 (y=96): col 0, 6, 12 — top outer (3 avatars)\n * Row 2 (y=192): col 3, 9 — upper inner (2 avatars)\n * Row 4 (y=384): col 0, 12 — mid, hero level (2 avatars)\n * Row 6 (y=576): col 3, 9 — lower inner (2 avatars)\n * Row 7 (y=672): col 0, 6, 12 — bottom outer (3 avatars)\n *\n * Mobile/tablet: identical layout to the compact variant (6 avatars).\n *\n * staggerRank: Euclidean distance rank from stage centre (col 6.5, row 4).\n * 0 = closest → slowest parallax (near tier)\n * 11 = furthest (corner) → fastest parallax (edge tier)\n */\n\nconst PLACEHOLDER_URL =\n \"https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/68da5c86c91c54f39c86ce1a_footer-member-5.webp\";\n\nexport const AVATAR_DATA: AvatarItem[] = [\n /* ── Rank 0 — top-centre (col 6, row 1) ─────── */\n {\n id: 12, staggerRank: 0, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 6)\", top: \"calc(var(--ctab-grid-cell) * 1)\" },\n mobilePos: { left: \"calc(50% - var(--ctab-avatar-size) / 2)\", top: \"calc(var(--ctab-grid-cell) * 1)\" },\n mobileVisible: true,\n },\n /* ── Rank 1 — bot-centre (col 6, row 7) ─────── */\n {\n id: 11, staggerRank: 1, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 6)\", top: \"calc(var(--ctab-grid-cell) * 7)\" },\n mobilePos: null,\n mobileVisible: false,\n },\n /* ── Rank 2 — upper-inner-left (col 3, row 2) ── */\n {\n id: 3, staggerRank: 2, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 3)\", top: \"calc(var(--ctab-grid-cell) * 2)\" },\n mobilePos: { left: \"0\", top: \"calc(var(--ctab-grid-cell) * 2)\" },\n mobileVisible: true,\n },\n /* ── Rank 3 — upper-inner-right (col 9, row 2) ── */\n {\n id: 6, staggerRank: 3, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 9)\", top: \"calc(var(--ctab-grid-cell) * 2)\" },\n mobilePos: { right: \"0\", top: \"calc(var(--ctab-grid-cell) * 2)\" },\n mobileVisible: true,\n },\n /* ── Rank 4 — lower-inner-left (col 3, row 6) ── */\n {\n id: 1, staggerRank: 4, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 3)\", top: \"calc(var(--ctab-grid-cell) * 6)\" },\n mobilePos: { left: \"calc(50% - var(--ctab-avatar-size) / 2)\", top: \"calc(var(--ctab-grid-cell) * 9)\" },\n mobileVisible: true,\n },\n /* ── Rank 5 — lower-inner-right (col 9, row 6) ── */\n {\n id: 10, staggerRank: 5, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 9)\", top: \"calc(var(--ctab-grid-cell) * 6)\" },\n mobilePos: null,\n mobileVisible: false,\n },\n /* ── Rank 6 — mid-left (col 0, row 4) ──────── */\n {\n id: 5, staggerRank: 6, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"0\", top: \"calc(var(--ctab-grid-cell) * 4)\" },\n mobilePos: { left: \"0\", top: \"calc(var(--ctab-grid-cell) * 8)\" },\n mobileVisible: true,\n },\n /* ── Rank 7 — mid-right (col 12, row 4) ────── */\n {\n id: 8, staggerRank: 7, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 12)\", top: \"calc(var(--ctab-grid-cell) * 4)\" },\n mobilePos: { right: \"0\", top: \"calc(var(--ctab-grid-cell) * 8)\" },\n mobileVisible: true,\n },\n /* ── Rank 8 — top-left corner (col 0, row 1) ── */\n {\n id: 4, staggerRank: 8, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"0\", top: \"calc(var(--ctab-grid-cell) * 1)\" },\n mobilePos: null,\n mobileVisible: false,\n },\n /* ── Rank 9 — top-right corner (col 12, row 1) ── */\n {\n id: 7, staggerRank: 9, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 12)\", top: \"calc(var(--ctab-grid-cell) * 1)\" },\n mobilePos: null,\n mobileVisible: false,\n },\n /* ── Rank 10 — bot-left corner (col 0, row 7) ── */\n {\n id: 2, staggerRank: 10, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"0\", top: \"calc(var(--ctab-grid-cell) * 7)\" },\n mobilePos: null,\n mobileVisible: false,\n },\n /* ── Rank 11 — bot-right corner (col 12, row 7) ── */\n {\n id: 9, staggerRank: 11, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 12)\", top: \"calc(var(--ctab-grid-cell) * 7)\" },\n mobilePos: null,\n mobileVisible: false,\n },\n];\n\n/* ── Compact variant data ────────────────────────────────────────\n * 7 desktop avatars within the 1280 × 680 stage (Figma node 6865-13441).\n * Desktop grid cell = 96px. Positions as col/row multiples.\n *\n * Mobile reuses the standard 6-avatar mobile layout (same positions).\n */\nexport const COMPACT_AVATAR_DATA: AvatarItem[] = [\n /* ── Rank 0 — top-centre (col ~6, row 1) ── */\n {\n id: 12, staggerRank: 0, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(50% - var(--ctab-avatar-size) / 2)\", top: \"calc(var(--ctab-grid-cell) * 1)\" },\n mobilePos: { left: \"calc(50% - var(--ctab-avatar-size) / 2)\", top: \"calc(var(--ctab-grid-cell) * 1)\" },\n mobileVisible: true,\n },\n /* ── Rank 1 — top-left (col 2, row 1) ───── */\n {\n id: 3, staggerRank: 1, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 2)\", top: \"calc(var(--ctab-grid-cell) * 1)\" },\n mobilePos: { left: \"0\", top: \"calc(var(--ctab-grid-cell) * 2)\" },\n mobileVisible: true,\n },\n /* ── Rank 2 — top-right (col 10, row 1) ─── */\n {\n id: 6, staggerRank: 2, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 10)\", top: \"calc(var(--ctab-grid-cell) * 1)\" },\n mobilePos: { right: \"0\", top: \"calc(var(--ctab-grid-cell) * 2)\" },\n mobileVisible: true,\n },\n /* ── Rank 3 — mid-left (col 0, row 3) ────── */\n {\n id: 5, staggerRank: 3, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"0\", top: \"calc(var(--ctab-grid-cell) * 3)\" },\n mobilePos: { left: \"0\", top: \"calc(var(--ctab-grid-cell) * 8)\" },\n mobileVisible: true,\n },\n /* ── Rank 4 — mid-right (col 12, row 3) ──── */\n {\n id: 8, staggerRank: 4, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 12)\", top: \"calc(var(--ctab-grid-cell) * 3)\" },\n mobilePos: { right: \"0\", top: \"calc(var(--ctab-grid-cell) * 8)\" },\n mobileVisible: true,\n },\n /* ── Rank 5 — bot-left (col 2, row 5) ────── */\n {\n id: 1, staggerRank: 5, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 2)\", top: \"calc(var(--ctab-grid-cell) * 5)\" },\n mobilePos: { left: \"calc(50% - var(--ctab-avatar-size) / 2)\", top: \"calc(var(--ctab-grid-cell) * 9)\" },\n mobileVisible: true,\n },\n /* ── Rank 6 — bot-right (col 10, row 5) — desktop only ─── */\n {\n id: 11, staggerRank: 6, imageUrl: PLACEHOLDER_URL,\n desktopPos: { left: \"calc(var(--ctab-grid-cell) * 10)\", top: \"calc(var(--ctab-grid-cell) * 5)\" },\n mobilePos: null,\n mobileVisible: false,\n },\n];\n\n/* ── Avatar radial entrance hooks ────────────────────────────────\n *\n * Hooks cannot be called inside a loop, so each of the 12\n * useTransform calls is explicit and always runs in the same order.\n * Index maps directly to AVATAR_DATA order (= staggerRank order).\n *\n * Y sign: + = avatar starts BELOW final position (bottom half)\n * - = avatar starts ABOVE final position (top half)\n * 0 = avatar is on the horizontal mid-line\n *\n * X sign: + = avatar starts to the RIGHT (right half)\n * - = avatar starts to the LEFT (left half)\n * 0 = avatar is on the vertical mid-line\n *\n * rank 0 (col 6, row 1) top-centre → X=0, Y=-near\n * rank 1 (col 6, row 7) bot-centre → X=0, Y=+near\n * rank 2 (col 3, row 2) upper-inner-left → X=-mid, Y=-mid\n * rank 3 (col 9, row 2) upper-inner-right → X=+mid, Y=-mid\n * rank 4 (col 3, row 6) lower-inner-left → X=-mid, Y=+mid\n * rank 5 (col 9, row 6) lower-inner-right → X=+mid, Y=+mid\n * rank 6 (col 0, row 4) mid-left → X=-far, Y=0\n * rank 7 (col 12, row 4) mid-right → X=+far, Y=0\n * rank 8 (col 0, row 1) top-left corner → X=-edge, Y=-edge\n * rank 9 (col 12, row 1) top-right corner → X=+edge, Y=-edge\n * rank 10 (col 0, row 7) bot-left corner → X=-edge, Y=+edge\n * rank 11 (col 12, row 7) bot-right corner → X=+edge, Y=+edge\n */\nfunction useAvatarYValues(smooth: MotionValue<number>): MotionValue<number>[] {\n const y0 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.near, 0]); // top-centre\n const y1 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.near, 0]); // bot-centre\n const y2 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.mid, 0]); // upper-inner-left\n const y3 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.mid, 0]); // upper-inner-right\n const y4 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.mid, 0]); // lower-inner-left\n const y5 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.mid, 0]); // lower-inner-right\n const y6 = useTransform(smooth, [0, LOCK_AT], [0, 0]); // mid-left (no Y)\n const y7 = useTransform(smooth, [0, LOCK_AT], [0, 0]); // mid-right (no Y)\n const y8 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.edge, 0]); // top-left corner\n const y9 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.edge, 0]); // top-right corner\n const y10 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.edge, 0]); // bot-left corner\n const y11 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.edge, 0]); // bot-right corner\n return [y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11];\n}\n\nfunction useAvatarXValues(smooth: MotionValue<number>): MotionValue<number>[] {\n const x0 = useTransform(smooth, [0, LOCK_AT], [0, 0]); // top-centre (no X)\n const x1 = useTransform(smooth, [0, LOCK_AT], [0, 0]); // bot-centre (no X)\n const x2 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.mid, 0]); // upper-inner-left\n const x3 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.mid, 0]); // upper-inner-right\n const x4 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.mid, 0]); // lower-inner-left\n const x5 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.mid, 0]); // lower-inner-right\n const x6 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.far, 0]); // mid-left\n const x7 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.far, 0]); // mid-right\n const x8 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.edge, 0]); // top-left corner\n const x9 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.edge, 0]); // top-right corner\n const x10 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.edge, 0]); // bot-left corner\n const x11 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.edge, 0]); // bot-right corner\n return [x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11];\n}\n\n/* ── Compact variant parallax hooks (7 avatars) ──────────────────\n *\n * rank 0 (top-centre): X=0, Y=-near\n * rank 1 (top-left): X=-mid, Y=-mid\n * rank 2 (top-right): X=+mid, Y=-mid\n * rank 3 (mid-left): X=-far, Y=0\n * rank 4 (mid-right): X=+far, Y=0\n * rank 5 (bot-left): X=-mid, Y=+mid\n * rank 6 (bot-right): X=+mid, Y=+mid\n */\nfunction useCompactAvatarYValues(smooth: MotionValue<number>): MotionValue<number>[] {\n const y0 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.near, 0]); // top-centre\n const y1 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.mid, 0]); // top-left\n const y2 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.mid, 0]); // top-right\n const y3 = useTransform(smooth, [0, LOCK_AT], [0, 0]); // mid-left (no Y)\n const y4 = useTransform(smooth, [0, LOCK_AT], [0, 0]); // mid-right (no Y)\n const y5 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.mid, 0]); // bot-left\n const y6 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.mid, 0]); // bot-right\n return [y0, y1, y2, y3, y4, y5, y6];\n}\n\nfunction useCompactAvatarXValues(smooth: MotionValue<number>): MotionValue<number>[] {\n const x0 = useTransform(smooth, [0, LOCK_AT], [0, 0]); // top-centre (no X)\n const x1 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.mid, 0]); // top-left\n const x2 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.mid, 0]); // top-right\n const x3 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.far, 0]); // mid-left\n const x4 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.far, 0]); // mid-right\n const x5 = useTransform(smooth, [0, LOCK_AT], [-ENTRANCE.mid, 0]); // bot-left\n const x6 = useTransform(smooth, [0, LOCK_AT], [ENTRANCE.mid, 0]); // bot-right\n return [x0, x1, x2, x3, x4, x5, x6];\n}\n\n/* ── CTABanner ────────────────────────────────────────────────── */\n\nexport const CTABanner = ({\n headline = \"Short section title goes here\",\n ctaLabel = \"Open account\",\n ctaHref = \"#\",\n avatars,\n variant = \"standard\",\n className,\n ...props\n}: CTABannerProps) => {\n const resolvedAvatars = avatars ?? (variant === \"compact\" ? COMPACT_AVATAR_DATA : AVATAR_DATA);\n const sectionRef = useRef<HTMLElement>(null);\n\n /* Track scroll progress as section crosses the viewport.\n * offset: \"start end\" = section top reaches viewport bottom → progress 0\n * offset: \"end start\" = section bottom reaches viewport top → progress 1\n * The spring smooths the raw scroll value into the organic\n * \"butter\" feel that matches the video reference. */\n const { scrollYProgress } = useScroll({\n target: sectionRef,\n offset: [\"start end\", \"end start\"],\n });\n\n const smooth = useSpring(scrollYProgress, SPRING);\n\n /* ── Grid: fade in as section enters ── */\n const gridOpacity = useTransform(smooth, [0, 0.3], [0, 1]);\n\n /* ── Hero: slight upward rise + fade ── */\n const heroY = useTransform(smooth, [0, LOCK_AT], [32, 0]);\n const heroOpacity = useTransform(smooth, [0, 0.3], [0, 1]);\n\n /* ── Avatar fade: all avatars share one opacity track ── */\n const avatarOpacity = useTransform(smooth, [0, 0.25], [0, 1]);\n\n /* ── Avatar blur: clears from blurStart → 0 as section enters ──\n * useMotionTemplate builds a valid CSS filter string so Framer\n * Motion can interpolate it at 60fps without touching the DOM\n * style attribute directly. */\n const blurPx = useTransform(smooth, [0, 0.3, 0.7, 1], [ENTRANCE.blurStart, 0, 0, ENTRANCE.blurStart]);\n const avatarFilter = useMotionTemplate`blur(${blurPx}px)`;\n\n /* ── Per-avatar radial entrance ── */\n const standardYValues = useAvatarYValues(smooth);\n const standardXValues = useAvatarXValues(smooth);\n const compactYValues = useCompactAvatarYValues(smooth);\n const compactXValues = useCompactAvatarXValues(smooth);\n\n const avatarYValues = variant === \"compact\" ? compactYValues : standardYValues;\n const avatarXValues = variant === \"compact\" ? compactXValues : standardXValues;\n\n return (\n <section\n ref={sectionRef}\n className={[\"ctab\", variant === \"compact\" ? \"ctab--compact\" : \"\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n {/* ── Background grid ─────────────────────────────────── */}\n <motion.div\n className=\"ctab__grid\"\n style={{ opacity: gridOpacity }}\n aria-hidden=\"true\"\n />\n\n {/* ── Content stage ───────────────────────────────────── */}\n <div className=\"ctab__inner\">\n <div className=\"ctab__stage\">\n\n {/* ── Floating avatars ─────────────────────────────────\n * Position supplied as inline CSS custom properties so the\n * CSS token layer controls all sizing/spacing.\n *\n * Framer Motion controls only `y` (scroll-driven parallax)\n * and `opacity` (scroll-driven fade). No fixed initial\n * state — the animation is tied continuously to scroll.\n */}\n {resolvedAvatars.map((avatar, index) => {\n const posStyle: Record<string, string> = {};\n if (avatar.desktopPos.left) posStyle[\"--av-d-left\"] = avatar.desktopPos.left;\n if (avatar.desktopPos.right) posStyle[\"--av-d-right\"] = avatar.desktopPos.right;\n if (avatar.desktopPos.top) posStyle[\"--av-d-top\"] = avatar.desktopPos.top;\n if (avatar.mobilePos?.left) posStyle[\"--av-m-left\"] = avatar.mobilePos.left;\n if (avatar.mobilePos?.right) posStyle[\"--av-m-right\"] = avatar.mobilePos.right;\n if (avatar.mobilePos?.top) posStyle[\"--av-m-top\"] = avatar.mobilePos.top;\n\n return (\n <motion.div\n key={avatar.id}\n className={[\n \"ctab__avatar\",\n !avatar.mobileVisible ? \"ctab__avatar--desktop-only\" : \"\",\n ].filter(Boolean).join(\" \")}\n style={{\n ...(posStyle as React.CSSProperties),\n x: avatarXValues[index],\n y: avatarYValues[index],\n opacity: avatarOpacity,\n filter: avatarFilter,\n }}\n >\n <img\n src={avatar.imageUrl}\n alt=\"\"\n loading=\"lazy\"\n draggable={false}\n />\n </motion.div>\n );\n })}\n\n {/* ── Hero — headline + CTA ──────────────────── */}\n <motion.div\n className=\"ctab__hero\"\n style={{ y: heroY, opacity: heroOpacity }}\n >\n <h2 className=\"ctab__headline\">{headline}</h2>\n <a href={ctaHref} className=\"ctab__cta\">\n {ctaLabel}\n </a>\n </motion.div>\n\n </div>\n </div>\n </section>\n );\n};\n\nexport default CTABanner;\n","import { useRef } from \"react\";\nimport {\n motion,\n useScroll,\n useSpring,\n useTransform,\n useMotionTemplate,\n} from \"framer-motion\";\nimport type { DayNightTransitionProps } from \"./DayNightTransition.types\";\nimport \"./DayNightTransition.css\";\n\n/* ── Spring config ────────────────────────────────────────────────\n * Adds organic lag to the raw scroll value so the crossfade feels\n * smooth rather than mechanically locked to the scroll wheel.\n */\nconst SPRING = { stiffness: 80, damping: 30, restDelta: 0.001 } as const;\n\n/* ── Transition range ─────────────────────────────────────────────\n * The day→night crossfade happens between these scroll-progress\n * values (0 = section entering viewport, 1 = section leaving).\n * Centred around 0.5 so the transition occurs mid-scroll.\n */\nconst FADE_START = 0.35;\nconst FADE_END = 0.65;\n\n/* ── Text crossover ───────────────────────────────────────────────\n * Day content fades out and night content fades in at the same\n * time as the background shift.\n */\nconst WORD_START = 0.4;\nconst WORD_END = 0.6;\n\n/* ── Text color ───────────────────────────────────────────────────\n * Day text = var(--color-slate-1400) = #000000 → channel 0\n * Night text = var(--color-slate-50) = #ffffff → channel 255\n */\nconst TEXT_CHANNEL_DAY = 0;\nconst TEXT_CHANNEL_NIGHT = 255;\n\n/* ── DayNightTransition ───────────────────────────────────────── */\n\nexport const DayNightTransition = ({\n dayImageUrl,\n nightImageUrl,\n dayHeadline = \"Trade all day\",\n nightHeadline = \"Trade all night\",\n dayDescription,\n nightDescription,\n ctaLabel = \"Get started\",\n ctaHref = \"#\",\n className,\n ...props\n}: DayNightTransitionProps) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const { scrollYProgress } = useScroll({\n target: wrapperRef,\n offset: [\"start end\", \"end start\"],\n });\n\n const smooth = useSpring(scrollYProgress, SPRING);\n\n /* ── Night background: fades in as scroll progresses ── */\n const nightOpacity = useTransform(smooth, [FADE_START, FADE_END], [0, 1]);\n\n /* ── Text color: black → white ── */\n const channel = useTransform(smooth, [FADE_START, FADE_END], [TEXT_CHANNEL_DAY, TEXT_CHANNEL_NIGHT]);\n const textColor = useMotionTemplate`rgb(${channel}, ${channel}, ${channel})`;\n\n /* ── Content crossfade opacities ── */\n const dayOpacity = useTransform(smooth, [WORD_START, WORD_END], [1, 0]);\n const nightOpacity2 = useTransform(smooth, [WORD_START, WORD_END], [0, 1]);\n\n const hasDescription = Boolean(dayDescription || nightDescription);\n\n return (\n <div\n ref={wrapperRef}\n className={[\"dnt\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n <div className=\"dnt__sticky\">\n\n {/* ── Day background — always underneath ─── */}\n <img\n className=\"dnt__bg dnt__bg--day\"\n src={dayImageUrl}\n alt=\"\"\n loading=\"eager\"\n draggable={false}\n />\n\n {/* ── Night background — fades in ─────────── */}\n <motion.img\n className=\"dnt__bg dnt__bg--night\"\n src={nightImageUrl}\n alt=\"\"\n loading=\"eager\"\n draggable={false}\n style={{ opacity: nightOpacity }}\n />\n\n {/* ── Content ─────────────────────────────── */}\n <div className=\"dnt__content\">\n <motion.div\n className=\"dnt__text-wrap\"\n style={{ color: textColor }}\n >\n {/* ── Headlines crossfade ── */}\n <div className=\"dnt__crossfade-wrap\">\n <motion.h2\n className=\"dnt__headline\"\n style={{ opacity: dayOpacity }}\n >\n {dayHeadline}\n </motion.h2>\n <motion.h2\n className=\"dnt__headline\"\n aria-hidden=\"true\"\n style={{ opacity: nightOpacity2 }}\n >\n {nightHeadline}\n </motion.h2>\n </div>\n\n {/* ── Descriptions crossfade ── */}\n {hasDescription && (\n <div className=\"dnt__crossfade-wrap\">\n <motion.p\n className=\"dnt__description\"\n style={{ opacity: dayOpacity }}\n >\n {dayDescription ?? \"\"}\n </motion.p>\n <motion.p\n className=\"dnt__description\"\n aria-hidden=\"true\"\n style={{ opacity: nightOpacity2 }}\n >\n {nightDescription ?? \"\"}\n </motion.p>\n </div>\n )}\n\n <a href={ctaHref} className=\"dnt__btn\">\n {ctaLabel}\n </a>\n </motion.div>\n </div>\n\n </div>\n </div>\n );\n};\n\nexport default DayNightTransition;\n","import { useRef } from \"react\";\nimport {\n motion,\n useScroll,\n useVelocity,\n useAnimationFrame,\n useMotionValue,\n} from \"framer-motion\";\nimport type { PaymentMethodsProps, LogoItem } from \"./PaymentMethods.types\";\nimport \"./PaymentMethods.css\";\n\n/* ── Modular wrap ─────────────────────────────────────────────────\n * Keeps `v` cycling within [min, max).\n * JS % operator returns negative results for negative numbers, so\n * we normalise with the double-mod pattern.\n *\n * Example (cycleH = 1500):\n * modWrap(-1500, 0, -1501) → -1\n * modWrap(-1500, 0, 1) → -1499 (seamless cross-boundary)\n */\nfunction modWrap(min: number, max: number, v: number): number {\n const range = max - min;\n return ((((v - min) % range) + range) % range) + min;\n}\n\n/* ── Speed constants ──────────────────────────────────────────────\n * VELOCITY_FACTOR scales raw scroll px/s → column marquee px/s.\n * MAX_SCROLL_V clamps very fast flicks so the marquee stays\n * readable instead of blurring past.\n * DEADZONE minimum scroll velocity (px/s) needed to move\n * the columns — prevents micro-drift from inertia.\n */\nconst VELOCITY_FACTOR = 0.4;\nconst MAX_SCROLL_V = 2500;\nconst DEADZONE = 2;\n\n/* ── Logo data ────────────────────────────────────────────────── */\n\nconst CDN = \"https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/\";\n\nexport const COL_ONE_LOGOS: LogoItem[] = [\n { name: \"Mastercard\", url: `${CDN}68dcd915dc1a82f278b6c061_payment%20method-mastercard.svg` },\n { name: \"Visa\", url: `${CDN}68dcd9d10fda048e2d53a3a1_payment%20method-visa.svg` },\n { name: \"Visa Electron\", url: `${CDN}68dcd9d10fda048e2d53a3a1_payment%20method-visa-electron.svg` },\n { name: \"Maestro\", url: `${CDN}68dcd9d183a5dcfaa9a06587_payment%20method-maestro.svg` },\n { name: \"Pix\", url: `${CDN}68dcd9d13461263dcd8ccf54_payment%20method-pix.svg` },\n { name: \"Help2Pay\", url: `${CDN}68dcd9d13461263dcd8ccf54_payment%20method-help2pay.svg` },\n { name: \"UPI Neo\", url: `${CDN}68dcd9d13461263dcd8ccf54_payment%20method-upineo.svg` },\n { name: \"M-Pesa\", url: `${CDN}68dcd9d13461263dcd8ccf54_payment%20method-mpesa.svg` },\n { name: \"Ozow\", url: `${CDN}68dcd9d13461263dcd8ccf54_payment%20method-ozow.svg` },\n { name: \"MTN\", url: `${CDN}68dcd9d13461263dcd8ccf54_payment%20method-mtn.svg` },\n { name: \"Airtm\", url: `${CDN}68dcd9d13461263dcd8ccf54_payment%20method-airtm.svg` },\n];\n\nexport const COL_TWO_LOGOS: LogoItem[] = [\n { name: \"Bitcoin\", url: `${CDN}68dcd9d13384aff3f072511a_payment%20method-bitcoin.svg` },\n { name: \"Ethereum\", url: `${CDN}68dcd9d10fda048e2d53a3a1_payment%20method-ethereum.svg` },\n { name: \"Tron\", url: `${CDN}68dcd9d109305b54383580e5_payment%20method-tron.svg` },\n { name: \"Skrill\", url: `${CDN}68dcd9d183a5dcfaa9a06587_payment%20method-skrill.svg` },\n { name: \"Skrill 1-tap\", url: `${CDN}68dcd9d183a5dcfaa9a06587_payment%20method-skrill-1tap.svg` },\n { name: \"SticPay\", url: `${CDN}68dcd9d183a5dcfaa9a06587_payment%20method-sticpay.svg` },\n { name: \"Litecoin\", url: `${CDN}68dcd9d13384aff3f072511a_payment%20method-litecoin.svg` },\n { name: \"USD Coin\", url: `${CDN}68dcd9d13384aff3f072511a_payment%20method-usdc.svg` },\n { name: \"Dogecoin\", url: `${CDN}68dcd9d13384aff3f072511a_payment%20method-dogecoin.svg` },\n { name: \"Cardano\", url: `${CDN}68dcd9d13384aff3f072511a_payment%20method-cardano.svg` },\n { name: \"BNB\", url: `${CDN}68dcd9d13384aff3f072511a_payment%20method-bnb.svg` },\n];\n\nexport const TEXT_CONTENT = {\n headline: \"Your money, your way\",\n body: \"Quick deposits, easy withdrawals, and 60+ payment options mean your money is always accessible.\",\n disclaimer: \"*Availability of payment methods and processing speeds may vary based on location and selected payment option.\",\n ctaLabel: \"Learn more\",\n ctaHref: \"#\",\n};\n\n/* ── PaymentMethods ───────────────────────────────────────────── */\n\nexport const PaymentMethods = ({\n headline = TEXT_CONTENT.headline,\n body = TEXT_CONTENT.body,\n disclaimer = TEXT_CONTENT.disclaimer,\n ctaLabel = TEXT_CONTENT.ctaLabel,\n ctaHref = TEXT_CONTENT.ctaHref,\n col1Logos = COL_ONE_LOGOS,\n col2Logos = COL_TWO_LOGOS,\n className,\n ...props\n}: PaymentMethodsProps) => {\n /* ── Scroll velocity source ─────────────────────────────────────\n * useScroll() (no args) tracks the global window scroll.\n * useVelocity() derives the rate of change in px/s.\n * When the user isn't scrolling, velocity → 0 and the columns\n * freeze immediately — no spring lag, no easing drift.\n */\n const { scrollY } = useScroll();\n const scrollVelocity = useVelocity(scrollY);\n\n /* ── Column Y positions ─────────────────────────────────────────\n * useMotionValue gives Framer Motion a mutable number it can\n * directly wire to the DOM transform without React re-renders.\n */\n const col1Y = useMotionValue(0);\n const col2Y = useMotionValue(0);\n\n /* Refs to measure each column's rendered height so modWrap can\n * calculate the exact single-cycle length at runtime. */\n const col1Ref = useRef<HTMLDivElement>(null);\n const col2Ref = useRef<HTMLDivElement>(null);\n\n /* ── Per-frame marquee update ───────────────────────────────────\n * useAnimationFrame runs every rAF tick.\n * `delta` is ms since the previous frame (~16 at 60 fps).\n *\n * step = scrollVelocity (px/s) × VELOCITY_FACTOR × (delta / 1000s)\n *\n * Col 1 subtracts step → scrolls UP when scrolling down.\n * Col 2 adds step → scrolls DOWN when scrolling down.\n * Opposite on scroll-up — naturally reversed.\n *\n * modWrap(-cycleH, 0, newPos) keeps the position looping within\n * one cycle so the column never runs out of cards.\n */\n useAnimationFrame((_, delta) => {\n const raw = scrollVelocity.get();\n\n // Frozen while not scrolling\n if (Math.abs(raw) < DEADZONE) return;\n\n const clamped = Math.sign(raw) * Math.min(Math.abs(raw), MAX_SCROLL_V);\n const step = clamped * VELOCITY_FACTOR * (delta / 1000);\n\n // Single-cycle height = half of total track (2× duplication)\n const cycleH1 = (col1Ref.current?.offsetHeight ?? 2000) / 2;\n const cycleH2 = (col2Ref.current?.offsetHeight ?? 2000) / 2;\n\n col1Y.set(modWrap(-cycleH1, 0, col1Y.get() - step)); // UP\n col2Y.set(modWrap(-cycleH2, 0, col2Y.get() + step)); // DOWN (opposite)\n });\n\n /* 2× duplication creates a seamless loop:\n * offsetHeight / 2 = one cycle → wrapping at that boundary\n * always reveals identical content (the other copy). */\n const track1 = [...col1Logos, ...col1Logos];\n const track2 = [...col2Logos, ...col2Logos];\n\n return (\n <section\n className={[\"pm\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n <div className=\"pm__inner\">\n\n {/* ── Media — two opposing marquee columns ──────── */}\n <div className=\"pm__media\">\n <div className=\"pm__carousel\">\n\n {/* Top gradient fade */}\n <div className=\"pm__fade pm__fade--top\" aria-hidden=\"true\" />\n\n {/* Column 1 — scrolls UP when page scrolls DOWN */}\n <motion.div\n ref={col1Ref}\n className=\"pm__col\"\n style={{ y: col1Y }}\n >\n {track1.map((logo, i) => (\n <div key={`c1-${i}`} className=\"pm__card\">\n <div className=\"pm__card-img-wrap\">\n <img\n src={logo.url}\n alt={logo.name}\n loading=\"lazy\"\n draggable={false}\n />\n </div>\n </div>\n ))}\n </motion.div>\n\n {/* Column 2 — scrolls DOWN when page scrolls DOWN */}\n <motion.div\n ref={col2Ref}\n className=\"pm__col\"\n style={{ y: col2Y }}\n >\n {track2.map((logo, i) => (\n <div key={`c2-${i}`} className=\"pm__card\">\n <div className=\"pm__card-img-wrap\">\n <img\n src={logo.url}\n alt={logo.name}\n loading=\"lazy\"\n draggable={false}\n />\n </div>\n </div>\n ))}\n </motion.div>\n\n {/* Bottom gradient fade */}\n <div className=\"pm__fade pm__fade--bottom\" aria-hidden=\"true\" />\n\n </div>\n </div>\n\n {/* ── Text content ────────────────────────────── */}\n <div className=\"pm__content\">\n <h2 className=\"pm__headline\">{headline}</h2>\n\n <div className=\"pm__text-group\">\n <p className=\"pm__body\">{body}</p>\n <p className=\"pm__disclaimer\">{disclaimer}</p>\n </div>\n\n <a href={ctaHref} className=\"pm__link\">\n {ctaLabel}\n <span aria-hidden=\"true\">→</span>\n </a>\n </div>\n\n </div>\n </section>\n );\n};\n\nexport default PaymentMethods;\n"],"mappings":"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","names":["jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","ChevronIcon","jsx","jsxs","forwardRef","useState","jsx","jsxs","SuccessIcon","FailIcon","forwardRef","useState","useState","jsx","jsxs","jsx","jsxs","useState","useEffect","useRef","useState","jsx","jsxs","useState","useRef","useEffect","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","useState","jsx","jsxs","ChevronDownIcon","useState","jsx","jsxs","useEffect","useRef","useState","jsx","jsxs","useState","useRef","useEffect","useEffect","useRef","useState","jsx","jsxs","ChevronRight","useState","useRef","useEffect","useEffect","useRef","jsx","jsxs","useRef","useEffect","useRef","jsx","jsxs","useRef","useRef","motion","useScroll","useSpring","useTransform","useMotionTemplate","jsx","jsxs","SPRING","useRef","useScroll","useSpring","useTransform","useMotionTemplate","motion","useRef","motion","useScroll","jsx","jsxs","useScroll","useRef","motion"]}
|