@dropins/tools 1.3.1-alpha01 → 1.3.1-alpha02
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/components.js +1 -1
- package/components.js.map +1 -1
- package/initializer.js +1 -1
- package/lib/aem/configs.js +1 -1
- package/package.json +1 -1
- package/types/elsie/src/icons/index.d.ts +0 -1
- package/chunks/icons/Edit.js +0 -4
- package/chunks/icons/Edit.js.map +0 -1
package/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":["definition","en_US","getDefinitionByLanguage","lang","deepmerge","SINGLELINE","SkeletonRow","className","fullWidth","lines","size","variant","children","multilineGap","props","sharedClasses","jsx","classes","svg","_","index","Skeleton","rowGap","UIContext","createContext","UIProvider","langDefinitions","definitions","useMemo","selectedDefinitions","locale","IntlProvider","Fragment","provider","Render","lazyIcons","lazy","__vitePreload","n","Icon","Source","stroke","viewBox","LazyIcon","defaultProps","Suspense","Incrementer","name","value","disabled","error","success","min","max","onValue","onUpdateError","currentValue","setCurrentValue","useState","minValue","maxValue","isInvalid","errorMessage","useEffect","propValue","debouncedOnValueHandler","useCallback","debounce","newValue","e","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","Image","src","params","loading","srcSet","onLoad","loaded","setLoaded","_srcSet","generateSrcset","onLoadHandler","Divider","Price","amount","currency","define_process_env_default","weight","sale","formatOptions","formatter","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","alt","imageNode","imageProps","AccordionSection","ariaLabelTitle","secondaryText","actionIconPosition","iconOpen","iconClose","iconLeft","showIconLeft","renderContentWhenClosed","defaultOpen","onStateChange","open","setOpen","onClickHandler","next","buttonLabel","openIcon","closeIcon","leftIcon","Accordion","divider","renderAccordionSection","InLineAlert","type","additionalActions","onDismiss","heading","itemList","actionButtonPosition","_b","_c","Close","action","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","quantity","footer","updating","quantityType","dropdownOptions","onQuantity","onRemove","useContext","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"],"ignoreList":[],"sources":["/@dropins/tools/src/i18n/index.ts","/@dropins/tools/src/components/Skeleton/Skeleton.tsx","/@dropins/tools/src/components/UIProvider/UIProvider.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/Image/Image.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/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"],"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 { deepmerge } from '@adobe-commerce/elsie/lib';\nimport en_US from '@adobe-commerce/elsie/i18n/en_US.json';\n\nexport type Lang = 'en_US';\n\nexport const definition = {\n default: en_US,\n en_US,\n};\n\n// https://github.com/synacor/preact-i18n\n// eslint-disable-next-line no-restricted-imports\nexport * from 'preact-i18n';\n\nexport const getDefinitionByLanguage = (lang: Lang) => {\n return deepmerge(definition.default, definition[lang] || {});\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/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 { HTMLAttributes, createContext, useMemo } from 'preact/compat';\nimport { deepmerge, Render } from '@adobe-commerce/elsie/lib';\nimport { IntlProvider, getDefinitionByLanguage, Lang } from '@adobe-commerce/elsie/i18n';\n\nimport '@adobe-commerce/elsie/components/UIProvider/UIProvider.css';\nimport '@adobe-commerce/elsie/components/UIProvider/normalize.css';\n\nexport const UIContext = createContext<{\n locale: string;\n}>({\n locale: 'en-US',\n});\n\ntype LangDefinitions = { [key: string]: any };\n\nexport interface UIProviderProps extends HTMLAttributes<HTMLDivElement> {\n lang?: Lang; // ... list of other supported languages\n langDefinitions?: LangDefinitions;\n}\n\nexport const UIProvider: FunctionComponent<UIProviderProps> = ({\n lang = 'en_US',\n langDefinitions = {},\n children,\n}) => {\n const definitions = useMemo(() => {\n // Merge default definition with selected definition\n const selectedDefinitions: LangDefinitions = deepmerge(\n langDefinitions.default,\n langDefinitions[lang] ?? {}\n );\n\n // Merge SDK default definitions with custom definitions\n return deepmerge(\n getDefinitionByLanguage(lang), // SDK default definitions\n selectedDefinitions // Custom definitions\n );\n }, [lang, langDefinitions]);\n\n const locale = lang.replace('_', '-');\n\n return (\n <UIContext.Provider value={{ locale }}>\n <IntlProvider definition={definitions}>\n <>{children}</>\n </IntlProvider>\n </UIContext.Provider>\n );\n};\n\nexport const provider = new Render(<UIProvider />);","/********************************************************************\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';\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 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\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 const LazyIcon = typeof Source === 'string' ? lazyIcons[Source] : null;\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 return (\n <Suspense fallback={<svg {...props} {...defaultProps} />}>\n {LazyIcon ? (\n <LazyIcon {...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, useMemo, useState } from 'preact/compat';\nimport {\n classes,\n generateSrcset,\n ResolveImageUrlOptions,\n} from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Image/Image.css';\n\nexport interface ImageProps extends HTMLAttributes<HTMLDivElement> {\n params?: ResolveImageUrlOptions;\n src: string;\n onLoad?: (e: any) => void;\n}\nexport const Image: FunctionComponent<ImageProps> = ({\n className,\n src,\n params,\n loading = 'lazy',\n srcSet,\n onLoad,\n ...props\n}) => {\n const [loaded, setLoaded] = useState(false);\n\n const _srcSet = useMemo(() => {\n // If srcSet is provided, use it\n if (srcSet) return srcSet;\n\n // If src is not provided, return \"undefined\"\n if (!src || !params) return;\n\n // Otherwise, generate srcSet based on params\n return generateSrcset(src, { ...params });\n }, [params, src, srcSet]);\n\n // Add class at image onLoad\n const onLoadHandler = (e: any) => {\n setLoaded(true); \n onLoad?.(e);\n };\n\n return (\n <img\n {...props}\n className={classes([\n 'dropin-image',\n ['dropin-image--loaded', loaded],\n className,\n ])}\n loading={loading}\n onLoad={onLoadHandler}\n src={src}\n srcSet={_srcSet}\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 } 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 } 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;\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 = process.env.LOCALE ?? undefined,\n variant = 'default',\n weight = 'bold',\n className,\n children,\n sale = false,\n formatOptions = {},\n size = 'small',\n ...props\n}) => {\n const formatter = useMemo(\n () =>\n new Intl.NumberFormat(locale, {\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 [locale, 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 { 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';\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 <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 );\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 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 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 quantity,\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 {onQuantity\n ? quantityComponent\n : quantity && (\n <span\n className={classes(['dropin-cart-item__quantity__value'])}\n >\n {labels.quantity}:{' '}\n <strong className=\"dropin-cart-item__quantity__number\">\n {Number(quantity).toLocaleString(locale)}\n </strong>\n </span>\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 node={footer} className={classes(['dropin-cart-item__footer'])} />\n )}\n </div>\n\n {/* Remove Item */}\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 )}\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 <div className=\"dropin-product-item-card__content dropin-product-item-card__skeleton__content\">\n <SkeletonRow\n fullWidth={true}\n size=\"large\"\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=\"small\"\n className=\"dropin-product-item-card__skeleton__item\"\n />\n </div>{' '}\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"],"file":"components.js"}
|
|
1
|
+
{"version":3,"mappings":"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","names":["definition","en_US","getDefinitionByLanguage","lang","deepmerge","SINGLELINE","SkeletonRow","className","fullWidth","lines","size","variant","children","multilineGap","props","sharedClasses","jsx","classes","svg","_","index","Skeleton","rowGap","UIContext","createContext","UIProvider","langDefinitions","definitions","useMemo","selectedDefinitions","locale","IntlProvider","Fragment","provider","Render","lazyIcons","lazy","__vitePreload","n","Icon","Source","stroke","viewBox","LazyIcon","defaultProps","Suspense","Incrementer","name","value","disabled","error","success","min","max","onValue","onUpdateError","currentValue","setCurrentValue","useState","minValue","maxValue","isInvalid","errorMessage","useEffect","propValue","debouncedOnValueHandler","useCallback","debounce","newValue","e","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","Image","src","params","loading","srcSet","onLoad","loaded","setLoaded","_srcSet","generateSrcset","onLoadHandler","Divider","Price","amount","currency","define_process_env_default","weight","sale","formatOptions","formatter","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","alt","imageNode","imageProps","AccordionSection","ariaLabelTitle","secondaryText","actionIconPosition","iconOpen","iconClose","iconLeft","showIconLeft","renderContentWhenClosed","defaultOpen","onStateChange","open","setOpen","onClickHandler","next","buttonLabel","openIcon","closeIcon","leftIcon","Accordion","divider","renderAccordionSection","InLineAlert","type","additionalActions","onDismiss","heading","itemList","actionButtonPosition","_b","_c","Close","action","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","quantity","footer","updating","quantityType","dropdownOptions","onQuantity","onRemove","useContext","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"],"ignoreList":[],"sources":["/@dropins/tools/src/i18n/index.ts","/@dropins/tools/src/components/Skeleton/Skeleton.tsx","/@dropins/tools/src/components/UIProvider/UIProvider.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/Image/Image.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/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"],"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 { deepmerge } from '@adobe-commerce/elsie/lib';\nimport en_US from '@adobe-commerce/elsie/i18n/en_US.json';\n\nexport type Lang = 'en_US';\n\nexport const definition = {\n default: en_US,\n en_US,\n};\n\n// https://github.com/synacor/preact-i18n\n// eslint-disable-next-line no-restricted-imports\nexport * from 'preact-i18n';\n\nexport const getDefinitionByLanguage = (lang: Lang) => {\n return deepmerge(definition.default, definition[lang] || {});\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/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 { HTMLAttributes, createContext, useMemo } from 'preact/compat';\nimport { deepmerge, Render } from '@adobe-commerce/elsie/lib';\nimport { IntlProvider, getDefinitionByLanguage, Lang } from '@adobe-commerce/elsie/i18n';\n\nimport '@adobe-commerce/elsie/components/UIProvider/UIProvider.css';\nimport '@adobe-commerce/elsie/components/UIProvider/normalize.css';\n\nexport const UIContext = createContext<{\n locale: string;\n}>({\n locale: 'en-US',\n});\n\ntype LangDefinitions = { [key: string]: any };\n\nexport interface UIProviderProps extends HTMLAttributes<HTMLDivElement> {\n lang?: Lang; // ... list of other supported languages\n langDefinitions?: LangDefinitions;\n}\n\nexport const UIProvider: FunctionComponent<UIProviderProps> = ({\n lang = 'en_US',\n langDefinitions = {},\n children,\n}) => {\n const definitions = useMemo(() => {\n // Merge default definition with selected definition\n const selectedDefinitions: LangDefinitions = deepmerge(\n langDefinitions.default,\n langDefinitions[lang] ?? {}\n );\n\n // Merge SDK default definitions with custom definitions\n return deepmerge(\n getDefinitionByLanguage(lang), // SDK default definitions\n selectedDefinitions // Custom definitions\n );\n }, [lang, langDefinitions]);\n\n const locale = lang.replace('_', '-');\n\n return (\n <UIContext.Provider value={{ locale }}>\n <IntlProvider definition={definitions}>\n <>{children}</>\n </IntlProvider>\n </UIContext.Provider>\n );\n};\n\nexport const provider = new Render(<UIProvider />);","/********************************************************************\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';\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};\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'size'> {\n source:\n | FunctionComponent<SVGProps<SVGSVGElement> & { title?: string }>\n | IconType;\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\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 const LazyIcon = typeof Source === 'string' ? lazyIcons[Source] : null;\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 return (\n <Suspense fallback={<svg {...props} {...defaultProps} />}>\n {LazyIcon ? (\n <LazyIcon {...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, useMemo, useState } from 'preact/compat';\nimport {\n classes,\n generateSrcset,\n ResolveImageUrlOptions,\n} from '@adobe-commerce/elsie/lib';\nimport '@adobe-commerce/elsie/components/Image/Image.css';\n\nexport interface ImageProps extends HTMLAttributes<HTMLDivElement> {\n params?: ResolveImageUrlOptions;\n src: string;\n onLoad?: (e: any) => void;\n}\nexport const Image: FunctionComponent<ImageProps> = ({\n className,\n src,\n params,\n loading = 'lazy',\n srcSet,\n onLoad,\n ...props\n}) => {\n const [loaded, setLoaded] = useState(false);\n\n const _srcSet = useMemo(() => {\n // If srcSet is provided, use it\n if (srcSet) return srcSet;\n\n // If src is not provided, return \"undefined\"\n if (!src || !params) return;\n\n // Otherwise, generate srcSet based on params\n return generateSrcset(src, { ...params });\n }, [params, src, srcSet]);\n\n // Add class at image onLoad\n const onLoadHandler = (e: any) => {\n setLoaded(true); \n onLoad?.(e);\n };\n\n return (\n <img\n {...props}\n className={classes([\n 'dropin-image',\n ['dropin-image--loaded', loaded],\n className,\n ])}\n loading={loading}\n onLoad={onLoadHandler}\n src={src}\n srcSet={_srcSet}\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 } 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 } 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;\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 = process.env.LOCALE ?? undefined,\n variant = 'default',\n weight = 'bold',\n className,\n children,\n sale = false,\n formatOptions = {},\n size = 'small',\n ...props\n}) => {\n const formatter = useMemo(\n () =>\n new Intl.NumberFormat(locale, {\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 [locale, 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 { 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';\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 <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 );\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 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 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 quantity,\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 {onQuantity\n ? quantityComponent\n : quantity && (\n <span\n className={classes(['dropin-cart-item__quantity__value'])}\n >\n {labels.quantity}:{' '}\n <strong className=\"dropin-cart-item__quantity__number\">\n {Number(quantity).toLocaleString(locale)}\n </strong>\n </span>\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 node={footer} className={classes(['dropin-cart-item__footer'])} />\n )}\n </div>\n\n {/* Remove Item */}\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 )}\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 <div className=\"dropin-product-item-card__content dropin-product-item-card__skeleton__content\">\n <SkeletonRow\n fullWidth={true}\n size=\"large\"\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=\"small\"\n className=\"dropin-product-item-card__skeleton__item\"\n />\n </div>{' '}\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"],"file":"components.js"}
|