@dropins/tools 1.5.1-alpha003 → 1.6.0-alpha999
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/chunks/initializer.js +1 -1
- package/chunks/vcomponent.js +12 -12
- package/chunks/vcomponent.js.map +1 -1
- package/components.js +1 -1
- package/components.js.map +1 -1
- package/fetch-graphql.js +1 -1
- package/fetch-graphql.js.map +1 -1
- package/initializer.js +1 -1
- package/lib.js +1 -1
- package/lib.js.map +1 -1
- package/package.json +1 -1
- package/types/elsie/src/components/ProductItemCard/ProductItemCard.d.ts +0 -2
- package/types/elsie/src/lib/render.d.ts +6 -1
- package/types/elsie/src/lib/slot.d.ts +4 -3
- package/types/fetch-graphql/src/index.d.ts +9 -1
- package/types/recaptcha/src/index.d.ts +1 -0
package/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":["SINGLELINE","SkeletonRow","className","fullWidth","lines","size","variant","children","multilineGap","props","sharedClasses","jsx","classes","svg","_","index","Skeleton","rowGap","lazyIcons","lazy","__vitePreload","n","isValidUrl","source","absoluteUrl","UrlSvgLoader","url","svgContent","setSvgContent","useState","loading","setLoading","error","setError","useEffect","response","content","e","processedContent","Icon","Source","stroke","viewBox","defaultProps","isLikelyUrl","Suspense","LazyIcon","isRejectedUrl","Incrementer","name","value","disabled","success","min","max","onValue","onUpdateError","currentValue","setCurrentValue","minValue","maxValue","isInvalid","errorMessage","propValue","debouncedOnValueHandler","useCallback","debounce","newValue","handleIncrementer","_value","jsxs","Localizer","Text","Minus","Add","Input","floatingLabel","icon","maxLength","id","handleOnValue","input","VComponent","WarningWithCircle","CheckWithCircle","InputDate","label","onChange","onBlur","internalValue","setInternalValue","iosInputRef","useRef","dictionary","useText","handleOnFocus","event","isIOSMobileDevice","handleOnClick","_a","handleOnBlur","handleInputChange","Field","Date","getIcon","PendingValidation","Check","ErrorValidation","PasswordStatusIndicator","minLength","requiredCharacterClasses","uniqueSymbolsStatus","validateLengthConfig","translations","getMessage","chart","InputPassword","placeholder","required","autoComplete","defaultValue","hideStatusIndicator","showPassword","setShowPassword","toggleShowPassword","prevShowPassword","title","Locker","Button","Eye","EyeClose","TextArea","textareaRef","useId","textArea","Divider","Price","amount","currency","locale","weight","sale","formatOptions","effectiveLocale","useMemo","globalLocale","getGlobalLocale","define_process_env_default","formatter","params","formattedAmount","RadioButton","checked","description","busy","active","activeChildren","activeIcon","href","buttonType","iconClassName","attributes","findSelectedValue","defaultOption","firstAvailableOption","Picker","options","handleSelect","isRequired","option","selectedValue","setSelectedValue","handleOptionClick","element","optionsListItems","text","isSelected","hasToDisplayPlaceholder","ChevronDown","hint","ChildComponent","createElement","ActionButton","ActionButtonGroup","activeOption","dividers","activeOptionState","setActiveOptionState","handleClick","buttonGroupOptions","Children","child","isOptionDisabled","isOptionActive","cloneElement","Card","Checkbox","isChecked","setIsChecked","ref","handleCheckboxChange","handleOnKeyDown","ColorSwatch","groupAriaLabel","color","selected","outOfStock","multi","outOfStockLabel","selectedLabel","swatchLabel","onValueHandler","validColor","colorStyle","handleAriaLabel","TextSwatch","isOverflowing","setIsOverflowing","spanRef","ProgressSpinner","ariaLabel","style","commonClasses","ImageSwatch","src","alt","imageNode","imageProps","Image","AccordionSection","ariaLabelTitle","secondaryText","actionIconPosition","iconOpen","iconClose","iconLeft","showIconLeft","renderContentWhenClosed","defaultOpen","onStateChange","open","setOpen","onClickHandler","next","buttonLabel","openIcon","closeIcon","leftIcon","Accordion","divider","renderAccordionSection","Fragment","InLineAlert","type","additionalActions","onDismiss","heading","itemList","actionButtonPosition","_b","_c","Close","action","Portal","portalRoot","contentRef","useLayoutEffect","Modal","centered","backgroundDim","clickToDismiss","escapeToDismiss","onClose","showCloseButton","handleOnClose","handleOutsideClick","modal","modalBody","handleKeyDown","scrollingElement","defaultOverflowValue","CloseSVG","CartItem","image","price","taxIncluded","taxExcluded","total","totalExcludingTax","sku","configurations","warning","alert","discount","savings","actions","removeContent","quantity","quantityContent","footer","updating","quantityType","dropdownOptions","onQuantity","onRemove","useContext","UIContext","labels","CartItemSkeleton","quantityComponent","key","Trash","CartList","PriceRange","minimumAmount","maximumAmount","display","specialPrice","isSimpleProduct","Dashed","FromTo","SpecialPrice","Breadcrumbs","categories","separator","category","AlertBanner","message","IllustratedMessage","headingLevel","Heading","ToggleButton","level","HeadingTag","Header","cta","Tag","ContentGrid","maxColumns","columnWidth","emptyGridContent","hasChildren","additionalStyles","Pagination","totalPages","currentPage","handleForward","nextPage","handleBackward","prevPage","handleSetPage","isNumber","createPages","pages","addPageRange","start","end","i","paginationList","item","ProductItemCardSkeleton","ProductItemCard","titleNode","actionButton","swatches","initialized","imageHref","imageLinkLabel","InputFile","accept","multiple","providedId","generatedId","handleChange"],"ignoreList":[],"sources":["/@dropins/tools/src/components/Skeleton/Skeleton.tsx","/@dropins/tools/src/components/Icon/Icon.tsx","/@dropins/tools/src/components/Incrementer/Incrementer.tsx","/@dropins/tools/src/components/Input/Input.tsx","/@dropins/tools/src/components/InputDate/InputDate.tsx","/@dropins/tools/src/components/InputPassword/PasswordStatusIndicator/PasswordStatusIndicator.tsx","/@dropins/tools/src/components/InputPassword/InputPassword.tsx","/@dropins/tools/src/components/TextArea/TextArea.tsx","/@dropins/tools/src/components/Divider/Divider.tsx","/@dropins/tools/src/components/Price/Price.tsx","/@dropins/tools/src/components/RadioButton/RadioButton.tsx","/@dropins/tools/src/components/Button/Button.tsx","/@dropins/tools/src/components/Picker/Picker.tsx","/@dropins/tools/src/components/Field/Field.tsx","/@dropins/tools/src/components/ActionButton/ActionButton.tsx","/@dropins/tools/src/components/ActionButtonGroup/ActionButtonGroup.tsx","/@dropins/tools/src/components/Card/Card.tsx","/@dropins/tools/src/components/Checkbox/Checkbox.tsx","/@dropins/tools/src/components/ColorSwatch/ColorSwatch.tsx","/@dropins/tools/src/components/TextSwatch/TextSwatch.tsx","/@dropins/tools/src/components/ProgressSpinner/ProgressSpinner.tsx","/@dropins/tools/src/components/ImageSwatch/ImageSwatch.tsx","/@dropins/tools/src/components/Accordion/Accordion.tsx","/@dropins/tools/src/components/InLineAlert/InLineAlert.tsx","/@dropins/tools/src/components/Portal/Portal.tsx","/@dropins/tools/src/components/Modal/Modal.tsx","/@dropins/tools/src/components/CartItem/CartItem.tsx","/@dropins/tools/src/components/CartItem/CartItemSkeleton.tsx","/@dropins/tools/src/components/CartList/CartList.tsx","/@dropins/tools/src/components/PriceRange/PriceRange.tsx","/@dropins/tools/src/components/Breadcrumbs/Breadcrumbs.tsx","/@dropins/tools/src/components/AlertBanner/AlertBanner.tsx","/@dropins/tools/src/components/IllustratedMessage/IllustratedMessage.tsx","/@dropins/tools/src/components/ToggleButton/ToggleButton.tsx","/@dropins/tools/src/components/Header/Header.tsx","/@dropins/tools/src/components/Tag/Tag.tsx","/@dropins/tools/src/components/ContentGrid/ContentGrid.tsx","/@dropins/tools/src/components/Pagination/Pagination.tsx","/@dropins/tools/src/components/ProductItemCard/ProductItemCardSkeleton.tsx","/@dropins/tools/src/components/ProductItemCard/ProductItemCard.tsx","/@dropins/tools/src/components/InputFile/InputFile.tsx"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Skeleton/Skeleton.css';\n\nexport interface SkeletonRowProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n fullWidth?: boolean;\n lines?: number;\n size?: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\n variant?: 'heading' | 'row' | 'empty';\n multilineGap?: 'xsmall' | 'small' | 'medium' | 'big' | 'xbig';\n children?: string;\n}\n\nconst SINGLELINE = 1;\n\nexport const SkeletonRow: FunctionComponent<SkeletonRowProps> = ({\n className,\n fullWidth = false,\n lines = SINGLELINE,\n size = 'small',\n variant = 'row',\n children = null,\n multilineGap = 'medium',\n ...props\n}) => {\n const sharedClasses = [\n [`dropin-skeleton-row__${variant}`, variant],\n [`dropin-skeleton-row__${variant}-${size}`, variant && size],\n ];\n\n if (!children && variant === 'empty') {\n return (\n <div\n className={classes([\n 'dropin-skeleton-row dropin-skeleton-row__empty',\n className,\n ])}\n />\n );\n }\n\n if (children) {\n const svg = children.trim();\n return (\n <div\n {...props}\n class={classes([\n 'dropin-skeleton-row',\n [`dropin-skeleton-row--full`, fullWidth],\n className,\n ])}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n );\n }\n\n const isMultiline = lines > SINGLELINE;\n\n if (isMultiline === false) {\n return (\n <div\n {...props}\n class={classes([\n 'dropin-skeleton-row',\n [`dropin-skeleton-row--full`, fullWidth],\n 'dropin-skeleton--row__content',\n ...sharedClasses,\n className,\n ])}\n />\n );\n }\n\n return (\n <div\n {...props}\n style={{ '--multiline-gap-spacing': `var(--spacing-${multilineGap})` }}\n class={classes([\n 'dropin-skeleton-row--multiline',\n [`dropin-skeleton-row--full`, fullWidth],\n className,\n ])}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n class={classes([\n 'dropin-skeleton-row',\n [`dropin-skeleton-row--full`, fullWidth],\n 'dropin-skeleton--row__content',\n ...sharedClasses,\n ])}\n />\n ))}\n </div>\n );\n};\n\nexport interface SkeletonProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n rowGap?: 'xsmall' | 'small' | 'medium' | 'big' | 'xbig';\n}\n\nexport const Skeleton: FunctionComponent<SkeletonProps> = ({\n className,\n children,\n rowGap = 'medium',\n ...props\n}) => {\n return (\n <div\n style={{ '--row-gap-spacing': `var(--spacing-${rowGap})` }}\n {...props}\n className={classes(['dropin-skeleton', className])}\n role=\"status\"\n aria-label=\"Loading...\"\n >\n {children}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes } from '@adobe-commerce/elsie/lib/classes';\nimport { lazy, Suspense, SVGProps } from 'preact/compat';\nimport { useState, useEffect } from 'preact/hooks';\n\nimport '@adobe-commerce/elsie/components/Icon/Icon.css';\n\nexport type IconType = keyof typeof import('@adobe-commerce/elsie/icons');\n\nconst lazyIcons = {\n Add: lazy(() => import('@adobe-commerce/elsie/icons/Add.svg')),\n Bulk: lazy(() => import('@adobe-commerce/elsie/icons/Bulk.svg')),\n Burger: lazy(() => import('@adobe-commerce/elsie/icons/Burger.svg')),\n Cart: lazy(() => import('@adobe-commerce/elsie/icons/Cart.svg')),\n Check: lazy(() => import('@adobe-commerce/elsie/icons/Check.svg')),\n ChevronDown: lazy(() => import('@adobe-commerce/elsie/icons/ChevronDown.svg')),\n ChevronUp: lazy(() => import('@adobe-commerce/elsie/icons/ChevronUp.svg')),\n ChevronRight: lazy(() => import('@adobe-commerce/elsie/icons/ChevronRight.svg')),\n Close: lazy(() => import('@adobe-commerce/elsie/icons/Close.svg')),\n Heart: lazy(() => import('@adobe-commerce/elsie/icons/Heart.svg')),\n Minus: lazy(() => import('@adobe-commerce/elsie/icons/Minus.svg')),\n Placeholder: lazy(() => import('@adobe-commerce/elsie/icons/Placeholder.svg')),\n PlaceholderFilled: lazy(\n () => import('@adobe-commerce/elsie/icons/PlaceholderFilled.svg')\n ),\n Search: lazy(() => import('@adobe-commerce/elsie/icons/Search.svg')),\n SearchFilled: lazy(() => import('@adobe-commerce/elsie/icons/SearchFilled.svg')),\n Sort: lazy(() => import('@adobe-commerce/elsie/icons/Sort.svg')),\n Star: lazy(() => import('@adobe-commerce/elsie/icons/Star.svg')),\n View: lazy(() => import('@adobe-commerce/elsie/icons/View.svg')),\n User: lazy(() => import('@adobe-commerce/elsie/icons/User.svg')),\n Warning: lazy(() => import('@adobe-commerce/elsie/icons/Warning.svg')),\n Locker: lazy(() => import('@adobe-commerce/elsie/icons/Locker.svg')),\n Wallet: lazy(() => import('@adobe-commerce/elsie/icons/Wallet.svg')),\n Card: lazy(() => import('@adobe-commerce/elsie/icons/Card.svg')),\n Order: lazy(() => import('@adobe-commerce/elsie/icons/Order.svg')),\n Delivery: lazy(() => import('@adobe-commerce/elsie/icons/Delivery.svg')),\n OrderError: lazy(() => import('@adobe-commerce/elsie/icons/OrderError.svg')),\n OrderSuccess: lazy(() => import('@adobe-commerce/elsie/icons/OrderSuccess.svg')),\n PaymentError: lazy(() => import('@adobe-commerce/elsie/icons/PaymentError.svg')),\n CheckWithCircle: lazy(() => import('@adobe-commerce/elsie/icons/CheckWithCircle.svg')),\n WarningWithCircle: lazy(\n () => import('@adobe-commerce/elsie/icons/WarningWithCircle.svg')\n ),\n WarningFilled: lazy(() => import('@adobe-commerce/elsie/icons/WarningFilled.svg')),\n InfoFilled: lazy(() => import('@adobe-commerce/elsie/icons/InfoFilled.svg')),\n HeartFilled: lazy(() => import('@adobe-commerce/elsie/icons/HeartFilled.svg')),\n Trash: lazy(() => import('@adobe-commerce/elsie/icons/Trash.svg')),\n Eye: lazy(() => import('@adobe-commerce/elsie/icons/Eye.svg')),\n EyeClose: lazy(() => import('@adobe-commerce/elsie/icons/EyeClose.svg')),\n Date: lazy(() => import('@adobe-commerce/elsie/icons/Date.svg')),\n AddressBook: lazy(() => import('@adobe-commerce/elsie/icons/AddressBook.svg')),\n EmptyBox: lazy(() => import('@adobe-commerce/elsie/icons/EmptyBox.svg')),\n Coupon: lazy(() => import('@adobe-commerce/elsie/icons/Coupon.svg')),\n Gift: lazy(() => import('@adobe-commerce/elsie/icons/Gift.svg')),\n GiftCard: lazy(() => import('@adobe-commerce/elsie/icons/GiftCard.svg')),\n Edit: lazy(() => import('@adobe-commerce/elsie/icons/Edit.svg')),\n};\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'size'> {\n source?:\n | FunctionComponent<SVGProps<SVGSVGElement> & { title?: string }>\n | IconType\n | string;\n size?: '12' | '16' | '24' | '32' | '64' | '80';\n stroke?: '1' | '2' | '3' | '4';\n className?: string;\n title?: string;\n}\n\nexport type IconNode = FunctionComponent<\n SVGProps<SVGSVGElement> & { title?: string }\n>;\n\nfunction isValidUrl(source: string): boolean { // check for URL from same domain\n try {\n if (source.startsWith('//')) {\n const absoluteUrl = `${window.location.protocol}${source}`;\n const url = new URL(absoluteUrl);\n if (url.hostname !== window.location.hostname) {\n console.error(\n `[Icon] External URL rejected for security: ${source} - Only same-domain URLs are allowed`\n );\n return false;\n }\n return true;\n }\n const url = new URL(source);\n \n if (url.hostname !== window.location.hostname) {\n console.error(`[Icon] External URL rejected for security: ${source} - Only same-domain URLs are allowed`);\n return false;\n }\n \n return true;\n } catch {\n console.error(`[Icon] Invalid URL format: ${source}`);\n return false;\n }\n}\n\nfunction UrlSvgLoader({\n url,\n ...props\n}: SVGProps<SVGSVGElement> & { url: string }) {\n const [svgContent, setSvgContent] = useState<string>('');\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(false);\n\n useEffect(() => {\n fetch(url)\n .then(response => {\n if (!response.ok) {\n console.error(`[Icon] Failed to fetch SVG: ${response.status} ${response.statusText}`);\n throw error;\n }\n return response.text();\n })\n .then(content => {\n // Check if content is valid SVG\n try {\n const parser = new DOMParser();\n const doc = parser.parseFromString(content, \"image/svg+xml\");\n const svg = doc.querySelector('svg');\n if (!svg) {\n throw new Error(\"No <svg> element found\");\n }\n // Success!\n } catch(e: unknown) {\n if (e instanceof Error ) {\n console.error(`[Icon] Invalid SVG content from ${url}: ${e.message}`);\n } else {\n console.error(`[Icon] Invalid SVG content from ${url}: ${String(e)}`);\n }\n setError(true);\n setLoading(false);\n }\n \n\n // Process SVG content to ensure proper sizing and accessibility\n let processedContent = content;\n\n if (props.width) {\n processedContent = processedContent.replace(\n /<svg([^>]*)\\s+width\\s*=\\s*[\"'][^\"']*[\"']/gi,\n '<svg$1'\n );\n processedContent = processedContent.replace(\n /<svg/i,\n `<svg width=\"${props.width}\"`\n );\n }\n\n if (props.height) {\n processedContent = processedContent.replace(\n /<svg([^>]*)\\s+height\\s*=\\s*[\"'][^\"']*[\"']/gi,\n '<svg$1'\n );\n processedContent = processedContent.replace(\n /<svg/i,\n `<svg height=\"${props.height}\"`\n );\n }\n \n if (props.title) {\n processedContent = processedContent.replace(/<title[^>]*>.*?<\\/title>/gi, '');\n processedContent = processedContent.replace(\n /<svg([^>]*)>/i,\n `<svg$1><title>${props.title}</title>`\n );\n }\n \n setSvgContent(processedContent);\n setLoading(false);\n })\n .catch((error) => {\n if (error instanceof Error) {\n console.error(`[Icon] ${error.message}`);\n } else {\n console.error(`[Icon] ${String(error)}`);\n }\n setError(true);\n setLoading(false);\n });\n }, [url, props.width, props.height, props.title]);\n\n if (loading || error) {\n return <svg {...props} />;\n }\n\n return (\n <span\n className={props.className}\n style={{\n width: String(props.width),\n height: String(props.height),\n display: 'inline-flex',\n lineHeight: 0,\n }}\n dangerouslySetInnerHTML={{ __html: svgContent }}\n />\n );\n}\n\nexport function Icon({\n source: Source,\n size = '24',\n stroke = '2',\n viewBox = '0 0 24 24',\n className,\n ...props\n}: IconProps) {\n\n const defaultProps = {\n className: classes([\n 'dropin-icon',\n `dropin-icon--shape-stroke-${stroke}`,\n className,\n ]),\n width: size,\n height: size,\n viewBox,\n };\n\n // Only validate strings that look like URLs (start with http, //, or /)\n const isLikelyUrl =\n typeof Source === 'string' &&\n (Source.startsWith('http') ||\n Source.startsWith('//') ||\n Source.startsWith('/'));\n\n if (isLikelyUrl && isValidUrl(Source)) {\n return (\n <Suspense fallback={<svg {...props} {...defaultProps} />}>\n <UrlSvgLoader url={Source} {...props} {...defaultProps}/>\n </Suspense>\n );\n }\n\n const LazyIcon = typeof Source === 'string' && Source in lazyIcons\n ? lazyIcons[Source as IconType]\n : null;\n\n const isRejectedUrl = isLikelyUrl && !isValidUrl(Source);\n\n return (\n <Suspense fallback={<svg {...props} {...defaultProps} />}>\n {LazyIcon ? (\n <LazyIcon {...props} {...defaultProps} />\n ) : isRejectedUrl ? (\n <svg {...props} {...defaultProps} />\n ) : (\n // @ts-ignore\n <Source {...props} {...defaultProps} />\n )}\n </Suspense>\n );\n}\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useState, useCallback, useEffect } from 'preact/hooks';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, debounce } from '@adobe-commerce/elsie/lib';\nimport { Add, Minus } from '@adobe-commerce/elsie/icons';\nimport { Icon } from '@adobe-commerce/elsie/components/Icon';\nimport { Localizer, Text } from '@adobe-commerce/elsie/i18n';\nimport '@adobe-commerce/elsie/components/Incrementer/Incrementer.css';\n\nexport interface IncrementerProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'size'> {\n name?: string;\n size?: 'medium' | 'large';\n onValue?: (value: any) => void;\n onUpdateError?: (error: Error) => void;\n error?: boolean;\n success?: boolean;\n min?: number;\n max?: number;\n disabled?: boolean;\n maxLength?: number;\n}\n\nexport const Incrementer: FunctionComponent<IncrementerProps> = ({\n name,\n value = '1',\n className,\n disabled,\n error,\n success,\n min,\n max,\n onValue,\n onUpdateError,\n size = 'medium',\n ...props\n}) => {\n const [currentValue, setCurrentValue] = useState<number>(Number(value));\n const minValue = Number(min);\n const maxValue = Number(max);\n const isInvalid = error || currentValue < minValue || currentValue > maxValue;\n\n const errorMessage =\n currentValue < minValue\n ? 'Dropin.Incrementer.minQuantityMessage'\n : currentValue > maxValue\n ? 'Dropin.Incrementer.maxQuantityMessage'\n : 'Dropin.Incrementer.errorMessage';\n\n // Add this effect to synchronize internal state with external value prop\n useEffect(() => {\n const propValue = Number(value);\n if (propValue !== currentValue) {\n setCurrentValue(propValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnValueHandler = useCallback(\n debounce(async (newValue: any) => {\n if (onValue) {\n try {\n onValue(newValue);\n } catch (e) {\n if (onUpdateError) {\n onUpdateError(e as Error);\n }\n }\n }\n }, 200),\n [onValue, onUpdateError]\n );\n\n const handleIncrementer = (_value: number) => {\n let newValue = _value;\n debouncedOnValueHandler(newValue);\n setCurrentValue(newValue);\n };\n\n return (\n <div\n className={classes([\n 'dropin-incrementer',\n `dropin-incrementer--${size}`,\n className,\n ])}\n >\n <div\n className={classes([\n 'dropin-incrementer__content',\n `dropin-incrementer__content--${size}`,\n [`dropin-incrementer__content--error`, isInvalid],\n [`dropin-incrementer__content--success`, success],\n [`dropin-incrementer__content--disabled`, disabled],\n ])}\n >\n {/* Minus Button */}\n <div\n className={classes([\n 'dropin-incrementer__button-container',\n [`dropin-incrementer__button-container--disabled`, disabled],\n ])}\n >\n <Localizer>\n <button\n type=\"button\"\n className={classes([\n 'dropin-incrementer__decrease-button',\n [`dropin-incrementer__decrease-button--disabled`, disabled],\n ])}\n onClick={() => handleIncrementer(currentValue - 1)}\n disabled={disabled || currentValue < minValue + 1}\n aria-label={\n (<Text id=\"Dropin.Incrementer.decreaseLabel\" />) as any\n }\n >\n <Icon\n source={Minus}\n size=\"16\"\n stroke=\"1\"\n viewBox=\"4 2 20 20\"\n className=\"dropin-incrementer__down\"\n />\n </button>\n </Localizer>\n </div>\n\n {/* Input Field */}\n <input\n className=\"dropin-incrementer__input\"\n max={max}\n min={min}\n step={1}\n type=\"number\"\n name={name}\n value={currentValue}\n disabled={disabled}\n onBlur={() => {\n handleIncrementer(Number(currentValue));\n }}\n onChange={(e) => {\n const newValue = e.currentTarget.value;\n if (newValue !== '') {\n handleIncrementer(Number(newValue));\n }\n }}\n {...props}\n />\n\n <div\n className={classes([\n 'dropin-incrementer__button-container',\n [`dropin-incrementer__button-container--disabled`, disabled],\n ])}\n >\n {/* Plus/Add button */}\n <Localizer>\n <button\n type=\"button\"\n className={classes([\n 'dropin-incrementer__increase-button',\n [`dropin-incrementer__increase-button--disabled`, disabled],\n ])}\n onClick={() => handleIncrementer(currentValue + 1)}\n disabled={disabled || currentValue > maxValue - 1}\n aria-label={\n (<Text id=\"Dropin.Incrementer.increaseLabel\" />) as any\n }\n >\n <Icon\n source={Add}\n size=\"16\"\n stroke=\"1\"\n viewBox=\"4 2 20 20\"\n className=\"dropin-incrementer__add\"\n />\n </button>\n </Localizer>\n </div>\n </div>\n {isInvalid && (\n <p className=\"dropin-incrementer__content--error-message\">\n <Text\n id={errorMessage}\n fields={{ minQuantity: min, maxQuantity: max }}\n />\n </p>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { Icon } from '@adobe-commerce/elsie/components/Icon';\nimport '@adobe-commerce/elsie/components/Input/Input.css';\nimport { CheckWithCircle, WarningWithCircle } from '@adobe-commerce/elsie/icons';\nimport { VComponent, classes, debounce } from '@adobe-commerce/elsie/lib';\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useCallback } from 'preact/hooks';\n\nexport interface InputProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'size' | 'icon'> {\n id?: string;\n name?: string;\n variant?: 'primary' | 'secondary';\n disabled?: boolean;\n error?: boolean;\n floatingLabel?: string;\n onUpdateError?: (error: Error) => void;\n onValue?: (value: any) => void;\n size?: 'medium' | 'large';\n success?: boolean;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n maxLength?: number;\n}\n\nexport const Input: FunctionComponent<InputProps> = ({\n name,\n value,\n variant = 'primary',\n className,\n disabled,\n error,\n floatingLabel,\n onValue,\n onUpdateError,\n size = 'medium',\n icon,\n maxLength,\n success,\n ...props\n}) => {\n const id = props?.id || name || `dropin-input-${Math.random().toString(36)}`;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnValueHandler = useCallback(\n debounce(async (newValue: any) => {\n if (onValue) {\n try {\n await onValue(newValue);\n } catch (e) {\n if (onUpdateError) {\n onUpdateError(e as Error);\n }\n }\n }\n }, 200),\n [onValue, onUpdateError]\n );\n\n const handleOnValue = (e: Event) => {\n const input = e.target as HTMLInputElement;\n\n debouncedOnValueHandler(input.value.trim());\n };\n\n return (\n <div\n className={classes([\n 'dropin-input-container',\n `dropin-input-container--${variant}`,\n [`dropin-input-container--floating`, !!floatingLabel],\n ['dropin-input-container--disabled', disabled],\n ])}\n >\n {icon && (\n <VComponent\n node={icon}\n className={classes([\n 'dropin-input__field-icon--left',\n icon.props.className,\n ])}\n />\n )}\n <div className=\"dropin-input-label-container\">\n {/* Input */}\n <input\n id={id}\n onChange={handleOnValue}\n type=\"text\"\n maxLength={maxLength}\n name={name}\n value={value}\n {...props}\n className={classes([\n 'dropin-input',\n `dropin-input--${size}`,\n `dropin-input--${variant}`,\n [`dropin-input--error`, !!error],\n [`dropin-input--success`, !!success],\n ['dropin-input--disabled', disabled],\n [`dropin-input--floating`, !!floatingLabel],\n [`dropin-input--icon-left`, !!icon],\n className,\n ])}\n disabled={disabled}\n />\n\n {/* Floating Label */}\n {floatingLabel && (\n <label\n htmlFor={id}\n className={classes([\n [`dropin-input__label--floating`, !!floatingLabel],\n [`dropin-input__label--floating--icon-left`, !!icon],\n [`dropin-input__label--floating--error`, !!error],\n ])}\n >\n {floatingLabel}\n </label>\n )}\n </div>\n\n {error && (\n <div\n className={classes([\n 'dropin-input__field-icon--right',\n 'dropin-input__field-icon--error',\n ])}\n >\n <Icon\n source={WarningWithCircle}\n size=\"16\"\n stroke=\"2\"\n className=\"dropin-input--warning-icon\"\n viewBox=\"-1 -1 26 26\"\n />\n </div>\n )}\n\n {success && (\n <div\n className={classes([\n 'dropin-input__field-icon--right',\n 'dropin-input__field-icon--success',\n ])}\n >\n <Icon\n source={CheckWithCircle}\n size=\"16\"\n stroke=\"2\"\n className=\"dropin-input--success-icon\"\n viewBox=\"-1 -1 26 26\"\n />\n </div>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useRef, useState } from 'preact/hooks';\nimport { classes, isIOSMobileDevice } from '@adobe-commerce/elsie/lib';\nimport { JSX } from 'preact/compat';\nimport { Field, Icon, Input, InputProps } from '@adobe-commerce/elsie/components';\nimport { Date } from '@adobe-commerce/elsie/icons';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nimport '@adobe-commerce/elsie/components/InputDate/InputDate.css';\nimport { useCallback } from 'react';\n\nexport interface InputDateProps extends Omit<InputProps, 'error' | 'value'> {\n label?: string;\n name?: string;\n error?: string;\n value?: Date;\n}\n\nexport const InputDate: FunctionComponent<InputDateProps> = ({\n name = '',\n error,\n value,\n label,\n onChange,\n onBlur,\n ...props\n}) => {\n const [internalValue, setInternalValue] = useState(value?.toString() ?? '');\n const iosInputRef = useRef<HTMLInputElement>(null);\n const dictionary = useText({\n picker: 'Dropin.InputDate.picker',\n });\n\n const handleOnFocus: JSX.MouseEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n event.currentTarget.setAttribute('type', 'date');\n\n if (!isIOSMobileDevice()) return;\n\n iosInputRef.current.focus();\n },\n []\n );\n\n const handleOnClick: JSX.MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n const input = event.currentTarget.parentElement?.querySelector('input');\n input?.focus();\n input?.showPicker();\n },\n []\n );\n\n const handleOnBlur: JSX.MouseEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n event.currentTarget.setAttribute('type', 'text');\n onBlur?.(event);\n },\n [onBlur]\n );\n\n const handleInputChange: JSX.MouseEventHandler<HTMLInputElement> =\n useCallback(\n (event) => {\n setInternalValue(event.target.value);\n onChange?.(event);\n },\n [onChange]\n );\n\n return (\n <div className={classes(['dropin-input-date'])}>\n {/* This simple input is needed only for iOS devices to trigger the date picker. */}\n {isIOSMobileDevice() ? (\n <input\n ref={iosInputRef}\n data-testid=\"inputDateIos\"\n className=\"dropin-input-date__input--ios\"\n type=\"date\"\n onChange={handleInputChange}\n />\n ) : null}\n <Field error={error}>\n <Input\n data-testid=\"input-date\"\n error={!!error}\n name={name}\n value={internalValue}\n placeholder={label}\n floatingLabel={label}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n onChange={handleInputChange}\n aria-labelledby={label}\n className=\"dropin-input-date__input\"\n {...props}\n />\n </Field>\n\n <button\n type=\"button\"\n data-testid=\"dropin-input-date__icon\"\n className=\"dropin-input-date__icon\"\n aria-label={dictionary.picker}\n onClick={handleOnClick}\n >\n <Icon source={Date} size=\"24\" />\n </button>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, JSX } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n Check,\n Close as ErrorValidation,\n Minus as PendingValidation,\n} from '@adobe-commerce/elsie/icons';\n\nimport '@adobe-commerce/elsie/components/InputPassword/PasswordStatusIndicator/PasswordStatusIndicator.css';\n\ntype statusTypes = '' | 'success' | 'error' | 'pending';\n\nexport interface ValidateLengthConfigProps {\n status?: statusTypes;\n icon?: statusTypes;\n message?: string;\n}\n\nexport interface PasswordStatusIndicatorProps {\n validateLengthConfig?: ValidateLengthConfigProps;\n uniqueSymbolsStatus?: statusTypes;\n minLength?: number;\n requiredCharacterClasses?: number;\n}\n\nconst getIcon: { [key: string]: JSX.Element } = {\n pending: <PendingValidation />,\n success: <Check />,\n error: <ErrorValidation style={{ fill: 'red' }} />,\n};\n\nexport const PasswordStatusIndicator: FunctionComponent<\n PasswordStatusIndicatorProps & HTMLAttributes<HTMLDivElement>\n> = ({\n minLength = 0,\n requiredCharacterClasses = 0,\n uniqueSymbolsStatus = 'pending',\n validateLengthConfig = { status: '', icon: '', message: '' },\n}) => {\n const translations = useText({\n chartTwoSymbols: 'Dropin.PasswordStatusIndicator.chartTwoSymbols',\n chartThreeSymbols: 'Dropin.PasswordStatusIndicator.chartThreeSymbols',\n chartFourSymbols: 'Dropin.PasswordStatusIndicator.chartFourSymbols',\n });\n\n const getMessage = (chart: number) => {\n switch (chart) {\n case 2:\n return translations.chartTwoSymbols;\n case 3:\n return translations.chartThreeSymbols;\n case 4:\n return translations.chartFourSymbols;\n default:\n return '';\n }\n };\n\n return (\n <div className={classes(['dropin-password-status-indicator'])}>\n {minLength > 0 ? (\n <div\n className={`dropin-password-status-indicator__item dropin-password-status-indicator__item--${validateLengthConfig.status}`}\n data-testid={`dropin-password-status-indicator__item--${validateLengthConfig.icon}`}\n >\n {getIcon[validateLengthConfig.icon as string]}\n <span className={`${validateLengthConfig.status}`}>\n {validateLengthConfig.message}\n </span>\n </div>\n ) : null}\n {requiredCharacterClasses >= 2 ? (\n <div\n className={`dropin-password-status-indicator__item dropin-password-status-indicator__item--${uniqueSymbolsStatus}`}\n data-testid={`dropin-password-status-indicator__item--${uniqueSymbolsStatus}`}\n >\n {getIcon[uniqueSymbolsStatus]}\n <span className={`pending`}>\n {getMessage(requiredCharacterClasses)}\n </span>\n </div>\n ) : null}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useCallback, useState } from 'preact/hooks';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Locker, EyeClose, Eye } from '@adobe-commerce/elsie/icons';\nimport { Button, Field, Input, Icon } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n PasswordStatusIndicator,\n PasswordStatusIndicatorProps,\n} from './PasswordStatusIndicator';\nimport { HTMLAttributes } from 'preact/compat';\n\nimport '@adobe-commerce/elsie/components/InputPassword/InputPassword.css';\n\nexport interface InputPasswordProps\n extends PasswordStatusIndicatorProps,\n Omit<HTMLAttributes<HTMLDivElement>, 'minLength'> {\n placeholder?: string;\n floatingLabel?: string;\n defaultValue?: string;\n className?: string;\n name?: string;\n autoComplete?: string;\n errorMessage?: string | undefined;\n required?: boolean;\n hideStatusIndicator?: boolean;\n onValue?: (value: any) => void;\n onBlur?: (event: Event) => void;\n}\n\nexport const InputPassword: FunctionComponent<InputPasswordProps> = ({\n placeholder,\n floatingLabel,\n children,\n name,\n required,\n className,\n minLength,\n autoComplete,\n defaultValue = '',\n hideStatusIndicator = false,\n uniqueSymbolsStatus,\n validateLengthConfig,\n requiredCharacterClasses,\n errorMessage,\n onValue,\n onBlur,\n ...props\n}) => {\n const translations = useText({\n placeholder: 'Dropin.InputPassword.placeholder',\n floatingLabel: 'Dropin.InputPassword.floatingLabel',\n buttonShowTitle: 'Dropin.InputPassword.buttonShowTitle',\n buttonHideTitle: 'Dropin.InputPassword.buttonHideTitle',\n });\n\n const [showPassword, setShowPassword] = useState(false);\n\n const toggleShowPassword = useCallback(() => {\n setShowPassword((prevShowPassword) => !prevShowPassword);\n }, []);\n\n const title = !showPassword\n ? translations.buttonShowTitle\n : translations.buttonHideTitle;\n\n return (\n <div\n data-testid=\"passwordFieldInput\"\n className={classes([\n 'dropin-input-password',\n ['dropin-input-password--error', errorMessage],\n className,\n ])}\n {...props}\n >\n <Field error={errorMessage}>\n <Input\n autoComplete={autoComplete}\n name={name ?? 'password'}\n type={!showPassword ? 'password' : 'text'}\n placeholder={placeholder || translations.placeholder}\n floatingLabel={floatingLabel || translations.floatingLabel}\n aria-label={translations.placeholder}\n aria-required={required || true}\n aria-invalid={!!errorMessage}\n aria-describedby=\"password-feedback\"\n required={required || false}\n value={defaultValue}\n onValue={onValue}\n icon={<Locker />}\n onBlur={onBlur}\n data-testid=\"passwordInput\"\n />\n </Field>\n <Button\n aria-label={title}\n title={title}\n type={'button'}\n data-testid=\"toggle-password-icon\"\n variant=\"tertiary\"\n className={classes([\n 'dropin-input-password__eye-icon',\n `dropin-input-password__eye-icon--${showPassword ? 'show' : 'hide'}`,\n className,\n ])}\n onClick={toggleShowPassword}\n >\n <Icon\n focusable={false}\n aria-hidden={showPassword}\n source={!showPassword ? EyeClose : Eye}\n />\n </Button>\n {hideStatusIndicator ? null : (\n <PasswordStatusIndicator\n minLength={minLength}\n requiredCharacterClasses={requiredCharacterClasses}\n validateLengthConfig={validateLengthConfig}\n uniqueSymbolsStatus={uniqueSymbolsStatus}\n />\n )}\n {children}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { HTMLAttributes } from 'preact/compat';\nimport '@adobe-commerce/elsie/components/TextArea/TextArea.css';\nimport { useRef, useEffect, useId } from 'preact/hooks';\n\nexport interface TextAreaProps extends HTMLAttributes<HTMLTextAreaElement> {\n id?: string;\n name?: string;\n disabled?: boolean;\n errorMessage?: string;\n}\n\nexport const TextArea: FunctionComponent<TextAreaProps> = ({\n disabled,\n name = '',\n errorMessage,\n value,\n label,\n className,\n onChange,\n onBlur,\n ...props\n}) => {\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n const id = useId();\n const error = !!errorMessage?.length;\n\n useEffect(() => {\n const textArea = textareaRef.current;\n if (!textArea) return;\n\n textArea.style.height = 'auto';\n textArea.style.height = `${textArea.scrollHeight}px`;\n }, [value]);\n\n return (\n <div\n className={classes(['dropin-textarea-container', className])}\n data-testid=\"dropin-textarea-container\"\n >\n <textarea\n ref={textareaRef}\n data-testid=\"dropin-textarea-field\"\n className={classes([\n 'dropin-textarea',\n [`dropin-textarea--error`, error],\n ['dropin-textarea--disabled', !!disabled],\n ])}\n id={id}\n placeholder={label}\n name={name}\n value={value}\n disabled={disabled}\n onBlur={onBlur}\n onChange={onChange}\n {...props}\n />\n <label\n htmlFor={id}\n className={classes([\n `dropin-textarea__label--floating`,\n [`dropin-textarea__label--floating--error`, error],\n ])}\n >\n {label}\n </label>\n {error ? (\n <div\n className={classes([\n `dropin-textarea__label--floating--text`,\n [`dropin-textarea__label--floating--error`, error],\n ])}\n >\n {errorMessage}\n </div>\n ) : null}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Divider/Divider.css';\n\nexport interface DividerProps extends HTMLAttributes<HTMLHRElement> {\n variant?: 'primary' | 'secondary';\n}\n\nexport const Divider: FunctionComponent<DividerProps> = ({\n variant = 'primary',\n className,\n}) => {\n return (\n <hr\n role=\"separator\"\n className={classes([\n 'dropin-divider',\n `dropin-divider--${variant}`,\n className,\n ])}\n />\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes, useMemo } from 'preact/compat';\nimport { classes, getGlobalLocale } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Price/Price.css';\n\nexport interface PriceProps\n extends Omit<HTMLAttributes<HTMLSpanElement>, 'size'> {\n amount?: number;\n currency?: string | null;\n locale?: string;\n formatOptions?: {\n [key: string]: any;\n };\n variant?: 'default' | 'strikethrough';\n weight?: 'bold' | 'normal';\n sale?: boolean;\n size?: 'small' | 'medium' | 'large';\n}\n\nexport const Price: FunctionComponent<PriceProps> = ({\n amount = 0,\n currency,\n locale,\n variant = 'default',\n weight = 'bold',\n className,\n children,\n sale = false,\n formatOptions = {},\n size = 'small',\n ...props\n}) => {\n // Determine the locale to use: prop locale > global locale > browser locale\n const effectiveLocale = useMemo(() => {\n if (locale) {\n return locale;\n }\n const globalLocale = getGlobalLocale();\n if (globalLocale) {\n return globalLocale;\n }\n // Fallback to browser locale or default\n return process.env.LOCALE && process.env.LOCALE !== 'undefined' ? process.env.LOCALE : 'en-US';\n }, [locale]);\n\n const formatter = useMemo(\n () => {\n const params: Intl.NumberFormatOptions = {\n style: 'currency',\n currency: currency || 'USD',\n // These options are needed to round to whole numbers if that's what you want.\n minimumFractionDigits: 2, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)\n maximumFractionDigits: 2, // (causes 2500.99 to be printed as $2,501)\n ...formatOptions,\n }\n try {\n return new Intl.NumberFormat(effectiveLocale, params);\n } catch (error) {\n console.error(`Error creating Intl.NumberFormat instance for locale ${effectiveLocale}. Falling back to en-US.`, error);\n return new Intl.NumberFormat('en-US', params);\n }\n },\n [effectiveLocale, currency, formatOptions]\n );\n\n const formattedAmount = useMemo(\n () => formatter.format(amount),\n [amount, formatter]\n );\n\n return (\n <span\n {...props}\n className={classes([\n 'dropin-price',\n `dropin-price--${variant}`,\n `dropin-price--${size}`,\n `dropin-price--${weight}`,\n ['dropin-price--sale', sale],\n className,\n ])}\n >\n {formattedAmount}\n </span>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/RadioButton/RadioButton.css';\n\nexport interface RadioButtonProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'size' | 'label'> {\n label: string | VNode<HTMLAttributes<HTMLElement>>;\n name: string;\n value: string;\n size?: 'medium' | 'large';\n checked?: boolean;\n disabled?: boolean;\n error?: boolean;\n description?: string;\n busy?: boolean;\n}\n\nexport const RadioButton: FunctionComponent<RadioButtonProps> = ({\n name,\n label,\n value,\n size = 'medium',\n checked = false,\n disabled = false,\n error = false,\n description = '',\n busy = false,\n className,\n children,\n ...props\n}) => {\n return (\n <label\n className={classes([\n className,\n 'dropin-radio-button',\n ['dropin-radio-button--error', error],\n ['dropin-radio-button--disabled', disabled],\n ])}\n >\n <input\n name={name}\n value={value}\n checked={checked}\n disabled={disabled}\n type=\"radio\"\n className={classes([\n 'dropin-radio-button__input',\n ['dropin-radio-button__input--error', error],\n ['dropin-radio-button__input--disabled', disabled],\n ])}\n aria-busy={busy}\n {...props}\n />\n <span\n className={classes([\n 'dropin-radio-button__label',\n `dropin-radio-button__label--${size}`,\n ['dropin-radio-button__label--error', error],\n ['dropin-radio-button__label--disabled', disabled],\n ])}\n >\n {label}\n </span>\n <span\n className={classes([\n 'dropin-radio-button__description',\n `dropin-radio-button__description--${size}`,\n ['dropin-radio-button__description--disabled', disabled],\n ])}\n >\n {description}\n </span>\n </label>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ComponentChildren, FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Button/Button.css';\n\nexport interface ButtonProps\n extends Omit<\n HTMLAttributes<HTMLButtonElement | HTMLAnchorElement>,\n 'size' | 'icon'\n > {\n variant?: 'primary' | 'secondary' | 'tertiary';\n size?: 'medium' | 'large';\n children?: ComponentChildren;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n disabled?: boolean;\n active?: boolean;\n activeChildren?: ComponentChildren;\n activeIcon?: VNode<HTMLAttributes<SVGSVGElement>>;\n}\n\nexport const Button: FunctionComponent<ButtonProps> = ({\n value,\n variant = 'primary',\n size = 'medium',\n icon,\n className,\n children,\n disabled = false,\n active = false,\n activeChildren,\n activeIcon,\n href,\n ...props\n}) => {\n let buttonType = 'dropin-button';\n\n if (\n (icon && !children) ||\n (icon && active && !activeChildren) ||\n (!icon && active && activeIcon)\n ) {\n buttonType = 'dropin-iconButton';\n }\n\n if (active && activeChildren) {\n buttonType = 'dropin-button';\n }\n\n className = classes([\n buttonType,\n `${buttonType}--${size}`,\n `${buttonType}--${variant}`,\n [`${buttonType}--${variant}--disabled`, disabled],\n children && icon && `${buttonType}--with-icon`,\n !children && activeChildren && icon && `${buttonType}--with-icon`,\n active && activeIcon && `${buttonType}--with-icon`,\n className,\n ]);\n\n const iconClassName = classes([\n 'dropin-button-icon',\n `dropin-button-icon--${variant}`,\n [`dropin-button-icon--${variant}--disabled`, disabled],\n icon?.props.className,\n ]);\n\n const attributes = href\n ? {\n node: <a />,\n role: 'link',\n href,\n ...props,\n disabled,\n active,\n onKeyDown: (event: KeyboardEvent) => {\n if (disabled) {\n event.preventDefault();\n }\n },\n tabIndex: disabled ? -1 : 0,\n }\n : {\n node: <button />,\n role: 'button',\n ...props,\n value,\n disabled,\n active,\n };\n\n return (\n <VComponent {...attributes} className={className}>\n {icon && !active && <VComponent node={icon} className={iconClassName} />}\n\n {activeIcon && active && (\n <VComponent node={activeIcon} className={iconClassName} />\n )}\n\n {children &&\n !active &&\n (typeof children === 'string' ? <span>{children}</span> : children)}\n\n {active &&\n activeChildren &&\n (typeof activeChildren === 'string' ? (\n <span>{activeChildren}</span>\n ) : (\n activeChildren\n ))}\n </VComponent>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { Icon } from '@adobe-commerce/elsie/components';\nimport '@adobe-commerce/elsie/components/Picker/Picker.css';\nimport { ChevronDown } from '@adobe-commerce/elsie/icons';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useEffect, useState } from 'preact/compat';\n\ntype PickerValue = string | null;\n\nexport interface PickerOption {\n value: PickerValue;\n text?: string;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n disabled?: boolean;\n}\n\nexport interface PickerProps\n extends Omit<HTMLAttributes<HTMLSelectElement>, 'value' | 'size' | 'icon'> {\n id?: string;\n name?: string;\n value?: PickerValue;\n placeholder?: string;\n variant?: 'primary' | 'secondary';\n size?: 'medium' | 'large';\n floatingLabel?: string;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n options?: PickerOption[];\n defaultOption?: PickerOption;\n disabled?: boolean;\n error?: boolean;\n handleSelect?: (event: Event) => void;\n}\n\nfunction findSelectedValue(\n value?: PickerValue,\n defaultOption?: PickerOption,\n placeholder?: string,\n floatingLabel?: string,\n firstAvailableOption?: PickerOption\n) {\n if (value) return value;\n if (defaultOption) return defaultOption.value;\n if (placeholder || floatingLabel) return '';\n if (firstAvailableOption) return firstAvailableOption.value;\n return null;\n}\n\nexport const Picker: FunctionComponent<PickerProps> = ({\n name,\n value = null,\n options,\n variant = 'primary',\n floatingLabel,\n size = 'medium',\n handleSelect = () => {},\n disabled = false,\n error = false,\n placeholder,\n defaultOption,\n icon,\n className,\n ...props\n}) => {\n const id = props?.id || name || `dropin-picker-${Math.random().toString(36)}`;\n const isRequired = !!props?.required;\n\n // find the first option that is not disabled\n const firstAvailableOption = options?.find((option) => !option.disabled);\n\n const [selectedValue, setSelectedValue] = useState<PickerValue>(() => {\n return findSelectedValue(\n value,\n defaultOption,\n placeholder,\n floatingLabel,\n firstAvailableOption\n );\n });\n\n useEffect(() => {\n setSelectedValue(\n findSelectedValue(\n value,\n defaultOption,\n placeholder,\n floatingLabel,\n firstAvailableOption\n )\n );\n }, [value, defaultOption, placeholder, floatingLabel, firstAvailableOption]);\n\n const handleOptionClick = (event: Event) => {\n const { options, value } = event.target as HTMLSelectElement;\n\n for (const element of options) {\n if (element.selected) {\n setSelectedValue(value);\n handleSelect(event);\n }\n }\n };\n\n const optionsListItems = options?.map((option) => {\n const { value, text, disabled } = option;\n const selected = value === selectedValue;\n\n return (\n <option\n value={value as string}\n key={value}\n selected={selected}\n disabled={disabled}\n className={classes(['dropin-picker__option'])}\n >\n {text}\n </option>\n );\n });\n\n const isSelected = !!selectedValue;\n\n const hasToDisplayPlaceholder = () => {\n return (!isRequired || !isSelected) && (floatingLabel || placeholder);\n };\n\n return (\n <div\n className={classes([\n className,\n 'dropin-picker',\n `dropin-picker__${size}`,\n ['dropin-picker__floating', !!floatingLabel],\n ['dropin-picker__selected', isSelected],\n ['dropin-picker__error', error],\n ['dropin-picker__disabled', disabled],\n ['dropin-picker__icon', icon],\n ])}\n >\n {icon && (\n // @ts-ignore\n <icon.type\n {...icon.props}\n className={'dropin-picker__icon--placeholder'}\n />\n )}\n\n <select\n id={id}\n className={classes([\n 'dropin-picker__select',\n `dropin-picker__select--${variant}`,\n `dropin-picker__select--${size}`,\n ['dropin-picker__select--floating', !!floatingLabel],\n ])}\n name={name}\n aria-label={name}\n disabled={disabled}\n onChange={handleOptionClick}\n {...props}\n >\n {hasToDisplayPlaceholder() && (\n <option\n selected={!isSelected}\n value={''}\n key={value}\n className={classes([\n 'dropin-picker__option dropin-picker__placeholder',\n ])}\n >\n {floatingLabel ?? placeholder}\n </option>\n )}\n\n {optionsListItems}\n </select>\n\n <Icon\n source={ChevronDown}\n size=\"24\"\n stroke=\"2\"\n className=\"dropin-picker__chevronDown\"\n />\n\n {floatingLabel && isSelected && (\n <label\n htmlFor={id}\n className={classes(['dropin-picker__floatingLabel', !!floatingLabel])}\n >\n {floatingLabel}\n </label>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport '@adobe-commerce/elsie/components/Field/Field.css';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\n\nexport interface FieldProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n label?: string;\n error?: string;\n hint?: string;\n success?: string;\n disabled?: boolean;\n children?: VNode;\n size?: 'medium' | 'large';\n}\n\nexport const Field: FunctionComponent<FieldProps> = ({\n className,\n label,\n error,\n hint,\n success,\n size = 'medium',\n disabled = false,\n children,\n ...props\n}) => {\n const id =\n children?.props?.id ?? `dropin-field-${Math.random().toString(36)}`;\n const ChildComponent =\n children && typeof children.type !== 'string' ? children.type : null;\n\n return (\n <div {...props} className={classes(['dropin-field', className])}>\n {label && (\n <label\n className={classes([\n 'dropin-field__label',\n ['dropin-field__label--disabled', disabled],\n `dropin-field__label--${size}`,\n ])}\n htmlFor={id}\n >\n {label}\n </label>\n )}\n\n <div className={classes(['dropin-field__content'])}>\n {ChildComponent && children && (\n <ChildComponent\n {...children.props}\n id={id}\n key={children.key}\n disabled={disabled}\n size={size}\n error={!!error}\n success={!!success && !error}\n />\n )}\n </div>\n\n <div\n className={classes([\n 'dropin-field__hint',\n [`dropin-field__hint--${size}`, size],\n ['dropin-field__hint--error', !!error],\n ['dropin-field__hint--success', !!success && !error],\n ['dropin-field__hint--disabled', !!disabled],\n ])}\n >\n {error || success || hint}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ComponentChildren, FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ActionButton/ActionButton.css';\n\nexport interface ActionButtonProps\n extends Omit<HTMLAttributes<HTMLButtonElement>, 'icon'> {\n children?: ComponentChildren;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n active?: boolean;\n disabled?: boolean;\n}\n\nexport const ActionButton: FunctionComponent<ActionButtonProps> = ({\n icon,\n className,\n children,\n active = false,\n disabled = false,\n ...props\n}) => {\n return (\n <button\n role=\"button\"\n disabled={disabled}\n {...props}\n className={classes([\n 'dropin-action-button',\n ['dropin-action-button--active', active],\n ['dropin-action-button--disabled', disabled],\n className,\n ])}\n >\n {icon && (\n <VComponent\n node={icon}\n className={classes(['dropin-action-button-icon'])}\n />\n )}\n {children &&\n (typeof children === 'string' ? <span>{children}</span> : children)}\n </button>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode, cloneElement } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ActionButtonGroup/ActionButtonGroup.css';\nimport { useCallback, useState } from 'preact/hooks';\nimport { Children } from 'react';\nimport { ActionButtonProps } from '@adobe-commerce/elsie/components/ActionButton';\n\nexport interface ActionButtonGroupOption {\n value: string | null;\n text: string;\n icon?: VNode<SVGElement>;\n disabled?: boolean;\n}\n\nexport interface ActionButtonGroupProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'primary' | 'secondary';\n activeOption?: string;\n disabled?: boolean;\n dividers?: boolean;\n children: VNode<ActionButtonProps>[] | VNode<ActionButtonProps>;\n handleSelect?(value: string): void;\n}\n\nexport const ActionButtonGroup: FunctionComponent<ActionButtonGroupProps> = ({\n className,\n variant = 'primary',\n activeOption,\n disabled = false,\n dividers = true,\n children,\n handleSelect,\n ...props\n}) => {\n const [activeOptionState, setActiveOptionState] = useState(activeOption);\n\n const handleClick = useCallback(\n (option: any) => {\n const isOptionDisabled = disabled || option.props.disabled;\n if (!isOptionDisabled) {\n setActiveOptionState(option.props.value);\n if (handleSelect) {\n handleSelect(option.props.value);\n }\n }\n },\n [handleSelect, setActiveOptionState, disabled]\n );\n\n const buttonGroupOptions = Children.map(\n children,\n (child: VNode<ActionButtonProps>) => {\n const isOptionDisabled = disabled || child.props.disabled;\n const isOptionActive = child.props.value === activeOptionState;\n return cloneElement(child, {\n disabled: isOptionDisabled,\n active: isOptionActive,\n onClick: () => handleClick(child),\n className: classes([\n 'dropin-action-button-group__option',\n `dropin-action-button-group__option--${variant}`,\n ['dropin-action-button-group__option--active', isOptionActive],\n ['dropin-action-button-group__option--with-dividers', dividers],\n ]),\n });\n }\n );\n\n return (\n <div\n role=\"group\"\n {...props}\n className={classes([\n 'dropin-action-button-group',\n `dropin-action-button-group--${variant}`,\n className,\n ])}\n >\n {buttonGroupOptions}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ComponentChildren, FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Card/Card.css';\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'primary' | 'secondary';\n children: ComponentChildren | ComponentChildren[];\n}\n\nexport const Card: FunctionComponent<CardProps> = ({\n variant = 'primary',\n className,\n children,\n ...props\n}) => {\n return (\n <div\n {...props}\n className={classes(['dropin-card', `dropin-card--${variant}`, className])}\n >\n <div class=\"dropin-card__content\">{children}</div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { ChangeEvent, HTMLAttributes, useRef, useState } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Check } from '@adobe-commerce/elsie/icons';\nimport { Icon } from '@adobe-commerce/elsie/components/Icon';\nimport '@adobe-commerce/elsie/components/Checkbox/Checkbox.css';\nimport { useEffect } from 'preact/hooks';\n\nexport interface CheckboxProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'size' | 'label'> {\n name: string;\n size?: 'medium' | 'large';\n disabled?: boolean;\n error?: boolean;\n label?: string | VNode | VNode[];\n description?: string | VNode | VNode[];\n}\n\nexport const Checkbox: FunctionComponent<CheckboxProps> = ({\n name,\n value,\n size = 'medium',\n disabled = false,\n error = false,\n label = '',\n description = '',\n className,\n checked,\n ...props\n}) => {\n const [isChecked, setIsChecked] = useState(\n checked === undefined ? false : checked\n );\n const ref = useRef<HTMLInputElement>(null);\n\n const handleCheckboxChange = (e: ChangeEvent<HTMLInputElement>) => {\n props.onChange?.(e);\n setIsChecked(e.currentTarget.checked);\n };\n\n const handleOnKeyDown = (e: KeyboardEvent) => {\n if (e.key === ' ') {\n e.preventDefault();\n ref?.current?.click();\n }\n };\n\n useEffect(() => {\n if (typeof checked === 'boolean') {\n setIsChecked(checked);\n }\n }, [checked]);\n\n return (\n <label\n className={classes([\n 'dropin-checkbox',\n ['dropin-checkbox--disabled', disabled],\n ])}\n >\n <input\n ref={ref}\n name={name}\n value={value}\n type=\"checkbox\"\n disabled={disabled}\n className={classes([\n 'dropin-checkbox__checkbox',\n ['dropin-checkbox__checkbox--error', error],\n className,\n ])}\n {...props}\n onChange={handleCheckboxChange}\n checked={isChecked}\n />\n\n <div className=\"dropin-checkbox__checkbox-icon\">\n {/*Zero-width space character, used to align checkbox properly*/}\n {'\\u200B'}\n <span\n aria-checked={isChecked ? 'true' : 'false'}\n aria-labelledby={`${name}-label`}\n aria-describedby={description ? `${name}-description` : undefined}\n className={classes([\n 'dropin-checkbox__box',\n ['dropin-checkbox__box--error', error],\n ['dropin-checkbox__box--disabled', disabled],\n ])}\n role=\"checkbox\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={handleOnKeyDown}\n >\n <Icon\n className={classes(['dropin-checkbox__checkmark'])}\n source={Check}\n size=\"16\"\n stroke=\"3\"\n />\n </span>\n </div>\n\n <div\n id={`${name}-label`}\n className={classes([\n 'dropin-checkbox__label',\n `dropin-checkbox__label--${size}`,\n ['dropin-checkbox__label--disabled', disabled],\n ])}\n >\n {label}\n </div>\n\n <div />\n {description && (\n <div\n id={`${name}-description`}\n role={'note'}\n className={classes([\n 'dropin-checkbox__description',\n `dropin-checkbox__description--${size}`,\n ['dropin-checkbox__description--disabled', disabled],\n ])}\n >\n {description}\n </div>\n )}\n </label>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes, useCallback } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ColorSwatch/ColorSwatch.css';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface ColorSwatchProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'label' | 'size'> {\n name?: string;\n label?: string;\n groupAriaLabel?: string;\n id?: string;\n size?: 'medium' | 'large';\n color?: string;\n value?: string;\n disabled?: boolean;\n selected?: boolean;\n outOfStock?: boolean;\n multi?: boolean;\n onValue?: (value: any) => void;\n onUpdateError?: (error: Error) => void;\n}\n\nexport const ColorSwatch: FunctionComponent<ColorSwatchProps> = ({\n className,\n name,\n value,\n id,\n label,\n groupAriaLabel,\n size = 'medium',\n color,\n disabled = false,\n selected = false,\n outOfStock = false,\n multi = false,\n onValue,\n onUpdateError,\n ...props\n}) => {\n // i18n\n const outOfStockLabel = useText('Dropin.Swatches.outOfStock.label').label;\n const selectedLabel = useText('Dropin.Swatches.selected.label').label;\n const swatchLabel = useText('Dropin.Swatches.swatch.label').label;\n\n const onValueHandler = useCallback(\n async (newValue: any) => {\n if (onValue) {\n try {\n await onValue(newValue);\n } catch (e) {\n if (onUpdateError) {\n onUpdateError(e as Error);\n }\n }\n }\n },\n [onValue, onUpdateError]\n );\n\n const handleOnValue = (e: Event) => {\n const input = e.target as HTMLInputElement;\n\n onValueHandler(input.value);\n };\n\n const isValidColor = (color: string) => {\n const colorStyle = new Option().style;\n colorStyle.color = color;\n return colorStyle.color !== ''; // Returns true if the browser accepts this as a valid color\n };\n\n const defaultColor = 'var(--color-gray-300);';\n\n const validColor = color && isValidColor(color) ? color : defaultColor;\n\n const handleAriaLabel = () => {\n if (outOfStock) return `${groupAriaLabel}: ${label} ${outOfStockLabel}`;\n if (selected) return `${groupAriaLabel}: ${label} ${selectedLabel}`;\n return `${groupAriaLabel}: ${label} ${swatchLabel}`;\n };\n\n return (\n <label\n className={classes([\n 'dropin-color-swatch__container',\n `dropin-color-swatch__container--${size}`,\n className,\n ])}\n >\n <input\n type={multi ? 'checkbox' : 'radio'}\n name={name}\n id={id}\n value={value}\n aria-label={handleAriaLabel()}\n checked={selected}\n disabled={disabled}\n onChange={handleOnValue}\n {...props}\n className={classes([\n 'dropin-color-swatch',\n ['dropin-color-swatch--selected', selected],\n ['dropin-color-swatch--disabled', disabled],\n className,\n ])}\n />\n <span\n style={{ '--bg-color': validColor }}\n className={classes([\n 'dropin-color-swatch__span',\n ['dropin-color-swatch__span--out-of-stock', outOfStock],\n className,\n ])}\n />\n </label>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport {\n HTMLAttributes,\n useState,\n useEffect,\n useRef,\n useCallback,\n} from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/TextSwatch/TextSwatch.css';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface TextSwatchProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'label'> {\n name?: string;\n label: string;\n groupAriaLabel?: string;\n value?: string;\n id: string;\n disabled?: boolean;\n selected?: boolean;\n outOfStock?: boolean;\n multi?: boolean;\n onValue?: (value: any) => void;\n onUpdateError?: (error: Error) => void;\n}\n\nexport const TextSwatch: FunctionComponent<TextSwatchProps> = ({\n className,\n name,\n value,\n label,\n groupAriaLabel,\n id,\n disabled = false,\n selected = false,\n outOfStock = false,\n multi = false,\n onValue,\n onUpdateError,\n ...props\n}) => {\n // i18n\n const outOfStockLabel = useText('Dropin.Swatches.outOfStock.label').label;\n const selectedLabel = useText('Dropin.Swatches.selected.label').label;\n const swatchLabel = useText('Dropin.Swatches.swatch.label').label;\n\n const [isOverflowing, setIsOverflowing] = useState(false);\n const spanRef = useRef<HTMLLabelElement>(null);\n\n const onValueHandler = useCallback(\n async (newValue: any) => {\n if (onValue) {\n try {\n await onValue(newValue);\n } catch (e) {\n if (onUpdateError) {\n onUpdateError(e as Error);\n }\n }\n }\n },\n [onValue, onUpdateError]\n );\n\n const handleOnValue = (e: Event) => {\n const input = e.target as HTMLInputElement;\n\n onValueHandler(input.value);\n };\n\n const handleAriaLabel = () => {\n if (outOfStock) return `${groupAriaLabel}: ${label} ${outOfStockLabel}`;\n if (selected) return `${groupAriaLabel}: ${label} ${selectedLabel}`;\n return `${groupAriaLabel}: ${label} ${swatchLabel}`;\n };\n\n useEffect(() => {\n if (\n spanRef.current &&\n spanRef.current.scrollWidth > spanRef.current.clientWidth\n ) {\n setIsOverflowing(true);\n }\n }, [label]);\n\n return (\n <div\n className=\"dropin-text-swatch__container\"\n {...(isOverflowing ? { 'data-tooltip': label } : {})}\n >\n <input\n type={multi ? 'checkbox' : 'radio'}\n name={name}\n id={id}\n value={value}\n aria-label={handleAriaLabel()}\n checked={selected}\n disabled={disabled}\n onChange={handleOnValue}\n {...props}\n className={classes([\n 'dropin-text-swatch',\n ['dropin-text-swatch--selected', selected],\n ['dropin-text-swatch--disabled', disabled],\n className,\n ])}\n />\n <label\n htmlFor={id}\n ref={spanRef}\n className={classes([\n 'dropin-text-swatch__label',\n ['dropin-text-swatch__label--out-of-stock', outOfStock],\n className,\n ])}\n >\n {label}\n </label>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { classes } from '@adobe-commerce/elsie/lib';\n\nimport '@adobe-commerce/elsie/components/ProgressSpinner/ProgressSpinner.css';\n\n/**\n * @param size this is the size of the spinner ranging in [12px, 24px, 36px, 48px]\n * @param stroke this is the stroke of the spinner ranging in [1px, 2px, 3px, 4px]\n */\nexport interface ProgressSpinnerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n ariaLabel?: string;\n size?: 'small' | 'medium' | 'big' | 'large';\n stroke?: '1' | '2' | '3' | '4';\n}\n\nexport const ProgressSpinner: FunctionComponent<ProgressSpinnerProps> = ({\n ariaLabel,\n size = 'small',\n stroke = '4',\n children,\n className,\n style,\n ...props\n}) => {\n const commonClasses = [\n 'dropin-progress-spinner',\n `dropin-progress-spinner--shape-size-${size}`,\n `dropin-progress-spinner--shape-stroke-${stroke}`,\n ];\n\n const translations = useText({\n updating: 'Dropin.ProgressSpinner.updating.label',\n updatingChildren: 'Dropin.ProgressSpinner.updatingChildren.label',\n });\n\n const handleAriaLabel = () => {\n if (ariaLabel) return ariaLabel;\n return children ? translations.updatingChildren : translations.updating;\n };\n\n return children ? (\n // if we provide children to this component, it should act as a provider in order to add background with low opacity\n <div\n {...props}\n className={classes(['dropin-progress-spinner-provider'])}\n aria-live=\"polite\"\n role=\"status\"\n >\n <div aria-hidden={true}>{children}</div>\n <div\n aria-label={handleAriaLabel()}\n role=\"status\"\n className={classes(['dropin-progress-spinner-background', className])}\n style={style}\n />\n <div\n className={classes([\n 'dropin-progress-spinner-with-provider',\n ...commonClasses,\n ])}\n aria-hidden={true}\n />\n </div>\n ) : (\n // if there are no children, it should be able to be standalone and have no background\n <div\n {...props}\n className={classes([className, ...commonClasses])}\n aria-live=\"polite\"\n role=\"status\"\n aria-label={handleAriaLabel()}\n />\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useCallback, JSX, useMemo } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ImageSwatch/ImageSwatch.css';\nimport { Image, ImageProps } from '@adobe-commerce/elsie/components/Image';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface ImageNodeRenderProps extends ImageProps {\n imageSwatchContext: {\n disabled?: boolean;\n outOfStock?: boolean;\n multi?: boolean;\n selected?: boolean;\n value?: string;\n label?: string;\n groupAriaLabel?: string;\n name?: string;\n id?: string;\n };\n}\n\nexport interface ImageSwatchProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'label'> {\n name?: string;\n label?: string;\n groupAriaLabel?: string;\n id?: string;\n src: string;\n alt?: string;\n value?: string;\n disabled?: boolean;\n selected?: boolean;\n outOfStock?: boolean;\n multi?: boolean;\n imageNode?: VNode | ((props: ImageNodeRenderProps) => JSX.Element);\n onValue?: (value: any) => void;\n onUpdateError?: (error: Error) => void;\n}\n\nexport const ImageSwatch: FunctionComponent<ImageSwatchProps> = ({\n className,\n name,\n value,\n id,\n label,\n groupAriaLabel,\n src,\n alt,\n disabled = false,\n selected = false,\n outOfStock = false,\n multi = false,\n imageNode,\n onValue,\n onUpdateError,\n ...props\n}) => {\n const outOfStockLabel = useText('Dropin.Swatches.outOfStock.label').label;\n const selectedLabel = useText('Dropin.Swatches.selected.label').label;\n const swatchLabel = useText('Dropin.Swatches.swatch.label').label;\n\n const onValueHandler = useCallback(\n async (newValue: any) => {\n if (onValue) {\n try {\n await onValue(newValue);\n } catch (e) {\n if (onUpdateError) {\n onUpdateError(e as Error);\n }\n }\n }\n },\n [onValue, onUpdateError]\n );\n\n const handleOnValue = (e: Event) => {\n const input = e.target as HTMLInputElement;\n\n onValueHandler(input.value);\n };\n\n const handleAriaLabel = () => {\n if (outOfStock) return `${groupAriaLabel}: ${label} ${outOfStockLabel}`;\n if (selected) return `${groupAriaLabel}: ${label} ${selectedLabel}`;\n return `${groupAriaLabel}: ${label} ${swatchLabel}`;\n };\n\n const imageProps: ImageProps = useMemo(() => {\n return {\n src,\n alt,\n loading: 'lazy',\n params: { width: 100, fit: 'bounds', crop: true },\n onError: (e: any) => (e.target.style.display = 'none'),\n };\n }, [src, alt]);\n\n return (\n <label className={classes(['dropin-image-swatch__container', className])}>\n <input\n type={multi ? 'checkbox' : 'radio'}\n name={name}\n id={id}\n value={value}\n aria-label={handleAriaLabel()}\n checked={selected}\n disabled={disabled}\n onChange={handleOnValue}\n {...props}\n className={classes([\n 'dropin-image-swatch',\n ['dropin-image-swatch--selected', selected],\n ['dropin-image-swatch--disabled', disabled],\n className,\n ])}\n />\n\n <span\n className={classes([\n 'dropin-image-swatch__span',\n ['dropin-image-swatch__span--out-of-stock', outOfStock],\n className,\n ])}\n >\n {typeof imageNode === 'function' ? (\n imageNode({\n ...imageProps,\n imageSwatchContext: {\n disabled,\n outOfStock,\n selected,\n value,\n label,\n groupAriaLabel,\n name,\n id,\n },\n })\n ) : imageNode || (\n <Image\n {...imageProps}\n className={classes(['dropin-image-swatch__content'])}\n />\n )}\n </span>\n </label>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useState, useEffect } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Divider, Icon, IconNode } from '@adobe-commerce/elsie/components';\nimport { Add, Minus } from '@adobe-commerce/elsie/icons';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport '@adobe-commerce/elsie/components/Accordion/Accordion.css';\nexport interface AccordionSectionProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'icon'> {\n defaultOpen?: boolean;\n actionIconPosition?: 'left' | 'right';\n ariaLabelTitle: string;\n iconOpen?: IconNode;\n iconClose?: IconNode;\n iconLeft?: IconNode;\n showIconLeft?: boolean;\n secondaryText?: string | VNode<HTMLAttributes<HTMLSpanElement>>;\n renderContentWhenClosed?: boolean;\n onStateChange?: (open: boolean) => void;\n}\n\nexport const AccordionSection: FunctionComponent<AccordionSectionProps> = ({\n className,\n children,\n title,\n ariaLabelTitle,\n secondaryText,\n actionIconPosition = 'left',\n iconOpen = Add,\n iconClose = Minus,\n iconLeft = Add,\n showIconLeft = false,\n renderContentWhenClosed = true,\n defaultOpen,\n onStateChange,\n ...props\n}) => {\n const [open, setOpen] = useState<boolean>(false);\n const onClickHandler = (e: { stopImmediatePropagation: () => void }) => {\n e.stopImmediatePropagation();\n\n const next = !open;\n setOpen(next);\n onStateChange?.(next);\n };\n\n useEffect(() => {\n if (typeof defaultOpen !== 'undefined') {\n setOpen(defaultOpen);\n }\n }, [defaultOpen]);\n\n const buttonLabel = useText(\n `Dropin.Accordion.${open ? 'close' : 'open'}.label`\n ).label;\n\n const openIcon = (\n <Icon\n source={iconOpen}\n size=\"24\"\n onClick={onClickHandler}\n onKeyPress={onClickHandler}\n className={'dropin-accordion-section__open-icon'}\n />\n );\n\n const closeIcon = (\n <Icon\n source={iconClose}\n size=\"24\"\n onClick={onClickHandler}\n onKeyPress={onClickHandler}\n className={'dropin-accordion-section__close-icon'}\n />\n );\n\n const leftIcon = <Icon source={iconLeft} size=\"24\" />;\n\n return (\n <div\n {...props}\n className={classes(['dropin-accordion-section', className])}\n >\n <div className={'dropin-accordion-section__heading'}>\n <div\n className={'dropin-accordion-section__flex'}\n onClick={onClickHandler}\n onKeyPress={onClickHandler}\n role=\"button\"\n aria-label={`${buttonLabel} ${ariaLabelTitle ?? title}`}\n tabIndex={0}\n >\n <div className={'dropin-accordion-section__title-container'}>\n {actionIconPosition === 'left' && (open ? closeIcon : openIcon)}\n\n {showIconLeft && leftIcon}\n\n <h3 className={'dropin-accordion-section__title'}>{title}</h3>\n </div>\n </div>\n\n <div className={'dropin-accordion-section__secondary-text-container'}>\n {secondaryText && (\n <h4 className={'dropin-accordion-section__secondary-text'}>\n {secondaryText}\n </h4>\n )}\n\n {actionIconPosition === 'right' && (open ? closeIcon : openIcon)}\n </div>\n </div>\n\n <div\n className={'dropin-accordion-section__content-container'}\n style={{ display: open ? 'grid' : 'none' }}\n >\n {(open || (renderContentWhenClosed && !open)) && children}\n </div>\n </div>\n );\n};\n\nexport interface AccordionProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'icon'> {\n actionIconPosition?: 'left' | 'right';\n iconOpen?: IconNode;\n iconClose?: IconNode;\n iconLeft?: IconNode;\n showIconLeft?: boolean;\n secondaryText?: string | VNode<HTMLAttributes<HTMLSpanElement>>;\n children: VNode<AccordionSectionProps>[] | VNode<AccordionSectionProps>;\n}\n\nexport const Accordion: FunctionComponent<AccordionProps> = ({\n className,\n children,\n actionIconPosition = 'left',\n iconOpen = Add,\n iconClose = Minus,\n ...props\n}) => {\n const divider = <Divider variant=\"secondary\" />;\n\n const renderAccordionSection = (child: VNode<AccordionSectionProps>) => (\n <>\n <AccordionSection\n {...child.props}\n actionIconPosition={actionIconPosition}\n iconOpen={iconOpen}\n iconClose={iconClose}\n />\n {divider}\n </>\n );\n\n return (\n <div {...props} className={classes(['dropin-accordion', className])}>\n {[\n divider,\n ...(\n (Array.isArray(children)\n ? children\n : [children]) as VNode<AccordionSectionProps>[]\n ).map(renderAccordionSection),\n ]}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { Button, Icon } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Close } from '@adobe-commerce/elsie/icons';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\n\nimport '@adobe-commerce/elsie/components/InLineAlert/InLineAlert.css';\nexport interface InLineAlertProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'icon'> {\n variant?: 'primary' | 'secondary';\n heading: string;\n description?: string;\n type?: 'error' | 'warning' | 'success';\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n additionalActions?: Array<{\n label: string;\n onClick: (event: Event) => void;\n }>;\n onDismiss?: (event: Event) => void;\n itemList?: VNode;\n actionButtonPosition?: 'top' | 'bottom';\n}\n\nexport const InLineAlert: FunctionComponent<InLineAlertProps> = ({\n variant = 'primary',\n className,\n type = 'warning',\n additionalActions,\n onDismiss,\n heading,\n description,\n icon,\n itemList,\n actionButtonPosition,\n ...props\n}) => {\n const translations = useText({\n dismiss: 'Dropin.InlineAlert.dismissLabel',\n });\n\n return (\n <div\n {...props}\n className={classes([\n 'dropin-in-line-alert',\n `dropin-in-line-alert--${type}`,\n `dropin-in-line-alert--${variant}`,\n className,\n ])}\n >\n <div className={'dropin-in-line-alert__heading'}>\n <div className={'dropin-in-line-alert__title-container'}>\n {icon && (\n <VComponent node={icon} className={'dropin-in-line-alert__icon'} />\n )}\n\n <span className={'dropin-in-line-alert__title'}>{heading}</span>\n </div>\n\n <div className={'dropin-in-line-alert__actions-container'}>\n {additionalActions &&\n (actionButtonPosition === 'top' ||\n (!actionButtonPosition && additionalActions.length <= 1)) && (\n <Button\n variant=\"tertiary\"\n className={'dropin-in-line-alert__additional-action'}\n onClick={\n additionalActions.length > 0\n ? additionalActions[0]?.onClick\n : undefined\n }\n aria-label={additionalActions[0]?.label}\n >\n {additionalActions[0]?.label}\n </Button>\n )}\n {onDismiss && (\n <Button\n icon={<Icon source={Close} size=\"24\" stroke=\"2\" />}\n className={'dropin-in-line-alert__dismiss-button'}\n variant=\"tertiary\"\n onClick={onDismiss}\n aria-label={translations.dismiss}\n />\n )}\n </div>\n </div>\n\n {description && (\n <p className={'dropin-in-line-alert__description'}>{description}</p>\n )}\n <div className={'dropin-in-line-alert__item-list-container'}>\n {itemList && (\n <VComponent\n node={itemList}\n className={classes(['dropin-in-line-alert__item-list'])}\n />\n )}\n </div>\n {additionalActions &&\n (actionButtonPosition === 'bottom' ||\n (!actionButtonPosition && additionalActions.length > 1)) && (\n <div className={'dropin-in-line-alert__additional-actions-container'}>\n {additionalActions.map((action) => (\n <Button\n key={action.label}\n variant=\"tertiary\"\n className={'dropin-in-line-alert__additional-action'}\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ComponentChildren } from 'preact';\nimport { FunctionComponent, useLayoutEffect, useRef } from 'preact/compat';\n\ninterface PortalProps {\n children: ComponentChildren;\n}\n\nexport const Portal: FunctionComponent<PortalProps> = ({ children }) => {\n const portalRoot = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n // Create portal root if it doesn't exist\n if (!portalRoot.current) {\n portalRoot.current = document.createElement('div');\n portalRoot.current.setAttribute('data-portal-root', '');\n document.body.appendChild(portalRoot.current);\n }\n\n // Move content to portal root\n if (contentRef.current && portalRoot.current) {\n portalRoot.current.appendChild(contentRef.current);\n }\n\n // Cleanup\n return () => {\n if (portalRoot.current) {\n portalRoot.current.remove();\n portalRoot.current = null;\n }\n };\n }, []);\n\n // Return a div that contains the children\n return (\n <div ref={contentRef} className=\"dropin-design\">\n {children}\n </div>\n );\n}; ","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport {\n FunctionComponent,\n HTMLAttributes,\n useCallback,\n useEffect,\n} from 'preact/compat';\nimport { Button } from '../Button';\nimport { Close as CloseSVG } from '@adobe-commerce/elsie/icons';\nimport { VNode } from 'preact';\nimport { Portal } from '../Portal/Portal';\n\nimport '@adobe-commerce/elsie/components/Modal/Modal.css';\n\nexport interface ModalProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size' | 'title'> {\n size?: 'small' | 'medium' | 'full';\n title?: VNode;\n centered?: boolean;\n onClose?: () => void;\n backgroundDim?: boolean;\n clickToDismiss?: boolean;\n escapeToDismiss?: boolean;\n showCloseButton?: boolean;\n}\n\nexport const Modal: FunctionComponent<ModalProps> = ({\n size = 'small',\n title = null,\n centered = false,\n backgroundDim = true,\n clickToDismiss = true,\n escapeToDismiss = true,\n onClose,\n showCloseButton = true,\n className,\n children = null,\n ...props\n}) => {\n const handleOnClose = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n const translations = useText({\n modalCloseLabel: 'Dropin.Modal.Close.label',\n });\n\n // Close on background click\n useEffect(() => {\n const handleOutsideClick = (event: MouseEvent) => {\n const modal = document.querySelector('.dropin-modal');\n const modalBody = document.querySelector('.dropin-modal__body');\n\n if (\n clickToDismiss &&\n modal &&\n modalBody &&\n !modalBody.contains(event.target as Node)\n ) {\n handleOnClose();\n }\n };\n\n document.addEventListener('mousedown', handleOutsideClick);\n\n return () => {\n document.removeEventListener('mousedown', handleOutsideClick);\n };\n }, [handleOnClose, clickToDismiss]);\n\n // Close on ESC\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && escapeToDismiss) {\n handleOnClose();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleOnClose, escapeToDismiss]);\n\n // Prevent document scrolling\n useEffect(() => {\n const scrollingElement = document.scrollingElement as HTMLElement;\n\n const defaultOverflowValue = scrollingElement.style.overflow;\n\n scrollingElement.style.overflow = 'hidden';\n\n return () => {\n scrollingElement.style.overflow = defaultOverflowValue;\n };\n }, []);\n\n return (\n <Portal>\n <div\n className={classes([\n 'dropin-modal',\n ['dropin-modal--dim', backgroundDim],\n ])}\n >\n <div\n {...props}\n className={classes([\n 'dropin-modal__body',\n [`dropin-modal__body--${size}`, size],\n className,\n ])}\n >\n <div\n className={classes([\n 'dropin-modal__header',\n ['dropin-modal__header-title', !!title],\n ])}\n >\n {title && (\n <div className={classes(['dropin-modal__header-title-content'])}>\n {title}\n </div>\n )}\n\n {showCloseButton && (\n <Button\n aria-label={translations.modalCloseLabel}\n variant=\"tertiary\"\n className=\"dropin-modal__header-close-button\"\n onClick={handleOnClose}\n icon={<CloseSVG />}\n />\n )}\n </div>\n\n <div\n className={classes([\n 'dropin-modal__content',\n ['dropin-modal__body--centered', centered],\n ])}\n >\n {children}\n </div>\n </div>\n </div>\n </Portal>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useContext } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport {\n Button,\n CartItemSkeleton,\n Icon,\n Incrementer,\n UIContext,\n ProgressSpinner,\n Picker,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Trash } from '@adobe-commerce/elsie/icons';\n\nimport '@adobe-commerce/elsie/components/CartItem/CartItem.css';\n\nexport interface CartItemProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'loading'> {\n ariaLabel?: string;\n image?: VNode;\n title?: VNode;\n price?: VNode;\n taxIncluded?: boolean;\n taxExcluded?: boolean;\n total?: VNode;\n totalExcludingTax?: VNode;\n sku?: VNode;\n quantity?: number;\n quantityContent?: VNode;\n description?: VNode;\n attributes?: VNode;\n footer?: VNode;\n configurations?: { [key: string]: any };\n warning?: VNode;\n alert?: VNode;\n discount?: VNode;\n savings?: VNode;\n actions?: VNode;\n removeContent?: VNode;\n loading?: boolean;\n updating?: boolean;\n onRemove?: () => void;\n onQuantity?: (value: number) => void;\n quantityType?: 'stepper' | 'dropdown';\n dropdownOptions?: { value: string; text: string }[];\n}\n\nexport const CartItem: FunctionComponent<CartItemProps> = ({\n className,\n children,\n ariaLabel,\n image,\n title,\n price,\n taxIncluded = false,\n taxExcluded = false,\n total,\n totalExcludingTax,\n sku,\n configurations,\n warning,\n alert,\n discount,\n savings,\n actions,\n removeContent,\n quantity,\n quantityContent,\n description,\n attributes,\n footer,\n loading = false,\n updating = false,\n quantityType,\n dropdownOptions,\n onQuantity,\n onRemove,\n ...props\n}) => {\n const { locale } = useContext(UIContext);\n\n const labels = useText({\n each: 'Dropin.CartItem.each.label',\n pricePerItem: 'Dropin.CartItem.pricePerItem.label',\n quantity: 'Dropin.CartItem.quantity.label',\n remove: 'Dropin.CartItem.remove.label',\n removeDefault: 'Dropin.CartItem.removeDefault.label',\n taxIncluded: 'Dropin.CartItem.taxIncluded.label',\n taxExcluded: 'Dropin.CartItem.taxExcluded.label',\n updating: 'Dropin.CartItem.updating.label',\n updatingDefault: 'Dropin.ProgressSpinner.updating.label',\n });\n\n if (loading) return <CartItemSkeleton />;\n\n const quantityComponent =\n quantityType === 'dropdown' ? (\n <Picker\n className={classes(['dropin-cart-item__quantity__picker'])}\n value={String(quantity)}\n name=\"quantity\"\n aria-label={labels.quantity}\n disabled={updating}\n variant={'primary'}\n options={dropdownOptions}\n handleSelect={(event) =>\n onQuantity?.(Number((event.target as HTMLSelectElement).value))\n }\n />\n ) : (\n <Incrementer\n className={classes(['dropin-cart-item__quantity__incrementer'])}\n value={quantity}\n min={1}\n onValue={(value) => onQuantity?.(Number(value))}\n name=\"quantity\"\n aria-label={labels.quantity}\n disabled={updating}\n />\n );\n\n return (\n <div\n {...props}\n className={classes([\n 'dropin-cart-item',\n ['dropin-cart-item--updating', updating],\n className,\n ])}\n >\n {updating && (\n <ProgressSpinner\n className={classes(['dropin-cart-item__spinner'])}\n ariaLabel={\n ariaLabel\n ? labels.updating?.replace('{product}', ariaLabel)\n : labels.updatingDefault\n }\n />\n )}\n <div className=\"dropin-cart-item__wrapper\">\n {\n /* Image */\n image && (\n <VComponent\n node={image}\n className={classes(['dropin-cart-item__image'])}\n />\n )\n }\n\n {\n /* Title */\n title && (\n <VComponent\n node={title}\n className={classes([\n 'dropin-cart-item__title',\n ['dropin-cart-item__title--edit', !!onQuantity || !!onRemove],\n ])}\n />\n )\n }\n\n {\n /* Description */\n description && (\n <VComponent\n node={description}\n className={classes(['dropin-cart-item__description'])}\n />\n )\n }\n\n {\n /* SKU */\n sku && (\n <VComponent\n node={sku}\n className={classes(['dropin-cart-item__sku'])}\n />\n )\n }\n <div className={classes(['dropin-cart-item__savings__wrapper'])}>\n {/* Discount amount */}\n {discount && (\n <VComponent\n node={discount}\n className={classes([\n 'dropin-cart-item__discount',\n 'dropin-cart-item__discount__large-screen',\n ])}\n />\n )}\n\n {/* Savings amount */}\n {savings && (\n <VComponent\n node={savings}\n className={classes([\n 'dropin-cart-item__savings',\n 'dropin-cart-item__savings__large-screen',\n ])}\n />\n )}\n </div>\n\n {/* Product Attributes */}\n {attributes && (\n <div className={classes(['dropin-cart-item__attributes'])}>\n <VComponent node={attributes} />\n </div>\n )}\n\n {\n /* Configurations */\n configurations && (\n <ul className={classes(['dropin-cart-item__configurations'])}>\n {Object.entries(configurations).map(([key, value]) => (\n <li\n key={key}\n className={classes([\n 'dropin-cart-item__configurations__item',\n ])}\n >\n {key}:{' '}\n <strong\n className={classes([\n 'dropin-cart-item__configurations__item__value',\n ])}\n >\n {value}\n </strong>\n </li>\n ))}\n </ul>\n )\n }\n\n {\n /* Price */\n price && (\n <span\n className={classes(['dropin-cart-item__price'])}\n aria-label={labels.pricePerItem}\n >\n {quantity && !onQuantity && (\n <>\n <span\n className=\"dropin-cart-item__price__quantity\"\n aria-hidden={true}\n >\n {quantity.toLocaleString(locale)} x{' '}\n </span>\n\n <div className=\"dropin-cart-item__sr-only\">\n {labels.quantity}: {quantity?.toLocaleString(locale)};\n </div>\n </>\n )}\n\n <VComponent node={price} role=\"text\" />\n\n {quantity && quantity > 1 && (\n <>\n \n {labels.each}\n </>\n )}\n\n {taxIncluded && (\n <span\n data-testid=\"tax-message\"\n className=\"dropin-cart-item__price-tax-message\"\n >\n \n {labels.taxIncluded}\n </span>\n )}\n\n {taxExcluded && (\n <span\n data-testid=\"tax-message\"\n className=\"dropin-cart-item__price-tax-message\"\n >\n \n {labels.taxExcluded}\n </span>\n )}\n </span>\n )\n }\n\n {/* Quantity */}\n <div\n className={classes([\n 'dropin-cart-item__quantity',\n ['dropin-cart-item__quantity--edit', !!onQuantity],\n ])}\n >\n {quantityContent ? (\n <VComponent node={quantityContent} />\n ) : onQuantity ? (\n quantityComponent\n ) : (\n quantity && (\n <span className={classes(['dropin-cart-item__quantity__value'])}>\n {labels.quantity}:{' '}\n <strong className=\"dropin-cart-item__quantity__number\">\n {Number(quantity).toLocaleString(locale)}\n </strong>\n </span>\n )\n )}\n\n {/* Warning */}\n {warning && (\n <VComponent\n node={warning}\n className={classes([\n 'dropin-cart-item__warning',\n 'dropin-cart-item__warning--quantity',\n ])}\n />\n )}\n\n {/* Alert */}\n {alert && (\n <VComponent\n node={alert}\n className={classes([\n 'dropin-cart-item__alert',\n 'dropin-cart-item__alert--quantity',\n ])}\n />\n )}\n </div>\n\n {/* Actions */}\n {actions && (\n <div className={classes(['dropin-cart-item__actions'])}>\n {\n <VComponent\n node={actions}\n className={classes(['dropin-cart-item__buttons'])}\n />\n }\n </div>\n )}\n\n {/* Warning */}\n {warning && (\n <VComponent\n node={warning}\n className={classes(['dropin-cart-item__warning'])}\n />\n )}\n\n {/* Alert */}\n {alert && (\n <VComponent\n node={alert}\n className={classes(['dropin-cart-item__alert'])}\n />\n )}\n\n {/* Total */}\n <div\n className={classes([\n 'dropin-cart-item__total',\n ['dropin-cart-item__total--edit', !!onRemove],\n ])}\n >\n <div className=\"dropin-cart-item__row-total__wrapper\">\n {\n /* Total */\n total && (\n <div className=\"dropin-cart-item__row-total\">\n <VComponent node={total} role=\"text\" />\n </div>\n )\n }\n\n {taxIncluded && (\n <div className=\"dropin-cart-item__total-tax-included\">\n <span\n data-testid=\"tax-message\"\n className={classes(['dropin-cart-item__total-tax-message'])}\n >\n {labels.taxIncluded}\n </span>\n </div>\n )}\n </div>\n {taxExcluded && (\n <div className=\"dropin-cart-item__total-tax-excluded\">\n <span\n data-testid=\"tax-message\"\n className={classes([\n 'dropin-cart-item__total-tax-excluded-message',\n ])}\n >\n {totalExcludingTax && (\n <VComponent node={totalExcludingTax} role=\"text\" />\n )}\n \n {labels.taxExcluded}\n </span>\n </div>\n )}\n\n {/* Discount amount */}\n {discount && (\n <VComponent\n node={discount}\n className={classes(['dropin-cart-item__discount'])}\n />\n )}\n\n {/* Savings amount */}\n {savings && (\n <VComponent\n node={savings}\n className={classes(['dropin-cart-item__savings'])}\n />\n )}\n </div>\n\n {/* Footer */}\n {footer && (\n <VComponent\n node={footer}\n className={classes(['dropin-cart-item__footer'])}\n />\n )}\n </div>\n\n {/* Remove Item */}\n {removeContent ? (\n <VComponent node={removeContent} />\n ) : onRemove ? (\n <Button\n data-testid=\"cart-item-remove-button\"\n className={classes(['dropin-cart-item__remove'])}\n variant=\"tertiary\"\n onClick={() => onRemove?.()}\n icon={\n <Icon\n data-testid=\"cart-item-remove-icon\"\n source={Trash}\n size=\"24\"\n stroke=\"2\"\n viewBox=\"0 0 24 24\"\n aria-label={\n ariaLabel\n ? labels.remove?.replace('{product}', ariaLabel)\n : labels.removeDefault\n }\n />\n }\n disabled={updating}\n />\n ) : null}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const CartItemSkeleton: FunctionComponent = () => {\n return (\n <div className=\"dropin-cart-item dropin-cart-item-skeleton\">\n <Skeleton className=\"dropin-cart-item__skeleton dropin-cart-item__wrapper\">\n <div className=\"dropin-cart-item__image\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n <div className=\"dropin-cart-item__title\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n <div className=\"dropin-cart-item__sku\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n <div className=\"dropin-cart-item__price\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n <div className=\"dropin-cart-item__quantity\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n <div className=\"dropin-cart-item__total\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n </Skeleton>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes, Children } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\n\nimport '@adobe-commerce/elsie/components/CartList/CartList.css';\n\nexport interface CartListProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const CartList: FunctionComponent<CartListProps> = ({\n className,\n children,\n ...props\n}) => {\n return (\n <div {...props} className={classes(['dropin-cart-list', className])}>\n <div\n className=\"dropin-cart-list__wrapper\"\n aria-live=\"assertive\"\n aria-relevant=\"all\"\n >\n {Children.map(children, (child, key) => {\n return (\n <div key={key} className=\"dropin-cart-list__item\">\n {child}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes, useMemo } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/PriceRange/PriceRange.css';\nimport { Price } from '@adobe-commerce/elsie/components/Price';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface PriceRangeProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n locale?: string;\n currency?: string;\n amount?: number; // simple product\n variant?: 'default' | 'strikethrough';\n minimumAmount?: number; // configurable product\n maximumAmount?: number; // configurable product\n display?: 'dash' | 'from to' | 'as low as';\n size?: 'small' | 'medium' | 'large';\n specialPrice?: number;\n sale?: boolean;\n}\n\nexport const PriceRange: FunctionComponent<PriceRangeProps> = ({\n className,\n children,\n locale,\n currency,\n amount,\n variant = 'default',\n minimumAmount,\n maximumAmount,\n size = 'small',\n display = 'dash',\n specialPrice,\n sale = false,\n ...props\n}) => {\n const isSimpleProduct = useMemo(\n () =>\n amount ||\n minimumAmount === maximumAmount ||\n (minimumAmount && !maximumAmount) ||\n (maximumAmount && !minimumAmount),\n [amount, maximumAmount, minimumAmount]\n );\n\n return (\n <div>\n {/* Simple product price or when configurable product minimum price equals to maximum price */}\n {isSimpleProduct ? (\n <div {...props} className={classes(['dropin-price-range', className])}>\n <Price\n amount={amount ?? minimumAmount ?? maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n variant={variant}\n sale={sale}\n />\n </div>\n ) : (\n <div {...props} className={classes(['dropin-price-range', className])}>\n {display === 'dash' ? (\n <Dashed\n specialPrice={specialPrice}\n minimumAmount={minimumAmount}\n maximumAmount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n sale={sale}\n />\n ) : null}\n\n {display === 'from to' ? (\n <FromTo\n specialPrice={specialPrice}\n minimumAmount={minimumAmount}\n maximumAmount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n sale={sale}\n />\n ) : null}\n\n {display === 'as low as' ? (\n <SpecialPrice\n specialPrice={specialPrice}\n minimumAmount={minimumAmount}\n maximumAmount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n sale={sale}\n />\n ) : null}\n </div>\n )}\n </div>\n );\n};\n\n// Variations\n\nfunction Dashed({\n specialPrice,\n minimumAmount,\n maximumAmount,\n currency,\n locale,\n size,\n sale,\n}: PriceRangeProps) {\n return (\n <>\n <Price\n amount={specialPrice ?? minimumAmount}\n currency={currency}\n locale={locale}\n size={size}\n sale={!!specialPrice && sale}\n />\n <span className=\"dropin-price-range__separator\">-</span>\n <Price\n amount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n />\n </>\n );\n}\n\nfunction FromTo({\n specialPrice,\n minimumAmount,\n maximumAmount,\n currency,\n locale,\n size,\n sale,\n}: PriceRangeProps) {\n // Translations\n const translations = useText({\n from: 'Dropin.PriceRange.from.label',\n to: 'Dropin.PriceRange.to.label',\n asLowAs: 'Dropin.PriceRange.asLowAs.label',\n });\n\n return (\n <>\n <span\n className={classes([\n 'dropin-price-range__from',\n `dropin-price-range__from--${size}`,\n ])}\n >\n {translations.from}\n </span>\n <Price\n amount={specialPrice ?? minimumAmount}\n currency={currency}\n locale={locale}\n size={size}\n sale={!!specialPrice && sale}\n />\n <span\n className={classes([\n 'dropin-price-range__to',\n `dropin-price-range__to--${size}`,\n ])}\n >\n {translations.to}\n </span>\n <Price\n amount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n />\n </>\n );\n}\n\nfunction SpecialPrice({\n specialPrice,\n minimumAmount,\n maximumAmount,\n currency,\n locale,\n size,\n sale,\n}: PriceRangeProps) {\n // Translations\n const translations = useText({\n from: 'Dropin.PriceRange.from.label',\n to: 'Dropin.PriceRange.to.label',\n asLowAs: 'Dropin.PriceRange.asLowAs.label',\n });\n\n return (\n <>\n <span\n className={classes([\n 'dropin-price-range__as-low-as',\n `dropin-price-range__as-low-as--${size}`,\n ])}\n >\n {translations.asLowAs}\n </span>\n {specialPrice ? (\n <div>\n <Price\n amount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n variant=\"strikethrough\"\n />\n <Price\n amount={specialPrice}\n currency={currency}\n locale={locale}\n size={size}\n className=\"dropin-price-range__special\"\n sale={!!specialPrice && sale}\n />\n </div>\n ) : (\n <Price\n amount={minimumAmount}\n currency={currency}\n locale={locale}\n size={size}\n />\n )}\n </>\n );\n}\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { HTMLAttributes } from 'preact/compat';\nimport { FunctionComponent, VNode } from 'preact';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Breadcrumbs/Breadcrumbs.css';\n\nexport interface BreadcrumbsProps extends HTMLAttributes<HTMLElement> {\n categories: VNode[];\n separator?: VNode<HTMLAttributes<SVGSVGElement>>;\n}\n\nexport const Breadcrumbs: FunctionComponent<BreadcrumbsProps> = ({\n className,\n categories,\n separator,\n ...props\n}) => {\n return (\n <>\n {categories?.length > 1 && (\n <nav\n role=\"navigation\"\n {...props}\n className={classes(['dropin-breadcrumbs__container', className])}\n >\n <ul className=\"dropin-breadcrumbs__items\">\n {categories?.map((category: VNode, index: number) => {\n return (\n <li\n key={index}\n className={classes([\n 'dropin-breadcrumbs__item',\n [\n 'dropin-breadcrumbs__item--last',\n index === categories.length - 1,\n ],\n ])}\n >\n <VComponent\n node={category}\n className=\"dropin-breadcrumbs__link\"\n />\n {!separator && index !== categories.length - 1 && (\n <span className=\"dropin-breadcrumbs__separator--default\">\n {' '}\n /{' '}\n </span>\n )}\n {separator && index !== categories.length - 1 && (\n <VComponent\n node={separator}\n className=\"dropin-breadcrumbs__separator--icon\"\n />\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n )}\n </>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/AlertBanner/AlertBanner.css';\nimport { Button, Icon } from '@adobe-commerce/elsie/components';\nimport { Close } from '@adobe-commerce/elsie/icons';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface AlertBannerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'icon' | 'action'> {\n variant: 'brand' | 'neutral' | 'success' | 'warning';\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n message: VNode;\n onDismiss: () => void;\n action?: {\n label: string;\n onClick: (event: Event) => void;\n };\n}\n\nexport const AlertBanner: FunctionComponent<AlertBannerProps> = ({\n className,\n variant,\n icon,\n message,\n onDismiss,\n action,\n ...props\n}) => {\n const translations = useText({\n dismiss: 'Dropin.InlineAlert.dismissLabel',\n });\n\n return (\n <div\n {...props}\n className={classes([\n className,\n 'dropin-alert-banner',\n `dropin-alert-banner--${variant}`,\n ])}\n >\n <div className={'dropin-alert-banner__content'}>\n {icon && (\n <VComponent\n node={icon}\n aria-hidden=\"true\"\n className={'dropin-alert-banner__icon'}\n />\n )}\n\n {/* Message */}\n <VComponent\n node={message}\n className={classes(['dropin-alert-banner__message'])}\n />\n </div>\n\n <div className={'dropin-alert-banner__actions'}>\n {action && (\n <Button\n variant=\"tertiary\"\n className={'dropin-alert-banner__action'}\n onClick={action.onClick}\n aria-label={action.label}\n >\n {action.label}\n </Button>\n )}\n\n <Button\n icon={<Icon source={Close} size=\"24\" stroke=\"2\" />}\n className=\"dropin-alert-banner__dismiss-button\"\n variant=\"primary\"\n onClick={onDismiss}\n aria-label={translations.dismiss}\n />\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, JSX } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/IllustratedMessage/IllustratedMessage.css';\nimport { Card } from '@adobe-commerce/elsie/components';\n\nexport interface IllustratedMessageProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'icon' | 'action'> {\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n heading?: string;\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;\n message?: VNode<HTMLAttributes<HTMLElement>>;\n action?: VNode;\n variant?: 'primary' | 'secondary';\n}\n\nexport const IllustratedMessage: FunctionComponent<IllustratedMessageProps> = ({\n className,\n icon,\n heading,\n headingLevel = 2,\n message,\n action,\n variant = 'secondary',\n ...props\n}) => {\n const Heading =\n headingLevel >= 1 && headingLevel <= 6\n ? (`h${headingLevel}` as keyof JSX.IntrinsicElements)\n : 'h2';\n\n return (\n <div\n {...props}\n className={classes(['dropin-illustrated-message', className])}\n >\n <Card variant={variant}>\n {icon && (\n <VComponent\n node={icon}\n aria-hidden=\"true\"\n size=\"80\"\n className=\"dropin-illustrated-message__icon\"\n />\n )}\n\n {heading && (\n <Heading className=\"dropin-illustrated-message__heading\">\n {heading}\n </Heading>\n )}\n\n {message && (\n <VComponent\n node={message}\n className=\"dropin-illustrated-message__message\"\n />\n )}\n\n {action && (\n <VComponent\n node={action}\n className=\"dropin-illustrated-message__action\"\n />\n )}\n </Card>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ToggleButton/ToggleButton.css';\nimport { RadioButton } from '@adobe-commerce/elsie/components';\n\nexport interface ToggleButtonProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'icon' | 'label'> {\n label: string | VNode<HTMLAttributes<HTMLElement>>;\n name: string;\n value: string;\n busy?: boolean;\n icon?:\n | VNode<HTMLAttributes<SVGSVGElement>>\n | VNode<HTMLAttributes<HTMLImageElement>>;\n onChange?: (value: string) => void;\n selected?: boolean;\n}\n\nexport const ToggleButton: FunctionComponent<ToggleButtonProps> = ({\n label,\n name,\n value,\n busy = false,\n children,\n className,\n icon,\n onChange,\n selected = true,\n ...props\n}) => {\n return (\n <div\n {...props}\n className={classes([\n 'dropin-toggle-button',\n className,\n ['dropin-toggle-button__selected', selected],\n ])}\n >\n <label className=\"dropin-toggle-button__actionButton\">\n <RadioButton\n label=\"\"\n name={name}\n value={value}\n checked={selected}\n onChange={() => onChange && onChange(value)}\n aria-label={name}\n busy={busy}\n className={classes([className, 'dropin-toggle-button__radioButton'])}\n />\n\n <span className=\"dropin-toggle-button__content\">\n {icon && (\n // @ts-ignore\n <icon.type\n {...icon?.props}\n className=\"dropin-toggle-button__icon\"\n />\n )}\n {label}\n </span>\n </label>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ComponentChildren, FunctionComponent, VNode, JSX } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport { Divider } from '@adobe-commerce/elsie/components';\nimport '@adobe-commerce/elsie/components/Header/Header.css';\n\nexport interface HeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n title: string;\n size?: 'medium' | 'large';\n divider?: boolean;\n cta?: VNode;\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n}\n\nconst Heading = ({\n level,\n className,\n children,\n}: {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n className?: string;\n children?: ComponentChildren;\n}) => {\n const HeadingTag = level && level >= 1 && level <= 6\n ? `h${level}` as keyof JSX.IntrinsicElements\n : 'span';\n\n return <HeadingTag className={className}>{children as any}</HeadingTag>;\n};\n\nexport const Header: FunctionComponent<HeaderProps> = ({\n title = null,\n size = 'medium',\n cta,\n divider = true,\n className,\n level,\n ...props\n}) => {\n if (!title) return null;\n\n return (\n <div\n {...props}\n className={classes(['dropin-header-container', className])}\n data-testid=\"dropin-header-container\"\n >\n <Heading\n className={classes([\n 'dropin-header-container__title',\n ['dropin-header-container__title--medium', size === 'medium'],\n ['dropin-header-container__title--large', size === 'large'],\n ])}\n level={level}\n >\n {title}\n </Heading>\n {cta ? (\n <VComponent node={cta} className=\"dropin-header-container__actions\" />\n ) : null}\n {divider ? (\n <Divider\n className={classes([\n 'dropin-header-container__divider',\n ['dropin-header-container__divider--medium', size === 'medium'],\n ['dropin-header-container__divider--large', size === 'large'],\n ])}\n />\n ) : null}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { HTMLAttributes } from 'preact/compat';\nimport '@adobe-commerce/elsie/components/Tag/Tag.css';\n\nexport interface TagProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'icon'> {\n label?: string;\n children?: VNode | VNode[];\n}\n\nexport const Tag: FunctionComponent<TagProps> = ({\n label,\n className,\n children,\n ...props\n}) => {\n if (!label && !children) return null;\n\n return (\n <div\n {...props}\n className={classes(['dropin-tag-container', className])}\n data-testid=\"dropin-tag-container\"\n >\n {children ?? <span className=\"dropin-tag-container__label\">{label}</span>}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ContentGrid/ContentGrid.css';\n\nexport interface ContentGridProps extends HTMLAttributes<HTMLDivElement> {\n emptyGridContent: VNode;\n maxColumns?: number;\n columnWidth?: string;\n}\n\nexport const ContentGrid: FunctionComponent<ContentGridProps> = ({\n className,\n children,\n maxColumns,\n columnWidth = '1fr',\n emptyGridContent,\n ...props\n}) => {\n const hasChildren =\n !!children && (Array.isArray(children) ? children.length > 0 : true);\n\n const additionalStyles = hasChildren\n ? {\n gridTemplateColumns: `repeat(${maxColumns}, ${columnWidth})`,\n }\n : undefined;\n\n return (\n <div\n {...props}\n className={classes(['dropin-content-grid', className])}\n tabindex={0}\n >\n <div\n data-testid=\"content-grid-content\"\n className={classes([\n 'dropin-content-grid__content',\n ['dropin-content-grid__dynamic-columns-content', !maxColumns],\n ['dropin-content-grid__content--empty', !hasChildren],\n ])}\n style={additionalStyles}\n >\n {hasChildren ? children : emptyGridContent}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes, isNumber } from '@adobe-commerce/elsie/lib';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport { ChevronDown } from '@adobe-commerce/elsie/icons';\nimport { Icon } from '@adobe-commerce/elsie/components/Icon';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport '@adobe-commerce/elsie/components/Pagination/Pagination.css';\n\nexport interface PaginationProps {\n className?: string;\n currentPage?: number;\n totalPages?: number;\n onChange?: (currentPage: number) => void;\n}\n\nexport type PaginationList = {\n page: number | string;\n isActive: boolean;\n label: number | string;\n};\n\nexport const Pagination: FunctionComponent<PaginationProps> = ({\n totalPages = 10,\n currentPage = 1,\n onChange,\n className,\n ...props\n}) => {\n const translations = useText({\n backwardButton: 'Dropin.Pagination.backwardButton.ariaLabel',\n forwardButton: 'Dropin.Pagination.forwardButton.ariaLabel',\n });\n\n const handleForward = useCallback(() => {\n const nextPage = Math.min(currentPage + 1, totalPages);\n\n onChange?.(nextPage);\n }, [currentPage, onChange, totalPages]);\n\n const handleBackward = useCallback(() => {\n const prevPage = Math.max(currentPage - 1, 1);\n\n onChange?.(prevPage);\n }, [currentPage, onChange]);\n\n const handleSetPage = useCallback(\n (currentPage: number | string) => {\n if (isNumber(currentPage)) {\n onChange?.(currentPage as number);\n }\n },\n [onChange]\n );\n\n const createPages = useCallback(\n (currentPage: number, totalPages: number): PaginationList[] => {\n let pages: PaginationList[] = [];\n\n const addPageRange = (start: number, end: number) => {\n for (let i = start; i <= end; i++) {\n pages.push({ page: i, isActive: i === currentPage, label: i });\n }\n };\n\n if (totalPages <= 5) {\n addPageRange(1, totalPages);\n } else if (currentPage <= 2) {\n addPageRange(1, 2);\n pages.push({ page: 'ellipsis', isActive: false, label: '...' });\n addPageRange(totalPages - 1, totalPages);\n } else if (currentPage >= totalPages - 3) {\n addPageRange(totalPages - 4, totalPages);\n } else {\n addPageRange(currentPage - 1, currentPage);\n pages.push({ page: 'ellipsis', isActive: false, label: '...' });\n addPageRange(totalPages - 1, totalPages);\n }\n\n return pages;\n },\n []\n );\n\n const paginationList: PaginationList[] = useMemo(\n () => createPages(currentPage, totalPages),\n [createPages, currentPage, totalPages]\n );\n\n return (\n <div {...props} className={classes(['dropin-pagination', className])}>\n <button\n type=\"button\"\n data-testid=\"prev-button\"\n aria-label={translations.backwardButton}\n disabled={currentPage === 1}\n onClick={handleBackward}\n className={classes([\n 'dropin-pagination-arrow',\n 'dropin-pagination-arrow--backward',\n ])}\n >\n <Icon size=\"24\" source={ChevronDown} />\n </button>\n <ul className=\"dropin-pagination_list\">\n {(paginationList as PaginationList[]).map((item, index) => (\n <li\n data-testid={`dropin-pagination_list-item--${item.page}`}\n key={`${item.page}_${index}`}\n className={classes([\n 'dropin-pagination_list-item',\n `dropin-pagination_list-item--${item.page}`,\n [`dropin-pagination_list-item--active`, item.isActive],\n ])}\n >\n <button\n type=\"button\"\n data-testid={`set-page-button-${item.page}`}\n onClick={() => handleSetPage(item.page)}\n >\n {item.label}\n </button>\n </li>\n ))}\n </ul>\n <button\n type=\"button\"\n data-testid=\"next-button\"\n aria-label={translations.forwardButton}\n disabled={currentPage === totalPages}\n onClick={handleForward}\n className={classes([\n 'dropin-pagination-arrow',\n 'dropin-pagination-arrow--forward',\n ])}\n >\n <Icon size=\"24\" source={ChevronDown} />\n </button>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\nimport '@adobe-commerce/elsie/components/ProductItemCard/ProductItemCardSkeleton.css';\n\nexport const ProductItemCardSkeleton: FunctionComponent = () => {\n return (\n <div className=\"dropin-product-item-card dropin-product-item-card-skeleton\">\n <Skeleton className=\"dropin-product-item-card__skeleton dropin-product-item-card__image-container\">\n <SkeletonRow\n fullWidth={true}\n className=\"dropin-product-item-card__skeleton__image\"\n />\n </Skeleton>\n <Skeleton className=\"dropin-product-item-card__content dropin-product-item-card__skeleton__content\">\n <SkeletonRow\n fullWidth={true}\n size=\"xsmall\"\n className=\"dropin-product-item-card__skeleton__item\"\n />\n <SkeletonRow\n fullWidth={true}\n size=\"xsmall\"\n className=\"dropin-product-item-card__skeleton__item\"\n />\n <SkeletonRow\n fullWidth={true}\n size=\"xsmall\"\n className=\"dropin-product-item-card__skeleton__item\"\n />\n </Skeleton>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport { ProductItemCardSkeleton } from '@adobe-commerce/elsie/components/ProductItemCard/ProductItemCardSkeleton';\nimport '@adobe-commerce/elsie/components/ProductItemCard/ProductItemCard.css';\n\nexport interface ProductItemCardProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n image?: VNode;\n titleNode?: VNode;\n price?: VNode;\n sku?: VNode;\n actionButton?: VNode;\n swatches?: VNode;\n initialized?: boolean;\n imageHref?: string;\n imageLinkLabel?: string;\n}\n\nexport const ProductItemCard: FunctionComponent<ProductItemCardProps> = ({\n className,\n image,\n titleNode,\n price,\n sku,\n actionButton,\n swatches,\n initialized = false,\n imageHref,\n imageLinkLabel,\n ...props\n}) => {\n if (!initialized) {\n return <ProductItemCardSkeleton />;\n }\n return (\n <div\n {...props}\n className={classes(['dropin-product-item-card', className])}\n >\n <div className=\"dropin-product-item-card__image-container\">\n {image && (\n imageHref ? (\n <a\n href={imageHref}\n className=\"dropin-product-item-card__image-link\"\n aria-label={imageLinkLabel}\n >\n <VComponent\n node={image}\n className={classes(['dropin-product-item-card__image'])}\n />\n </a>\n ) : (\n <VComponent\n node={image}\n className={classes(['dropin-product-item-card__image'])}\n />\n )\n )}\n </div>\n <div className=\"dropin-product-item-card__content\">\n {titleNode && (\n <VComponent\n node={titleNode}\n className={classes(['dropin-product-item-card__title'])}\n />\n )}\n {sku && (\n <VComponent\n node={sku}\n className={classes(['dropin-product-item-card__sku'])}\n />\n )}\n {price && (\n <div className=\"dropin-product-item-card__price\">\n <VComponent\n node={price}\n className={classes(['dropin-product-item-card__price'])}\n />\n </div>\n )}\n {swatches && (\n <div className=\"dropin-product-item-card__swatches\">\n <VComponent\n node={swatches}\n className={classes(['dropin-product-item-card__swatches'])}\n />\n </div>\n )}\n {actionButton && (\n <div className=\"dropin-product-item-card__action\">\n <VComponent\n node={actionButton}\n className={classes(['dropin-product-item-card__action'])}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { useId } from 'preact/hooks';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/InputFile/InputFile.css';\n\nexport interface InputFileProps extends Omit<HTMLAttributes<HTMLInputElement>, 'type' | 'icon'> {\n accept?: string;\n onChange?: (event: Event) => void;\n label?: string;\n multiple?: boolean;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n}\n\nexport const InputFile: FunctionComponent<InputFileProps> = ({\n accept,\n onChange,\n label = 'Upload Document',\n icon,\n className,\n multiple,\n id: providedId,\n ...props\n}) => {\n \n const generatedId = useId();\n const id = providedId || generatedId;\n\n const handleChange = (e: Event) => {\n onChange?.(e);\n };\n\n return (\n <div className={classes(['dropin-input-file', className])}>\n <label htmlFor={id} className=\"dropin-input-file__label\">\n {icon && <span className=\"dropin-input-file__icon\">{icon}</span>}\n {label}\n </label>\n <input\n id={id}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleChange}\n className=\"dropin-input-file__input\"\n {...props}\n />\n </div>\n );\n};"],"file":"components.js"}
|
|
1
|
+
{"version":3,"mappings":"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","names":["SINGLELINE","SkeletonRow","className","fullWidth","lines","size","variant","children","multilineGap","props","sharedClasses","jsx","classes","svg","_","index","Skeleton","rowGap","lazyIcons","lazy","__vitePreload","n","isValidUrl","source","absoluteUrl","UrlSvgLoader","url","svgContent","setSvgContent","useState","loading","setLoading","error","setError","useEffect","response","content","e","processedContent","Icon","Source","stroke","viewBox","defaultProps","isLikelyUrl","Suspense","LazyIcon","isRejectedUrl","Incrementer","name","value","disabled","success","min","max","onValue","onUpdateError","currentValue","setCurrentValue","minValue","maxValue","isInvalid","errorMessage","propValue","debouncedOnValueHandler","useCallback","debounce","newValue","handleIncrementer","_value","jsxs","Localizer","Text","Minus","Add","Input","floatingLabel","icon","maxLength","id","handleOnValue","input","VComponent","WarningWithCircle","CheckWithCircle","InputDate","label","onChange","onBlur","internalValue","setInternalValue","iosInputRef","useRef","dictionary","useText","handleOnFocus","event","isIOSMobileDevice","handleOnClick","_a","handleOnBlur","handleInputChange","Field","Date","getIcon","PendingValidation","Check","ErrorValidation","PasswordStatusIndicator","minLength","requiredCharacterClasses","uniqueSymbolsStatus","validateLengthConfig","translations","getMessage","chart","InputPassword","placeholder","required","autoComplete","defaultValue","hideStatusIndicator","showPassword","setShowPassword","toggleShowPassword","prevShowPassword","title","Locker","Button","Eye","EyeClose","TextArea","textareaRef","useId","textArea","Divider","Price","amount","currency","locale","weight","sale","formatOptions","effectiveLocale","useMemo","globalLocale","getGlobalLocale","define_process_env_default","formatter","params","formattedAmount","RadioButton","checked","description","busy","active","activeChildren","activeIcon","href","buttonType","iconClassName","attributes","findSelectedValue","defaultOption","firstAvailableOption","Picker","options","handleSelect","uniqueId","isRequired","option","selectedValue","setSelectedValue","handleOptionClick","element","optionsListItems","text","isSelected","hasToDisplayPlaceholder","ChevronDown","hint","ChildComponent","createElement","ActionButton","ActionButtonGroup","activeOption","dividers","activeOptionState","setActiveOptionState","handleClick","buttonGroupOptions","Children","child","isOptionDisabled","isOptionActive","cloneElement","Card","Checkbox","isChecked","setIsChecked","ref","handleCheckboxChange","handleOnKeyDown","ColorSwatch","groupAriaLabel","color","selected","outOfStock","multi","outOfStockLabel","selectedLabel","swatchLabel","onValueHandler","validColor","colorStyle","handleAriaLabel","TextSwatch","isOverflowing","setIsOverflowing","spanRef","ProgressSpinner","ariaLabel","style","commonClasses","ImageSwatch","src","alt","imageNode","imageProps","Image","AccordionSection","ariaLabelTitle","secondaryText","actionIconPosition","iconOpen","iconClose","iconLeft","showIconLeft","renderContentWhenClosed","defaultOpen","onStateChange","open","setOpen","onClickHandler","next","buttonLabel","openIcon","closeIcon","leftIcon","Accordion","divider","renderAccordionSection","Fragment","InLineAlert","type","additionalActions","onDismiss","heading","itemList","actionButtonPosition","_b","_c","Close","action","Portal","portalRoot","contentRef","useLayoutEffect","Modal","centered","backgroundDim","clickToDismiss","escapeToDismiss","onClose","showCloseButton","handleOnClose","handleOutsideClick","modal","modalBody","handleKeyDown","scrollingElement","defaultOverflowValue","CloseSVG","CartItem","image","price","taxIncluded","taxExcluded","total","totalExcludingTax","sku","configurations","warning","alert","discount","savings","actions","removeContent","quantity","quantityContent","footer","updating","quantityType","dropdownOptions","onQuantity","onRemove","useContext","UIContext","labels","CartItemSkeleton","quantityComponent","key","Trash","CartList","PriceRange","minimumAmount","maximumAmount","display","specialPrice","isSimpleProduct","Dashed","FromTo","SpecialPrice","Breadcrumbs","categories","separator","category","AlertBanner","message","IllustratedMessage","headingLevel","Heading","ToggleButton","level","HeadingTag","Header","cta","Tag","ContentGrid","maxColumns","columnWidth","emptyGridContent","hasChildren","additionalStyles","Pagination","totalPages","currentPage","handleForward","nextPage","handleBackward","prevPage","handleSetPage","isNumber","createPages","pages","addPageRange","start","end","i","paginationList","item","ProductItemCardSkeleton","ProductItemCard","titleNode","actionButton","swatches","initialized","InputFile","accept","multiple","providedId","generatedId","handleChange"],"ignoreList":[],"sources":["/@dropins/tools/src/components/Skeleton/Skeleton.tsx","/@dropins/tools/src/components/Icon/Icon.tsx","/@dropins/tools/src/components/Incrementer/Incrementer.tsx","/@dropins/tools/src/components/Input/Input.tsx","/@dropins/tools/src/components/InputDate/InputDate.tsx","/@dropins/tools/src/components/InputPassword/PasswordStatusIndicator/PasswordStatusIndicator.tsx","/@dropins/tools/src/components/InputPassword/InputPassword.tsx","/@dropins/tools/src/components/TextArea/TextArea.tsx","/@dropins/tools/src/components/Divider/Divider.tsx","/@dropins/tools/src/components/Price/Price.tsx","/@dropins/tools/src/components/RadioButton/RadioButton.tsx","/@dropins/tools/src/components/Button/Button.tsx","/@dropins/tools/src/components/Picker/Picker.tsx","/@dropins/tools/src/components/Field/Field.tsx","/@dropins/tools/src/components/ActionButton/ActionButton.tsx","/@dropins/tools/src/components/ActionButtonGroup/ActionButtonGroup.tsx","/@dropins/tools/src/components/Card/Card.tsx","/@dropins/tools/src/components/Checkbox/Checkbox.tsx","/@dropins/tools/src/components/ColorSwatch/ColorSwatch.tsx","/@dropins/tools/src/components/TextSwatch/TextSwatch.tsx","/@dropins/tools/src/components/ProgressSpinner/ProgressSpinner.tsx","/@dropins/tools/src/components/ImageSwatch/ImageSwatch.tsx","/@dropins/tools/src/components/Accordion/Accordion.tsx","/@dropins/tools/src/components/InLineAlert/InLineAlert.tsx","/@dropins/tools/src/components/Portal/Portal.tsx","/@dropins/tools/src/components/Modal/Modal.tsx","/@dropins/tools/src/components/CartItem/CartItem.tsx","/@dropins/tools/src/components/CartItem/CartItemSkeleton.tsx","/@dropins/tools/src/components/CartList/CartList.tsx","/@dropins/tools/src/components/PriceRange/PriceRange.tsx","/@dropins/tools/src/components/Breadcrumbs/Breadcrumbs.tsx","/@dropins/tools/src/components/AlertBanner/AlertBanner.tsx","/@dropins/tools/src/components/IllustratedMessage/IllustratedMessage.tsx","/@dropins/tools/src/components/ToggleButton/ToggleButton.tsx","/@dropins/tools/src/components/Header/Header.tsx","/@dropins/tools/src/components/Tag/Tag.tsx","/@dropins/tools/src/components/ContentGrid/ContentGrid.tsx","/@dropins/tools/src/components/Pagination/Pagination.tsx","/@dropins/tools/src/components/ProductItemCard/ProductItemCardSkeleton.tsx","/@dropins/tools/src/components/ProductItemCard/ProductItemCard.tsx","/@dropins/tools/src/components/InputFile/InputFile.tsx"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Skeleton/Skeleton.css';\n\nexport interface SkeletonRowProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n fullWidth?: boolean;\n lines?: number;\n size?: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\n variant?: 'heading' | 'row' | 'empty';\n multilineGap?: 'xsmall' | 'small' | 'medium' | 'big' | 'xbig';\n children?: string;\n}\n\nconst SINGLELINE = 1;\n\nexport const SkeletonRow: FunctionComponent<SkeletonRowProps> = ({\n className,\n fullWidth = false,\n lines = SINGLELINE,\n size = 'small',\n variant = 'row',\n children = null,\n multilineGap = 'medium',\n ...props\n}) => {\n const sharedClasses = [\n [`dropin-skeleton-row__${variant}`, variant],\n [`dropin-skeleton-row__${variant}-${size}`, variant && size],\n ];\n\n if (!children && variant === 'empty') {\n return (\n <div\n className={classes([\n 'dropin-skeleton-row dropin-skeleton-row__empty',\n className,\n ])}\n />\n );\n }\n\n if (children) {\n const svg = children.trim();\n return (\n <div\n {...props}\n class={classes([\n 'dropin-skeleton-row',\n [`dropin-skeleton-row--full`, fullWidth],\n className,\n ])}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n );\n }\n\n const isMultiline = lines > SINGLELINE;\n\n if (isMultiline === false) {\n return (\n <div\n {...props}\n class={classes([\n 'dropin-skeleton-row',\n [`dropin-skeleton-row--full`, fullWidth],\n 'dropin-skeleton--row__content',\n ...sharedClasses,\n className,\n ])}\n />\n );\n }\n\n return (\n <div\n {...props}\n style={{ '--multiline-gap-spacing': `var(--spacing-${multilineGap})` }}\n class={classes([\n 'dropin-skeleton-row--multiline',\n [`dropin-skeleton-row--full`, fullWidth],\n className,\n ])}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n class={classes([\n 'dropin-skeleton-row',\n [`dropin-skeleton-row--full`, fullWidth],\n 'dropin-skeleton--row__content',\n ...sharedClasses,\n ])}\n />\n ))}\n </div>\n );\n};\n\nexport interface SkeletonProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n rowGap?: 'xsmall' | 'small' | 'medium' | 'big' | 'xbig';\n}\n\nexport const Skeleton: FunctionComponent<SkeletonProps> = ({\n className,\n children,\n rowGap = 'medium',\n ...props\n}) => {\n return (\n <div\n style={{ '--row-gap-spacing': `var(--spacing-${rowGap})` }}\n {...props}\n className={classes(['dropin-skeleton', className])}\n role=\"status\"\n aria-label=\"Loading...\"\n >\n {children}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes } from '@adobe-commerce/elsie/lib/classes';\nimport { lazy, Suspense, SVGProps } from 'preact/compat';\nimport { useState, useEffect } from 'preact/hooks';\n\nimport '@adobe-commerce/elsie/components/Icon/Icon.css';\n\nexport type IconType = keyof typeof import('@adobe-commerce/elsie/icons');\n\nconst lazyIcons = {\n Add: lazy(() => import('@adobe-commerce/elsie/icons/Add.svg')),\n Bulk: lazy(() => import('@adobe-commerce/elsie/icons/Bulk.svg')),\n Burger: lazy(() => import('@adobe-commerce/elsie/icons/Burger.svg')),\n Cart: lazy(() => import('@adobe-commerce/elsie/icons/Cart.svg')),\n Check: lazy(() => import('@adobe-commerce/elsie/icons/Check.svg')),\n ChevronDown: lazy(() => import('@adobe-commerce/elsie/icons/ChevronDown.svg')),\n ChevronUp: lazy(() => import('@adobe-commerce/elsie/icons/ChevronUp.svg')),\n ChevronRight: lazy(() => import('@adobe-commerce/elsie/icons/ChevronRight.svg')),\n Close: lazy(() => import('@adobe-commerce/elsie/icons/Close.svg')),\n Heart: lazy(() => import('@adobe-commerce/elsie/icons/Heart.svg')),\n Minus: lazy(() => import('@adobe-commerce/elsie/icons/Minus.svg')),\n Placeholder: lazy(() => import('@adobe-commerce/elsie/icons/Placeholder.svg')),\n PlaceholderFilled: lazy(\n () => import('@adobe-commerce/elsie/icons/PlaceholderFilled.svg')\n ),\n Search: lazy(() => import('@adobe-commerce/elsie/icons/Search.svg')),\n SearchFilled: lazy(() => import('@adobe-commerce/elsie/icons/SearchFilled.svg')),\n Sort: lazy(() => import('@adobe-commerce/elsie/icons/Sort.svg')),\n Star: lazy(() => import('@adobe-commerce/elsie/icons/Star.svg')),\n View: lazy(() => import('@adobe-commerce/elsie/icons/View.svg')),\n User: lazy(() => import('@adobe-commerce/elsie/icons/User.svg')),\n Warning: lazy(() => import('@adobe-commerce/elsie/icons/Warning.svg')),\n Locker: lazy(() => import('@adobe-commerce/elsie/icons/Locker.svg')),\n Wallet: lazy(() => import('@adobe-commerce/elsie/icons/Wallet.svg')),\n Card: lazy(() => import('@adobe-commerce/elsie/icons/Card.svg')),\n Order: lazy(() => import('@adobe-commerce/elsie/icons/Order.svg')),\n Delivery: lazy(() => import('@adobe-commerce/elsie/icons/Delivery.svg')),\n OrderError: lazy(() => import('@adobe-commerce/elsie/icons/OrderError.svg')),\n OrderSuccess: lazy(() => import('@adobe-commerce/elsie/icons/OrderSuccess.svg')),\n PaymentError: lazy(() => import('@adobe-commerce/elsie/icons/PaymentError.svg')),\n CheckWithCircle: lazy(() => import('@adobe-commerce/elsie/icons/CheckWithCircle.svg')),\n WarningWithCircle: lazy(\n () => import('@adobe-commerce/elsie/icons/WarningWithCircle.svg')\n ),\n WarningFilled: lazy(() => import('@adobe-commerce/elsie/icons/WarningFilled.svg')),\n InfoFilled: lazy(() => import('@adobe-commerce/elsie/icons/InfoFilled.svg')),\n HeartFilled: lazy(() => import('@adobe-commerce/elsie/icons/HeartFilled.svg')),\n Trash: lazy(() => import('@adobe-commerce/elsie/icons/Trash.svg')),\n Eye: lazy(() => import('@adobe-commerce/elsie/icons/Eye.svg')),\n EyeClose: lazy(() => import('@adobe-commerce/elsie/icons/EyeClose.svg')),\n Date: lazy(() => import('@adobe-commerce/elsie/icons/Date.svg')),\n AddressBook: lazy(() => import('@adobe-commerce/elsie/icons/AddressBook.svg')),\n EmptyBox: lazy(() => import('@adobe-commerce/elsie/icons/EmptyBox.svg')),\n Coupon: lazy(() => import('@adobe-commerce/elsie/icons/Coupon.svg')),\n Gift: lazy(() => import('@adobe-commerce/elsie/icons/Gift.svg')),\n GiftCard: lazy(() => import('@adobe-commerce/elsie/icons/GiftCard.svg')),\n Edit: lazy(() => import('@adobe-commerce/elsie/icons/Edit.svg')),\n};\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'size'> {\n source?:\n | FunctionComponent<SVGProps<SVGSVGElement> & { title?: string }>\n | IconType\n | string;\n size?: '12' | '16' | '24' | '32' | '64' | '80';\n stroke?: '1' | '2' | '3' | '4';\n className?: string;\n title?: string;\n}\n\nexport type IconNode = FunctionComponent<\n SVGProps<SVGSVGElement> & { title?: string }\n>;\n\nfunction isValidUrl(source: string): boolean { // check for URL from same domain\n try {\n if (source.startsWith('//')) {\n const absoluteUrl = `${window.location.protocol}${source}`;\n const url = new URL(absoluteUrl);\n if (url.hostname !== window.location.hostname) {\n console.error(\n `[Icon] External URL rejected for security: ${source} - Only same-domain URLs are allowed`\n );\n return false;\n }\n return true;\n }\n const url = new URL(source);\n \n if (url.hostname !== window.location.hostname) {\n console.error(`[Icon] External URL rejected for security: ${source} - Only same-domain URLs are allowed`);\n return false;\n }\n \n return true;\n } catch {\n console.error(`[Icon] Invalid URL format: ${source}`);\n return false;\n }\n}\n\nfunction UrlSvgLoader({\n url,\n ...props\n}: SVGProps<SVGSVGElement> & { url: string }) {\n const [svgContent, setSvgContent] = useState<string>('');\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(false);\n\n useEffect(() => {\n fetch(url)\n .then(response => {\n if (!response.ok) {\n console.error(`[Icon] Failed to fetch SVG: ${response.status} ${response.statusText}`);\n throw error;\n }\n return response.text();\n })\n .then(content => {\n // Check if content is valid SVG\n try {\n const parser = new DOMParser();\n const doc = parser.parseFromString(content, \"image/svg+xml\");\n const svg = doc.querySelector('svg');\n if (!svg) {\n throw new Error(\"No <svg> element found\");\n }\n // Success!\n } catch(e: unknown) {\n if (e instanceof Error ) {\n console.error(`[Icon] Invalid SVG content from ${url}: ${e.message}`);\n } else {\n console.error(`[Icon] Invalid SVG content from ${url}: ${String(e)}`);\n }\n setError(true);\n setLoading(false);\n }\n \n\n // Process SVG content to ensure proper sizing and accessibility\n let processedContent = content;\n\n if (props.width) {\n processedContent = processedContent.replace(\n /<svg([^>]*)\\s+width\\s*=\\s*[\"'][^\"']*[\"']/gi,\n '<svg$1'\n );\n processedContent = processedContent.replace(\n /<svg/i,\n `<svg width=\"${props.width}\"`\n );\n }\n\n if (props.height) {\n processedContent = processedContent.replace(\n /<svg([^>]*)\\s+height\\s*=\\s*[\"'][^\"']*[\"']/gi,\n '<svg$1'\n );\n processedContent = processedContent.replace(\n /<svg/i,\n `<svg height=\"${props.height}\"`\n );\n }\n \n if (props.title) {\n processedContent = processedContent.replace(/<title[^>]*>.*?<\\/title>/gi, '');\n processedContent = processedContent.replace(\n /<svg([^>]*)>/i,\n `<svg$1><title>${props.title}</title>`\n );\n }\n \n setSvgContent(processedContent);\n setLoading(false);\n })\n .catch((error) => {\n if (error instanceof Error) {\n console.error(`[Icon] ${error.message}`);\n } else {\n console.error(`[Icon] ${String(error)}`);\n }\n setError(true);\n setLoading(false);\n });\n }, [url, props.width, props.height, props.title]);\n\n if (loading || error) {\n return <svg {...props} />;\n }\n\n return (\n <span\n className={props.className}\n style={{\n width: String(props.width),\n height: String(props.height),\n display: 'inline-flex',\n lineHeight: 0,\n }}\n dangerouslySetInnerHTML={{ __html: svgContent }}\n />\n );\n}\n\nexport function Icon({\n source: Source,\n size = '24',\n stroke = '2',\n viewBox = '0 0 24 24',\n className,\n ...props\n}: IconProps) {\n\n const defaultProps = {\n className: classes([\n 'dropin-icon',\n `dropin-icon--shape-stroke-${stroke}`,\n className,\n ]),\n width: size,\n height: size,\n viewBox,\n };\n\n // Only validate strings that look like URLs (start with http, //, or /)\n const isLikelyUrl =\n typeof Source === 'string' &&\n (Source.startsWith('http') ||\n Source.startsWith('//') ||\n Source.startsWith('/'));\n\n if (isLikelyUrl && isValidUrl(Source)) {\n return (\n <Suspense fallback={<svg {...props} {...defaultProps} />}>\n <UrlSvgLoader url={Source} {...props} {...defaultProps}/>\n </Suspense>\n );\n }\n\n const LazyIcon = typeof Source === 'string' && Source in lazyIcons\n ? lazyIcons[Source as IconType]\n : null;\n\n const isRejectedUrl = isLikelyUrl && !isValidUrl(Source);\n\n return (\n <Suspense fallback={<svg {...props} {...defaultProps} />}>\n {LazyIcon ? (\n <LazyIcon {...props} {...defaultProps} />\n ) : isRejectedUrl ? (\n <svg {...props} {...defaultProps} />\n ) : (\n // @ts-ignore\n <Source {...props} {...defaultProps} />\n )}\n </Suspense>\n );\n}\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useState, useCallback, useEffect } from 'preact/hooks';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, debounce } from '@adobe-commerce/elsie/lib';\nimport { Add, Minus } from '@adobe-commerce/elsie/icons';\nimport { Icon } from '@adobe-commerce/elsie/components/Icon';\nimport { Localizer, Text } from '@adobe-commerce/elsie/i18n';\nimport '@adobe-commerce/elsie/components/Incrementer/Incrementer.css';\n\nexport interface IncrementerProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'size'> {\n name?: string;\n size?: 'medium' | 'large';\n onValue?: (value: any) => void;\n onUpdateError?: (error: Error) => void;\n error?: boolean;\n success?: boolean;\n min?: number;\n max?: number;\n disabled?: boolean;\n maxLength?: number;\n}\n\nexport const Incrementer: FunctionComponent<IncrementerProps> = ({\n name,\n value = '1',\n className,\n disabled,\n error,\n success,\n min,\n max,\n onValue,\n onUpdateError,\n size = 'medium',\n ...props\n}) => {\n const [currentValue, setCurrentValue] = useState<number>(Number(value));\n const minValue = Number(min);\n const maxValue = Number(max);\n const isInvalid = error || currentValue < minValue || currentValue > maxValue;\n\n const errorMessage =\n currentValue < minValue\n ? 'Dropin.Incrementer.minQuantityMessage'\n : currentValue > maxValue\n ? 'Dropin.Incrementer.maxQuantityMessage'\n : 'Dropin.Incrementer.errorMessage';\n\n // Add this effect to synchronize internal state with external value prop\n useEffect(() => {\n const propValue = Number(value);\n if (propValue !== currentValue) {\n setCurrentValue(propValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnValueHandler = useCallback(\n debounce(async (newValue: any) => {\n if (onValue) {\n try {\n onValue(newValue);\n } catch (e) {\n if (onUpdateError) {\n onUpdateError(e as Error);\n }\n }\n }\n }, 200),\n [onValue, onUpdateError]\n );\n\n const handleIncrementer = (_value: number) => {\n let newValue = _value;\n debouncedOnValueHandler(newValue);\n setCurrentValue(newValue);\n };\n\n return (\n <div\n className={classes([\n 'dropin-incrementer',\n `dropin-incrementer--${size}`,\n className,\n ])}\n >\n <div\n className={classes([\n 'dropin-incrementer__content',\n `dropin-incrementer__content--${size}`,\n [`dropin-incrementer__content--error`, isInvalid],\n [`dropin-incrementer__content--success`, success],\n [`dropin-incrementer__content--disabled`, disabled],\n ])}\n >\n {/* Minus Button */}\n <div\n className={classes([\n 'dropin-incrementer__button-container',\n [`dropin-incrementer__button-container--disabled`, disabled],\n ])}\n >\n <Localizer>\n <button\n type=\"button\"\n className={classes([\n 'dropin-incrementer__decrease-button',\n [`dropin-incrementer__decrease-button--disabled`, disabled],\n ])}\n onClick={() => handleIncrementer(currentValue - 1)}\n disabled={disabled || currentValue < minValue + 1}\n aria-label={\n (<Text id=\"Dropin.Incrementer.decreaseLabel\" />) as any\n }\n >\n <Icon\n source={Minus}\n size=\"16\"\n stroke=\"1\"\n viewBox=\"4 2 20 20\"\n className=\"dropin-incrementer__down\"\n />\n </button>\n </Localizer>\n </div>\n\n {/* Input Field */}\n <input\n className=\"dropin-incrementer__input\"\n max={max}\n min={min}\n step={1}\n type=\"number\"\n name={name}\n value={currentValue}\n disabled={disabled}\n onBlur={() => {\n handleIncrementer(Number(currentValue));\n }}\n onChange={(e) => {\n const newValue = e.currentTarget.value;\n if (newValue !== '') {\n handleIncrementer(Number(newValue));\n }\n }}\n {...props}\n />\n\n <div\n className={classes([\n 'dropin-incrementer__button-container',\n [`dropin-incrementer__button-container--disabled`, disabled],\n ])}\n >\n {/* Plus/Add button */}\n <Localizer>\n <button\n type=\"button\"\n className={classes([\n 'dropin-incrementer__increase-button',\n [`dropin-incrementer__increase-button--disabled`, disabled],\n ])}\n onClick={() => handleIncrementer(currentValue + 1)}\n disabled={disabled || currentValue > maxValue - 1}\n aria-label={\n (<Text id=\"Dropin.Incrementer.increaseLabel\" />) as any\n }\n >\n <Icon\n source={Add}\n size=\"16\"\n stroke=\"1\"\n viewBox=\"4 2 20 20\"\n className=\"dropin-incrementer__add\"\n />\n </button>\n </Localizer>\n </div>\n </div>\n {isInvalid && (\n <p className=\"dropin-incrementer__content--error-message\">\n <Text\n id={errorMessage}\n fields={{ minQuantity: min, maxQuantity: max }}\n />\n </p>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { Icon } from '@adobe-commerce/elsie/components/Icon';\nimport '@adobe-commerce/elsie/components/Input/Input.css';\nimport { CheckWithCircle, WarningWithCircle } from '@adobe-commerce/elsie/icons';\nimport { VComponent, classes, debounce } from '@adobe-commerce/elsie/lib';\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useCallback } from 'preact/hooks';\n\nexport interface InputProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'size' | 'icon'> {\n id?: string;\n name?: string;\n variant?: 'primary' | 'secondary';\n disabled?: boolean;\n error?: boolean;\n floatingLabel?: string;\n onUpdateError?: (error: Error) => void;\n onValue?: (value: any) => void;\n size?: 'medium' | 'large';\n success?: boolean;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n maxLength?: number;\n}\n\nexport const Input: FunctionComponent<InputProps> = ({\n name,\n value,\n variant = 'primary',\n className,\n disabled,\n error,\n floatingLabel,\n onValue,\n onUpdateError,\n size = 'medium',\n icon,\n maxLength,\n success,\n ...props\n}) => {\n const id = props?.id || name || `dropin-input-${Math.random().toString(36)}`;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnValueHandler = useCallback(\n debounce(async (newValue: any) => {\n if (onValue) {\n try {\n await onValue(newValue);\n } catch (e) {\n if (onUpdateError) {\n onUpdateError(e as Error);\n }\n }\n }\n }, 200),\n [onValue, onUpdateError]\n );\n\n const handleOnValue = (e: Event) => {\n const input = e.target as HTMLInputElement;\n\n debouncedOnValueHandler(input.value.trim());\n };\n\n return (\n <div\n className={classes([\n 'dropin-input-container',\n `dropin-input-container--${variant}`,\n [`dropin-input-container--floating`, !!floatingLabel],\n ['dropin-input-container--disabled', disabled],\n ])}\n >\n {icon && (\n <VComponent\n node={icon}\n className={classes([\n 'dropin-input__field-icon--left',\n icon.props.className,\n ])}\n />\n )}\n <div className=\"dropin-input-label-container\">\n {/* Input */}\n <input\n id={id}\n onChange={handleOnValue}\n type=\"text\"\n maxLength={maxLength}\n name={name}\n value={value}\n {...props}\n className={classes([\n 'dropin-input',\n `dropin-input--${size}`,\n `dropin-input--${variant}`,\n [`dropin-input--error`, !!error],\n [`dropin-input--success`, !!success],\n ['dropin-input--disabled', disabled],\n [`dropin-input--floating`, !!floatingLabel],\n [`dropin-input--icon-left`, !!icon],\n className,\n ])}\n disabled={disabled}\n />\n\n {/* Floating Label */}\n {floatingLabel && (\n <label\n htmlFor={id}\n className={classes([\n [`dropin-input__label--floating`, !!floatingLabel],\n [`dropin-input__label--floating--icon-left`, !!icon],\n [`dropin-input__label--floating--error`, !!error],\n ])}\n >\n {floatingLabel}\n </label>\n )}\n </div>\n\n {error && (\n <div\n className={classes([\n 'dropin-input__field-icon--right',\n 'dropin-input__field-icon--error',\n ])}\n >\n <Icon\n source={WarningWithCircle}\n size=\"16\"\n stroke=\"2\"\n className=\"dropin-input--warning-icon\"\n viewBox=\"-1 -1 26 26\"\n />\n </div>\n )}\n\n {success && (\n <div\n className={classes([\n 'dropin-input__field-icon--right',\n 'dropin-input__field-icon--success',\n ])}\n >\n <Icon\n source={CheckWithCircle}\n size=\"16\"\n stroke=\"2\"\n className=\"dropin-input--success-icon\"\n viewBox=\"-1 -1 26 26\"\n />\n </div>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useRef, useState } from 'preact/hooks';\nimport { classes, isIOSMobileDevice } from '@adobe-commerce/elsie/lib';\nimport { JSX } from 'preact/compat';\nimport { Field, Icon, Input, InputProps } from '@adobe-commerce/elsie/components';\nimport { Date } from '@adobe-commerce/elsie/icons';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nimport '@adobe-commerce/elsie/components/InputDate/InputDate.css';\nimport { useCallback } from 'react';\n\nexport interface InputDateProps extends Omit<InputProps, 'error' | 'value'> {\n label?: string;\n name?: string;\n error?: string;\n value?: Date;\n}\n\nexport const InputDate: FunctionComponent<InputDateProps> = ({\n name = '',\n error,\n value,\n label,\n onChange,\n onBlur,\n ...props\n}) => {\n const [internalValue, setInternalValue] = useState(value?.toString() ?? '');\n const iosInputRef = useRef<HTMLInputElement>(null);\n const dictionary = useText({\n picker: 'Dropin.InputDate.picker',\n });\n\n const handleOnFocus: JSX.MouseEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n event.currentTarget.setAttribute('type', 'date');\n\n if (!isIOSMobileDevice()) return;\n\n iosInputRef.current.focus();\n },\n []\n );\n\n const handleOnClick: JSX.MouseEventHandler<HTMLButtonElement> = useCallback(\n (event) => {\n const input = event.currentTarget.parentElement?.querySelector('input');\n input?.focus();\n input?.showPicker();\n },\n []\n );\n\n const handleOnBlur: JSX.MouseEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n event.currentTarget.setAttribute('type', 'text');\n onBlur?.(event);\n },\n [onBlur]\n );\n\n const handleInputChange: JSX.MouseEventHandler<HTMLInputElement> =\n useCallback(\n (event) => {\n setInternalValue(event.target.value);\n onChange?.(event);\n },\n [onChange]\n );\n\n return (\n <div className={classes(['dropin-input-date'])}>\n {/* This simple input is needed only for iOS devices to trigger the date picker. */}\n {isIOSMobileDevice() ? (\n <input\n ref={iosInputRef}\n data-testid=\"inputDateIos\"\n className=\"dropin-input-date__input--ios\"\n type=\"date\"\n onChange={handleInputChange}\n />\n ) : null}\n <Field error={error}>\n <Input\n data-testid=\"input-date\"\n error={!!error}\n name={name}\n value={internalValue}\n placeholder={label}\n floatingLabel={label}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n onChange={handleInputChange}\n aria-labelledby={label}\n className=\"dropin-input-date__input\"\n {...props}\n />\n </Field>\n\n <button\n type=\"button\"\n data-testid=\"dropin-input-date__icon\"\n className=\"dropin-input-date__icon\"\n aria-label={dictionary.picker}\n onClick={handleOnClick}\n >\n <Icon source={Date} size=\"24\" />\n </button>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, JSX } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n Check,\n Close as ErrorValidation,\n Minus as PendingValidation,\n} from '@adobe-commerce/elsie/icons';\n\nimport '@adobe-commerce/elsie/components/InputPassword/PasswordStatusIndicator/PasswordStatusIndicator.css';\n\ntype statusTypes = '' | 'success' | 'error' | 'pending';\n\nexport interface ValidateLengthConfigProps {\n status?: statusTypes;\n icon?: statusTypes;\n message?: string;\n}\n\nexport interface PasswordStatusIndicatorProps {\n validateLengthConfig?: ValidateLengthConfigProps;\n uniqueSymbolsStatus?: statusTypes;\n minLength?: number;\n requiredCharacterClasses?: number;\n}\n\nconst getIcon: { [key: string]: JSX.Element } = {\n pending: <PendingValidation />,\n success: <Check />,\n error: <ErrorValidation style={{ fill: 'red' }} />,\n};\n\nexport const PasswordStatusIndicator: FunctionComponent<\n PasswordStatusIndicatorProps & HTMLAttributes<HTMLDivElement>\n> = ({\n minLength = 0,\n requiredCharacterClasses = 0,\n uniqueSymbolsStatus = 'pending',\n validateLengthConfig = { status: '', icon: '', message: '' },\n}) => {\n const translations = useText({\n chartTwoSymbols: 'Dropin.PasswordStatusIndicator.chartTwoSymbols',\n chartThreeSymbols: 'Dropin.PasswordStatusIndicator.chartThreeSymbols',\n chartFourSymbols: 'Dropin.PasswordStatusIndicator.chartFourSymbols',\n });\n\n const getMessage = (chart: number) => {\n switch (chart) {\n case 2:\n return translations.chartTwoSymbols;\n case 3:\n return translations.chartThreeSymbols;\n case 4:\n return translations.chartFourSymbols;\n default:\n return '';\n }\n };\n\n return (\n <div className={classes(['dropin-password-status-indicator'])}>\n {minLength > 0 ? (\n <div\n className={`dropin-password-status-indicator__item dropin-password-status-indicator__item--${validateLengthConfig.status}`}\n data-testid={`dropin-password-status-indicator__item--${validateLengthConfig.icon}`}\n >\n {getIcon[validateLengthConfig.icon as string]}\n <span className={`${validateLengthConfig.status}`}>\n {validateLengthConfig.message}\n </span>\n </div>\n ) : null}\n {requiredCharacterClasses >= 2 ? (\n <div\n className={`dropin-password-status-indicator__item dropin-password-status-indicator__item--${uniqueSymbolsStatus}`}\n data-testid={`dropin-password-status-indicator__item--${uniqueSymbolsStatus}`}\n >\n {getIcon[uniqueSymbolsStatus]}\n <span className={`pending`}>\n {getMessage(requiredCharacterClasses)}\n </span>\n </div>\n ) : null}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useCallback, useState } from 'preact/hooks';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Locker, EyeClose, Eye } from '@adobe-commerce/elsie/icons';\nimport { Button, Field, Input, Icon } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n PasswordStatusIndicator,\n PasswordStatusIndicatorProps,\n} from './PasswordStatusIndicator';\nimport { HTMLAttributes } from 'preact/compat';\n\nimport '@adobe-commerce/elsie/components/InputPassword/InputPassword.css';\n\nexport interface InputPasswordProps\n extends PasswordStatusIndicatorProps,\n Omit<HTMLAttributes<HTMLDivElement>, 'minLength'> {\n placeholder?: string;\n floatingLabel?: string;\n defaultValue?: string;\n className?: string;\n name?: string;\n autoComplete?: string;\n errorMessage?: string | undefined;\n required?: boolean;\n hideStatusIndicator?: boolean;\n onValue?: (value: any) => void;\n onBlur?: (event: Event) => void;\n}\n\nexport const InputPassword: FunctionComponent<InputPasswordProps> = ({\n placeholder,\n floatingLabel,\n children,\n name,\n required,\n className,\n minLength,\n autoComplete,\n defaultValue = '',\n hideStatusIndicator = false,\n uniqueSymbolsStatus,\n validateLengthConfig,\n requiredCharacterClasses,\n errorMessage,\n onValue,\n onBlur,\n ...props\n}) => {\n const translations = useText({\n placeholder: 'Dropin.InputPassword.placeholder',\n floatingLabel: 'Dropin.InputPassword.floatingLabel',\n buttonShowTitle: 'Dropin.InputPassword.buttonShowTitle',\n buttonHideTitle: 'Dropin.InputPassword.buttonHideTitle',\n });\n\n const [showPassword, setShowPassword] = useState(false);\n\n const toggleShowPassword = useCallback(() => {\n setShowPassword((prevShowPassword) => !prevShowPassword);\n }, []);\n\n const title = !showPassword\n ? translations.buttonShowTitle\n : translations.buttonHideTitle;\n\n return (\n <div\n data-testid=\"passwordFieldInput\"\n className={classes([\n 'dropin-input-password',\n ['dropin-input-password--error', errorMessage],\n className,\n ])}\n {...props}\n >\n <Field error={errorMessage}>\n <Input\n autoComplete={autoComplete}\n name={name ?? 'password'}\n type={!showPassword ? 'password' : 'text'}\n placeholder={placeholder || translations.placeholder}\n floatingLabel={floatingLabel || translations.floatingLabel}\n aria-label={translations.placeholder}\n aria-required={required || true}\n aria-invalid={!!errorMessage}\n aria-describedby=\"password-feedback\"\n required={required || false}\n value={defaultValue}\n onValue={onValue}\n icon={<Locker />}\n onBlur={onBlur}\n data-testid=\"passwordInput\"\n />\n </Field>\n <Button\n aria-label={title}\n title={title}\n type={'button'}\n data-testid=\"toggle-password-icon\"\n variant=\"tertiary\"\n className={classes([\n 'dropin-input-password__eye-icon',\n `dropin-input-password__eye-icon--${showPassword ? 'show' : 'hide'}`,\n className,\n ])}\n onClick={toggleShowPassword}\n >\n <Icon\n focusable={false}\n aria-hidden={showPassword}\n source={!showPassword ? EyeClose : Eye}\n />\n </Button>\n {hideStatusIndicator ? null : (\n <PasswordStatusIndicator\n minLength={minLength}\n requiredCharacterClasses={requiredCharacterClasses}\n validateLengthConfig={validateLengthConfig}\n uniqueSymbolsStatus={uniqueSymbolsStatus}\n />\n )}\n {children}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { HTMLAttributes } from 'preact/compat';\nimport '@adobe-commerce/elsie/components/TextArea/TextArea.css';\nimport { useRef, useEffect, useId } from 'preact/hooks';\n\nexport interface TextAreaProps extends HTMLAttributes<HTMLTextAreaElement> {\n id?: string;\n name?: string;\n disabled?: boolean;\n errorMessage?: string;\n}\n\nexport const TextArea: FunctionComponent<TextAreaProps> = ({\n disabled,\n name = '',\n errorMessage,\n value,\n label,\n className,\n onChange,\n onBlur,\n ...props\n}) => {\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n const id = useId();\n const error = !!errorMessage?.length;\n\n useEffect(() => {\n const textArea = textareaRef.current;\n if (!textArea) return;\n\n textArea.style.height = 'auto';\n textArea.style.height = `${textArea.scrollHeight}px`;\n }, [value]);\n\n return (\n <div\n className={classes(['dropin-textarea-container', className])}\n data-testid=\"dropin-textarea-container\"\n >\n <textarea\n ref={textareaRef}\n data-testid=\"dropin-textarea-field\"\n className={classes([\n 'dropin-textarea',\n [`dropin-textarea--error`, error],\n ['dropin-textarea--disabled', !!disabled],\n ])}\n id={id}\n placeholder={label}\n name={name}\n value={value}\n disabled={disabled}\n onBlur={onBlur}\n onChange={onChange}\n {...props}\n />\n <label\n htmlFor={id}\n className={classes([\n `dropin-textarea__label--floating`,\n [`dropin-textarea__label--floating--error`, error],\n ])}\n >\n {label}\n </label>\n {error ? (\n <div\n className={classes([\n `dropin-textarea__label--floating--text`,\n [`dropin-textarea__label--floating--error`, error],\n ])}\n >\n {errorMessage}\n </div>\n ) : null}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Divider/Divider.css';\n\nexport interface DividerProps extends HTMLAttributes<HTMLHRElement> {\n variant?: 'primary' | 'secondary';\n}\n\nexport const Divider: FunctionComponent<DividerProps> = ({\n variant = 'primary',\n className,\n}) => {\n return (\n <hr\n role=\"separator\"\n className={classes([\n 'dropin-divider',\n `dropin-divider--${variant}`,\n className,\n ])}\n />\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes, useMemo } from 'preact/compat';\nimport { classes, getGlobalLocale } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Price/Price.css';\n\nexport interface PriceProps\n extends Omit<HTMLAttributes<HTMLSpanElement>, 'size'> {\n amount?: number;\n currency?: string | null;\n locale?: string;\n formatOptions?: {\n [key: string]: any;\n };\n variant?: 'default' | 'strikethrough';\n weight?: 'bold' | 'normal';\n sale?: boolean;\n size?: 'small' | 'medium' | 'large';\n}\n\nexport const Price: FunctionComponent<PriceProps> = ({\n amount = 0,\n currency,\n locale,\n variant = 'default',\n weight = 'bold',\n className,\n children,\n sale = false,\n formatOptions = {},\n size = 'small',\n ...props\n}) => {\n // Determine the locale to use: prop locale > global locale > browser locale\n const effectiveLocale = useMemo(() => {\n if (locale) {\n return locale;\n }\n const globalLocale = getGlobalLocale();\n if (globalLocale) {\n return globalLocale;\n }\n // Fallback to browser locale or default\n return process.env.LOCALE && process.env.LOCALE !== 'undefined' ? process.env.LOCALE : 'en-US';\n }, [locale]);\n\n const formatter = useMemo(\n () => {\n const params: Intl.NumberFormatOptions = {\n style: 'currency',\n currency: currency || 'USD',\n // These options are needed to round to whole numbers if that's what you want.\n minimumFractionDigits: 2, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)\n maximumFractionDigits: 2, // (causes 2500.99 to be printed as $2,501)\n ...formatOptions,\n }\n try {\n return new Intl.NumberFormat(effectiveLocale, params);\n } catch (error) {\n console.error(`Error creating Intl.NumberFormat instance for locale ${effectiveLocale}. Falling back to en-US.`, error);\n return new Intl.NumberFormat('en-US', params);\n }\n },\n [effectiveLocale, currency, formatOptions]\n );\n\n const formattedAmount = useMemo(\n () => formatter.format(amount),\n [amount, formatter]\n );\n\n return (\n <span\n {...props}\n className={classes([\n 'dropin-price',\n `dropin-price--${variant}`,\n `dropin-price--${size}`,\n `dropin-price--${weight}`,\n ['dropin-price--sale', sale],\n className,\n ])}\n >\n {formattedAmount}\n </span>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/RadioButton/RadioButton.css';\n\nexport interface RadioButtonProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'size' | 'label'> {\n label: string | VNode<HTMLAttributes<HTMLElement>>;\n name: string;\n value: string;\n size?: 'medium' | 'large';\n checked?: boolean;\n disabled?: boolean;\n error?: boolean;\n description?: string;\n busy?: boolean;\n}\n\nexport const RadioButton: FunctionComponent<RadioButtonProps> = ({\n name,\n label,\n value,\n size = 'medium',\n checked = false,\n disabled = false,\n error = false,\n description = '',\n busy = false,\n className,\n children,\n ...props\n}) => {\n return (\n <label\n className={classes([\n className,\n 'dropin-radio-button',\n ['dropin-radio-button--error', error],\n ['dropin-radio-button--disabled', disabled],\n ])}\n >\n <input\n name={name}\n value={value}\n checked={checked}\n disabled={disabled}\n type=\"radio\"\n className={classes([\n 'dropin-radio-button__input',\n ['dropin-radio-button__input--error', error],\n ['dropin-radio-button__input--disabled', disabled],\n ])}\n aria-busy={busy}\n {...props}\n />\n <span\n className={classes([\n 'dropin-radio-button__label',\n `dropin-radio-button__label--${size}`,\n ['dropin-radio-button__label--error', error],\n ['dropin-radio-button__label--disabled', disabled],\n ])}\n >\n {label}\n </span>\n <span\n className={classes([\n 'dropin-radio-button__description',\n `dropin-radio-button__description--${size}`,\n ['dropin-radio-button__description--disabled', disabled],\n ])}\n >\n {description}\n </span>\n </label>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ComponentChildren, FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Button/Button.css';\n\nexport interface ButtonProps\n extends Omit<\n HTMLAttributes<HTMLButtonElement | HTMLAnchorElement>,\n 'size' | 'icon'\n > {\n variant?: 'primary' | 'secondary' | 'tertiary';\n size?: 'medium' | 'large';\n children?: ComponentChildren;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n disabled?: boolean;\n active?: boolean;\n activeChildren?: ComponentChildren;\n activeIcon?: VNode<HTMLAttributes<SVGSVGElement>>;\n}\n\nexport const Button: FunctionComponent<ButtonProps> = ({\n value,\n variant = 'primary',\n size = 'medium',\n icon,\n className,\n children,\n disabled = false,\n active = false,\n activeChildren,\n activeIcon,\n href,\n ...props\n}) => {\n let buttonType = 'dropin-button';\n\n if (\n (icon && !children) ||\n (icon && active && !activeChildren) ||\n (!icon && active && activeIcon)\n ) {\n buttonType = 'dropin-iconButton';\n }\n\n if (active && activeChildren) {\n buttonType = 'dropin-button';\n }\n\n className = classes([\n buttonType,\n `${buttonType}--${size}`,\n `${buttonType}--${variant}`,\n [`${buttonType}--${variant}--disabled`, disabled],\n children && icon && `${buttonType}--with-icon`,\n !children && activeChildren && icon && `${buttonType}--with-icon`,\n active && activeIcon && `${buttonType}--with-icon`,\n className,\n ]);\n\n const iconClassName = classes([\n 'dropin-button-icon',\n `dropin-button-icon--${variant}`,\n [`dropin-button-icon--${variant}--disabled`, disabled],\n icon?.props.className,\n ]);\n\n const attributes = href\n ? {\n node: <a />,\n role: 'link',\n href,\n ...props,\n disabled,\n active,\n onKeyDown: (event: KeyboardEvent) => {\n if (disabled) {\n event.preventDefault();\n }\n },\n tabIndex: disabled ? -1 : 0,\n }\n : {\n node: <button />,\n role: 'button',\n ...props,\n value,\n disabled,\n active,\n };\n\n return (\n <VComponent {...attributes} className={className}>\n {icon && !active && <VComponent node={icon} className={iconClassName} />}\n\n {activeIcon && active && (\n <VComponent node={activeIcon} className={iconClassName} />\n )}\n\n {children &&\n !active &&\n (typeof children === 'string' ? <span>{children}</span> : children)}\n\n {active &&\n activeChildren &&\n (typeof activeChildren === 'string' ? (\n <span>{activeChildren}</span>\n ) : (\n activeChildren\n ))}\n </VComponent>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { Icon } from '@adobe-commerce/elsie/components';\nimport { ChevronDown } from '@adobe-commerce/elsie/icons';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useEffect, useState } from 'preact/compat';\n\nimport '@adobe-commerce/elsie/components/Picker/Picker.css';\n\ntype PickerValue = string | null;\n\nexport interface PickerOption {\n value: PickerValue;\n text?: string;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n disabled?: boolean;\n}\n\nexport interface PickerProps\n extends Omit<HTMLAttributes<HTMLSelectElement>, 'value' | 'size' | 'icon'> {\n id?: string;\n name?: string;\n value?: PickerValue;\n placeholder?: string;\n variant?: 'primary' | 'secondary';\n size?: 'medium' | 'large';\n floatingLabel?: string;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n options?: PickerOption[];\n defaultOption?: PickerOption;\n disabled?: boolean;\n error?: boolean;\n handleSelect?: (event: Event) => void;\n}\n\nfunction findSelectedValue(\n value?: PickerValue,\n defaultOption?: PickerOption,\n placeholder?: string,\n floatingLabel?: string,\n firstAvailableOption?: PickerOption\n) {\n if (value) return value;\n if (defaultOption) return defaultOption.value;\n if (placeholder || floatingLabel) return '';\n if (firstAvailableOption) return firstAvailableOption.value;\n return null;\n}\n\nexport const Picker: FunctionComponent<PickerProps> = ({\n name,\n value = null,\n options,\n variant = 'primary',\n floatingLabel,\n size = 'medium',\n handleSelect = () => {},\n disabled = false,\n error = false,\n placeholder,\n defaultOption,\n icon,\n className,\n id,\n ...props\n}) => {\n const uniqueId = id ?? name ?? `dropin-picker-${Math.random().toString(36)}`;\n const isRequired = !!props?.required;\n\n // find the first option that is not disabled\n const firstAvailableOption = options?.find((option) => !option.disabled);\n\n const [selectedValue, setSelectedValue] = useState<PickerValue>(() => {\n return findSelectedValue(\n value,\n defaultOption,\n placeholder,\n floatingLabel,\n firstAvailableOption\n );\n });\n\n useEffect(() => {\n setSelectedValue(\n findSelectedValue(\n value,\n defaultOption,\n placeholder,\n floatingLabel,\n firstAvailableOption\n )\n );\n }, [value, defaultOption, placeholder, floatingLabel, firstAvailableOption]);\n\n const handleOptionClick = (event: Event) => {\n const { options, value } = event.target as HTMLSelectElement;\n\n for (const element of options) {\n if (element.selected) {\n setSelectedValue(value);\n handleSelect(event);\n }\n }\n };\n\n const optionsListItems = options?.map((option) => {\n const { value, text, disabled } = option;\n const selected = value === selectedValue;\n\n return (\n <option\n value={value as string}\n key={value}\n selected={selected}\n disabled={disabled}\n className={classes(['dropin-picker__option'])}\n >\n {text}\n </option>\n );\n });\n\n const isSelected = !!selectedValue;\n\n const hasToDisplayPlaceholder = () => {\n return (!isRequired || !isSelected) && (floatingLabel || placeholder);\n };\n\n return (\n <div\n className={classes([\n className,\n 'dropin-picker',\n `dropin-picker__${size}`,\n ['dropin-picker__floating', !!floatingLabel],\n ['dropin-picker__selected', isSelected],\n ['dropin-picker__error', error],\n ['dropin-picker__disabled', disabled],\n ['dropin-picker__icon', icon],\n ])}\n >\n {icon && (\n // @ts-ignore\n <icon.type\n {...icon.props}\n className={'dropin-picker__icon--placeholder'}\n />\n )}\n\n <select\n id={uniqueId}\n className={classes([\n 'dropin-picker__select',\n `dropin-picker__select--${variant}`,\n `dropin-picker__select--${size}`,\n ['dropin-picker__select--floating', !!floatingLabel],\n ])}\n name={name}\n aria-label={name}\n disabled={disabled}\n onChange={handleOptionClick}\n {...props}\n >\n {hasToDisplayPlaceholder() && (\n <option\n selected={!isSelected}\n value={''}\n key={value}\n className={classes([\n 'dropin-picker__option dropin-picker__placeholder',\n ])}\n >\n {floatingLabel ?? placeholder}\n </option>\n )}\n\n {optionsListItems}\n </select>\n\n <Icon\n source={ChevronDown}\n size=\"24\"\n stroke=\"2\"\n className=\"dropin-picker__chevronDown\"\n />\n\n {floatingLabel && isSelected && (\n <label\n htmlFor={id}\n className={classes(['dropin-picker__floatingLabel', !!floatingLabel])}\n >\n {floatingLabel}\n </label>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport '@adobe-commerce/elsie/components/Field/Field.css';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\n\nexport interface FieldProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n label?: string;\n error?: string;\n hint?: string;\n success?: string;\n disabled?: boolean;\n children?: VNode;\n size?: 'medium' | 'large';\n}\n\nexport const Field: FunctionComponent<FieldProps> = ({\n className,\n label,\n error,\n hint,\n success,\n size = 'medium',\n disabled = false,\n children,\n ...props\n}) => {\n const id =\n children?.props?.id ?? `dropin-field-${Math.random().toString(36)}`;\n const ChildComponent =\n children && typeof children.type !== 'string' ? children.type : null;\n\n return (\n <div {...props} className={classes(['dropin-field', className])}>\n {label && (\n <label\n className={classes([\n 'dropin-field__label',\n ['dropin-field__label--disabled', disabled],\n `dropin-field__label--${size}`,\n ])}\n htmlFor={id}\n >\n {label}\n </label>\n )}\n\n <div className={classes(['dropin-field__content'])}>\n {ChildComponent && children && (\n <ChildComponent\n {...children.props}\n id={id}\n key={children.key}\n disabled={disabled}\n size={size}\n error={!!error}\n success={!!success && !error}\n />\n )}\n </div>\n\n <div\n className={classes([\n 'dropin-field__hint',\n [`dropin-field__hint--${size}`, size],\n ['dropin-field__hint--error', !!error],\n ['dropin-field__hint--success', !!success && !error],\n ['dropin-field__hint--disabled', !!disabled],\n ])}\n >\n {error || success || hint}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ComponentChildren, FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ActionButton/ActionButton.css';\n\nexport interface ActionButtonProps\n extends Omit<HTMLAttributes<HTMLButtonElement>, 'icon'> {\n children?: ComponentChildren;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n active?: boolean;\n disabled?: boolean;\n}\n\nexport const ActionButton: FunctionComponent<ActionButtonProps> = ({\n icon,\n className,\n children,\n active = false,\n disabled = false,\n ...props\n}) => {\n return (\n <button\n role=\"button\"\n disabled={disabled}\n {...props}\n className={classes([\n 'dropin-action-button',\n ['dropin-action-button--active', active],\n ['dropin-action-button--disabled', disabled],\n className,\n ])}\n >\n {icon && (\n <VComponent\n node={icon}\n className={classes(['dropin-action-button-icon'])}\n />\n )}\n {children &&\n (typeof children === 'string' ? <span>{children}</span> : children)}\n </button>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode, cloneElement } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ActionButtonGroup/ActionButtonGroup.css';\nimport { useCallback, useState } from 'preact/hooks';\nimport { Children } from 'react';\nimport { ActionButtonProps } from '@adobe-commerce/elsie/components/ActionButton';\n\nexport interface ActionButtonGroupOption {\n value: string | null;\n text: string;\n icon?: VNode<SVGElement>;\n disabled?: boolean;\n}\n\nexport interface ActionButtonGroupProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'primary' | 'secondary';\n activeOption?: string;\n disabled?: boolean;\n dividers?: boolean;\n children: VNode<ActionButtonProps>[] | VNode<ActionButtonProps>;\n handleSelect?(value: string): void;\n}\n\nexport const ActionButtonGroup: FunctionComponent<ActionButtonGroupProps> = ({\n className,\n variant = 'primary',\n activeOption,\n disabled = false,\n dividers = true,\n children,\n handleSelect,\n ...props\n}) => {\n const [activeOptionState, setActiveOptionState] = useState(activeOption);\n\n const handleClick = useCallback(\n (option: any) => {\n const isOptionDisabled = disabled || option.props.disabled;\n if (!isOptionDisabled) {\n setActiveOptionState(option.props.value);\n if (handleSelect) {\n handleSelect(option.props.value);\n }\n }\n },\n [handleSelect, setActiveOptionState, disabled]\n );\n\n const buttonGroupOptions = Children.map(\n children,\n (child: VNode<ActionButtonProps>) => {\n const isOptionDisabled = disabled || child.props.disabled;\n const isOptionActive = child.props.value === activeOptionState;\n return cloneElement(child, {\n disabled: isOptionDisabled,\n active: isOptionActive,\n onClick: () => handleClick(child),\n className: classes([\n 'dropin-action-button-group__option',\n `dropin-action-button-group__option--${variant}`,\n ['dropin-action-button-group__option--active', isOptionActive],\n ['dropin-action-button-group__option--with-dividers', dividers],\n ]),\n });\n }\n );\n\n return (\n <div\n role=\"group\"\n {...props}\n className={classes([\n 'dropin-action-button-group',\n `dropin-action-button-group--${variant}`,\n className,\n ])}\n >\n {buttonGroupOptions}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ComponentChildren, FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Card/Card.css';\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'primary' | 'secondary';\n children: ComponentChildren | ComponentChildren[];\n}\n\nexport const Card: FunctionComponent<CardProps> = ({\n variant = 'primary',\n className,\n children,\n ...props\n}) => {\n return (\n <div\n {...props}\n className={classes(['dropin-card', `dropin-card--${variant}`, className])}\n >\n <div class=\"dropin-card__content\">{children}</div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { ChangeEvent, HTMLAttributes, useRef, useState } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Check } from '@adobe-commerce/elsie/icons';\nimport { Icon } from '@adobe-commerce/elsie/components/Icon';\nimport '@adobe-commerce/elsie/components/Checkbox/Checkbox.css';\nimport { useEffect } from 'preact/hooks';\n\nexport interface CheckboxProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'size' | 'label'> {\n name: string;\n size?: 'medium' | 'large';\n disabled?: boolean;\n error?: boolean;\n label?: string | VNode | VNode[];\n description?: string | VNode | VNode[];\n}\n\nexport const Checkbox: FunctionComponent<CheckboxProps> = ({\n name,\n value,\n size = 'medium',\n disabled = false,\n error = false,\n label = '',\n description = '',\n className,\n checked,\n ...props\n}) => {\n const [isChecked, setIsChecked] = useState(\n checked === undefined ? false : checked\n );\n const ref = useRef<HTMLInputElement>(null);\n\n const handleCheckboxChange = (e: ChangeEvent<HTMLInputElement>) => {\n props.onChange?.(e);\n setIsChecked(e.currentTarget.checked);\n };\n\n const handleOnKeyDown = (e: KeyboardEvent) => {\n if (e.key === ' ') {\n e.preventDefault();\n ref?.current?.click();\n }\n };\n\n useEffect(() => {\n if (typeof checked === 'boolean') {\n setIsChecked(checked);\n }\n }, [checked]);\n\n return (\n <label\n className={classes([\n 'dropin-checkbox',\n ['dropin-checkbox--disabled', disabled],\n ])}\n >\n <input\n ref={ref}\n name={name}\n value={value}\n type=\"checkbox\"\n disabled={disabled}\n className={classes([\n 'dropin-checkbox__checkbox',\n ['dropin-checkbox__checkbox--error', error],\n className,\n ])}\n {...props}\n onChange={handleCheckboxChange}\n checked={isChecked}\n />\n\n <div className=\"dropin-checkbox__checkbox-icon\">\n {/*Zero-width space character, used to align checkbox properly*/}\n {'\\u200B'}\n <span\n aria-checked={isChecked ? 'true' : 'false'}\n aria-labelledby={`${name}-label`}\n aria-describedby={description ? `${name}-description` : undefined}\n className={classes([\n 'dropin-checkbox__box',\n ['dropin-checkbox__box--error', error],\n ['dropin-checkbox__box--disabled', disabled],\n ])}\n role=\"checkbox\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={handleOnKeyDown}\n >\n <Icon\n className={classes(['dropin-checkbox__checkmark'])}\n source={Check}\n size=\"16\"\n stroke=\"3\"\n />\n </span>\n </div>\n\n <div\n id={`${name}-label`}\n className={classes([\n 'dropin-checkbox__label',\n `dropin-checkbox__label--${size}`,\n ['dropin-checkbox__label--disabled', disabled],\n ])}\n >\n {label}\n </div>\n\n <div />\n {description && (\n <div\n id={`${name}-description`}\n role={'note'}\n className={classes([\n 'dropin-checkbox__description',\n `dropin-checkbox__description--${size}`,\n ['dropin-checkbox__description--disabled', disabled],\n ])}\n >\n {description}\n </div>\n )}\n </label>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes, useCallback } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ColorSwatch/ColorSwatch.css';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface ColorSwatchProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'label' | 'size'> {\n name?: string;\n label?: string;\n groupAriaLabel?: string;\n id?: string;\n size?: 'medium' | 'large';\n color?: string;\n value?: string;\n disabled?: boolean;\n selected?: boolean;\n outOfStock?: boolean;\n multi?: boolean;\n onValue?: (value: any) => void;\n onUpdateError?: (error: Error) => void;\n}\n\nexport const ColorSwatch: FunctionComponent<ColorSwatchProps> = ({\n className,\n name,\n value,\n id,\n label,\n groupAriaLabel,\n size = 'medium',\n color,\n disabled = false,\n selected = false,\n outOfStock = false,\n multi = false,\n onValue,\n onUpdateError,\n ...props\n}) => {\n // i18n\n const outOfStockLabel = useText('Dropin.Swatches.outOfStock.label').label;\n const selectedLabel = useText('Dropin.Swatches.selected.label').label;\n const swatchLabel = useText('Dropin.Swatches.swatch.label').label;\n\n const onValueHandler = useCallback(\n async (newValue: any) => {\n if (onValue) {\n try {\n await onValue(newValue);\n } catch (e) {\n if (onUpdateError) {\n onUpdateError(e as Error);\n }\n }\n }\n },\n [onValue, onUpdateError]\n );\n\n const handleOnValue = (e: Event) => {\n const input = e.target as HTMLInputElement;\n\n onValueHandler(input.value);\n };\n\n const isValidColor = (color: string) => {\n const colorStyle = new Option().style;\n colorStyle.color = color;\n return colorStyle.color !== ''; // Returns true if the browser accepts this as a valid color\n };\n\n const defaultColor = 'var(--color-gray-300);';\n\n const validColor = color && isValidColor(color) ? color : defaultColor;\n\n const handleAriaLabel = () => {\n if (outOfStock) return `${groupAriaLabel}: ${label} ${outOfStockLabel}`;\n if (selected) return `${groupAriaLabel}: ${label} ${selectedLabel}`;\n return `${groupAriaLabel}: ${label} ${swatchLabel}`;\n };\n\n return (\n <label\n className={classes([\n 'dropin-color-swatch__container',\n `dropin-color-swatch__container--${size}`,\n className,\n ])}\n >\n <input\n type={multi ? 'checkbox' : 'radio'}\n name={name}\n id={id}\n value={value}\n aria-label={handleAriaLabel()}\n checked={selected}\n disabled={disabled}\n onChange={handleOnValue}\n {...props}\n className={classes([\n 'dropin-color-swatch',\n ['dropin-color-swatch--selected', selected],\n ['dropin-color-swatch--disabled', disabled],\n className,\n ])}\n />\n <span\n style={{ '--bg-color': validColor }}\n className={classes([\n 'dropin-color-swatch__span',\n ['dropin-color-swatch__span--out-of-stock', outOfStock],\n className,\n ])}\n />\n </label>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport {\n HTMLAttributes,\n useState,\n useEffect,\n useRef,\n useCallback,\n useMemo,\n} from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/TextSwatch/TextSwatch.css';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface TextSwatchProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'label'> {\n name?: string;\n label: string;\n groupAriaLabel?: string;\n value?: string;\n id: string;\n disabled?: boolean;\n selected?: boolean;\n outOfStock?: boolean;\n multi?: boolean;\n onValue?: (value: any) => void;\n onUpdateError?: (error: Error) => void;\n}\n\nexport const TextSwatch: FunctionComponent<TextSwatchProps> = ({\n className,\n name,\n value,\n label,\n groupAriaLabel,\n id,\n disabled = false,\n selected = false,\n outOfStock = false,\n multi = false,\n onValue,\n onUpdateError,\n ...props\n}) => {\n // i18n\n const outOfStockLabel = useText('Dropin.Swatches.outOfStock.label').label;\n const selectedLabel = useText('Dropin.Swatches.selected.label').label;\n const swatchLabel = useText('Dropin.Swatches.swatch.label').label;\n\n const [isOverflowing, setIsOverflowing] = useState(false);\n const spanRef = useRef<HTMLLabelElement>(null);\n\n const onValueHandler = useCallback(\n async (newValue: any) => {\n if (onValue) {\n try {\n await onValue(newValue);\n } catch (e) {\n if (onUpdateError) {\n onUpdateError(e as Error);\n }\n }\n }\n },\n [onValue, onUpdateError]\n );\n\n const handleOnValue = (e: Event) => {\n const input = e.target as HTMLInputElement;\n\n onValueHandler(input.value);\n };\n\n const handleAriaLabel = () => {\n if (outOfStock) return `${groupAriaLabel}: ${label} ${outOfStockLabel}`;\n if (selected) return `${groupAriaLabel}: ${label} ${selectedLabel}`;\n return `${groupAriaLabel}: ${label} ${swatchLabel}`;\n };\n\n useEffect(() => {\n if (\n spanRef.current &&\n spanRef.current.scrollWidth > spanRef.current.clientWidth\n ) {\n setIsOverflowing(true);\n }\n }, [label]);\n\n const uniqueId = useMemo(() => id ?? `${name}_${id}_${Math.random().toString(36)}`, [name, id]);\n\n return (\n <div\n className=\"dropin-text-swatch__container\"\n {...(isOverflowing ? { 'data-tooltip': label } : {})}\n >\n <input\n type={multi ? 'checkbox' : 'radio'}\n name={name}\n id={uniqueId}\n value={value}\n aria-label={handleAriaLabel()}\n checked={selected}\n disabled={disabled}\n onChange={handleOnValue}\n {...props}\n className={classes([\n 'dropin-text-swatch',\n ['dropin-text-swatch--selected', selected],\n ['dropin-text-swatch--disabled', disabled],\n className,\n ])}\n />\n <label\n htmlFor={uniqueId}\n ref={spanRef}\n className={classes([\n 'dropin-text-swatch__label',\n ['dropin-text-swatch__label--out-of-stock', outOfStock],\n className,\n ])}\n >\n {label}\n </label>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { classes } from '@adobe-commerce/elsie/lib';\n\nimport '@adobe-commerce/elsie/components/ProgressSpinner/ProgressSpinner.css';\n\n/**\n * @param size this is the size of the spinner ranging in [12px, 24px, 36px, 48px]\n * @param stroke this is the stroke of the spinner ranging in [1px, 2px, 3px, 4px]\n */\nexport interface ProgressSpinnerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n ariaLabel?: string;\n size?: 'small' | 'medium' | 'big' | 'large';\n stroke?: '1' | '2' | '3' | '4';\n}\n\nexport const ProgressSpinner: FunctionComponent<ProgressSpinnerProps> = ({\n ariaLabel,\n size = 'small',\n stroke = '4',\n children,\n className,\n style,\n ...props\n}) => {\n const commonClasses = [\n 'dropin-progress-spinner',\n `dropin-progress-spinner--shape-size-${size}`,\n `dropin-progress-spinner--shape-stroke-${stroke}`,\n ];\n\n const translations = useText({\n updating: 'Dropin.ProgressSpinner.updating.label',\n updatingChildren: 'Dropin.ProgressSpinner.updatingChildren.label',\n });\n\n const handleAriaLabel = () => {\n if (ariaLabel) return ariaLabel;\n return children ? translations.updatingChildren : translations.updating;\n };\n\n return children ? (\n // if we provide children to this component, it should act as a provider in order to add background with low opacity\n <div\n {...props}\n className={classes(['dropin-progress-spinner-provider'])}\n aria-live=\"polite\"\n role=\"status\"\n >\n <div aria-hidden={true}>{children}</div>\n <div\n aria-label={handleAriaLabel()}\n role=\"status\"\n className={classes(['dropin-progress-spinner-background', className])}\n style={style}\n />\n <div\n className={classes([\n 'dropin-progress-spinner-with-provider',\n ...commonClasses,\n ])}\n aria-hidden={true}\n />\n </div>\n ) : (\n // if there are no children, it should be able to be standalone and have no background\n <div\n {...props}\n className={classes([className, ...commonClasses])}\n aria-live=\"polite\"\n role=\"status\"\n aria-label={handleAriaLabel()}\n />\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useCallback, JSX, useMemo } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ImageSwatch/ImageSwatch.css';\nimport { Image, ImageProps } from '@adobe-commerce/elsie/components/Image';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface ImageNodeRenderProps extends ImageProps {\n imageSwatchContext: {\n disabled?: boolean;\n outOfStock?: boolean;\n multi?: boolean;\n selected?: boolean;\n value?: string;\n label?: string;\n groupAriaLabel?: string;\n name?: string;\n id?: string;\n };\n}\n\nexport interface ImageSwatchProps\n extends Omit<HTMLAttributes<HTMLInputElement>, 'label'> {\n name?: string;\n label?: string;\n groupAriaLabel?: string;\n id?: string;\n src: string;\n alt?: string;\n value?: string;\n disabled?: boolean;\n selected?: boolean;\n outOfStock?: boolean;\n multi?: boolean;\n imageNode?: VNode | ((props: ImageNodeRenderProps) => JSX.Element);\n onValue?: (value: any) => void;\n onUpdateError?: (error: Error) => void;\n}\n\nexport const ImageSwatch: FunctionComponent<ImageSwatchProps> = ({\n className,\n name,\n value,\n id,\n label,\n groupAriaLabel,\n src,\n alt,\n disabled = false,\n selected = false,\n outOfStock = false,\n multi = false,\n imageNode,\n onValue,\n onUpdateError,\n ...props\n}) => {\n const outOfStockLabel = useText('Dropin.Swatches.outOfStock.label').label;\n const selectedLabel = useText('Dropin.Swatches.selected.label').label;\n const swatchLabel = useText('Dropin.Swatches.swatch.label').label;\n\n const onValueHandler = useCallback(\n async (newValue: any) => {\n if (onValue) {\n try {\n await onValue(newValue);\n } catch (e) {\n if (onUpdateError) {\n onUpdateError(e as Error);\n }\n }\n }\n },\n [onValue, onUpdateError]\n );\n\n const handleOnValue = (e: Event) => {\n const input = e.target as HTMLInputElement;\n\n onValueHandler(input.value);\n };\n\n const handleAriaLabel = () => {\n if (outOfStock) return `${groupAriaLabel}: ${label} ${outOfStockLabel}`;\n if (selected) return `${groupAriaLabel}: ${label} ${selectedLabel}`;\n return `${groupAriaLabel}: ${label} ${swatchLabel}`;\n };\n\n const imageProps: ImageProps = useMemo(() => {\n return {\n src,\n alt,\n loading: 'lazy',\n params: { width: 100, fit: 'bounds', crop: true },\n onError: (e: any) => (e.target.style.display = 'none'),\n };\n }, [src, alt]);\n\n return (\n <label className={classes(['dropin-image-swatch__container', className])}>\n <input\n type={multi ? 'checkbox' : 'radio'}\n name={name}\n id={id}\n value={value}\n aria-label={handleAriaLabel()}\n checked={selected}\n disabled={disabled}\n onChange={handleOnValue}\n {...props}\n className={classes([\n 'dropin-image-swatch',\n ['dropin-image-swatch--selected', selected],\n ['dropin-image-swatch--disabled', disabled],\n className,\n ])}\n />\n\n <span\n className={classes([\n 'dropin-image-swatch__span',\n ['dropin-image-swatch__span--out-of-stock', outOfStock],\n className,\n ])}\n >\n {typeof imageNode === 'function' ? (\n imageNode({\n ...imageProps,\n imageSwatchContext: {\n disabled,\n outOfStock,\n selected,\n value,\n label,\n groupAriaLabel,\n name,\n id,\n },\n })\n ) : imageNode || (\n <Image\n {...imageProps}\n className={classes(['dropin-image-swatch__content'])}\n />\n )}\n </span>\n </label>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useState, useEffect } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Divider, Icon, IconNode } from '@adobe-commerce/elsie/components';\nimport { Add, Minus } from '@adobe-commerce/elsie/icons';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport '@adobe-commerce/elsie/components/Accordion/Accordion.css';\nexport interface AccordionSectionProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'icon'> {\n defaultOpen?: boolean;\n actionIconPosition?: 'left' | 'right';\n ariaLabelTitle: string;\n iconOpen?: IconNode;\n iconClose?: IconNode;\n iconLeft?: IconNode;\n showIconLeft?: boolean;\n secondaryText?: string | VNode<HTMLAttributes<HTMLSpanElement>>;\n renderContentWhenClosed?: boolean;\n onStateChange?: (open: boolean) => void;\n}\n\nexport const AccordionSection: FunctionComponent<AccordionSectionProps> = ({\n className,\n children,\n title,\n ariaLabelTitle,\n secondaryText,\n actionIconPosition = 'left',\n iconOpen = Add,\n iconClose = Minus,\n iconLeft = Add,\n showIconLeft = false,\n renderContentWhenClosed = true,\n defaultOpen,\n onStateChange,\n ...props\n}) => {\n const [open, setOpen] = useState<boolean>(false);\n const onClickHandler = (e: { stopImmediatePropagation: () => void }) => {\n e.stopImmediatePropagation();\n\n const next = !open;\n setOpen(next);\n onStateChange?.(next);\n };\n\n useEffect(() => {\n if (typeof defaultOpen !== 'undefined') {\n setOpen(defaultOpen);\n }\n }, [defaultOpen]);\n\n const buttonLabel = useText(\n `Dropin.Accordion.${open ? 'close' : 'open'}.label`\n ).label;\n\n const openIcon = (\n <Icon\n source={iconOpen}\n size=\"24\"\n onClick={onClickHandler}\n onKeyPress={onClickHandler}\n className={'dropin-accordion-section__open-icon'}\n />\n );\n\n const closeIcon = (\n <Icon\n source={iconClose}\n size=\"24\"\n onClick={onClickHandler}\n onKeyPress={onClickHandler}\n className={'dropin-accordion-section__close-icon'}\n />\n );\n\n const leftIcon = <Icon source={iconLeft} size=\"24\" />;\n\n return (\n <div\n {...props}\n className={classes(['dropin-accordion-section', className])}\n >\n <div className={'dropin-accordion-section__heading'}>\n <div\n className={'dropin-accordion-section__flex'}\n onClick={onClickHandler}\n onKeyPress={onClickHandler}\n role=\"button\"\n aria-label={`${buttonLabel} ${ariaLabelTitle ?? title}`}\n tabIndex={0}\n >\n <div className={'dropin-accordion-section__title-container'}>\n {actionIconPosition === 'left' && (open ? closeIcon : openIcon)}\n\n {showIconLeft && leftIcon}\n\n <h3 className={'dropin-accordion-section__title'}>{title}</h3>\n </div>\n </div>\n\n <div className={'dropin-accordion-section__secondary-text-container'}>\n {secondaryText && (\n <h4 className={'dropin-accordion-section__secondary-text'}>\n {secondaryText}\n </h4>\n )}\n\n {actionIconPosition === 'right' && (open ? closeIcon : openIcon)}\n </div>\n </div>\n\n <div\n className={'dropin-accordion-section__content-container'}\n style={{ display: open ? 'grid' : 'none' }}\n >\n {(open || (renderContentWhenClosed && !open)) && children}\n </div>\n </div>\n );\n};\n\nexport interface AccordionProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'icon'> {\n actionIconPosition?: 'left' | 'right';\n iconOpen?: IconNode;\n iconClose?: IconNode;\n iconLeft?: IconNode;\n showIconLeft?: boolean;\n secondaryText?: string | VNode<HTMLAttributes<HTMLSpanElement>>;\n children: VNode<AccordionSectionProps>[] | VNode<AccordionSectionProps>;\n}\n\nexport const Accordion: FunctionComponent<AccordionProps> = ({\n className,\n children,\n actionIconPosition = 'left',\n iconOpen = Add,\n iconClose = Minus,\n ...props\n}) => {\n const divider = <Divider variant=\"secondary\" />;\n\n const renderAccordionSection = (child: VNode<AccordionSectionProps>) => (\n <>\n <AccordionSection\n {...child.props}\n actionIconPosition={actionIconPosition}\n iconOpen={iconOpen}\n iconClose={iconClose}\n />\n {divider}\n </>\n );\n\n return (\n <div {...props} className={classes(['dropin-accordion', className])}>\n {[\n divider,\n ...(\n (Array.isArray(children)\n ? children\n : [children]) as VNode<AccordionSectionProps>[]\n ).map(renderAccordionSection),\n ]}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { Button, Icon } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Close } from '@adobe-commerce/elsie/icons';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\n\nimport '@adobe-commerce/elsie/components/InLineAlert/InLineAlert.css';\nexport interface InLineAlertProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'icon'> {\n variant?: 'primary' | 'secondary';\n heading: string;\n description?: string;\n type?: 'error' | 'warning' | 'success';\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n additionalActions?: Array<{\n label: string;\n onClick: (event: Event) => void;\n }>;\n onDismiss?: (event: Event) => void;\n itemList?: VNode;\n actionButtonPosition?: 'top' | 'bottom';\n}\n\nexport const InLineAlert: FunctionComponent<InLineAlertProps> = ({\n variant = 'primary',\n className,\n type = 'warning',\n additionalActions,\n onDismiss,\n heading,\n description,\n icon,\n itemList,\n actionButtonPosition,\n ...props\n}) => {\n const translations = useText({\n dismiss: 'Dropin.InlineAlert.dismissLabel',\n });\n\n return (\n <div\n {...props}\n className={classes([\n 'dropin-in-line-alert',\n `dropin-in-line-alert--${type}`,\n `dropin-in-line-alert--${variant}`,\n className,\n ])}\n >\n <div className={'dropin-in-line-alert__heading'}>\n <div className={'dropin-in-line-alert__title-container'}>\n {icon && (\n <VComponent node={icon} className={'dropin-in-line-alert__icon'} />\n )}\n\n <span className={'dropin-in-line-alert__title'}>{heading}</span>\n </div>\n\n <div className={'dropin-in-line-alert__actions-container'}>\n {additionalActions &&\n (actionButtonPosition === 'top' ||\n (!actionButtonPosition && additionalActions.length <= 1)) && (\n <Button\n variant=\"tertiary\"\n className={'dropin-in-line-alert__additional-action'}\n onClick={\n additionalActions.length > 0\n ? additionalActions[0]?.onClick\n : undefined\n }\n aria-label={additionalActions[0]?.label}\n >\n {additionalActions[0]?.label}\n </Button>\n )}\n {onDismiss && (\n <Button\n icon={<Icon source={Close} size=\"24\" stroke=\"2\" />}\n className={'dropin-in-line-alert__dismiss-button'}\n variant=\"tertiary\"\n onClick={onDismiss}\n aria-label={translations.dismiss}\n />\n )}\n </div>\n </div>\n\n {description && (\n <p className={'dropin-in-line-alert__description'}>{description}</p>\n )}\n <div className={'dropin-in-line-alert__item-list-container'}>\n {itemList && (\n <VComponent\n node={itemList}\n className={classes(['dropin-in-line-alert__item-list'])}\n />\n )}\n </div>\n {additionalActions &&\n (actionButtonPosition === 'bottom' ||\n (!actionButtonPosition && additionalActions.length > 1)) && (\n <div className={'dropin-in-line-alert__additional-actions-container'}>\n {additionalActions.map((action) => (\n <Button\n key={action.label}\n variant=\"tertiary\"\n className={'dropin-in-line-alert__additional-action'}\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ComponentChildren } from 'preact';\nimport { FunctionComponent, useLayoutEffect, useRef } from 'preact/compat';\n\ninterface PortalProps {\n children: ComponentChildren;\n}\n\nexport const Portal: FunctionComponent<PortalProps> = ({ children }) => {\n const portalRoot = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n // Create portal root if it doesn't exist\n if (!portalRoot.current) {\n portalRoot.current = document.createElement('div');\n portalRoot.current.setAttribute('data-portal-root', '');\n document.body.appendChild(portalRoot.current);\n }\n\n // Move content to portal root\n if (contentRef.current && portalRoot.current) {\n portalRoot.current.appendChild(contentRef.current);\n }\n\n // Cleanup\n return () => {\n if (portalRoot.current) {\n portalRoot.current.remove();\n portalRoot.current = null;\n }\n };\n }, []);\n\n // Return a div that contains the children\n return (\n <div ref={contentRef} className=\"dropin-design\">\n {children}\n </div>\n );\n}; ","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport {\n FunctionComponent,\n HTMLAttributes,\n useCallback,\n useEffect,\n} from 'preact/compat';\nimport { Button } from '../Button';\nimport { Close as CloseSVG } from '@adobe-commerce/elsie/icons';\nimport { VNode } from 'preact';\nimport { Portal } from '../Portal/Portal';\n\nimport '@adobe-commerce/elsie/components/Modal/Modal.css';\n\nexport interface ModalProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size' | 'title'> {\n size?: 'small' | 'medium' | 'full';\n title?: VNode;\n centered?: boolean;\n onClose?: () => void;\n backgroundDim?: boolean;\n clickToDismiss?: boolean;\n escapeToDismiss?: boolean;\n showCloseButton?: boolean;\n}\n\nexport const Modal: FunctionComponent<ModalProps> = ({\n size = 'small',\n title = null,\n centered = false,\n backgroundDim = true,\n clickToDismiss = true,\n escapeToDismiss = true,\n onClose,\n showCloseButton = true,\n className,\n children = null,\n ...props\n}) => {\n const handleOnClose = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n const translations = useText({\n modalCloseLabel: 'Dropin.Modal.Close.label',\n });\n\n // Close on background click\n useEffect(() => {\n const handleOutsideClick = (event: MouseEvent) => {\n const modal = document.querySelector('.dropin-modal');\n const modalBody = document.querySelector('.dropin-modal__body');\n\n if (\n clickToDismiss &&\n modal &&\n modalBody &&\n !modalBody.contains(event.target as Node)\n ) {\n handleOnClose();\n }\n };\n\n document.addEventListener('mousedown', handleOutsideClick);\n\n return () => {\n document.removeEventListener('mousedown', handleOutsideClick);\n };\n }, [handleOnClose, clickToDismiss]);\n\n // Close on ESC\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && escapeToDismiss) {\n handleOnClose();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleOnClose, escapeToDismiss]);\n\n // Prevent document scrolling\n useEffect(() => {\n const scrollingElement = document.scrollingElement as HTMLElement;\n\n const defaultOverflowValue = scrollingElement.style.overflow;\n\n scrollingElement.style.overflow = 'hidden';\n\n return () => {\n scrollingElement.style.overflow = defaultOverflowValue;\n };\n }, []);\n\n return (\n <Portal>\n <div\n className={classes([\n 'dropin-modal',\n ['dropin-modal--dim', backgroundDim],\n ])}\n >\n <div\n {...props}\n className={classes([\n 'dropin-modal__body',\n [`dropin-modal__body--${size}`, size],\n className,\n ])}\n >\n <div\n className={classes([\n 'dropin-modal__header',\n ['dropin-modal__header-title', !!title],\n ])}\n >\n {title && (\n <div className={classes(['dropin-modal__header-title-content'])}>\n {title}\n </div>\n )}\n\n {showCloseButton && (\n <Button\n aria-label={translations.modalCloseLabel}\n variant=\"tertiary\"\n className=\"dropin-modal__header-close-button\"\n onClick={handleOnClose}\n icon={<CloseSVG />}\n />\n )}\n </div>\n\n <div\n className={classes([\n 'dropin-modal__content',\n ['dropin-modal__body--centered', centered],\n ])}\n >\n {children}\n </div>\n </div>\n </div>\n </Portal>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useContext } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport {\n Button,\n CartItemSkeleton,\n Icon,\n Incrementer,\n UIContext,\n ProgressSpinner,\n Picker,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Trash } from '@adobe-commerce/elsie/icons';\n\nimport '@adobe-commerce/elsie/components/CartItem/CartItem.css';\n\nexport interface CartItemProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'loading'> {\n ariaLabel?: string;\n image?: VNode;\n title?: VNode;\n price?: VNode;\n taxIncluded?: boolean;\n taxExcluded?: boolean;\n total?: VNode;\n totalExcludingTax?: VNode;\n sku?: VNode;\n quantity?: number;\n quantityContent?: VNode;\n description?: VNode;\n attributes?: VNode;\n footer?: VNode;\n configurations?: { [key: string]: any };\n warning?: VNode;\n alert?: VNode;\n discount?: VNode;\n savings?: VNode;\n actions?: VNode;\n removeContent?: VNode;\n loading?: boolean;\n updating?: boolean;\n onRemove?: () => void;\n onQuantity?: (value: number) => void;\n quantityType?: 'stepper' | 'dropdown';\n dropdownOptions?: { value: string; text: string }[];\n}\n\nexport const CartItem: FunctionComponent<CartItemProps> = ({\n className,\n children,\n ariaLabel,\n image,\n title,\n price,\n taxIncluded = false,\n taxExcluded = false,\n total,\n totalExcludingTax,\n sku,\n configurations,\n warning,\n alert,\n discount,\n savings,\n actions,\n removeContent,\n quantity,\n quantityContent,\n description,\n attributes,\n footer,\n loading = false,\n updating = false,\n quantityType,\n dropdownOptions,\n onQuantity,\n onRemove,\n ...props\n}) => {\n const { locale } = useContext(UIContext);\n\n const labels = useText({\n each: 'Dropin.CartItem.each.label',\n pricePerItem: 'Dropin.CartItem.pricePerItem.label',\n quantity: 'Dropin.CartItem.quantity.label',\n remove: 'Dropin.CartItem.remove.label',\n removeDefault: 'Dropin.CartItem.removeDefault.label',\n taxIncluded: 'Dropin.CartItem.taxIncluded.label',\n taxExcluded: 'Dropin.CartItem.taxExcluded.label',\n updating: 'Dropin.CartItem.updating.label',\n updatingDefault: 'Dropin.ProgressSpinner.updating.label',\n });\n\n if (loading) return <CartItemSkeleton />;\n\n const quantityComponent =\n quantityType === 'dropdown' ? (\n <Picker\n className={classes(['dropin-cart-item__quantity__picker'])}\n value={String(quantity)}\n name=\"quantity\"\n aria-label={labels.quantity}\n disabled={updating}\n variant={'primary'}\n options={dropdownOptions}\n handleSelect={(event) =>\n onQuantity?.(Number((event.target as HTMLSelectElement).value))\n }\n />\n ) : (\n <Incrementer\n className={classes(['dropin-cart-item__quantity__incrementer'])}\n value={quantity}\n min={1}\n onValue={(value) => onQuantity?.(Number(value))}\n name=\"quantity\"\n aria-label={labels.quantity}\n disabled={updating}\n />\n );\n\n return (\n <div\n {...props}\n className={classes([\n 'dropin-cart-item',\n ['dropin-cart-item--updating', updating],\n className,\n ])}\n >\n {updating && (\n <ProgressSpinner\n className={classes(['dropin-cart-item__spinner'])}\n ariaLabel={\n ariaLabel\n ? labels.updating?.replace('{product}', ariaLabel)\n : labels.updatingDefault\n }\n />\n )}\n <div className=\"dropin-cart-item__wrapper\">\n {\n /* Image */\n image && (\n <VComponent\n node={image}\n className={classes(['dropin-cart-item__image'])}\n />\n )\n }\n\n {\n /* Title */\n title && (\n <VComponent\n node={title}\n className={classes([\n 'dropin-cart-item__title',\n ['dropin-cart-item__title--edit', !!onQuantity || !!onRemove],\n ])}\n />\n )\n }\n\n {\n /* Description */\n description && (\n <VComponent\n node={description}\n className={classes(['dropin-cart-item__description'])}\n />\n )\n }\n\n {\n /* SKU */\n sku && (\n <VComponent\n node={sku}\n className={classes(['dropin-cart-item__sku'])}\n />\n )\n }\n <div className={classes(['dropin-cart-item__savings__wrapper'])}>\n {/* Discount amount */}\n {discount && (\n <VComponent\n node={discount}\n className={classes([\n 'dropin-cart-item__discount',\n 'dropin-cart-item__discount__large-screen',\n ])}\n />\n )}\n\n {/* Savings amount */}\n {savings && (\n <VComponent\n node={savings}\n className={classes([\n 'dropin-cart-item__savings',\n 'dropin-cart-item__savings__large-screen',\n ])}\n />\n )}\n </div>\n\n {/* Product Attributes */}\n {attributes && (\n <div className={classes(['dropin-cart-item__attributes'])}>\n <VComponent node={attributes} />\n </div>\n )}\n\n {\n /* Configurations */\n configurations && (\n <ul className={classes(['dropin-cart-item__configurations'])}>\n {Object.entries(configurations).map(([key, value]) => (\n <li\n key={key}\n className={classes([\n 'dropin-cart-item__configurations__item',\n ])}\n >\n {key}:{' '}\n <strong\n className={classes([\n 'dropin-cart-item__configurations__item__value',\n ])}\n >\n {value}\n </strong>\n </li>\n ))}\n </ul>\n )\n }\n\n {\n /* Price */\n price && (\n <span\n className={classes(['dropin-cart-item__price'])}\n aria-label={labels.pricePerItem}\n >\n {quantity && !onQuantity && (\n <>\n <span\n className=\"dropin-cart-item__price__quantity\"\n aria-hidden={true}\n >\n {quantity.toLocaleString(locale)} x{' '}\n </span>\n\n <div className=\"dropin-cart-item__sr-only\">\n {labels.quantity}: {quantity?.toLocaleString(locale)};\n </div>\n </>\n )}\n\n <VComponent node={price} role=\"text\" />\n\n {quantity && quantity > 1 && (\n <>\n \n {labels.each}\n </>\n )}\n\n {taxIncluded && (\n <span\n data-testid=\"tax-message\"\n className=\"dropin-cart-item__price-tax-message\"\n >\n \n {labels.taxIncluded}\n </span>\n )}\n\n {taxExcluded && (\n <span\n data-testid=\"tax-message\"\n className=\"dropin-cart-item__price-tax-message\"\n >\n \n {labels.taxExcluded}\n </span>\n )}\n </span>\n )\n }\n\n {/* Quantity */}\n <div\n className={classes([\n 'dropin-cart-item__quantity',\n ['dropin-cart-item__quantity--edit', !!onQuantity],\n ])}\n >\n {quantityContent ? (\n <VComponent node={quantityContent} />\n ) : onQuantity ? (\n quantityComponent\n ) : (\n quantity && (\n <span className={classes(['dropin-cart-item__quantity__value'])}>\n {labels.quantity}:{' '}\n <strong className=\"dropin-cart-item__quantity__number\">\n {Number(quantity).toLocaleString(locale)}\n </strong>\n </span>\n )\n )}\n\n {/* Warning */}\n {warning && (\n <VComponent\n node={warning}\n className={classes([\n 'dropin-cart-item__warning',\n 'dropin-cart-item__warning--quantity',\n ])}\n />\n )}\n\n {/* Alert */}\n {alert && (\n <VComponent\n node={alert}\n className={classes([\n 'dropin-cart-item__alert',\n 'dropin-cart-item__alert--quantity',\n ])}\n />\n )}\n </div>\n\n {/* Actions */}\n {actions && (\n <div className={classes(['dropin-cart-item__actions'])}>\n {\n <VComponent\n node={actions}\n className={classes(['dropin-cart-item__buttons'])}\n />\n }\n </div>\n )}\n\n {/* Warning */}\n {warning && (\n <VComponent\n node={warning}\n className={classes(['dropin-cart-item__warning'])}\n />\n )}\n\n {/* Alert */}\n {alert && (\n <VComponent\n node={alert}\n className={classes(['dropin-cart-item__alert'])}\n />\n )}\n\n {/* Total */}\n <div\n className={classes([\n 'dropin-cart-item__total',\n ['dropin-cart-item__total--edit', !!onRemove],\n ])}\n >\n <div className=\"dropin-cart-item__row-total__wrapper\">\n {\n /* Total */\n total && (\n <div className=\"dropin-cart-item__row-total\">\n <VComponent node={total} role=\"text\" />\n </div>\n )\n }\n\n {taxIncluded && (\n <div className=\"dropin-cart-item__total-tax-included\">\n <span\n data-testid=\"tax-message\"\n className={classes(['dropin-cart-item__total-tax-message'])}\n >\n {labels.taxIncluded}\n </span>\n </div>\n )}\n </div>\n {taxExcluded && (\n <div className=\"dropin-cart-item__total-tax-excluded\">\n <span\n data-testid=\"tax-message\"\n className={classes([\n 'dropin-cart-item__total-tax-excluded-message',\n ])}\n >\n {totalExcludingTax && (\n <VComponent node={totalExcludingTax} role=\"text\" />\n )}\n \n {labels.taxExcluded}\n </span>\n </div>\n )}\n\n {/* Discount amount */}\n {discount && (\n <VComponent\n node={discount}\n className={classes(['dropin-cart-item__discount'])}\n />\n )}\n\n {/* Savings amount */}\n {savings && (\n <VComponent\n node={savings}\n className={classes(['dropin-cart-item__savings'])}\n />\n )}\n </div>\n\n {/* Footer */}\n {footer && (\n <VComponent\n node={footer}\n className={classes(['dropin-cart-item__footer'])}\n />\n )}\n </div>\n\n {/* Remove Item */}\n {removeContent ? (\n <VComponent node={removeContent} />\n ) : onRemove ? (\n <Button\n data-testid=\"cart-item-remove-button\"\n className={classes(['dropin-cart-item__remove'])}\n variant=\"tertiary\"\n onClick={() => onRemove?.()}\n icon={\n <Icon\n data-testid=\"cart-item-remove-icon\"\n source={Trash}\n size=\"24\"\n stroke=\"2\"\n viewBox=\"0 0 24 24\"\n aria-label={\n ariaLabel\n ? labels.remove?.replace('{product}', ariaLabel)\n : labels.removeDefault\n }\n />\n }\n disabled={updating}\n />\n ) : null}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const CartItemSkeleton: FunctionComponent = () => {\n return (\n <div className=\"dropin-cart-item dropin-cart-item-skeleton\">\n <Skeleton className=\"dropin-cart-item__skeleton dropin-cart-item__wrapper\">\n <div className=\"dropin-cart-item__image\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n <div className=\"dropin-cart-item__title\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n <div className=\"dropin-cart-item__sku\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n <div className=\"dropin-cart-item__price\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n <div className=\"dropin-cart-item__quantity\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n <div className=\"dropin-cart-item__total\">\n <SkeletonRow className=\"dropin-cart-item__skeleton__item\" />\n </div>\n </Skeleton>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes, Children } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\n\nimport '@adobe-commerce/elsie/components/CartList/CartList.css';\n\nexport interface CartListProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const CartList: FunctionComponent<CartListProps> = ({\n className,\n children,\n ...props\n}) => {\n return (\n <div {...props} className={classes(['dropin-cart-list', className])}>\n <div\n className=\"dropin-cart-list__wrapper\"\n aria-live=\"assertive\"\n aria-relevant=\"all\"\n >\n {Children.map(children, (child, key) => {\n return (\n <div key={key} className=\"dropin-cart-list__item\">\n {child}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes, useMemo } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/PriceRange/PriceRange.css';\nimport { Price } from '@adobe-commerce/elsie/components/Price';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface PriceRangeProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n locale?: string;\n currency?: string;\n amount?: number; // simple product\n variant?: 'default' | 'strikethrough';\n minimumAmount?: number; // configurable product\n maximumAmount?: number; // configurable product\n display?: 'dash' | 'from to' | 'as low as';\n size?: 'small' | 'medium' | 'large';\n specialPrice?: number;\n sale?: boolean;\n}\n\nexport const PriceRange: FunctionComponent<PriceRangeProps> = ({\n className,\n children,\n locale,\n currency,\n amount,\n variant = 'default',\n minimumAmount,\n maximumAmount,\n size = 'small',\n display = 'dash',\n specialPrice,\n sale = false,\n ...props\n}) => {\n const isSimpleProduct = useMemo(\n () =>\n amount ||\n minimumAmount === maximumAmount ||\n (minimumAmount && !maximumAmount) ||\n (maximumAmount && !minimumAmount),\n [amount, maximumAmount, minimumAmount]\n );\n\n return (\n <div>\n {/* Simple product price or when configurable product minimum price equals to maximum price */}\n {isSimpleProduct ? (\n <div {...props} className={classes(['dropin-price-range', className])}>\n <Price\n amount={amount ?? minimumAmount ?? maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n variant={variant}\n sale={sale}\n />\n </div>\n ) : (\n <div {...props} className={classes(['dropin-price-range', className])}>\n {display === 'dash' ? (\n <Dashed\n specialPrice={specialPrice}\n minimumAmount={minimumAmount}\n maximumAmount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n sale={sale}\n />\n ) : null}\n\n {display === 'from to' ? (\n <FromTo\n specialPrice={specialPrice}\n minimumAmount={minimumAmount}\n maximumAmount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n sale={sale}\n />\n ) : null}\n\n {display === 'as low as' ? (\n <SpecialPrice\n specialPrice={specialPrice}\n minimumAmount={minimumAmount}\n maximumAmount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n sale={sale}\n />\n ) : null}\n </div>\n )}\n </div>\n );\n};\n\n// Variations\n\nfunction Dashed({\n specialPrice,\n minimumAmount,\n maximumAmount,\n currency,\n locale,\n size,\n sale,\n}: PriceRangeProps) {\n return (\n <>\n <Price\n amount={specialPrice ?? minimumAmount}\n currency={currency}\n locale={locale}\n size={size}\n sale={!!specialPrice && sale}\n />\n <span className=\"dropin-price-range__separator\">-</span>\n <Price\n amount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n />\n </>\n );\n}\n\nfunction FromTo({\n specialPrice,\n minimumAmount,\n maximumAmount,\n currency,\n locale,\n size,\n sale,\n}: PriceRangeProps) {\n // Translations\n const translations = useText({\n from: 'Dropin.PriceRange.from.label',\n to: 'Dropin.PriceRange.to.label',\n asLowAs: 'Dropin.PriceRange.asLowAs.label',\n });\n\n return (\n <>\n <span\n className={classes([\n 'dropin-price-range__from',\n `dropin-price-range__from--${size}`,\n ])}\n >\n {translations.from}\n </span>\n <Price\n amount={specialPrice ?? minimumAmount}\n currency={currency}\n locale={locale}\n size={size}\n sale={!!specialPrice && sale}\n />\n <span\n className={classes([\n 'dropin-price-range__to',\n `dropin-price-range__to--${size}`,\n ])}\n >\n {translations.to}\n </span>\n <Price\n amount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n />\n </>\n );\n}\n\nfunction SpecialPrice({\n specialPrice,\n minimumAmount,\n maximumAmount,\n currency,\n locale,\n size,\n sale,\n}: PriceRangeProps) {\n // Translations\n const translations = useText({\n from: 'Dropin.PriceRange.from.label',\n to: 'Dropin.PriceRange.to.label',\n asLowAs: 'Dropin.PriceRange.asLowAs.label',\n });\n\n return (\n <>\n <span\n className={classes([\n 'dropin-price-range__as-low-as',\n `dropin-price-range__as-low-as--${size}`,\n ])}\n >\n {translations.asLowAs}\n </span>\n {specialPrice ? (\n <div>\n <Price\n amount={maximumAmount}\n currency={currency}\n locale={locale}\n size={size}\n variant=\"strikethrough\"\n />\n <Price\n amount={specialPrice}\n currency={currency}\n locale={locale}\n size={size}\n className=\"dropin-price-range__special\"\n sale={!!specialPrice && sale}\n />\n </div>\n ) : (\n <Price\n amount={minimumAmount}\n currency={currency}\n locale={locale}\n size={size}\n />\n )}\n </>\n );\n}\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { HTMLAttributes } from 'preact/compat';\nimport { FunctionComponent, VNode } from 'preact';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Breadcrumbs/Breadcrumbs.css';\n\nexport interface BreadcrumbsProps extends HTMLAttributes<HTMLElement> {\n categories: VNode[];\n separator?: VNode<HTMLAttributes<SVGSVGElement>>;\n}\n\nexport const Breadcrumbs: FunctionComponent<BreadcrumbsProps> = ({\n className,\n categories,\n separator,\n ...props\n}) => {\n return (\n <>\n {categories?.length > 1 && (\n <nav\n role=\"navigation\"\n {...props}\n className={classes(['dropin-breadcrumbs__container', className])}\n >\n <ul className=\"dropin-breadcrumbs__items\">\n {categories?.map((category: VNode, index: number) => {\n return (\n <li\n key={index}\n className={classes([\n 'dropin-breadcrumbs__item',\n [\n 'dropin-breadcrumbs__item--last',\n index === categories.length - 1,\n ],\n ])}\n >\n <VComponent\n node={category}\n className=\"dropin-breadcrumbs__link\"\n />\n {!separator && index !== categories.length - 1 && (\n <span className=\"dropin-breadcrumbs__separator--default\">\n {' '}\n /{' '}\n </span>\n )}\n {separator && index !== categories.length - 1 && (\n <VComponent\n node={separator}\n className=\"dropin-breadcrumbs__separator--icon\"\n />\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n )}\n </>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/AlertBanner/AlertBanner.css';\nimport { Button, Icon } from '@adobe-commerce/elsie/components';\nimport { Close } from '@adobe-commerce/elsie/icons';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface AlertBannerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'icon' | 'action'> {\n variant: 'brand' | 'neutral' | 'success' | 'warning';\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n message: VNode;\n onDismiss: () => void;\n action?: {\n label: string;\n onClick: (event: Event) => void;\n };\n}\n\nexport const AlertBanner: FunctionComponent<AlertBannerProps> = ({\n className,\n variant,\n icon,\n message,\n onDismiss,\n action,\n ...props\n}) => {\n const translations = useText({\n dismiss: 'Dropin.InlineAlert.dismissLabel',\n });\n\n return (\n <div\n {...props}\n className={classes([\n className,\n 'dropin-alert-banner',\n `dropin-alert-banner--${variant}`,\n ])}\n >\n <div className={'dropin-alert-banner__content'}>\n {icon && (\n <VComponent\n node={icon}\n aria-hidden=\"true\"\n className={'dropin-alert-banner__icon'}\n />\n )}\n\n {/* Message */}\n <VComponent\n node={message}\n className={classes(['dropin-alert-banner__message'])}\n />\n </div>\n\n <div className={'dropin-alert-banner__actions'}>\n {action && (\n <Button\n variant=\"tertiary\"\n className={'dropin-alert-banner__action'}\n onClick={action.onClick}\n aria-label={action.label}\n >\n {action.label}\n </Button>\n )}\n\n <Button\n icon={<Icon source={Close} size=\"24\" stroke=\"2\" />}\n className=\"dropin-alert-banner__dismiss-button\"\n variant=\"primary\"\n onClick={onDismiss}\n aria-label={translations.dismiss}\n />\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, JSX } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/IllustratedMessage/IllustratedMessage.css';\nimport { Card } from '@adobe-commerce/elsie/components';\n\nexport interface IllustratedMessageProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'icon' | 'action'> {\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n heading?: string;\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;\n message?: VNode<HTMLAttributes<HTMLElement>>;\n action?: VNode;\n variant?: 'primary' | 'secondary';\n}\n\nexport const IllustratedMessage: FunctionComponent<IllustratedMessageProps> = ({\n className,\n icon,\n heading,\n headingLevel = 2,\n message,\n action,\n variant = 'secondary',\n ...props\n}) => {\n const Heading =\n headingLevel >= 1 && headingLevel <= 6\n ? (`h${headingLevel}` as keyof JSX.IntrinsicElements)\n : 'h2';\n\n return (\n <div\n {...props}\n className={classes(['dropin-illustrated-message', className])}\n >\n <Card variant={variant}>\n {icon && (\n <VComponent\n node={icon}\n aria-hidden=\"true\"\n size=\"80\"\n className=\"dropin-illustrated-message__icon\"\n />\n )}\n\n {heading && (\n <Heading className=\"dropin-illustrated-message__heading\">\n {heading}\n </Heading>\n )}\n\n {message && (\n <VComponent\n node={message}\n className=\"dropin-illustrated-message__message\"\n />\n )}\n\n {action && (\n <VComponent\n node={action}\n className=\"dropin-illustrated-message__action\"\n />\n )}\n </Card>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ToggleButton/ToggleButton.css';\nimport { RadioButton } from '@adobe-commerce/elsie/components';\n\nexport interface ToggleButtonProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'icon' | 'label'> {\n label: string | VNode<HTMLAttributes<HTMLElement>>;\n name: string;\n value: string;\n busy?: boolean;\n icon?:\n | VNode<HTMLAttributes<SVGSVGElement>>\n | VNode<HTMLAttributes<HTMLImageElement>>;\n onChange?: (value: string) => void;\n selected?: boolean;\n}\n\nexport const ToggleButton: FunctionComponent<ToggleButtonProps> = ({\n label,\n name,\n value,\n busy = false,\n children,\n className,\n icon,\n onChange,\n selected = true,\n ...props\n}) => {\n return (\n <div\n {...props}\n className={classes([\n 'dropin-toggle-button',\n className,\n ['dropin-toggle-button__selected', selected],\n ])}\n >\n <label className=\"dropin-toggle-button__actionButton\">\n <RadioButton\n label=\"\"\n name={name}\n value={value}\n checked={selected}\n onChange={() => onChange && onChange(value)}\n aria-label={name}\n busy={busy}\n className={classes([className, 'dropin-toggle-button__radioButton'])}\n />\n\n <span className=\"dropin-toggle-button__content\">\n {icon && (\n // @ts-ignore\n <icon.type\n {...icon?.props}\n className=\"dropin-toggle-button__icon\"\n />\n )}\n {label}\n </span>\n </label>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ComponentChildren, FunctionComponent, VNode, JSX } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport { Divider } from '@adobe-commerce/elsie/components';\nimport '@adobe-commerce/elsie/components/Header/Header.css';\n\nexport interface HeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'size'> {\n title: string;\n size?: 'medium' | 'large';\n divider?: boolean;\n cta?: VNode;\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n}\n\nconst Heading = ({\n level,\n className,\n children,\n}: {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n className?: string;\n children?: ComponentChildren;\n}) => {\n const HeadingTag = level && level >= 1 && level <= 6\n ? `h${level}` as keyof JSX.IntrinsicElements\n : 'span';\n\n return <HeadingTag className={className}>{children as any}</HeadingTag>;\n};\n\nexport const Header: FunctionComponent<HeaderProps> = ({\n title = null,\n size = 'medium',\n cta,\n divider = true,\n className,\n level,\n ...props\n}) => {\n if (!title) return null;\n\n return (\n <div\n {...props}\n className={classes(['dropin-header-container', className])}\n data-testid=\"dropin-header-container\"\n >\n <Heading\n className={classes([\n 'dropin-header-container__title',\n ['dropin-header-container__title--medium', size === 'medium'],\n ['dropin-header-container__title--large', size === 'large'],\n ])}\n level={level}\n >\n {title}\n </Heading>\n {cta ? (\n <VComponent node={cta} className=\"dropin-header-container__actions\" />\n ) : null}\n {divider ? (\n <Divider\n className={classes([\n 'dropin-header-container__divider',\n ['dropin-header-container__divider--medium', size === 'medium'],\n ['dropin-header-container__divider--large', size === 'large'],\n ])}\n />\n ) : null}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { HTMLAttributes } from 'preact/compat';\nimport '@adobe-commerce/elsie/components/Tag/Tag.css';\n\nexport interface TagProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'icon'> {\n label?: string;\n children?: VNode | VNode[];\n}\n\nexport const Tag: FunctionComponent<TagProps> = ({\n label,\n className,\n children,\n ...props\n}) => {\n if (!label && !children) return null;\n\n return (\n <div\n {...props}\n className={classes(['dropin-tag-container', className])}\n data-testid=\"dropin-tag-container\"\n >\n {children ?? <span className=\"dropin-tag-container__label\">{label}</span>}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/ContentGrid/ContentGrid.css';\n\nexport interface ContentGridProps extends HTMLAttributes<HTMLDivElement> {\n emptyGridContent: VNode;\n maxColumns?: number;\n columnWidth?: string;\n}\n\nexport const ContentGrid: FunctionComponent<ContentGridProps> = ({\n className,\n children,\n maxColumns,\n columnWidth = '1fr',\n emptyGridContent,\n ...props\n}) => {\n const hasChildren =\n !!children && (Array.isArray(children) ? children.length > 0 : true);\n\n const additionalStyles = hasChildren\n ? {\n gridTemplateColumns: `repeat(${maxColumns}, ${columnWidth})`,\n }\n : undefined;\n\n return (\n <div\n {...props}\n className={classes(['dropin-content-grid', className])}\n tabindex={0}\n >\n <div\n data-testid=\"content-grid-content\"\n className={classes([\n 'dropin-content-grid__content',\n ['dropin-content-grid__dynamic-columns-content', !maxColumns],\n ['dropin-content-grid__content--empty', !hasChildren],\n ])}\n style={additionalStyles}\n >\n {hasChildren ? children : emptyGridContent}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes, isNumber } from '@adobe-commerce/elsie/lib';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport { ChevronDown } from '@adobe-commerce/elsie/icons';\nimport { Icon } from '@adobe-commerce/elsie/components/Icon';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport '@adobe-commerce/elsie/components/Pagination/Pagination.css';\n\nexport interface PaginationProps {\n className?: string;\n currentPage?: number;\n totalPages?: number;\n onChange?: (currentPage: number) => void;\n}\n\nexport type PaginationList = {\n page: number | string;\n isActive: boolean;\n label: number | string;\n};\n\nexport const Pagination: FunctionComponent<PaginationProps> = ({\n totalPages = 10,\n currentPage = 1,\n onChange,\n className,\n ...props\n}) => {\n const translations = useText({\n backwardButton: 'Dropin.Pagination.backwardButton.ariaLabel',\n forwardButton: 'Dropin.Pagination.forwardButton.ariaLabel',\n });\n\n const handleForward = useCallback(() => {\n const nextPage = Math.min(currentPage + 1, totalPages);\n\n onChange?.(nextPage);\n }, [currentPage, onChange, totalPages]);\n\n const handleBackward = useCallback(() => {\n const prevPage = Math.max(currentPage - 1, 1);\n\n onChange?.(prevPage);\n }, [currentPage, onChange]);\n\n const handleSetPage = useCallback(\n (currentPage: number | string) => {\n if (isNumber(currentPage)) {\n onChange?.(currentPage as number);\n }\n },\n [onChange]\n );\n\n const createPages = useCallback(\n (currentPage: number, totalPages: number): PaginationList[] => {\n let pages: PaginationList[] = [];\n\n const addPageRange = (start: number, end: number) => {\n for (let i = start; i <= end; i++) {\n pages.push({ page: i, isActive: i === currentPage, label: i });\n }\n };\n\n if (totalPages <= 5) {\n addPageRange(1, totalPages);\n } else if (currentPage <= 2) {\n addPageRange(1, 2);\n pages.push({ page: 'ellipsis', isActive: false, label: '...' });\n addPageRange(totalPages - 1, totalPages);\n } else if (currentPage >= totalPages - 3) {\n addPageRange(totalPages - 4, totalPages);\n } else {\n addPageRange(currentPage - 1, currentPage);\n pages.push({ page: 'ellipsis', isActive: false, label: '...' });\n addPageRange(totalPages - 1, totalPages);\n }\n\n return pages;\n },\n []\n );\n\n const paginationList: PaginationList[] = useMemo(\n () => createPages(currentPage, totalPages),\n [createPages, currentPage, totalPages]\n );\n\n return (\n <div {...props} className={classes(['dropin-pagination', className])}>\n <button\n type=\"button\"\n data-testid=\"prev-button\"\n aria-label={translations.backwardButton}\n disabled={currentPage === 1}\n onClick={handleBackward}\n className={classes([\n 'dropin-pagination-arrow',\n 'dropin-pagination-arrow--backward',\n ])}\n >\n <Icon size=\"24\" source={ChevronDown} />\n </button>\n <ul className=\"dropin-pagination_list\">\n {(paginationList as PaginationList[]).map((item, index) => (\n <li\n data-testid={`dropin-pagination_list-item--${item.page}`}\n key={`${item.page}_${index}`}\n className={classes([\n 'dropin-pagination_list-item',\n `dropin-pagination_list-item--${item.page}`,\n [`dropin-pagination_list-item--active`, item.isActive],\n ])}\n >\n <button\n type=\"button\"\n data-testid={`set-page-button-${item.page}`}\n onClick={() => handleSetPage(item.page)}\n >\n {item.label}\n </button>\n </li>\n ))}\n </ul>\n <button\n type=\"button\"\n data-testid=\"next-button\"\n aria-label={translations.forwardButton}\n disabled={currentPage === totalPages}\n onClick={handleForward}\n className={classes([\n 'dropin-pagination-arrow',\n 'dropin-pagination-arrow--forward',\n ])}\n >\n <Icon size=\"24\" source={ChevronDown} />\n </button>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\nimport '@adobe-commerce/elsie/components/ProductItemCard/ProductItemCardSkeleton.css';\n\nexport const ProductItemCardSkeleton: FunctionComponent = () => {\n return (\n <div className=\"dropin-product-item-card dropin-product-item-card-skeleton\">\n <Skeleton className=\"dropin-product-item-card__skeleton dropin-product-item-card__image-container\">\n <SkeletonRow\n fullWidth={true}\n className=\"dropin-product-item-card__skeleton__image\"\n />\n </Skeleton>\n <Skeleton className=\"dropin-product-item-card__content dropin-product-item-card__skeleton__content\">\n <SkeletonRow\n fullWidth={true}\n size=\"xsmall\"\n className=\"dropin-product-item-card__skeleton__item\"\n />\n <SkeletonRow\n fullWidth={true}\n size=\"xsmall\"\n className=\"dropin-product-item-card__skeleton__item\"\n />\n <SkeletonRow\n fullWidth={true}\n size=\"xsmall\"\n className=\"dropin-product-item-card__skeleton__item\"\n />\n </Skeleton>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport { ProductItemCardSkeleton } from '@adobe-commerce/elsie/components/ProductItemCard/ProductItemCardSkeleton';\nimport '@adobe-commerce/elsie/components/ProductItemCard/ProductItemCard.css';\n\nexport interface ProductItemCardProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n image?: VNode;\n titleNode?: VNode;\n price?: VNode;\n sku?: VNode;\n actionButton?: VNode;\n swatches?: VNode;\n initialized?: boolean;\n}\n\nexport const ProductItemCard: FunctionComponent<ProductItemCardProps> = ({\n className,\n image,\n titleNode,\n price,\n sku,\n actionButton,\n swatches,\n initialized = false,\n ...props\n}) => {\n if (!initialized) {\n return <ProductItemCardSkeleton />;\n }\n return (\n <div\n {...props}\n className={classes(['dropin-product-item-card', className])}\n >\n <div className=\"dropin-product-item-card__image-container\">\n {image && (\n <VComponent\n node={image}\n className={classes(['dropin-product-item-card__image'])}\n />\n )}\n </div>\n <div className=\"dropin-product-item-card__content\">\n {titleNode && (\n <VComponent\n node={titleNode}\n className={classes(['dropin-product-item-card__title'])}\n />\n )}\n {sku && (\n <VComponent\n node={sku}\n className={classes(['dropin-product-item-card__sku'])}\n />\n )}\n {price && (\n <div className=\"dropin-product-item-card__price\">\n <VComponent\n node={price}\n className={classes(['dropin-product-item-card__price'])}\n />\n </div>\n )}\n {swatches && (\n <div className=\"dropin-product-item-card__swatches\">\n <VComponent\n node={swatches}\n className={classes(['dropin-product-item-card__swatches'])}\n />\n </div>\n )}\n {actionButton && (\n <div className=\"dropin-product-item-card__action\">\n <VComponent\n node={actionButton}\n className={classes(['dropin-product-item-card__action'])}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { useId } from 'preact/hooks';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/InputFile/InputFile.css';\n\nexport interface InputFileProps extends Omit<HTMLAttributes<HTMLInputElement>, 'type' | 'icon'> {\n accept?: string;\n onChange?: (event: Event) => void;\n label?: string;\n multiple?: boolean;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n}\n\nexport const InputFile: FunctionComponent<InputFileProps> = ({\n accept,\n onChange,\n label = 'Upload Document',\n icon,\n className,\n multiple,\n id: providedId,\n ...props\n}) => {\n \n const generatedId = useId();\n const id = providedId || generatedId;\n\n const handleChange = (e: Event) => {\n onChange?.(e);\n };\n\n return (\n <div className={classes(['dropin-input-file', className])}>\n <label htmlFor={id} className=\"dropin-input-file__label\">\n {icon && <span className=\"dropin-input-file__icon\">{icon}</span>}\n {label}\n </label>\n <input\n id={id}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleChange}\n className=\"dropin-input-file__input\"\n {...props}\n />\n </div>\n );\n};"],"file":"components.js"}
|