@dropins/tools 1.4.0-beta2 → 1.4.0-beta4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/event-bus.js CHANGED
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- var o=Object.defineProperty;var f=(n,e,t)=>e in n?o(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var r=(n,e,t)=>f(n,typeof e!="symbol"?e+"":e,t);const c=Date.now().toString(36).substring(2);class a{static lastPayload(e){var t;return(t=this._lastEvent[e])==null?void 0:t.payload}static on(e,t,i){if(typeof BroadcastChannel>"u")return;const l=new BroadcastChannel("ElsieSDK/EventBus");if(i!=null&&i.eager){const s=this._lastEvent[e];s&&t(s.payload)}return l.addEventListener("message",({data:s})=>{this._identifier&&this._identifier!==s.identifier||s.event===e&&t(s.payload)}),{off(){l.close()}}}static emit(e,t){if(typeof BroadcastChannel>"u")return;const i=new BroadcastChannel("ElsieSDK/EventBus");i.postMessage({event:e,identifier:this._identifier,payload:t}),this._lastEvent[e]={payload:t},i.close()}static enableLogger(e){var t;typeof BroadcastChannel>"u"||((t=this._logger)==null||t.close(),this._logger=null,e!==!1&&(this._logger=new BroadcastChannel("ElsieSDK/EventBus"),this._logger.addEventListener("message",({data:i})=>{this._identifier&&this._identifier!==i.identifier||(console.group(`📡 Event (${i.identifier}) ➡ ${i.event}`),console.log(i.payload),console.groupEnd())})))}}r(a,"_identifier",c),r(a,"_logger",null),r(a,"_lastEvent",{});export{a as events};
3
+ var f=Object.defineProperty;var n=(i,e,t)=>e in i?f(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var l=(i,e,t)=>n(i,typeof e!="symbol"?e+"":e,t);const d=Date.now().toString(36).substring(2);class c{static _getScopedEvent(e){return t=>e?`${e}/${t}`:t}static lastPayload(e,t){var r;return t!=null&&t.scope&&(e=this._getScopedEvent(t==null?void 0:t.scope)(e)),(r=this._lastEvent[e])==null?void 0:r.payload}static on(e,t,r){if(typeof BroadcastChannel>"u")return;const s=new BroadcastChannel("ElsieSDK/EventBus");if(r!=null&&r.scope&&(e=this._getScopedEvent(r==null?void 0:r.scope)(e)),r!=null&&r.eager){const a=this._lastEvent[e];a&&t(a.payload)}return s.addEventListener("message",({data:a})=>{this._identifier&&this._identifier!==a.identifier||a.event===e&&t(a.payload)}),{off(){s.close()}}}static emit(e,t,r){if(typeof BroadcastChannel>"u")return;const s=new BroadcastChannel("ElsieSDK/EventBus");r!=null&&r.scope&&(e=this._getScopedEvent(r==null?void 0:r.scope)(e)),s.postMessage({event:e,identifier:this._identifier,payload:t}),this._lastEvent[e]={payload:t},s.close()}static enableLogger(e){var t;typeof BroadcastChannel>"u"||((t=this._logger)==null||t.close(),this._logger=null,e!==!1&&(this._logger=new BroadcastChannel("ElsieSDK/EventBus"),this._logger.addEventListener("message",({data:r})=>{this._identifier&&this._identifier!==r.identifier||(console.group(`📡 Event (${r.identifier}) ➡ ${r.event}`),console.log(r.payload),console.groupEnd())})))}}l(c,"_identifier",d),l(c,"_logger",null),l(c,"_lastEvent",{});export{c as events};
4
4
  //# sourceMappingURL=event-bus.js.map
package/event-bus.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"event-bus.js","sources":["@dropins/tools/src/event-bus/index.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { Events } from './events-catalog';\n\nexport * from './events-catalog';\n\nconst hash = Date.now().toString(36).substring(2);\n\n/**\n * The `events` class provides static methods for event handling.\n * It allows subscribing to events, emitting events, and enabling or disabling event logging.\n *\n * @class\n * @extends {Events}\n *\n * @property {Function} on - Subscribes to an event.\n * @property {Function} emit - Emits an event.\n * @property {Function} enableLogger - Enables or disables event logging.\n * @property {Function} lastPayload - Returns the last payload of the event.\n */\nexport class events {\n static _identifier = hash;\n\n static _logger: BroadcastChannel | null = null;\n\n static _lastEvent: { [key: string]: { payload: any } } = {};\n\n /**\n * Returns the last payload of the event.\n * @param event – The event to get the last payload from.\n * @returns – The last payload of the event.\n */\n static lastPayload(event: string) {\n return this._lastEvent[event]?.payload;\n }\n\n /**\n * Subscribes to an event.\n * @param event - The event to subscribe to.\n * @param handler - The event handler.\n * @param options - Optional configuration for the event handler.\n */\n static on<K extends keyof Events>(\n event: K,\n handler: (payload: Events[K]) => void,\n options?: { eager?: boolean }\n ) {\n if (typeof BroadcastChannel === 'undefined') {\n return;\n }\n\n const subscriber = new BroadcastChannel('ElsieSDK/EventBus');\n\n if (options?.eager) {\n const lastEvent = this._lastEvent[event];\n\n if (lastEvent) {\n handler(lastEvent.payload);\n }\n }\n\n subscriber.addEventListener('message', ({ data }) => {\n // ignore events from other instances (only if identifier is set)\n if (this._identifier && this._identifier !== data.identifier) return;\n\n if (data.event === event) {\n handler(data.payload);\n }\n });\n\n // NOTE: disabled as it causes loading issues with \"bfcache\"\n // unsubscribe if leaving page\n // window.addEventListener('beforeunload', () => {\n // subscriber.close();\n // });\n\n return {\n off() {\n subscriber.close();\n },\n };\n }\n /**\n * Emits an event.\n * @param event - The event to emit.\n * @param payload - The event payload.\n */\n\n static emit<K extends keyof Events>(event: K, payload: Events[K]) {\n if (typeof BroadcastChannel === 'undefined') {\n return;\n }\n\n const publisher = new BroadcastChannel('ElsieSDK/EventBus');\n\n publisher.postMessage({ event, identifier: this._identifier, payload });\n\n this._lastEvent[event] = {\n payload,\n };\n\n publisher.close();\n }\n /**\n * Enables or disables event logging.\n * @param enabled - Whether to enable or disable event logging.\n */\n static enableLogger(enabled: boolean) {\n if (typeof BroadcastChannel === 'undefined') {\n return;\n }\n\n // reset logger\n this._logger?.close();\n this._logger = null;\n\n if (enabled === false) return;\n\n // create new logger\n this._logger = new BroadcastChannel('ElsieSDK/EventBus');\n\n this._logger.addEventListener('message', ({ data }) => {\n if (this._identifier && this._identifier !== data.identifier) return;\n console.group(`📡 Event (${data.identifier}) ➡ ${data.event}`);\n console.log(data.payload);\n console.groupEnd();\n });\n\n // NOTE: disabled as it causes loading issues with \"bfcache\"\n // unsubscribe if leaving page\n // window.addEventListener('beforeunload', () => {\n // this._logger?.close();\n // });\n }\n}\n"],"names":["hash","events","event","_a","handler","options","subscriber","lastEvent","data","payload","publisher","enabled","__publicField"],"mappings":"oKAaA,MAAMA,EAAO,KAAK,IAAI,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,EAczC,MAAMC,CAAO,CAYlB,OAAO,YAAYC,EAAe,CA1BpC,IAAAC,EA2BW,OAAAA,EAAA,KAAK,WAAWD,CAAK,IAArB,YAAAC,EAAwB,OAAA,CASjC,OAAO,GACLD,EACAE,EACAC,EACA,CACI,GAAA,OAAO,iBAAqB,IAC9B,OAGI,MAAAC,EAAa,IAAI,iBAAiB,mBAAmB,EAE3D,GAAID,GAAA,MAAAA,EAAS,MAAO,CACZ,MAAAE,EAAY,KAAK,WAAWL,CAAK,EAEnCK,GACFH,EAAQG,EAAU,OAAO,CAC3B,CAGF,OAAAD,EAAW,iBAAiB,UAAW,CAAC,CAAE,KAAAE,KAAW,CAE/C,KAAK,aAAe,KAAK,cAAgBA,EAAK,YAE9CA,EAAK,QAAUN,GACjBE,EAAQI,EAAK,OAAO,CACtB,CACD,EAQM,CACL,KAAM,CACJF,EAAW,MAAM,CAAA,CAErB,CAAA,CAQF,OAAO,KAA6BJ,EAAUO,EAAoB,CAC5D,GAAA,OAAO,iBAAqB,IAC9B,OAGI,MAAAC,EAAY,IAAI,iBAAiB,mBAAmB,EAE1DA,EAAU,YAAY,CAAE,MAAAR,EAAO,WAAY,KAAK,YAAa,QAAAO,EAAS,EAEjE,KAAA,WAAWP,CAAK,EAAI,CACvB,QAAAO,CACF,EAEAC,EAAU,MAAM,CAAA,CAMlB,OAAO,aAAaC,EAAkB,CArGxC,IAAAR,EAsGQ,OAAO,iBAAqB,OAKhCA,EAAA,KAAK,UAAL,MAAAA,EAAc,QACd,KAAK,QAAU,KAEXQ,IAAY,KAGX,KAAA,QAAU,IAAI,iBAAiB,mBAAmB,EAEvD,KAAK,QAAQ,iBAAiB,UAAW,CAAC,CAAE,KAAAH,KAAW,CACjD,KAAK,aAAe,KAAK,cAAgBA,EAAK,aAClD,QAAQ,MAAM,aAAaA,EAAK,UAAU,OAAOA,EAAK,KAAK,EAAE,EACrD,QAAA,IAAIA,EAAK,OAAO,EACxB,QAAQ,SAAS,EAAA,CAClB,GAAA,CAQL,CAjHEI,EADWX,EACJ,cAAcD,GAErBY,EAHWX,EAGJ,UAAmC,MAE1CW,EALWX,EAKJ,aAAkD,CAAC"}
1
+ {"version":3,"file":"event-bus.js","sources":["@dropins/tools/src/event-bus/index.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { Events } from './events-catalog';\n\nexport * from './events-catalog';\n\nconst hash = Date.now().toString(36).substring(2);\n\n/**\n * The `events` class provides static methods for event handling.\n * It allows subscribing to events, emitting events, and enabling or disabling event logging.\n *\n * @class\n * @extends {Events}\n *\n * @property {Function} on - Subscribes to an event.\n * @property {Function} emit - Emits an event.\n * @property {Function} enableLogger - Enables or disables event logging.\n * @property {Function} lastPayload - Returns the last payload of the event.\n */\nexport class events {\n static _identifier = hash;\n\n static _logger: BroadcastChannel | null = null;\n\n static _lastEvent: { [key: string]: { payload: any } } = {};\n\n /**\n * Returns a scoped event key.\n * @param scope - The scope to get the event from.\n * @returns - The scoped event key.\n */\n static _getScopedEvent(scope?: string) {\n return <K extends keyof Events>(event: K): K => {\n return (scope ? `${scope}/${event}` : event) as K;\n };\n }\n\n /**\n * Returns the last payload of the event.\n * @param event – The event to get the last payload from.\n * @param options - Optional configuration for the event.\n * @returns – The last payload of the event.\n */\n static lastPayload<K extends keyof Events>(event: K, options?: { scope?: string }) {\n if (options?.scope) {\n event = this._getScopedEvent(options?.scope)(event);\n }\n\n return this._lastEvent[event]?.payload;\n }\n\n /**\n * Subscribes to an event.\n * @param event - The event to subscribe to.\n * @param handler - The event handler.\n * @param options - Optional configuration for the event handler.\n */\n static on<K extends keyof Events>(\n event: K,\n handler: (payload: Events[K]) => void,\n options?: { eager?: boolean, scope?: string }\n ) {\n if (typeof BroadcastChannel === 'undefined') {\n return;\n }\n\n const subscriber = new BroadcastChannel('ElsieSDK/EventBus');\n\n // if scope is provided, get the scoped event key\n if (options?.scope) {\n event = this._getScopedEvent(options?.scope)(event);\n }\n\n if (options?.eager) {\n const lastEvent = this._lastEvent[event];\n\n if (lastEvent) {\n handler(lastEvent.payload);\n }\n }\n\n subscriber.addEventListener('message', ({ data }) => {\n // ignore events from other instances (only if identifier is set)\n if (this._identifier && this._identifier !== data.identifier) return;\n\n if (data.event === event) {\n handler(data.payload);\n }\n });\n\n // NOTE: disabled as it causes loading issues with \"bfcache\"\n // unsubscribe if leaving page\n // window.addEventListener('beforeunload', () => {\n // subscriber.close();\n // });\n\n return {\n off() {\n subscriber.close();\n },\n };\n }\n /**\n * Emits an event.\n * @param event - The event to emit.\n * @param payload - The event payload.\n * @param options - Optional configuration for the event.\n */\n\n static emit<K extends keyof Events>(event: K, payload: Events[K], options?: { scope?: string }) {\n if (typeof BroadcastChannel === 'undefined') {\n return;\n }\n\n const publisher = new BroadcastChannel('ElsieSDK/EventBus');\n\n // if scope is provided, get the scoped event key\n if (options?.scope) {\n event = this._getScopedEvent(options?.scope)(event);\n }\n\n publisher.postMessage({ event, identifier: this._identifier, payload });\n\n this._lastEvent[event] = {\n payload,\n };\n\n publisher.close();\n }\n /**\n * Enables or disables event logging.\n * @param enabled - Whether to enable or disable event logging.\n */\n static enableLogger(enabled: boolean) {\n if (typeof BroadcastChannel === 'undefined') {\n return;\n }\n\n // reset logger\n this._logger?.close();\n this._logger = null;\n\n if (enabled === false) return;\n\n // create new logger\n this._logger = new BroadcastChannel('ElsieSDK/EventBus');\n\n this._logger.addEventListener('message', ({ data }) => {\n if (this._identifier && this._identifier !== data.identifier) return;\n console.group(`📡 Event (${data.identifier}) ➡ ${data.event}`);\n console.log(data.payload);\n console.groupEnd();\n });\n\n // NOTE: disabled as it causes loading issues with \"bfcache\"\n // unsubscribe if leaving page\n // window.addEventListener('beforeunload', () => {\n // this._logger?.close();\n // });\n }\n}\n"],"names":["hash","events","scope","event","options","_a","handler","subscriber","lastEvent","data","payload","publisher","enabled","__publicField"],"mappings":"oKAaA,MAAMA,EAAO,KAAK,IAAI,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,EAczC,MAAMC,CAAO,CAYlB,OAAO,gBAAgBC,EAAgB,CACrC,OAAgCC,GACpBD,EAAQ,GAAGA,CAAK,IAAIC,CAAK,GAAKA,CAC1C,CASF,OAAO,YAAoCA,EAAUC,EAA8B,CAtCrF,IAAAC,EAuCI,OAAID,GAAA,MAAAA,EAAS,QACXD,EAAQ,KAAK,gBAAgBC,GAAA,YAAAA,EAAS,KAAK,EAAED,CAAK,IAG7CE,EAAA,KAAK,WAAWF,CAAK,IAArB,YAAAE,EAAwB,OAAA,CASjC,OAAO,GACLF,EACAG,EACAF,EACA,CACI,GAAA,OAAO,iBAAqB,IAC9B,OAGI,MAAAG,EAAa,IAAI,iBAAiB,mBAAmB,EAO3D,GAJIH,GAAA,MAAAA,EAAS,QACXD,EAAQ,KAAK,gBAAgBC,GAAA,YAAAA,EAAS,KAAK,EAAED,CAAK,GAGhDC,GAAA,MAAAA,EAAS,MAAO,CACZ,MAAAI,EAAY,KAAK,WAAWL,CAAK,EAEnCK,GACFF,EAAQE,EAAU,OAAO,CAC3B,CAGF,OAAAD,EAAW,iBAAiB,UAAW,CAAC,CAAE,KAAAE,KAAW,CAE/C,KAAK,aAAe,KAAK,cAAgBA,EAAK,YAE9CA,EAAK,QAAUN,GACjBG,EAAQG,EAAK,OAAO,CACtB,CACD,EAQM,CACL,KAAM,CACJF,EAAW,MAAM,CAAA,CAErB,CAAA,CASF,OAAO,KAA6BJ,EAAUO,EAAoBN,EAA8B,CAC1F,GAAA,OAAO,iBAAqB,IAC9B,OAGI,MAAAO,EAAY,IAAI,iBAAiB,mBAAmB,EAGtDP,GAAA,MAAAA,EAAS,QACXD,EAAQ,KAAK,gBAAgBC,GAAA,YAAAA,EAAS,KAAK,EAAED,CAAK,GAGpDQ,EAAU,YAAY,CAAE,MAAAR,EAAO,WAAY,KAAK,YAAa,QAAAO,EAAS,EAEjE,KAAA,WAAWP,CAAK,EAAI,CACvB,QAAAO,CACF,EAEAC,EAAU,MAAM,CAAA,CAMlB,OAAO,aAAaC,EAAkB,CAhIxC,IAAAP,EAiIQ,OAAO,iBAAqB,OAKhCA,EAAA,KAAK,UAAL,MAAAA,EAAc,QACd,KAAK,QAAU,KAEXO,IAAY,KAGX,KAAA,QAAU,IAAI,iBAAiB,mBAAmB,EAEvD,KAAK,QAAQ,iBAAiB,UAAW,CAAC,CAAE,KAAAH,KAAW,CACjD,KAAK,aAAe,KAAK,cAAgBA,EAAK,aAClD,QAAQ,MAAM,aAAaA,EAAK,UAAU,OAAOA,EAAK,KAAK,EAAE,EACrD,QAAA,IAAIA,EAAK,OAAO,EACxB,QAAQ,SAAS,EAAA,CAClB,GAAA,CAQL,CA5IEI,EADWZ,EACJ,cAAcD,GAErBa,EAHWZ,EAGJ,UAAmC,MAE1CY,EALWZ,EAKJ,aAAkD,CAAC"}
package/initializer.js CHANGED
@@ -3,5 +3,5 @@ All Rights Reserved. */
3
3
  (function(a,e){try{if(typeof document<"u"){const o=e.styleId;if(document.querySelector(`style[data-dropin="${o}"]`))return;const r=document.createElement("style");for(const i in e.attributes)r.setAttribute(i,e.attributes[i]);r.setAttribute("data-dropin",o),r.appendChild(document.createTextNode(a));const t=document.querySelector('link[rel="stylesheet"], style');t?t.before(r):document.head.append(r)}}catch(o){console.error("sdk-styles (injectCodeFunction)",o)}})(`.dropin-debugger--show-slots [data-slot-key]{outline:1px dashed var(--color-neutral-600);border-radius:4px}.dropin-debugger--show-slots [data-slot-key]:before{content:attr(data-slot-key);font:var(--type-details-caption-1-font);color:var(--color-informational-800);background-color:var(--color-informational-200);font-size:.75rem;border-radius:4px 4px 0 0;padding:.2rem .4rem;font-weight:600;position:absolute;z-index:2}.dropin-debugger--show-slots [data-slot]{outline:2px dashed var(--color-informational-800);outline-offset:3px;border-radius:4px;min-height:2rem}.dropin-debugger--show-slots [data-slot]:before{font:var(--type-details-caption-1-font);content:attr(data-slot);color:var(--color-informational-200);background-color:var(--color-informational-800);font-size:.75rem;border-radius:4px 4px 0 0;padding:.2rem .4rem;font-weight:600;position:absolute;transform:translateY(-26px);z-index:2}
4
4
  .dropin-skeleton{--row-gap-spacing: var(--spacing-medium);display:grid;grid-template-columns:1fr 1fr;gap:var(--row-gap-spacing)}.dropin-skeleton .dropin-skeleton--row__content{background:var(--color-neutral-300) linear-gradient(to right,var(--color-neutral-300) 0%,var(--color-neutral-100) 20%,var(--color-neutral-300) 40%,var(--color-neutral-300) 100%) no-repeat;animation:skeletonShimmer infinite 1.2s linear;border-radius:var(--shape-border-radius-2)}.dropin-skeleton__empty{background:none}.dropin-skeleton-row--multiline{--multiline-gap-spacing: var(--spacing-medium);display:grid;grid-auto-rows:max-content;gap:var(--multiline-gap-spacing)}.dropin-skeleton-row--full{grid-column:1 / -1}.dropin-skeleton-row svg{fill:var(--color-neutral-400);fill-opacity:.5;animation-duration:1s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:placeholderShimmer;animation-timing-function:linear}.dropin-skeleton-row__row-xsmall{height:32px}.dropin-skeleton-row__row-small{height:40px}.dropin-skeleton-row__row-medium{height:48px}.dropin-skeleton-row__row-large{height:56px}.dropin-skeleton-row__row-xlarge{height:72px}.dropin-skeleton-row__heading-xsmall{height:20px}.dropin-skeleton-row__heading-small{height:24px}.dropin-skeleton-row__heading-medium{height:32px}.dropin-skeleton-row__heading-large{height:40px}.dropin-skeleton-row__heading-xlarge{height:48px}@keyframes skeletonShimmer{0%{background-position:-600px 0}to{background-position:600px 0}}@keyframes placeholderShimmer{0%{fill-opacity:.5}50%{fill-opacity:1}to{fill-opacity:.5}}@media only screen and (max-width: 600px){.dropin-skeleton{grid-template-columns:1fr}}.dropin-icon--shape-stroke-1{stroke-width:var(--shape-icon-stroke-1)}.dropin-icon--shape-stroke-2{stroke-width:var(--shape-icon-stroke-2)}.dropin-icon--shape-stroke-3{stroke-width:var(--shape-icon-stroke-3)}.dropin-icon--shape-stroke-4{stroke-width:var(--shape-icon-stroke-4)}.dropin-incrementer__content{border-radius:var(--shape-border-radius-1);border:solid var(--shape-border-width-1) var(--color-neutral-600);display:grid;grid-template-columns:var(--spacing-xxbig) auto var(--spacing-xxbig);height:var(--spacing-xbig);opacity:1}.dropin-incrementer__content--disabled{background:var(--color-neutral-300);border-radius:var(--shape-border-radius-1);border:solid var(--shape-border-width-1) var(--color-neutral-500)}.dropin-incrementer__content--large{height:var(--spacing-xxbig)}.dropin-incrementer__content:hover{border:solid var(--shape-border-width-1) var(--color-neutral-700)}.dropin-incrementer__content:active{border:solid var(--shape-border-width-1) var(--color-neutral-800)}.dropin-incrementer__content--error:hover,.dropin-incrementer__content--error{border:var(--shape-border-width-2) solid var(--color-alert-500)}.dropin-incrementer__content--error-message{color:var(--color-alert-800);font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);text-align:left}.dropin-incrementer__footer{font:var(--type-details-caption-2-font)}.dropin-incrementer__decrease-button>svg,.dropin-incrementer__increase-button>svg{align-items:center;justify-content:center}.dropin-incrementer__button-container{align-items:center;border-radius:var(--shape-border-radius-1);display:grid;justify-content:center;background:var(--color-neutral-50)}.dropin-incrementer__button-container--disabled{background-color:var(--color-neutral-300)}.dropin-incrementer__decrease-button,.dropin-incrementer__increase-button{align-items:center;background-color:var(--color-neutral-50);border-radius:var(--shape-border-radius-3);border:none;display:grid;height:var(--spacing-medium);width:var(--spacing-medium)}.dropin-incrementer__decrease-button:enabled,.dropin-incrementer__increase-button:enabled{cursor:pointer}.dropin-incrementer__decrease-button--disabled,.dropin-incrementer__increase-button--disabled{background-color:var(--color-neutral-300)}.dropin-incrementer__increase-button:focus-visible,.dropin-incrementer__decrease-button:focus-visible{outline:var(--shape-border-width-1) solid var(--color-brand-500);box-shadow:0 0 0 var(--shape-border-radius-1) var(--color-neutral-500)}.dropin-incrementer__decrease-button:focus:not(:focus-visible),.dropin-incrementer__increase-button:focus:not(:focus-visible){background-color:var(--color-neutral-50)}.dropin-incrementer__decrease-button:hover:enabled,.dropin-incrementer__increase-button:hover:enabled,.dropin-incrementer__decrease-button:focus,.dropin-incrementer__increase-button:focus{background:var(--color-neutral-300)}.dropin-incrementer__input{box-sizing:border-box;text-align:center;min-width:var(--spacing-xxbig)}.dropin-incrementer__input:disabled{background-color:var(--color-neutral-300);color:var(--color-neutral-500)}.dropin-incrementer__input::-webkit-outer-spin-button,.dropin-incrementer__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.dropin-incrementer__input:focus-within{border:none;box-sizing:border-box;text-align:center}.dropin-incrementer__input:focus-within[type=number]{box-shadow:none}.dropin-incrementer__input[type=number]{-moz-appearance:textfield;box-shadow:none;border:none}textarea:focus,input:focus{outline:none}.dropin-input{background-color:transparent;border-color:var(--color-neutral-600);border-radius:var(--shape-border-radius-1);border-style:inset solid;color:var(--color-neutral-800);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:100%;z-index:1}.dropin-input[type=number],.dropin-input[type=text]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.dropin-input:focus{outline:none;box-shadow:none}.dropin-input:disabled{border-top-left-radius:var(--shape-border-radius-1);border-top-right-radius:var(--shape-border-radius-1);border-color:var(--color-neutral-500);background-color:var(--color-neutral-300);color:var(--color-neutral-500)}.dropin-input::placeholder,.dropin-input::-webkit-input-placeholder,.dropin-input::-ms-input-placeholder{color:var(--color-neutral-700);opacity:1}.dropin-input:disabled::-webkit-input-placeholder{color:var(--color-neutral-500)}.dropin-input:disabled:-moz-placeholder{color:var(--color-neutral-500)}.dropin-input:disabled::-moz-placeholder{color:var(--color-neutral-500)}.dropin-input:disabled:-ms-input-placeholder{color:var(--color-neutral-500)}.dropin-input-container{--icon-size: var(--spacing-small);display:flex;align-items:center;position:relative}.dropin-input-label-container{position:relative;display:flex;flex-grow:1;flex-direction:column}.dropin-input--primary{border:var(--shape-border-width-1) solid var(--color-neutral-600)}.dropin-input--primary:focus{border-color:var(--color-neutral-800);border-radius:var(--shape-border-radius-1)}div.dropin-input-container--primary .dropin-input--disabled{border:var(--shape-border-width-1) solid var(--color-neutral-500)}.dropin-input-container--primary .dropin-input--error{border:var(--shape-border-width-2) solid var(--color-alert-500)}.dropin-input-container--primary .dropin-input--success{border:var(--shape-border-width-2) solid var(--color-positive-500)}.dropin-input--secondary{border:0;border-radius:0;border-top:var(--shape-border-width-1) solid transparent;border-bottom:var(--shape-border-width-1) solid var(--color-neutral-600)}.dropin-input--secondary:focus{border-top-left-radius:var(--shape-border-radius-1);border-top-right-radius:var(--shape-border-radius-1);border-bottom-color:var(--color-neutral-800)}div.dropin-input-container--secondary .dropin-input--disabled{border:0;border-radius:0;border-bottom:var(--shape-border-width-1) solid var(--color-neutral-500)}.dropin-input-container--secondary .dropin-input--error{border:0;border-radius:0;border-bottom:var(--shape-border-width-2) solid var(--color-alert-500)}.dropin-input-container--secondary .dropin-input--success{border:0;border-radius:0;border-bottom:var(--shape-border-width-2) solid var(--color-positive-500)}.dropin-input--medium{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);padding:9px var(--spacing-small)}.dropin-input--medium~label{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.dropin-input--large{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing);padding:11px var(--spacing-small)}.dropin-input--large~label{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.dropin-input__label--floating{cursor:text;color:var(--color-neutral-700);padding-left:var(--spacing-small);position:absolute;pointer-events:none;transform:translateY(-50%);top:50%;transition:top 50ms ease-in,left 50ms ease-in,font-size 50ms ease-in;z-index:1}.dropin-input__label--floating,.dropin-input--floating{transition:all .2s;touch-action:manipulation}.dropin-input--medium.dropin-input--floating{padding-top:17px;padding-bottom:17px}.dropin-input--medium.dropin-input--floating:focus,.dropin-input--medium.dropin-input--floating:not(:placeholder-shown){padding-top:26px}.dropin-input--large.dropin-input--floating{padding-top:15px;padding-bottom:15px}.dropin-input--large.dropin-input--floating:focus,.dropin-input--large.dropin-input--floating:not(:placeholder-shown){padding-top:22px}.dropin-input--floating:focus,.dropin-input--floating:not(:placeholder-shown){padding-bottom:calc(var(--spacing-small) - var(--spacing-xsmall))}.dropin-input__label--floating--icon-left{padding-left:calc(var(--icon-size) + (var(--spacing-small) * 2))}.dropin-input--floating:-webkit-autofill~.dropin-input__label--floating,.dropin-input-container--floating:focus-within .dropin-input__label--floating{color:var(--color-neutral-800);transform:translate(.1em,-1.5em);font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.dropin-input--floating:not(:placeholder-shown)~.dropin-input__label--floating{transform:translate(.1em,-1.5em);font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.dropin-input-container--disabled .dropin-icon,.dropin-input-container--disabled .dropin-input__label--floating{color:var(--color-neutral-500)}.dropin-input--floating::-webkit-input-placeholder,.dropin-input--floating::placeholder{opacity:0;transition:inherit}.dropin-input--floating:focus::-webkit-input-placeholder,.dropin-input--floating:focus::placeholder{opacity:1}.dropin-input__label--floating--error{color:var(--color-alert-500)}.dropin-input--icon-right,.dropin-input--icon-left{--icon-space: calc(var(--icon-size) + (var(--spacing-small) * 2))}.dropin-input--icon-right{padding-right:var(--icon-space)}.dropin-input--icon-left{padding-left:var(--icon-space)}.dropin-input__field-icon--left,.dropin-input__field-icon--right{position:absolute;z-index:2}.dropin-input__field-icon--left{left:var(--spacing-small)}.dropin-input__field-icon--right{right:var(--spacing-small)}.dropin-input__field-icon--error,.dropin-input__field-icon--success{color:var(--color-neutral-100);height:var(--icon-size);width:var(--icon-size)}.dropin-input__field-icon--success{color:var(--color-positive-500)}.dropin-input__field-icon--error{color:var(--color-alert-500)}.dropin-input-date{position:relative;width:100%}.dropin-input-date__input{max-height:56px;z-index:1}.dropin-input-date input[type=date]{height:56px;max-height:56px;text-align:left}.dropin-input-date input[type=date]::-webkit-date-and-time-value{text-align:left}.dropin-input-date__input--ios{z-index:-1;opacity:0;position:absolute}.dropin-input-date__icon{cursor:pointer;background-color:var(--color-neutral-50);position:absolute;top:var(--spacing-small);right:var(--spacing-small);border:0 none;padding:1px;z-index:2}.dropin-input-date__icon svg{color:var(--color-neutral-800)}.dropin-input-date svg.dropin-input--warning-icon{position:absolute;top:55%;left:0;transform:translate(-200%,-50%)}.dropin-password-status-indicator__item{display:grid;grid-template-columns:20px auto;align-items:center;justify-content:left;gap:0 8px;font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.dropin-password-status-indicator__item--pending{color:var(--color-neutral-700, #666)}.dropin-password-status-indicator__item--success{color:var(--color-positive-800, #53824c)}.dropin-password-status-indicator__item--error{color:var(--color-alert-800, #bf4545)}.dropin-input-password{position:relative}.dropin-input-password>div:first-child{margin-bottom:var(--spacing-small)}.dropin-input-password .dropin-input-password__eye-icon{position:absolute;padding:0;height:24px;top:17px;right:17px;cursor:pointer;z-index:2}.dropin-input-password--error .dropin-input-password__eye-icon{right:var(--spacing-xbig);transition:all .3s ease-in-out}.dropin-textarea-container{position:relative}.dropin-textarea.dropin-textarea--error{border:var(--shape-border-width-1) solid var(--color-alert-800)}.dropin-textarea.dropin-textarea--error .dropin-textarea__label--floating{color:var(--color-alert-800)}.dropin-textarea__label--floating{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-700);position:absolute;top:18px;left:17px;transition:all .2s}.dropin-textarea{margin:0;padding:0;border:none;outline:none;resize:none;box-shadow:none;font:inherit;color:inherit;background:none;overflow:hidden;width:100%}.dropin-textarea{border:1px solid var(--color-neutral-500);box-sizing:border-box}.dropin-textarea{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800, #3d3d3d);min-height:200px;padding:var(--spacing-big) var(--spacing-small);border-radius:var(--shape-border-radius-1);transition:border-color .2s;scrollbar-color:var(--color-neutral-500) transparent;scrollbar-width:thin;overflow-y:hidden}.dropin-textarea::-webkit-scrollbar{width:12px;background-color:transparent}.dropin-textarea:disabled{border-top-left-radius:var(--shape-border-radius-1);border-top-right-radius:var(--shape-border-radius-1);border-color:var(--color-neutral-500);background-color:var(--color-neutral-300);color:var(--color-neutral-500)}.dropin-textarea:disabled::-webkit-input-placeholder{color:var(--color-neutral-500)}.dropin-textarea:disabled:-moz-placeholder{color:var(--color-neutral-500)}.dropin-textarea:disabled::-moz-placeholder{color:var(--color-neutral-500)}.dropin-textarea:disabled:-ms-input-placeholder{color:var(--color-neutral-500)}.dropin-textarea::placeholder{color:var(--color-neutral-700);opacity:0;transition:color .2s,opacity .2s}.dropin-textarea:focus{border-color:var(--color-neutral-800, #3d3d3d);border-radius:var(--shape-border-radius-1)}.dropin-textarea:focus::placeholder{color:var(--color-neutral-700);opacity:.8}.dropin-textarea:not(:placeholder-shown)+.dropin-textarea__label--floating,.dropin-textarea:focus+.dropin-textarea__label--floating{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-1-letter-spacing);color:var(--color-neutral-700, #666666);transition:all .2s;touch-action:manipulation;top:1px;left:1px;width:99%;background-color:var(--color-neutral-50);border-radius:var(--shape-border-radius-1);height:30px;padding:12px 16px 0;box-sizing:border-box}.dropin-textarea:focus+.dropin-textarea__label--floating{color:var(--color-neutral-800)}.dropin-textarea:focus-visible{outline:none}.dropin-textarea__label--floating--error{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);color:var(--color-alert-800);padding-top:var(--spacing-xsmall)}.dropin-divider{border:none}.dropin-divider--primary{border-top:var(--shape-border-width-3) solid var(--color-neutral-400);margin:var(--spacing-xbig) auto}.dropin-divider--secondary{border-top:var(--shape-border-width-2) solid var(--color-neutral-400);margin:var(--spacing-medium) auto}.dropin-price{color:inherit}.dropin-price--small{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing)}.dropin-price--medium{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.dropin-price--large{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing)}.dropin-price--strikethrough{text-decoration:line-through}.dropin-price--sale{color:var(--color-alert-800)}.dropin-price--bold{font-weight:700}.dropin-price--normal{font-weight:400}.dropin-radio-button{display:block;position:relative}.dropin-radio-button__input{position:fixed;opacity:0;pointer-events:none;margin:0}.dropin-radio-button__label{color:var(--color-neutral-800);position:relative;display:flex;flex-direction:row;align-items:center;cursor:pointer;width:fit-content}.dropin-radio-button__label:before{content:" ";display:inline-block;position:relative;width:16px;height:16px;border-radius:var(--shape-border-radius-3);background-color:var(--color-neutral-50);border:var(--shape-border-width-1) solid var(--color-neutral-600);margin-right:var(--spacing-small);vertical-align:middle}.dropin-radio-button__label:hover:before{border:var(--shape-border-width-1) solid var(--color-neutral-700)}.dropin-radio-button__input:checked+.dropin-radio-button__label:after{content:" ";display:block;position:absolute;width:8px;height:8px;border-radius:var(--shape-border-radius-3);margin-left:calc(var(--spacing-xxsmall) + var(--shape-border-width-1));background:var(--color-brand-500);accent-color:var(--color-brand-500)}.dropin-radio-button__input:focus-visible+.dropin-radio-button__label:before{border:var(--shape-border-width-1) solid var(--color-neutral-800);box-shadow:0 0 0 var(--shape-icon-stroke-4) var(--color-neutral-400)}.dropin-radio-button__description{clear:both;color:var(--color-neutral-700);margin-left:calc(var(--spacing-big) + var(--shape-border-width-3));margin-top:var(--spacing-xxsmall)}.dropin-radio-button__description:empty{display:none}.dropin-radio-button__label--medium{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.dropin-radio-button__label--large{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.dropin-radio-button__description--medium{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.dropin-radio-button__description--large{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.dropin-radio-button__input--disabled,.dropin-radio-button__label--disabled,.dropin-radio-button__description--disabled{color:var(--color-neutral-500);cursor:default}div.dropin-radio-button__label--disabled:before{box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-500);background-color:var(--color-neutral-300)}.dropin-radio-button__label--error:before{box-shadow:0 0 0 var(--shape-border-width-2) var(--color-alert-500);background:var(--color-neutral-50) 0 0% no-repeat padding-box}.dropin-radio-button__input--error:checked+.dropin-radio-button__label--error:after{background:var(--color-alert-500)}.dropin-button,.dropin-iconButton{border:0 none;cursor:pointer;white-space:normal}.dropin-button{border-radius:var(--shape-border-radius-3);font-size:var(--type-button-1-font);font-weight:var(--type-button-1-font);padding:var(--spacing-xsmall) var(--spacing-medium);display:flex;justify-content:center;align-items:center;text-align:left;word-wrap:break-word}.dropin-iconButton{height:var(--spacing-xbig);width:var(--spacing-xbig);padding:var(--spacing-xsmall)}.dropin-button:disabled,.dropin-iconButton:disabled{pointer-events:none;-webkit-user-select:none;user-select:none}.dropin-button:not(:disabled),.dropin-iconButton:not(:disabled){cursor:pointer}.dropin-button:focus,.dropin-iconButton:focus{outline:none}.dropin-button:focus-visible,.dropin-iconButton:focus-visible{outline:var(--spacing-xxsmall) solid var(--color-button-focus)}button.dropin-button.dropin-button--primary,a.dropin-button.dropin-button--primary,.dropin-iconButton--primary{border:none;background:var(--color-brand-500) 0 0% no-repeat padding-box;color:var(--color-neutral-50);text-align:left;margin-right:0}.dropin-iconButton--primary{border-radius:var(--spacing-xbig);min-height:var(--spacing-xbig);min-width:var(--spacing-xbig);padding:var(--spacing-xsmall)}button.dropin-button.dropin-button--primary--disabled,a.dropin-button.dropin-button--primary--disabled,.dropin-iconButton--primary--disabled{background:var(--color-neutral-300) 0 0% no-repeat padding-box;color:var(--color-neutral-500);fill:var(--color-neutral-300);pointer-events:none;-webkit-user-select:none;user-select:none}button.dropin-button.dropin-button--primary:hover,a.dropin-button.dropin-button--primary:hover,.dropin-iconButton--primary:hover,button.dropin-button.dropin-button--primary:focus:hover,.dropin-iconButton--primary:focus:hover{background-color:var(--color-button-hover);text-decoration:none}button.dropin-button.dropin-button--primary:focus,.dropin-iconButton--primary:focus{background-color:var(--color-brand-500)}button.dropin-button.dropin-button--primary:hover:active,.dropin-iconButton--primary:hover:active{background-color:var(--color-button-active)}.dropin-button--secondary,a.dropin-button--secondary,.dropin-iconButton--secondary{border:var(--shape-border-width-2) solid var(--color-brand-500);background:none 0 0% no-repeat padding-box;color:var(--color-brand-500);padding-top:calc(var(--spacing-xsmall) - var(--shape-border-width-2));padding-left:calc(var(--spacing-medium) - var(--shape-border-width-2))}.dropin-iconButton--secondary{border-radius:var(--spacing-xbig);min-height:var(--spacing-xbig);min-width:var(--spacing-xbig);padding:var(--spacing-xsmall);padding-top:calc(var(--spacing-xsmall) - var(--shape-border-width-2));padding-left:calc(var(--spacing-xsmall) - var(--shape-border-width-2))}.dropin-button--secondary--disabled,a.dropin-button--secondary--disabled,.dropin-iconButton--secondary--disabled{border:var(--shape-border-width-2) solid var(--color-neutral-300);background:none 0 0% no-repeat padding-box;color:var(--color-neutral-500);fill:var(--color-neutral-300);pointer-events:none;-webkit-user-select:none;user-select:none}.dropin-button--secondary:hover,a.dropin-button--secondary:hover,.dropin-iconButton--secondary:hover{border:var(--shape-border-width-2) solid var(--color-button-hover);color:var(--color-button-hover);text-decoration:none}.dropin-button--secondary:active,.dropin-iconButton--secondary:active{border:var(--shape-border-width-2) solid var(--color-button-active);color:var(--color-button-active)}.dropin-button--tertiary,a.dropin-button--tertiary,.dropin-iconButton--tertiary{border:none;background:none 0 0% no-repeat padding-box;color:var(--color-brand-500)}.dropin-iconButton--tertiary{border:none;border-radius:var(--spacing-xbig);min-height:var(--spacing-xbig);min-width:var(--spacing-xbig);padding:var(--spacing-xsmall)}.dropin-button--tertiary--disabled,a.dropin-button--tertiary--disabled,.dropin-iconButton--tertiary--disabled{border:none;color:var(--color-neutral-500);pointer-events:none;-webkit-user-select:none;user-select:none}.dropin-button--tertiary:hover,a.dropin-button--tertiary:hover,.dropin-iconButton--tertiary:hover{color:var(--color-button-hover);text-decoration:none}.dropin-button--tertiary:active,.dropin-iconButton--tertiary:active{color:var(--color-button-active)}.dropin-button--tertiary:focus-visible,.dropin-iconButton--tertiary:focus-visible{-webkit-box-shadow:inset 0 0 0 2px var(--color-neutral-800);-moz-box-shadow:inset 0 0 0 2px var(--color-neutral-800);box-shadow:inset 0 0 0 2px var(--color-neutral-800)}.dropin-button--large{font:var(--type-button-1-font);letter-spacing:var(--type-button-1-letter-spacing)}.dropin-button--medium{font:var(--type-button-2-font);letter-spacing:var(--type-button-2-letter-spacing)}.dropin-button-icon{height:24px}.dropin-button--with-icon{column-gap:var(--spacing-xsmall);row-gap:var(--spacing-xsmall)}.dropin-picker{position:relative;display:flex;flex-direction:row;background-color:var(--color-neutral-50);justify-content:space-between;align-items:center;cursor:pointer;gap:var(--spacing-small);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dropin-picker select{background-color:transparent;border:var(--shape-border-width-1) solid var(--color-neutral-600);border-radius:var(--shape-border-radius-1);color:var(--color-neutral-700);-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;flex:1;cursor:pointer;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dropin-picker__select:focus{outline:none;border:var(--shape-border-width-1) solid var(--color-neutral-800)}.dropin-picker__medium .dropin-picker__select--primary,.dropin-picker__medium .dropin-picker__select--secondary{padding:9px var(--spacing-xxbig) 9px var(--spacing-small)}.dropin-picker__large .dropin-picker__select--primary,.dropin-picker__large .dropin-picker__select--secondary{padding:11px var(--spacing-xxbig) 11px var(--spacing-small)}.dropin-picker__select--medium{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.dropin-picker__select--large{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.dropin-picker__chevronDown{z-index:1;position:absolute;color:var(--color-neutral-700);right:var(--spacing-small);display:block;pointer-events:none;padding:0;height:var(--icon-size);width:var(--icon-size)}.dropin-picker__floatingLabel{position:absolute;pointer-events:none;left:var(--spacing-small);color:var(--color-neutral-700);touch-action:manipulation;transform:translateY(-50%);transition:top 20ms ease-in,font-size 50ms ease-in}.dropin-picker__select--floating:focus~label{transition:all 40ms}.dropin-picker__selected select{color:var(--color-neutral-800)}.dropin-picker__selected label{top:30%}.dropin-picker__medium.dropin-picker__floating.dropin-picker__selected label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.dropin-picker__large.dropin-picker__floating.dropin-picker__selected label{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.dropin-picker__medium.dropin-picker__floating select{padding:17px var(--spacing-small)}.dropin-picker__large.dropin-picker__floating select{padding:15px var(--spacing-small)}.dropin-picker__large.dropin-picker__floating.dropin-picker__selected select{padding:25px var(--spacing-xxbig) 5px var(--spacing-small)}.dropin-picker__medium.dropin-picker__floating.dropin-picker__selected select{padding:27px var(--spacing-xxbig) 7px var(--spacing-small)}select::-ms-expand{display:none}.dropin-picker__disabled select.dropin-picker__select{background-color:var(--color-neutral-300);border:var(--shape-border-width-1) solid var(--color-neutral-500);color:var(--color-neutral-500);cursor:not-allowed}.dropin-picker__disabled svg.dropin-picker__chevronDown{color:var(--color-neutral-500)}.dropin-picker__error select{border:var(--shape-border-width-2) solid var(--color-alert-500);color:var(--color-alert-500)}.dropin-picker__error .dropin-picker__select:focus{border:var(--shape-border-width-2) solid var(--color-alert-500)}.dropin-picker__error .dropin-picker__chevronDown,.dropin-picker__error label{color:var(--color-alert-500)}.dropin-picker select.dropin-picker__select--secondary{border-top:var(--shape-border-width-1) solid transparent;border-left:0 none;border-right:0 none;border-radius:0}.dropin-picker__disabled select.dropin-picker__select--secondary{border-bottom:var(--shape-border-width-1) solid var(--color-neutral-500)}.dropin-picker__error select.dropin-picker__select--secondary{border-top:var(--shape-border-width-1) solid transparent;border-left:0 none;border-right:0 none}.dropin-picker__icon--placeholder{z-index:1;position:absolute;color:var(--color-neutral-700);left:var(--spacing-small);display:block;pointer-events:none;padding:0;height:var(--icon-size);width:var(--icon-size)}.dropin-picker__icon select.dropin-picker__select,.dropin-picker__floating.dropin-picker__selected.dropin-picker__icon select{padding-left:var(--spacing-xxbig)}.dropin-picker__floating.dropin-picker__selected.dropin-picker__icon label{left:var(--spacing-xxbig)}.dropin-field{display:grid;font:var(--type-body-2-strong-font);grid-auto-rows:max-content}.dropin-field__label--medium{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);color:var(--color-neutral-800);text-align:left;padding-bottom:var(--spacing-xsmall)}.dropin-field__label--large{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-neutral-800);text-align:left;padding-bottom:var(--spacing-xsmall)}.dropin-field__label--disabled{color:var(--color-neutral-500)}.dropin-field__content{display:grid;grid-auto-rows:max-content}.dropin-field__hint{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);color:var(--color-neutral-700);text-align:left}.dropin-field__hint:empty{display:none}.dropin-field__hint--medium{padding-top:var(--spacing-xsmall)}.dropin-field__hint--large{padding-top:var(--spacing-small)}.dropin-field__hint--error{color:var(--color-alert-800)}.dropin-field__hint--success{color:var(--color-positive-800)}.dropin-field__hint--disabled{color:var(--color-neutral-500)}.dropin-action-button{--bgColor: var(--color-neutral-200);--textColor: var(--color-neutral-800);--borderColor: var(--color-neutral-400);display:inline-flex;box-sizing:border-box;row-gap:var(--spacing-small);white-space:normal;align-items:center;justify-content:center;font:var(--type-body-2-strong-font);padding:6px var(--spacing-small);background:var(--bgColor);color:var(--textColor);border:var(--shape-border-width-1) solid var(--borderColor);border-radius:var(--shape-border-radius-1);word-wrap:break-word;text-align:left}.dropin-action-button:hover,.dropin-action-button:focus:hover{--textColor: var(--color-neutral-900)}.dropin-action-button:active:focus{--borderColor: var(--color-neutral-500)}.dropin-action-button:focus{outline:none}.dropin-action-button:focus-visible{--borderColor: var(--color-neutral-800);outline:solid var(--shape-border-width-4) var(--color-neutral-400)}.dropin-action-button--active{--bgColor: var(--color-action-button-active);--borderColor: var(--color-neutral-400);--textColor: var(--color-neutral-900)}.dropin-action-button--active:hover,.dropin-action-button--active:focus:hover{--bgColor: var(--color-action-button-active);--textColor: var(--color-neutral-800)}.dropin-action-button--active:active:focus{--bgColor: var(--color-action-button-active);--textColor: var(--color-neutral-700)}.dropin-action-button--disabled,.dropin-action-button:disabled,.dropin-action-button--disabled:focus-visible{--bgColor: var(--color-neutral-300);--textColor: var(--color-neutral-500);pointer-events:none}.dropin-action-button:not(:disabled){cursor:pointer}.dropin-action-button-icon{display:inline-flex;justify-content:center;align-items:center;height:16px}.dropin-action-button-icon:first-child:not(:last-child){margin-right:var(--spacing-xsmall)}.dropin-action-button-group{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--shape-border-radius-1);border:var(--shape-border-width-1) solid var(--color-neutral-400)}.dropin-action-button-group__option{border:none;border-radius:0;align-self:stretch;--borderRadiusValue: calc( var(--shape-border-radius-1) - var(--shape-border-width-1) )}.dropin-action-button-group__option:first-child{border-radius:var(--borderRadiusValue) 0 0 var(--borderRadiusValue)}.dropin-action-button-group__option:last-child{border-radius:0 var(--borderRadiusValue) var(--borderRadiusValue) 0}.dropin-action-button-group__option:only-child{border-radius:var(--borderRadiusValue)}.dropin-action-button-group__option--with-dividers{border-right:var(--shape-border-width-1) solid var(--color-neutral-400)}.dropin-action-button-group__option--with-dividers:last-child{border-right:none}.dropin-action-button-group__option--active:not(:disabled){background:var(--color-neutral-50)}.dropin-action-button-group--secondary{border:none}.dropin-action-button-group__option--secondary{background:var(--color-neutral-100)}.dropin-action-button-group__option:focus-visible{outline:solid var(--shape-border-width-4) var(--color-neutral-400);border-radius:var(--shape-border-radius-1);z-index:1}.dropin-card{--bgColor: var(--color-neutral-200);background-color:var(--bgColor);border-width:0;border-radius:var(--shape-border-radius-2)}.dropin-card--secondary{--bgColor: var(--color-neutral-50);border-width:var(--shape-border-width-2);border-style:solid;border-color:var(--color-neutral-400)}.dropin-card__content{display:flex;flex-direction:column;gap:var(--spacing-medium);padding-top:var(--spacing-medium);padding-right:var(--spacing-medium);padding-bottom:var(--spacing-medium);padding-left:var(--spacing-medium)}.dropin-checkbox{align-items:flex-start;display:grid;grid-template-columns:var(--spacing-small) auto;grid-gap:var(--spacing-xxsmall) 0}.dropin-checkbox__checkbox{display:none;margin:0}.dropin-checkbox__checkbox-icon{display:flex;align-items:center}.dropin-checkbox__box{margin:0;width:14px;height:14px;border-radius:var(--shape-border-radius-1);border:var(--shape-border-width-1) solid var(--color-neutral-600);background:var(--color-neutral-50) 0 0 no-repeat padding-box;cursor:pointer}.dropin-checkbox__checkmark{opacity:0;border-radius:var(--shape-border-radius-1)}.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box{border:none}.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box .dropin-checkbox__checkmark{opacity:1;color:var(--color-neutral-50);background:var(--color-neutral-700) 0 0 no-repeat padding-box;top:-1px;position:relative}.dropin-checkbox__box:hover{border:var(--shape-border-width-1) solid var(--color-neutral-800)}.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box:hover{border:none;background:var(--color-neutral-800) 0 0 no-repeat padding-box}.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box .dropin-checkbox__checkmark:hover{background:var(--color-neutral-800) 0 0 no-repeat padding-box}.dropin-checkbox__box:focus-visible{border:var(--shape-border-width-1) solid var(--color-neutral-800);outline:var(--shape-border-width-3) solid var(--color-neutral-400)}.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box:focus-visible{width:var(--spacing-small);height:var(--spacing-small);border:none;background:var(--color-neutral-800) 0 0 no-repeat padding-box;outline:var(--shape-border-width-3) solid var(--color-neutral-400)}.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box:focus-visible .dropin-checkbox__checkmark{top:0}.dropin-checkbox__label,.dropin-checkbox__label--medium{padding-left:var(--spacing-xsmall);color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);text-align:left}.dropin-checkbox__label--large{padding-left:var(--spacing-small);color:var(--color-neutral-800);font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing);text-align:left}.dropin-checkbox__label--medium a{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing)}.dropin-checkbox__label--large a{font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing)}.dropin-checkbox__description{display:block;clear:both;flex-basis:100%;width:100%}.dropin-checkbox__description,.dropin-checkbox__description--medium{padding-left:var(--spacing-xsmall);color:var(--color-neutral-700);font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);text-align:left}.dropin-checkbox__description--large{padding-left:var(--spacing-small);color:var(--color-neutral-700);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);text-align:left}.dropin-checkbox,.dropin-checkbox--checkbox:not(:disabled){cursor:pointer}.dropin-checkbox__box--error,.dropin-checkbox__box--error:hover{border:var(--shape-border-width-2) solid var(--color-alert-500);background:var(--color-neutral-50) 0 0 no-repeat padding-box}.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box--error,.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box--error:hover{border:none;background:var(--color-alert-500) 0 0 no-repeat padding-box}.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box--error>.dropin-checkbox__checkmark,.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box--error>.dropin-checkbox__checkmark:hover{background:var(--color-alert-500) 0 0 no-repeat padding-box}.dropin-checkbox__checkmark--error{opacity:1;color:var(--color-neutral-50);border:var(--color-alert-500);background:var(--color-alert-500) 0 0 no-repeat padding-box}.dropin-checkbox--disabled,.dropin-checkbox__label--disabled,.dropin-checkbox__description--disabled{color:var(--color-neutral-500);cursor:default;pointer-events:none}.dropin-checkbox__box--disabled,.dropin-checkbox__box--disabled:hover{background:var(--color-neutral-300) 0 0 no-repeat padding-box;border:var(--shape-border-width-1) solid var(--color-neutral-500);cursor:default}.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box--disabled,.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box--disabled:hover{border:none;background:var(--color-neutral-300) 0 0 no-repeat padding-box}.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box--disabled>.dropin-checkbox__checkmark,.dropin-checkbox__checkbox:checked+.dropin-checkbox__checkbox-icon .dropin-checkbox__box--disabled>.dropin-checkbox__checkmark:hover{background:var(--color-neutral-300) 0 0 no-repeat padding-box}.dropin-color-swatch__container input[type=radio],.dropin-color-swatch__container input[type=checkbox]{opacity:0;position:absolute;width:0;height:0}.dropin-color-swatch__container .dropin-color-swatch__span{border-radius:50%;display:inline-block;--bg-color: var(--color-neutral-300);box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-400);position:relative;cursor:pointer;background-color:var(--bg-color)}.dropin-color-swatch__container--medium .dropin-color-swatch__span{height:32px;width:32px}.dropin-color-swatch__container--large .dropin-color-swatch__span{height:40px;width:40px}.dropin-color-swatch__container input[type=radio]:not(:checked):active~.dropin-color-swatch__span,.dropin-color-swatch__container input[type=checkbox]:not(:checked):active~.dropin-color-swatch__span{box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-500);outline:none}.dropin-color-swatch__container input[type=radio]:checked~.dropin-color-swatch__span,.dropin-color-swatch__container input[type=checkbox]:checked~.dropin-color-swatch__span,.dropin-color-swatch--selected{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-50),0 0 0 3px var(--color-neutral-800)}.dropin-color-swatch__container input[type=radio]:checked:active~.dropin-color-swatch__span,.dropin-color-swatch__container input[type=checkbox]:checked:active~.dropin-color-swatch__span{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-50),0 0 0 var(--shape-border-width-4) var(--color-neutral-900)}.dropin-color-swatch__container input[type=radio]:focus-visible+.dropin-color-swatch__span,.dropin-color-swatch__container input[type=checkbox]:focus-visible+.dropin-color-swatch__span{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-900),0 0 0 6px var(--color-neutral-400)}.dropin-color-swatch__container input[type=radio]:disabled~.dropin-color-swatch__span,.dropin-color-swatch__container input[type=checkbox]:disabled~.dropin-color-swatch__span,.dropin-color-swatch--disabled,.dropin-color-swatch__container input[type=radio]:disabled:active~.dropin-color-swatch__span,.dropin-color-swatch__container input[type=checkbox]:disabled:active~.dropin-color-swatch__span{box-shadow:0 0 0 var(--shape-border-width-4) var(--color-neutral-500);opacity:.24;pointer-events:none}.dropin-color-swatch__span--out-of-stock{box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-700);background:linear-gradient(to top left,rgba(0,0,0,0) 0%,rgba(0,0,0,0) calc(50% - .8px),var(--color-neutral-700) 50%,rgba(0,0,0,0) calc(50% + .8px),rgba(0,0,0,0) 100%),var(--bg-color)}.dropin-color-swatch__container input[type=radio]:not(:disabled)~.dropin-color-swatch__span,.dropin-color-swatch__container input[type=checkbox]:not(:disabled)~.dropin-color-swatch__span{cursor:pointer}.dropin-text-swatch__container input[type=radio],.dropin-text-swatch__container input[type=checkbox]{opacity:0;position:absolute;width:0}.dropin-text-swatch__container label{display:inline-block;background-color:var(--color-neutral-200);color:var(--color-neutral-800);border:var(--shape-border-width-1) solid var(--color-neutral-400);padding:6px var(--spacing-small);border-radius:var(--shape-border-radius-1);box-sizing:border-box;align-items:center;justify-content:center;font:var(--type-body-1-strong-font);position:relative;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropin-text-swatch__container label:hover{color:var(--color-neutral-900)}.dropin-text-swatch__container input[type=radio]:checked+.dropin-text-swatch__label,.dropin-text-swatch__container input[type=checkbox]:checked+.dropin-text-swatch__label,.dropin-text-swatch--selected{background-color:var(--color-neutral-50);box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-900)}.dropin-text-swatch__container input[type=radio]:focus-visible+label,.dropin-text-swatch__container input[type=checkbox]:focus-visible+label{background-color:var(--color-neutral-200);border:var(--shape-border-width-3) solid var(--color-neutral-800);outline:solid var(--shape-border-width-4) var(--color-neutral-400)}.dropin-text-swatch__container input[type=radio]:checked+label:active,.dropin-text-swatch__container input[type=checkbox]:checked+label:active,.dropin-text-swatch--selected{background-color:var(--color-neutral-200);box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-900),0 0 0 6px var(--color-neutral-400)}.dropin-text-swatch__container input[type=radio]:active+label,.dropin-text-swatch__container input[type=radio]:checked+label:active,.dropin-text-swatch__container input[type=radio]:checked+label:hover:not(:focus-visible),.dropin-text-swatch__container input[type=checkbox]:active+label,.dropin-text-swatch__container input[type=checkbox]:checked+label:active,.dropin-text-swatch__container input[type=checkbox]:checked+label:hover:not(:focus-visible){border:var(--shape-border-width-1) solid var(--color-neutral-500);color:var(--color-neutral-900);outline:none}.dropin-text-swatch__container input[type=radio]:disabled+label,.dropin-text-swatch__container input[type=checkbox]:disabled+label,.dropin-text-swatch--disabled,.dropin-text-swatch__container input[type=radio]:disabled:focus-visible+label,.dropin-text-swatch__container input[type=checkbox]:disabled:focus-visible+label{background-color:var(--color-neutral-300);color:var(--color-neutral-500);pointer-events:none;border:var(--shape-border-width-1) solid var(--color-neutral-500);outline:none}.dropin-text-swatch__label--out-of-stock{background:linear-gradient(to top left,rgba(0,0,0,0) 0%,rgba(0,0,0,0) calc(50% - .8px),var(--color-neutral-700) 50%,rgba(0,0,0,0) calc(50% + .8px),rgba(0,0,0,0) 100%),var(--color-neutral-200)}.dropin-text-swatch__container input[type=radio]:not(:disabled)+label,.dropin-text-swatch__container input[type=checkbox]:not(:disabled)+label{cursor:pointer}[data-tooltip]{position:relative}[data-tooltip]:after{display:none;content:attr(data-tooltip);position:absolute;bottom:100%;left:0;background-color:var(--color-neutral-50);color:var(--color-neutral-800);border:var(--shape-border-width-1) solid var(--color-neutral-400);padding:6px var(--spacing-small);border-radius:var(--shape-border-radius-1);white-space:nowrap;z-index:1000;font:var(--type-body-1-strong-font);margin-bottom:var(--spacing-xxsmall);-webkit-border-radius:var(--shape-border-radius-1);-moz-border-radius:var(--shape-border-radius-1)}[data-tooltip]:hover:after{display:block}.dropin-progress-spinner-provider{position:relative;display:flex;flex-direction:column;border-radius:inherit;opacity:1;padding:var(--spacing-small)}.dropin-progress-spinner{--size: var(--spacing-medium);--stroke-width: var(--shape-icon-stroke-4);width:var(--size);height:var(--size);border-style:solid;border-width:var(--stroke-width);border-color:var(--color-neutral-400);border-top-color:var(--color-brand-500);border-radius:50%;animation:indeterminate 1s infinite ease-in-out}.dropin-progress-spinner-with-provider{position:absolute;top:calc(50% - var(--size) / 2 - var(--stroke-width));left:calc(50% - var(--size) / 2 - var(--stroke-width))}.dropin-progress-spinner-background{--bgColor: var(--color-neutral-50);background-color:var(--bgColor);border-radius:inherit;opacity:.5;position:absolute;width:100%;height:100%;margin-top:calc(-1 * var(--spacing-small));margin-left:calc(-1 * var(--spacing-small))}.dropin-progress-spinner--shape-size-small{--size: var(--spacing-medium)}.dropin-progress-spinner--shape-size-medium{--size: var(--spacing-big)}.dropin-progress-spinner--shape-size-big{--size: var(--spacing-xxbig)}.dropin-progress-spinner--shape-size-large{--size: var(--spacing-large)}.dropin-progress-spinner--shape-stroke-1{--stroke-width: var(--shape-icon-stroke-1)}.dropin-progress-spinner--shape-stroke-2{--stroke-width: var(--shape-icon-stroke-2)}.dropin-progress-spinner--shape-stroke-3{--stroke-width: var(--shape-icon-stroke-3)}.dropin-progress-spinner--shape-stroke-4{--stroke-width: var(--shape-icon-stroke-4)}@keyframes indeterminate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.dropin-image-swatch__container input[type=radio],.dropin-image-swatch__container input[type=checkbox]{opacity:0;position:absolute;width:0;height:0}.dropin-image-swatch__container .dropin-image-swatch__span{display:inline-block;--bg-color: var(--color-neutral-300);box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-400);position:relative;cursor:pointer;background-color:var(--bg-color);background-image:var(--background-image);background-repeat:no-repeat;background-size:cover;height:100px;width:100px;overflow:hidden}.dropin-image-swatch__span span{display:inline-block;width:100%;height:100%}.dropin-image-swatch__span img,.dropin-image-swatch__content{width:inherit;position:absolute;top:-9999px;bottom:-9999px;left:-9999px;right:-9999px;margin:auto}.dropin-image-swatch__span:hover{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-50),0 0 0 var(--shape-border-width-4) var(--color-neutral-500);outline:none}.dropin-image-swatch__container input[type=radio]:not(:checked):active~.dropin-image-swatch__span,.dropin-image-swatch__container input[type=checkbox]:not(:checked):active~.dropin-image-swatch__span{box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-500);outline:none}.dropin-image-swatch__container input[type=radio]:checked~.dropin-image-swatch__span,.dropin-image-swatch__container input[type=checkbox]:checked~.dropin-image-swatch__span,.dropin-image-swatch--selected{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-50),0 0 0 var(--shape-border-width-4) var(--color-neutral-800)}.dropin-image-swatch__container input[type=radio]:checked:active~.dropin-image-swatch__span,.dropin-image-swatch__container input[type=checkbox]:checked:active~.dropin-image-swatch__span{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-50),0 0 0 var(--shape-border-width-4) var(--color-neutral-600)}.dropin-image-swatch__container input[type=radio]:focus-visible+.dropin-image-swatch__span,.dropin-image-swatch__container input[type=checkbox]:focus-visible+.dropin-image-swatch__span{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-900),0 0 0 6px var(--color-neutral-400)}.dropin-image-swatch__container input[type=radio]:disabled~.dropin-image-swatch__span,.dropin-image-swatch__container input[type=checkbox]:disabled~.dropin-image-swatch__span,.dropin-image-swatch--disabled,.dropin-image-swatch__container input[type=radio]:disabled:active~.dropin-image-swatch__span,.dropin-image-swatch__container input[type=checkbox]:disabled:active~.dropin-image-swatch__span{box-shadow:0 0 0 var(--shape-border-width-4) var(--color-neutral-500);background-color:#ffffffc2;pointer-events:none}.dropin-image-swatch__container .dropin-image-swatch__span--out-of-stock{background:linear-gradient(to top left,rgba(0,0,0,0) 0%,rgba(0,0,0,0) calc(50% - .8px),var(--color-neutral-700) 50%,rgba(0,0,0,0) calc(50% + .8px),rgba(0,0,0,0) 100%);background-color:#fff9}.dropin-image-swatch__span--out-of-stock>.dropin-image-swatch__content,.dropin-image-swatch__span--out-of-stock img,.dropin-image-swatch__container input[type=radio]:disabled~.dropin-image-swatch__span img,.dropin-image-swatch__container input[type=radio]:disabled~.dropin-image-swatch__span>.dropin-image-swatch__content,.dropin-image-swatch__container input[type=checkbox]:disabled~.dropin-image-swatch__span img,.dropin-image-swatch__container input[type=checkbox]:disabled~.dropin-image-swatch__span>.dropin-image-swatch__content{z-index:-1}.dropin-image-swatch__container input[type=radio]:not(:disabled)~.dropin-image-swatch__span,.dropin-image-swatch__container input[type=checkbox]:not(:disabled)~.dropin-image-swatch__span{cursor:pointer}.dropin-accordion-section__heading{display:grid;grid-template-columns:1fr max-content}.dropin-accordion-section p{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing);color:var(--color-neutral-700);margin:0}.dropin-accordion-section__flex{display:flex;justify-content:space-between;cursor:pointer;align-items:center}.dropin-accordion-section__title-container,.dropin-accordion-section__secondary-text-container{display:flex;gap:var(--spacing-xsmall);align-items:center}.dropin-accordion-section__secondary-text-container h4,.dropin-accordion-section__title-container h3{margin:0}.dropin-accordion-section__title{color:var(--color-neutral-800);font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing);cursor:pointer}.dropin-accordion-section__secondary-text{color:var(--color-neutral-700);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.dropin-accordion-section__secondary-text a{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing)}.dropin-accordion-section svg{cursor:pointer}.dropin-accordion-section__content-container{display:grid;margin:var(--spacing-medium) 0;gap:var(--spacing-medium)}.dropin-accordion-section__content-container:empty{margin:0}.dropin-in-line-alert{border-width:var(--shape-border-width-2);border-style:solid;border-radius:var(--shape-border-radius-1);display:grid;grid-auto-flow:row;gap:var(--spacing-small);padding:var(--spacing-small);position:relative}.dropin-in-line-alert__heading{display:grid;gap:var(--spacing-small);grid-template-columns:auto auto;align-items:center}.dropin-in-line-alert__title-container{display:flex;align-items:center;gap:var(--spacing-xsmall)}.dropin-in-line-alert__title{color:var(--color-neutral-800);font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.dropin-in-line-alert__actions-container{display:flex;justify-content:end}.dropin-in-line-alert__additional-action{padding:0}.dropin-in-line-alert__additional-action span{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);text-decoration:underline;color:var(--color-neutral-700)}.dropin-in-line-alert__dismiss-button{padding:0}.dropin-in-line-alert__description{color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);margin:0}.dropin-in-line-alert__additional-actions-container{display:flex;gap:var(--spacing-small);justify-content:flex-end}.dropin-in-line-alert__item-list:first-child:before{content:"";display:block;border-top:var(--shape-border-width-3) solid var(--color-neutral-400);margin-bottom:var(--spacing-medium)}.dropin-in-line-alert--error{border-color:var(--color-alert-500)}.dropin-in-line-alert--warning{border-color:var(--color-warning-500)}.dropin-in-line-alert--success{border-color:var(--color-positive-500)}.dropin-in-line-alert--secondary{border:none;background-color:var(--color-neutral-200)}.dropin-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;overflow:auto;display:grid;grid-template-columns:repeat(var(--grid-2-columns),1fr);grid-auto-flow:column}.dropin-modal--dim{background-color:#0000003d}.dropin-modal__body{background-color:var(--color-neutral-50);padding:var(--spacing-medium);overflow:hidden;text-align:left;vertical-align:middle;position:relative;box-shadow:var(--shape-shadow-2);border-radius:4px;flex-direction:column}.dropin-modal__body--centered{text-align:center;margin-left:auto;margin-right:auto}.dropin-modal__body--full{grid-column-start:1;grid-column-end:span var(--grid-2-columns);margin-block:auto}.dropin-modal__body--small,.dropin-modal__body--medium{grid-column-start:3;grid-column-end:11;margin-block:auto}.dropin-modal__body--small>.dropin-modal__content,.dropin-modal__body--medium>.dropin-modal__content,.dropin-modal__body--full>.dropin-modal__content{margin-bottom:var(--spacing-xbig)}.dropin-modal__header{flex-direction:row;min-height:var(--spacing-medium);display:flex;position:relative}.dropin-modal__header-title{margin-bottom:var(--spacing-small)}.dropin-modal__header-title-content{flex-direction:row;display:flex;position:relative}.dropin-modal__header-close-button{margin-left:auto}@media only screen and (min-width: 768px){.dropin-modal__body--small{grid-column-start:6;grid-column-end:9;margin-block:auto}.dropin-modal__body--medium{grid-column-start:4;grid-column-end:10;margin-block:auto}.dropin-modal__body--medium>.dropin-modal__content,.dropin-modal__body--full>.dropin-modal__content{margin:0 var(--spacing-xxbig) var(--spacing-large)}.dropin-modal__body--medium>.dropin-modal__header,.dropin-modal__body--full>.dropin-modal__header{min-height:var(--spacing-xxbig)}.dropin-modal__body--medium>.dropin-modal__header-title,.dropin-modal__body--full>.dropin-modal__header-title{margin-bottom:var(--spacing-medium)}}.dropin-cart-item{--item-group-spacing: 0;--group-spacing: var(--spacing-xsmall);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-700);container-type:inline-size;container-name:cart-item;position:relative}.dropin-cart-item__skeleton{gap:var(--spacing-xsmall)}.dropin-cart-item__skeleton__item{width:100%;height:auto}.dropin-cart-item__skeleton__item:after{content:"";display:inline-block}.dropin-cart-item__image .dropin-cart-item__skeleton__item{padding-bottom:100%}.dropin-cart-item__image:is(img),.dropin-cart-item__image img{width:100%;height:auto}.dropin-cart-item__title{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing);color:var(--color-neutral-800)}.dropin-cart-item__sku{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.dropin-cart-item__configurations{list-style-type:none;margin:var(--group-spacing) 0 0 0;padding:0}.dropin-cart-item__configurations__item__value{font-weight:inherit;color:var(--color-neutral-800)}.dropin-cart-item__configurations__item:not(:last-child){margin-right:var(--spacing-xxsmall)}.dropin-cart-item__quantity__value{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);display:none}.dropin-cart-item__quantity__number{font-weight:inherit;color:var(--color-neutral-800)}.dropin-cart-item__quantity__incrementer,.dropin-cart-item__quantity__picker{max-width:160px;margin-top:calc(var(--group-spacing) / 2);margin-bottom:var(--group-spacing)}.dropin-cart-item__remove{position:absolute;right:0;top:0}.dropin-cart-item__warning,.dropin-cart-item__alert{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);margin-bottom:var(--group-spacing);display:flex;align-items:center}.dropin-cart-item__discount,.dropin-cart-item__savings{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.dropin-cart-item__warning svg,.dropin-cart-item__alert svg{margin-right:var(--spacing-xxsmall)}.dropin-cart-item__savings__large-screen,.dropin-cart-item__discount__large-screen,.dropin-cart-item__savings__wrapper{display:none}.dropin-cart-item__warning,.dropin-cart-item__discount,.dropin-cart-item__savings{color:var(--color-warning-800)}.dropin-cart-item__warning svg{fill:var(--color-warning-800);color:var(--color-neutral-50)}.dropin-cart-item__alert{color:var(--color-alert-800)}.dropin-cart-item__alert svg{fill:var(--color-alert-800);color:var(--color-neutral-50)}.dropin-cart-item__total{display:flex;gap:var(--spacing-xxsmall);flex-direction:column}.dropin-cart-item__row-total{display:flex;gap:var(--spacing-xxsmall)}.dropin-cart-item__row-total__wrapper{display:flex}.dropin-cart-item__total-tax-excluded{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);color:var(--color-neutral-800)}.dropin-cart-item--updating{opacity:.4;pointer-events:none;position:relative}.dropin-cart-item__spinner{margin:0 auto;position:absolute;z-index:999;left:0;right:0;top:calc(50% - (var(--size) / 2));bottom:0}.dropin-cart-item__sr-only{border:0;clip:rect(0 0 0 0);clip-path:inset(50%);height:1;margin:0 -1px -1px 0;overflow:hidden;padding:0;position:absolute;width:1}.dropin-cart-item__wrapper{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:min-content;grid-column-gap:var(--spacing-small)}.dropin-cart-item__image{grid-column:1 / 2;grid-row:1 / 10}.dropin-cart-item__title,.dropin-cart-item__sku,.dropin-cart-item__attributes,.dropin-cart-item__configurations,.dropin-cart-item__price,.dropin-cart-item__total,.dropin-cart-item__warning,.dropin-cart-item__alert,.dropin-cart-item__quantity,.dropin-cart-item__footer{grid-column:2 / 5}.dropin-cart-item__actions{grid-column:1 / 5;grid-row:5 / 10;text-align:left;display:flex;flex-direction:column;gap:0}.dropin-cart-item__actions button:only-child{padding-left:0;padding-right:0}.dropin-cart-item__title--edit{padding-right:var(--spacing-xbig)}.dropin-cart-item__description,.dropin-cart-item__sku{margin-top:var(--item-group-spacing)}.dropin-cart-item__price,.dropin-cart-item__attributes div{margin-top:var(--group-spacing)}.dropin-cart-item__quantity:not(.dropin-cart-item__quantity--edit){display:none}.dropin-cart-item__warning--quantity,.dropin-cart-item__alert--quantity,.dropin-cart-item__description{display:none}.dropin-cart-item__price-tax-message,.dropin-cart-item__price-tax-excluded-message,.dropin-cart-item__total-tax-message{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);color:var(--color-neutral-800)}.dropin-cart-item__total-tax-message{margin-left:var(--spacing-xxsmall)}.dropin-cart-item__footer{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);color:var(--color-neutral-800)}.dropin-cart-item__attributes{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-neutral-800)}@container cart-item (width >= 400px) and (width < 737px){.dropin-cart-item__title,.dropin-cart-item__sku,.dropin-cart-item__attributes,.dropin-cart-item__configurations,.dropin-cart-item__price,.dropin-cart-item__warning,.dropin-cart-item__alert,.dropin-cart-item__quantity,.dropin-cart-item__footer{grid-column:2 / 4}.dropin-cart-item__actions{grid-column:1 / 4;grid-row:5 / 10}.dropin-cart-item__total:not(.dropin-cart-item__total--edit){grid-auto-rows:min-content;grid-column:4 / 5;grid-row:1 / 10;display:grid;justify-self:end;text-align:right;gap:unset}}@container cart-item (width >= 737px) and (width < 1192px){.dropin-cart-item__wrapper{grid-template-columns:repeat(12,1fr)}.dropin-cart-item__image{grid-column:1 / 3}.dropin-cart-item__savings,.dropin-cart-item__discount{display:none}.dropin-cart-item__savings__large-screen,.dropin-cart-item__discount__large-screen,.dropin-cart-item__savings__wrapper{display:block}.dropin-cart-item__savings__wrapper:empty{display:none}.dropin-cart-item__title,.dropin-cart-item__sku,.dropin-cart-item__savings__large-screen,.dropin-cart-item__discount__large-screen,.dropin-cart-item__attributes,.dropin-cart-item__configurations,.dropin-cart-item__savings__wrapper,.dropin-cart-item__price,.dropin-cart-item__warning,.dropin-cart-item__alert,.dropin-cart-item__quantity,.dropin-cart-item__footer{grid-column:3 / 9}.dropin-cart-item__actions{grid-column:10 / 13;grid-row:4 / 10;text-align:right}.dropin-cart-item__savings__wrapper{margin-top:var(--spacing-xsmall)}.dropin-cart-item__title--edit{padding-right:unset}.dropin-cart-item__total{grid-column:10 / 13;grid-row:1 / 10;text-align:right;display:flex;flex-direction:column;gap:0}.dropin-cart-item__row-total{display:contents;gap:var(--spacing-xxsmall)}.dropin-cart-item__total--edit{padding-right:calc(var(--spacing-xbig) + var(--spacing-xsmall))}.dropin-cart-item__row-total__wrapper{display:contents}}@container cart-item (width >= 1192px){.dropin-cart-item{--item-group-spacing: var(--spacing-xxsmall);--group-spacing: var(--spacing-small)}.dropin-cart-item__wrapper{grid-template-columns:repeat(8,1fr);grid-column-gap:var(--spacing-medium)}.dropin-cart-item__image{grid-column:1 / 2}.dropin-cart-item__title,.dropin-cart-item__description,.dropin-cart-item__sku,.dropin-cart-item__price,.dropin-cart-item__attributes,.dropin-cart-item__configurations,.dropin-cart-item__footer{grid-column:2 / 6}.dropin-cart-item__title{padding-right:unset}.dropin-cart-item__actions{grid-column:9 / 13;grid-row:4 / 10;text-align:right}.dropin-cart-item__warning,.dropin-cart-item__alert{grid-column:6 / 7}.dropin-cart-item__warning--quantity,.dropin-cart-item__alert--quantity{display:flex;align-items:center}.dropin-cart-item__warning--quantity svg,.dropin-cart-item__alert--quantity svg{margin-right:var(--spacing-xxsmall)}.dropin-cart-item__warning--quantity svg{fill:var(--color-warning-800);color:var(--color-neutral-50)}.dropin-cart-item__alert--quantity svg{fill:var(--color-alert-800);color:var(--color-neutral-50)}.dropin-cart-item__warning:not(.dropin-cart-item__warning--quantity),.dropin-cart-item__alert:not(.dropin-cart-item__alert--quantity){display:none}.dropin-cart-item__total{grid-column:10 / 13;grid-row:1 / 10;justify-self:end;text-align:right}.dropin-cart-item__total:has(.dropin-cart-item__total-tax-excluded){flex-direction:column;gap:0}.dropin-cart-item__row-total{display:flex;gap:var(--spacing-xxsmall)}.dropin-cart-item__total--edit{padding-right:calc(var(--spacing-xbig) + var(--spacing-xsmall))}.dropin-cart-item__quantity__incrementer,.dropin-cart-item__quantity__picker{margin-top:0}.dropin-cart-item__quantity:not(.dropin-cart-item__quantity--edit),.dropin-cart-item__quantity__value{display:unset}.dropin-cart-item__price__quantity{display:none}.dropin-cart-item__title{font:var(--type-headline-2-default-font);letter-spacing:var(--type-headline-2-default-letter-spacing)}}.dropin-cart-list{container-type:inline-size;container-name:cart-item}.dropin-cart-list__wrapper{display:grid;grid-auto-rows:min-content;grid-gap:var(--spacing-medium)}@container cart-item (width >= 737px){.dropin-cart-list__wrapper{grid-gap:0}.dropin-cart-list__item:not(:last-child):after{content:"";display:block;border-top:var(--shape-border-width-3) solid var(--color-neutral-400);margin:var(--spacing-medium) 0}}.dropin-price-range{display:flex;flex-wrap:wrap;font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.dropin-price-range__separator,.dropin-price-range__to{margin-left:5px;margin-right:5px;margin-block:auto}.dropin-price-range__from,.dropin-price-range__as-low-as{margin-right:5px}.dropin-price-range__from--small,.dropin-price-range__to--small,.dropin-price-range__as-low-as--small{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing)}.dropin-price-range__from--medium,.dropin-price-range__to--medium,.dropin-price-range__as-low-as--medium{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.dropin-price-range__from--large,.dropin-price-range__to--large,.dropin-price-range__as-low-as--large{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing)}.dropin-price-range__special{margin-left:5px}.dropin-breadcrumbs__container{display:flex}.dropin-breadcrumbs__items{display:flex;flex-wrap:wrap;font:var(--type-details-caption-1-font);list-style:none;margin:0;padding:0}.dropin-breadcrumbs__item{display:flex;justify-content:center}.dropin-breadcrumbs__item--last>:first-child{color:var(--color-brand-500);cursor:default}.dropin-breadcrumbs__item--last>:first-child:hover,.dropin-breadcrumbs__item--last>:first-child:focus-visible{text-decoration:none}.dropin-breadcrumbs__separator--default{margin:0 var(--spacing-xsmall)}.dropin-breadcrumbs__separator--icon{width:16px;height:16px;margin:0 var(--spacing-xxsmall)}.dropin-alert-banner{background-color:var(--color-alert-800);color:var(--color-neutral-50);font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);padding:var(--spacing-small);display:grid;grid-template-columns:1fr max-content;align-items:center;gap:var(--spacing-small)}.dropin-alert-banner__actions,.dropin-alert-banner__content{align-items:center;display:grid;grid-template-columns:max-content max-content}.dropin-alert-banner--neutral,.dropin-alert-banner--neutral button.dropin-alert-banner__dismiss-button{background-color:var(--color-neutral-700)}.dropin-alert-banner--neutral button.dropin-alert-banner__dismiss-button:hover,.dropin-alert-banner--neutral button.dropin-alert-banner__dismiss-button:focus,.dropin-alert-banner--neutral button.dropin-alert-banner__dismiss-button:focus:hover,.dropin-alert-banner--neutral button.dropin-alert-banner__dismiss-button:active{background-color:var(--color-neutral-500)}.dropin-alert-banner--brand,.dropin-alert-banner--brand button.dropin-alert-banner__dismiss-button{background-color:var(--color-brand-500)}.dropin-alert-banner--brand button.dropin-alert-banner__dismiss-button:hover,.dropin-alert-banner--brand button.dropin-alert-banner__dismiss-button:focus,.dropin-alert-banner--brand button.dropin-alert-banner__dismiss-button:focus:hover,.dropin-alert-banner--brand button.dropin-alert-banner__dismiss-button:active{background-color:var(--color-brand-700)}.dropin-alert-banner--success,.dropin-alert-banner--success button.dropin-alert-banner__dismiss-button{background-color:var(--color-positive-800)}.dropin-alert-banner--success button.dropin-alert-banner__dismiss-button:hover,.dropin-alert-banner--success button.dropin-alert-banner__dismiss-button:focus,.dropin-alert-banner--success button.dropin-alert-banner__dismiss-button:focus:hover,.dropin-alert-banner--success button.dropin-alert-banner__dismiss-button:active{background-color:var(--color-positive-500)}.dropin-alert-banner--warning,.dropin-alert-banner--warning button.dropin-alert-banner__dismiss-button{background-color:var(--color-alert-800)}.dropin-alert-banner--warning button.dropin-alert-banner__dismiss-button:hover,.dropin-alert-banner--warning button.dropin-alert-banner__dismiss-button:focus,.dropin-alert-banner--warning button.dropin-alert-banner__dismiss-button:focus:hover,.dropin-alert-banner--warning button.dropin-alert-banner__dismiss-button:active{background-color:var(--color-alert-500)}.dropin-alert-banner__icon{flex-shrink:0;color:var(--color-neutral-50);margin-right:var(--spacing-small)}button.dropin-alert-banner__dismiss-button{margin-left:auto;color:var(--color-neutral-50);height:24px;min-height:24px;width:24px;min-width:24px;padding:0}button.dropin-alert-banner__action{color:var(--color-neutral-50);font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);padding:0;margin-right:var(--spacing-xxsmall)}@media only screen and (width >= 400px) and (width < 768px){.dropin-alert-banner__actions,.dropin-alert-banner__content{grid-template-columns:auto auto;word-break:break-word;word-wrap:break-word}.dropin-alert-banner__message{word-break:break-word;word-wrap:break-word}}.dropin-illustrated-message{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;row-gap:var(--spacing-small)}.dropin-illustrated-message .dropin-card{width:100%}.dropin-illustrated-message__icon{color:var(--color-neutral-400);margin:0 auto var(--spacing-medium) auto}.dropin-illustrated-message__heading{color:var(--color-neutral-800);font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing);margin:0}.dropin-illustrated-message__message{color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);text-align:center;margin:0}.dropin-illustrated-message .dropin-illustrated-message__action{justify-self:center;align-self:center}.dropin-toggle-button{display:block;position:relative;width:100%}.dropin-toggle-button__actionButton{cursor:pointer;background-color:var(--color-neutral-200);border:var(--shape-border-width-1) solid var(--color-neutral-400);border-radius:var(--shape-border-radius-1);font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);padding:var(--spacing-medium);align-items:center;display:grid}.dropin-toggle-button__selected .dropin-toggle-button__actionButton{background-color:var(--color-neutral-50);border:var(--shape-border-width-1) solid var(--color-neutral-800)}.dropin-toggle-button:has(input:focus-visible){outline:0 none;box-shadow:0 0 0 var(--shape-icon-stroke-4) var(--color-neutral-400);-webkit-box-shadow:0 0 0 var(--shape-icon-stroke-4) var(--color-neutral-400);-moz-box-shadow:0 0 0 var(--shape-icon-stroke-4) var(--color-neutral-400);border-radius:var(--shape-border-radius-1)}.dropin-toggle-button__radioButton.dropin-radio-button{cursor:pointer;position:absolute}.dropin-toggle-button__radioButton .dropin-radio-button__label:before{cursor:pointer;margin-right:0}.dropin-toggle-button__radioButton .dropin-radio-button__input:focus-visible+.dropin-radio-button__label:before{box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-600)}.dropin-toggle-button__content{color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);display:flex;align-items:center;justify-content:center;margin-left:var(--spacing-big);cursor:pointer}.dropin-toggle-button__content a{color:var(--color-brand-500);font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing)}.dropin-toggle-button__icon{height:24px;margin-right:var(--spacing-xsmall)}.dropin-header-container{display:grid;grid-template-columns:repeat(2,auto);justify-content:space-between;gap:0px 0px;grid-template-areas:"title actions" "divider divider";width:100%}.dropin-header-container__title{grid-area:title;color:var(--color-neutral-800)}.dropin-header-container__title--medium{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-1-letter-spacing)}.dropin-header-container__title--large{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing)}.dropin-header-container__actions{grid-area:actions;font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-brand-500);align-self:center}.dropin-header-container .dropin-header-container__divider{grid-area:divider;width:100%;border-top:3px solid var(--color-neutral-400)}.dropin-header-container .dropin-header-container__divider--medium{margin:var(--spacing-xsmall) 0 var(--spacing-medium) 0}.dropin-header-container .dropin-header-container__divider--large{margin:22px 0 var(--spacing-medium) 0}.dropin-tag-container{position:relative;border-radius:20px;-webkit-user-select:none;user-select:none;padding:8px 16px;background-color:var(--color-neutral-400);display:flex;justify-content:center;align-items:center}.dropin-tag-container__label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-overline-letter-spacing);color:var(--color-neutral-800);line-height:21px}.dropin-content-grid{container-type:inline-size;container-name:dropin-content-grid;max-width:inherit;overflow:scroll}.dropin-content-grid__content{display:grid;gap:var(--spacing-small);margin:auto;justify-items:center}.dropin-content-grid__dynamic-columns-content{display:flex;flex-wrap:wrap}.dropin-content-grid__content--empty{grid-template-columns:repeat(1,1fr)}@container dropin-content-grid (width < 360){.dropin-content-grid__content{grid-template-columns:repeat(4,1fr);gap:var(--spacing-xsmall)}}.dropin-pagination{display:flex;justify-content:center;align-items:center;gap:0 var(--grid-2-gutters)}.dropin-pagination-arrow{margin:0;padding:0;box-sizing:border-box;background-color:transparent;border:none;display:flex;justify-content:center;align-items:center;cursor:pointer}.dropin-pagination-arrow--backward svg{transform:rotate(90deg)}.dropin-pagination-arrow--forward svg{transform:rotate(-90deg)}.dropin-pagination_list{list-style:none;display:flex;justify-content:center;align-items:center;gap:0 var(--grid-2-gutters);margin:0;padding:0}.dropin-pagination_list-item{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:16px;height:16px}.dropin-pagination_list-item--active{background-color:var(--color-neutral-300);width:16px;height:16px;border-radius:50%;display:flex;justify-content:center;align-items:center}.dropin-pagination_list-item button{cursor:pointer;margin:0;padding:0;background-color:transparent;border:none;font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.dropin-pagination_list-item--active button{cursor:default}.dropin-pagination_list-item--active button:disabled,.dropin-pagination_list-item--ellipsis button,.dropin-pagination-arrow--backward:disabled,.dropin-pagination-arrow--forward:disabled{cursor:default}.dropin-pagination button:not(:disabled){color:var(--color-neutral-800)}.dropin-pagination button{-moz-appearance:none;appearance:none;-webkit-appearance:none}.dropin-product-item-card__skeleton{gap:var(--spacing-small)}.dropin-product-item-card__skeleton__image{height:375px}.dropin-product-item-card__skeleton__content{grid-column:1/-1}.dropin-product-item-card{display:grid;position:relative;grid-auto-flow:row;background:var(--color-neutral-50);border:1px solid var(--color-neutral-400);color:var(--color-neutral-800);font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing);margin:var(--spacing-small);width:300px}.dropin-product-item-card__image-container{overflow:hidden;width:100%;height:auto}.dropin-product-item-card__image img{width:100%;max-height:375px}.dropin-product-item-card__content{display:grid;grid-template-columns:1fr 1fr;padding:var(--spacing-small);gap:var(--spacing-xxsmall);align-items:center;color:var(--color-neutral-800)}.dropin-product-item-card__title,.dropin-product-item-card__sku,.dropin-product-item-card__price,.dropin-product-item-card__swatches,.dropin-product-item-card__action{grid-column:1/3}.dropin-product-item-card__title{font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing)}.dropin-product-item-card__sku,.dropin-product-item-card__price{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.dropin-product-item-card__swatches{margin-top:var(--spacing-xsmall)}.dropin-product-item-card__action{margin-top:var(--spacing-xsmall);width:100%}
5
5
  .dropin-design{--color-brand-500: #454545;--color-brand-600: #383838;--color-brand-700: #2b2b2b;--color-neutral-50: #ffffff;--color-neutral-100: #fafafa;--color-neutral-200: #f5f5f5;--color-neutral-300: #e8e8e8;--color-neutral-400: #d6d6d6;--color-neutral-500: #b8b8b8;--color-neutral-600: #8f8f8f;--color-neutral-700: #666666;--color-neutral-800: #3d3d3d;--color-neutral-900: #292929;--color-positive-200: #eff5ef;--color-positive-500: #7fb078;--color-positive-800: #53824c;--color-informational-200: #eeeffb;--color-informational-500: #6978d9;--color-informational-800: #5d6dd6;--color-warning-200: #fdf3e9;--color-warning-500: #e79f5c;--color-warning-800: #ad5c00;--color-alert-200: #ffebeb;--color-alert-500: #db7070;--color-alert-800: #bf4545;--color-opacity-16: rgba(255, 255, 255, .16);--color-opacity-24: rgba(255, 255, 255, .24);--color-action-button-active: #ffffff;--color-action-button-hover: #e8e8e8;--color-button-active: #2b2b2b;--color-button-focus: #d6d6d6;--color-button-hover: #383838;--grid-1-columns: 4;--grid-1-margins: 0;--grid-1-gutters: 16px;--grid-2-columns: 12;--grid-2-margins: 0;--grid-2-gutters: 16px;--grid-3-columns: 12;--grid-3-margins: 0;--grid-3-gutters: 24px;--grid-4-columns: 12;--grid-4-margins: 0;--grid-4-gutters: 24px;--grid-5-columns: 12;--grid-5-margins: 0;--grid-5-gutters: 24px;--shape-border-radius-1: 3px;--shape-border-radius-2: 8px;--shape-border-radius-3: 24px;--shape-border-width-1: 1px;--shape-border-width-2: 1.5px;--shape-border-width-3: 2px;--shape-border-width-4: 4px;--shape-shadow-1: 0 0 16px 0 rgba(0, 0, 0, .16);--shape-shadow-2: 0 2px 16px 0 rgba(0, 0, 0, .16);--shape-shadow-3: 0 2px 3px 0 rgba(0, 0, 0, .16);--shape-icon-stroke-1: 1px;--shape-icon-stroke-2: 1.5px;--shape-icon-stroke-3: 2px;--shape-icon-stroke-4: 4px;--spacing-xxsmall: 4px;--spacing-xsmall: 8px;--spacing-small: 16px;--spacing-medium: 24px;--spacing-big: 32px;--spacing-xbig: 40px;--spacing-xxbig: 48px;--spacing-large: 64px;--spacing-xlarge: 72px;--spacing-xxlarge: 96px;--spacing-huge: 120px;--spacing-xhuge: 144px;--spacing-xxhuge: 192px;--type-base-font-family: system-ui, sans-serif;--type-display-1-font: normal normal 300 60px/72px var(--type-base-font-family);--type-display-1-letter-spacing: .04em;--type-display-2-font: normal normal 300 48px/56px var(--type-base-font-family);--type-display-2-letter-spacing: .04em;--type-display-3-font: normal normal 300 34px/40px var(--type-base-font-family);--type-display-3-letter-spacing: .04em;--type-headline-1-font: normal normal 400 24px/32px var(--type-base-font-family);--type-headline-1-letter-spacing: .04em;--type-headline-2-default-font: normal normal 300 20px/24px var(--type-base-font-family);--type-headline-2-default-letter-spacing: .04em;--type-headline-2-strong-font: normal normal 400 20px/24px var(--type-base-font-family);--type-headline-2-strong-letter-spacing: .04em;--type-body-1-default-font: normal normal 300 16px/24px var(--type-base-font-family);--type-body-1-default-letter-spacing: .04em;--type-body-1-strong-font: normal normal 400 16px/24px var(--type-base-font-family);--type-body-1-strong-letter-spacing: .04em;--type-body-1-emphasized-font: normal normal 700 16px/24px var(--type-base-font-family);--type-body-1-emphasized-letter-spacing: .04em;--type-body-2-default-font: normal normal 300 14px/20px var(--type-base-font-family);--type-body-2-default-letter-spacing: .04em;--type-body-2-strong-font: normal normal 400 14px/20px var(--type-base-font-family);--type-body-2-strong-letter-spacing: .04em;--type-body-2-emphasized-font: normal normal 700 14px/20px var(--type-base-font-family);--type-body-2-emphasized-letter-spacing: .04em;--type-button-1-font: normal normal 400 20px/26px var(--type-base-font-family);--type-button-1-letter-spacing: .08em;--type-button-2-font: normal normal 400 16px/24px var(--type-base-font-family);--type-button-2-letter-spacing: .08em;--type-details-caption-1-font: normal normal 400 12px/16px var(--type-base-font-family);--type-details-caption-1-letter-spacing: .08em;--type-details-caption-2-font: normal normal 300 12px/16px var(--type-base-font-family);--type-details-caption-2-letter-spacing: .08em;--type-details-overline-font: normal normal 700 12px/20px var(--type-base-font-family);--type-details-overline-letter-spacing: .16em}.dropin-design a{--textColor: var(--color-brand-500);color:var(--textColor);text-decoration:none}.dropin-design a:hover{--textColor: var(--color-brand-700);text-decoration:solid underline var(--textColor);text-underline-offset:6px}.dropin-design a:focus-visible{outline:solid var(--shape-border-width-4) var(--color-neutral-400);border:var(--shape-border-width-1) solid var(--color-neutral-800);border-radius:var(--shape-border-radius-1)}.dropin-image{background:var(--color-neutral-300) linear-gradient(to right,var(--color-neutral-300) 0%,var(--color-neutral-100) 20%,var(--color-neutral-300) 40%,var(--color-neutral-300) 100%) no-repeat;animation:imageShimmer infinite 1.2s linear;border-radius:var(--shape-border-radius-2)}.dropin-image--loaded{background:unset;border-radius:unset}@keyframes imageShimmer{0%{background-position:-600px 0}to{background-position:600px 0}}`,{styleId:"sdk"});
6
- import{I as t,i as e}from"./chunks/initializer.js";import"./chunks/image-params-keymap.js";export{t as Initializer,e as initializers};
6
+ import{I as o,i as e}from"./chunks/initializer.js";import"./chunks/image-params-keymap.js";import"./chunks/locale-config.js";export{o as Initializer,e as initializers};
7
7
  //# sourceMappingURL=initializer.js.map
package/lib.js CHANGED
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{S as M}from"./chunks/vcomponent.js";import{R as ee,V as re,c as te,g as oe}from"./chunks/vcomponent.js";import{d as E}from"./chunks/cjs.js";import{d as se,a as ie,i as le}from"./chunks/deviceUtils.js";import{C as ae,I as ue,i as ce}from"./chunks/initializer.js";import{x as R,A as O,h as _,T as V,E as D,q as f,_ as $,y as v}from"./chunks/icons/Add.js";import{IntlContext as k}from"./i18n.js";import{g as pe,s as fe}from"./chunks/image-params-keymap.js";import{g as he}from"./chunks/get-path-value.js";import"./preact-jsx-runtime.js";import"./signals.js";const A=r=>{const t=new FormData(r);return Object.fromEntries(t)},W=r=>{const t=new FormData(r),s=Object.fromEntries(t);return Object.entries(s).reduce((n,[d])=>{const u=r.elements[d];return u!=null&&u.validationMessage?{...n,[d]:u.validationMessage}:{...n}},{})},F={arrayMerge:(r,t,s)=>{const l=r.slice();return t.forEach((n,d)=>{typeof l[d]>"u"?l[d]=s.cloneUnlessOtherwiseSpecified(n,s):s.isMergeableObject(n)?l[d]=E(r[d],n,s):r.indexOf(n)===-1&&l.push(n)}),l}};function G(r,t){return t?E(r,t,F):r}const H=r=>r.replace("_","-");function q(r,t={},s,l,n,d="div"){const u=R(M),S=O(null),c=O("pending"),w=O([]),[y,P]=_({children:[l]}),[N,B]=_({}),C=V(()=>({get:o=>N[o],set:(o,e)=>{B({...C,[o]:e})}}),[N]),{intl:L}=R(k);t.dictionary=L.dictionary,t._setProps=o=>{P(e=>{const i=typeof o=="function"?o(e):o;if(n){const a=D(n(e),{key:"render"}),h=e.children.findIndex(p=>(p==null?void 0:p.key)==="render");e.children[h]=a}return i})};const g=f(o=>{typeof o=="function"?w.current.push(o):console.warn("Skipped: Invalid _registerMethod",o)},[]);t._registerMethod=g;const m=f(o=>$(d,{"data-slot-html-element":o.tagName.toLowerCase(),ref:e=>{e==null||e.appendChild(o)}},null),[d]);t._htmlElementToVNode=m,t.getSlotElement=f(o=>{var i,a;const e=(i=S.current)==null?void 0:i.querySelector(`[data-slot-key="${o}"]`);if(I(`🟦 "${r}" Slot getSlotElement: ${o}`,(a=S.current)==null?void 0:a.cloneNode(!0),e==null?void 0:e.cloneNode(!0)),!!e)return{appendChild:h=>{e.appendChild(h)},prependChild:h=>{e.insertBefore(h,e.firstChild)},appendSibling:h=>{const p=e.parentNode;p==null||p.insertBefore(h,e.nextSibling)},prependSibling:h=>{const p=e.parentNode;p==null||p.insertBefore(h,e)}}},[r]),t.onRender=f(o=>{w.current.push(o)},[]),t.onChange=t.onRender,t.replaceWith=f(o=>{g(e=>{const i=m(o);e._setProps({children:[i]})})},[m,g]),t.appendChild=f(o=>{g(e=>{const i=m(o);e._setProps(a=>({...a,children:[...a.children,i]}))})},[m,g]),t.prependChild=f(o=>{g(e=>{const i=m(o);e._setProps(a=>({...a,children:[i,...a.children]}))})},[m,g]),t.appendSibling=f(o=>{g(()=>{var i,a;const e=(i=S.current)==null?void 0:i.parentNode;e==null||e.insertBefore(o,((a=S.current)==null?void 0:a.nextSibling)??null)})},[g]),t.prependSibling=f(o=>{g(()=>{var i;const e=(i=S.current)==null?void 0:i.parentNode;e==null||e.insertBefore(o,S.current)})},[g]);const b=f(async()=>{if(c.current==="loading")return;c.current="loading",I(`🟨 "${r}" Slot Rendered`);const o=n?D(n(y),{key:"render"}):null;P({children:[o??l]}),w.current.forEach(e=>{e(t,C)}),c.current="ready"},[l,t,r,y,n,C]),j=f(async()=>{if(s)try{c.current="loading",I(`🟩 "${r}" Slot Initialized`),await s(t,S.current)}catch(o){console.error(`Error in "${s.name}" Slot callback`,o)}finally{c.current="ready",await b()}},[s,t,b,r]);return v(()=>{j().finally(()=>{u&&(u.value.delete(r),u.value=new Set(u.value))})},[]),v(()=>{b()},[JSON.stringify(t),JSON.stringify(N)]),[S,y]}function X({name:r,context:t,slot:s,children:l,render:n,slotTag:d="div",contentTag:u="div",...S}){const c=R(M),[w,y]=q(r,t,s,l,n,u);return V(()=>{if(!r)return console.warn('Slot "name" is required');c&&(c.value.add(r),c.value=new Set(c.value))},[r,c]),$(d,{...S,ref:w,"data-slot":r},y.children)}window.DROPINS=window.DROPINS||{};window.DROPINS.showSlots=async r=>{window.sessionStorage.setItem("dropin-debugger--show-slots",r.toString()),document.body.classList.toggle("dropin-debugger--show-slots",r)};let I=()=>{};window.DROPINS.logSlots=async r=>{window.sessionStorage.setItem("dropin-debugger--log-slots",r.toString()),I=r?(...t)=>console.log(...t):()=>{}};window.DROPINS.showSlots(window.sessionStorage.getItem("dropin-debugger--show-slots")==="true");window.DROPINS.logSlots(window.sessionStorage.getItem("dropin-debugger--log-slots")==="true");function Y(r){const t=document.cookie.split(";");let s;return t.forEach(l=>{const[n,d]=l.trim().split("=");n===r&&(s=decodeURIComponent(d))}),s}export{ae as Config,ue as Initializer,ee as Render,X as Slot,M as SlotQueueContext,re as VComponent,te as classes,se as debounce,E as deepmerge,oe as generateSrcset,Y as getCookie,W as getFormErrors,A as getFormValues,pe as getImageParamsKeyMap,he as getPathValue,ce as initializers,ie as isIOSMobileDevice,le as isNumber,G as merge,fe as setImageParamsKeyMap,H as toLanguageTag,q as useSlot};
3
+ import{S as M}from"./chunks/vcomponent.js";import{R as ee,V as re,c as oe,g as te}from"./chunks/vcomponent.js";import{d as E}from"./chunks/cjs.js";import{d as se,a as ie,i as le}from"./chunks/deviceUtils.js";import{C as ae,I as ce,i as ue}from"./chunks/initializer.js";import{x as R,A as O,h as _,T as L,E as D,q as f,_ as V,y as v}from"./chunks/icons/Add.js";import{IntlContext as k}from"./i18n.js";import{g as pe,s as fe}from"./chunks/image-params-keymap.js";import{g as he,s as me}from"./chunks/locale-config.js";import{g as ye}from"./chunks/get-path-value.js";import"./preact-jsx-runtime.js";import"./signals.js";const U=r=>{const o=new FormData(r);return Object.fromEntries(o)},A=r=>{const o=new FormData(r),s=Object.fromEntries(o);return Object.entries(s).reduce((n,[d])=>{const c=r.elements[d];return c!=null&&c.validationMessage?{...n,[d]:c.validationMessage}:{...n}},{})},F={arrayMerge:(r,o,s)=>{const l=r.slice();return o.forEach((n,d)=>{typeof l[d]>"u"?l[d]=s.cloneUnlessOtherwiseSpecified(n,s):s.isMergeableObject(n)?l[d]=E(r[d],n,s):r.indexOf(n)===-1&&l.push(n)}),l}};function W(r,o){return o?E(r,o,F):r}const H=r=>r.replace("_","-");function q(r,o={},s,l,n,d="div"){const c=R(M),S=O(null),u=O("pending"),w=O([]),[y,P]=_({children:[l]}),[N,$]=_({}),b=L(()=>({get:t=>N[t],set:(t,e)=>{$({...b,[t]:e})}}),[N]),{intl:B}=R(k);o.dictionary=B.dictionary,o._setProps=t=>{P(e=>{const i=typeof t=="function"?t(e):t;if(n){const a=D(n(e),{key:"render"}),h=e.children.findIndex(p=>(p==null?void 0:p.key)==="render");e.children[h]=a}return i})};const g=f(t=>{typeof t=="function"?w.current.push(t):console.warn("Skipped: Invalid _registerMethod",t)},[]);o._registerMethod=g;const m=f(t=>V(d,{"data-slot-html-element":t.tagName.toLowerCase(),ref:e=>{e==null||e.appendChild(t)}},null),[d]);o._htmlElementToVNode=m,o.getSlotElement=f(t=>{var i,a;const e=(i=S.current)==null?void 0:i.querySelector(`[data-slot-key="${t}"]`);if(I(`🟦 "${r}" Slot getSlotElement: ${t}`,(a=S.current)==null?void 0:a.cloneNode(!0),e==null?void 0:e.cloneNode(!0)),!!e)return{appendChild:h=>{e.appendChild(h)},prependChild:h=>{e.insertBefore(h,e.firstChild)},appendSibling:h=>{const p=e.parentNode;p==null||p.insertBefore(h,e.nextSibling)},prependSibling:h=>{const p=e.parentNode;p==null||p.insertBefore(h,e)}}},[r]),o.onRender=f(t=>{w.current.push(t)},[]),o.onChange=o.onRender,o.replaceWith=f(t=>{g(e=>{const i=m(t);e._setProps({children:[i]})})},[m,g]),o.appendChild=f(t=>{g(e=>{const i=m(t);e._setProps(a=>({...a,children:[...a.children,i]}))})},[m,g]),o.prependChild=f(t=>{g(e=>{const i=m(t);e._setProps(a=>({...a,children:[i,...a.children]}))})},[m,g]),o.appendSibling=f(t=>{g(()=>{var i,a;const e=(i=S.current)==null?void 0:i.parentNode;e==null||e.insertBefore(t,((a=S.current)==null?void 0:a.nextSibling)??null)})},[g]),o.prependSibling=f(t=>{g(()=>{var i;const e=(i=S.current)==null?void 0:i.parentNode;e==null||e.insertBefore(t,S.current)})},[g]);const C=f(async()=>{if(u.current==="loading")return;u.current="loading",I(`🟨 "${r}" Slot Rendered`);const t=n?D(n(y),{key:"render"}):null;P({children:[t??l]}),w.current.forEach(e=>{e(o,b)}),u.current="ready"},[l,o,r,y,n,b]),j=f(async()=>{if(s)try{u.current="loading",I(`🟩 "${r}" Slot Initialized`),await s(o,S.current)}catch(t){console.error(`Error in "${s.name}" Slot callback`,t)}finally{u.current="ready",await C()}},[s,o,C,r]);return v(()=>{j().finally(()=>{c&&(c.value.delete(r),c.value=new Set(c.value))})},[]),v(()=>{C()},[JSON.stringify(o),JSON.stringify(N)]),[S,y]}function X({name:r,context:o,slot:s,children:l,render:n,slotTag:d="div",contentTag:c="div",...S}){const u=R(M),[w,y]=q(r,o,s,l,n,c);return L(()=>{if(!r)return console.warn('Slot "name" is required');u&&(u.value.add(r),u.value=new Set(u.value))},[r,u]),V(d,{...S,ref:w,"data-slot":r},y.children)}window.DROPINS=window.DROPINS||{};window.DROPINS.showSlots=async r=>{window.sessionStorage.setItem("dropin-debugger--show-slots",r.toString()),document.body.classList.toggle("dropin-debugger--show-slots",r)};let I=()=>{};window.DROPINS.logSlots=async r=>{window.sessionStorage.setItem("dropin-debugger--log-slots",r.toString()),I=r?(...o)=>console.log(...o):()=>{}};window.DROPINS.showSlots(window.sessionStorage.getItem("dropin-debugger--show-slots")==="true");window.DROPINS.logSlots(window.sessionStorage.getItem("dropin-debugger--log-slots")==="true");function Y(r){const o=document.cookie.split(";");let s;return o.forEach(l=>{const[n,d]=l.trim().split("=");n===r&&(s=decodeURIComponent(d))}),s}export{ae as Config,ce as Initializer,ee as Render,X as Slot,M as SlotQueueContext,re as VComponent,oe as classes,se as debounce,E as deepmerge,te as generateSrcset,Y as getCookie,A as getFormErrors,U as getFormValues,he as getGlobalLocale,pe as getImageParamsKeyMap,ye as getPathValue,ue as initializers,ie as isIOSMobileDevice,le as isNumber,W as merge,me as setGlobalLocale,fe as setImageParamsKeyMap,H as toLanguageTag,q as useSlot};
4
4
  //# sourceMappingURL=lib.js.map
package/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sources":["/@dropins/tools/src/lib/form-values.ts","/@dropins/tools/src/lib/deepmerge.ts","/@dropins/tools/src/lib/i18n.ts","/@dropins/tools/src/lib/slot.tsx","/@dropins/tools/src/lib/get-cookie.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const getFormValues = (form: HTMLFormElement) => {\n const formData: any = new FormData(form);\n const result = Object.fromEntries(formData);\n return result;\n};\n\nexport const getFormErrors = (form: HTMLFormElement) => {\n const formData: any = new FormData(form);\n\n const data = Object.fromEntries(formData);\n\n const result = Object.entries(data).reduce((result, [key]) => {\n // @ts-ignore\n const field = form.elements[key];\n\n return field?.validationMessage\n ? { ...result, [key]: field.validationMessage }\n : { ...result };\n }, {});\n\n return result;\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport deepmerge from 'deepmerge';\n\nexport { default as deepmerge } from 'deepmerge';\n\nconst mergeOptions = {\n arrayMerge: (target: any, source: any, options: any) => {\n const destination = target.slice();\n\n source.forEach((item: any, index: number) => {\n if (typeof destination[index] === 'undefined') {\n destination[index] = options.cloneUnlessOtherwiseSpecified(\n item,\n options\n );\n } else if (options.isMergeableObject(item)) {\n destination[index] = deepmerge(target[index], item, options);\n } else if (target.indexOf(item) === -1) {\n destination.push(item);\n }\n });\n return destination;\n },\n};\n\nexport function merge<T>(\n prev: T,\n next?: { [key: string]: any }\n) {\n if (!next) return prev;\n\n return deepmerge<T, { [key: string]: any }>(\n prev,\n next,\n mergeOptions\n );\n}\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\n/**\n * Convert locale from Magento standard to react-intl BCP 47 language tag\n *\n * @param {string} locale - A locale (e.g. `fr_FR`).\n * @returns {string} A BCP 47 language tag (e.g. `fr-FR`).\n */\nexport const toLanguageTag = (locale: string) => {\n return locale.replace('_', '-');\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { cloneElement, ComponentChildren, RefObject, VNode, createElement } from 'preact';\nimport {\n StateUpdater,\n useContext,\n useState,\n useRef,\n useEffect,\n useMemo,\n useCallback,\n} from 'preact/hooks';\nimport { IntlContext, Lang } from '@adobe-commerce/elsie/i18n';\nimport { HTMLAttributes } from 'preact/compat';\nimport { SlotQueueContext } from './render';\n\nimport '@adobe-commerce/elsie/components/UIProvider/debugger.css';\n\ntype MutateElement = (elem: HTMLElement) => void;\n\n\ninterface State {\n get: (key: string) => void;\n set: (key: string, value: any) => void;\n}\n\ninterface SlotElement {\n appendChild: MutateElement;\n prependChild: MutateElement;\n appendSibling: MutateElement;\n prependSibling: MutateElement;\n}\n\ninterface PrivateContext<T> {\n _setProps: (s: StateUpdater<{}>) => void;\n _registerMethod: (\n cb: (next: T & DefaultSlotContext<T>, state: State) => void\n ) => void;\n // eslint-disable-next-line no-undef\n _htmlElementToVNode: (element: HTMLElement, tag: keyof HTMLElementTagNameMap) => VNode;\n}\n\ninterface DefaultSlotContext<T> extends PrivateContext<T> {\n dictionary: Lang;\n getSlotElement: (key: string) => SlotElement;\n replaceWith: MutateElement;\n appendChild: MutateElement;\n prependChild: MutateElement;\n appendSibling: MutateElement;\n prependSibling: MutateElement;\n onRender: (cb: (next: T & DefaultSlotContext<T>) => void) => void;\n onChange: (cb: (next: T & DefaultSlotContext<T>) => void) => void;\n}\n\ntype Context<T> = T & ThisType<DefaultSlotContext<T>>; // NOSONAR\n\nexport type SlotProps<T = any> = (\n ctx: T & DefaultSlotContext<T>,\n element: HTMLDivElement | null\n) => Promise<void> | void;\n\nexport type SlotMethod<P = any> = (\n callback: (next: unknown, state: State) => P\n) => void;\n\n// Slot Hook\nexport function useSlot<K, V extends HTMLElement>(\n name: string,\n // @ts-ignore\n context: Context<K> = {},\n callback?: SlotProps<K>,\n children?: ComponentChildren,\n render?: Function,\n // eslint-disable-next-line no-undef\n contentTag: keyof HTMLElementTagNameMap = 'div'\n): [RefObject<V>, Record<string, any>] {\n const slotsQueue = useContext(SlotQueueContext);\n\n // HTML Element\n const elementRef = useRef<V>(null);\n\n const status = useRef<'pending' | 'ready' | 'loading'>('pending');\n\n // Methods\n const methodsRef = useRef<any>([]);\n\n // Children VNodes\n const [props, _setProps] = useState<Record<string, any>>({\n children: [children],\n });\n\n // Attributes\n const [_state, setState] = useState<any>({});\n\n const state = useMemo(\n () => ({\n get: (key: string) => _state[key],\n set: (key: string, value: any) => {\n setState({ ...state, [key]: value });\n },\n }),\n [_state]\n );\n\n /** Internationalization */\n // @ts-ignore\n const { intl }: any = useContext(IntlContext);\n\n // @ts-ignore\n context.dictionary = intl.dictionary;\n\n /** Privates */\n // @ts-ignore\n context._setProps = (next: State<any>) => {\n _setProps((prev) => {\n // next props\n const _next = typeof next === 'function' ? next(prev) : next;\n\n // On render method...\n if (render) {\n const renderNode = cloneElement(render(prev), { key: 'render' });\n\n // find index of existing render node\n const index = prev.children.findIndex((n: any) => n?.key === 'render');\n\n // replace existing render node\n prev.children[index] = renderNode;\n }\n\n return _next;\n });\n };\n\n const _registerMethod = useCallback((cb: Function) => {\n if (typeof cb === 'function') {\n methodsRef.current.push(cb);\n } else {\n console.warn('Skipped: Invalid _registerMethod', cb);\n }\n }, []);\n\n // @ts-ignore\n context._registerMethod = _registerMethod;\n\n const _htmlElementToVNode = useCallback((elem: HTMLElement) => {\n return createElement(\n contentTag,\n {\n 'data-slot-html-element': elem.tagName.toLowerCase(),\n ref: (refElem: HTMLElement | null): void => {\n refElem?.appendChild(elem);\n }\n },\n null\n );\n }, [contentTag]);\n\n // @ts-ignore\n context._htmlElementToVNode = _htmlElementToVNode;\n\n /** Prebuilt Methods */\n // @ts-ignore\n context.getSlotElement = useCallback(\n (key: string) => {\n const element = elementRef.current?.querySelector(\n `[data-slot-key=\"${key}\"]`\n );\n\n log(\n `🟦 \"${name}\" Slot getSlotElement: ${key}`,\n elementRef.current?.cloneNode(true),\n element?.cloneNode(true)\n );\n\n if (!element) return;\n\n return {\n appendChild: (elem: HTMLElement) => {\n element.appendChild(elem);\n },\n\n prependChild: (elem: HTMLElement) => {\n element.insertBefore(elem, element.firstChild);\n },\n\n appendSibling: (elem: HTMLElement) => {\n const parent = element.parentNode;\n parent?.insertBefore(elem, element.nextSibling);\n },\n\n prependSibling: (elem: HTMLElement) => {\n const parent = element.parentNode;\n parent?.insertBefore(elem, element);\n },\n };\n },\n [name]\n );\n\n // @ts-ignore\n context.onRender = useCallback((cb: Function) => {\n methodsRef.current.push(cb);\n }, []);\n\n /**\n * @deprecated Use `onRender` instead.\n */\n // @ts-ignore\n context.onChange = context.onRender;\n\n // @ts-ignore\n context.replaceWith = useCallback(\n (elem: HTMLElement) => {\n // @ts-ignore\n _registerMethod((next) => {\n // @ts-ignore\n const children = _htmlElementToVNode(elem);\n\n next._setProps({ children: [children] });\n });\n },\n [_htmlElementToVNode, _registerMethod]\n );\n\n // @ts-ignore\n context.appendChild = useCallback(\n (elem: HTMLElement) => {\n // @ts-ignore\n _registerMethod((next) => {\n // @ts-ignore\n const vnode = _htmlElementToVNode(elem);\n\n next._setProps((prev: any) => {\n return {\n ...prev,\n children: [...prev.children, vnode],\n };\n });\n });\n },\n [_htmlElementToVNode, _registerMethod]\n );\n\n // @ts-ignore\n context.prependChild = useCallback(\n (elem: HTMLElement) => {\n // @ts-ignore\n _registerMethod((next) => {\n // @ts-ignore\n const vnode = _htmlElementToVNode(elem);\n\n next._setProps((prev: any) => {\n return {\n ...prev,\n children: [vnode, ...prev.children],\n };\n });\n });\n },\n [_htmlElementToVNode, _registerMethod]\n );\n\n // @ts-ignore\n context.appendSibling = useCallback(\n (elem: HTMLElement) => {\n // @ts-ignore\n _registerMethod(() => {\n const parent = elementRef.current?.parentNode;\n\n parent?.insertBefore(elem, elementRef.current?.nextSibling ?? null);\n });\n },\n [_registerMethod]\n );\n\n // @ts-ignore\n context.prependSibling = useCallback(\n (elem: HTMLElement) => {\n // @ts-ignore\n _registerMethod(() => {\n const parent = elementRef.current?.parentNode;\n\n parent?.insertBefore(elem, elementRef.current);\n });\n },\n [_registerMethod]\n );\n\n const handleLifeCycleRender = useCallback(async () => {\n if (status.current === 'loading') return;\n\n status.current = 'loading';\n\n log(`🟨 \"${name}\" Slot Rendered`);\n\n // Reset\n const renderNode = render\n ? cloneElement(render(props), { key: 'render' })\n : null;\n _setProps({ children: [renderNode ?? children] });\n\n // Run all registered methods\n methodsRef.current.forEach((method: any) => {\n method(context, state);\n });\n\n status.current = 'ready';\n }, [children, context, name, props, render, state]);\n\n // Initialization\n const handleLifeCycleInit = useCallback(async () => {\n if (!callback) return;\n\n try {\n status.current = 'loading';\n\n log(`🟩 \"${name}\" Slot Initialized`);\n await callback(context as K & DefaultSlotContext<K>, elementRef.current as HTMLDivElement | null);\n } catch (error) {\n console.error(`Error in \"${callback.name}\" Slot callback`, error);\n } finally {\n status.current = 'ready';\n\n // first render\n await handleLifeCycleRender();\n }\n }, [callback, context, handleLifeCycleRender, name]);\n\n // Initialization\n useEffect(() => {\n handleLifeCycleInit().finally(() => {\n if (slotsQueue) {\n slotsQueue.value.delete(name);\n slotsQueue.value = new Set(slotsQueue.value);\n }\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Update\n useEffect(() => {\n handleLifeCycleRender();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(context), JSON.stringify(_state)]);\n\n return [elementRef, props];\n}\n\n// Slot Component\ninterface SlotPropsComponent<T>\n extends Omit<HTMLAttributes<HTMLElement>, 'slot'> {\n name: string;\n slot?: SlotProps<T>;\n context?: Context<T>;\n render?: (props: Record<string, any>) => VNode | VNode[];\n // eslint-disable-next-line no-undef\n slotTag?: keyof HTMLElementTagNameMap; // The tag for the slot wrapper itself\n // eslint-disable-next-line no-undef\n contentTag?: keyof HTMLElementTagNameMap; // The tag for dynamically inserted content\n children?: ComponentChildren;\n}\n\nexport function Slot<T>({\n name,\n context,\n slot,\n children,\n render,\n slotTag = 'div',\n contentTag = 'div',\n ...props\n}: Readonly<SlotPropsComponent<T>>): VNode<{\n ref: RefObject<HTMLElement>;\n 'data-slot': string;\n [key: string]: any;\n}> {\n const slotsQueue = useContext(SlotQueueContext);\n\n const [elementRef, slotProps] = useSlot<T, HTMLElement>(\n name,\n context,\n slot,\n children,\n render,\n contentTag\n );\n\n useMemo(() => {\n if (!name) {\n return console.warn('Slot \"name\" is required');\n }\n\n // add slot to queue\n if (slotsQueue) {\n slotsQueue.value.add(name);\n slotsQueue.value = new Set(slotsQueue.value);\n }\n }, [name, slotsQueue]);\n\n return createElement(\n slotTag,\n {\n ...props,\n ref: elementRef,\n 'data-slot': name,\n },\n slotProps.children\n );\n}\n\n// Debugger\n\n// @ts-ignore\nwindow.DROPINS = window.DROPINS || {};\n\n// @ts-ignore\nwindow.DROPINS.showSlots = async (state) => {\n // cache state in session storage\n window.sessionStorage.setItem(\n 'dropin-debugger--show-slots',\n state.toString()\n );\n\n document.body.classList.toggle('dropin-debugger--show-slots', state);\n};\n\nlet log: (...attrs: any) => void = () => {};\n\n// @ts-ignore\nwindow.DROPINS.logSlots = async (state) => {\n // cache state in session storage\n window.sessionStorage.setItem('dropin-debugger--log-slots', state.toString());\n\n log = state ? (...attrs) => console.log(...attrs) : () => {};\n};\n\n/** Persistent Settings */\n\n// @ts-ignore\nwindow.DROPINS.showSlots(\n window.sessionStorage.getItem('dropin-debugger--show-slots') === 'true'\n);\n\n// @ts-ignore\nwindow.DROPINS.logSlots(\n window.sessionStorage.getItem('dropin-debugger--log-slots') === 'true'\n);\n","/**\n * Get cookie\n * @param {string} cookieName - The name of the cookie to get\n * @returns {string} - The value of the cookie\n */\nexport function getCookie(cookieName: string): string | undefined {\n const cookies = document.cookie.split(';');\n let foundValue;\n\n cookies.forEach((cookie) => {\n const [name, value] = cookie.trim().split('=');\n if (name === cookieName) {\n foundValue = decodeURIComponent(value);\n }\n });\n\n return foundValue;\n}\n"],"names":["getFormValues","form","formData","getFormErrors","data","result","key","field","mergeOptions","target","source","options","destination","item","index","deepmerge","merge","prev","next","toLanguageTag","locale","useSlot","name","context","callback","children","render","contentTag","slotsQueue","useContext","SlotQueueContext","elementRef","useRef","status","methodsRef","props","_setProps","useState","_state","setState","state","useMemo","value","intl","IntlContext","_next","renderNode","cloneElement","n","_registerMethod","useCallback","cb","_htmlElementToVNode","elem","createElement","refElem","element","_a","log","_b","parent","vnode","handleLifeCycleRender","method","handleLifeCycleInit","error","useEffect","Slot","slot","slotTag","slotProps","attrs","getCookie","cookieName","cookies","foundValue","cookie"],"mappings":"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"}
1
+ {"version":3,"file":"lib.js","sources":["/@dropins/tools/src/lib/form-values.ts","/@dropins/tools/src/lib/deepmerge.ts","/@dropins/tools/src/lib/i18n.ts","/@dropins/tools/src/lib/slot.tsx","/@dropins/tools/src/lib/get-cookie.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const getFormValues = (form: HTMLFormElement) => {\n const formData: any = new FormData(form);\n const result = Object.fromEntries(formData);\n return result;\n};\n\nexport const getFormErrors = (form: HTMLFormElement) => {\n const formData: any = new FormData(form);\n\n const data = Object.fromEntries(formData);\n\n const result = Object.entries(data).reduce((result, [key]) => {\n // @ts-ignore\n const field = form.elements[key];\n\n return field?.validationMessage\n ? { ...result, [key]: field.validationMessage }\n : { ...result };\n }, {});\n\n return result;\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport deepmerge from 'deepmerge';\n\nexport { default as deepmerge } from 'deepmerge';\n\nconst mergeOptions = {\n arrayMerge: (target: any, source: any, options: any) => {\n const destination = target.slice();\n\n source.forEach((item: any, index: number) => {\n if (typeof destination[index] === 'undefined') {\n destination[index] = options.cloneUnlessOtherwiseSpecified(\n item,\n options\n );\n } else if (options.isMergeableObject(item)) {\n destination[index] = deepmerge(target[index], item, options);\n } else if (target.indexOf(item) === -1) {\n destination.push(item);\n }\n });\n return destination;\n },\n};\n\nexport function merge<T>(\n prev: T,\n next?: { [key: string]: any }\n) {\n if (!next) return prev;\n\n return deepmerge<T, { [key: string]: any }>(\n prev,\n next,\n mergeOptions\n );\n}\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\n/**\n * Convert locale from Magento standard to react-intl BCP 47 language tag\n *\n * @param {string} locale - A locale (e.g. `fr_FR`).\n * @returns {string} A BCP 47 language tag (e.g. `fr-FR`).\n */\nexport const toLanguageTag = (locale: string) => {\n return locale.replace('_', '-');\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { cloneElement, ComponentChildren, RefObject, VNode, createElement } from 'preact';\nimport {\n StateUpdater,\n useContext,\n useState,\n useRef,\n useEffect,\n useMemo,\n useCallback,\n} from 'preact/hooks';\nimport { IntlContext, Lang } from '@adobe-commerce/elsie/i18n';\nimport { HTMLAttributes } from 'preact/compat';\nimport { SlotQueueContext } from './render';\n\nimport '@adobe-commerce/elsie/components/UIProvider/debugger.css';\n\ntype MutateElement = (elem: HTMLElement) => void;\n\n\ninterface State {\n get: (key: string) => void;\n set: (key: string, value: any) => void;\n}\n\ninterface SlotElement {\n appendChild: MutateElement;\n prependChild: MutateElement;\n appendSibling: MutateElement;\n prependSibling: MutateElement;\n}\n\ninterface PrivateContext<T> {\n _setProps: (s: StateUpdater<{}>) => void;\n _registerMethod: (\n cb: (next: T & DefaultSlotContext<T>, state: State) => void\n ) => void;\n // eslint-disable-next-line no-undef\n _htmlElementToVNode: (element: HTMLElement, tag: keyof HTMLElementTagNameMap) => VNode;\n}\n\ninterface DefaultSlotContext<T> extends PrivateContext<T> {\n dictionary: Lang;\n getSlotElement: (key: string) => SlotElement;\n replaceWith: MutateElement;\n appendChild: MutateElement;\n prependChild: MutateElement;\n appendSibling: MutateElement;\n prependSibling: MutateElement;\n onRender: (cb: (next: T & DefaultSlotContext<T>) => void) => void;\n onChange: (cb: (next: T & DefaultSlotContext<T>) => void) => void;\n}\n\ntype Context<T> = T & ThisType<DefaultSlotContext<T>>; // NOSONAR\n\nexport type SlotProps<T = any> = (\n ctx: T & DefaultSlotContext<T>,\n element: HTMLDivElement | null\n) => Promise<void> | void;\n\nexport type SlotMethod<P = any> = (\n callback: (next: unknown, state: State) => P\n) => void;\n\n// Slot Hook\nexport function useSlot<K, V extends HTMLElement>(\n name: string,\n // @ts-ignore\n context: Context<K> = {},\n callback?: SlotProps<K>,\n children?: ComponentChildren,\n render?: Function,\n // eslint-disable-next-line no-undef\n contentTag: keyof HTMLElementTagNameMap = 'div'\n): [RefObject<V>, Record<string, any>] {\n const slotsQueue = useContext(SlotQueueContext);\n\n // HTML Element\n const elementRef = useRef<V>(null);\n\n const status = useRef<'pending' | 'ready' | 'loading'>('pending');\n\n // Methods\n const methodsRef = useRef<any>([]);\n\n // Children VNodes\n const [props, _setProps] = useState<Record<string, any>>({\n children: [children],\n });\n\n // Attributes\n const [_state, setState] = useState<any>({});\n\n const state = useMemo(\n () => ({\n get: (key: string) => _state[key],\n set: (key: string, value: any) => {\n setState({ ...state, [key]: value });\n },\n }),\n [_state]\n );\n\n /** Internationalization */\n // @ts-ignore\n const { intl }: any = useContext(IntlContext);\n\n // @ts-ignore\n context.dictionary = intl.dictionary;\n\n /** Privates */\n // @ts-ignore\n context._setProps = (next: State<any>) => {\n _setProps((prev) => {\n // next props\n const _next = typeof next === 'function' ? next(prev) : next;\n\n // On render method...\n if (render) {\n const renderNode = cloneElement(render(prev), { key: 'render' });\n\n // find index of existing render node\n const index = prev.children.findIndex((n: any) => n?.key === 'render');\n\n // replace existing render node\n prev.children[index] = renderNode;\n }\n\n return _next;\n });\n };\n\n const _registerMethod = useCallback((cb: Function) => {\n if (typeof cb === 'function') {\n methodsRef.current.push(cb);\n } else {\n console.warn('Skipped: Invalid _registerMethod', cb);\n }\n }, []);\n\n // @ts-ignore\n context._registerMethod = _registerMethod;\n\n const _htmlElementToVNode = useCallback((elem: HTMLElement) => {\n return createElement(\n contentTag,\n {\n 'data-slot-html-element': elem.tagName.toLowerCase(),\n ref: (refElem: HTMLElement | null): void => {\n refElem?.appendChild(elem);\n }\n },\n null\n );\n }, [contentTag]);\n\n // @ts-ignore\n context._htmlElementToVNode = _htmlElementToVNode;\n\n /** Prebuilt Methods */\n // @ts-ignore\n context.getSlotElement = useCallback(\n (key: string) => {\n const element = elementRef.current?.querySelector(\n `[data-slot-key=\"${key}\"]`\n );\n\n log(\n `🟦 \"${name}\" Slot getSlotElement: ${key}`,\n elementRef.current?.cloneNode(true),\n element?.cloneNode(true)\n );\n\n if (!element) return;\n\n return {\n appendChild: (elem: HTMLElement) => {\n element.appendChild(elem);\n },\n\n prependChild: (elem: HTMLElement) => {\n element.insertBefore(elem, element.firstChild);\n },\n\n appendSibling: (elem: HTMLElement) => {\n const parent = element.parentNode;\n parent?.insertBefore(elem, element.nextSibling);\n },\n\n prependSibling: (elem: HTMLElement) => {\n const parent = element.parentNode;\n parent?.insertBefore(elem, element);\n },\n };\n },\n [name]\n );\n\n // @ts-ignore\n context.onRender = useCallback((cb: Function) => {\n methodsRef.current.push(cb);\n }, []);\n\n /**\n * @deprecated Use `onRender` instead.\n */\n // @ts-ignore\n context.onChange = context.onRender;\n\n // @ts-ignore\n context.replaceWith = useCallback(\n (elem: HTMLElement) => {\n // @ts-ignore\n _registerMethod((next) => {\n // @ts-ignore\n const children = _htmlElementToVNode(elem);\n\n next._setProps({ children: [children] });\n });\n },\n [_htmlElementToVNode, _registerMethod]\n );\n\n // @ts-ignore\n context.appendChild = useCallback(\n (elem: HTMLElement) => {\n // @ts-ignore\n _registerMethod((next) => {\n // @ts-ignore\n const vnode = _htmlElementToVNode(elem);\n\n next._setProps((prev: any) => {\n return {\n ...prev,\n children: [...prev.children, vnode],\n };\n });\n });\n },\n [_htmlElementToVNode, _registerMethod]\n );\n\n // @ts-ignore\n context.prependChild = useCallback(\n (elem: HTMLElement) => {\n // @ts-ignore\n _registerMethod((next) => {\n // @ts-ignore\n const vnode = _htmlElementToVNode(elem);\n\n next._setProps((prev: any) => {\n return {\n ...prev,\n children: [vnode, ...prev.children],\n };\n });\n });\n },\n [_htmlElementToVNode, _registerMethod]\n );\n\n // @ts-ignore\n context.appendSibling = useCallback(\n (elem: HTMLElement) => {\n // @ts-ignore\n _registerMethod(() => {\n const parent = elementRef.current?.parentNode;\n\n parent?.insertBefore(elem, elementRef.current?.nextSibling ?? null);\n });\n },\n [_registerMethod]\n );\n\n // @ts-ignore\n context.prependSibling = useCallback(\n (elem: HTMLElement) => {\n // @ts-ignore\n _registerMethod(() => {\n const parent = elementRef.current?.parentNode;\n\n parent?.insertBefore(elem, elementRef.current);\n });\n },\n [_registerMethod]\n );\n\n const handleLifeCycleRender = useCallback(async () => {\n if (status.current === 'loading') return;\n\n status.current = 'loading';\n\n log(`🟨 \"${name}\" Slot Rendered`);\n\n // Reset\n const renderNode = render\n ? cloneElement(render(props), { key: 'render' })\n : null;\n _setProps({ children: [renderNode ?? children] });\n\n // Run all registered methods\n methodsRef.current.forEach((method: any) => {\n method(context, state);\n });\n\n status.current = 'ready';\n }, [children, context, name, props, render, state]);\n\n // Initialization\n const handleLifeCycleInit = useCallback(async () => {\n if (!callback) return;\n\n try {\n status.current = 'loading';\n\n log(`🟩 \"${name}\" Slot Initialized`);\n await callback(context as K & DefaultSlotContext<K>, elementRef.current as HTMLDivElement | null);\n } catch (error) {\n console.error(`Error in \"${callback.name}\" Slot callback`, error);\n } finally {\n status.current = 'ready';\n\n // first render\n await handleLifeCycleRender();\n }\n }, [callback, context, handleLifeCycleRender, name]);\n\n // Initialization\n useEffect(() => {\n handleLifeCycleInit().finally(() => {\n if (slotsQueue) {\n slotsQueue.value.delete(name);\n slotsQueue.value = new Set(slotsQueue.value);\n }\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Update\n useEffect(() => {\n handleLifeCycleRender();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(context), JSON.stringify(_state)]);\n\n return [elementRef, props];\n}\n\n// Slot Component\ninterface SlotPropsComponent<T>\n extends Omit<HTMLAttributes<HTMLElement>, 'slot'> {\n name: string;\n slot?: SlotProps<T>;\n context?: Context<T>;\n render?: (props: Record<string, any>) => VNode | VNode[];\n // eslint-disable-next-line no-undef\n slotTag?: keyof HTMLElementTagNameMap; // The tag for the slot wrapper itself\n // eslint-disable-next-line no-undef\n contentTag?: keyof HTMLElementTagNameMap; // The tag for dynamically inserted content\n children?: ComponentChildren;\n}\n\nexport function Slot<T>({\n name,\n context,\n slot,\n children,\n render,\n slotTag = 'div',\n contentTag = 'div',\n ...props\n}: Readonly<SlotPropsComponent<T>>): VNode<{\n ref: RefObject<HTMLElement>;\n 'data-slot': string;\n [key: string]: any;\n}> {\n const slotsQueue = useContext(SlotQueueContext);\n\n const [elementRef, slotProps] = useSlot<T, HTMLElement>(\n name,\n context,\n slot,\n children,\n render,\n contentTag\n );\n\n useMemo(() => {\n if (!name) {\n return console.warn('Slot \"name\" is required');\n }\n\n // add slot to queue\n if (slotsQueue) {\n slotsQueue.value.add(name);\n slotsQueue.value = new Set(slotsQueue.value);\n }\n }, [name, slotsQueue]);\n\n return createElement(\n slotTag,\n {\n ...props,\n ref: elementRef,\n 'data-slot': name,\n },\n slotProps.children\n );\n}\n\n// Debugger\n\n// @ts-ignore\nwindow.DROPINS = window.DROPINS || {};\n\n// @ts-ignore\nwindow.DROPINS.showSlots = async (state) => {\n // cache state in session storage\n window.sessionStorage.setItem(\n 'dropin-debugger--show-slots',\n state.toString()\n );\n\n document.body.classList.toggle('dropin-debugger--show-slots', state);\n};\n\nlet log: (...attrs: any) => void = () => {};\n\n// @ts-ignore\nwindow.DROPINS.logSlots = async (state) => {\n // cache state in session storage\n window.sessionStorage.setItem('dropin-debugger--log-slots', state.toString());\n\n log = state ? (...attrs) => console.log(...attrs) : () => {};\n};\n\n/** Persistent Settings */\n\n// @ts-ignore\nwindow.DROPINS.showSlots(\n window.sessionStorage.getItem('dropin-debugger--show-slots') === 'true'\n);\n\n// @ts-ignore\nwindow.DROPINS.logSlots(\n window.sessionStorage.getItem('dropin-debugger--log-slots') === 'true'\n);\n","/**\n * Get cookie\n * @param {string} cookieName - The name of the cookie to get\n * @returns {string} - The value of the cookie\n */\nexport function getCookie(cookieName: string): string | undefined {\n const cookies = document.cookie.split(';');\n let foundValue;\n\n cookies.forEach((cookie) => {\n const [name, value] = cookie.trim().split('=');\n if (name === cookieName) {\n foundValue = decodeURIComponent(value);\n }\n });\n\n return foundValue;\n}\n"],"names":["getFormValues","form","formData","getFormErrors","data","result","key","field","mergeOptions","target","source","options","destination","item","index","deepmerge","merge","prev","next","toLanguageTag","locale","useSlot","name","context","callback","children","render","contentTag","slotsQueue","useContext","SlotQueueContext","elementRef","useRef","status","methodsRef","props","_setProps","useState","_state","setState","state","useMemo","value","intl","IntlContext","_next","renderNode","cloneElement","n","_registerMethod","useCallback","cb","_htmlElementToVNode","elem","createElement","refElem","element","_a","log","_b","parent","vnode","handleLifeCycleRender","method","handleLifeCycleInit","error","useEffect","Slot","slot","slotTag","slotProps","attrs","getCookie","cookieName","cookies","foundValue","cookie"],"mappings":"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"}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name": "@dropins/tools", "version": "1.4.0-beta2", "license": "SEE LICENSE IN LICENSE.md"}
1
+ {"name": "@dropins/tools", "version": "1.4.0-beta4", "license": "SEE LICENSE IN LICENSE.md"}
@@ -3,7 +3,7 @@ import { HTMLAttributes } from 'preact/compat';
3
3
 
4
4
  export interface PriceProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'size'> {
5
5
  amount?: number;
6
- currency?: string;
6
+ currency?: string | null;
7
7
  locale?: string;
8
8
  formatOptions?: {
9
9
  [key: string]: any;
@@ -19,6 +19,7 @@ export * from './types';
19
19
  export * from './slot';
20
20
  export * from './vcomponent';
21
21
  export * from './image-params-keymap';
22
+ export * from './locale-config';
22
23
  export * from './is-number';
23
24
  export * from './deviceUtils';
24
25
  export * from './get-path-value';
@@ -51,6 +51,7 @@ export declare class initializers {
51
51
  static _imageParamsKeyMap: {
52
52
  [key: string]: string;
53
53
  } | undefined;
54
+ static _globalLocale: string | undefined;
54
55
  /**
55
56
  * Registers a new initializer. If the initializers have already been mounted,it immediately binds the event listeners and initializes the API for the new initializer.
56
57
  * @param initializer - The initializer to register.
@@ -76,6 +77,11 @@ export declare class initializers {
76
77
  static setImageParamKeys(params: {
77
78
  [key: string]: any;
78
79
  }): void;
80
+ /**
81
+ * Sets the global locale. This locale is used by components that need consistent formatting regardless of the user's browser locale.
82
+ * @param locale - The locale string (e.g., 'en-US', 'es-MX', 'fr-FR').
83
+ */
84
+ static setGlobalLocale(locale: string): void;
79
85
  }
80
86
  export {};
81
87
  //# sourceMappingURL=initializer.d.ts.map
@@ -0,0 +1,10 @@
1
+ /********************************************************************
2
+ * Copyright 2024 Adobe
3
+ * All Rights Reserved.
4
+ *
5
+ * NOTICE: Adobe permits you to use, modify, and distribute this
6
+ * file in accordance with the terms of the Adobe license agreement
7
+ * accompanying it.
8
+ *******************************************************************/
9
+ export declare const setGlobalLocale: (value: typeof this._locale) => void, getGlobalLocale: () => string | undefined;
10
+ //# sourceMappingURL=locale-config.d.ts.map
@@ -21,12 +21,21 @@ export declare class events {
21
21
  payload: any;
22
22
  };
23
23
  };
24
+ /**
25
+ * Returns a scoped event key.
26
+ * @param scope - The scope to get the event from.
27
+ * @returns - The scoped event key.
28
+ */
29
+ static _getScopedEvent(scope?: string): <K extends keyof Events>(event: K) => K;
24
30
  /**
25
31
  * Returns the last payload of the event.
26
32
  * @param event – The event to get the last payload from.
33
+ * @param options - Optional configuration for the event.
27
34
  * @returns – The last payload of the event.
28
35
  */
29
- static lastPayload(event: string): any;
36
+ static lastPayload<K extends keyof Events>(event: K, options?: {
37
+ scope?: string;
38
+ }): any;
30
39
  /**
31
40
  * Subscribes to an event.
32
41
  * @param event - The event to subscribe to.
@@ -35,6 +44,7 @@ export declare class events {
35
44
  */
36
45
  static on<K extends keyof Events>(event: K, handler: (payload: Events[K]) => void, options?: {
37
46
  eager?: boolean;
47
+ scope?: string;
38
48
  }): {
39
49
  off(): void;
40
50
  } | undefined;
@@ -42,8 +52,11 @@ export declare class events {
42
52
  * Emits an event.
43
53
  * @param event - The event to emit.
44
54
  * @param payload - The event payload.
55
+ * @param options - Optional configuration for the event.
45
56
  */
46
- static emit<K extends keyof Events>(event: K, payload: Events[K]): void;
57
+ static emit<K extends keyof Events>(event: K, payload: Events[K], options?: {
58
+ scope?: string;
59
+ }): void;
47
60
  /**
48
61
  * Enables or disables event logging.
49
62
  * @param enabled - Whether to enable or disable event logging.