{"version":3,"file":"builder-custom-components.9d6b244c339387cc3db5.js?ssi=0","mappings":"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","sources":["webpack://@logos/commerceweb-frontend/../node_modules/@faithlife/format-uri/index.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/amber-image/builder-amber-image.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/amber-image/amber-image-impl.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/amber-image/register.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/amber-image/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/email-capture-form/register.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/email-capture-form/builder-email-capture-form.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/email-capture-form/mailing-lists-api-impl.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/email-capture-form/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/site-logo/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mega-menu/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mega-menu/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/shared/variants.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mobile-mega-menu/mobile-menu/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mega-menu/menu-dropdown/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mega-menu/menu-dropdown/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mega-menu/menu-column/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mobile-mega-menu/mobile-menu-section/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mega-menu/menu-section/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mega-menu/menu-section/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mega-menu/menu-item/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mega-menu/menu-item/index.jsx","webpack://@logos/commerceweb-frontend/javascript/node_modules/algoliasearch/dist/lite/builds/browser.js","webpack://@logos/commerceweb-frontend/./Scripts/site/util/skip-empty-query-search-client.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/search-bar/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/search-bar/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/full-contact-information/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/account-dropdown/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/account-dropdown/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/account-icon/user-avatar.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/account-icon/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/account-icon/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/with-div-wrapper.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mini-cart-v2/mini-cart-toggle-provider.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mini-cart-v2/use-mini-cart-navigation.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mini-cart-v2/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/util/get-added-item-count-from-location.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/cart-icon-v2/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/spacer/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/index.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/universal-header-builder-components.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/site-logo/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/spacer/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/full-contact-information/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/checkout-secure-indicator/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mega-menu/menu-column/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/cart/notifications/index.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/cart/notifications/use-cart-notifications.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/util/safe-json-parse.ts"],"sourcesContent":["const supportedValueTypes = new Set(['number', 'boolean', 'string']);\nconst e = (value, key) => {\n\tif (!supportedValueTypes.has(typeof value)) {\n\t\tthrow new Error(\n\t\t\t`Only string, number, and boolean values are supported, but ${key} has type ${typeof value}`\n\t\t);\n\t}\n\n\treturn encodeURIComponent(value);\n};\n\nmodule.exports = function formatUri(pattern, params) {\n\tif (!params) {\n\t\tthrow new Error('params object is required.');\n\t}\n\n\tconst usedParams = new Set();\n\n\tconst formatted = pattern.replace(/{([-_a-zA-Z0-9]+)}/g, (match, key) => {\n\t\tconst value = params[key];\n\t\tif (value === null || value === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t`Pattern \"${pattern}\" requires a value for placeholder \"${key}\", but one was not specified.`\n\t\t\t);\n\t\t}\n\n\t\tusedParams.add(key);\n\t\treturn e(params[key]);\n\t});\n\n\tconst query = Object.entries(params)\n\t\t.filter(\n\t\t\t([key, value]) => key && (value !== null && value !== undefined) && !usedParams.has(key)\n\t\t)\n\t\t.map(([key, value]) => `${e(key)}=${e(value)}`)\n\t\t.join('&');\n\n\tif (query) {\n\t\tconst separator = formatted.includes('?') ? '&' : '?';\n\t\treturn `${formatted}${separator}${query}`;\n\t}\n\n\treturn formatted;\n};\n","import React from 'react';\nimport { Builder } from '@builder.io/react';\n\nimport { isAmberHost, toAmberCdnUrl } from '../../../shared/enhanced-image-tag/image';\n\nexport const ObjectFit = {\n\tContain: 'contain',\n\tCover: 'cover',\n};\n\nexport const ObjectPosition = {\n\tCenter: 'center',\n\tTop: 'top',\n\tBottom: 'bottom',\n\tLeft: 'left',\n\tRight: 'right',\n\tTopLeft: 'top-left',\n\tTopRight: 'top-right',\n\tBottomLeft: 'bottom-left',\n\tBottomRight: 'bottom-right',\n};\n\nfunction validateBuilderAmberImageProps(props) {\n\tconst { src, alt, width, height, objectFit, objectPosition, highPriority } = props;\n\n\tif (!src) {\n\t\treturn { valid: false, message: 'Source is required' };\n\t}\n\n\tif (!width || !height) {\n\t\treturn { valid: false, message: 'Width and height are required' };\n\t}\n\n\tlet valid = false;\n\tlet srcType = null;\n\tlet finalSrc = src;\n\n\t// Check if it's an Amber Asset ID (numeric string)\n\tif (/^\\d+$/.test(src)) {\n\t\tvalid = true;\n\t\tsrcType = 'assetId';\n\t}\n\n\tif (!valid) {\n\t\tlet url = null;\n\t\ttry {\n\t\t\turl = new URL(src);\n\t\t} catch {\n\t\t\t// Invalid URL, fall through to error below\n\t\t}\n\n\t\tif (url) {\n\t\t\t// Check if it's an Amber Optimized URL\n\t\t\tif (isAmberHost(url.host) && /\\/v1\\/assets\\/\\d+\\/optimized$/.test(url.pathname)) {\n\t\t\t\tvalid = true;\n\t\t\t\tsrcType = 'optimizedUrl';\n\t\t\t} else if (url.pathname.endsWith('.svg') && url.searchParams.has('signature')) {\n\t\t\t\t// Check if it's an Amber SVG URL\n\t\t\t\tvalid = true;\n\t\t\t\tsrcType = 'svg';\n\t\t\t}\n\n\t\t\tif (valid) {\n\t\t\t\tfinalSrc = toAmberCdnUrl(url);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (valid) {\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\tsrc: finalSrc,\n\t\t\tsrcType,\n\t\t\twidth,\n\t\t\theight,\n\t\t\talt: alt ?? '',\n\t\t\tobjectFit,\n\t\t\tobjectPosition,\n\t\t\thighPriority: highPriority ?? false,\n\t\t};\n\t}\n\n\treturn {\n\t\tvalid: false,\n\t\tmessage: 'Source must be an Amber Asset ID (numeric), Amber Optimized URL, or Amber SVG URL',\n\t};\n}\n\nexport function createBuilderAmberImageComponent(AmberImageImpl) {\n\tfunction BuilderAmberImage(props) {\n\t\tconst result = validateBuilderAmberImageProps(props);\n\n\t\tif (result.valid) {\n\t\t\tconst { src, srcType, width, height, alt, objectFit, objectPosition, highPriority } = result;\n\n\t\t\treturn (\n\t\t\t\t<AmberImageImpl\n\t\t\t\t\tsrc={src}\n\t\t\t\t\tsrcType={srcType}\n\t\t\t\t\twidth={width}\n\t\t\t\t\theight={height}\n\t\t\t\t\talt={alt}\n\t\t\t\t\tobjectFit={objectFit}\n\t\t\t\t\tobjectPosition={objectPosition}\n\t\t\t\t\thighPriority={highPriority}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif (Builder.isEditing) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<div\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tborderRadius: '4px',\n\t\t\t\t\t\t\tborderLeftWidth: '4px',\n\t\t\t\t\t\t\tborderColor: '#ed8936',\n\t\t\t\t\t\t\tbackgroundColor: '#fefcbf',\n\t\t\t\t\t\t\tpadding: '12px',\n\t\t\t\t\t\t\tcolor: '#dd6b20',\n\t\t\t\t\t\t\tfontSize: '14px',\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{'Image configuration is not valid:'} {result.message}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\treturn BuilderAmberImage;\n}\n","import React from 'react';\n\nimport { Image } from '../../../shared/enhanced-image-tag/image';\nimport { ObjectFit, ObjectPosition } from './builder-amber-image';\n\nconst objectFitCssValues = {\n\t[ObjectFit.Contain]: 'contain',\n\t[ObjectFit.Cover]: 'cover',\n};\n\nconst objectPositionCssValues = {\n\t[ObjectPosition.Center]: 'center',\n\t[ObjectPosition.Top]: 'top',\n\t[ObjectPosition.Bottom]: 'bottom',\n\t[ObjectPosition.Left]: 'left',\n\t[ObjectPosition.Right]: 'right',\n\t[ObjectPosition.TopLeft]: 'top left',\n\t[ObjectPosition.TopRight]: 'top right',\n\t[ObjectPosition.BottomLeft]: 'bottom left',\n\t[ObjectPosition.BottomRight]: 'bottom right',\n};\n\nexport function AmberImageImpl(props) {\n\tconst { src, srcType, alt, width, height, objectFit, objectPosition, highPriority } = props;\n\n\tlet finalSrc = src;\n\n\tif (srcType === 'assetId') {\n\t\tfinalSrc = `https://files.logoscdn.com/v1/assets/${src}/optimized`;\n\t}\n\n\tconst style = {\n\t\twidth: `${width}px`,\n\t\tmaxWidth: '100%',\n\t\taspectRatio: `${width} / ${height}`,\n\t\tobjectFit: objectFit ? objectFitCssValues[objectFit] : undefined,\n\t\tobjectPosition: objectPosition ? objectPositionCssValues[objectPosition] : undefined,\n\t};\n\n\treturn (\n\t\t<Image\n\t\t\talt={alt}\n\t\t\tbelowTheFold={!highPriority}\n\t\t\tfetchPriority={highPriority ? 'high' : undefined}\n\t\t\theight={height}\n\t\t\tsizes={{ mobile: '100vw', desktop: width }}\n\t\t\tsrc={finalSrc}\n\t\t\tstyle={style}\n\t\t\twidth={width}\n\t\t/>\n\t);\n}\n","import { Builder } from '@builder.io/react';\n\nimport { createBuilderAmberImageComponent, ObjectFit, ObjectPosition } from './builder-amber-image';\n\nexport function register(AmberImageImpl) {\n\tconst BuilderAmberImage = createBuilderAmberImageComponent(AmberImageImpl);\n\n\tregisterAmberImageWithBuilder(BuilderAmberImage);\n}\n\nconst icon =\n\t'data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20fill%3D%22%23333%22%20fill-rule%3D%22evenodd%22%20d%3D%22M0%202v12a2%202%200%200%200%202%202h12a2%202%200%200%200%202-2V2a2%202%200%200%200-2-2H2a2%202%200%200%200-2%202m1.5%200%20.02%2012a.5.5%200%200%200%20.48.5h12a.5.5%200%200%200%20.5-.5V2a.5.5%200%200%200-.5-.5H2a.5.5%200%200%200-.5.5%22%2F%3E%3Cpath%20fill%3D%22%23888%22%20d%3D%22M8%203%203.67%205.5v5zl4.33%207.5v-5Z%22%2F%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m3.67%2010.5%202.165%201.25L8%208l2.165%203.75%202.165-1.25L8%203Z%22%2F%3E%3Cpath%20fill%3D%22%23333%22%20d%3D%22M5.835%2011.75%208%2013l2.165-1.25L8%208Z%22%2F%3E%3C%2Fsvg%3E';\n\nconst labelByObjectFit = {\n\t[ObjectFit.Cover]: 'cover',\n\t[ObjectFit.Contain]: 'contain',\n};\n\nconst labelByObjectPosition = {\n\t[ObjectPosition.Center]: 'center',\n\t[ObjectPosition.Top]: 'top',\n\t[ObjectPosition.Bottom]: 'bottom',\n\t[ObjectPosition.Left]: 'left',\n\t[ObjectPosition.Right]: 'right',\n\t[ObjectPosition.TopLeft]: 'top left',\n\t[ObjectPosition.TopRight]: 'top right',\n\t[ObjectPosition.BottomLeft]: 'bottom left',\n\t[ObjectPosition.BottomRight]: 'bottom right',\n};\n\nfunction registerAmberImageWithBuilder(AmberImage) {\n\tBuilder.registerComponent(AmberImage, {\n\t\tname: 'AmberImage',\n\t\tfriendlyName: 'Amber Image',\n\t\timage: icon,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: 'src',\n\t\t\t\tfriendlyName: 'Source',\n\t\t\t\ttype: 'string',\n\t\t\t\thelperText: 'Enter an Amber Asset ID (numeric), Amber Optimized URL, or Amber SVG URL.',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'alt',\n\t\t\t\tfriendlyName: 'Alt Text',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefaultValue: '',\n\t\t\t\trequired: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'width',\n\t\t\t\tfriendlyName: 'Width',\n\t\t\t\ttype: 'number',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'height',\n\t\t\t\tfriendlyName: 'Height',\n\t\t\t\ttype: 'number',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'objectFit',\n\t\t\t\tfriendlyName: 'Image Fit',\n\t\t\t\ttype: 'enum',\n\t\t\t\tdefaultValue: ObjectFit.Contain,\n\t\t\t\tenum: Object.values(ObjectFit).map(value => ({\n\t\t\t\t\tlabel: labelByObjectFit[value],\n\t\t\t\t\tvalue,\n\t\t\t\t})),\n\t\t\t\trequired: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'objectPosition',\n\t\t\t\tfriendlyName: 'Image Position',\n\t\t\t\ttype: 'enum',\n\t\t\t\tdefaultValue: ObjectPosition.Center,\n\t\t\t\tenum: Object.values(ObjectPosition).map(value => ({\n\t\t\t\t\tlabel: labelByObjectPosition[value],\n\t\t\t\t\tvalue,\n\t\t\t\t})),\n\t\t\t\trequired: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'highPriority',\n\t\t\t\tfriendlyName: 'High Priority',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tadvanced: true,\n\t\t\t\tdefaultValue: false,\n\t\t\t\trequired: false,\n\t\t\t\thelperText:\n\t\t\t\t\t'Mark this image as high priority compared to other images on the page. This prevents lazy loading of the image and tells the browser to load this image before others on the page.',\n\t\t\t},\n\t\t],\n\t});\n}\n","import { AmberImageImpl } from './amber-image-impl';\nimport { register } from './register';\n\nregister(AmberImageImpl);\n\nexport const AmberImage = AmberImageImpl;\n","import { Builder, withChildren } from '@builder.io/react';\n\nimport { createBuilderEmailCaptureFormComponent } from './builder-email-capture-form';\n\nexport function register(MailingListsApiImpl) {\n\tconst BuilderEmailCaptureForm = createBuilderEmailCaptureFormComponent(MailingListsApiImpl);\n\tregisterEmailCaptureFormWithBuilder(BuilderEmailCaptureForm);\n}\n\nexport function registerEmailCaptureFormWithBuilder(EmailCaptureForm) {\n\tBuilder.registerComponent(withChildren(EmailCaptureForm), {\n\t\tname: 'EmailCaptureForm',\n\t\tfriendlyName: 'Email Capture Form',\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: 'buttonLabel',\n\t\t\t\tfriendlyName: 'Button Label',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefaultValue: 'Submit',\n\t\t\t\thelperText: 'Text displayed on the submit button.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'buttonSuccessLabel',\n\t\t\t\tfriendlyName: 'Button Success Label',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefaultValue: 'Success!',\n\t\t\t\thelperText: 'Text displayed on the submit button after successful submission.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'instructionText',\n\t\t\t\tfriendlyName: 'Instruction Text',\n\t\t\t\ttype: 'string',\n\t\t\t\thelperText: 'Optional instructional copy shown above the input fields.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'finePrintText',\n\t\t\t\tfriendlyName: 'Fine Print Text',\n\t\t\t\ttype: 'string',\n\t\t\t\thelperText: 'Optional fine print shown below the CTA button.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'salesforcePreferences',\n\t\t\t\tfriendlyName: 'Salesforce Preferences',\n\t\t\t\ttype: 'string',\n\t\t\t\trequired: true,\n\t\t\t\tdefaultValue: 'Logos,Logos_English',\n\t\t\t\thelperText: 'Comma-separated list of mailing lists to enroll subscribers in.',\n\t\t\t\tadvanced: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'formName',\n\t\t\t\tfriendlyName: 'Form Name',\n\t\t\t\ttype: 'string',\n\t\t\t\thelperText: 'Optional name of the form to be passed to MailingListsAPI.',\n\t\t\t\tadvanced: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'dataExtensionKey',\n\t\t\t\tfriendlyName: 'Data Extension Key',\n\t\t\t\ttype: 'string',\n\t\t\t\thelperText: 'Optional Data Extension Key to be passed to MailingListsAPI.',\n\t\t\t\tadvanced: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'redirectUrl',\n\t\t\t\tfriendlyName: 'Redirect URL',\n\t\t\t\ttype: 'string',\n\t\t\t\thelperText:\n\t\t\t\t\t'Optional URL to redirect to after form submission. Defaults to the current page URL if not specified.',\n\t\t\t\tadvanced: true,\n\t\t\t},\n\t\t],\n\t\tcanHaveChildren: true,\n\t\tdefaultChildren: [\n\t\t\t{\n\t\t\t\t'@type': '@builder.io/sdk:Element',\n\t\t\t\tlayerName: 'First Name',\n\t\t\t\tcomponent: {\n\t\t\t\t\tname: 'TextInput',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tlabelText: 'First Name',\n\t\t\t\t\t\tname: 'first_name',\n\t\t\t\t\t\tinputType: 'text',\n\t\t\t\t\t\tplaceholderText: 'Enter your first name',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\terrorMessages: [{ match: 'valueMissing', message: 'First name is required' }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t'@type': '@builder.io/sdk:Element',\n\t\t\t\tlayerName: 'Last Name',\n\t\t\t\tcomponent: {\n\t\t\t\t\tname: 'TextInput',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tlabelText: 'Last Name',\n\t\t\t\t\t\tname: 'last_name',\n\t\t\t\t\t\tinputType: 'text',\n\t\t\t\t\t\tplaceholderText: 'Enter your last name',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\terrorMessages: [{ match: 'valueMissing', message: 'Last name is required' }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t'@type': '@builder.io/sdk:Element',\n\t\t\t\tlayerName: 'Email',\n\t\t\t\tcomponent: {\n\t\t\t\t\tname: 'TextInput',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tlabelText: 'Email',\n\t\t\t\t\t\tname: 'email',\n\t\t\t\t\t\tinputType: 'email',\n\t\t\t\t\t\tplaceholderText: 'Enter your email address',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\terrorMessages: [\n\t\t\t\t\t\t\t{ match: 'valueMissing', message: 'Email is required' },\n\t\t\t\t\t\t\t{ match: 'typeMismatch', message: 'Please enter a valid email address' },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t});\n}\n","import React from 'react';\nimport { Builder } from '@builder.io/react';\n\nfunction validateBuilderEmailCaptureFormProps(props) {\n\tconst { salesforcePreferences } = props;\n\n\tif (!salesforcePreferences) {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\tmessage: 'Salesforce Preferences is required',\n\t\t};\n\t}\n\treturn {\n\t\tvalid: true,\n\t\tsalesforcePreferences,\n\t\t...props,\n\t};\n}\n\nexport function createBuilderEmailCaptureFormComponent(MailingListsApiImpl) {\n\tfunction BuilderEmailCaptureForm(props) {\n\t\tconst result = validateBuilderEmailCaptureFormProps(props);\n\n\t\tif (result.valid) {\n\t\t\tconst { valid: _valid, message: _message, ...rest } = result;\n\n\t\t\treturn <MailingListsApiImpl {...rest} />;\n\t\t}\n\n\t\tif (Builder.isEditing) {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tborderRadius: '4px',\n\t\t\t\t\t\tborderLeftWidth: '4px',\n\t\t\t\t\t\tborderColor: '#ed8936',\n\t\t\t\t\t\tbackgroundColor: '#fefcbf',\n\t\t\t\t\t\tpadding: '12px',\n\t\t\t\t\t\tcolor: '#dd6b20',\n\t\t\t\t\t\tfontSize: '14px',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{'Form configuration is not valid: '} {result.message}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\treturn BuilderEmailCaptureForm;\n}\n","import React, { useContext } from 'react';\n\nimport { EmailCaptureForm } from '@faithlife/commerce-components';\nimport { RouteContext } from '../../../../route-context';\n\nexport function MailingListsApiImpl(props) {\n\tconst { routes } = useContext(RouteContext);\n\tconst action = routes?.MailingListsSubscribe;\n\n\tasync function handleSubmit(formData) {\n\t\tconst response = await fetch(action, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t\t},\n\t\t\tbody: new URLSearchParams(formData).toString(),\n\t\t});\n\t\tif (!response.ok) {\n\t\t\tthrow new Error('Something went wrong. Please try again.');\n\t\t}\n\t}\n\n\treturn (\n\t\t<EmailCaptureForm\n\t\t\taction={action}\n\t\t\t{...(!props.redirectUrl && { onSubmit: handleSubmit })}\n\t\t\tsuccessResetMs={3000}\n\t\t\t{...props}\n\t\t>\n\t\t\t{props.children}\n\t\t\t<input type=\"hidden\" name=\"form_name\" value={props.formName} />\n\t\t\t<input type=\"hidden\" name=\"salesforce_preferences\" value={props.salesforcePreferences} />\n\t\t\t<input\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"url\"\n\t\t\t\tvalue={props.redirectUrl ? props.redirectUrl : typeof window !== 'undefined' ? window.location.href : ''}\n\t\t\t/>\n\t\t\t{props.dataExtensionKey && <input type=\"hidden\" name=\"DataExtensionKey\" value={props.dataExtensionKey} />}\n\t\t</EmailCaptureForm>\n\t);\n}\n","import { MailingListsApiImpl } from './mailing-lists-api-impl';\nimport { register } from './register';\n\nregister(MailingListsApiImpl);\n","import styled from 'styled-components';\nimport { LinkButton } from '@faithlife/commerce-components';\n\nexport const Link = styled(LinkButton).attrs({\n\tintent: 'none',\n\tscale: 'sm',\n\ttouchTarget: 'sm',\n})`\n\tdisplay: block;\n\twidth: 104px;\n\tpadding: 8px 0;\n\tflex-shrink: 0;\n\ttext-decoration: none;\n\tcolor: inherit;\n\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t& > span {\n\t\tdisplay: contents;\n\t\tfont: inherit;\n\t\tletter-spacing: inherit;\n\t}\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\twidth: 142px;\n\t}\n`;\n\nexport const Image = styled.img`\n\tdisplay: block;\n\twidth: 100%;\n\theight: auto;\n\tmax-height: 64px;\n\tobject-fit: contain;\n`;\n","import styled from 'styled-components';\n\nexport const Menus = styled.div.attrs({ role: 'list' })`\n\tdisplay: none;\n\tmargin: 0;\n\tpadding: 0;\n\tposition: relative;\n\talign-self: stretch;\n\talign-items: center;\n\tflex-shrink: 0;\n\tflex-grow: 1;\n\tpadding-bottom: ${({ theme }) => theme.space[3]};\n\n\t& .builder-personalization-container:has(> .builder-blocks.no-blocks) {\n\t\tdisplay: none;\n\t}\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tdisplay: flex;\n\t\tgap: 24px;\n\t}\n\n\t@media (min-width: 1280px) {\n\t\tgap: 32px;\n\t}\n`;\n","import React from 'react';\n\nimport { Menus as MobileMenus } from '../mobile-mega-menu/styled';\nimport { Menus } from './styled';\nimport { useMegaMenuRenderMode } from './render-mode-context';\n\nconst MegaMenu = props => {\n\tconst { children } = props;\n\tconst renderMode = useMegaMenuRenderMode();\n\tconst MenuList = renderMode === 'mobile' ? MobileMenus : Menus;\n\treturn <MenuList>{children}</MenuList>;\n};\n\nexport default MegaMenu;\n","export const MENU_VARIANTS = Object.freeze({\n\tbold: 'Bold',\n\tsale: 'Sale',\n});\n","import styled, { css } from 'styled-components';\nimport { Text } from '@faithlife/styled-ui';\nimport ChevronIcon from '../../shared/chevron-icon';\n\nexport const Title = styled(Text).attrs({ as: 'button', textStyle: 'ui.16' })`\n\tfont-family: ${({ theme }) => theme.fonts.normal};\n\tletter-spacing: 0.05px;\n\tline-height: 20px;\n\twidth: 100%;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tposition: sticky;\n\ttop: 0;\n\tpadding: ${({ theme }) => theme.space[5]};\n\tborder: none;\n\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileDropdownBackground || theme.colors.gray4};\n\tfont-size: 18px;\n\tcolor: ${({ theme }) => theme.colors.headerNavMobileText || theme.colors.black};\n\tfont-weight: 400;\n\tz-index: 2;\n\n\t@media (min-width: 768px) {\n\t\tpadding-left: 24px;\n\t\tpadding-right: 24px;\n\t}\n\n\t${({ sale }) =>\n\t\tsale &&\n\t\tcss`\n\t\t\tcolor: #cb3232;\n\t\t\tfont-weight: bold;\n\t\t`}\n\n\t${({ bold }) =>\n\t\tbold &&\n\t\tcss`\n\t\t\tfont-weight: bold;\n\t\t`}\n`;\n\nexport const Chevron = styled(ChevronIcon)`\n\ttransition: transform 0.1s ease-in-out;\n\tdisplay: block;\n\ttransform: rotate(-90deg);\n`;\n\nexport const Sections = styled.div.attrs({ role: 'list' })`\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 1px;\n`;\n\nexport const SubMenuPanel = styled.div`\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tz-index: 21;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileBackground || theme.colors.white};\n\ttransform: translateX(100%);\n\ttransition:\n\t\ttransform 0.3s cubic-bezier(0.4, 0, 0.2, 1),\n\t\tvisibility 0s linear 0.3s;\n\tvisibility: hidden;\n\n\t${({ open }) =>\n\t\topen &&\n\t\tcss`\n\t\t\ttransform: translateX(0);\n\t\t\tvisibility: visible;\n\t\t\ttransition:\n\t\t\t\ttransform 0.3s cubic-bezier(0.4, 0, 0.2, 1),\n\t\t\t\tvisibility 0s linear 0s;\n\t\t`}\n`;\n\nexport const SubMenuPanelHeader = styled.div.attrs({ textStyle: 'ui.16' })`\n\tfont-family: ${({ theme }) => theme.fonts.normal};\n\tletter-spacing: 0.05px;\n\tline-height: 20px;\n\twidth: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${({ theme }) => theme.space[3]};\n\tpadding: ${({ theme }) => theme.space[5]};\n\tborder: none;\n\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileBackground || theme.colors.white};\n\tfont-size: 16px;\n\tcolor: ${({ theme }) => theme.colors.headerNavMobileText || theme.colors.black};\n\tfont-weight: 600;\n\tjustify-content: center;\n\n\t@media (min-width: 768px) {\n\t\tpadding-left: 24px;\n\t\tpadding-right: 24px;\n\t}\n`;\n\nexport const Button = styled.button`\n\tbackground: none;\n\tborder: none;\n\tpadding: 0;\n\tcursor: pointer;\n\tposition: absolute;\n\ttop: ${({ theme }) => theme.space[5]};\n\tleft: ${({ theme }) => theme.space[5]};\n\n\t${Chevron} {\n\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\t\ttransform: rotate(90deg);\n\t\tdisplay: block;\n\t}\n`;\n\nexport const Section = styled.div.attrs({ role: 'listitem' })``;\n","import styled, { css } from 'styled-components';\nimport ChevronIcon from '../../shared/chevron-icon';\nimport { CloseSvg } from '../../svgs';\n\nexport const Chevron = styled(ChevronIcon)`\n\ttransition: transform 0.3s ease-in-out;\n\n\t[stroke]:not([stroke='none']) {\n\t\tstroke: currentColor;\n\t\ttransition: stroke 0.15s ease-in-out;\n\t}\n`;\n\nexport const MenuColumnList = styled.div`\n\tdisplay: none;\n\tposition: absolute;\n\tz-index: 20;\n\tbackground-color: var(--theme-colors-pureWhite);\n\tborder-bottom: 1px solid var(--theme-colors-grey-c200);\n\tbox-shadow: 0px 0px 10px 0px rgba(69, 86, 118, 0.1);\n\ttop: 35px;\n\n\t${({ isMultiColumn }) =>\n\t\tisMultiColumn &&\n\t\tcss`\n\t\t\tleft: -24px;\n\t\t`}\n\n\tgap: 12px;\n\tpadding: 16px 40px 16px 16px;\n\n\t@media (min-width: 1200px) {\n\t\tgap: 32px;\n\t}\n\n\t@media (min-width: 1280px) {\n\t\tgap: 64px;\n\t}\n`;\n\nexport const MenuDropdownListItem = styled.div.attrs({ role: 'listitem' })`\n\tdisplay: grid;\n\talign-self: center;\n\tcursor: pointer;\n\n\t&[data-open='true'] ${Chevron} {\n\t\ttransform: rotate(180deg);\n\t}\n\n\t&[data-open='true'] ${Chevron} [stroke]:not([stroke='none']) {\n\t\tstroke: ${({ theme }) => theme.colors.brandColor};\n\t}\n\n\t&[data-open='true'] ${MenuColumnList} {\n\t\tdisplay: flex;\n\t}\n`;\n\nexport const MenuTitle = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgrid-row: 1;\n\tfont-size: 14px;\n\tfont-weight: 400;\n\tline-height: 20px;\n\tletter-spacing: 0.05px;\n\tcolor: ${({ theme }) => theme.colors.headerText || theme.colors.flGray};\n\ttransition: color 0.15s ease-in-out;\n\tjustify-content: space-between;\n\n\t@media (min-width: 1200px) {\n\t\tfont-size: 16px;\n\t}\n\n\t&:hover {\n\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\t}\n\n\t${({ sale }) =>\n\t\tsale &&\n\t\tcss`\n\t\t\tcolor: #cb3232;\n\t\t\tfont-weight: bold;\n\t\t`}\n\n\t${({ bold }) =>\n\t\tbold &&\n\t\tcss`\n\t\t\tfont-weight: bold;\n\t\t`}\n`;\n\nexport const CloseButton = styled.button`\n\tposition: absolute;\n\ttop: ${({ theme }) => theme.space[3]};\n\tright: ${({ theme }) => theme.space[3]};\n\tpadding: 0;\n\tborder: none;\n\tbackground: none;\n\tcursor: pointer;\n`;\n\nexport const CloseButtonImage = styled(CloseSvg)`\n\tdisplay: block;\n\twidth: 12px;\n\theight: 12px;\n\n\t[stroke]:not([stroke='none']) {\n\t\tstroke: ${({ theme }) => theme.colors.brandColor};\n\t}\n`;\n","import React, { useCallback, useEffect, useRef, useState, Children } from 'react';\nimport { MENU_VARIANTS } from '../../shared/variants';\nimport { useOpenMenu } from '../../universal-header-context';\nimport { useMegaMenuRenderMode } from '../render-mode-context';\nimport {\n\tTitle as MobileTitle,\n\tChevron as MobileChevron,\n\tSections as MobileSections,\n\tSubMenuPanel as MobileSubMenuPanel,\n\tSubMenuPanelHeader as MobileSubMenuPanelHeader,\n\tButton as MobileButton,\n} from '../../mobile-mega-menu/mobile-menu/styled';\nimport { Menu as MobileMenu } from '../../mobile-mega-menu/styled';\nimport { MenuDropdownListItem, MenuTitle, Chevron, MenuColumnList, CloseButton, CloseButtonImage } from './styled';\n\nlet nextMenuId = 0;\n\nexport default function MenuDropdown(props) {\n\tif (useMegaMenuRenderMode() === 'mobile') {\n\t\treturn <MobileMenuDropdown {...props} />;\n\t}\n\n\treturn <DesktopMenuDropdown {...props} />;\n}\n\nfunction MobileMenuDropdown({ title, stableId, variant, children }) {\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\treturn (\n\t\t<MobileMenu id={`mobileMenu-${stableId}`}>\n\t\t\t<MobileTitle\n\t\t\t\tbold={variant === MENU_VARIANTS.bold}\n\t\t\t\tsale={variant === MENU_VARIANTS.sale}\n\t\t\t\tonClick={() => setIsOpen(currentValue => !currentValue)}\n\t\t\t>\n\t\t\t\t{title}\n\t\t\t\t<MobileChevron alt=\"Open\" />\n\t\t\t</MobileTitle>\n\t\t\t<MobileSubMenuPanel open={isOpen}>\n\t\t\t\t<MobileButton onClick={() => setIsOpen(false)}>\n\t\t\t\t\t<MobileChevron alt=\"Open\" />\n\t\t\t\t</MobileButton>\n\t\t\t\t<MobileSubMenuPanelHeader>{title}</MobileSubMenuPanelHeader>\n\t\t\t\t<MobileSections>{children}</MobileSections>\n\t\t\t</MobileSubMenuPanel>\n\t\t</MobileMenu>\n\t);\n}\n\nfunction DesktopMenuDropdown(props) {\n\tconst menuContainerRef = useRef(null);\n\n\tconst menuIdRef = useRef(null);\n\tif (menuIdRef.current === null) {\n\t\tmenuIdRef.current = `menu-id-${++nextMenuId}`;\n\t}\n\n\tconst menuId = menuIdRef.current;\n\tconst [isOpen, setIsOpen] = useOpenMenu(menuId);\n\n\tconst { title, stableId, variant, children } = props;\n\n\tconst openMenu = useCallback(() => {\n\t\tif (!isOpen) {\n\t\t\tsetIsOpen(true);\n\t\t}\n\t}, [isOpen, setIsOpen]);\n\n\tconst closeMenu = useCallback(() => {\n\t\tif (isOpen) {\n\t\t\tsetIsOpen(false);\n\t\t}\n\t}, [isOpen, setIsOpen]);\n\n\tconst handleClick = useCallback(() => {\n\t\tif (isOpen) {\n\t\t\tcloseMenu();\n\t\t} else {\n\t\t\topenMenu();\n\t\t}\n\t}, [openMenu, closeMenu, isOpen]);\n\n\tuseEffect(() => {\n\t\tif (!isOpen) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleClickOutside = event => {\n\t\t\t// The header renders inside a shadow root (see universal-header-widget/index.js), so\n\t\t\t// event.target is retargeted to the shadow host for listeners attached outside the\n\t\t\t// shadow tree. composedPath() gives the true originating element so clicks inside the\n\t\t\t// menu (e.g. on a link) aren't misidentified as \"outside\" clicks that close the menu\n\t\t\t// before the browser can navigate.\n\t\t\tconst actualTarget = event.composedPath()[0];\n\t\t\tif (menuContainerRef.current && !menuContainerRef.current.contains(actualTarget)) {\n\t\t\t\tcloseMenu();\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside);\n\t}, [closeMenu, isOpen]);\n\n\treturn (\n\t\t<MenuDropdownListItem id={`menu-${stableId}`} data-open={isOpen} ref={menuContainerRef}>\n\t\t\t<MenuTitle bold={variant === MENU_VARIANTS.bold} sale={variant === MENU_VARIANTS.sale} onClick={handleClick}>\n\t\t\t\t{title} <Chevron alt=\"Open Indicator\" />\n\t\t\t</MenuTitle>\n\t\t\t{children && (\n\t\t\t\t<MenuColumnList isMultiColumn={Children.count(children) > 1}>\n\t\t\t\t\t<CloseButton aria-label=\"Close\" onClick={closeMenu}>\n\t\t\t\t\t\t<CloseButtonImage />\n\t\t\t\t\t</CloseButton>\n\t\t\t\t\t{children}\n\t\t\t\t</MenuColumnList>\n\t\t\t)}\n\t\t</MenuDropdownListItem>\n\t);\n}\n","import styled from 'styled-components';\n\nexport const MenuSectionList = styled.div.attrs({ role: 'list' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 32px;\n\tpadding: 0;\n\tfont-size: 16px;\n`;\n","import styled, { css } from 'styled-components';\nimport { LinkButton } from '@faithlife/commerce-components';\nimport { Text } from '@faithlife/styled-ui';\nimport ChevronIcon from '../../shared/chevron-icon';\n\nexport const HeaderButton = styled(Text).attrs({ as: 'button', textStyle: 'ui.16' })`\n\tfont-family: ${({ theme }) => theme.fonts.normal};\n\tletter-spacing: 0.05px;\n\tline-height: 20px;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\twidth: 100%;\n\tposition: sticky;\n\tcolor: ${({ theme }) => theme.colors.headerNavMobileText || theme.colors.black};\n\ttop: 36px;\n\tpadding: ${({ theme }) => `${theme.space[5]}`};\n\tborder: none;\n\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileDropdownBackground || theme.colors.gray4};\n\tfont-size: 16px;\n\tfont-weight: 400;\n\n\t@media (min-width: 768px) {\n\t\tpadding-left: 24px;\n\t\tpadding-right: 24px;\n\t}\n`;\n\nexport const Chevron = styled(ChevronIcon)`\n\ttransition: transform 0.1s ease-in-out;\n\ttransform: rotate(-90deg);\n\tdisplay: block;\n`;\n\nexport const SubMenuPanel = styled.div`\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tz-index: 22;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileBackground || theme.colors.white};\n\ttransform: translateX(100%);\n\ttransition:\n\t\ttransform 0.3s cubic-bezier(0.4, 0, 0.2, 1),\n\t\tvisibility 0s linear 0.3s;\n\tvisibility: hidden;\n\n\t${({ open }) =>\n\t\topen &&\n\t\tcss`\n\t\t\ttransform: translateX(0);\n\t\t\tvisibility: visible;\n\t\t\ttransition:\n\t\t\t\ttransform 0.3s cubic-bezier(0.4, 0, 0.2, 1),\n\t\t\t\tvisibility 0s linear 0s;\n\t\t`}\n`;\n\nexport const SubMenuPanelHeader = styled.div.attrs({ textStyle: 'ui.16' })`\n\tfont-family: ${({ theme }) => theme.fonts.normal};\n\tletter-spacing: 0.05px;\n\tline-height: 20px;\n\twidth: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${({ theme }) => theme.space[3]};\n\tpadding: ${({ theme }) => theme.space[4]};\n\tborder: none;\n\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileBackground || theme.colors.white};\n\tfont-size: 16px;\n\tcolor: ${({ theme }) => theme.colors.headerNavMobileText || theme.colors.black};\n\tfont-weight: 600;\n\tjustify-content: center;\n\n\t@media (min-width: 768px) {\n\t\tpadding-left: 24px;\n\t\tpadding-right: 24px;\n\t}\n`;\n\nexport const Button = styled.button`\n\tbackground: none;\n\tborder: none;\n\tpadding: 0;\n\tcursor: pointer;\n\tposition: absolute;\n\ttop: ${({ theme }) => theme.space[4]};\n\tleft: ${({ theme }) => theme.space[4]};\n\n\t${Chevron} {\n\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\t\ttransform: rotate(90deg);\n\t\tdisplay: block;\n\t}\n`;\n\nexport const Links = styled.div.attrs({ role: 'list' })`\n\tpadding: 0;\n\tborder-top: 1px solid ${({ theme }) => theme.colors.gray4};\n`;\n\nexport const LinkItem = styled.div.attrs({ role: 'listitem' })``;\n\nexport const Link = styled(LinkButton).attrs({\n\tintent: 'none',\n\tscale: 'sm',\n\ttouchTarget: 'sm',\n})`\n\tdisplay: block;\n\tpadding: ${({ theme }) => theme.space[5]} ${({ theme }) => theme.space[4]};\n\tfont-size: 16px;\n\tfont-weight: 400;\n\tletter-spacing: 0.05px;\n\tline-height: 20px;\n\tcolor: ${({ theme }) => theme.colors.headerText || theme.colors.black};\n\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t& > span {\n\t\tdisplay: contents;\n\t\tfont: inherit;\n\t\tletter-spacing: inherit;\n\t}\n\n\t@media (min-width: 768px) {\n\t\tpadding-left: 24px;\n\t\tpadding-right: 24px;\n\t}\n`;\n","import styled from 'styled-components';\n\nexport const MenuSectionListItem = styled.div.attrs({ role: 'listitem' })`\n\twidth: auto;\n\tmin-width: 130px;\n\tmax-width: 250px;\n`;\n\nexport const MenuSectionTitle = styled.span`\n\tdisplay: flex;\n\talign-items: center;\n\tmargin-bottom: 16px;\n\tfont-size: 16px;\n\tfont-weight: 600;\n\tcursor: default;\n\tcolor: ${({ theme }) => theme.colors.headerText || theme.colors.black};\n`;\n\nexport const MenuSectionLinksList = styled.div.attrs({ role: 'list' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\trow-gap: 16px;\n\tcolumn-gap: 0;\n\tpadding: 0;\n`;\n","import React, { useCallback, useState } from 'react';\nimport {\n\tHeaderButton as MobileHeaderButton,\n\tChevron as MobileChevron,\n\tSubMenuPanel as MobileSubMenuPanel,\n\tSubMenuPanelHeader as MobileSubMenuPanelHeader,\n\tButton as MobileButton,\n\tLinks as MobileLinks,\n} from '../../mobile-mega-menu/mobile-menu-section/styled';\nimport { Menu as MobileMenu } from '../../mobile-mega-menu/styled';\nimport { MegaMenuSectionProvider, useMegaMenuRenderMode } from '../render-mode-context';\nimport { MenuSectionListItem, MenuSectionTitle, MenuSectionLinksList } from './styled';\n\nexport default function MenuSection(props) {\n\tif (useMegaMenuRenderMode() === 'mobile') {\n\t\treturn <MobileMenuSection {...props} />;\n\t}\n\n\treturn <DesktopMenuSection {...props} />;\n}\n\nfunction MobileMenuSection(props) {\n\tconst { stableId, title, children } = props;\n\tconst [isSectionOpen, setIsSectionOpen] = useState(false);\n\tconst handleSectionHeaderClick = useCallback(() => {\n\t\tsetIsSectionOpen(currentValue => !currentValue);\n\t}, []);\n\n\tconst links = <MobileLinks>{children}</MobileLinks>;\n\n\treturn (\n\t\t<MegaMenuSectionProvider>\n\t\t\t<MobileMenu id={`mobileMenuSection-${stableId}`}>\n\t\t\t\t{title ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<MobileHeaderButton onClick={handleSectionHeaderClick}>\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t<MobileChevron alt=\"Open\" open={isSectionOpen} />\n\t\t\t\t\t\t</MobileHeaderButton>\n\t\t\t\t\t\t<MobileSubMenuPanel open={isSectionOpen}>\n\t\t\t\t\t\t\t<MobileButton onClick={handleSectionHeaderClick}>\n\t\t\t\t\t\t\t\t<MobileChevron alt=\"Back\" />\n\t\t\t\t\t\t\t</MobileButton>\n\t\t\t\t\t\t\t<MobileSubMenuPanelHeader>{title}</MobileSubMenuPanelHeader>\n\t\t\t\t\t\t\t{links}\n\t\t\t\t\t\t</MobileSubMenuPanel>\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tlinks\n\t\t\t\t)}\n\t\t\t</MobileMenu>\n\t\t</MegaMenuSectionProvider>\n\t);\n}\n\nfunction DesktopMenuSection({ stableId, title, children }) {\n\treturn (\n\t\t<MenuSectionListItem id={`menuSection-${stableId}`}>\n\t\t\t{title && <MenuSectionTitle>{title}</MenuSectionTitle>}\n\t\t\t<MenuSectionLinksList>{children}</MenuSectionLinksList>\n\t\t</MenuSectionListItem>\n\t);\n}\n","import styled, { css } from 'styled-components';\nimport { LinkButton } from '@faithlife/commerce-components';\n\nexport const MenuLinkListItem = styled.div.attrs({ role: 'listitem' })`\n\tdisplay: flex;\n\tcursor: pointer;\n`;\n\nexport const MenuLink = styled(LinkButton).attrs({\n\tintent: 'none',\n\tscale: 'sm',\n\ttouchTarget: 'sm',\n})`\n\tcolor: ${({ theme }) => theme.colors.headerText || theme.colors.flGray};\n\ttransition: color 0.15s ease-in-out;\n\n\tfont-size: 14px;\n\tfont-weight: 400;\n\tline-height: 20px;\n\tletter-spacing: 0.05px;\n\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t& > span {\n\t\tdisplay: contents;\n\t\tfont: inherit;\n\t\tletter-spacing: inherit;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\tfont-size: 16px;\n\t}\n\n\t&:hover:not(:active) {\n\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\t\topacity: 1;\n\t}\n\n\t&:focus-visible {\n\t\toutline: none;\n\t\tbox-shadow: 0 0 0 4px ${({ theme }) => `${theme.colors.brandColor}33`};\n\t}\n\n\t${({ $sale }) =>\n\t\t$sale &&\n\t\tcss`\n\t\t\tcolor: #cb3232;\n\t\t\tfont-weight: bold;\n\t\t`}\n\n\t${({ $bold }) =>\n\t\t$bold &&\n\t\tcss`\n\t\t\tfont-weight: bold;\n\t\t`}\n`;\n","import React from 'react';\nimport { MENU_VARIANTS } from '../../shared/variants';\nimport { useUniversalHeaderContext } from '../../universal-header-context';\nimport { Menu as MobileMenu, MenuLink as MobileMenuLink } from '../../mobile-mega-menu/styled';\nimport { LinkItem as MobileLinkItem, Link as MobileLink } from '../../mobile-mega-menu/mobile-menu-section/styled';\nimport { useIsInMegaMenuSection, useMegaMenuRenderMode } from '../render-mode-context';\nimport { MenuLinkListItem, MenuLink } from './styled';\n\nexport default function MenuItem(props) {\n\tif (useMegaMenuRenderMode() === 'mobile') {\n\t\treturn <MobileMenuItem {...props} />;\n\t}\n\n\treturn <DesktopMenuItem {...props} />;\n}\n\nfunction MobileMenuItem(props) {\n\tconst { stableId, url, variant, openInNewTab, text } = props;\n\tconst { resolveUri } = useUniversalHeaderContext();\n\tconst isInSection = useIsInMegaMenuSection();\n\tconst resolvedUrl = resolveUri(url);\n\n\tif (isInSection) {\n\t\treturn (\n\t\t\t<MobileLinkItem id={`mobileMenuLink-${stableId}`}>\n\t\t\t\t<MobileLink href={resolvedUrl} target={openInNewTab ? '_blank' : null}>\n\t\t\t\t\t{text}\n\t\t\t\t</MobileLink>\n\t\t\t</MobileLinkItem>\n\t\t);\n\t}\n\n\treturn (\n\t\t<MobileMenu id={`mobileMenu-${stableId}`}>\n\t\t\t<MobileMenuLink\n\t\t\t\thref={resolvedUrl}\n\t\t\t\t$bold={variant === MENU_VARIANTS.bold}\n\t\t\t\t$sale={variant === MENU_VARIANTS.sale}\n\t\t\t\ttarget={openInNewTab ? '_blank' : null}\n\t\t\t>\n\t\t\t\t{text}\n\t\t\t</MobileMenuLink>\n\t\t</MobileMenu>\n\t);\n}\n\nfunction DesktopMenuItem({ stableId, url, variant, openInNewTab, text }) {\n\tconst { resolveUri } = useUniversalHeaderContext();\n\tconst resolvedUrl = resolveUri(url);\n\n\treturn (\n\t\t<MenuLinkListItem id={`menu-${stableId}`}>\n\t\t\t<MenuLink\n\t\t\t\thref={resolvedUrl}\n\t\t\t\t$bold={variant === MENU_VARIANTS.bold}\n\t\t\t\t$sale={variant === MENU_VARIANTS.sale}\n\t\t\t\ttarget={openInNewTab ? '_blank' : null}\n\t\t\t>\n\t\t\t\t{text}\n\t\t\t</MenuLink>\n\t\t</MenuLinkListItem>\n\t);\n}\n","// lite/builds/browser.ts\nimport {\n  createBrowserLocalStorageCache,\n  createFallbackableCache,\n  createMemoryCache,\n  createNullLogger\n} from \"@algolia/client-common\";\nimport { createXhrRequester } from \"@algolia/requester-browser-xhr\";\n\n// lite/src/liteClient.ts\nimport { createAuth, createTransporter, getAlgoliaAgent, shuffle } from \"@algolia/client-common\";\nvar apiClientVersion = \"5.50.1\";\nfunction getDefaultHosts(appId) {\n  return [\n    {\n      url: `${appId}-dsn.algolia.net`,\n      accept: \"read\",\n      protocol: \"https\"\n    },\n    {\n      url: `${appId}.algolia.net`,\n      accept: \"write\",\n      protocol: \"https\"\n    }\n  ].concat(\n    shuffle([\n      {\n        url: `${appId}-1.algolianet.com`,\n        accept: \"readWrite\",\n        protocol: \"https\"\n      },\n      {\n        url: `${appId}-2.algolianet.com`,\n        accept: \"readWrite\",\n        protocol: \"https\"\n      },\n      {\n        url: `${appId}-3.algolianet.com`,\n        accept: \"readWrite\",\n        protocol: \"https\"\n      }\n    ])\n  );\n}\nfunction createLiteClient({\n  appId: appIdOption,\n  apiKey: apiKeyOption,\n  authMode,\n  algoliaAgents,\n  ...options\n}) {\n  const auth = createAuth(appIdOption, apiKeyOption, authMode);\n  const transporter = createTransporter({\n    hosts: getDefaultHosts(appIdOption),\n    ...options,\n    algoliaAgent: getAlgoliaAgent({\n      algoliaAgents,\n      client: \"Lite\",\n      version: apiClientVersion\n    }),\n    baseHeaders: {\n      \"content-type\": \"text/plain\",\n      ...auth.headers(),\n      ...options.baseHeaders\n    },\n    baseQueryParameters: {\n      ...auth.queryParameters(),\n      ...options.baseQueryParameters\n    }\n  });\n  return {\n    transporter,\n    /**\n     * The `appId` currently in use.\n     */\n    appId: appIdOption,\n    /**\n     * The `apiKey` currently in use.\n     */\n    apiKey: apiKeyOption,\n    /**\n     * Clears the cache of the transporter for the `requestsCache` and `responsesCache` properties.\n     */\n    clearCache() {\n      return Promise.all([transporter.requestsCache.clear(), transporter.responsesCache.clear()]).then(() => void 0);\n    },\n    /**\n     * Get the value of the `algoliaAgent`, used by our libraries internally and telemetry system.\n     */\n    get _ua() {\n      return transporter.algoliaAgent.value;\n    },\n    /**\n     * Adds a `segment` to the `x-algolia-agent` sent with every requests.\n     *\n     * @param segment - The algolia agent (user-agent) segment to add.\n     * @param version - The version of the agent.\n     */\n    addAlgoliaAgent(segment, version) {\n      transporter.algoliaAgent.add({ segment, version });\n    },\n    /**\n     * Helper method to switch the API key used to authenticate the requests.\n     *\n     * @param params - Method params.\n     * @param params.apiKey - The new API Key to use.\n     */\n    setClientApiKey({ apiKey }) {\n      if (!authMode || authMode === \"WithinHeaders\") {\n        transporter.baseHeaders[\"x-algolia-api-key\"] = apiKey;\n      } else {\n        transporter.baseQueryParameters[\"x-algolia-api-key\"] = apiKey;\n      }\n    },\n    /**\n     * Helper: calls the `search` method but with certainty that we will only request Algolia records (hits) and not facets.\n     * Disclaimer: We don't assert that the parameters you pass to this method only contains `hits` requests to prevent impacting search performances, this helper is purely for typing purposes.\n     *\n     * @summary Search multiple indices for `hits`.\n     * @param searchMethodParams - Query requests and strategies. Results will be received in the same order as the queries.\n     * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n     */\n    searchForHits(searchMethodParams, requestOptions) {\n      return this.search(searchMethodParams, requestOptions);\n    },\n    /**\n     * Helper: calls the `search` method but with certainty that we will only request Algolia facets and not records (hits).\n     * Disclaimer: We don't assert that the parameters you pass to this method only contains `facets` requests to prevent impacting search performances, this helper is purely for typing purposes.\n     *\n     * @summary Search multiple indices for `facets`.\n     * @param searchMethodParams - Query requests and strategies. Results will be received in the same order as the queries.\n     * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n     */\n    searchForFacets(searchMethodParams, requestOptions) {\n      return this.search(searchMethodParams, requestOptions);\n    },\n    /**\n     * This method lets you send requests to the Algolia REST API.\n     * @param customPost - The customPost object.\n     * @param customPost.path - Path of the endpoint, for example `1/newFeature`.\n     * @param customPost.parameters - Query parameters to apply to the current query.\n     * @param customPost.body - Parameters to send with the custom request.\n     * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n     */\n    customPost({ path, parameters, body }, requestOptions) {\n      if (!path) {\n        throw new Error(\"Parameter `path` is required when calling `customPost`.\");\n      }\n      const requestPath = \"/{path}\".replace(\"{path}\", path);\n      const headers = {};\n      const queryParameters = parameters ? parameters : {};\n      const request = {\n        method: \"POST\",\n        path: requestPath,\n        queryParameters,\n        headers,\n        data: body ? body : {}\n      };\n      return transporter.request(request, requestOptions);\n    },\n    /**\n     * Retrieves recommendations from selected AI models.\n     *\n     * Required API Key ACLs:\n     *  - search\n     * @param getRecommendationsParams - The getRecommendationsParams object.\n     * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n     */\n    getRecommendations(getRecommendationsParams, requestOptions) {\n      if (getRecommendationsParams && Array.isArray(getRecommendationsParams)) {\n        const newSignatureRequest = {\n          requests: getRecommendationsParams\n        };\n        getRecommendationsParams = newSignatureRequest;\n      }\n      if (!getRecommendationsParams) {\n        throw new Error(\"Parameter `getRecommendationsParams` is required when calling `getRecommendations`.\");\n      }\n      if (!getRecommendationsParams.requests) {\n        throw new Error(\"Parameter `getRecommendationsParams.requests` is required when calling `getRecommendations`.\");\n      }\n      const requestPath = \"/1/indexes/*/recommendations\";\n      const headers = {};\n      const queryParameters = {};\n      const request = {\n        method: \"POST\",\n        path: requestPath,\n        queryParameters,\n        headers,\n        data: getRecommendationsParams,\n        useReadTransporter: true,\n        cacheable: true\n      };\n      return transporter.request(request, requestOptions);\n    },\n    /**\n     * Sends multiple search requests to one or more indices.  This can be useful in these cases:  - Different indices for different purposes, such as, one index for products, another one for marketing content. - Multiple searches to the same index—for example, with different filters.  Use the helper `searchForHits` or `searchForFacets` to get the results in a more convenient format, if you already know the return type you want.\n     *\n     * Required API Key ACLs:\n     *  - search\n     * @param searchMethodParams - Muli-search request body. Results are returned in the same order as the requests.\n     * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n     */\n    search(searchMethodParams, requestOptions) {\n      if (searchMethodParams && Array.isArray(searchMethodParams)) {\n        const newSignatureRequest = {\n          requests: searchMethodParams.map(({ params, ...legacyRequest }) => {\n            if (legacyRequest.type === \"facet\") {\n              return {\n                ...legacyRequest,\n                ...params,\n                type: \"facet\"\n              };\n            }\n            return {\n              ...legacyRequest,\n              ...params,\n              facet: void 0,\n              maxFacetHits: void 0,\n              facetQuery: void 0\n            };\n          })\n        };\n        searchMethodParams = newSignatureRequest;\n      }\n      if (!searchMethodParams) {\n        throw new Error(\"Parameter `searchMethodParams` is required when calling `search`.\");\n      }\n      if (!searchMethodParams.requests) {\n        throw new Error(\"Parameter `searchMethodParams.requests` is required when calling `search`.\");\n      }\n      const requestPath = \"/1/indexes/*/queries\";\n      const headers = {};\n      const queryParameters = {};\n      const request = {\n        method: \"POST\",\n        path: requestPath,\n        queryParameters,\n        headers,\n        data: searchMethodParams,\n        useReadTransporter: true,\n        cacheable: true\n      };\n      return transporter.request(request, requestOptions);\n    }\n  };\n}\n\n// lite/builds/browser.ts\nfunction liteClient(appId, apiKey, options) {\n  if (!appId || typeof appId !== \"string\") {\n    throw new Error(\"`appId` is missing.\");\n  }\n  if (!apiKey || typeof apiKey !== \"string\") {\n    throw new Error(\"`apiKey` is missing.\");\n  }\n  const { compression: _compression, ...browserOptions } = options || {};\n  return createLiteClient({\n    appId,\n    apiKey,\n    timeouts: {\n      connect: 1e3,\n      read: 2e3,\n      write: 3e4\n    },\n    logger: createNullLogger(),\n    requester: createXhrRequester(),\n    algoliaAgents: [{ segment: \"Browser\" }],\n    authMode: \"WithinQueryParameters\",\n    responsesCache: createMemoryCache(),\n    requestsCache: createMemoryCache({ serializable: false }),\n    hostsCache: createFallbackableCache({\n      caches: [createBrowserLocalStorageCache({ key: `${apiClientVersion}-${appId}` }), createMemoryCache()]\n    }),\n    ...browserOptions\n  });\n}\nexport {\n  apiClientVersion,\n  liteClient\n};\n//# sourceMappingURL=browser.js.map","interface AlgoliaSearchRequest {\n\tindexName?: string;\n\tparams?: { query?: string; [key: string]: unknown };\n\tquery?: string;\n}\n\ninterface AlgoliaSearchClientLike {\n\tsearch: (requests: readonly AlgoliaSearchRequest[], ...rest: unknown[]) => Promise<unknown>;\n}\n\nconst getQuery = (request: AlgoliaSearchRequest) => request?.params?.query ?? request?.query ?? '';\n\nconst makeEmptyResult = (request: AlgoliaSearchRequest) => ({\n\thits: [],\n\tnbHits: 0,\n\tnbPages: 0,\n\tpage: 0,\n\tprocessingTimeMS: 0,\n\thitsPerPage: 0,\n\texhaustiveNbHits: true,\n\tfacets: {},\n\tquery: '',\n\tparams: '',\n\tindex: request?.indexName ?? '',\n});\n\n/**\n * InstantSearch issues a search as soon as it mounts, so a search box that only renders results for a\n * non-empty query still bills an Algolia search operation on every page view. This wrapper answers those\n * empty-query searches locally instead of sending them to Algolia.\n */\nexport function skipEmptyQuerySearchClient<TClient extends AlgoliaSearchClientLike>(client: TClient): TClient {\n\treturn {\n\t\t...client,\n\t\tsearch(requests: readonly AlgoliaSearchRequest[], ...rest: unknown[]) {\n\t\t\tif (!requests?.length || requests.every(request => !getQuery(request))) {\n\t\t\t\treturn Promise.resolve({ results: requests.map(makeEmptyResult) });\n\t\t\t}\n\n\t\t\treturn client.search(requests, ...rest);\n\t\t},\n\t};\n}\n","import styled, { css, keyframes } from 'styled-components';\nimport { mobileCutoffWidth } from '../../../util/mobile-utility';\n\n// ---------------------------------------------------------------------------\n// Keyframes\n// ---------------------------------------------------------------------------\nconst fadeIn = keyframes`\n\tfrom { opacity: 0; }\n\tto { opacity: 1; }\n`;\n\nconst spin = keyframes`\n\tfrom { transform: rotate(0deg); }\n\tto { transform: rotate(360deg); }\n`;\n\n// ---------------------------------------------------------------------------\n// Breakpoints\n// ---------------------------------------------------------------------------\nconst tabletBreakpoint = `${mobileCutoffWidth}px`;\n\n// ---------------------------------------------------------------------------\n// Layout containers\n// ---------------------------------------------------------------------------\n\n/**\n * Tailwind: cn('min-h-10 md:py-3', !openMobileSearch && 'relative')\n */\nexport const SearchBarWrapper = styled.div`\n\tposition: ${props => (props.$openMobileSearch ? 'static' : 'relative')};\n\tflex-grow: 1;\n\n\t@media (min-width: ${tabletBreakpoint}) {\n\t\tpadding: 12px 0;\n\t}\n`;\n\n/**\n * Tailwind: cn(\n *   'header-search-button absolute md:hidden',\n *   !openMobileSearch && 'left-[calc(100%-16px)]',\n *   openMobileSearch && 'left-[calc(100%-161px)] md:left-[calc(100%-169px)]',\n * )\n * style={buttonPosition}  (top/bottom set dynamically via JS)\n */\nexport const MobileSearchButton = styled.button`\n\tdisplay: flex;\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tflex-direction: column;\n\n\t@media (min-width: ${tabletBreakpoint}) {\n\t\tdisplay: none;\n\t}\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tpadding: 8px;\n\t}\n`;\n\n/**\n * Tailwind: cn(\n *   'search-dropdown flex-col bg-white md:flex md:shadow-none',\n *   'absolute left-0 right-0 z-20 p-2 md:relative md:!top-0 md:left-0 md:right-0 md:p-0',\n *   (openMobileSearch || hasItems) ? 'flex' : 'hidden',\n *   hasItems && 'h-auto md:h-3/4',\n * )\n * style={{ top: openMobileSearch ? `${headerHeight}px` : 'top-0' }}\n */\nexport const SearchDropdown = styled.div`\n\tflex-direction: column;\n\tbackground-color: white;\n\tposition: absolute;\n\tleft: 0;\n\tright: 0;\n\tz-index: 20;\n\tpadding: 8px;\n\tdisplay: ${props => (props.$visible ? 'flex' : 'none')};\n\n\t${props =>\n\t\tprops.$hasItems &&\n\t\tcss`\n\t\t\theight: auto;\n\t\t\t@media (min-width: ${tabletBreakpoint}) {\n\t\t\t\theight: 75%;\n\t\t\t}\n\t\t`}\n\n\t@media (min-width: ${tabletBreakpoint}) {\n\t\tdisplay: flex;\n\t\tposition: relative;\n\t\ttop: 0 !important;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tpadding: 0;\n\t\tbox-shadow: none;\n\t}\n`;\n\n// ---------------------------------------------------------------------------\n// Form elements\n// ---------------------------------------------------------------------------\n\n/**\n * Tailwind: 'flex w-[calc(100%-20px)] md:w-full'\n * (Replaces <Form> from @radix-ui/react-form with className=\"flex w-[calc(100%-20px)] md:w-full\")\n */\nexport const SearchForm = styled.form`\n\tdisplay: flex;\n\twidth: calc(100% - 20px);\n\n\t@media (min-width: ${tabletBreakpoint}) {\n\t\twidth: 100%;\n\t}\n`;\n\n/**\n * Tailwind: 'w-full'\n * (Replaces <Field className=\"w-full\" name=\"term\"> from @radix-ui/react-form)\n */\nexport const FieldWrapper = styled.div`\n\twidth: 100%;\n`;\n\n/**\n * Tailwind: 'relative'\n * (Replaces the inner <div className=\"relative\"> generated by the inlined Input component)\n */\nexport const InputWrapper = styled.div`\n\tposition: relative;\n`;\n\n/**\n * Tailwind: 'peer appearance-none border border-grey-400 px-2 py-[9px] text-base leading-5\n *            hover:border-primary-200 hover:bg-primary-100\n *            focus:border-primary-200 focus:bg-primary-100'\n * Note: the inlined Input component also wraps this in inputVariants() from cva.\n * placeholder: 'placeholder:text-gray-500' (from inputVariants base)\n */\nexport const SearchInput = styled.input`\n\twidth: 100%;\n\tappearance: none;\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\tborder: 1px solid #a3a3a3;\n\tpadding: 9px 8px;\n\tfont-size: 16px;\n\tline-height: 20px;\n\tborder-radius: 3px;\n\tbackground-color: white;\n\toutline: none;\n\n\t&:hover {\n\t\tborder-color: rgb(39, 142, 212);\n\t\tbackground-color: #eff6ff;\n\t}\n\n\t&:focus {\n\t\tborder-color: rgb(39, 142, 212);\n\t\tbackground-color: #eff6ff;\n\t\toutline: none;\n\t}\n\n\t&::placeholder {\n\t\tcolor: #737373;\n\t}\n\n\t&::-webkit-search-decoration,\n\t&::-webkit-search-cancel-button,\n\t&::-webkit-search-results-button,\n\t&::-webkit-search-results-decoration {\n\t\t-webkit-appearance: none;\n\t}\n`;\n\n// ---------------------------------------------------------------------------\n// Buttons inside the input row\n// ---------------------------------------------------------------------------\n\n/**\n * Tailwind: The submit <button> has no explicit className; its child <Magnify> icon has:\n *   'absolute right-2 top-1/2 w-5 -translate-y-1/2'\n * This wrapper positions the button to match that icon placement.\n */\nexport const SubmitButton = styled.button`\n\tposition: absolute;\n\tright: 8px;\n\ttop: 50%;\n\ttransform: translateY(-50%);\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tpadding: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 20px;\n`;\n\n/**\n * Tailwind: 'absolute right-8 top-1/2 w-auto -translate-y-1/2 border-0 bg-transparent p-1.5\n *            text-base font-normal leading-5 text-black underline\n *            hover:bg-transparent hover:text-primary\n *            focus:text-primary\n *            peer-hover:text-primary peer-focus:text-primary'\n */\nexport const ClearButton = styled.button`\n\tposition: absolute;\n\tright: 32px;\n\ttop: 50%;\n\ttransform: translateY(-50%);\n\twidth: auto;\n\tborder: 0;\n\tbackground: transparent;\n\tpadding: 6px;\n\tfont-size: 16px;\n\tfont-weight: 400;\n\tline-height: 20px;\n\tcolor: black;\n\ttext-decoration: underline;\n\tcursor: pointer;\n\n\t&:hover {\n\t\tbackground: transparent;\n\t\tcolor: rgb(39, 142, 212);\n\t}\n\n\t&:focus {\n\t\tcolor: rgb(39, 142, 212);\n\t}\n`;\n\n/**\n * Tailwind: 'absolute left-auto right-0 top-1/2 h-full -translate-y-1/2 md:hidden'\n * Child <Close> icon: className=\"h-3 w-3\" fillColor=\"fill-primary-400\"\n */\nexport const CloseButton = styled.button`\n\tposition: absolute;\n\tleft: auto;\n\tright: 0;\n\ttop: 50%;\n\theight: 100%;\n\ttransform: translateY(-50%);\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tpadding: 4px;\n\n\t@media (min-width: ${tabletBreakpoint}) {\n\t\tdisplay: none;\n\t}\n`;\n\n// ---------------------------------------------------------------------------\n// Search hits dropdown\n// ---------------------------------------------------------------------------\n\n/**\n * Tailwind: 'absolute left-0 top-full z-50 w-full animate-fadeIn rounded-b-md bg-white py-2\n *            shadow-[0px_8px_16px_0px_rgba(0,0,0,0.2)]'\n */\nexport const HitsList = styled.ul`\n\tposition: absolute;\n\tleft: 0;\n\ttop: 100%;\n\tz-index: 50;\n\twidth: 100%;\n\tanimation: ${fadeIn} 0.15s ease-in;\n\tborder-radius: 0 0 6px 6px;\n\tbackground-color: white;\n\tpadding: 8px 0;\n\tmargin: 0;\n\tlist-style: none;\n\tbox-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);\n`;\n\n/**\n * Tailwind: cn('bg-white px-2 py-1 transition-colors hover:bg-grey-200', isActive && 'bg-grey-200')\n * Note: grey-200 ≈ #e5e7eb\n */\nexport const HitItem = styled.li`\n\tbackground-color: ${props => (props.$isActive ? '#e5e7eb' : 'white')};\n\tpadding: 4px 8px;\n\ttransition: background-color 0.15s;\n\n\t&:hover {\n\t\tbackground-color: #e5e7eb;\n\t}\n\n\ta,\n\ta:link,\n\ta:visited,\n\ta:active {\n\t\ttext-decoration: none !important;\n\t\tcolor: #111827 !important;\n\t\tdisplay: block;\n\t\toutline: none;\n\t\tfont-size: 14px;\n\t\tline-height: 1.5;\n\t}\n\n\t${props =>\n\t\tprops.$isActive &&\n\t\tcss`\n\t\t\ta,\n\t\t\ta:link,\n\t\t\ta:visited,\n\t\t\ta:active {\n\t\t\t\tcolor: rgb(39, 142, 212) !important;\n\t\t\t}\n\t\t`}\n\n\ta:hover {\n\t\tcolor: rgb(39, 142, 212) !important;\n\t}\n\n\ta:focus-visible {\n\t\toutline: none;\n\t\tbox-shadow: 0 0 0 4px rgba(39, 142, 212, 0.2);\n\t\tborder-radius: 4px;\n\t}\n`;\n\n// ---------------------------------------------------------------------------\n// Spinner / loading indicator\n// ---------------------------------------------------------------------------\n\n/**\n * Tailwind: Rendered via the inlined <InputIcon> component:\n *   'pointer-events-none absolute end-4 top-0 flex h-full items-center peer-disabled:text-gray-200'\n * with extra className: 'absolute right-2 top-1/2 -translate-y-1/2 text-primary'\n */\nexport const SpinnerWrapper = styled.span`\n\tposition: absolute;\n\tright: 8px;\n\ttop: 50%;\n\ttransform: translateY(-50%);\n\tcolor: rgb(39, 142, 212);\n\tdisplay: flex;\n\talign-items: center;\n\tpointer-events: none;\n`;\n\n/**\n * Tailwind: <Spinner> (Loader2 from lucide-react) with className=\"animate-spin\"\n * w-5 h-5 (20px) is the lucide-react default size\n */\nexport const SpinnerSvg = styled.svg`\n\tanimation: ${spin} 1s linear infinite;\n\twidth: 20px;\n\theight: 20px;\n`;\n\n// ---------------------------------------------------------------------------\n// Utility\n// ---------------------------------------------------------------------------\n\n/**\n * Tailwind: 'sr-only'\n * Used as both a <div> (region label) and <span> (inline screen-reader text)\n */\nexport const ScreenReaderOnly = styled.div`\n\tposition: absolute;\n\twidth: 1px;\n\theight: 1px;\n\tpadding: 0;\n\tmargin: -1px;\n\toverflow: hidden;\n\tclip: rect(0, 0, 0, 0);\n\twhite-space: nowrap;\n\tborder: 0;\n`;\n\n/**\n * Tailwind: 'me-2 hidden md:block md:justify-self-start'\n */\nexport const ChildrenWrapper = styled.div`\n\tdisplay: none;\n\tmargin-right: 8px;\n\n\t@media (min-width: ${tabletBreakpoint}) {\n\t\tdisplay: block;\n\t\tjustify-self: start;\n\t}\n`;\n","import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { liteClient as algoliasearch } from 'algoliasearch/lite';\nimport {\n\tConfigure,\n\tInstantSearch,\n\tInstantSearchSSRProvider,\n\tuseHits,\n\tuseInstantSearch,\n\tuseSearchBox,\n} from 'react-instantsearch-core';\nimport { useDebouncedCallback } from '@faithlife/react-ui';\n\nimport { safeJsonParse } from '../../../util/safe-json-parse';\nimport { skipEmptyQuerySearchClient } from '../../../util/skip-empty-query-search-client';\nimport { useLocation } from '../../../location';\n\nimport { MagnifyingGlassSvg, CloseSvg } from '../svgs';\n\nimport { useLocalization } from '../../../localization';\nimport { useOpenMenu, useUniversalHeaderContext } from '../universal-header-context';\nimport { RouteContext } from '../../../route-context';\nimport {\n\tSearchBarWrapper,\n\tMobileSearchButton,\n\tSearchDropdown,\n\tSearchForm,\n\tFieldWrapper,\n\tInputWrapper,\n\tSearchInput,\n\tSubmitButton,\n\tClearButton,\n\tCloseButton,\n\tHitsList,\n\tHitItem,\n\tSpinnerWrapper,\n\tSpinnerSvg,\n\tScreenReaderOnly,\n\tChildrenWrapper,\n} from './styled';\n\nconst emptyServerState = { initialResults: {} };\n\n// ---------------------------------------------------------------------------\n// Inline Spinner SVG (replaces lucide-react Loader2)\n// ---------------------------------------------------------------------------\nconst Spinner = () => (\n\t<SpinnerSvg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<path d=\"M21 12a9 9 0 1 1-6.219-8.56\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t</SpinnerSvg>\n);\n\n// ---------------------------------------------------------------------------\n// Inner search component (requires InstantSearch context)\n// ---------------------------------------------------------------------------\nconst QuickSearchInner = ({\n\tchildren,\n\theaderHeight: headerHeightProp,\n\tproductUrl = id => `/product/${id}`,\n\tclearLabel = 'Clear',\n\tprocessingLabel = 'Processing…',\n\tsearchBarLabel = 'Search bar',\n\troutes,\n}) => {\n\tconst [openMobileSearch, setOpenMobileSearch] = useOpenMenu('search');\n\tconst { navigate, searchParams } = useLocation();\n\tconst ownership = searchParams.get('ownership');\n\tconst { query } = useSearchBox();\n\tconst { items } = useHits();\n\tconst { status, setUiState } = useInstantSearch();\n\tconst [inputValue, setInputValue] = useState(query);\n\tconst inputRef = useRef(null);\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst [focusHitIndex, setFocusHitIndex] = useState(null);\n\n\tconst resources = useLocalization('CommerceWeb.Resources.Home._UniversalHeader');\n\tconst searchPlaceHolder = resources?.searchByKeywordTitleEtc || 'Search';\n\tconst searchUrl = routes?.Search || '/search';\n\n\tuseEffect(() => {\n\t\tif (!inputValue) {\n\t\t\tsetUiState({});\n\t\t}\n\t}, [setUiState, inputValue]);\n\n\tuseEffect(() => {\n\t\tif (openMobileSearch && inputRef.current) {\n\t\t\tinputRef.current.focus();\n\t\t}\n\t}, [openMobileSearch]);\n\n\tconst handleSearchInput = useDebouncedCallback(input => {\n\t\tsetInputValue(input);\n\t}, 200);\n\n\tconst handleTermClear = () => {\n\t\tsetInputValue('');\n\t\tsetFocusHitIndex(null);\n\t\tif (inputRef.current) {\n\t\t\tinputRef.current.focus();\n\t\t}\n\t};\n\n\tconst handleMobileSearch = () => {\n\t\tsetOpenMobileSearch(prev => !prev);\n\t\thandleTermClear();\n\t};\n\n\tconst arrowKeys = ['ArrowUp', 'ArrowDown'];\n\tconst handleKeydown = event => {\n\t\tif (arrowKeys.includes(event.key)) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst delta = event.key === 'ArrowUp' ? -1 : 1;\n\n\t\t\tsetFocusHitIndex(prev => {\n\t\t\t\tconst next = (prev === null ? -1 : prev) + delta;\n\n\t\t\t\tif (next < 0) {\n\t\t\t\t\treturn items.length - 1;\n\t\t\t\t}\n\t\t\t\tif (next >= items.length) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn next;\n\t\t\t});\n\t\t} else if (event.key === 'Enter' && focusHitIndex !== null && items[focusHitIndex]) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst hit = items[focusHitIndex];\n\t\t\tnavigate(productUrl(String(hit.productId)));\n\t\t}\n\t};\n\n\tconst isSearchStalled = status === 'stalled';\n\tconst showHits = Boolean(items.length && inputValue && isFocused);\n\tconst hasItems = items && items.length > 0;\n\n\treturn (\n\t\t<div className=\"flex items-end\">\n\t\t\t<SearchBarWrapper\n\t\t\t\t$openMobileSearch={openMobileSearch}\n\t\t\t\tonBlur={() => setTimeout(() => setIsFocused(inputRef.current === document.activeElement), 200)}\n\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\tclassName=\"grow\"\n\t\t\t>\n\t\t\t\t<Configure hitsPerPage={inputValue ? 10 : 0} query={inputValue} />\n\t\t\t\t<SearchDropdown\n\t\t\t\t\t$visible={openMobileSearch || hasItems}\n\t\t\t\t\t$hasItems={hasItems}\n\t\t\t\t\tonKeyDownCapture={handleKeydown}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttop: openMobileSearch ? `${headerHeightProp}px` : 'top-0',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<ScreenReaderOnly>{searchBarLabel}</ScreenReaderOnly>\n\t\t\t\t\t<div style={{ position: 'relative' }}>\n\t\t\t\t\t\t<ChildrenWrapper>{children}</ChildrenWrapper>\n\t\t\t\t\t\t<SearchForm\n\t\t\t\t\t\t\tmethod=\"GET\"\n\t\t\t\t\t\t\taction={searchUrl}\n\t\t\t\t\t\t\tonReset={event => {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\tsetInputValue('');\n\t\t\t\t\t\t\t\tsetFocusHitIndex(null);\n\t\t\t\t\t\t\t\tif (inputRef.current) {\n\t\t\t\t\t\t\t\t\tinputRef.current.focus();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\trole=\"search\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ownership && <input type=\"hidden\" name=\"ownership\" value={ownership} />}\n\t\t\t\t\t\t\t<FieldWrapper>\n\t\t\t\t\t\t\t\t<InputWrapper>\n\t\t\t\t\t\t\t\t\t<SearchInput\n\t\t\t\t\t\t\t\t\t\tname=\"query\"\n\t\t\t\t\t\t\t\t\t\taria-controls=\"categories products brands\"\n\t\t\t\t\t\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\t\t\t\t\t\tonChange={event => {\n\t\t\t\t\t\t\t\t\t\t\thandleSearchInput(event.currentTarget.value);\n\t\t\t\t\t\t\t\t\t\t\tsetFocusHitIndex(null);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tplaceholder={searchPlaceHolder}\n\t\t\t\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\t\t\t\trole=\"searchbox\"\n\t\t\t\t\t\t\t\t\t\tspellCheck={false}\n\t\t\t\t\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\t\t\t\t\tinitialValue={inputValue}\n\t\t\t\t\t\t\t\t\t\tmaxLength={200}\n\t\t\t\t\t\t\t\t\t\tdata-testid=\"search-bar\"\n\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t{!isSearchStalled && (\n\t\t\t\t\t\t\t\t\t\t<SubmitButton aria-label=\"Go to search page\" type=\"submit\" data-testid=\"search-submit\">\n\t\t\t\t\t\t\t\t\t\t\t<MagnifyingGlassSvg style={{ width: 20, height: 'auto', display: 'block' }} />\n\t\t\t\t\t\t\t\t\t\t</SubmitButton>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t{inputValue.length > 0 && !isSearchStalled && (\n\t\t\t\t\t\t\t\t\t\t<ClearButton aria-label=\"Clear search\" onClick={handleTermClear} type=\"button\">\n\t\t\t\t\t\t\t\t\t\t\t{clearLabel}\n\t\t\t\t\t\t\t\t\t\t</ClearButton>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t{isSearchStalled && (\n\t\t\t\t\t\t\t\t\t\t<SpinnerWrapper>\n\t\t\t\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t\t\t\t\t<ScreenReaderOnly as=\"span\">{processingLabel}</ScreenReaderOnly>\n\t\t\t\t\t\t\t\t\t\t</SpinnerWrapper>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</InputWrapper>\n\t\t\t\t\t\t\t</FieldWrapper>\n\t\t\t\t\t\t</SearchForm>\n\t\t\t\t\t\t<CloseButton aria-label=\"Close\" onClick={handleMobileSearch}>\n\t\t\t\t\t\t\t<CloseSvg style={{ width: 12, height: 12 }} />\n\t\t\t\t\t\t</CloseButton>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{showHits ? (\n\t\t\t\t\t\t<HitsList aria-expanded={!!items} role=\"listbox\">\n\t\t\t\t\t\t\t{items.map((hit, index) => (\n\t\t\t\t\t\t\t\t<HitItem $isActive={index === focusHitIndex} key={hit.objectID}>\n\t\t\t\t\t\t\t\t\t<a href={productUrl(String(hit.productId))}>{hit.title}</a>\n\t\t\t\t\t\t\t\t</HitItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</HitsList>\n\t\t\t\t\t) : null}\n\t\t\t\t</SearchDropdown>\n\t\t\t</SearchBarWrapper>\n\t\t\t<MobileSearchButton\n\t\t\t\taria-label=\"Search\"\n\t\t\t\tclassName=\"header-search-button\"\n\t\t\t\t$openMobileSearch={openMobileSearch}\n\t\t\t\tonClick={handleMobileSearch}\n\t\t\t>\n\t\t\t\t<MagnifyingGlassSvg style={{ width: 18, height: 18 }} />\n\t\t\t</MobileSearchButton>\n\t\t</div>\n\t);\n};\n\nQuickSearchInner.propTypes = {\n\tchildren: PropTypes.node,\n\theaderHeight: PropTypes.number,\n\tisMenuOpen: PropTypes.bool,\n\tonNavigate: PropTypes.func,\n\tproductUrl: PropTypes.func,\n\tclearLabel: PropTypes.string,\n\tprocessingLabel: PropTypes.string,\n\tsearchBarLabel: PropTypes.string,\n\tsearchPlaceholder: PropTypes.string,\n\tsearchUrl: PropTypes.string,\n};\n\n// ---------------------------------------------------------------------------\n// Public component: self-contained with Algolia InstantSearch\n// ---------------------------------------------------------------------------\nconst SearchBar = props => {\n\tconst { ...innerProps } = props;\n\tconst { algoliaAppId, algoliaAppKey, algoliaIndexName, algoliaSearchParametersJson, headerHeight } =\n\t\tuseUniversalHeaderContext();\n\tconst searchClient = useMemo(\n\t\t() => skipEmptyQuerySearchClient(algoliasearch(algoliaAppId, algoliaAppKey)),\n\t\t[algoliaAppId, algoliaAppKey]\n\t);\n\tconst algoliaSearchParameters = useMemo(\n\t\t() => safeJsonParse(algoliaSearchParametersJson) ?? {},\n\t\t[algoliaSearchParametersJson]\n\t);\n\tconst { routes } = useContext(RouteContext);\n\n\treturn (\n\t\t<InstantSearchSSRProvider {...emptyServerState}>\n\t\t\t<InstantSearch\n\t\t\t\tfuture={{ preserveSharedStateOnUnmount: true }}\n\t\t\t\tindexName={algoliaIndexName}\n\t\t\t\tsearchClient={searchClient}\n\t\t\t>\n\t\t\t\t<Configure\n\t\t\t\t\tattributesToHighlight={['title']}\n\t\t\t\t\tattributesToRetrieve={['title', 'productId']}\n\t\t\t\t\tdistinct\n\t\t\t\t\tqueryType=\"prefixLast\"\n\t\t\t\t\trestrictSearchableAttributes={['title', 'publishers', 'authors', 'authorAliases']}\n\t\t\t\t\t{...algoliaSearchParameters}\n\t\t\t\t/>\n\t\t\t\t<QuickSearchInner {...{ headerHeight, ...innerProps, routes }} />\n\t\t\t</InstantSearch>\n\t\t</InstantSearchSSRProvider>\n\t);\n};\n\nSearchBar.propTypes = {\n\t/** Builds the URL to a product page (default: `/product/${productId}`) */\n\tproductUrl: PropTypes.func,\n\t/** Label for the \"clear\" button (default: \"Clear\") */\n\tclearLabel: PropTypes.string,\n\t/** Label for the \"processing\" spinner (default: \"Processing…\") */\n\tprocessingLabel: PropTypes.string,\n\t/** Accessible label for the search bar region (default: \"Search bar\") */\n\tsearchBarLabel: PropTypes.string,\n\t/** Placeholder for the search input (default: \"Search\") */\n\tsearchPlaceholder: PropTypes.string,\n\t/** URL path for the search results page (default: \"/search\") */\n\tsearchUrl: PropTypes.string,\n};\n\nexport default SearchBar;\n","import styled from 'styled-components';\nimport { LinkButton } from '@faithlife/commerce-components';\nimport { Text } from '@faithlife/styled-ui';\nimport { HandsetSvg } from '../svgs';\nimport ChevronIcon from '../shared/chevron-icon';\n\nexport const ContactInfoContainer = styled.div`\n\tposition: relative;\n`;\n\nexport const BusinessHoursContainer = styled.div`\n\tmargin-top: ${({ theme }) => theme.space[5]};\n`;\n\nexport const Link = styled(LinkButton).attrs({\n\tintent: 'none',\n\tscale: 'sm',\n\ttouchTarget: 'sm',\n})`\n\tletter-spacing: normal;\n\tline-height: ${({ theme }) => theme.lineHeights[3]};\n\tcolor: #005ec3;\n\tdisplay: block;\n\ttext-decoration: none;\n\tgap: 0;\n\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t& > span {\n\t\tdisplay: contents;\n\t\tfont: inherit;\n\t\tletter-spacing: inherit;\n\t}\n\n\t&:hover:not(:active) {\n\t\ttext-decoration: underline;\n\t\topacity: 1;\n\t}\n`;\n\nexport const TelephoneLink = styled(Link)`\n\tpadding: ${({ theme }) => theme.space[3]};\n\tdisplay: flex;\n\talign-items: flex-start;\n`;\n\nexport const PaddedLink = styled(Link)`\n\tpadding-left: ${({ theme }) => theme.space[3]};\n\twhite-space: normal;\n`;\n\nexport const Number = styled(Text).attrs({ as: 'div', textStyle: 'ui.16' })`\n\tletter-spacing: normal;\n\tline-height: ${({ theme }) => theme.lineHeights[3]};\n\tcolor: #005ec3;\n\n\t${({ theme }) => theme.mediaQueries.tablet} {\n\t\tcolor: #7a7a7a;\n\t}\n`;\n\nexport const Title = styled(Text).attrs({ as: 'span', textStyle: 'ui.16' })`\n\tletter-spacing: normal;\n\tline-height: ${({ theme }) => theme.lineHeights[3]};\n\tcolor: ${({ theme }) => theme.colors.headerText};\n\tdisplay: none;\n\tmargin-left: ${({ theme }) => theme.space[2]};\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tdisplay: block;\n\t}\n`;\n\nexport const Button = styled.button`\n\tbackground-color: transparent;\n\tborder: none;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tpadding: 0;\n\tcursor: pointer;\n\tcolor: ${({ theme }) => theme.colors.headerText};\n\tletter-spacing: 0.05px;\n\ttransition: color 0.15s ease-in-out;\n\n\t${Title} {\n\t\ttransition: color 0.15s ease-in-out;\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:hover {\n\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\n\t\t${Title} {\n\t\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\t\t}\n\t}\n`;\n\nexport const Icon = styled(HandsetSvg)`\n\twidth: 16px;\n\theight: 16px;\n\tmargin-right: 0;\n\n\t[stroke]:not([stroke='none']) {\n\t\tstroke: currentColor;\n\t}\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\twidth: 20px;\n\t\theight: 20px;\n\t}\n`;\n\nexport const DownArrow = styled(ChevronIcon)``;\n\nexport const ContactInfoPopup = styled.div`\n\tz-index: 20;\n\tposition: absolute;\n\tright: 0;\n\twidth: 205px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tborder-bottom: 1px solid ${({ theme }) => theme.colors.borderColor};\n\tbox-shadow: 0px 0px 10px 0px rgba(69, 86, 118, 0.1);\n\tbackground-color: white;\n\tpadding: 16px;\n\n\t${({ theme }) => theme.mediaQueries.tablet} {\n\t\twidth: 205px;\n\t}\n`;\n\nexport const Label = styled.div`\n\tfont-size: 16px;\n\tline-height: ${({ theme }) => theme.lineHeights[3]};\n`;\n\nexport const BoldedLabel = styled.div`\n\tfont-weight: bold;\n\tfont-size: 18px;\n`;\n\nexport const SpecialMessage = styled.div`\n\tfont-style: italic;\n`;\n\nexport const BusinessHours = styled.div`\n\tmargin-top: ${({ theme }) => theme.space[3]};\n\twhite-space: nowrap;\n\tfont-size: 16px;\n\tline-height: ${({ theme }) => theme.lineHeights[3]};\n`;\n\nexport const ContactInfo = styled.div`\n\tdisplay: flex;\n\talign-items: flex-end;\n\twhite-space: nowrap;\n\tfont-size: 16px;\n\tmargin-top: ${({ theme }) => theme.space[3]};\n`;\n","import styled from 'styled-components';\nimport { LinkButton } from '@faithlife/commerce-components';\nimport { Text } from '@faithlife/styled-ui';\n\nexport const Container = styled.div`\n\tbackground-color: white;\n\n\t${({ theme }) => theme.mediaQueries.tablet} {\n\t\twidth: 240px;\n\t}\n`;\n\nexport const LinkList = styled.ul`\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n`;\n\nexport const Link = styled(Text).attrs({ as: 'li', textStyle: 'ui.16' })`\n\tfont-family: ${({ theme }) => theme.fonts.normal};\n\tletter-spacing: normal;\n\tline-height: ${({ theme }) => theme.lineHeights[3]};\n\tdisplay: block;\n`;\n\nexport const LinkAnchor = styled(LinkButton).attrs({\n\tintent: 'none',\n\tscale: 'sm',\n\ttouchTarget: 'sm',\n})`\n\tdisplay: block;\n\tpadding: ${({ theme }) => theme.space[3]};\n\tfont-size: 16px;\n\tline-height: ${({ theme }) => theme.lineHeights[3]};\n\tletter-spacing: 0.05px;\n\tcolor: ${({ theme }) => theme.colors.headerText || theme.colors.gray67};\n\ttransition: color 0.15s ease-in-out;\n\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t& > span {\n\t\tdisplay: contents;\n\t\tfont: inherit;\n\t\tletter-spacing: inherit;\n\t}\n\n\t&:hover:not(:active) {\n\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\t\ttext-decoration: underline;\n\t\topacity: 1;\n\t}\n`;\n\nexport const Separator = styled.li`\n\tmargin: ${({ theme }) => theme.space[3]} 0;\n`;\n\nexport const SeparatorInner = styled.div`\n\tborder-bottom: 1px solid ${({ theme }) => theme.colors.gray21 || theme.colors.gray14};\n`;\n","import React from 'react';\n\nimport { useLocalization } from '../../../localization';\nimport { Container, LinkList, Link, LinkAnchor, Separator, SeparatorInner } from './styled';\n\nconst AccountDropdown = ({ routes }) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Home._UniversalHeader');\n\tconst { desktop, mobile, web } = routes.applicationUrls;\n\n\treturn (\n\t\t<Container>\n\t\t\t<LinkList>\n\t\t\t\t<Link>\n\t\t\t\t\t<LinkAnchor href={routes.ProfileUrl}>{resources.profile}</LinkAnchor>\n\t\t\t\t</Link>\n\t\t\t\t<Link>\n\t\t\t\t\t<LinkAnchor href={routes.SignInAndSecurityUrl}>{resources.signInAndSecurity}</LinkAnchor>\n\t\t\t\t</Link>\n\t\t\t\t<Link>\n\t\t\t\t\t<LinkAnchor href={routes.AccountBillingUrl}>{resources.billingInfo}</LinkAnchor>\n\t\t\t\t</Link>\n\t\t\t\t<Link>\n\t\t\t\t\t<LinkAnchor href={routes.AccountOrdersUrl}>{resources.orderHistory}</LinkAnchor>\n\t\t\t\t</Link>\n\t\t\t\t<Link>\n\t\t\t\t\t<LinkAnchor href={routes.AccountWishlistsUrl}>{resources.wishLists}</LinkAnchor>\n\t\t\t\t</Link>\n\t\t\t\t<Link>\n\t\t\t\t\t<LinkAnchor href={routes.EmailListsUrl}>{resources.EmailLists}</LinkAnchor>\n\t\t\t\t</Link>\n\t\t\t\t<>\n\t\t\t\t\t<Link>\n\t\t\t\t\t\t<LinkAnchor href={routes.AccountSubscriptionsUrl}>{resources.subscriptions}</LinkAnchor>\n\t\t\t\t\t</Link>\n\t\t\t\t</>\n\t\t\t\t{desktop && (\n\t\t\t\t\t<Link>\n\t\t\t\t\t\t<LinkAnchor href={desktop}>{resources.downloadForMacPc}</LinkAnchor>\n\t\t\t\t\t</Link>\n\t\t\t\t)}\n\t\t\t\t{mobile && (\n\t\t\t\t\t<Link>\n\t\t\t\t\t\t<LinkAnchor href={mobile}>{resources.downloadForMobile}</LinkAnchor>\n\t\t\t\t\t</Link>\n\t\t\t\t)}\n\t\t\t\t{web && (\n\t\t\t\t\t<Link>\n\t\t\t\t\t\t<LinkAnchor href={web}>{resources.useOnTheWeb}</LinkAnchor>\n\t\t\t\t\t</Link>\n\t\t\t\t)}\n\t\t\t\t<Separator>\n\t\t\t\t\t<SeparatorInner />\n\t\t\t\t</Separator>\n\t\t\t\t<Link>\n\t\t\t\t\t<LinkAnchor href={routes.SignoutUrl} rel=\"nofollow\">\n\t\t\t\t\t\t{resources.signOut}\n\t\t\t\t\t</LinkAnchor>\n\t\t\t\t</Link>\n\t\t\t</LinkList>\n\t\t</Container>\n\t);\n};\n\nexport default AccountDropdown;\n","import React from 'react';\n\ninterface UserAvatarProps {\n\tavatarUrl: string;\n\talt?: string;\n}\n\nexport default function UserAvatar({ avatarUrl, alt = 'Profile' }: UserAvatarProps) {\n\treturn <img src={avatarUrl} alt={alt} className=\"block h-6 w-6 rounded-full md:h-8 md:w-8\" />;\n}\n","import styled from 'styled-components';\nimport { LinkButton } from '@faithlife/commerce-components';\nimport { ProfileSvg } from '../svgs';\nimport ChevronIcon from '../shared/chevron-icon';\n\nexport const MobileAccountDropdownContainer = styled.div`\n\tposition: fixed;\n\ttop: 40px;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\toverflow-y: auto;\n`;\n\nexport const Scrim = styled.button.attrs({ type: 'button' })`\n\tposition: absolute;\n\tinset: 0;\n\tbackground: rgba(0, 0, 0, 0.25);\n\tborder: none;\n`;\n\nexport const AccountButton = styled.button`\n\tbackground-color: transparent;\n\tborder: none;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tpadding: 0;\n\tcursor: pointer;\n\tcolor: ${({ theme }) => theme.colors.headerText};\n\tletter-spacing: 0.05px;\n\ttransition: color 0.15s ease-in-out;\n\ttext-decoration: none;\n\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:hover {\n\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\t}\n`;\n\nexport const AccountLink = styled(LinkButton).attrs({\n\tintent: 'none',\n\trel: 'nofollow',\n\tscale: 'sm',\n\ttouchTarget: 'sm',\n})`\n\tbackground-color: transparent;\n\tborder: none;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tpadding: 0;\n\tcursor: pointer;\n\tcolor: ${({ theme }) => theme.colors.headerText};\n\tfont-family: inherit;\n\tletter-spacing: 0.05px;\n\ttransition: color 0.15s ease-in-out;\n\ttext-decoration: none;\n\tgap: 0;\n\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t& > span {\n\t\tdisplay: contents;\n\t\tfont: inherit;\n\t\tletter-spacing: inherit;\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:hover:not(:active) {\n\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\t\ttext-decoration: none;\n\t\topacity: 1;\n\t}\n`;\n\nexport const ProfileIcon = styled(ProfileSvg)`\n\twidth: 16px;\n\theight: 16px;\n\n\t[fill]:not([fill='none']) {\n\t\tfill: currentColor;\n\t}\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\twidth: 20px;\n\t\theight: 20px;\n\t}\n`;\n\nexport const SignInLabel = styled.span`\n\tmargin-left: 5px;\n\tfont-size: 16px;\n\tletter-spacing: 0.05px;\n\tdisplay: none;\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tdisplay: inline;\n\t}\n`;\n\nexport { ChevronIcon };\n","import React, { useCallback, useContext, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { Popover } from '@faithlife/styled-ui';\nimport formatUri from '@faithlife/format-uri';\nimport { useLocalization } from '../../../localization';\nimport useScreensize from '../../../util/hooks/use-screensize';\nimport AccountDropdown from '../account-dropdown';\nimport { RouteContext } from '../../../route-context';\nimport { useCurrentUser } from '../../per-user-data/per-user-data-context';\nimport { useLocation } from '../../../location';\nimport { useOpenMenu, useUniversalHeaderContext } from '../universal-header-context';\nimport UserAvatar from './user-avatar';\nimport {\n\tMobileAccountDropdownContainer,\n\tAccountButton,\n\tAccountLink,\n\tProfileIcon,\n\tSignInLabel,\n\tChevronIcon,\n\tScrim,\n} from './styled';\n\nexport default function AccountIcon(props) {\n\tconst resources = useLocalization('CommerceWeb.Resources.Home._UniversalHeader');\n\tconst [isAccountDropdownOpen, setIsAccountDropdownOpen] = useOpenMenu('account');\n\tconst accountButtonRef = useRef();\n\tconst { isDesktop, isMobile } = useScreensize();\n\tconst { routes } = useContext(RouteContext);\n\n\tconst handleUserAvatarClick = useCallback(() => {\n\t\tsetIsAccountDropdownOpen(value => !value);\n\t}, [setIsAccountDropdownOpen]);\n\n\tconst handleAccountDropdownFocusAway = useCallback(() => {\n\t\tsetIsAccountDropdownOpen(false);\n\t}, [setIsAccountDropdownOpen]);\n\n\tconst handleMobileScrimClick = useCallback(() => {\n\t\tsetIsAccountDropdownOpen(false);\n\t}, [setIsAccountDropdownOpen]);\n\n\tuseEffect(() => {\n\t\tif (isDesktop) {\n\t\t\tsetIsAccountDropdownOpen(false);\n\t\t}\n\t}, [isDesktop, setIsAccountDropdownOpen]);\n\n\tuseEffect(() => {\n\t\t/* Because Universal Header scrolls away, if we are not at the top, a gap will appear between the UH and the Mobile Mega Menu */\n\t\t/* However, because the UH scrolls away, the user must be near the top to open the Mobile Mega Menu */\n\t\t/* Snap UH to top to prevent any gap from showing */\n\t\t/* If we introduce a sticky UH again, this will need changed */\n\t\tif (isAccountDropdownOpen && isMobile) {\n\t\t\twindow.scrollTo({ top: 0, behavior: 'instant' });\n\t\t\tdocument.querySelector('body').style.overflow = 'hidden';\n\t\t} else {\n\t\t\tdocument.querySelector('body').style.overflow = null;\n\t\t}\n\t}, [isAccountDropdownOpen, isMobile]);\n\n\tconst { domainUri, currentUserInfo } = useUniversalHeaderContext();\n\tconst { userId, userInfo } = useCurrentUser(domainUri, currentUserInfo);\n\tconst avatarUrl = userInfo?.avatarUrl;\n\tconst { href } = useLocation();\n\tconst signInUrl = formatUri(routes.SignInUrl, { returnUrl: href });\n\tconst { applicationUrls } = props;\n\n\treturn (\n\t\t<>\n\t\t\t{userId ? (\n\t\t\t\t<>\n\t\t\t\t\t<AccountButton ref={accountButtonRef} onClick={handleUserAvatarClick} data-testid=\"user-avatar-button\">\n\t\t\t\t\t\t{avatarUrl ? <UserAvatar avatarUrl={avatarUrl} /> : <ProfileIcon />}\n\t\t\t\t\t\t<ChevronIcon open={isAccountDropdownOpen} />\n\t\t\t\t\t</AccountButton>\n\t\t\t\t\t{isAccountDropdownOpen &&\n\t\t\t\t\t\t(isMobile ? (\n\t\t\t\t\t\t\t<MobileAccountDropdownContainer>\n\t\t\t\t\t\t\t\t<Scrim onClick={handleMobileScrimClick} tabIndex={-1} />\n\t\t\t\t\t\t\t\t<div style={{ position: 'relative' }}>\n\t\t\t\t\t\t\t\t\t<AccountDropdown routes={{ ...routes, applicationUrls }} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</MobileAccountDropdownContainer>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Popover\n\t\t\t\t\t\t\t\treference={accountButtonRef.current}\n\t\t\t\t\t\t\t\tplacement=\"bottom-end\"\n\t\t\t\t\t\t\t\tonFocusAway={handleAccountDropdownFocusAway}\n\t\t\t\t\t\t\t\thideArrow\n\t\t\t\t\t\t\t\tpadding={0}\n\t\t\t\t\t\t\t\tmodifiers={[\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\t\toffset: [\n\t\t\t\t\t\t\t\t\t\t\t\t/* Skidding, position offset parallel to edge of anchor */\n\t\t\t\t\t\t\t\t\t\t\t\tisDesktop ? 0 : 8,\n\t\t\t\t\t\t\t\t\t\t\t\t/* Distance, position offset away from edge of anchor */\n\t\t\t\t\t\t\t\t\t\t\t\t8,\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'preventOverflow',\n\t\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\t\tpadding: 8,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<AccountDropdown routes={{ ...routes, applicationUrls }} />\n\t\t\t\t\t\t\t</Popover>\n\t\t\t\t\t\t))}\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<AccountLink href={signInUrl} data-testid=\"sign-in-button\">\n\t\t\t\t\t<ProfileIcon />\n\t\t\t\t\t<SignInLabel>{resources.signIn}</SignInLabel>\n\t\t\t\t</AccountLink>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nAccountIcon.propTypes = {\n\tapplicationUrls: PropTypes.shape({\n\t\tdesktop: PropTypes.string,\n\t\tmobile: PropTypes.string,\n\t\tweb: PropTypes.string,\n\t}),\n};\n","import React from 'react';\n\nexport function withDivWrapper(WrappedComponent, className) {\n\treturn function DivWrapper(props) {\n\t\treturn (\n\t\t\t<div {...props.attributes} className={className}>\n\t\t\t\t<WrappedComponent {...props} />\n\t\t\t</div>\n\t\t);\n\t};\n}\n","import React, { createContext, useCallback, useContext, useState } from 'react';\n\nexport const MinicartToggleContext = createContext(null);\n\nexport function useMinicartToggle() {\n\tconst context = useContext(MinicartToggleContext);\n\n\tif (!context) {\n\t\tthrow new Error('useMinicartToggle must be used within a MinicartToggleProvider');\n\t}\n\n\treturn context;\n}\n\nexport function MinicartToggleProvider({ children }) {\n\tconst [minicartState, setMinicartState] = useState({\n\t\tisMinicartOpen: false,\n\t\tminicartOpenReason: null,\n\t\taddedItemCount: 0,\n\t});\n\n\tconst openMinicart = useCallback(options => {\n\t\tconst hasAddMetadata =\n\t\t\toptions?.reason === 'add-to-cart' && Number.isFinite(options?.addedItemCount) && options.addedItemCount > 0;\n\n\t\tsetMinicartState({\n\t\t\tisMinicartOpen: true,\n\t\t\tminicartOpenReason: hasAddMetadata ? 'add-to-cart' : (options?.reason ?? null),\n\t\t\taddedItemCount: hasAddMetadata ? options.addedItemCount : 0,\n\t\t});\n\t}, []);\n\n\tconst closeMinicart = useCallback(() => {\n\t\tsetMinicartState({\n\t\t\tisMinicartOpen: false,\n\t\t\tminicartOpenReason: null,\n\t\t\taddedItemCount: 0,\n\t\t});\n\t}, []);\n\n\tconst toggleMinicart = useCallback(options => {\n\t\tsetMinicartState(prevState => {\n\t\t\tif (prevState.isMinicartOpen) {\n\t\t\t\treturn {\n\t\t\t\t\tisMinicartOpen: false,\n\t\t\t\t\tminicartOpenReason: null,\n\t\t\t\t\taddedItemCount: 0,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst hasAddMetadata =\n\t\t\t\toptions?.reason === 'add-to-cart' && Number.isFinite(options?.addedItemCount) && options.addedItemCount > 0;\n\n\t\t\treturn {\n\t\t\t\tisMinicartOpen: true,\n\t\t\t\tminicartOpenReason: hasAddMetadata ? 'add-to-cart' : (options?.reason ?? null),\n\t\t\t\taddedItemCount: hasAddMetadata ? options.addedItemCount : 0,\n\t\t\t};\n\t\t});\n\t}, []);\n\n\tconst clearMinicartOpenReason = useCallback(() => {\n\t\tsetMinicartState(prevState => ({\n\t\t\t...prevState,\n\t\t\tminicartOpenReason: null,\n\t\t\taddedItemCount: 0,\n\t\t}));\n\t}, []);\n\n\tconst setMinicartReason = useCallback((reason, itemCount = 0) => {\n\t\tsetMinicartState(prevState => ({\n\t\t\t...prevState,\n\t\t\tminicartOpenReason: reason,\n\t\t\taddedItemCount: itemCount,\n\t\t}));\n\t}, []);\n\n\treturn (\n\t\t<MinicartToggleContext.Provider\n\t\t\tvalue={{\n\t\t\t\tisMinicartOpen: minicartState.isMinicartOpen,\n\t\t\t\tminicartOpenReason: minicartState.minicartOpenReason,\n\t\t\t\taddedItemCount: minicartState.addedItemCount,\n\t\t\t\topenMinicart,\n\t\t\t\tcloseMinicart,\n\t\t\t\ttoggleMinicart,\n\t\t\t\tclearMinicartOpenReason,\n\t\t\t\tsetMinicartReason,\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\t\t</MinicartToggleContext.Provider>\n\t);\n}\n","import { useLayoutEffect, useRef, RefObject } from 'react';\n\nconst FOCUSABLE_SELECTOR =\n\t'a[href]:not(.hidden), button:not([disabled]):not(.hidden), input:not([disabled]):not(.hidden), select:not([disabled]):not(.hidden), textarea:not([disabled]):not(.hidden), [tabindex]:not([tabindex=\"-1\"]):not(.hidden)';\n\ninterface UseMiniCartNavigationResult {\n\tpanelRef: RefObject<HTMLDivElement | null>;\n}\n\nfunction getFocusableElements(panel: HTMLElement): HTMLElement[] {\n\treturn Array.from(panel.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n}\n\n// A shadow root is an isolated DOM subtree (used here by the universal header, via the\n// react-shadow package) that scopes its own styles/markup away from the rest of the page.\n// See universal-header-widget/index.js (<root.div ref={shadowRootRef}>), which renders the\n// search bar, cart icon, and this mini-cart inside that shadow root.\n// When the focused element lives inside a shadow tree, document.activeElement returns the\n// shadow host (not the focused element itself), the same way it would return an <iframe>\n// rather than something focused inside it. This drills one level into the shadow root so\n// comparisons against panel/first/last resolve correctly.\nfunction getDeepActiveElement(): Element | null {\n\tconst active = document.activeElement;\n\treturn active?.shadowRoot?.activeElement ?? active;\n}\n\nexport function useMiniCartNavigation(isOpen: boolean): UseMiniCartNavigationResult {\n\tconst panelRef = useRef<HTMLDivElement>(null);\n\n\tuseLayoutEffect(() => {\n\t\tif (!isOpen) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst panel = panelRef.current;\n\t\tif (!panel) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst openerElement = getDeepActiveElement();\n\n\t\tif (openerElement instanceof HTMLElement && openerElement !== document.body) {\n\t\t\topenerElement.blur();\n\t\t}\n\t\tpanel.focus();\n\n\t\tconst handleKeyDown = (event: KeyboardEvent): void => {\n\t\t\tif (event.key !== 'Tab') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst focusable = getFocusableElements(panel);\n\t\t\tif (focusable.length === 0) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst first = focusable[0];\n\t\t\tconst last = focusable[focusable.length - 1];\n\t\t\tconst activeElement = getDeepActiveElement();\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tif (activeElement === first || activeElement === panel) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tlast.focus();\n\t\t\t\t}\n\t\t\t} else if (activeElement === last) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tfirst.focus();\n\t\t\t}\n\t\t};\n\n\t\tconst handleFocusIn = (event: FocusEvent): void => {\n\t\t\tif (event.target instanceof HTMLElement && !panel.contains(event.target)) {\n\t\t\t\tevent.target.blur();\n\t\t\t\tpanel.focus();\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('keydown', handleKeyDown);\n\t\tdocument.addEventListener('focusin', handleFocusIn);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', handleKeyDown);\n\t\t\tdocument.removeEventListener('focusin', handleFocusIn);\n\n\t\t\tif (openerElement instanceof HTMLElement && openerElement.isConnected) {\n\t\t\t\t// React restores focus to the pre-commit active element (e.g. the clicked close button)\n\t\t\t\t// in resetAfterCommit, which runs after this cleanup. Deferring to the next frame lets\n\t\t\t\t// our restoration win instead of being immediately overwritten.\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tif (openerElement.isConnected) {\n\t\t\t\t\t\topenerElement.focus();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}, [isOpen]);\n\n\treturn { panelRef };\n}\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { Typography, ClearIcon, ConfirmationIcon, ProgressIndicator } from '@faithlife/commerce-components';\nimport { CommandSentence } from '@faithlife/command-sentence-control';\nimport { useLocalization } from '../../../localization';\nimport { useLocation } from '../../../location';\nimport ShoppingCartItems from '../../shopping-cart-items';\nimport { RouteContext } from '../../../route-context';\nimport { MiniCartNotifications } from '../../cart/notifications';\nimport { useMinicartToggle } from './mini-cart-toggle-provider';\nimport { useMiniCartNavigation } from './use-mini-cart-navigation';\n\nexport const MiniCart = ({ cartData, isLoading: isCartLoading }) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Home._UniversalHeader');\n\tconst { navigate } = useLocation();\n\tconst { routes } = useContext(RouteContext);\n\tconst { isMinicartOpen, minicartOpenReason, addedItemCount, closeMinicart } = useMinicartToggle();\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst { panelRef } = useMiniCartNavigation(isMinicartOpen);\n\n\tconst isMiniCartLoading = isCartLoading || isLoading;\n\tconst isInitialLoad = isMiniCartLoading && !cartData;\n\n\tconst hasCartItems = useMemo(\n\t\t() => cartData && (cartData.lineItems?.length || 0) + (cartData.subscribableLineItems?.length || 0) > 0,\n\t\t[cartData]\n\t);\n\n\tconst totalItemCount = useMemo(() => {\n\t\tif (!cartData) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn (cartData.lineItems?.length || 0) + (cartData.subscribableLineItems?.length || 0);\n\t}, [cartData]);\n\tconst addToCartMessageTemplate = addedItemCount > 1 ? resources.ItemsAdded : resources.ItemAdded;\n\tconst itemRemovedMessageTemplate = addedItemCount > 1 ? resources.ItemsRemoved : resources.ItemRemoved;\n\tconst itemSavedForLaterMessageTemplate =\n\t\taddedItemCount > 1 ? resources.ItemsSavedForLater : resources.ItemSavedForLater;\n\n\tconst bannerMessage =\n\t\thasCartItems && minicartOpenReason === 'add-to-cart' && addedItemCount > 0 ? (\n\t\t\t<CommandSentence key={addToCartMessageTemplate} Container=\"span\" template={addToCartMessageTemplate}>\n\t\t\t\t<CommandSentence.Field name=\"COUNT\">\n\t\t\t\t\t<span className=\"font-semibold\">{addedItemCount}</span>\n\t\t\t\t</CommandSentence.Field>\n\t\t\t</CommandSentence>\n\t\t) : hasCartItems && minicartOpenReason === 'item-removed' ? (\n\t\t\t<CommandSentence key={itemRemovedMessageTemplate} Container=\"span\" template={itemRemovedMessageTemplate}>\n\t\t\t\t<CommandSentence.Field name=\"COUNT\">\n\t\t\t\t\t<span className=\"font-semibold\">{addedItemCount}</span>\n\t\t\t\t</CommandSentence.Field>\n\t\t\t</CommandSentence>\n\t\t) : minicartOpenReason === 'item-saved-for-later' ? (\n\t\t\t<CommandSentence\n\t\t\t\tkey={itemSavedForLaterMessageTemplate}\n\t\t\t\tContainer=\"span\"\n\t\t\t\ttemplate={itemSavedForLaterMessageTemplate}\n\t\t\t>\n\t\t\t\t<CommandSentence.Field name=\"COUNT\">\n\t\t\t\t\t<span className=\"font-semibold\">{addedItemCount}</span>\n\t\t\t\t</CommandSentence.Field>\n\t\t\t</CommandSentence>\n\t\t) : null;\n\n\tuseEffect(() => {\n\t\tconst resetLoading = () => {\n\t\t\tsetIsLoading(false);\n\t\t};\n\n\t\twindow.addEventListener('pageshow', resetLoading);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('pageshow', resetLoading);\n\t\t};\n\t}, []);\n\n\tfunction handleNavigate(url) {\n\t\tsetIsLoading(true);\n\t\tnavigate(url);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"fixed inset-x-0 top-0 bottom-0 z-30 flex flex-col pointer-events-none\">\n\t\t\t\t{isMinicartOpen && <MiniCartNotifications />}\n\n\t\t\t\t<div className=\"flex flex-1 min-h-0 justify-end\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={panelRef}\n\t\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\t'minicart pointer-events-auto flex flex-col bg-white transition-transform duration-300 ease-in-out',\n\t\t\t\t\t\t\t'w-full sm:w-[390px] tw-preflight',\n\t\t\t\t\t\t\tisMinicartOpen ? 'visible translate-x-0' : 'invisible translate-x-full'\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-label={resources.ShoppingCart}\n\t\t\t\t\t\taria-modal=\"true\"\n\t\t\t\t\t\trole=\"dialog\"\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"flex items-center justify-between p-4\">\n\t\t\t\t\t\t\t<div className=\"font-semibold text-[30px] text-primary-500\">{resources.ShoppingCart}</div>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\taria-label=\"Close Minicart\"\n\t\t\t\t\t\t\t\tclassName=\"cursor-pointer rounded-full bg-[#E9F5FF] p-4\"\n\t\t\t\t\t\t\t\tonClick={closeMinicart}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ClearIcon className=\"h-4 w-4 text-primary-500\" />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className=\"relative flex flex-1 min-h-0\" aria-busy={isMiniCartLoading}>\n\t\t\t\t\t\t\t<div className={`flex flex-col min-h-0 w-full ${isMiniCartLoading ? 'hidden' : ''}`}>\n\t\t\t\t\t\t\t\t<div className=\"flex-1 overflow-y-auto pb-6\">\n\t\t\t\t\t\t\t\t\t{!isInitialLoad && cartData && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{bannerMessage && (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"h-12 rounded bg-[#E9F5FF] px-4 flex items-center gap-2 p-2 m-4\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ConfirmationIcon className=\"h-6 w-6 text-[#5BA224]\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography className=\"text-primary-500\" variant=\"bodySmall\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{bannerMessage}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<ShoppingCartItems\n\t\t\t\t\t\t\t\t\t\t\t\tcartItems={cartData?.lineItems ?? []}\n\t\t\t\t\t\t\t\t\t\t\t\tcartSubscribableItems={cartData?.subscribableLineItems ?? []}\n\t\t\t\t\t\t\t\t\t\t\t\tupdateUrl={cartData.updateUrl}\n\t\t\t\t\t\t\t\t\t\t\t\tupsellDetailsUrl={cartData.upsellDetailsUrl}\n\t\t\t\t\t\t\t\t\t\t\t\tisModifiable={true}\n\t\t\t\t\t\t\t\t\t\t\t\tisDeliveredToGroup={cartData.hasGroupRecipient}\n\t\t\t\t\t\t\t\t\t\t\t\tshowCartSaveForLater={cartData.showCartSaveForLater}\n\t\t\t\t\t\t\t\t\t\t\t\tcontainsBundledItems={cartData.containsBundledItems}\n\t\t\t\t\t\t\t\t\t\t\t\tusesForeignCurrency={cartData.usesForeignCurrency}\n\t\t\t\t\t\t\t\t\t\t\t\tshopMoreUrl={cartData.shopMoreUrl}\n\t\t\t\t\t\t\t\t\t\t\t\tresources={resources}\n\t\t\t\t\t\t\t\t\t\t\t\tisMiniCart={true}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t{!isInitialLoad && hasCartItems && (\n\t\t\t\t\t\t\t\t\t<div className=\"border-t border-primary-500 p-4\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col gap-3\">\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography className=\"text-primary-500\" variant=\"ui2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"font-semibold pr-1\">{totalItemCount}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{totalItemCount === 1 ? resources.Item : resources.Items}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography className=\"text-primary-500\" variant=\"ui2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{resources.Total}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-start gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography className=\"text-primary-500 font-bold\" variant=\"ui2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{cartData.balanceDueUsdCurrencyText}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{cartData.usesForeignCurrency && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-primary-500 before:content-['('] after:content-[')']\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"ui4\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{cartData.balanceDueCurrencyText}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex min-h-[60px] w-full items-center justify-center border-0 bg-[#1E6AFE] px-6 text-center text-[18px] font-normal text-white transition-[background-color] hover:bg-blue-400 cursor-pointer\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleNavigate(routes.Cart)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography tag=\"span\" variant=\"ui1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{resources.ViewCart}\n\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex min-h-[60px] w-full items-center justify-center border-0 bg-white px-6 text-center text-[18px] font-normal text-[#1E6AFE] transition-[background-color] hover:bg-blue-50 border-[0.5px] border-[#1E6AFE] cursor-pointer\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => closeMinicart()}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography tag=\"span\" variant=\"ui1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{resources.KeepShopping}\n\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{isMiniCartLoading && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t\t\t\t\tclassName=\"w-full flex items-center justify-center\"\n\t\t\t\t\t\t\t\t\tdata-testid=\"mini-cart-updating\"\n\t\t\t\t\t\t\t\t\trole=\"status\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ProgressIndicator className=\"h-[48px] w-[48px]\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Overlay */}\n\t\t\t{isMinicartOpen && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"fixed inset-0 z-[25] cursor-default bg-[#E9F5FFBF] transition-all duration-300 ease-in-out\"\n\t\t\t\t\tonClick={closeMinicart}\n\t\t\t\t\tonKeyDown={event => {\n\t\t\t\t\t\tif (event.key === 'Enter' || event.key === ' ') {\n\t\t\t\t\t\t\tcloseMinicart();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n","// After a signed-out group add-to-cart completes, the server redirects back to the landing page with\n// `?addedItemCount=` so the mini-cart can auto-open there, since the original AJAX response (and its\n// in-memory `faithlife.sites.minicart.open` dispatch) was lost to the sign-in page navigation.\nexport const getAddedItemCountFromLocation = (search: string = window.location.search): number | undefined => {\n\tconst rawAddedItemCount = new URLSearchParams(search).get('addedItemCount');\n\tif (!rawAddedItemCount) {\n\t\treturn undefined;\n\t}\n\n\tconst addedItemCount = Number(rawAddedItemCount);\n\treturn Number.isInteger(addedItemCount) && addedItemCount > 0 ? addedItemCount : undefined;\n};\n","import React, { useEffect, useCallback, useMemo, useState, useContext } from 'react';\nimport { LinkButton } from '@faithlife/commerce-components';\nimport styled from 'styled-components';\nimport { useLocalization } from '../../../localization';\nimport { MinicartToggleProvider, useMinicartToggle } from '../mini-cart-v2/mini-cart-toggle-provider';\nimport { MiniCart } from '../mini-cart-v2';\nimport CartClient from '../../../clients/cart-client';\nimport { RouteContext } from '../../../route-context';\nimport { useLocation } from '../../../location';\nimport { useUniversalHeaderContext } from '../universal-header-context';\nimport eventAggregator from '../../../cart/utility/eventaggregator';\nimport { CartContextProvider } from '../../checkout-shared/useCartEffect';\nimport { CartSvg } from '../svgs';\nimport { notifyError, registerMiniCartState, notify } from '../../cart/notifications/use-cart-notifications-events';\nimport { clearStaleCartNotifications } from '../../cart/notifications/use-cart-notifications';\nimport { getAddedItemCountFromLocation } from '../../../util/get-added-item-count-from-location';\n\nconst CartLink = styled(LinkButton).attrs({\n\tintent: 'none',\n\tscale: 'sm',\n\ttouchTarget: 'sm',\n})`\n\tcolor: inherit;\n\tfont-family: inherit;\n\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t& > span {\n\t\tdisplay: contents;\n\t\tfont: inherit;\n\t\tletter-spacing: inherit;\n\t}\n`;\n\nexport default function CartIcon() {\n\treturn (\n\t\t<MinicartToggleProvider>\n\t\t\t<CartIconCore />\n\t\t</MinicartToggleProvider>\n\t);\n}\n\nconst CartIconCore = () => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Home._UniversalHeader');\n\tconst { routes } = useContext(RouteContext);\n\tconst { isMinicartOpen, openMinicart, toggleMinicart, clearMinicartOpenReason, setMinicartReason } =\n\t\tuseMinicartToggle();\n\n\tuseEffect(() => {\n\t\tclearStaleCartNotifications(isMinicartOpen);\n\t\treturn registerMiniCartState(() => isMinicartOpen);\n\t}, [isMinicartOpen]);\n\n\tconst { pathname, navigate } = useLocation();\n\tconst [cart, setCart] = useState(null);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst { antiForgeryToken } = useUniversalHeaderContext();\n\n\tconst cartData = useMemo(() => cart?.order, [cart]);\n\n\tconst isCartPage = useMemo(() => {\n\t\tif (!routes.Cart) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\treturn pathname === new URL(routes.Cart, window.location.origin).pathname;\n\t\t} catch {\n\t\t\treturn pathname === routes.Cart;\n\t\t}\n\t}, [pathname, routes.Cart]);\n\n\tconst cartItemCount = useMemo(\n\t\t() => cartData && (cartData.lineItems?.length || 0) + (cartData.subscribableLineItems?.length || 0),\n\t\t[cartData]\n\t);\n\n\tconst fetchCartData = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\ttry {\n\t\t\tconst data = await CartClient.getCartWithCredentials(routes.FetchCartUrl, antiForgeryToken);\n\t\t\tsetCart(data);\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to load cart:', error);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [routes, antiForgeryToken]);\n\n\tconst handleAddSku = useCallback((addSkuToCartUrl, event) => {\n\t\treturn CartClient.addSkuToCart(\n\t\t\taddSkuToCartUrl,\n\t\t\tevent.detail.quantity,\n\t\t\tevent.detail.payInFull,\n\t\t\tevent.detail.searchData,\n\t\t\tevent.detail.couponCodes\n\t\t);\n\t}, []);\n\n\tconst handleAddSkus = useCallback((addSkusToCartUrl, event) => {\n\t\treturn CartClient.addSkusToCart(\n\t\t\taddSkusToCartUrl,\n\t\t\tevent.detail.skuIds.map(id => ({ skuId: id, quantity: event.detail.quantity })),\n\t\t\tevent.detail.payInFull,\n\t\t\tevent.detail.searchData,\n\t\t\tevent.detail.couponCodes\n\t\t);\n\t}, []);\n\n\tconst handleAddSubscribableProductOptionId = useCallback(async (url, event) => {\n\t\tconst newMiniCartData = await CartClient.addSubscribableProductOptionIdToCart(\n\t\t\turl,\n\t\t\tevent.detail.subscribableProductOptionId,\n\t\t\tevent.detail.quantity,\n\t\t\tevent.detail.couponCodes\n\t\t);\n\n\t\treturn newMiniCartData;\n\t}, []);\n\n\tconst handleNotify = useCallback(errorMessage => {\n\t\tnotifyError(errorMessage);\n\t}, []);\n\n\tconst getAddedItemCount = useCallback(response => {\n\t\tconst addedItemCount = response?.items?.reduce((count, item) => {\n\t\t\tif (Number.isFinite(item?.quantity)) {\n\t\t\t\treturn count + item.quantity;\n\t\t\t}\n\n\t\t\treturn count + 1;\n\t\t}, 0);\n\t\treturn addedItemCount;\n\t}, []);\n\n\tconst handleAddItem = useCallback(\n\t\tasync e => {\n\t\t\tlet newMiniCartData;\n\t\t\tconst requestId = e.detail.requestId;\n\t\t\ttry {\n\t\t\t\tif (e.detail.addSubscribableProductOption) {\n\t\t\t\t\tawait handleAddSubscribableProductOptionId(\n\t\t\t\t\t\troutes.AddSubscribableProductOptionIdToCartAjax,\n\t\t\t\t\t\te.detail.addSubscribableProductOption\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (e.detail.skuRequests || e.detail.subscribableProductOptionRequests) {\n\t\t\t\t\tnewMiniCartData = await CartClient.addItemsToCart(routes.AddItemsToCartAjax, e.detail);\n\t\t\t\t} else {\n\t\t\t\t\tnewMiniCartData = e.detail.skuIds\n\t\t\t\t\t\t? e.detail.addToCartUrl\n\t\t\t\t\t\t\t? await handleAddSku(e.detail.addToCartUrl, e)\n\t\t\t\t\t\t\t: await handleAddSkus(routes.AddSkusToCartAjax, e)\n\t\t\t\t\t\t: await handleAddSubscribableProductOptionId(routes.AddSubscribableProductOptionIdToCartAjax, e);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (handleNotify) {\n\t\t\t\t\thandleNotify(resources.addToCartErrorOccurred || 'An error occurred adding items to cart');\n\t\t\t\t}\n\t\t\t\tdocument.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('faithlife.sites.cart.updateError', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tskuIds: e.detail.skuIds,\n\t\t\t\t\t\t\tsubscribableProductOptionId: e.detail.subscribableProductOptionId,\n\t\t\t\t\t\t\trequestId,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdocument.dispatchEvent(\n\t\t\t\tnew CustomEvent('faithlife.sites.cart.updated', {\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\taddedSkuIds: newMiniCartData.items?.flatMap(item => item.skus) ?? [],\n\t\t\t\t\t\taddedSubscribableProductOptionIds:\n\t\t\t\t\t\t\tnewMiniCartData.items?.map(item => item.subscribableProductOptionId) ?? [],\n\t\t\t\t\t\tstatus: newMiniCartData.addSkuToCartResultStatus,\n\t\t\t\t\t\trequestId,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tif (newMiniCartData.redirectUrl) {\n\t\t\t\twindow.location.href = newMiniCartData.redirectUrl;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst suppressMiniCartDrawer = newMiniCartData.suppressMiniCartDrawer || e.detail.suppressMiniCartDrawer;\n\n\t\t\tif (!suppressMiniCartDrawer && !isMinicartOpen && !isCartPage) {\n\t\t\t\topenMinicart({\n\t\t\t\t\treason: 'add-to-cart',\n\t\t\t\t\taddedItemCount: getAddedItemCount(newMiniCartData, e),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tawait fetchCartData();\n\n\t\t\tif (newMiniCartData.analyticsTelemetry) {\n\t\t\t\twindow.dataLayer.push(newMiniCartData.analyticsTelemetry);\n\t\t\t}\n\n\t\t\tif (newMiniCartData.notifications) {\n\t\t\t\tfor (const notification of newMiniCartData.notifications) {\n\t\t\t\t\tnotify(notification.message, notification.kind, notification.code);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\thandleAddSku,\n\t\t\thandleAddSkus,\n\t\t\thandleAddSubscribableProductOptionId,\n\t\t\tgetAddedItemCount,\n\t\t\troutes,\n\t\t\thandleNotify,\n\t\t\tresources,\n\t\t\tisMinicartOpen,\n\t\t\tisCartPage,\n\t\t\topenMinicart,\n\t\t\tfetchCartData,\n\t\t]\n\t);\n\n\tuseEffect(() => {\n\t\tfetchCartData();\n\t}, [fetchCartData]);\n\n\tuseEffect(() => {\n\t\tfunction handlePageShow(event) {\n\t\t\tif (event.persisted) {\n\t\t\t\tclearMinicartOpenReason();\n\t\t\t\tfetchCartData();\n\t\t\t}\n\t\t}\n\n\t\twindow.addEventListener('pageshow', handlePageShow);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('pageshow', handlePageShow);\n\t\t};\n\t}, [clearMinicartOpenReason, fetchCartData]);\n\n\tuseEffect(() => {\n\t\tdocument.addEventListener('faithlife.sites.addToCartButton.click', handleAddItem);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('faithlife.sites.addToCartButton.click', handleAddItem);\n\t\t};\n\t}, [handleAddItem]);\n\n\tuseEffect(() => {\n\t\tconst handleMinicartOpen = e => {\n\t\t\tif (!isMinicartOpen && !isCartPage) {\n\t\t\t\tconst addedItemCount = e?.detail?.addedItemCount;\n\t\t\t\topenMinicart(\n\t\t\t\t\tNumber.isFinite(addedItemCount) && addedItemCount > 0 ? { reason: 'add-to-cart', addedItemCount } : undefined\n\t\t\t\t);\n\t\t\t}\n\t\t\tfetchCartData();\n\t\t};\n\n\t\tdocument.addEventListener('faithlife.sites.minicart.open', handleMinicartOpen);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('faithlife.sites.minicart.open', handleMinicartOpen);\n\t\t};\n\t}, [isMinicartOpen, isCartPage, openMinicart, fetchCartData]);\n\n\tuseEffect(() => {\n\t\t// A signed-out add-to-cart for a group-delivered item sends the shopper through sign-in and back\n\t\t// here via a full-page redirect, so the in-memory 'faithlife.sites.minicart.open' dispatch from\n\t\t// use-add-to-cart-request.ts never happens for that trip. This marker lets the mini-cart still\n\t\t// open with the newly added item(s) once the page reloads.\n\t\tconst addedItemCount = getAddedItemCountFromLocation();\n\t\tif (addedItemCount === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst url = new URL(window.location.href);\n\t\turl.searchParams.delete('addedItemCount');\n\t\twindow.history.replaceState(window.history.state, '', url);\n\n\t\tif (!isMinicartOpen && !isCartPage) {\n\t\t\topenMinicart({ reason: 'add-to-cart', addedItemCount });\n\t\t}\n\t\tfetchCartData();\n\t\t// Only meant to run once, against the URL the page loaded with.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tuseEffect(() => {\n\t\tfunction handleCartUpdating() {\n\t\t\tsetIsLoading(true);\n\t\t\tclearMinicartOpenReason();\n\t\t}\n\n\t\tfunction handleCartUpdated(_event, data) {\n\t\t\tif (data) {\n\t\t\t\tsetCart(data?.order ? data : { order: data });\n\t\t\t}\n\t\t\tsetIsLoading(false);\n\t\t}\n\n\t\tfunction handleCartError() {\n\t\t\tsetIsLoading(false);\n\t\t}\n\n\t\teventAggregator.on('cart:updating', handleCartUpdating);\n\t\teventAggregator.on('cart:updated', handleCartUpdated);\n\t\teventAggregator.on('cart:error', handleCartError);\n\n\t\tfunction handleCartRemoved(_event, itemCount) {\n\t\t\tsetMinicartReason('item-removed', itemCount);\n\t\t}\n\n\t\tfunction handleCartSavedForLater(_event, itemCount) {\n\t\t\tsetMinicartReason('item-saved-for-later', itemCount);\n\t\t}\n\n\t\teventAggregator.on('cart:removed', handleCartRemoved);\n\t\teventAggregator.on('cart:savedForLater', handleCartSavedForLater);\n\n\t\treturn () => {\n\t\t\teventAggregator.off('cart:updating', handleCartUpdating);\n\t\t\teventAggregator.off('cart:updated', handleCartUpdated);\n\t\t\teventAggregator.off('cart:error', handleCartError);\n\t\t\teventAggregator.off('cart:removed', handleCartRemoved);\n\t\t\teventAggregator.off('cart:savedForLater', handleCartSavedForLater);\n\t\t};\n\t}, [clearMinicartOpenReason, openMinicart, setMinicartReason]);\n\n\tuseEffect(() => {\n\t\tif (isMinicartOpen) {\n\t\t\tdocument.body.style.overflow = 'hidden';\n\t\t} else {\n\t\t\tdocument.body.style.overflow = '';\n\t\t}\n\n\t\treturn () => {\n\t\t\tdocument.body.style.overflow = '';\n\t\t};\n\t}, [isMinicartOpen]);\n\n\tconst handleCartButtonClick = useCallback(\n\t\te => {\n\t\t\t// Ignore clicks with modifier keys, their default behavior should take precedence\n\t\t\tif (e.ctrlKey || e.shiftKey || e.metaKey) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\tif (isCartPage) {\n\t\t\t\tnavigate(routes.Cart);\n\t\t\t} else {\n\t\t\t\ttoggleMinicart();\n\t\t\t}\n\t\t},\n\t\t[isCartPage, navigate, routes.Cart, toggleMinicart]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<CartLink\n\t\t\t\thref={routes.Cart}\n\t\t\t\tonClick={handleCartButtonClick}\n\t\t\t\taria-label={resources.ShoppingCart}\n\t\t\t\tclassName=\"relative block cursor-pointer border-none bg-transparent py-2 lg:p-2\"\n\t\t\t>\n\t\t\t\t<CartSvg\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\tclassName=\"block h-4 w-auto lg:h-[20px] [&_[stroke]:not([stroke=none])]:stroke-current [&_[stroke]:not([stroke=none])]:transition-[stroke] [&_[stroke]:not([stroke=none])]:duration-150 [&_[stroke]:not([stroke=none])]:ease-in-out\"\n\t\t\t\t/>\n\t\t\t\t{cartItemCount > 0 && (\n\t\t\t\t\t<span className=\"absolute right-0 top-0 h-[15px] w-[15px] rounded-full bg-[var(--brand-blue)] text-center font-secondary text-[11px] font-bold tracking-normal text-white\">\n\t\t\t\t\t\t{cartItemCount}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</CartLink>\n\t\t\t<CartContextProvider cart={cart}>\n\t\t\t\t<MiniCart cartData={cartData} isLoading={isLoading} />\n\t\t\t</CartContextProvider>\n\t\t</>\n\t);\n};\n","import styled from 'styled-components';\n\nexport const SpacerCore = styled.span``;\n","import './amber-image';\nimport './email-capture-form';\nimport './custom-components.css';\n\nimport {\n\tregisterSelfContainedComponents,\n\tregisterBlogCarousel,\n\tregisterImpactReferralWidget,\n\ticonInsertMenuItems,\n} from '@faithlife/commerce-components';\nimport { Builder } from '@builder.io/react';\nimport { registerUniversalHeaderComponents } from '../../universal-header/universal-header-builder-components';\n\nconst { insertMenuItems } = registerSelfContainedComponents({ exclude: ['Section'] });\nconst blogCarouselRegisteredBySelfContained = insertMenuItems.some(({ name }) => name === 'BlogCarousel');\nif (!blogCarouselRegisteredBySelfContained) {\n\tregisterBlogCarousel();\n}\nconst { insertUniversalHeaderMenuItems } = registerUniversalHeaderComponents();\n\n// ImpactReferralWidget is no longer self-contained; the host app must supply the Impact\n// script URL and widget id. These are fixed integration values (not Builder author inputs),\n// so they are wired here in host code and kept hidden from content authors.\nregisterImpactReferralWidget({\n\tscriptUrl: 'https://utt.impactcdn.com/A5562253-b29c-4452-8222-80f20c177a531.js',\n\twidget: 'p/27871/w/referrerWidget',\n});\n\nBuilder.register('editor.settings', { customInsertMenu: true });\nBuilder.register('insertMenu', {\n\tname: 'Basics',\n\titems: [\n\t\t{ name: 'Text' },\n\t\t{ name: 'Image' },\n\t\t{ name: 'Button' },\n\t\t{ name: 'Columns' },\n\t\t{ name: 'Box' },\n\t\t{ name: 'Core:Section' },\n\t],\n});\nBuilder.register('insertMenu', {\n\tname: 'Commerce Components',\n\titems: [\n\t\t{ name: 'AmberImage' },\n\t\t{ name: 'EmailCaptureForm' },\n\t\t{ name: 'ImpactReferralWidget' },\n\t\t...(blogCarouselRegisteredBySelfContained ? [] : [{ name: 'BlogCarousel' }]),\n\t\t...insertMenuItems,\n\t],\n});\nBuilder.register('insertMenu', {\n\tname: 'Universal Header Components',\n\titems: [...insertUniversalHeaderMenuItems],\n});\nBuilder.register('insertMenu', {\n\tname: 'Media',\n\titems: [{ name: 'Video' }, { name: 'Embed' }],\n});\nBuilder.register('insertMenu', {\n\tname: 'Forms',\n\titems: [\n\t\t{ name: 'Form:Form' },\n\t\t{ name: 'Form:Input' },\n\t\t{ name: 'Form:SubmitButton' },\n\t\t{ name: 'Form:Label' },\n\t\t{ name: 'Form:Select' },\n\t\t{ name: 'Form:TextArea' },\n\t],\n});\nBuilder.register('insertMenu', {\n\tname: 'Code',\n\titems: [{ name: 'Custom Code' }, { name: 'Slot' }, { name: 'Symbol' }, { name: 'PersonalizationContainer' }],\n});\nBuilder.register('insertMenu', { name: 'Design Assets', items: iconInsertMenuItems });\n","import { Builder, withChildren } from '@builder.io/react';\nimport SiteLogo from './site-logo';\nimport MegaMenu from './mega-menu';\nimport MenuDropdown from './mega-menu/menu-dropdown';\nimport MenuColumn from './mega-menu/menu-column';\nimport MenuSection from './mega-menu/menu-section';\nimport MenuItem from './mega-menu/menu-item';\nimport UserSubscribeButton from './user-subscribe-button';\nimport SearchBar from './search-bar';\nimport FullContactInformation from './full-contact-information';\nimport LanguageSelector from './language-selector';\nimport AccountIcon from './account-icon';\nimport { withDivWrapper } from './with-div-wrapper';\nimport CartIcon from './cart-icon-v2';\nimport CheckoutSecureIndicator from './checkout-secure-indicator';\nimport Spacer from './spacer';\nimport UniversalHeader from '.';\n\nexport function registerUniversalHeaderComponents() {\n\tBuilder.registerComponent(withChildren(withDivWrapper(UniversalHeader)), {\n\t\tname: 'UniversalHeader',\n\t\tfriendlyName: 'Universal Header',\n\t\tnoWrap: true,\n\t\thideFromInsertMenu: false,\n\t\tcanHaveChildren: true,\n\t\tchildRequirements: {\n\t\t\tmessage:\n\t\t\t\t'Only Site Logo, SearchBar, Contact Info, Language Selector, Account Icon, Cart Icon, Checkout Secure Indicator, Mega Menu, or Header Subscribe Button may be direct children of the Universal Header.',\n\t\t\tquery: {\n\t\t\t\t'component.name': {\n\t\t\t\t\t$in: [\n\t\t\t\t\t\t'SiteLogo',\n\t\t\t\t\t\t'SearchBar',\n\t\t\t\t\t\t'Spacer',\n\t\t\t\t\t\t'ContactInfo',\n\t\t\t\t\t\t'LanguageSelector',\n\t\t\t\t\t\t'AccountIcon',\n\t\t\t\t\t\t'CartIcon',\n\t\t\t\t\t\t'CheckoutSecureIndicator',\n\t\t\t\t\t\t'MegaMenu',\n\t\t\t\t\t\t'UserSubscribeButton',\n\t\t\t\t\t\t'PersonalizationContainer',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t});\n\tBuilder.registerComponent(withDivWrapper(SiteLogo), {\n\t\tname: 'SiteLogo',\n\t\tfriendlyName: 'Site Logo',\n\t\tnoWrap: true,\n\t\trequiresParent: {\n\t\t\tmessage: 'Site Logo may only be used in a Universal Header.',\n\t\t\tcomponent: 'UniversalHeader',\n\t\t},\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: 'imageUrl',\n\t\t\t\tfriendlyName: 'Logo Image Url',\n\t\t\t\ttype: 'url',\n\t\t\t\trequired: true,\n\t\t\t\thelperText: 'URL of image to display as the site logo',\n\t\t\t\tdefaultValue: 'https://files.logoscdn.com/v1/assets/14904106/optimized?share=OdlwiB5OxhoI1yI0',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'href',\n\t\t\t\tfriendlyName: 'Logo Link Url',\n\t\t\t\ttype: 'url',\n\t\t\t\trequired: true,\n\t\t\t\thelperText: 'Destination URL when the logo is clicked',\n\t\t\t\tdefaultValue: '/',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'title',\n\t\t\t\tfriendlyName: 'Logo Title',\n\t\t\t\ttype: 'string',\n\t\t\t\trequired: true,\n\t\t\t\thelperText: 'What to show when the user hovers over the logo. Also used by screen readers for accessibility.',\n\t\t\t\tdefaultValue: 'Logos Bible Study',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'width',\n\t\t\t\tfriendlyName: 'Logo Image Width',\n\t\t\t\ttype: 'number',\n\t\t\t\trequired: true,\n\t\t\t\thelperText:\n\t\t\t\t\t'Intrinsic width of the logo image, in pixels. Used to reserve space and prevent layout shift while the image loads.',\n\t\t\t\tdefaultValue: 258,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'height',\n\t\t\t\tfriendlyName: 'Logo Image Height',\n\t\t\t\ttype: 'number',\n\t\t\t\trequired: true,\n\t\t\t\thelperText:\n\t\t\t\t\t'Intrinsic height of the logo image, in pixels. Used to reserve space and prevent layout shift while the image loads.',\n\t\t\t\tdefaultValue: 62,\n\t\t\t},\n\t\t],\n\t});\n\tBuilder.registerComponent(withDivWrapper(SearchBar, 'grow'), {\n\t\tname: 'SearchBar',\n\t\tfriendlyName: 'Search Bar',\n\t\tnoWrap: true,\n\t\trequiresParent: {\n\t\t\tmessage: 'Search Bar may only be used in a Universal Header.',\n\t\t\tcomponent: 'UniversalHeader',\n\t\t},\n\t});\n\tBuilder.registerComponent(withDivWrapper(Spacer, 'grow'), {\n\t\tname: 'Spacer',\n\t\tfriendlyName: 'Spacer',\n\t\tnoWrap: true,\n\t\trequiresParent: {\n\t\t\tmessage: 'Spacer may only be used in a Universal Header.',\n\t\t\tcomponent: 'UniversalHeader',\n\t\t},\n\t});\n\tBuilder.registerComponent(withDivWrapper(FullContactInformation), {\n\t\tname: 'ContactInfo',\n\t\tfriendlyName: 'Contact Info',\n\t\tnoWrap: true,\n\t\trequiresParent: {\n\t\t\tmessage: 'Contact Info may only be used in a Universal Header.',\n\t\t\tcomponent: 'UniversalHeader',\n\t\t},\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: 'useDropDown',\n\t\t\t\tfriendlyName: 'Use Dropdown',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefaultValue: true,\n\t\t\t\thelperText: 'Whether to display contact info in a dropdown popup.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'displayDownArrow',\n\t\t\t\tfriendlyName: 'Display Down Arrow',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefaultValue: true,\n\t\t\t\thelperText: 'Whether to show a down arrow indicator on the button.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'phoneNumber',\n\t\t\t\tfriendlyName: 'Phone Number',\n\t\t\t\ttype: 'string',\n\t\t\t\thelperText: 'The phone number to display.',\n\t\t\t\tdefaultValue: '888-563-0382',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'businessHours',\n\t\t\t\tfriendlyName: 'Business Hours',\n\t\t\t\ttype: 'list',\n\t\t\t\thelperText: 'List of business hour entries to display in the popup.',\n\t\t\t\tsubFields: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'headerMessage',\n\t\t\t\t\t\tfriendlyName: 'Header Message',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\thelperText: 'Header label for this business hours entry.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'startDayOfWeek',\n\t\t\t\t\t\tfriendlyName: 'Start Day of Week',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\thelperText: 'The first day of the business hours range.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'endDayOfWeek',\n\t\t\t\t\t\tfriendlyName: 'End Day of Week',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\thelperText: 'The last day of the business hours range.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'startTime',\n\t\t\t\t\t\tfriendlyName: 'Start Time',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\thelperText: 'Opening time for the business hours range.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'endTime',\n\t\t\t\t\t\tfriendlyName: 'End Time',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\thelperText: 'Closing time for the business hours range.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'specialMessage',\n\t\t\t\t\t\tfriendlyName: 'Special Message',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\thelperText: 'An optional special message to display for this entry.',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'contactInfo',\n\t\t\t\tfriendlyName: 'Contact Info',\n\t\t\t\ttype: 'list',\n\t\t\t\thelperText: 'List of contact methods to display in the popup.',\n\t\t\t\tsubFields: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'contactType',\n\t\t\t\t\t\tfriendlyName: 'Contact Type',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\thelperText: 'The label for this contact method (e.g. \"Call\", \"Chat\").',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'phoneNumber',\n\t\t\t\t\t\tfriendlyName: 'Phone Number',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\thelperText: 'Phone number for this contact method. If set, displays as a tel: link.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'link',\n\t\t\t\t\t\tfriendlyName: 'Link',\n\t\t\t\t\t\ttype: 'url',\n\t\t\t\t\t\thelperText: 'URL for this contact method. Used when no phone number is provided.',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t});\n\tBuilder.registerComponent(withDivWrapper(LanguageSelector), {\n\t\tname: 'LanguageSelector',\n\t\tfriendlyName: 'Language Selector',\n\t\tnoWrap: true,\n\t\trequiresParent: {\n\t\t\tmessage: 'Language Selector may only be used in a Universal Header.',\n\t\t\tcomponent: 'UniversalHeader',\n\t\t},\n\t});\n\tBuilder.registerComponent(withDivWrapper(AccountIcon), {\n\t\tname: 'AccountIcon',\n\t\tfriendlyName: 'Account Icon',\n\t\tnoWrap: true,\n\t\trequiresParent: {\n\t\t\tmessage: 'AccountIcon may only be used in a Universal Header.',\n\t\t\tcomponent: 'UniversalHeader',\n\t\t},\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: 'applicationUrls',\n\t\t\t\tfriendlyName: 'Application Urls',\n\t\t\t\thelperText: 'Urls where the user should use or download Logos/Verbum applications',\n\t\t\t\ttype: 'object',\n\t\t\t\tsubFields: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'desktop',\n\t\t\t\t\t\ttype: 'url',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'mobile',\n\t\t\t\t\t\ttype: 'url',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'web',\n\t\t\t\t\t\ttype: 'url',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefaultValue: {\n\t\t\t\t\tdesktop: '/install',\n\t\t\t\t\tmobile: '/app',\n\t\t\t\t\tweb: 'https://app.logos.com',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t});\n\tBuilder.registerComponent(withDivWrapper(CartIcon), {\n\t\tname: 'CartIcon',\n\t\tfriendlyName: 'Cart Icon',\n\t\tnoWrap: true,\n\t\trequiresParent: {\n\t\t\tmessage: 'Cart Icon may only be used in a Universal Header.',\n\t\t\tcomponent: 'UniversalHeader',\n\t\t},\n\t});\n\tBuilder.registerComponent(withDivWrapper(CheckoutSecureIndicator), {\n\t\tname: 'CheckoutSecureIndicator',\n\t\tfriendlyName: 'Checkout Secure Indicator',\n\t\tnoWrap: true,\n\t\trequiresParent: {\n\t\t\tmessage: 'Checkout Secure Indicator may only be used in a Universal Header.',\n\t\t\tcomponent: 'UniversalHeader',\n\t\t},\n\t});\n\tBuilder.registerComponent(withChildren(withDivWrapper(MegaMenu)), {\n\t\tname: 'MegaMenu',\n\t\tfriendlyName: 'Mega Menu',\n\t\tcanHaveChildren: true,\n\t\tnoWrap: true,\n\t\tchildRequirements: {\n\t\t\tmessage: 'Only Menu Dropdowns or Menu Items are allowed in the Mega Menu.',\n\t\t\tquery: {\n\t\t\t\t'component.name': { $in: ['MegaMenuDropdown', 'MegaMenuItem', 'PersonalizationContainer'] },\n\t\t\t},\n\t\t},\n\t\trequiresParent: {\n\t\t\tmessage: 'Mega Menu may only be used in a Universal Header.',\n\t\t\tcomponent: 'UniversalHeader',\n\t\t},\n\t});\n\tBuilder.registerComponent(withChildren(withDivWrapper(MenuDropdown)), {\n\t\tname: 'MegaMenuDropdown',\n\t\tfriendlyName: 'Menu Dropdown',\n\t\tcanHaveChildren: true,\n\t\tnoWrap: true,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: 'title',\n\t\t\t\tfriendlyName: 'Title',\n\t\t\t\ttype: 'text',\n\t\t\t\trequired: true,\n\t\t\t\thelperText: 'The display title of the menu.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'variant',\n\t\t\t\tfriendlyName: 'Variant',\n\t\t\t\ttype: 'text',\n\t\t\t\tenum: ['Bold', 'Sale'],\n\t\t\t\thelperText: 'The visual variant of the menu title.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'stableId',\n\t\t\t\tfriendlyName: 'Stable ID',\n\t\t\t\ttype: 'text',\n\t\t\t\thelperText: 'A stable unique identifier for the menu.',\n\t\t\t},\n\t\t],\n\t\tchildRequirements: {\n\t\t\tmessage: 'Only Menu Columns are allowed in a Menu Dropdown.',\n\t\t\tquery: {\n\t\t\t\t'component.name': { $in: ['MegaMenuColumn', 'PersonalizationContainer'] },\n\t\t\t},\n\t\t},\n\t\trequiresParent: {\n\t\t\tmessage: 'Menu Dropdowns may only be used in Mega Menus.',\n\t\t\tcomponent: 'MegaMenu',\n\t\t},\n\t});\n\tBuilder.registerComponent(withChildren(withDivWrapper(MenuColumn)), {\n\t\tname: 'MegaMenuColumn',\n\t\tfriendlyName: 'Menu Column',\n\t\tcanHaveChildren: true,\n\t\tnoWrap: true,\n\t\tchildRequirements: {\n\t\t\tmessage: 'Only Menu Sections are allowed in a Menu Column.',\n\t\t\tquery: {\n\t\t\t\t'component.name': { $in: ['MegaMenuSection', 'PersonalizationContainer'] },\n\t\t\t},\n\t\t},\n\t\trequiresParent: {\n\t\t\tmessage: 'Menu Columns may only be used in Menu Dropdowns.',\n\t\t\tcomponent: 'MegaMenuDropdown',\n\t\t},\n\t});\n\tBuilder.registerComponent(withChildren(withDivWrapper(MenuSection)), {\n\t\tname: 'MegaMenuSection',\n\t\tfriendlyName: 'Menu Section',\n\t\tcanHaveChildren: true,\n\t\tnoWrap: true,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: 'title',\n\t\t\t\tfriendlyName: 'Title',\n\t\t\t\ttype: 'text',\n\t\t\t\thelperText: 'The heading text displayed above the section links.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'stableId',\n\t\t\t\tfriendlyName: 'Stable ID',\n\t\t\t\ttype: 'text',\n\t\t\t\thelperText: 'A stable unique identifier for the menu section.',\n\t\t\t},\n\t\t],\n\t\tchildRequirements: {\n\t\t\tmessage: 'Only Menu Items are allowed in a Menu Section.',\n\t\t\tquery: {\n\t\t\t\t'component.name': { $in: ['MegaMenuItem', 'PersonalizationContainer'] },\n\t\t\t},\n\t\t},\n\t\trequiresParent: {\n\t\t\tmessage: 'Menu Sections may only be used in Menu Columns.',\n\t\t\tcomponent: 'MegaMenuColumn',\n\t\t},\n\t});\n\tBuilder.registerComponent(withDivWrapper(MenuItem), {\n\t\tname: 'MegaMenuItem',\n\t\tfriendlyName: 'Menu Item',\n\t\tnoWrap: true,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: 'text',\n\t\t\t\tfriendlyName: 'Text',\n\t\t\t\ttype: 'string',\n\t\t\t\trequired: true,\n\t\t\t\thelperText: 'The display text for the menu item.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'url',\n\t\t\t\tfriendlyName: 'URL',\n\t\t\t\ttype: 'url',\n\t\t\t\trequired: true,\n\t\t\t\thelperText: 'The URL this menu item links to.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'variant',\n\t\t\t\tfriendlyName: 'Variant',\n\t\t\t\ttype: 'enum',\n\t\t\t\tenum: ['Bold', 'Sale'],\n\t\t\t\thelperText: 'The visual variant of the menu item.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'openInNewTab',\n\t\t\t\tfriendlyName: 'Open in New Tab',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefaultValue: false,\n\t\t\t\thelperText: 'Whether the link should open in a new tab.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'stableId',\n\t\t\t\tfriendlyName: 'Stable ID',\n\t\t\t\ttype: 'text',\n\t\t\t\thelperText: 'A stable unique identifier for the menu item.',\n\t\t\t},\n\t\t],\n\t\trequiresParent: {\n\t\t\tmessage: 'Menu Items may only be used in Mega Menus or Menu Sections.',\n\t\t\tquery: {\n\t\t\t\t'component.name': { $in: ['MegaMenu', 'MegaMenuSection'] },\n\t\t\t},\n\t\t},\n\t});\n\tBuilder.registerComponent(withDivWrapper(UserSubscribeButton), {\n\t\tname: 'UserSubscribeButton',\n\t\tfriendlyName: 'Header Subscribe Button',\n\t\tnoWrap: true,\n\t\thideFromInsertMenu: false,\n\t\tcanHaveChildren: false,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: 'desktopUrl',\n\t\t\t\tfriendlyName: 'Desktop URL',\n\t\t\t\thelperText: 'URL where the user can install the desktop Logos Bible Study application.',\n\t\t\t\ttype: 'string',\n\t\t\t\trequired: true,\n\t\t\t\tdefaultValue: '/get-started',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'onlineUrl',\n\t\t\t\tfriendlyName: 'Online URL',\n\t\t\t\thelperText: 'URL where the user can use the web version of the Logos Bible Study application.',\n\t\t\t\ttype: 'string',\n\t\t\t\trequired: true,\n\t\t\t\tdefaultValue: 'https://app.logos.com',\n\t\t\t},\n\t\t],\n\t\trequiresParent: {\n\t\t\tmessage: 'Header Subscribe Button may only be used in a Universal Header.',\n\t\t\tcomponent: 'UniversalHeader',\n\t\t},\n\t});\n\n\treturn {\n\t\tinsertUniversalHeaderMenuItems: [\n\t\t\t{ name: 'UniversalHeader' },\n\t\t\t{ name: 'SiteLogo' },\n\t\t\t{ name: 'SearchBar' },\n\t\t\t{ name: 'Spacer' },\n\t\t\t{ name: 'ContactInfo' },\n\t\t\t{ name: 'LanguageSelector' },\n\t\t\t{ name: 'AccountIcon' },\n\t\t\t{ name: 'CartIcon' },\n\t\t\t{ name: 'CheckoutSecureIndicator' },\n\t\t\t{ name: 'MegaMenu' },\n\t\t\t{ name: 'MegaMenuDropdown' },\n\t\t\t{ name: 'MegaMenuColumn' },\n\t\t\t{ name: 'MegaMenuSection' },\n\t\t\t{ name: 'MegaMenuItem' },\n\t\t\t{ name: 'UserSubscribeButton' },\n\t\t],\n\t};\n}\n","import React from 'react';\nimport { Link, Image } from './styled';\n\nexport default function SiteLogo(props) {\n\tconst { imageUrl, href, title, width, height } = props;\n\treturn (\n\t\t<>\n\t\t\t{imageUrl && (\n\t\t\t\t<Link href={href || '/'} title={title}>\n\t\t\t\t\t<Image src={imageUrl} alt={title} width={width} height={height} />\n\t\t\t\t</Link>\n\t\t\t)}\n\t\t</>\n\t);\n}\n","import React from 'react';\nimport { SpacerCore } from './styled';\n\nexport default function Spacer() {\n\treturn (\n\t\t<>\n\t\t\t<SpacerCore />\n\t\t</>\n\t);\n}\n","import React, { useRef, useCallback, useState } from 'react';\n\nimport { useLocalization } from '../../../localization';\nimport {\n\tContactInfoContainer,\n\tLink,\n\tPaddedLink,\n\tButton,\n\tIcon,\n\tDownArrow,\n\tContactInfoPopup,\n\tLabel,\n\tBoldedLabel,\n\tBusinessHours,\n\tSpecialMessage,\n\tContactInfo,\n\tTitle,\n\tBusinessHoursContainer,\n\tTelephoneLink,\n} from './styled';\n\nexport default function FullContactInformation(props) {\n\tconst { displayDownArrow = false, useDropDown = true, businessHours, phoneNumber, contactInfo, isMobile } = props;\n\n\tconst resources = useLocalization('CommerceWeb.Resources.Home._UniversalHeader');\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst popupRef = useRef();\n\tconst title = contactInfo ? resources.contactInfoHeader : phoneNumber;\n\n\tconst handleButtonClick = useCallback(() => {\n\t\tsetIsOpen(wasPreviouslyOpen => !wasPreviouslyOpen);\n\t}, [setIsOpen]);\n\n\tconst handleBlur = useCallback(\n\t\te => {\n\t\t\tconst currentTarget = e.currentTarget;\n\t\t\tconst popup = popupRef.current;\n\t\t\tconst root = popup?.getRootNode() ?? document;\n\n\t\t\t// Using a setTimeout here to allow the user to click on elements in the popup before this blur method hides it\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!currentTarget.contains(root.activeElement) && popup && !popup.contains(root.activeElement)) {\n\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t},\n\t\t[popupRef, setIsOpen]\n\t);\n\n\treturn (\n\t\t<ContactInfoContainer>\n\t\t\t{useDropDown ? (\n\t\t\t\t<>\n\t\t\t\t\t<Button onClick={handleButtonClick} onBlur={handleBlur}>\n\t\t\t\t\t\t<Icon alt={resources.phoneIconAltText} />\n\t\t\t\t\t\t<Title>{title}</Title>\n\t\t\t\t\t\t{displayDownArrow && <DownArrow open={isOpen} />}\n\t\t\t\t\t</Button>\n\t\t\t\t\t{isOpen && (\n\t\t\t\t\t\t<ContactInfoPopup ref={popupRef}>\n\t\t\t\t\t\t\t<ContactInfoContainer>\n\t\t\t\t\t\t\t\t{contactInfo ? (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<BoldedLabel>{resources.contactInfoLabel}</BoldedLabel>\n\t\t\t\t\t\t\t\t\t\t{contactInfo.map(ci => (\n\t\t\t\t\t\t\t\t\t\t\t<ContactInfo key={ci.contactType}>\n\t\t\t\t\t\t\t\t\t\t\t\t{ci.phoneNumber ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Label>{`${ci.contactType}:`}</Label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<PaddedLink href={`tel:${ci.phoneNumber}`}>{ci.phoneNumber}</PaddedLink>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Link href={ci.link}>{ci.contactType}</Link>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</ContactInfo>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<Link href={`tel:${phoneNumber}`}>{phoneNumber}</Link>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ContactInfoContainer>\n\t\t\t\t\t\t\t{businessHours ? (\n\t\t\t\t\t\t\t\t<BusinessHoursContainer>\n\t\t\t\t\t\t\t\t\t<BoldedLabel>{resources.businessHours}</BoldedLabel>\n\t\t\t\t\t\t\t\t\t{businessHours.map(bh => (\n\t\t\t\t\t\t\t\t\t\t<BusinessHours key={bh.startDayOfWeek}>\n\t\t\t\t\t\t\t\t\t\t\t{bh.headerMessage && <div>{bh.headerMessage}</div>}\n\t\t\t\t\t\t\t\t\t\t\t{bh.startDayOfWeek && (\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{bh.startDayOfWeek}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{bh.endDayOfWeek ? <span>{' - ' + bh.endDayOfWeek}</span> : null}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{bh.startTime && (\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{bh.startTime}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{bh.endTime ? <span>{' - ' + bh.endTime}</span> : null}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{bh.specialMessage && <SpecialMessage>{bh.specialMessage}</SpecialMessage>}\n\t\t\t\t\t\t\t\t\t\t</BusinessHours>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</BusinessHoursContainer>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</ContactInfoPopup>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<TelephoneLink href={`tel:${phoneNumber}`}>\n\t\t\t\t\t<Icon alt={resources.phoneIconAltText} />\n\t\t\t\t\t{!isMobile && <Title>{phoneNumber}</Title>}\n\t\t\t\t</TelephoneLink>\n\t\t\t)}\n\t\t</ContactInfoContainer>\n\t);\n}\n","import React from 'react';\nimport { LockIcon } from '@faithlife/commerce-components';\nimport { useLocalization } from '../../../localization';\n\nexport default function CheckoutSecureIndicator() {\n\tconst resources = useLocalization('CommerceWeb.Resources.Home._UniversalHeader');\n\n\treturn (\n\t\t<div className=\"flex items-center gap-2.5\">\n\t\t\t<LockIcon size={16} color=\"black\" />\n\t\t\t<span className=\"font-['Source_Sans_Pro',sans-serif] text-primary-500 text-[16px]\">\n\t\t\t\t{resources.secureCheckout}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n","import React from 'react';\nimport { useMegaMenuRenderMode } from '../render-mode-context';\nimport { MenuSectionList } from './styled';\n\nexport default function MenuColumn(props) {\n\tconst { children } = props;\n\tif (useMegaMenuRenderMode() === 'mobile') {\n\t\treturn <>{children}</>;\n\t}\n\treturn <MenuSectionList>{children}</MenuSectionList>;\n}\n","import React from 'react';\nimport { AnimatedClientNotification, removeNotification } from '../../notifications/client-notifications';\nimport ErrorBoundary from '../../error-boundary';\nimport { CartNotificationLocation } from './types';\nimport { useCartNotifications } from './use-cart-notifications';\n\nconst CartNotificationsCore = ({\n\tnotificationLocation,\n\tclassName,\n}: {\n\tnotificationLocation: CartNotificationLocation;\n\tclassName?: string;\n}) => {\n\tconst { cartNotifications } = useCartNotifications(notificationLocation);\n\n\tif (cartNotifications.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t{cartNotifications.map(notification => (\n\t\t\t\t<AnimatedClientNotification\n\t\t\t\t\tkey={notification.id}\n\t\t\t\t\tnotification={notification}\n\t\t\t\t\tonRemove={() => removeNotification(notification.id)}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nexport const MiniCartNotifications = () => (\n\t<ErrorBoundary>\n\t\t<CartNotificationsCore notificationLocation={CartNotificationLocation.MiniCart} className=\"pointer-events-auto\" />\n\t</ErrorBoundary>\n);\n\nconst CartNotifications = () => (\n\t<ErrorBoundary>\n\t\t<CartNotificationsCore notificationLocation={CartNotificationLocation.Page} />\n\t</ErrorBoundary>\n);\n\nexport default CartNotifications;\n","import { removeScopedNotifications, useClientNotifications } from '../../notifications/client-notifications';\nimport { CART_NOTIFICATION_SCOPE, CartNotificationLocation } from './types';\n\n// Clears notifications from the location that is no longer visible after a minicart toggle:\n// when the minicart opens, page-scoped notifications are stale; when it closes, minicart-scoped ones are.\nexport const clearStaleCartNotifications = (isMiniCartOpen: boolean) => {\n\tremoveScopedNotifications(\n\t\tCART_NOTIFICATION_SCOPE,\n\t\tisMiniCartOpen ? CartNotificationLocation.Page : CartNotificationLocation.MiniCart\n\t);\n};\n\nexport const useCartNotifications = (notificationLocation: CartNotificationLocation) => {\n\tconst { scopedNotifications } = useClientNotifications();\n\tconst cartNotifications =\n\t\tscopedNotifications[CART_NOTIFICATION_SCOPE]?.filter(\n\t\t\tnotification => notification.scope?.location === notificationLocation\n\t\t) ?? [];\n\n\treturn { cartNotifications };\n};\n","export function safeJsonParse<T = any>(json: string | null | undefined): T | null {\n\tif (json === null || json === undefined) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\treturn JSON.parse(json) as T;\n\t} catch {\n\t\treturn null;\n\t}\n}\n"],"names":["supportedValueTypes","Set","e","value","key","has","Error","encodeURIComponent","module","exports","pattern","params","usedParams","formatted","replace","match","add","query","Object","entries","filter","map","join","separator","includes","ObjectFit","Contain","Cover","ObjectPosition","Center","Top","Bottom","Left","Right","TopLeft","TopRight","BottomLeft","BottomRight","objectFitCssValues","objectPositionCssValues","AmberImageImpl","props","src","srcType","alt","width","height","objectFit","objectPosition","highPriority","finalSrc","style","maxWidth","aspectRatio","undefined","React","Image","belowTheFold","fetchPriority","sizes","mobile","desktop","labelByObjectFit","labelByObjectPosition","AmberImage","Builder","registerComponent","name","friendlyName","image","inputs","type","helperText","required","defaultValue","enum","values","label","advanced","registerAmberImageWithBuilder","result","valid","message","test","url","URL","isAmberHost","host","pathname","endsWith","searchParams","toAmberCdnUrl","validateBuilderAmberImageProps","isEditing","borderRadius","borderLeftWidth","borderColor","backgroundColor","padding","color","fontSize","createBuilderAmberImageComponent","register","BuilderEmailCaptureForm","MailingListsApiImpl","salesforcePreferences","validateBuilderEmailCaptureFormProps","_valid","_message","rest","createBuilderEmailCaptureFormComponent","routes","useContext","RouteContext","action","MailingListsSubscribe","EmailCaptureForm","_extends","redirectUrl","onSubmit","async","formData","fetch","method","headers","body","URLSearchParams","toString","ok","successResetMs","children","formName","window","location","href","dataExtensionKey","withChildren","canHaveChildren","defaultChildren","layerName","component","options","labelText","inputType","placeholderText","isRequired","errorMessages","Link","styled","LinkButton","attrs","intent","scale","touchTarget","withConfig","displayName","componentId","theme","mediaQueries","img","Menus","div","role","space","MENU_VARIANTS","freeze","bold","sale","Title","Text","as","textStyle","fonts","normal","colors","headerNavMobileDropdownBackground","gray4","headerNavMobileText","black","css","Chevron","ChevronIcon","Sections","SubMenuPanel","headerNavMobileBackground","white","open","SubMenuPanelHeader","Button","button","brandColor","MenuColumnList","isMultiColumn","MenuDropdownListItem","MenuTitle","headerText","flGray","CloseButton","CloseButtonImage","CloseSvg","nextMenuId","MobileMenuDropdown","title","stableId","variant","isOpen","setIsOpen","useState","MobileMenu","id","MobileTitle","onClick","currentValue","MobileChevron","MobileSubMenuPanel","MobileButton","MobileSubMenuPanelHeader","MobileSections","DesktopMenuDropdown","menuContainerRef","useRef","menuIdRef","current","menuId","useOpenMenu","openMenu","useCallback","closeMenu","handleClick","useEffect","handleClickOutside","event","actualTarget","composedPath","contains","document","addEventListener","removeEventListener","ref","Children","count","MenuSectionList","HeaderButton","Links","LinkItem","MenuSectionListItem","MenuSectionTitle","span","MenuSectionLinksList","MobileMenuSection","isSectionOpen","setIsSectionOpen","handleSectionHeaderClick","links","MobileLinks","MegaMenuSectionProvider","MobileHeaderButton","DesktopMenuSection","MenuLinkListItem","MenuLink","$sale","$bold","MobileMenuItem","openInNewTab","text","resolveUri","useUniversalHeaderContext","isInSection","useIsInMegaMenuSection","resolvedUrl","MobileLinkItem","MobileLink","target","MobileMenuLink","DesktopMenuItem","apiClientVersion","makeEmptyResult","request","hits","nbHits","nbPages","page","processingTimeMS","hitsPerPage","exhaustiveNbHits","facets","index","indexName","fadeIn","keyframes","spin","tabletBreakpoint","SearchBarWrapper","$openMobileSearch","MobileSearchButton","SearchDropdown","$visible","$hasItems","SearchForm","form","FieldWrapper","InputWrapper","SearchInput","input","SubmitButton","ClearButton","HitsList","ul","HitItem","li","$isActive","SpinnerWrapper","SpinnerSvg","svg","ScreenReaderOnly","ChildrenWrapper","emptyServerState","initialResults","Spinner","viewBox","fill","xmlns","d","stroke","strokeWidth","strokeLinecap","QuickSearchInner","headerHeight","headerHeightProp","productUrl","clearLabel","processingLabel","searchBarLabel","openMobileSearch","setOpenMobileSearch","navigate","useLocation","ownership","get","useSearchBox","items","useHits","status","setUiState","useInstantSearch","inputValue","setInputValue","inputRef","isFocused","setIsFocused","focusHitIndex","setFocusHitIndex","resources","useLocalization","searchPlaceHolder","searchByKeywordTitleEtc","searchUrl","Search","focus","handleSearchInput","useDebouncedCallback","handleTermClear","handleMobileSearch","prev","arrowKeys","isSearchStalled","showHits","Boolean","length","hasItems","className","onBlur","setTimeout","activeElement","onFocus","Configure","onKeyDownCapture","preventDefault","delta","next","hit","String","productId","top","position","onReset","stopPropagation","autoCapitalize","autoComplete","autoCorrect","onChange","currentTarget","placeholder","spellCheck","initialValue","maxLength","MagnifyingGlassSvg","display","objectID","propTypes","PropTypes","isMenuOpen","onNavigate","searchPlaceholder","SearchBar","innerProps","algoliaAppId","algoliaAppKey","algoliaIndexName","algoliaSearchParametersJson","searchClient","useMemo","skipEmptyQuerySearchClient","client","appId","apiKey","compression","_compression","browserOptions","appIdOption","apiKeyOption","authMode","algoliaAgents","auth","common","PA","transporter","zf","hosts","accept","protocol","concat","k4","algoliaAgent","F1","version","baseHeaders","baseQueryParameters","queryParameters","clearCache","Promise","all","requestsCache","clear","responsesCache","then","_ua","addAlgoliaAgent","segment","setClientApiKey","searchForHits","searchMethodParams","requestOptions","this","search","searchForFacets","customPost","path","parameters","data","getRecommendations","getRecommendationsParams","Array","isArray","requests","useReadTransporter","cacheable","newSignatureRequest","legacyRequest","facet","maxFacetHits","facetQuery","createLiteClient","timeouts","connect","read","write","logger","oh","requester","requester_xhr","D","of","serializable","hostsCache","v2","caches","jY","algoliasearch","every","getQuery","resolve","results","algoliaSearchParameters","safeJsonParse","InstantSearchSSRProvider","InstantSearch","future","preserveSharedStateOnUnmount","attributesToHighlight","attributesToRetrieve","distinct","queryType","restrictSearchableAttributes","search_bar","ContactInfoContainer","BusinessHoursContainer","lineHeights","TelephoneLink","PaddedLink","tablet","Icon","HandsetSvg","DownArrow","ContactInfoPopup","Label","BoldedLabel","SpecialMessage","BusinessHours","ContactInfo","Container","LinkList","LinkAnchor","gray67","Separator","SeparatorInner","gray21","gray14","account_dropdown","AccountDropdown","web","applicationUrls","ProfileUrl","profile","SignInAndSecurityUrl","signInAndSecurity","AccountBillingUrl","billingInfo","AccountOrdersUrl","orderHistory","AccountWishlistsUrl","wishLists","EmailListsUrl","EmailLists","AccountSubscriptionsUrl","subscriptions","downloadForMacPc","downloadForMobile","useOnTheWeb","SignoutUrl","rel","signOut","UserAvatar","avatarUrl","MobileAccountDropdownContainer","Scrim","AccountButton","AccountLink","ProfileIcon","ProfileSvg","SignInLabel","AccountIcon","isAccountDropdownOpen","setIsAccountDropdownOpen","accountButtonRef","isDesktop","isMobile","useScreensize","handleUserAvatarClick","handleAccountDropdownFocusAway","handleMobileScrimClick","scrollTo","behavior","querySelector","overflow","domainUri","currentUserInfo","userId","userInfo","useCurrentUser","signInUrl","formatUri","SignInUrl","returnUrl","tabIndex","Popover","reference","placement","onFocusAway","hideArrow","modifiers","offset","signIn","withDivWrapper","WrappedComponent","attributes","MinicartToggleContext","createContext","useMinicartToggle","context","MinicartToggleProvider","minicartState","setMinicartState","isMinicartOpen","minicartOpenReason","addedItemCount","openMinicart","hasAddMetadata","reason","Number","isFinite","closeMinicart","toggleMinicart","prevState","clearMinicartOpenReason","setMinicartReason","itemCount","Provider","getDeepActiveElement","active","shadowRoot","MiniCart","cartData","isLoading","isCartLoading","setIsLoading","panelRef","useLayoutEffect","panel","openerElement","HTMLElement","blur","handleKeyDown","focusable","from","querySelectorAll","getFocusableElements","first","last","shiftKey","handleFocusIn","isConnected","requestAnimationFrame","useMiniCartNavigation","isMiniCartLoading","isInitialLoad","hasCartItems","lineItems","subscribableLineItems","totalItemCount","addToCartMessageTemplate","ItemsAdded","ItemAdded","itemRemovedMessageTemplate","ItemsRemoved","ItemRemoved","itemSavedForLaterMessageTemplate","ItemsSavedForLater","ItemSavedForLater","bannerMessage","CommandSentence","template","Field","resetLoading","MiniCartNotifications","classNames","ShoppingCart","ClearIcon","ConfirmationIcon","Typography","ShoppingCartItems","cartItems","cartSubscribableItems","updateUrl","upsellDetailsUrl","isModifiable","isDeliveredToGroup","hasGroupRecipient","showCartSaveForLater","containsBundledItems","usesForeignCurrency","shopMoreUrl","isMiniCart","Item","Items","Total","balanceDueUsdCurrencyText","balanceDueCurrencyText","handleNavigate","Cart","tag","ViewCart","KeepShopping","ProgressIndicator","onKeyDown","CartLink","CartIconCore","clearStaleCartNotifications","registerMiniCartState","cart","setCart","antiForgeryToken","order","isCartPage","origin","cartItemCount","fetchCartData","CartClient","getCartWithCredentials","FetchCartUrl","error","console","handleAddSku","addSkuToCartUrl","addSkuToCart","detail","quantity","payInFull","searchData","couponCodes","handleAddSkus","addSkusToCartUrl","addSkusToCart","skuIds","skuId","handleAddSubscribableProductOptionId","addSubscribableProductOptionIdToCart","subscribableProductOptionId","handleNotify","errorMessage","notifyError","getAddedItemCount","response","reduce","item","handleAddItem","newMiniCartData","requestId","addSubscribableProductOption","AddSubscribableProductOptionIdToCartAjax","skuRequests","subscribableProductOptionRequests","addItemsToCart","AddItemsToCartAjax","addToCartUrl","AddSkusToCartAjax","addToCartErrorOccurred","dispatchEvent","CustomEvent","addedSkuIds","flatMap","skus","addedSubscribableProductOptionIds","addSkuToCartResultStatus","suppressMiniCartDrawer","analyticsTelemetry","dataLayer","push","notifications","notification","notify","kind","code","handlePageShow","persisted","handleMinicartOpen","getAddedItemCountFromLocation","rawAddedItemCount","isInteger","delete","history","replaceState","state","handleCartUpdating","handleCartUpdated","_event","handleCartError","handleCartRemoved","handleCartSavedForLater","eventAggregator","handleCartButtonClick","ctrlKey","metaKey","CartSvg","CartContextProvider","SpacerCore","insertMenuItems","registerSelfContainedComponents","exclude","blogCarouselRegisteredBySelfContained","some","registerBlogCarousel","insertUniversalHeaderMenuItems","UniversalHeader","noWrap","hideFromInsertMenu","childRequirements","$in","imageUrl","requiresParent","displayDownArrow","useDropDown","businessHours","phoneNumber","contactInfo","popupRef","contactInfoHeader","handleButtonClick","wasPreviouslyOpen","handleBlur","popup","root","getRootNode","phoneIconAltText","contactInfoLabel","ci","contactType","link","bh","startDayOfWeek","headerMessage","endDayOfWeek","startTime","endTime","specialMessage","subFields","LanguageSelector","LockIcon","size","secureCheckout","MenuList","useMegaMenuRenderMode","MobileMenus","UserSubscribeButton","registerImpactReferralWidget","scriptUrl","widget","customInsertMenu","iconInsertMenuItems","CartNotificationsCore","notificationLocation","cartNotifications","useCartNotifications","AnimatedClientNotification","onRemove","removeNotification","ErrorBoundary","CartNotificationLocation","CartNotifications","Page","isMiniCartOpen","removeScopedNotifications","CART_NOTIFICATION_SCOPE","scopedNotifications","useClientNotifications","scope","json","JSON","parse"],"sourceRoot":""}