{"version":3,"file":"script_main.C6bfDnZ_.mjs","names":["selectShuffleEnabled","selectShuffleHistoryCount","selectShuffleBagCount","GLYPHS","React.useState","React.useRef","React.useCallback","React.useMemo","Popover","React.useState","React.useRef","React.useCallback","Icon","_jsx","React.useMemo","React.useState","React.useRef","React.useCallback","clampProgress","React.useRef","React.useReducer","React.useMemo","React.useCallback","React.useMemo","React.useState","QueryClientProvider","React.useMemo","React.useRef","React.useState","React.useCallback","canEntityAddToCart","React.useContext","_store","React.useCallback","React.useState","React.useCallback","_Fragment","startDemoDownload","submitDemoDownloadEmail","startDemoDownloadRequest","submitDemoDownloadEmailRequest","React.useRef","React.useState","_Fragment","React.useState","React.useState","React.useMemo","_Fragment","React.useState","React.useMemo","React.useState","React.useCallback","React.useState","React.useState","React.useMemo","_Fragment","React.useMemo","React.useState","_Fragment","React.useMemo","_Fragment","mask","Base","MotionSVG","SVG","svg","getProps","Icon","React.forwardRef","splitWordsRegex","useRef","useCallback","SearchInputClearButtonType","SearchInputDividerType","SearchResultTitleType","SearchResultSubtitleType","SearchResultItemType","SearchLayoutType","SearchEntryType","SearchIconType","splitWordsRegex","SearchInputClearButtonType","SearchInputDividerType","SearchResultTitleType","SearchResultSubtitleType","SearchResultItemType","SearchLayoutType","SearchEntryType","SearchIconType","splitWordsRegex","SearchInputClearButtonType","SearchInputDividerType","SearchResultTitleType","SearchResultSubtitleType","SearchResultItemType","SearchLayoutType","SearchEntryType","SearchIconType","useState","useTransition","SearchResultTitleType","useRef","useState","useDeferredValue","useCallback","useMemo","React","useState","Overlay","useRef","useState","React.useState","React.useRef","React.useCallback","React.useState","React.useRef","React.useCallback","addPropertyOverrides","Search","cycleOrder","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","sharedStyle.className","List","X","RichText","sharedStyle.css","sharedStyle.fonts","getProps","React.forwardRef","DotOutline","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","sharedStyle.className","RichText","sharedStyle.css","sharedStyle.fonts","serializationHash","variantClassNames","transition1","query1","SoundeeProducts","QueryData","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","_Fragment","css","serializationHash","variantClassNames","React.useContext","React.useMemo","React.Fragment","getProps","React.forwardRef","useRef","React.useId","sharedStyle.className","sharedStyle1.className","className","RichText","sharedStyle.css","sharedStyle1.css","sharedStyle.fonts","sharedStyle1.fonts","useSyncExternalStore","AnnouncementBanner","NavBar","X","HeroTicker","CMSLink","SoundeeSetup","RichText","ProducerBranding","sharedStyle.css","sharedStyle1.css","sharedStyle2.css","useRef","sharedStyle.className","sharedStyle1.className","sharedStyle2.className","PropertyOverrides","_Fragment","React.Fragment","sharedStyle.fonts","sharedStyle1.fonts","sharedStyle2.fonts","React.createElement","Template1","Framer.PageRoot","Framer.lazy","Framer.useCurrentRoute","Framer.useLocaleInfo","Framer.useRouter","React.Fragment","React.memo","React.useCallback","React.useEffect","React.useRef","React.useState","React.useLayoutEffect","Framer.LazyValue","Framer.GracefullyDegradingErrorBoundary","Framer.PageEffectsProvider","Framer.patchRoutesForABTesting","Framer.inferInitialRouteFromPath","Framer.yieldToMain","React.startTransition","Framer.ErrorPlaceholder"],"sources":["https:/framerusercontent.com/modules/2dwj6OEWyGHoFEAiQILO/bJ6S3LL75nGXfp7Qemkj/tokens.js","https:/framerusercontent.com/modules/irwMballXmvT62hmLcG4/XlC4IZxwolK5QNx5Xg1w/NowPlaying.js","https:/framerusercontent.com/modules/bzxh0kixoYwN8jdhBFPP/XpzSIwkUrUDDDswQoW5J/player.js","https:/framerusercontent.com/modules/qXqrBVPEL9Mj6CrnRzt1/nR3nZlwSKvZe7J3gLid4/Transport.js","https:/framerusercontent.com/modules/BP84IYrqhrVajyxSXDMs/jLh2zPKcwPx5bvzClI4n/close_transient_ui.js","https:/framerusercontent.com/modules/a6glxUWyNGCByymdfppW/2YK4r40IxpZdL8Ixa6lY/SoundeePopover.js","https:/framerusercontent.com/modules/99WBHGEWzZAuqSmDcgAK/LwWVJW5NpGurV9arqQqJ/SoundeeVolumeButton.js","https:/framerusercontent.com/modules/HJfFehpZ5xwFoE8qRX6x/ZV7ADTBSbLV5ceXZtQbx/SoundeeVolumeSlider.js","https:/framerusercontent.com/modules/vVl77AQcTiZyVAlJNoK3/LcUzQ1KlhPrvKNnJXxwI/Volume.js","https:/framerusercontent.com/modules/TZaK7gCtDPgfXn45B5nV/fsUn69htLekEjYfyZzMp/Actions.js","https:/framerusercontent.com/modules/j6dbXIf64kzrLYctON8o/Rn48lB0pW5flsEOXVh7d/SoundeeProgressBar.js","https:/framerusercontent.com/modules/IXwaxMFepWMXDO6BKeLS/8G48skspL20TKffApP8g/Seek.js","https:/framerusercontent.com/modules/MROAb4XeZzToeN5RVcVm/D1MpHvKSx4tQKgZryzQh/SoundeeArtworkSliderStandalone.js","https:/framerusercontent.com/modules/tT8OcRcjqFH5a3qYxD4c/uIHF6DEr3IqIKD9DiSrf/FullScreen.js","https:/framerusercontent.com/modules/dH4admwrMAdjdS8Tn27Y/oKzNUgN7romyPxMV6I6B/use_narrow.js","https:/framerusercontent.com/modules/7wMjBZXxhlZozjwJyQba/lmEwTcPTKJnoQ19TD0n9/SoundeePlayerBar.js","https:/framerusercontent.com/modules/IK7dcSFOeL2aX0wC7LZi/qMhXdDAZQTV7YoK6VM1a/license_format.js","https:/framerusercontent.com/modules/Lci5PFsZ9gAAR0YguSpN/YUpfNllKisiO9uwXVBZ4/license_permissions.js","https:/framerusercontent.com/modules/0RonYXaFPmxeltEwENiI/Qgi8aVD0Dh8RRtwbGsvT/overlay_entity_context.js","https:/framerusercontent.com/modules/lUywu5LgsP5KMOAeYWuN/kDOm8yiEoPUojunzIYS3/offer.js","https:/framerusercontent.com/modules/3ZI93L89JEWVFfs5mT5l/Kw2V4hu6zPy5GR9gdOQe/license_selection.js","https:/framerusercontent.com/modules/1dlBFzaE3vwuuMyF4oHX/I2ZWRe65YTAq0prZCjoq/offer_submit.js","https:/framerusercontent.com/modules/DDIHMf3werrNeXGOq6HO/vx67RteLPoinqjOlAO4Q/LicensePicker.js","https:/framerusercontent.com/modules/mDAn5Njqkc7ii6fMHcnq/tOJ7FEojW3ktSeH1gkCN/demo_download.js","https:/framerusercontent.com/modules/cbDihm3Gn8O1oWAYyuyA/2FZeXrApAaLUzmQMbfgi/demo_download.js","https:/framerusercontent.com/modules/Gb0uOUmAEsBdwk7bW9hO/34ahuTVvGwHd3yuY4GRr/FreeDownload.js","https:/framerusercontent.com/modules/JmNrL24TXefy9eqeRSA8/Igu9AokBNfoZhkwbJpvq/share.js","https:/framerusercontent.com/modules/4wOB8Ax9QXIenQdCZvs1/F3fH1ZRUvlR16CwWF9QY/share.js","https:/framerusercontent.com/modules/3VVfHGHmWpgTkD6EEVny/08x5vcA6RZAo0Z1ffbf3/short_share_url.js","https:/framerusercontent.com/modules/wChAbWcD1BNLom97vs8f/bvoC1yHOcdpv3AGHKRGr/_clipboard.js","https:/framerusercontent.com/modules/YH5bwniQZxQoYQd5L4V3/hBTG5hJrly19eziEJINA/Share.js","https:/framerusercontent.com/modules/lIOZr5cqUtDqxsgBiGLD/trSWxEbngoxSX5xOft4g/auth_url.js","https:/framerusercontent.com/modules/ZPorO7PPRscoZuz2vBRh/ueybl9YbZtNGlL8Y1qk8/AuthModal.js","https:/framerusercontent.com/modules/9x7VXjlV5gfMUVAvBTcS/v1RyXlg1VqUOWtFWlW3O/cart_item.js","https:/framerusercontent.com/modules/r9SvROsEGcDbE4laRLt2/7CGExb2dxCxdJCGIAo7e/deal.js","https:/framerusercontent.com/modules/ESlLTzG1EEvsAHI9B2r5/g7WM9RzEcdEYm40vkPhl/checkout.js","https:/framerusercontent.com/modules/Q5ZnR7kotfTlzdZmP1fo/LlkbBwo3nG61U3iWwJAx/fetchStoreDealCatalog.js","https:/framerusercontent.com/modules/pUKAa9TPHCgHkvFJDqxT/BA8RHilBxwZqG88iDQbh/deal_catalog.js","https:/framerusercontent.com/modules/5jo0ty6poiqjvdGF6y6j/As9FzbO5JBAQoWA4MUNZ/SoundeeDealProgress.js","https:/framerusercontent.com/modules/UFDkEkgdbZc6wdIpZmjN/8WWoruKqoDjyrcS5W7Oy/deal_meter.js","https:/framerusercontent.com/modules/J9pHBOCYuMvixpt0OAtG/2T5mWZRGSI7M7FEy7Xlv/CartPanel.js","https:/framerusercontent.com/modules/TU1fgxgQrmLqi1rr7uZS/op71DOcbhrIzDEz30F4e/BulkDeals.js","https:/framerusercontent.com/modules/25XsMsXA46B7jVPDwvxN/8x2em0xjACbZ95C2SVAg/ExitIntent.js","https:/framerusercontent.com/modules/LFsnrCkruKMOwBYJ9TQL/pIrHIPbc8lEQRunPpqcl/SoundeeModals.js","https:/framerusercontent.com/modules/4xJsJPc59it6XmHEERsh/koUifyDPwJ9ohyYl3uMd/itu1soPCZ.js","https:/framerusercontent.com/modules/LV9trClbmNwd5PVj9l8y/L4rFqMGNzGSwRZpGTGF3/Icons.js","https:/framerusercontent.com/modules/3Xi2AslpcDRhfyCVPmx3/d0Oobr5BHnVqZJQyMdGn/storage.js","https:/framerusercontent.com/modules/m2nL4qHNbqX9QCxsHsGL/b9aplVZjN51x28yfNK16/cache.js","https:/framer.com/m/cache-YMiL.js@b9aplVZjN51x28yfNK16","https:/framerusercontent.com/modules/uU1mtMKXsrVAg8N5hW7w/v7gDLwKJgQ5vAsFHxY4H/cachedIndex.js","https:/framerusercontent.com/modules/K9JZRwJcE6slDAf8rUmh/mJ54py1Ecnn1RoC4N1m4/fakeResults.js","https:/framerusercontent.com/modules/TwRgbWuhHeB95MPifel4/YW8Hlm59FG3PajbrVsaR/fuzzySearch.js","https:/framerusercontent.com/modules/MWsEnYfRnoOQq31DN4ql/fxR5MNtgeSOU8Mj4iY9n/utils.js","https:/framerusercontent.com/modules/MyBp84Z0p9nUcMimVMnY/IOZYtsQMauhTmjY894DM/useSearch.js","https:/framerusercontent.com/modules/PJVBcBLmDteTEAZh3J9Z/keXJyjyE9VnzUcDMayjg/browser.js","https:/framerusercontent.com/modules/Gzef0nFihI9m9vZG45th/lIUxbZcreiDm2GzUkt3y/useCallbackOnMouseMove.js","https:/framerusercontent.com/modules/eAnjm75CdfYT1Zz4BIaz/7KDSfnnyD1T3Ap75L4m8/scrollIntoView.js","https:/framerusercontent.com/modules/tV9haTHllpHHc9Fjue2H/wgITiHCOZBBo33pin0wW/SearchModal.js","https:/framerusercontent.com/modules/MyBp84Z0p9nUcMimVMnY/G59GwobMNJqwSjtPO6Pv/useSearch.js","https:/framerusercontent.com/modules/tV9haTHllpHHc9Fjue2H/bsLTiXYjkHoD2XaMjabu/SearchModal.js","https:/framerusercontent.com/modules/MyBp84Z0p9nUcMimVMnY/fpvHBWGoGQcWezUopJLS/useSearch.js","https:/framerusercontent.com/modules/tV9haTHllpHHc9Fjue2H/1GynhDlRW7uuXFYW1RXb/SearchModal.js","https:/framerusercontent.com/modules/MyBp84Z0p9nUcMimVMnY/1vZ2fdkLJI4IprrVTHqR/useSearch.js","https:/framerusercontent.com/modules/tV9haTHllpHHc9Fjue2H/lCNMpf6DznmmCJRndYjM/SearchModal.js","https:/framerusercontent.com/modules/hqEf5wXaAewP8VPuaZ98/5A0QGVeEr2cwheQpIuEG/useViewportSizeState.js","https:/framerusercontent.com/modules/6wAE2eMb2Tl3zrU7u4UL/mKj6QS2p4Cgdaa0WrZKY/Search.js","https:/framerusercontent.com/modules/C6hToKeGpdYRHbNFCoXe/yryan3QujHRo5vXsxb2H/auth_code.js","https:/framerusercontent.com/modules/XCEk9EyPcFZcqaQGaW2o/XiDmDtWg4HDmFKBDWoLR/SoundeeSessionLink.js","https:/framerusercontent.com/modules/nCDBLnzxgffYByYY0gKq/aFlooFzFACRJxCfnj9lD/SoundeeLogoutButton.js","https:/framerusercontent.com/modules/hqfsjAgpRhFAhS8pkaUi/1VN7rkGsiKKqZbAmlw3d/SoundeeAccountButton.js","https:/framerusercontent.com/modules/SA5M6WNgJB5qt1H42qYM/wVo9L1Qn66h6cJxE0SlM/SoundeeCartButton.js","https:/framerusercontent.com/modules/60Jwxs51nZsrrhD4lBie/VlggoyojhnBSdk1C6DWM/bOWuG6zDw.js","https:/framerusercontent.com/modules/7bC5iMJxvK2W1YPj4tpS/qOV9H37hknTGZwKjKp5r/eGjIc3o09.js","https:/framerusercontent.com/modules/46fV4mhBG6SgcJEr2vpB/So2fCdsxFKjbByBoCd5F/C5z9FnuRp.js","https:/framerusercontent.com/modules/wX33lY6RRhypf5rFxefU/NYbAMje9s7Pkw9e5k3cG/louLrzKLP.js","https:/framerusercontent.com/modules/rQ68vNLyA9Kd3g87jwil/iOCaBnpgVNJOBdNaHJMM/cZ_YVuZjX.js","https:/framerusercontent.com/modules/iR3HGNdlZwMVv6TkOUJb/1Hzq9t2NlKXqCxXifLLE/Q3J7SJs0t.js","https:/framerusercontent.com/modules/xMtVfUAVbJ6Qy6b5DKrq/mYQoPFJnm0lO8GTYDAcY/CloseOverlayOnNavigate.js","https:/framerusercontent.com/modules/2nrjJvVFIoq6nchf3Dz2/0AznbsK2KfQ16TypC6gy/CurrentYear.js","https:/framerusercontent.com/modules/VfZaf6mpQqSEsNG4xMg1/GDy5yrSxk1aHQdNX4qcr/HideFooterWhileListLoads.js","https:/framerusercontent.com/modules/ytledAAobUmg2vhJsMKA/gjOtqCTA3J7jrkrRAgtG/YvpykE1PC.js","framer:toplevel/main"],"sourcesContent":["// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// tokens — the player bar's styling surface.\n//\n// Same shape as the track row's and the filter bar's: grouped Object controls,\n// colours and fonts, no per-element layout knobs. A producer styling a page\n// should be setting the same five things everywhere.\nimport{ControlType}from\"framer\";export const DEFAULT_PLAYER_TOKENS={fill:\"#0b0b0b\",blur:0,border:\"rgba(255,255,255,0.10)\",textPrimary:\"#ffffff\",textSecondary:\"rgba(255,255,255,0.55)\",accent:\"#c8a06a\",accentText:\"#121212\",radius:12,fontTitle:{fontSize:\"15px\",fontWeight:600,lineHeight:\"1.3em\"},fontMeta:{fontSize:\"13px\",lineHeight:\"1.3em\"},fontButton:{fontSize:\"13px\",fontWeight:600,lineHeight:1},playSize:44,controlSize:36,maxWidth:0,paddingX:20,paddingY:12};export const playerTextControls={type:ControlType.Object,title:\"Text\",icon:\"object\",controls:{textPrimary:{type:ControlType.Color,title:\"Primary\",defaultValue:DEFAULT_PLAYER_TOKENS.textPrimary},textSecondary:{type:ControlType.Color,title:\"Secondary\",defaultValue:DEFAULT_PLAYER_TOKENS.textSecondary},fontTitle:{type:ControlType.Font,title:\"Title Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:DEFAULT_PLAYER_TOKENS.fontTitle},fontMeta:{type:ControlType.Font,title:\"Meta Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:DEFAULT_PLAYER_TOKENS.fontMeta},fontButton:{type:ControlType.Font,title:\"Button Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:DEFAULT_PLAYER_TOKENS.fontButton}},defaultValue:{textPrimary:DEFAULT_PLAYER_TOKENS.textPrimary,textSecondary:DEFAULT_PLAYER_TOKENS.textSecondary,fontTitle:DEFAULT_PLAYER_TOKENS.fontTitle,fontMeta:DEFAULT_PLAYER_TOKENS.fontMeta,fontButton:DEFAULT_PLAYER_TOKENS.fontButton}};export const playerSurfaceControls={type:ControlType.Object,title:\"Bar\",icon:\"color\",controls:{fill:{type:ControlType.Color,title:\"Fill\",defaultValue:DEFAULT_PLAYER_TOKENS.fill},blur:{type:ControlType.Number,title:\"Blur\",defaultValue:DEFAULT_PLAYER_TOKENS.blur,min:0,max:100,step:1,unit:\"px\",description:\"Frosts the page behind the bar. Needs a see-through Fill to show — over a solid colour there is nothing behind it to blur.\"},border:{type:ControlType.Color,title:\"Border\",defaultValue:DEFAULT_PLAYER_TOKENS.border},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:DEFAULT_PLAYER_TOKENS.radius,min:0,max:40,step:1,unit:\"px\"},maxWidth:{type:ControlType.Number,title:\"Max Width\",defaultValue:DEFAULT_PLAYER_TOKENS.maxWidth,min:0,max:2e3,step:20,unit:\"px\",description:\"Caps the contents and centres them; the fill still runs edge to edge, which is what a bar pinned to the bottom of the page needs. 0 for no cap.\"},paddingX:{type:ControlType.Number,title:\"Padding X\",defaultValue:DEFAULT_PLAYER_TOKENS.paddingX,min:0,max:80,step:1,unit:\"px\",description:\"Both bands, so the times line up under the controls.\"},paddingY:{type:ControlType.Number,title:\"Padding Y\",defaultValue:DEFAULT_PLAYER_TOKENS.paddingY,min:0,max:48,step:1,unit:\"px\",description:\"The controls band only — the seek strip sits on the bar's bottom edge.\"}},defaultValue:{fill:DEFAULT_PLAYER_TOKENS.fill,border:DEFAULT_PLAYER_TOKENS.border,radius:DEFAULT_PLAYER_TOKENS.radius,maxWidth:DEFAULT_PLAYER_TOKENS.maxWidth,paddingX:DEFAULT_PLAYER_TOKENS.paddingX,paddingY:DEFAULT_PLAYER_TOKENS.paddingY}};export const playerControlControls={type:ControlType.Object,title:\"Controls\",icon:\"interaction\",controls:{accent:{type:ControlType.Color,title:\"Accent\",defaultValue:DEFAULT_PLAYER_TOKENS.accent,description:\"The play button's fill, the price pill, and anything switched on.\"},accentText:{type:ControlType.Color,title:\"Accent Label\",defaultValue:DEFAULT_PLAYER_TOKENS.accentText},playSize:{type:ControlType.Number,title:\"Play Size\",defaultValue:DEFAULT_PLAYER_TOKENS.playSize,min:28,max:72,step:1,unit:\"px\"},controlSize:{type:ControlType.Number,title:\"Icon Size\",defaultValue:DEFAULT_PLAYER_TOKENS.controlSize,min:24,max:56,step:1,unit:\"px\"}},defaultValue:{accent:DEFAULT_PLAYER_TOKENS.accent,accentText:DEFAULT_PLAYER_TOKENS.accentText,playSize:DEFAULT_PLAYER_TOKENS.playSize,controlSize:DEFAULT_PLAYER_TOKENS.controlSize}};/** Spacing the bar does not expose — one tuned set, like the row. *//**\n * Under this width the bar switches to its phone layout.\n *\n * 640 rather than a phone width: the desktop row needs room for a track block,\n * five transport buttons, a volume slider, a price and a menu, and it starts\n * crushing them well before the screen is phone-sized.\n */export const PLAYER_COMPACT_WIDTH=640;/** The phone layout's overrides — everything else is shared. */export const PLAYER_COMPACT_METRICS={sectionGap:10,trackGap:10,artwork:44};export const PLAYER_METRICS={/** Between the bar's three sections. */sectionGap:24,/** Between the transport buttons. */controlGap:4,/** Between the right-hand actions. */actionGap:4,/** Cover to title. */trackGap:14,/** Title to meta. */titleGap:4,artwork:48,/** Between the times and the seek control. */seekGap:14,/** Between the controls row and the seek strip. */rowGap:10};/** Ignores undefined, so a control added later cannot blank out a default. */export function mergePlayerTokens(...groups){const out={...DEFAULT_PLAYER_TOKENS};for(const group of groups){if(!group)continue;for(const[key,value]of Object.entries(group)){if(value===undefined||value===null)continue;out[key]=value;}}return out;}\nexport const __FramerMetadata__ = {\"exports\":{\"PLAYER_COMPACT_METRICS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_PLAYER_TOKENS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PLAYER_COMPACT_WIDTH\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PlayerBarTokens\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"playerTextControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PLAYER_METRICS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"playerControlControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mergePlayerTokens\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"playerSurfaceControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./tokens.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import SoundeeArtwork from\"https://framerusercontent.com/modules/SvQ80p4cAsd88JPYWgze/Qq09ALzx6F4r8Yo3Oux8/SoundeeArtwork.js\";import SoundeeChipList from\"https://framerusercontent.com/modules/PC57mgvaDV9A9sP8uwDw/PTfCnKrb1Id3zHIs1a79/SoundeeChipList.js\";import{CmsLink}from\"https://framerusercontent.com/modules/W9fjsr5lFdL2bnlC2Asr/kcV7c8GVsKn0YK9iXBRH/cms_link_slot.js\";import{HoverButton,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{useLikeToggle}from\"https://framerusercontent.com/modules/JC0a9KKMuPydWQTekyia/zpty2TT1Fvv6CDvzLF2v/like.js\";import{PLAYER_COMPACT_METRICS,PLAYER_METRICS}from\"https://framerusercontent.com/modules/2dwj6OEWyGHoFEAiQILO/bJ6S3LL75nGXfp7Qemkj/tokens.js\";/**\n * Cover, title, metadata and the like — the left third of the bar.\n *\n * Everything here is an existing component: `SoundeeArtwork` picks the source\n * size and paints the colour placeholder, `SoundeeChipList` builds the metadata\n * line from the same `MetaField` list the track row uses, and `useLikeToggle`\n * carries the rule that an anonymous like is discarded server-side and has to\n * ask for a sign-in first.\n */export function NowPlaying({track,tokens,metaTypes,showLike,isCanvas,compact,linkTitle=true}){const{liked,toggle}=useLikeToggle(track?.entityId,{isCanvas});const artwork=compact?PLAYER_COMPACT_METRICS.artwork:PLAYER_METRICS.artwork;const trackGap=compact?PLAYER_COMPACT_METRICS.trackGap:PLAYER_METRICS.trackGap;return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:trackGap,minWidth:0,flex:\"1 1 0\"},children:[/*#__PURE__*/_jsx(SoundeeArtwork,{entityID:track?.entityId,imageSize:\"Small\",artworkColor:track?.artworkColor,title:track?.title,borderRadius:`${Math.min(tokens.radius,10)}px`,loading:\"lazy\",style:{width:artwork,height:artwork,flexShrink:0}}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:PLAYER_METRICS.titleGap,minWidth:0,// Grows to its text and no further, so the like sits beside\n// the title instead of being pushed to the far side of the\n// block. Still shrinks, so a long title gives way rather\n// than crowding the transport.\n//\n// On a phone it takes the leftover room instead. Sized to\n// its text there, the buttons to its right won the space\n// and the title was squeezed to nothing — the bar showed a\n// cover, a row of icons, and no idea what was playing.\nflex:compact?\"1 1 0\":\"0 1 auto\"},children:[linkTitle?/*#__PURE__*/_jsx(CmsLink,{entityId:track?.entityId,label:track?.title,style:{color:tokens.textPrimary,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",...tokens.fontTitle},children:track?.title??\"Nothing playing\"}):/*#__PURE__*/_jsx(\"span\",{style:{color:tokens.textPrimary,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",...tokens.fontTitle},children:track?.title??\"Nothing playing\"}),track&&metaTypes.length>0&&/*#__PURE__*/_jsx(SoundeeChipList,{entityID:track.entityId,chipTypes:metaTypes,// Fit-width, so the line fills what the bar gives it and\n// stops — the middle and right sections have fixed needs\n// and this is the part that has to give.\nitemLimit:\"auto\",maxChips:8,maxPerType:0,showRemaining:false,truncate:true,gap:4,textStyle:{font:tokens.fontMeta,color:tokens.textSecondary,separator:\",\"}})]}),showLike&&track&&/*#__PURE__*/_jsx(HoverButton,{onClick:()=>toggle(),\"aria-label\":liked?\"Unlike\":\"Like\",\"aria-pressed\":liked,hoverStyle:{background:tint(tokens.accent,12),color:tokens.accent},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:tokens.controlSize,height:tokens.controlSize,flexShrink:0,border:\"none\",// A circle stays a circle — only the labelled buy pill follows\n// the brand's button radius.\nborderRadius:999,background:\"transparent\",color:liked?tokens.accent:tokens.textSecondary,cursor:\"pointer\"},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"heart\",size:18,filled:liked})})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"NowPlaying\":{\"type\":\"reactComponent\",\"name\":\"NowPlaying\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\nimport{usePlayerSelector,usePlayerStore,pauseTrack,resumeTrack}from\"https://framerusercontent.com/modules/hbBOc6MLN4T1PPsVYazn/WeepVp6C1ldGcXBvdxj6/engine.js\";import{useEntitySelector}from\"https://framerusercontent.com/modules/Fa9rFJN2rq85gl2rXBgV/AVjJVDZFaBnNLsPAn8ph/entities.js\";import{getActivePlaylistEntityIds,usePlaylistSelector}from\"https://framerusercontent.com/modules/xHhQmu9KUyaDJlvQ1REJ/bWd9qzndMaNhQDLTwfIv/playlist.js\";import{getTrackSlotProps}from\"https://framerusercontent.com/modules/bs66RNZmDeSAF9w44OdZ/PyzQ8vf7r7QnaBnxYbAQ/track.js\";import{formatTime}from\"https://framerusercontent.com/modules/XqjS6RmB7bMfpSFcXWq7/Oim1PnSjexxaxkFS6DgJ/format.js\";const selectEntityId=s=>s.entityId;const selectSrc=s=>s.src;const selectIsPlaying=s=>s.isPlaying;const selectIsBuffering=s=>s.isBuffering;const selectProgress=s=>s.progress;const selectDuration=s=>s.duration;const selectCurrentSecond=s=>Math.floor((s.progress||0)*(s.duration||0));const selectPlaylistId=s=>s.activePlaylistId;const selectPlaylistTitle=s=>s.activePlaylistTitle;const selectPlaylistIndex=s=>s.currentIndex;const selectHasNextPage=s=>s.hasNextPage;const selectShuffleEnabled=s=>s.shuffleEnabled;const selectShuffleHistoryCount=s=>s.shuffleHistoryCount;const selectShuffleBagCount=s=>s.shuffleBagCount;const selectRepeatMode=s=>s.repeatMode;export function useNowPlayingProps(){const entityId=usePlayerSelector(selectEntityId);const track=useEntitySelector(entities=>entityId?entities.tracks[entityId]:undefined);const playlistId=usePlaylistSelector(selectPlaylistId);const playlistTitle=usePlaylistSelector(selectPlaylistTitle);return{...track?getTrackSlotProps(track):{},hasTrack:!!track,playlistId,playlistTitle,hasPlaylist:!!playlistId};}export function usePlayerStateProps(){const src=usePlayerSelector(selectSrc);const isPlaying=usePlayerSelector(selectIsPlaying);const isBuffering=usePlayerSelector(selectIsBuffering);return{isPlaying,isBuffering,disabled:!src};}export function usePlayerTimeProps(){const entityId=usePlayerSelector(selectEntityId);const track=useEntitySelector(entities=>entityId?entities.tracks[entityId]:undefined);const durationSecondsFromPlayer=usePlayerSelector(selectDuration);const currentTimeSeconds=usePlayerSelector(selectCurrentSecond);const durationSeconds=durationSecondsFromPlayer||track?.duration||0;return{currentTime:formatTime(currentTimeSeconds),duration:formatTime(durationSeconds),currentTimeSeconds,durationSeconds};}export function usePlayerProgressProps(){const progress=usePlayerSelector(selectProgress);const duration=usePlayerSelector(selectDuration);return{progress,duration};}export function usePlayerNavigationProps(){const currentIndex=usePlaylistSelector(selectPlaylistIndex);const hasNextPage=usePlaylistSelector(selectHasNextPage);const shuffleEnabled=usePlaylistSelector(selectShuffleEnabled);const shuffleHistoryCount=usePlaylistSelector(selectShuffleHistoryCount);const shuffleBagCount=usePlaylistSelector(selectShuffleBagCount);const repeatMode=usePlaylistSelector(selectRepeatMode);// Re-read the imperative playlist ids when the reactive playlist cursor\n// changes; this avoids subscribing player displays to audio progress.\nconst playlistIds=getActivePlaylistEntityIds();const hasPlaylistItems=playlistIds.length>0;const hasLinearNext=currentIndex>=0&&(currentIndex<playlistIds.length-1||hasNextPage);const hasRepeatNext=repeatMode===\"all\"&&hasPlaylistItems;const hasShuffleNext=shuffleEnabled&&currentIndex>=0&&(shuffleBagCount>0||hasNextPage||hasRepeatNext);const hasPrevTrack=shuffleEnabled?shuffleHistoryCount>0:currentIndex>0;const hasNextTrack=shuffleEnabled?hasShuffleNext:hasLinearNext||hasRepeatNext;return{hasPrevTrack,hasNextTrack};}export function usePlayerPlaybackModeProps(){const shuffleEnabled=usePlaylistSelector(selectShuffleEnabled);const repeatMode=usePlaylistSelector(selectRepeatMode);return{shuffleEnabled,repeatMode,isRepeatEnabled:repeatMode!==\"off\",isRepeatAll:repeatMode===\"all\",isRepeatOne:repeatMode===\"one\"};}export function usePlayerDisplayBaseProps(){const nowPlaying=useNowPlayingProps();const state=usePlayerStateProps();const navigation=usePlayerNavigationProps();const playbackMode=usePlayerPlaybackModeProps();return{...state,...navigation,...playbackMode,...nowPlaying};}export function usePlayerDisplayWithTimeProps(){return{...usePlayerDisplayBaseProps(),...usePlayerTimeProps()};}export function usePlayerControls(){return{...usePlayerStateProps(),...usePlayerTimeProps(),...usePlayerProgressProps(),...useNowPlayingProps()};}export function useNowPlaying(){return usePlayerDisplayWithTimeProps();}export function usePlayPause(){const player=usePlayerStore();return{isPlaying:player.isPlaying,disabled:!player.src,onTap:()=>{if(!player.src)return;player.isPlaying?pauseTrack():resumeTrack();}};}\nexport const __FramerMetadata__ = {\"exports\":{\"usePlayerDisplayWithTimeProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useNowPlaying\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePlayerStateProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePlayPause\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePlayerPlaybackModeProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePlayerNavigationProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePlayerTimeProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePlayerDisplayBaseProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useNowPlayingProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePlayerProgressProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePlayerControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./player.map","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{pauseTrack,resumeTrack,usePlayerSelector}from\"https://framerusercontent.com/modules/hbBOc6MLN4T1PPsVYazn/WeepVp6C1ldGcXBvdxj6/engine.js\";import{nextTrack,prevTrack,toggleRepeat,toggleShuffle,usePlaylistStore}from\"https://framerusercontent.com/modules/xHhQmu9KUyaDJlvQ1REJ/bWd9qzndMaNhQDLTwfIv/playlist.js\";import{usePlayerNavigationProps}from\"https://framerusercontent.com/modules/bzxh0kixoYwN8jdhBFPP/XpzSIwkUrUDDDswQoW5J/player.js\";import{HoverButton,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{PLAYER_METRICS}from\"https://framerusercontent.com/modules/2dwj6OEWyGHoFEAiQILO/bJ6S3LL75nGXfp7Qemkj/tokens.js\";const selectIsPlaying=s=>s.isPlaying;// Local: nothing else in the project draws transport controls, and putting six\n// one-off glyphs in the shared table would make it harder to find the ones that\n// are actually shared.\nconst GLYPHS={shuffle:\"M16 3h5v5M4 20 21 3M21 16v5h-5M15 15l6 6M4 4l5 5\",prev:\"M19 20 9 12l10-8v16zM5 19V5\",next:\"M5 4l10 8-10 8V4zM19 5v14\",repeat:\"M17 1l4 4-4 4M3 11V9a4 4 0 0 1 4-4h14M7 23l-4-4 4-4M21 13v2a4 4 0 0 1-4 4H3\"};function Glyph({path,size}){return /*#__PURE__*/_jsx(\"svg\",{width:size,height:size,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{flexShrink:0},\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:path})});}/**\n * Shuffle, previous, play, next, repeat.\n *\n * Every one of these already exists as its own draggable component\n * (`SoundeePlayButton`, `SoundeeNextButton`, …). Those wrap slots and property\n * controls around the same three store calls, which is exactly the plumbing\n * this component exists to remove — so it calls the store directly and leaves\n * the slot versions for anyone building their own bar.\n */export function Transport({tokens,showShuffle,showRepeat,isCanvas,compact}){const playing=usePlayerSelector(selectIsPlaying);const{shuffleEnabled,repeatMode}=usePlaylistStore();// Already knows that shuffle navigates a bag and a history rather than an\n// index, and that repeat-all makes the last track have a next. Not\n// something to work out again from the cursor.\nconst{hasPrevTrack,hasNextTrack}=usePlayerNavigationProps();const icon=active=>({display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:tokens.controlSize,height:tokens.controlSize,flexShrink:0,border:\"none\",// A circle stays a circle — only the labelled buy pill follows\n    // the brand's button radius.\n    borderRadius:999,background:\"transparent\",color:active?tokens.accent:tokens.textSecondary,cursor:\"pointer\"});const iconHover={background:tint(tokens.textPrimary,10),color:tokens.textPrimary};return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:PLAYER_METRICS.controlGap,flexShrink:0},children:[showShuffle&&!compact&&/*#__PURE__*/_jsx(HoverButton,{onClick:()=>!isCanvas&&toggleShuffle(),\"aria-label\":\"Shuffle\",\"aria-pressed\":shuffleEnabled,hoverStyle:iconHover,style:icon(shuffleEnabled),children:/*#__PURE__*/_jsx(Glyph,{path:GLYPHS.shuffle,size:16})}),!compact&&/*#__PURE__*/_jsx(HoverButton,{onClick:()=>!isCanvas&&prevTrack(),\"aria-label\":\"Previous\",disabled:!isCanvas&&!hasPrevTrack,hoverStyle:iconHover,style:{...icon(false),// Dimmed rather than hidden: a control that disappears at\n// the start of a playlist moves the two next to it.\nopacity:!isCanvas&&!hasPrevTrack?.35:1,cursor:!isCanvas&&!hasPrevTrack?\"default\":\"pointer\"},children:/*#__PURE__*/_jsx(Glyph,{path:GLYPHS.prev,size:16})}),/*#__PURE__*/_jsx(HoverButton,{onClick:()=>{if(isCanvas)return;if(playing)pauseTrack();else resumeTrack();},\"aria-label\":playing?\"Pause\":\"Play\",hoverStyle:{background:`color-mix(in srgb, ${tokens.accentText} 12%, ${tokens.accent})`},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:tokens.playSize,height:tokens.playSize,flexShrink:0,border:\"none\",// A circle stays a circle — only the labelled buy pill follows\n// the brand's button radius.\nborderRadius:999,background:tokens.accent,color:tokens.accentText,cursor:\"pointer\"},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:playing?\"pause\":\"play\",size:Math.round(tokens.playSize*.36)})}),!compact&&/*#__PURE__*/_jsx(HoverButton,{onClick:()=>!isCanvas&&nextTrack(),\"aria-label\":\"Next\",disabled:!isCanvas&&!hasNextTrack,hoverStyle:iconHover,style:{...icon(false),opacity:!isCanvas&&!hasNextTrack?.35:1,cursor:!isCanvas&&!hasNextTrack?\"default\":\"pointer\"},children:/*#__PURE__*/_jsx(Glyph,{path:GLYPHS.next,size:16})}),showRepeat&&!compact&&/*#__PURE__*/_jsxs(HoverButton,{onClick:()=>!isCanvas&&toggleRepeat(),\"aria-label\":`Repeat: ${repeatMode}`,\"aria-pressed\":repeatMode!==\"off\",hoverStyle:iconHover,style:{...icon(repeatMode!==\"off\"),position:\"relative\"},children:[/*#__PURE__*/_jsx(Glyph,{path:GLYPHS.repeat,size:16}),repeatMode===\"one\"&&/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{position:\"absolute\",bottom:2,fontSize:9,fontWeight:700,lineHeight:1,color:tokens.accent},children:\"1\"})]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"Transport\":{\"type\":\"reactComponent\",\"name\":\"Transport\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Transport.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport{closeOpenOverlays}from\"https://framerusercontent.com/modules/JRBIzDVQbQd0NNrHrNE0/4Cvzs1UuB9ewpDZmR8om/close_overlays.js\";const _listeners=new Set;export function subscribeTransientUiClose(listener){_listeners.add(listener);return()=>{_listeners.delete(listener);};}export function closeTransientUi(){closeOpenOverlays();for(const listener of Array.from(_listeners)){try{listener();}catch{}}}\nexport const __FramerMetadata__ = {\"exports\":{\"subscribeTransientUiClose\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"closeTransientUi\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import*as ReactDOM from\"react-dom\";import{addPropertyControls,ControlType}from\"framer\";import{motion}from\"framer-motion\";import{Popover}from\"https://framerusercontent.com/modules/iEdaCTPcjIZ4juIbTj9T/7Wd0LTBGTN2i6lAe4Veh/radix.js\";import{normalizeSlot,renderSlotWithSizing}from\"https://framerusercontent.com/modules/h8NiJEJpWFHyeRETbmyt/8yFZXOUwH5F5bkx7bL6Q/slot.js\";import{subscribeTransientUiClose}from\"https://framerusercontent.com/modules/BP84IYrqhrVajyxSXDMs/jLh2zPKcwPx5bvzClI4n/close_transient_ui.js\";import{subscribeNavigation}from\"https://framerusercontent.com/modules/5775FDVGOrb5R2emuJGi/A3sagwnssNR1ckXqVaAW/navigation_events.js\";import{subscribeOverlayEvents}from\"https://framerusercontent.com/modules/nYNkrjG4SG2g3zpRI8vd/2NpFBOzmMwHK6O32tKsy/overlay.js\";const PopoverContext=/*#__PURE__*/React.createContext(null);export function usePopoverContext(){return React.useContext(PopoverContext);}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function SoundeePopover({trigger,triggerOpen,content,triggerEvent=\"Click\",hoverBehavior,triggerSize={width:\"Fill\",height:\"Fill\"},position,contentSize,contentStyle,animation,backdrop=true,side,sideOffset,align,alignOffset,collisionPadding,contentWidthMode,contentWidth,contentMaxHeight,contentPadding,contentBackground,contentBorderRadius,contentBorder,contentShadow,contentTransition,style}){const[open,setOpen]=React.useState(false);const[isClosing,setIsClosing]=React.useState(false);const openTimerRef=React.useRef(null);const closeTimerRef=React.useRef(null);const overTriggerRef=React.useRef(false);const overContentRef=React.useRef(false);const pointerLockedRef=React.useRef(false);const resolvedSide=side??position?.side??\"bottom\";const resolvedSideOffset=position?.sideOffset??sideOffset??8;const resolvedAlign=align??position?.align??\"start\";const resolvedAlignOffset=position?.alignOffset??alignOffset??0;const resolvedCollisionPadding=position?.collisionPadding??collisionPadding??8;const resolvedWidthMode=contentSize?.widthMode??contentWidthMode??\"fixed\";const resolvedWidth=contentSize?.width??contentWidth??280;const resolvedMaxHeight=contentSize?.maxHeight??contentMaxHeight??400;const resolvedPadding=contentStyle?.padding??contentPadding??\"12px\";const resolvedBackground=contentStyle?.background??contentBackground??\"rgba(24,24,24,0.98)\";const resolvedRadius=contentStyle?.radius??contentBorderRadius??\"12px\";const resolvedBorder=contentStyle?.border??contentBorder;const resolvedShadow=contentStyle?.shadow??contentShadow??\"0px 8px 30px 0px rgba(0,0,0,0.4)\";const resolvedTransition=animation??contentTransition??{duration:.15,ease:\"easeOut\"};const resolvedOpenDelay=hoverBehavior?.openDelay??0;const resolvedCloseDelay=hoverBehavior?.closeDelay??180;const resolvedLockOnPointerDown=hoverBehavior?.lockOnPointerDown??true;const isHoverMode=triggerEvent===\"Hover\";const clearOpenTimer=React.useCallback(()=>{if(openTimerRef.current===null)return;window.clearTimeout(openTimerRef.current);openTimerRef.current=null;},[]);const clearCloseTimer=React.useCallback(()=>{if(closeTimerRef.current===null)return;window.clearTimeout(closeTimerRef.current);closeTimerRef.current=null;},[]);const openPopover=React.useCallback(()=>{setIsClosing(false);setOpen(true);},[]);const closePopover=React.useCallback(()=>{clearOpenTimer();clearCloseTimer();overTriggerRef.current=false;overContentRef.current=false;pointerLockedRef.current=false;if(open)setIsClosing(true);setOpen(false);},[clearCloseTimer,clearOpenTimer,open]);const openWithDelay=React.useCallback(()=>{clearCloseTimer();clearOpenTimer();if(resolvedOpenDelay<=0){openPopover();return;}openTimerRef.current=window.setTimeout(()=>{openPopover();openTimerRef.current=null;},resolvedOpenDelay);},[clearCloseTimer,clearOpenTimer,openPopover,resolvedOpenDelay]);const closeWithDelay=React.useCallback(()=>{clearOpenTimer();clearCloseTimer();closeTimerRef.current=window.setTimeout(()=>{if(pointerLockedRef.current||overTriggerRef.current||overContentRef.current){return;}closePopover();closeTimerRef.current=null;},Math.max(0,resolvedCloseDelay));},[clearCloseTimer,clearOpenTimer,closePopover,resolvedCloseDelay]);const maybeCloseHover=React.useCallback(()=>{if(!isHoverMode)return;if(pointerLockedRef.current||overTriggerRef.current||overContentRef.current){return;}closeWithDelay();},[closeWithDelay,isHoverMode]);React.useEffect(()=>{return()=>{clearOpenTimer();clearCloseTimer();};},[clearCloseTimer,clearOpenTimer]);React.useEffect(()=>{return subscribeOverlayEvents(event=>{if(event.type===\"open\")closePopover();});},[closePopover]);React.useEffect(()=>{return subscribeNavigation(()=>{closePopover();});},[closePopover]);React.useEffect(()=>{return subscribeTransientUiClose(closePopover);},[closePopover]);const popoverCtx=React.useMemo(()=>({close:closePopover}),[closePopover]);const shouldRenderContent=open||isClosing;const defaultTrigger=normalizeSlot(trigger);const openTriggerEl=normalizeSlot(triggerOpen);const rawTriggerElement=open&&openTriggerEl?openTriggerEl:defaultTrigger;const triggerElement=renderSlotWithSizing(rawTriggerElement,{},open?\"popover-trigger-open\":\"popover-trigger\",triggerSize);const rawContentElement=normalizeSlot(content);const contentElement=rawContentElement?renderSlotWithSizing(rawContentElement,{},\"popover-content\",{width:resolvedWidthMode===\"fixed\"?\"Fill\":\"Auto\",height:\"Auto\"}):null;if(!rawTriggerElement){return /*#__PURE__*/_jsx(\"div\",{style:{fontSize:12,opacity:.4,color:\"white\"},children:\"Connect a trigger component\"});}const borderStyle=resolvedBorder?{...resolvedBorder}:{borderWidth:1,borderStyle:\"solid\",borderColor:\"rgba(255,255,255,0.1)\"};return /*#__PURE__*/_jsxs(Popover.Root,{modal:false,open:open,onOpenChange:isHoverMode?undefined:nextOpen=>{if(nextOpen){openPopover();}else{closePopover();}},children:[/*#__PURE__*/_jsx(Popover.Trigger,{asChild:true,children:/*#__PURE__*/_jsx(\"div\",{onPointerEnter:()=>{if(!isHoverMode)return;overTriggerRef.current=true;openWithDelay();},onPointerLeave:()=>{if(!isHoverMode)return;overTriggerRef.current=false;maybeCloseHover();},onFocus:()=>{if(!isHoverMode)return;overTriggerRef.current=true;openWithDelay();},onBlur:()=>{if(!isHoverMode)return;overTriggerRef.current=false;maybeCloseHover();},onClick:event=>{if(!isHoverMode)return;event.preventDefault();},style:{// inline-flex when width is Auto so the trigger box hugs\n// its content instead of spanning the full parent width.\ndisplay:triggerSize.width===\"Fill\"?\"flex\":\"inline-flex\",...triggerSize.width===\"Fill\"?{width:\"100%\"}:{},...triggerSize.height===\"Fill\"?{height:\"100%\"}:{},cursor:\"pointer\",...style},children:triggerElement})}),open&&backdrop&&typeof document!==\"undefined\"&&/*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx(\"div\",{onMouseDown:closePopover,style:{position:\"fixed\",inset:0,zIndex:9998}}),document.body),shouldRenderContent&&/*#__PURE__*/_jsx(Popover.Portal,{forceMount:true,children:/*#__PURE__*/_jsx(Popover.Content,{forceMount:true,side:resolvedSide,sideOffset:resolvedSideOffset,align:resolvedAlign,alignOffset:resolvedAlignOffset,collisionPadding:resolvedCollisionPadding,onOpenAutoFocus:e=>e.preventDefault(),style:{zIndex:9999,outline:\"none\",pointerEvents:open?\"auto\":\"none\"},children:/*#__PURE__*/_jsx(motion.div,{onPointerEnter:()=>{if(!isHoverMode||!open)return;overContentRef.current=true;clearCloseTimer();},onPointerLeave:()=>{if(!isHoverMode||!open)return;overContentRef.current=false;maybeCloseHover();},onPointerDown:()=>{if(!isHoverMode||!open||!resolvedLockOnPointerDown)return;pointerLockedRef.current=true;clearCloseTimer();},onPointerUp:()=>{if(!isHoverMode||!open||!resolvedLockOnPointerDown)return;pointerLockedRef.current=false;maybeCloseHover();},onPointerCancel:()=>{if(!isHoverMode||!open||!resolvedLockOnPointerDown)return;pointerLockedRef.current=false;maybeCloseHover();},initial:{opacity:0,y:-4,scale:.97},animate:open?{opacity:1,y:0,scale:1}:{opacity:0,y:-4,scale:.97},onAnimationComplete:()=>{if(!open)setIsClosing(false);},layout:false,transition:resolvedTransition,style:{width:resolvedWidthMode===\"auto\"?\"auto\":resolvedWidth,maxHeight:resolvedMaxHeight,padding:resolvedPadding,background:resolvedBackground,borderRadius:resolvedRadius,...borderStyle,boxShadow:resolvedShadow,overflowY:\"auto\",overscrollBehavior:\"contain\",boxSizing:\"border-box\",outline:\"none\",pointerEvents:open?\"auto\":\"none\"},children:/*#__PURE__*/_jsx(PopoverContext.Provider,{value:popoverCtx,children:contentElement||/*#__PURE__*/_jsx(\"div\",{style:{fontSize:12,opacity:.4,color:\"white\"},children:\"Connect content\"})})})})})]});}SoundeePopover.displayName=\"Soundee Popover Slot\";addPropertyControls(SoundeePopover,{trigger:{type:ControlType.Slot,title:\"Trigger\",maxCount:1},triggerOpen:{type:ControlType.Slot,title:\"Trigger (Open)\",maxCount:1},content:{type:ControlType.Slot,title:\"Content\",maxCount:1},triggerEvent:{type:ControlType.Enum,title:\"Trigger Event\",options:[\"Click\",\"Hover\"],optionTitles:[\"Click\",\"Hover\"],defaultValue:\"Click\",description:\"Choose whether the trigger opens on click or hover/focus.\"},hoverBehavior:{type:ControlType.Object,title:\"Hover\",hidden:props=>props.triggerEvent!==\"Hover\",controls:{openDelay:{type:ControlType.Number,title:\"Open Delay\",defaultValue:0,min:0,max:1e3,step:25,displayStepper:true},closeDelay:{type:ControlType.Number,title:\"Close Delay\",defaultValue:180,min:0,max:1500,step:25,displayStepper:true},lockOnPointerDown:{type:ControlType.Boolean,title:\"Drag Lock\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Keeps the popover open while dragging inside the content.\"}},defaultValue:{openDelay:0,closeDelay:180,lockOnPointerDown:true}},triggerSize:{type:ControlType.Object,title:\"Trigger Size\",controls:{width:{type:ControlType.Enum,title:\"Width\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:\"Fill\"},height:{type:ControlType.Enum,title:\"Height\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:\"Fill\"}},defaultValue:{width:\"Fill\",height:\"Fill\"}},side:{type:ControlType.Enum,title:\"Side\",options:[\"top\",\"right\",\"bottom\",\"left\"],optionTitles:[\"Top\",\"Right\",\"Bottom\",\"Left\"],defaultValue:\"bottom\",description:\"Preferred side to open on. Top-level so it can be bound to a variable.\"},align:{type:ControlType.Enum,title:\"Align\",options:[\"start\",\"center\",\"end\"],optionTitles:[\"Start\",\"Center\",\"End\"],defaultValue:\"start\",description:\"Alignment along the chosen side. Top-level so it can be bound to a variable.\"},position:{type:ControlType.Object,title:\"Position\",controls:{sideOffset:{type:ControlType.Number,title:\"Side Offset\",defaultValue:8,min:0,max:32,step:1},alignOffset:{type:ControlType.Number,title:\"Align Offset\",defaultValue:0,min:-32,max:32,step:1},collisionPadding:{type:ControlType.Number,title:\"Collision Pad\",defaultValue:8,min:0,max:32,step:1}},defaultValue:{sideOffset:8,alignOffset:0,collisionPadding:8}},contentSize:{type:ControlType.Object,title:\"Content Size\",controls:{widthMode:{type:ControlType.Enum,title:\"Width\",options:[\"fixed\",\"auto\"],optionTitles:[\"Fixed\",\"Auto\"],defaultValue:\"fixed\"},width:{type:ControlType.Number,title:\"Width Value\",defaultValue:280,min:100,max:600,step:10,hidden:props=>props.widthMode===\"auto\"},maxHeight:{type:ControlType.Number,title:\"Max Height\",defaultValue:400,min:100,max:800,step:10}},defaultValue:{widthMode:\"fixed\",width:280,maxHeight:400}},contentStyle:{type:ControlType.Object,title:\"Content Style\",controls:{padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"12px\"},radius:{type:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"12px\"},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"rgba(24,24,24,0.98)\"},border:{type:ControlType.Border,title:\"Border\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:\"rgba(255,255,255,0.1)\"}},shadow:{type:ControlType.BoxShadow,title:\"Shadow\",defaultValue:\"0px 8px 30px 0px rgba(0,0,0,0.4)\"}},defaultValue:{padding:\"12px\",radius:\"12px\",background:\"rgba(24,24,24,0.98)\",border:{borderWidth:1,borderStyle:\"solid\",borderColor:\"rgba(255,255,255,0.1)\"},shadow:\"0px 8px 30px 0px rgba(0,0,0,0.4)\"}},animation:{type:ControlType.Transition,title:\"Animation\",defaultValue:{type:\"tween\",duration:.15,ease:\"easeOut\"}},backdrop:{type:ControlType.Boolean,title:\"Backdrop\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeePopover\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\"}},\"usePopoverContext\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\n// soundee-core republish r5 (2026-08-25, engine fix) — rebuild for the\n// corrected dynamic import in lib/audio/engine.tsx (../store -> ../../store).\n// That path resolved nowhere, which is the code error that blocked Update in\n// the Starter. Importers do not rebuild when only an imported file changes.\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{hydrateStoredVolume,toggleMute,usePlayerStore}from\"https://framerusercontent.com/modules/hbBOc6MLN4T1PPsVYazn/WeepVp6C1ldGcXBvdxj6/engine.js\";import{normalizeSlot,renderSlotWithSizing}from\"https://framerusercontent.com/modules/h8NiJEJpWFHyeRETbmyt/8yFZXOUwH5F5bkx7bL6Q/slot.js\";function getVolumeVariant(volume,muted){if(muted||volume<=0)return\"Muted\";if(volume<=.33)return\"Low\";if(volume<=.66)return\"Medium\";return\"High\";}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerDisableUnlink\n */export default function SoundeeVolumeButton({previewState=\"High\",contentSize={width:\"Auto\",height:\"Auto\"},mutedSlot,lowSlot,mediumSlot,highSlot,style}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const player=usePlayerStore();const variant=isCanvas?previewState:getVolumeVariant(player.volume,player.muted);const slots={Muted:mutedSlot,Low:lowSlot,Medium:mediumSlot,High:highSlot};const defaultElement=normalizeSlot(highSlot)??normalizeSlot(mediumSlot)??normalizeSlot(lowSlot)??normalizeSlot(mutedSlot);const element=normalizeSlot(slots[variant])??defaultElement;const child=element?renderSlotWithSizing(element,{},`volume-${variant}`,contentSize):null;React.useEffect(()=>{hydrateStoredVolume();},[]);function handleClick(event){event.stopPropagation();if(isCanvas)return;toggleMute();}return /*#__PURE__*/_jsx(\"div\",{onClick:handleClick,style:{...style,cursor:isCanvas?\"default\":\"pointer\"},children:child??/*#__PURE__*/_jsx(FallbackVolumeIcon,{})});}function FallbackVolumeIcon(){return /*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:32,height:32,borderRadius:999,background:\"rgba(255,255,255,0.08)\",color:\"rgba(255,255,255,0.55)\",fontSize:11,lineHeight:1},children:\"Vol\"});}SoundeeVolumeButton.displayName=\"Soundee Volume Button Slot\";addPropertyControls(SoundeeVolumeButton,{previewState:{type:ControlType.Enum,title:\"Preview\",options:[\"Muted\",\"Low\",\"Medium\",\"High\"],optionTitles:[\"Muted\",\"Low\",\"Medium\",\"High\"],defaultValue:\"High\",description:\"Selects the slot preview state on the canvas.\"},contentSize:{type:ControlType.Object,title:\"Content Size\",controls:{width:{type:ControlType.Enum,title:\"Width\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:\"Auto\"},height:{type:ControlType.Enum,title:\"Height\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:\"Auto\"}},defaultValue:{width:\"Auto\",height:\"Auto\"},description:\"Controls whether the slot keeps its own size or fills.\"},mutedSlot:{type:ControlType.Slot,title:\"Muted\",maxCount:1},lowSlot:{type:ControlType.Slot,title:\"Low\",maxCount:1},mediumSlot:{type:ControlType.Slot,title:\"Medium\",maxCount:1},highSlot:{type:ControlType.Slot,title:\"High\",maxCount:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeVolumeButton\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SoundeeVolumeButton.map","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\n// soundee-core republish r5 (2026-08-25, engine fix) — rebuild for the\n// corrected dynamic import in lib/audio/engine.tsx (../store -> ../../store).\n// That path resolved nowhere, which is the code error that blocked Update in\n// the Starter. Importers do not rebuild when only an imported file changes.\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{hydrateStoredVolume,setVolume,usePlayerStore}from\"https://framerusercontent.com/modules/hbBOc6MLN4T1PPsVYazn/WeepVp6C1ldGcXBvdxj6/engine.js\";function clampUnit(value){if(!Number.isFinite(value))return 0;return Math.max(0,Math.min(1,value));}function getPointerUnitValue(rect,clientX,clientY,orientation){if(orientation===\"Vertical\"){if(rect.height<=0)return 0;return clampUnit(1-(clientY-rect.top)/rect.height);}if(rect.width<=0)return 0;return clampUnit((clientX-rect.left)/rect.width);}function syncSliderFill(element,value,orientation){if(!element)return;const percent=`${clampUnit(value)*100}%`;if(orientation===\"Vertical\"){element.style.width=\"100%\";element.style.height=percent;return;}element.style.width=percent;element.style.height=\"100%\";}function syncSliderHandle(element,value,orientation){if(!element)return;const percent=`${clampUnit(value)*100}%`;if(orientation===\"Vertical\"){element.style.left=\"50%\";element.style.bottom=percent;return;}element.style.left=percent;element.style.bottom=\"auto\";}function syncSliderIntent(element,currentValue,intentValue,orientation){if(!element)return;const start=Math.min(clampUnit(currentValue),clampUnit(intentValue));const size=Math.abs(clampUnit(intentValue)-clampUnit(currentValue));if(orientation===\"Vertical\"){element.style.left=\"0\";element.style.right=\"0\";element.style.bottom=`${start*100}%`;element.style.height=`${size*100}%`;element.style.width=\"100%\";return;}element.style.top=\"0\";element.style.bottom=\"0\";element.style.left=`${start*100}%`;element.style.width=`${size*100}%`;element.style.height=\"100%\";}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerDisableUnlink\n */export default function SoundeeVolumeSlider({orientation=\"Horizontal\",bar={size:4,hitSize:24,radius:999},colors={gutter:\"rgba(255,255,255,0.15)\",volume:\"#c8a06a\"},hoverEnabled=true,hover={volume:\"#e0bd8c\",intent:\"rgba(200,160,106,0.35)\",showIntent:true},handleMode=\"Hover\",handle={size:12,color:\"#c8a06a\",hoverColor:\"#e0bd8c\",cursor:\"pointer\"},style}){const[isHovered,setIsHovered]=React.useState(false);const[isDragging,setIsDragging]=React.useState(false);const draggingRef=React.useRef(false);const intentValueRef=React.useRef(null);const rootRef=React.useRef(null);const fillRef=React.useRef(null);const intentRef=React.useRef(null);const handleRef=React.useRef(null);const player=usePlayerStore();const effectiveVolume=player.muted?0:clampUnit(player.volume);const previewVolume=isDragging&&intentValueRef.current!==null?intentValueRef.current:effectiveVolume;const isVertical=orientation===\"Vertical\";const frameSize=Math.max(bar.hitSize,bar.size);const defaultLength=120;const volumeColor=hoverEnabled&&isHovered?hover.volume:colors.volume;const showHandle=handleMode===\"Always\"||handleMode===\"Hover\"&&isHovered;const handleColor=isHovered?handle.hoverColor:handle.color;const showIntent=hoverEnabled&&hover.showIntent&&isHovered&&!isDragging;React.useEffect(()=>{hydrateStoredVolume();},[]);const syncPreview=React.useCallback(value=>{syncSliderFill(fillRef.current,value,orientation);syncSliderHandle(handleRef.current,value,orientation);},[orientation]);const syncIntent=React.useCallback(()=>{if(intentValueRef.current===null)return;syncSliderIntent(intentRef.current,effectiveVolume,intentValueRef.current,orientation);},[effectiveVolume,orientation]);const syncPointerUi=React.useCallback(event=>{const rect=event.currentTarget.getBoundingClientRect();const nextVolume=getPointerUnitValue(rect,event.clientX,event.clientY,orientation);intentValueRef.current=nextVolume;if(draggingRef.current){syncPreview(nextVolume);setVolume(nextVolume);}syncIntent();},[orientation,syncIntent,syncPreview]);React.useLayoutEffect(()=>{if(draggingRef.current)return;syncPreview(effectiveVolume);},[effectiveVolume,syncPreview]);React.useLayoutEffect(()=>{if(!showIntent)return;syncIntent();},[showIntent,syncIntent]);return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,onPointerDown:event=>{draggingRef.current=true;setIsDragging(true);setIsHovered(true);event.currentTarget.setPointerCapture?.(event.pointerId);syncPointerUi(event);},onPointerMove:event=>{syncPointerUi(event);},onPointerUp:event=>{draggingRef.current=false;setIsDragging(false);event.currentTarget.releasePointerCapture?.(event.pointerId);},onPointerCancel:event=>{draggingRef.current=false;setIsDragging(false);setIsHovered(false);intentValueRef.current=null;event.currentTarget.releasePointerCapture?.(event.pointerId);syncPreview(effectiveVolume);},onPointerEnter:event=>{setIsHovered(true);syncPointerUi(event);},onPointerLeave:()=>{if(draggingRef.current)return;setIsHovered(false);intentValueRef.current=null;},style:{width:isVertical?frameSize:\"100%\",height:isVertical?defaultLength:frameSize,minWidth:isVertical?frameSize:undefined,minHeight:isVertical?undefined:frameSize,position:\"relative\",touchAction:\"none\",cursor:handle.cursor,userSelect:\"none\",WebkitTapHighlightColor:\"transparent\",...style},children:[/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",...isVertical?{top:0,bottom:0,left:\"50%\",width:bar.size,transform:\"translateX(-50%)\"}:{left:0,right:0,top:\"50%\",height:bar.size,transform:\"translateY(-50%)\"},borderRadius:bar.radius,overflow:\"hidden\",background:colors.gutter},children:[showIntent&&/*#__PURE__*/_jsx(\"div\",{ref:intentRef,style:{position:\"absolute\",background:hover.intent,borderRadius:bar.radius,pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{ref:fillRef,style:{position:\"absolute\",...isVertical?{left:0,right:0,bottom:0,height:`${previewVolume*100}%`}:{inset:0,width:`${previewVolume*100}%`},background:volumeColor,borderRadius:bar.radius}})]}),showHandle&&handle.size>0&&/*#__PURE__*/_jsx(\"div\",{ref:handleRef,style:{position:\"absolute\",...isVertical?{left:\"50%\",bottom:`${previewVolume*100}%`}:{left:`${previewVolume*100}%`,top:\"50%\"},width:handle.size,height:handle.size,transform:isVertical?\"translate(-50%, 50%)\":\"translate(-50%, -50%)\",borderRadius:999,background:handleColor,pointerEvents:\"none\"}})]});}SoundeeVolumeSlider.displayName=\"Soundee Volume Slider\";SoundeeVolumeSlider.defaultProps={orientation:\"Horizontal\",bar:{size:4,hitSize:24,radius:999},colors:{gutter:\"rgba(255,255,255,0.15)\",volume:\"#c8a06a\"},hoverEnabled:true,hover:{volume:\"#e0bd8c\",intent:\"rgba(200,160,106,0.35)\",showIntent:true},handleMode:\"Hover\",handle:{size:12,color:\"#c8a06a\",hoverColor:\"#e0bd8c\",cursor:\"pointer\"}};addPropertyControls(SoundeeVolumeSlider,{orientation:{type:ControlType.Enum,title:\"Orientation\",options:[\"Horizontal\",\"Vertical\"],optionTitles:[\"Horizontal\",\"Vertical\"],defaultValue:\"Horizontal\",description:\"Horizontal maps left to right. Vertical maps bottom to top.\"},bar:{type:ControlType.Object,title:\"Bar\",controls:{size:{type:ControlType.Number,title:\"Size\",min:2,max:24,step:1,defaultValue:4,displayStepper:true,description:\"Visual thickness of the volume line.\"},hitSize:{type:ControlType.Number,title:\"Hit Area\",min:8,max:48,step:1,defaultValue:24,displayStepper:true,description:\"Clickable/touchable size around the bar.\"},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:999,step:1,defaultValue:999,displayStepper:true}},defaultValue:{size:4,hitSize:24,radius:999}},colors:{type:ControlType.Object,title:\"Colors\",controls:{gutter:{type:ControlType.Color,title:\"Gutter\",defaultValue:\"rgba(255,255,255,0.15)\"},volume:{type:ControlType.Color,title:\"Volume\",defaultValue:\"#c8a06a\"}},defaultValue:{gutter:\"rgba(255,255,255,0.15)\",volume:\"#c8a06a\"}},hoverEnabled:{type:ControlType.Boolean,title:\"Hover\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},hover:{type:ControlType.Object,title:\"Hover\",hidden:props=>props.hoverEnabled===false,controls:{volume:{type:ControlType.Color,title:\"Volume\",defaultValue:\"#e0bd8c\"},showIntent:{type:ControlType.Boolean,title:\"Intent\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},intent:{type:ControlType.Color,title:\"Intent Color\",defaultValue:\"rgba(200,160,106,0.35)\"}},defaultValue:{volume:\"#e0bd8c\",intent:\"rgba(200,160,106,0.35)\",showIntent:true}},handleMode:{type:ControlType.Enum,title:\"Handle Display\",options:[\"Off\",\"Hover\",\"Always\"],optionTitles:[\"Off\",\"Hover\",\"Always\"],defaultValue:\"Hover\"},handle:{type:ControlType.Object,title:\"Handle Style\",hidden:props=>props.handleMode===\"Off\",controls:{size:{type:ControlType.Number,title:\"Size\",min:0,max:40,step:1,defaultValue:12,displayStepper:true},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#c8a06a\"},hoverColor:{type:ControlType.Color,title:\"Hover\",defaultValue:\"#e0bd8c\"},cursor:{type:ControlType.Enum,title:\"Cursor\",options:[\"pointer\",\"grab\",\"ew-resize\",\"ns-resize\"],optionTitles:[\"Pointer\",\"Grab\",\"Resize X\",\"Resize Y\"],defaultValue:\"pointer\"}},defaultValue:{size:12,color:\"#c8a06a\",hoverColor:\"#e0bd8c\",cursor:\"pointer\"}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeVolumeSlider\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SoundeeVolumeSlider.map","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import SoundeePopover from\"https://framerusercontent.com/modules/a6glxUWyNGCByymdfppW/2YK4r40IxpZdL8Ixa6lY/SoundeePopover.js\";import SoundeeVolumeButton from\"https://framerusercontent.com/modules/99WBHGEWzZAuqSmDcgAK/LwWVJW5NpGurV9arqQqJ/SoundeeVolumeButton.js\";import SoundeeVolumeSlider from\"https://framerusercontent.com/modules/HJfFehpZ5xwFoE8qRX6x/ZV7ADTBSbLV5ceXZtQbx/SoundeeVolumeSlider.js\";import{tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";// Four levels, because the button distinguishes four. A single on/off icon\n// throws away what `SoundeeVolumeButton` already works out.\nconst GLYPHS={muted:\"M11 5 6 9H2v6h4l5 4V5zM22 9l-6 6M16 9l6 6\",low:\"M11 5 6 9H2v6h4l5 4V5z\",medium:\"M11 5 6 9H2v6h4l5 4V5zM15.5 8.5a5 5 0 0 1 0 7\",high:\"M11 5 6 9H2v6h4l5 4V5zM15.5 8.5a5 5 0 0 1 0 7M18.5 5.5a9 9 0 0 1 0 13\"};function Icon({path,color}){return /*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:\"100%\",height:\"100%\",color},children:/*#__PURE__*/_jsx(\"svg\",{width:18,height:18,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:path})})});}/**\n * The volume control: an icon that mutes on click and opens a slider on hover.\n *\n * Three existing components, no new behaviour. `SoundeeVolumeButton` picks the\n * icon from the level and handles the mute; `SoundeePopover` already has a\n * Hover trigger with open and close delays, which is the fiddly part of a\n * hover-opened panel; `SoundeeVolumeSlider` is the slider.\n */export function Volume({tokens,isCanvas}){const iconSlot=path=>/*#__PURE__*/_jsx(Icon,{path:path,color:tokens.textSecondary});const trigger=/*#__PURE__*/_jsx(\"div\",{style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:tokens.controlSize,height:tokens.controlSize,borderRadius:999},children:/*#__PURE__*/_jsx(SoundeeVolumeButton,{contentSize:{width:\"Fill\",height:\"Fill\"},mutedSlot:iconSlot(GLYPHS.muted),lowSlot:iconSlot(GLYPHS.low),mediumSlot:iconSlot(GLYPHS.medium),highSlot:iconSlot(GLYPHS.high),style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:\"100%\",height:\"100%\"}})});return /*#__PURE__*/_jsx(SoundeePopover,{trigger:trigger,triggerEvent:\"Hover\",// Opens without a wait but lingers on the way out: the pointer has\n// to cross the gap between the icon and the slider, and a slider\n// that vanishes mid-reach cannot be used.\nhoverBehavior:{openDelay:0,closeDelay:260},triggerSize:{width:\"Auto\",height:\"Auto\"},// `align` is read before `position.align` in SoundeePopover, so it\n// is passed flat as well rather than left to resolve.\nalign:\"center\",alignOffset:0,position:{side:\"top\",sideOffset:14,align:\"center\"},// Exactly as wide as the button it belongs to, so it lines up by\n// construction instead of relying on the centring alone.\ncontentSize:{widthMode:\"fixed\",width:tokens.controlSize},contentStyle:{// Room above and below for the handle, which is centred on the\n// track's end points and so hangs half its height past them at\n// 0 and 100%.\npadding:`16px ${Math.max(4,Math.round((tokens.controlSize-24)/2))}px`,background:tokens.fill,radius:`${Math.min(tokens.radius,12)}px`,border:{borderWidth:1,borderStyle:\"solid\",borderColor:tokens.border},shadow:\"0 18px 48px rgba(0,0,0,0.45)\"},backdrop:false,content:// No height of its own: the slider is 120 tall by default, and\n// boxing it in 110 left it off-centre with more space above\n// than below.\n/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsx(SoundeeVolumeSlider,{orientation:\"Vertical\",bar:{size:4,hitSize:24,radius:999},colors:{gutter:tint(tokens.textPrimary,18),volume:tokens.accent},hoverEnabled:!isCanvas,hover:{volume:tokens.accent,intent:tint(tokens.accent,35),showIntent:true},handleMode:\"Always\",handle:{size:10,color:tokens.accent,hoverColor:tokens.accent,cursor:\"pointer\"}})})});}\nexport const __FramerMetadata__ = {\"exports\":{\"Volume\":{\"type\":\"reactComponent\",\"name\":\"Volume\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{useAddToCart}from\"https://framerusercontent.com/modules/RQ0otqKV2TW3jegGju98/XwhJAw2aci08xJcT0P6r/cart.js\";import{canDemoDownload}from\"https://framerusercontent.com/modules/SS5orfCMcKgfbITH48SC/eC2z6QlmsUuqPjh2EMil/entity_capabilities.js\";import{openSoundeeOverlay}from\"https://framerusercontent.com/modules/JWE25h6PrJ9N8RSe2d8l/rwQ7b5YTPb3c7KuBqZJd/open_overlay.js\";import{useStoreCurrency}from\"https://framerusercontent.com/modules/W0ZcNXEfQdPU6fsCwczm/6uJWn6X1lzsnoy33dN8O/currency.js\";import{formatPrice}from\"https://framerusercontent.com/modules/XqjS6RmB7bMfpSFcXWq7/Oim1PnSjexxaxkFS6DgJ/format.js\";import{HoverButton,mixToward,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{RowMenu}from\"https://framerusercontent.com/modules/jUfrK8MfKpQBn73ZLkel/t02PRp37vpA8YjRTDYZZ/RowMenu.js\";import{Volume}from\"https://framerusercontent.com/modules/vVl77AQcTiZyVAlJNoK3/LcUzQ1KlhPrvKNnJXxwI/Volume.js\";import{DEFAULT_ROW_TOKENS}from\"https://framerusercontent.com/modules/8841CNm8EKjvZRVrjFfe/IYq9trq37cXscGsUnnZL/tokens.js\";import{PLAYER_METRICS}from\"https://framerusercontent.com/modules/2dwj6OEWyGHoFEAiQILO/bJ6S3LL75nGXfp7Qemkj/tokens.js\";/**\n * The row's tokens, filled in from the bar's.\n *\n * `RowMenu` is built against the track row's token shape; this is the one\n * mapping between the two, shared by the bar's action strip and the\n * full-screen sheet so the menu cannot look different between them.\n */export function menuTokensFrom(tokens){return{...DEFAULT_ROW_TOKENS,menuSurface:tokens.fill,border:tokens.border,radius:tokens.radius,accent:tokens.accent,textPrimary:tokens.textPrimary,textSecondary:tokens.textSecondary,fontTitle:tokens.fontTitle,fontMeta:tokens.fontMeta};}/**\n * Volume, free download, buy, and the overflow menu — the right third.\n *\n * The buy button runs on `useAddToCart`, so Sold, Unavailable and In Cart mean\n * the same here as in a track row; the menu is the row's own `RowMenu`, which\n * already resolves which actions this entity can offer.\n */export function Actions({track,tokens,metaTypes,showVolume,showFree,showCart,showMenu,isCanvas,compact}){const{symbol:currency}=useStoreCurrency();const{onClick:addToCart,variant:liveVariant}=useAddToCart(track?.entityId);// Canvas entities never reach the entity store, so the hook reports\n// Unavailable for everything and the button could not be styled.\nconst variant=isCanvas?\"Default\":liveVariant;const dead=variant===\"Sold\"||variant===\"Unavailable\";const price=track?.minLicensePrice??track?.price??null;const icon={display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:tokens.controlSize,height:tokens.controlSize,flexShrink:0,border:\"none\",// A circle stays a circle — only the labelled buy pill follows\n// the brand's button radius.\nborderRadius:999,background:\"transparent\",color:tokens.textSecondary,cursor:\"pointer\"};const iconHover={background:tint(tokens.textPrimary,10),color:tokens.textPrimary};// The same outlined circle the track row uses for a free download on\n// mobile. It is an offer, not a utility like volume or the menu, so it\n// reads in the accent rather than sitting quietly among the grey icons.\nconst offer={...icon,border:`1px solid ${tokens.accent}`,color:tokens.accent,// An offer, not a utility — so unlike the transport circles it takes\n// the brand's button radius, pairing with the buy pill beside it the\n// way Free pairs with the price in a row.\nborderRadius:tokens.buttonRadius??999};// RowMenu is built against the row's tokens. Mapping is a handful of lines\n// and buys the whole menu — details, share, demo download, and the rules\n// about which of those this entity can actually offer.\nconst menuTokens=React.useMemo(()=>menuTokensFrom(tokens),[tokens]);return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:PLAYER_METRICS.actionGap,flexShrink:0},children:[showVolume&&!compact&&// Volume is a utility and the two beside it are offers, so it\n// gets its own distance rather than the tight spacing that\n// holds the download and the price together.\n/*#__PURE__*/_jsx(\"div\",{style:{marginRight:6,display:\"inline-flex\"},children:/*#__PURE__*/_jsx(Volume,{tokens:tokens,isCanvas:isCanvas})}),showFree&&!compact&&track&&canDemoDownload(track)&&/*#__PURE__*/_jsx(HoverButton,{onClick:()=>!isCanvas&&openSoundeeOverlay({name:\"download\",withEntity:true,entityId:track.entityId}),\"aria-label\":\"Free download\",hoverStyle:{background:tint(tokens.accent,14)},style:offer,children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"download\",size:16})}),showCart&&track&&/*#__PURE__*/_jsxs(HoverButton,{onClick:dead?undefined:addToCart,disabled:dead,inert:variant===\"InCart\",hoverStyle:{background:mixToward(tokens.accent,tokens.accentText,16)},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",gap:compact?6:8,height:tokens.controlSize,// Fixed, so the bar does not reflow between $9 and $129.\n// Not on a phone: 104px of fixed width there is 104px\n// the title does not get, and the price is short enough\n// that the reflow is a few pixels.\nminWidth:compact?0:104,padding:compact?\"0 12px\":\"0 16px\",marginLeft:compact?4:8,borderRadius:tokens.buttonRadius??999,border:`1px solid ${dead?tokens.border:tokens.accent}`,background:dead?\"transparent\":tokens.accent,color:dead?tokens.textSecondary:tokens.accentText,cursor:dead?\"default\":\"pointer\",opacity:variant===\"Loading\"?.6:1,whiteSpace:\"nowrap\",...tokens.fontButton},children:[!dead&&/*#__PURE__*/_jsx(SoundeeIcon,{name:\"cart\",size:14}),variant===\"Sold\"?\"Sold\":variant===\"Unavailable\"?\"N/A\":variant===\"InCart\"?\"In Cart\":price!=null?formatPrice(price,currency):\"N/A\"]}),showMenu&&track&&/*#__PURE__*/_jsx(RowMenu,{track:track,tokens:menuTokens,subtitleTypes:metaTypes,titleGap:PLAYER_METRICS.titleGap,liked:false,onToggleLike:()=>{},isCanvas:isCanvas,isMobile:compact,trigger:/*#__PURE__*/_jsx(HoverButton,{\"aria-label\":\"More\",hoverStyle:iconHover,style:{...icon,marginLeft:4},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"more\",size:18})})})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"Actions\":{\"type\":\"reactComponent\",\"name\":\"Actions\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"menuTokensFrom\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\n// soundee-core republish r5 (2026-08-25, engine fix) — rebuild for the\n// corrected dynamic import in lib/audio/engine.tsx (../store -> ../../store).\n// That path resolved nowhere, which is the code error that blocked Update in\n// the Starter. Importers do not rebuild when only an imported file changes.\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{usePlayerStore}from\"https://framerusercontent.com/modules/hbBOc6MLN4T1PPsVYazn/WeepVp6C1ldGcXBvdxj6/engine.js\";import{useEntityStore}from\"https://framerusercontent.com/modules/Fa9rFJN2rq85gl2rXBgV/AVjJVDZFaBnNLsPAn8ph/entities.js\";import{useSeekGesture}from\"https://framerusercontent.com/modules/qPgD7bnZ8wqAonggSMlQ/qn9zmWDQhqCdxyz6v0cX/useSeekGesture.js\";import{DEFAULT_SEEK_TOOLTIP,clampProgress,getTooltipProgress,seekTooltipControls,syncSeekTooltip}from\"https://framerusercontent.com/modules/xCcUCztOE3T5z5I5xW15/OmwvQ1Xzh1uxHOSoRb1U/useSeekUi.js\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function SoundeeProgressBar({bar={height:4,hitHeight:24,radius:999},colors={gutter:\"rgba(255,255,255,0.15)\",progress:\"#c8a06a\"},hoverEnabled=true,hover={progress:\"#e0bd8c\",intent:\"rgba(200,160,106,0.35)\",showIntent:true},handleMode=\"Hover\",handle={size:12,color:\"#c8a06a\",hoverColor:\"#e0bd8c\",cursor:\"pointer\"},tooltipVisible=\"Hover\",tooltip=DEFAULT_SEEK_TOOLTIP,style}){const[isHovered,setIsHovered]=React.useState(false);const[isDragging,setIsDragging]=React.useState(false);const draggingRef=React.useRef(false);const intentProgressRef=React.useRef(null);const intentRef=React.useRef(null);const progressRef=React.useRef(null);const handleRef=React.useRef(null);const tooltipRef=React.useRef(null);const barHeight=bar.height;const hitHeight=bar.hitHeight;const radius=bar.radius;const gutterColor=colors.gutter;const progressColor=hoverEnabled&&isHovered?hover.progress:colors.progress;const showHandle=handleMode===\"Always\"||handleMode===\"Hover\"&&isHovered;const handleSize=handle.size;const handleColor=isHovered?handle.hoverColor:handle.color;const player=usePlayerStore();const entities=useEntityStore();const ref=React.useRef(null);const track=player.entityId?entities.tracks[player.entityId]:null;const duration=player.duration||track?.duration||0;const displayProgress=player.progress??0;const previewProgress=isDragging&&intentProgressRef.current!==null?intentProgressRef.current:displayProgress;const frameHeight=Math.max(hitHeight,barHeight);const cursor=duration>0?handle.cursor:\"default\";const showIntent=duration>0&&hoverEnabled&&hover.showIntent&&isHovered&&!isDragging;const showTooltip=duration>0&&tooltipVisible!==\"Off\"&&(tooltipVisible===\"Hover\"?isHovered||isDragging:isDragging);const seekGesture=useSeekGesture({elementRef:ref,enabled:duration>0});const syncProgressPreview=React.useCallback(progress=>{const percent=`${clampProgress(progress)*100}%`;if(progressRef.current){progressRef.current.style.width=percent;}if(handleRef.current){handleRef.current.style.left=percent;}},[]);const syncIntentOverlay=React.useCallback(()=>{const intentProgress=intentProgressRef.current;if(intentProgress===null||!intentRef.current)return;const intentStart=Math.min(displayProgress,intentProgress);const intentWidth=Math.abs(intentProgress-displayProgress);intentRef.current.style.left=`${intentStart*100}%`;intentRef.current.style.width=`${intentWidth*100}%`;},[displayProgress]);const syncPointerUi=React.useCallback(event=>{if(duration<=0)return;const rect=event.currentTarget.getBoundingClientRect();if(rect.width<=0)return;const intentProgress=clampProgress((event.clientX-rect.left)/rect.width);intentProgressRef.current=intentProgress;if(draggingRef.current){syncProgressPreview(intentProgress);}syncIntentOverlay();if(tooltipRef.current){syncSeekTooltip({element:tooltipRef.current,progress:getTooltipProgress(tooltip.mode,displayProgress,intentProgress),duration,containerWidth:rect.width});}},[displayProgress,duration,syncIntentOverlay,syncProgressPreview,tooltip.mode]);React.useLayoutEffect(()=>{if(draggingRef.current)return;syncProgressPreview(displayProgress);},[displayProgress,syncProgressPreview]);React.useLayoutEffect(()=>{if(!showIntent)return;syncIntentOverlay();},[showIntent,syncIntentOverlay]);React.useLayoutEffect(()=>{if(!showTooltip||!tooltipRef.current||duration<=0)return;const tooltipProgress=tooltip.mode===\"Current Time\"?displayProgress:intentProgressRef.current??displayProgress;syncSeekTooltip({element:tooltipRef.current,progress:tooltipProgress,duration,containerWidth:ref.current?.offsetWidth??0});},[displayProgress,duration,showTooltip,tooltip.mode]);return /*#__PURE__*/_jsxs(\"div\",{ref:ref,onPointerDown:event=>{draggingRef.current=true;setIsDragging(true);setIsHovered(true);syncPointerUi(event);seekGesture.onPointerDown(event);},onPointerMove:event=>{syncPointerUi(event);seekGesture.onPointerMove(event);},onPointerUp:event=>{draggingRef.current=false;setIsDragging(false);seekGesture.onPointerUp(event);},onPointerCancel:event=>{draggingRef.current=false;setIsDragging(false);setIsHovered(false);intentProgressRef.current=null;syncProgressPreview(displayProgress);seekGesture.onPointerCancel(event);},onPointerEnter:event=>{setIsHovered(true);syncPointerUi(event);},onPointerLeave:()=>{setIsHovered(false);intentProgressRef.current=null;},style:{width:\"100%\",height:frameHeight,position:\"relative\",touchAction:seekGesture.touchAction,cursor,userSelect:\"none\",WebkitTapHighlightColor:\"transparent\",...style},children:[/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:0,right:0,top:\"50%\",height:barHeight,transform:\"translateY(-50%)\",borderRadius:radius,overflow:\"hidden\",background:gutterColor},children:[showIntent&&/*#__PURE__*/_jsx(\"div\",{ref:intentRef,style:{position:\"absolute\",top:0,bottom:0,left:0,width:0,background:hover.intent,borderRadius:radius,pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{ref:progressRef,style:{position:\"absolute\",inset:0,width:`${previewProgress*100}%`,background:progressColor,borderRadius:radius}})]}),showHandle&&handleSize>0&&/*#__PURE__*/_jsx(\"div\",{ref:handleRef,style:{position:\"absolute\",left:`${previewProgress*100}%`,top:\"50%\",width:handleSize,height:handleSize,transform:\"translate(-50%, -50%)\",borderRadius:999,background:handleColor,pointerEvents:\"none\"}}),showTooltip&&/*#__PURE__*/_jsx(\"div\",{ref:tooltipRef,style:{position:\"absolute\",left:0,bottom:`calc(100% + ${tooltip.offset}px)`,transform:\"translateX(-50%)\",padding:tooltip.padding,borderRadius:tooltip.radius,background:tooltip.background,color:tooltip.text,fontSize:tooltip.fontSize,lineHeight:1,whiteSpace:\"nowrap\",pointerEvents:\"none\",userSelect:\"none\"}})]});}SoundeeProgressBar.displayName=\"Soundee Player Progress Bar\";SoundeeProgressBar.defaultProps={bar:{height:4,hitHeight:24,radius:999},colors:{gutter:\"rgba(255,255,255,0.15)\",progress:\"#c8a06a\"},hoverEnabled:true,hover:{progress:\"#e0bd8c\",intent:\"rgba(200,160,106,0.35)\",showIntent:true},handleMode:\"Hover\",handle:{size:12,color:\"#c8a06a\",hoverColor:\"#e0bd8c\",cursor:\"pointer\"},tooltipVisible:\"Hover\",tooltip:DEFAULT_SEEK_TOOLTIP,style:undefined};addPropertyControls(SoundeeProgressBar,{bar:{type:ControlType.Object,title:\"Bar\",controls:{height:{type:ControlType.Number,title:\"Height\",min:2,max:24,step:1,defaultValue:4,displayStepper:true,description:\"Visual thickness of the progress line.\"},hitHeight:{type:ControlType.Number,title:\"Hit Area\",min:8,max:48,step:1,defaultValue:24,displayStepper:true,description:\"Clickable/touchable height around the bar.\"},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:999,step:1,defaultValue:999,displayStepper:true,description:\"Corner radius for the gutter and progress fill.\"}},defaultValue:{height:4,hitHeight:24,radius:999}},colors:{type:ControlType.Object,title:\"Colors\",controls:{gutter:{type:ControlType.Color,title:\"Gutter\",defaultValue:\"rgba(255,255,255,0.15)\",description:\"Unplayed portion color.\"},progress:{type:ControlType.Color,title:\"Progress\",defaultValue:\"#c8a06a\",description:\"Played portion color when not hovering.\"}},defaultValue:{gutter:\"rgba(255,255,255,0.15)\",progress:\"#c8a06a\"}},hoverEnabled:{type:ControlType.Boolean,title:\"Hover\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Enables hover highlight and pointer intent UI.\"},hover:{type:ControlType.Object,title:\"Hover\",hidden:props=>props.hoverEnabled===false,controls:{progress:{type:ControlType.Color,title:\"Progress\",defaultValue:\"#e0bd8c\",description:\"Played progress color while hovering.\"},showIntent:{type:ControlType.Boolean,title:\"Intent\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"Shows a ghost preview at the hovered seek position.\"},intent:{type:ControlType.Color,title:\"Intent Color\",defaultValue:\"rgba(200,160,106,0.35)\",description:\"Ghost preview color between current and hovered position.\"}},defaultValue:{progress:\"#e0bd8c\",intent:\"rgba(200,160,106,0.35)\",showIntent:true}},handleMode:{type:ControlType.Enum,title:\"Handle Display\",options:[\"Hover\",\"Always\"],optionTitles:[\"Hover\",\"Always\"],defaultValue:\"Hover\",description:\"Controls when the progress handle is visible.\"},handle:{type:ControlType.Object,title:\"Handle Style\",controls:{size:{type:ControlType.Number,title:\"Size\",min:0,max:40,step:1,defaultValue:12,displayStepper:true,description:\"Diameter of the progress handle.\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#c8a06a\",description:\"Color of the progress handle.\"},hoverColor:{type:ControlType.Color,title:\"Hover\",defaultValue:\"#e0bd8c\",description:\"Handle color while hovering the progress bar.\"},cursor:{type:ControlType.Enum,title:\"Cursor\",options:[\"pointer\",\"grab\",\"ew-resize\"],optionTitles:[\"Pointer\",\"Grab\",\"Resize\"],defaultValue:\"pointer\",description:\"Cursor shown while hovering a seekable player.\"}},defaultValue:{size:12,color:\"#c8a06a\",hoverColor:\"#e0bd8c\",cursor:\"pointer\"}},tooltipVisible:{type:ControlType.Enum,title:\"Tooltip\",options:[\"Off\",\"Hover\",\"Drag\"],optionTitles:[\"Off\",\"Hover\",\"Drag\"],defaultValue:\"Hover\",description:\"Controls when the time tooltip is visible.\"},tooltip:{...seekTooltipControls,hidden:props=>props.tooltipVisible===\"Off\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeProgressBar\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SoundeeProgressBar.map","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import SoundeeProgressBar from\"https://framerusercontent.com/modules/j6dbXIf64kzrLYctON8o/Rn48lB0pW5flsEOXVh7d/SoundeeProgressBar.js\";import SoundeeWaveform from\"https://framerusercontent.com/modules/ucOncfIOoCB7bcXfAfGl/Lg4zY1upzVkL2o9qGdGJ/SoundeeWaveform.js\";import{usePlayerSelector}from\"https://framerusercontent.com/modules/hbBOc6MLN4T1PPsVYazn/WeepVp6C1ldGcXBvdxj6/engine.js\";import{formatTime}from\"https://framerusercontent.com/modules/XqjS6RmB7bMfpSFcXWq7/Oim1PnSjexxaxkFS6DgJ/format.js\";import{DEFAULT_SEEK_TOOLTIP}from\"https://framerusercontent.com/modules/xCcUCztOE3T5z5I5xW15/OmwvQ1Xzh1uxHOSoRb1U/useSeekUi.js\";import{PLAYER_METRICS}from\"https://framerusercontent.com/modules/2dwj6OEWyGHoFEAiQILO/bJ6S3LL75nGXfp7Qemkj/tokens.js\";const selectProgress=s=>s.progress;const selectDuration=s=>s.duration;/**\n * The seek strip: elapsed, the control, total.\n *\n * Both controls are the existing components — `SoundeeWaveform` and\n * `SoundeeProgressBar` — which already own the drag gesture, the intent\n * preview, the tooltip and the seek itself. This picks between them and gives\n * them the bar's colours.\n */export function Seek({tokens,mode,wave,showTimes}){const progress=usePlayerSelector(selectProgress);const duration=usePlayerSelector(selectDuration);const elapsed=duration>0?formatTime(progress*duration):\"0:00\";const total=duration>0?formatTime(duration):\"0:00\";const time={flexShrink:0,whiteSpace:\"nowrap\",// Tabular, or the strip breathes in and out as the seconds tick over\n// and drags the seek control's width along with it.\nfontVariantNumeric:\"tabular-nums\",...tokens.fontMeta,// Styled from the waveform group, the same place the row's length\n// label reads — one setting for the same label in both.\n...wave.durationFont,color:wave.durationColor??tokens.textSecondary};// Both toggles have to agree: Times is about this strip, Duration is about\n// the label wherever a waveform shows one.\nconst times=showTimes&&wave.durationShow!==false;const tooltip={...DEFAULT_SEEK_TOOLTIP,placement:wave.tooltipPlacement,background:wave.tooltipBackground,text:wave.tooltipText,radius:Math.min(tokens.radius,8)};return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:PLAYER_METRICS.seekGap,width:\"100%\",minWidth:0},children:[times&&/*#__PURE__*/_jsx(\"div\",{style:time,children:elapsed}),/*#__PURE__*/_jsx(\"div\",{style:{flex:\"1 1 0\",minWidth:0,height:wave.height},children:mode===\"Waveform\"?/*#__PURE__*/_jsx(SoundeeWaveform,{// No entity id: the player-bar waveform follows whatever\n// is loaded, which is the one case the component treats\n// as a pure scrubber — seeking while paused moves the\n// position without starting playback.\nwaveform:{mode:wave.mode,mirror:wave.mirror,minBarHeight:wave.minBarHeight},bars:{width:wave.barWidth,gap:wave.barGap,radius:wave.barRadius},transition:wave.transition,colors:{gutter:wave.gutter,progress:wave.progress},hoverEnabled:true,hover:{progress:wave.hover,intent:wave.intent,showIntent:true},tooltipVisible:wave.tooltipVisible,tooltip:tooltip,playhead:{show:wave.playhead,width:wave.playheadWidth,color:wave.playheadColor,overshoot:0}}):/*#__PURE__*/_jsx(SoundeeProgressBar,{bar:{height:4,hitHeight:wave.height,radius:999},colors:{gutter:wave.gutter,progress:wave.progress},hoverEnabled:true,hover:{progress:wave.hover,intent:wave.intent,showIntent:true},handleMode:\"Hover\",handle:{size:12,color:wave.progress,hoverColor:wave.hover,cursor:\"pointer\"},tooltipVisible:wave.tooltipVisible,tooltip:tooltip})}),times&&/*#__PURE__*/_jsx(\"div\",{style:time,children:total})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"Seek\":{\"type\":\"reactComponent\",\"name\":\"Seek\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"SeekMode\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{RenderTarget}from\"framer\";import{usePlaylistSelector,getActivePlaybackQueue,playQueueAt}from\"https://framerusercontent.com/modules/xHhQmu9KUyaDJlvQ1REJ/bWd9qzndMaNhQDLTwfIv/playlist.js\";import{usePlayerSelector}from\"https://framerusercontent.com/modules/hbBOc6MLN4T1PPsVYazn/WeepVp6C1ldGcXBvdxj6/engine.js\";import{useEntitySelector}from\"https://framerusercontent.com/modules/Fa9rFJN2rq85gl2rXBgV/AVjJVDZFaBnNLsPAn8ph/entities.js\";import{normalizeSlot,cloneSlotWithUniqueLayout}from\"https://framerusercontent.com/modules/h8NiJEJpWFHyeRETbmyt/8yFZXOUwH5F5bkx7bL6Q/slot.js\";// ─── Selectors ─────────────────────────────────────────────────────────────\nconst selectPlayerEntityId=s=>s.entityId;const selectActivePlaylistId=s=>s.activePlaylistId;const selectCurrentIndex=s=>s.currentIndex;const selectShuffleEnabled=s=>s.shuffleEnabled;const selectShuffleHistoryCount=s=>s.shuffleHistoryCount;const selectShuffleBagCount=s=>s.shuffleBagCount;// Stable empty fallbacks so `useSyncExternalStore` doesn't thrash on Object.is.\nconst EMPTY_IDS=[];const EMPTY_SLICE={};// How long after a programmatic scroll we keep trusting the `programmaticRef`\n// guard, in case `scrollend` never fires (sub-pixel rounding, older WebKit).\n// A one-slide animation settles well under this; if it expires early the worst\n// case is a no-op settle on the already-centred slide.\nconst PROGRAMMATIC_SAFETY_MS=500;// Trailing-edge debounce for browsers without the `scrollend` event.\nconst SCROLL_SETTLE_DEBOUNCE_MS=120;// ─── CSS ─────────────────────────────────────────────────────────────────────\nconst HIDE_SCROLLBAR_CSS=`\n.sndee-artslider-scroll::-webkit-scrollbar { display: none; }\n.sndee-artslider-scroll { scrollbar-width: none; -ms-overflow-style: none; }\n`;function prefersReducedMotion(){if(typeof window===\"undefined\"||!window.matchMedia)return false;try{return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;}catch{return false;}}// ─── Component ───────────────────────────────────────────────────────────────\n/**\n * Full-screen player artwork slider.\n *\n * Pure view layer over the active playback queue (linear playlist, or the\n * virtual shuffle queue). Renders a small bounded window around the active\n * track (default: one neighbour per side) using native scroll-snap, plays the\n * snapped track on settle via `playQueueAt`, and keeps the active track centred\n * at all times — including external changes such as auto-advance on track end.\n *\n * Loop/race safety:\n *   - Every programmatic recenter sets `programmaticRef`, so the recenter's own\n *     `scrollend` never re-triggers `playQueueAt` (no scroll→play→scroll loop).\n *   - If the active track changes externally mid-scroll, the in-flight user\n *     settle is consumed (`ignoreNextSettleRef`) and the view snaps to the new\n *     active instead of fighting it.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function SoundeeArtworkSliderStandalone({item,renderDefault,selectEntities,padding=0,maskWidth=0,neighborRadius=1,style}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const template=normalizeSlot(item);const activePlaylistId=usePlaylistSelector(selectActivePlaylistId);const currentIndex=usePlaylistSelector(selectCurrentIndex);const shuffleEnabled=usePlaylistSelector(selectShuffleEnabled);// Subscribe to the shuffle counts so the slider re-reads the queue when it\n// mutates without `currentIndex` itself changing.\nusePlaylistSelector(selectShuffleHistoryCount);usePlaylistSelector(selectShuffleBagCount);const playerEntityId=usePlayerSelector(selectPlayerEntityId);const radius=Math.max(1,Math.min(5,neighborRadius|0));const paddingPx=Math.max(0,padding|0);const maskPx=Math.max(0,maskWidth|0);const maskImage=maskPx>0?`linear-gradient(to right, transparent 0, black ${maskPx}px, black calc(100% - ${maskPx}px), transparent 100%)`:undefined;const queue=activePlaylistId&&currentIndex>=0?getActivePlaybackQueue():null;const queueIds=queue?.entityIds??EMPTY_IDS;const queueIndex=queue?.activeIndex??-1;const mode=activePlaylistId&&queueIndex>=0&&queueIds[queueIndex]!=null?\"playlist\":playerEntityId!=null?\"single\":\"empty\";// ─── Derived window ──────────────────────────────────────────────────\nconst naturalStart=mode===\"playlist\"?Math.max(0,queueIndex-radius):0;const naturalEnd=mode===\"playlist\"?Math.min(queueIds.length-1,queueIndex+radius):0;// ─── Refs ────────────────────────────────────────────────────────────\nconst scrollRef=React.useRef(null);// Loop/race flags.\nconst programmaticRef=React.useRef(false);const userInteractingRef=React.useRef(false);const ignoreNextSettleRef=React.useRef(false);const lastSettledActiveIndexRef=React.useRef(null);const programmaticTimerRef=React.useRef(null);const smoothScrollRafRef=React.useRef(null);// Context refs for the instant-vs-smooth decision.\nconst prevActiveIndexRef=React.useRef(queueIndex);const lastPlaylistIdRef=React.useRef(activePlaylistId);const lastShuffleRef=React.useRef(shuffleEnabled);// ─── Animated track change: freeze the window, scroll, then shift ────\n//\n// Why next/prev used to snap: the rendered window is `active ± radius`,\n// so the moment the index moves, the slide that has to be scrolled *to*\n// becomes the centre of a re-rendered window — the DOM shifts under a\n// scroll position that never moved, the view is already \"there\", and a\n// smooth scroll has nothing left to animate. On mobile the same shift\n// emitted a settle mid-flight and played the wrong slide, which is why\n// this recentred instantly for a while.\n//\n// So the window is the thing to fix, not the scroll. An external\n// adjacent change (next, prev, auto-advance) keeps rendering the *old*\n// window — the target slide is already in it — smooth-scrolls to that\n// slide like a finger would, and only on settle swaps to the natural\n// window and recentres instantly, which is invisible because the same\n// cover ends up in the same place.\n//\n// A ref filled during render, not state: the freeze must hold in the\n// very render that first sees the new index, before anything commits.\n// Idempotent under a re-render of the same index (StrictMode included):\n// the same target just keeps the same frozen bounds.\nconst animRef=React.useRef(null);// The window as last committed — what the freeze preserves.\nconst prevWindowRef=React.useRef({start:naturalStart,end:naturalEnd});const[,bumpWindow]=React.useReducer(x=>x+1,0);if(mode!==\"playlist\"){animRef.current=null;}else if(animRef.current&&animRef.current.target!==queueIndex){// A second change landed mid-animation. If the new target is still\n// inside the *same frozen window* — a rapid next-next with enough\n// neighbours rendered — the scroll simply retargets: the window never\n// shifts, so this is not the race that broke chaining before, and the\n// one settle at the end swaps once. Anything outside the window (a\n// third hop past the neighbours, a shuffle draw, a wrap-around) drops\n// to instant.\nif(queueIndex>=animRef.current.start&&queueIndex<=animRef.current.end&&!userInteractingRef.current&&lastSettledActiveIndexRef.current!==queueIndex&&activePlaylistId===lastPlaylistIdRef.current&&shuffleEnabled===lastShuffleRef.current){animRef.current={...animRef.current,target:queueIndex};}else{animRef.current=null;}}else if(!animRef.current&&!isCanvas&&!prefersReducedMotion()&&prevActiveIndexRef.current!==queueIndex&&Math.abs(queueIndex-prevActiveIndexRef.current)===1&&// The user's own swipe already animated — see `onSettle`.\nlastSettledActiveIndexRef.current!==queueIndex&&!userInteractingRef.current&&activePlaylistId===lastPlaylistIdRef.current&&shuffleEnabled===lastShuffleRef.current&&// The target has to exist in the frozen window to scroll to it.\nqueueIndex>=prevWindowRef.current.start&&queueIndex<=prevWindowRef.current.end){animRef.current={start:prevWindowRef.current.start,end:prevWindowRef.current.end,target:queueIndex};}const windowStart=animRef.current?animRef.current.start:naturalStart;const windowEnd=animRef.current?animRef.current.end:naturalEnd;let slotIds=EMPTY_IDS;if(mode===\"playlist\"){slotIds=isCanvas?[queueIds[queueIndex]]:queueIds.slice(windowStart,windowEnd+1);}else if(mode===\"single\"){slotIds=[playerEntityId];}const canSwipe=mode===\"playlist\"&&!isCanvas&&slotIds.length>1;// ─── Entity subscription scoped to visible slots ─────────────────────\nconst slotIdsKey=slotIds.join(\",\");const selectSlice=React.useMemo(()=>{let cache=null;return e=>{const map=selectEntities(e);if(!map)return cache??EMPTY_SLICE;if(cache){let same=true;for(const id of slotIds){if(cache[id]!==map[id]){same=false;break;}}if(same)return cache;}const next={};for(const id of slotIds)next[id]=map[id];cache=next;return next;};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[selectEntities,slotIdsKey]);const entityMap=useEntitySelector(selectSlice);// Latest-value refs so stable handlers read current render values.\n// `windowStartRef` follows the *rendered* window — during an animated\n// change that is the frozen one, so a settle mid-animation still maps\n// child positions to the right queue indices.\nconst activeIndexRef=React.useRef(queueIndex);activeIndexRef.current=queueIndex;const windowStartRef=React.useRef(windowStart);windowStartRef.current=windowStart;const clearProgrammaticTimer=React.useCallback(()=>{if(programmaticTimerRef.current!=null){window.clearTimeout(programmaticTimerRef.current);programmaticTimerRef.current=null;}},[]);const cancelScheduledSmoothScroll=React.useCallback(()=>{if(smoothScrollRafRef.current!=null){window.cancelAnimationFrame(smoothScrollRafRef.current);smoothScrollRafRef.current=null;}},[]);const centerActiveSlot=React.useCallback(behavior=>{const el=scrollRef.current;if(!el)return;// Skip while unmeasured (hidden tab / display:none / canvas\n// pre-measure) to avoid NaN scroll positions.\nif(el.clientWidth===0)return;const centerSlot=activeIndexRef.current-windowStartRef.current;const child=el.children[centerSlot];if(!child)return;const target=child.offsetLeft+child.clientWidth/2-el.clientWidth/2;if(Math.abs(el.scrollLeft-target)<=1)return;programmaticRef.current=true;clearProgrammaticTimer();programmaticTimerRef.current=window.setTimeout(()=>{programmaticRef.current=false;programmaticTimerRef.current=null;// `scrollend` never came (older WebKit, sub-pixel rounding).\n// An animated change still has to finish its second phase —\n// swap to the natural window — or the next change starts\n// from a stale one.\nif(animRef.current){animRef.current=null;bumpWindow();}},PROGRAMMATIC_SAFETY_MS);el.scrollTo({left:target,behavior});},[clearProgrammaticTimer]);const scheduleCenterActiveSlot=React.useCallback(behavior=>{if(behavior!==\"smooth\"){cancelScheduledSmoothScroll();centerActiveSlot(behavior);return;}// Start smooth track-change scrolls one frame later. This lets the\n// newly-active slide commit/paint before the browser begins its own\n// scroll animation, which avoids fighting Framer animations in the\n// same frame. Instant recentres intentionally stay pre-paint.\ncancelScheduledSmoothScroll();smoothScrollRafRef.current=window.requestAnimationFrame(()=>{smoothScrollRafRef.current=null;centerActiveSlot(\"smooth\");});},[cancelScheduledSmoothScroll,centerActiveSlot]);const onSettle=React.useCallback(()=>{const el=scrollRef.current;if(!el)return;// Our own recenter settling — never let it drive playback.\nif(programmaticRef.current){programmaticRef.current=false;clearProgrammaticTimer();userInteractingRef.current=false;// Phase two of an animated change: the scroll has landed on the\n// target slide of the frozen window, so now — and only now — the\n// window may shift. The re-render swaps the slides and the layout\n// effect recentres instantly, which repaints the same cover in\n// the same place.\nif(animRef.current){animRef.current=null;bumpWindow();}return;}// Active changed externally mid-scroll: snap to the new active rather\n// than playing whatever the finger happened to land near.\nif(ignoreNextSettleRef.current){ignoreNextSettleRef.current=false;userInteractingRef.current=false;cancelScheduledSmoothScroll();centerActiveSlot(\"auto\");return;}if(el.clientWidth===0){userInteractingRef.current=false;return;}const center=el.scrollLeft+el.clientWidth/2;let closest=-1;let minDist=Infinity;for(let i=0;i<el.children.length;i++){const c=el.children[i];const cc=c.offsetLeft+c.clientWidth/2;const dist=Math.abs(center-cc);if(dist<minDist){minDist=dist;closest=i;}}userInteractingRef.current=false;if(closest<0)return;const target=windowStartRef.current+closest;if(target!==activeIndexRef.current){// Mark this index as settle-driven so the layout effect recenters\n// instantly (the user is already visually on this slide).\nlastSettledActiveIndexRef.current=target;playQueueAt(target);}},[cancelScheduledSmoothScroll,centerActiveSlot,clearProgrammaticTimer]);// ─── Keep the active slot centred (mount, window shift, external change) ─\nReact.useLayoutEffect(()=>{if(mode!==\"playlist\"){cancelScheduledSmoothScroll();prevActiveIndexRef.current=queueIndex;lastPlaylistIdRef.current=activePlaylistId;lastShuffleRef.current=shuffleEnabled;prevWindowRef.current={start:windowStart,end:windowEnd};return;}const el=scrollRef.current;if(!el||el.clientWidth===0)return;const playlistChanged=activePlaylistId!==lastPlaylistIdRef.current;const shuffleChanged=shuffleEnabled!==lastShuffleRef.current;const settleDriven=lastSettledActiveIndexRef.current===queueIndex;const prevActive=prevActiveIndexRef.current;const adjacent=Math.abs(queueIndex-prevActive)===1;const reduceMotion=prefersReducedMotion();let behavior=\"auto\";if(playlistChanged||shuffleChanged||settleDriven){// Context reset or the index the user already swiped to: instant.\nbehavior=\"auto\";}else if(userInteractingRef.current){// Race: active changed externally while the user is scrolling.\n// Cancel the user intent and go to the new active.\nignoreNextSettleRef.current=true;behavior=adjacent&&!reduceMotion?\"smooth\":\"auto\";}else if(animRef.current?.target===queueIndex){// An animated change: the window is frozen, so the target slide\n// is sitting in the DOM exactly where it was — this scroll has\n// something real to travel. The old instant-only rule lived here\n// because the window used to shift in the same commit and there\n// was nothing left to animate; freezing removed the reason.\nbehavior=\"smooth\";}else{// Everything else — a window swap after an animation, a jump of\n// more than one, a change the freeze declined — recentres\n// instantly, pre-paint, so nothing visible moves.\nbehavior=\"auto\";}scheduleCenterActiveSlot(behavior);if(settleDriven)lastSettledActiveIndexRef.current=null;lastPlaylistIdRef.current=activePlaylistId;lastShuffleRef.current=shuffleEnabled;prevActiveIndexRef.current=queueIndex;// What the freeze preserves next time: the window as it stands in\n// the DOM after this commit.\nprevWindowRef.current={start:windowStart,end:windowEnd};},[mode,queueIndex,windowStart,windowEnd,slotIds.length,activePlaylistId,shuffleEnabled,cancelScheduledSmoothScroll,scheduleCenterActiveSlot]);// ─── Recenter on resize / orientation change ─────────────────────────\nReact.useLayoutEffect(()=>{if(mode!==\"playlist\")return;const el=scrollRef.current;if(!el||typeof ResizeObserver===\"undefined\")return;const ro=new ResizeObserver(()=>{cancelScheduledSmoothScroll();centerActiveSlot(\"auto\");});ro.observe(el);return()=>ro.disconnect();},[mode,cancelScheduledSmoothScroll,centerActiveSlot]);// ─── Scroll/settle + interaction listeners ───────────────────────────\nReact.useEffect(()=>{const el=scrollRef.current;if(!el||!canSwipe)return;const onUserStart=()=>{// A finger can interrupt an in-flight programmatic (smooth) scroll.\ncancelScheduledSmoothScroll();programmaticRef.current=false;clearProgrammaticTimer();userInteractingRef.current=true;// Including an animated track change: the frozen window simply\n// stays up — it is a perfectly valid window around where the\n// finger is — and the settle plays whatever the swipe lands on.\nanimRef.current=null;};const hasScrollEnd=typeof window!==\"undefined\"&&\"onscrollend\"in window;let debounceTimer=null;const onScroll=()=>{if(!programmaticRef.current)userInteractingRef.current=true;if(!hasScrollEnd){if(debounceTimer!=null)window.clearTimeout(debounceTimer);debounceTimer=window.setTimeout(onSettle,SCROLL_SETTLE_DEBOUNCE_MS);}};el.addEventListener(\"pointerdown\",onUserStart,{passive:true});el.addEventListener(\"touchstart\",onUserStart,{passive:true});el.addEventListener(\"scroll\",onScroll,{passive:true});if(hasScrollEnd){el.addEventListener(\"scrollend\",onSettle);}return()=>{el.removeEventListener(\"pointerdown\",onUserStart);el.removeEventListener(\"touchstart\",onUserStart);el.removeEventListener(\"scroll\",onScroll);if(hasScrollEnd){el.removeEventListener(\"scrollend\",onSettle);}if(debounceTimer!=null)window.clearTimeout(debounceTimer);};},[canSwipe,onSettle,cancelScheduledSmoothScroll,clearProgrammaticTimer]);// ─── Cleanup safety timer on unmount ─────────────────────────────────\nReact.useEffect(()=>{return()=>{cancelScheduledSmoothScroll();clearProgrammaticTimer();};},[cancelScheduledSmoothScroll,clearProgrammaticTimer]);// ─── Styles ──────────────────────────────────────────────────────────\nconst slideStyle={flex:\"0 0 100%\",scrollSnapAlign:\"center\",scrollSnapStop:\"always\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",height:\"100%\",minWidth:0,boxSizing:\"border-box\",position:\"relative\",overflow:\"hidden\",isolation:\"isolate\",backfaceVisibility:\"hidden\"};const artworkBoxStyle={width:`max(0px, calc(min(100cqw, 100cqh) - ${paddingPx*2}px))`,height:`max(0px, calc(min(100cqw, 100cqh) - ${paddingPx*2}px))`,aspectRatio:\"1 / 1\",position:\"relative\",flex:\"0 0 auto\",overflow:\"hidden\",contain:\"layout paint\",isolation:\"isolate\",backfaceVisibility:\"hidden\",transform:\"translateZ(0)\"};const renderSlide=(id,isActive)=>{const entity=id!=null?entityMap?.[id]??null:null;return /*#__PURE__*/_jsx(\"div\",{\"data-entity-id\":id,style:slideStyle,\"aria-current\":isActive?\"true\":undefined,\"aria-hidden\":isActive?undefined:true,children:/*#__PURE__*/_jsx(\"div\",{style:artworkBoxStyle,children:template&&/*#__PURE__*/React.isValidElement(template)?cloneSlotWithUniqueLayout(template,{...entity??{},entityId:id,style:{width:\"100%\",height:\"100%\"}},id!=null?String(id):\"empty\"):renderDefault(entity)})},id??\"empty\");};// ─── Render ──────────────────────────────────────────────────────────\nreturn /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"100%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",minHeight:0,minWidth:0,// Anchor container queries here so the inscribed square can\n// size itself via `min(100cqw, 100cqh)`.\ncontainerType:\"size\",...style},children:[/*#__PURE__*/_jsx(\"style\",{children:HIDE_SCROLLBAR_CSS}),/*#__PURE__*/_jsx(\"div\",{ref:scrollRef,className:\"sndee-artslider-scroll\",role:\"group\",\"aria-roledescription\":\"carousel\",style:{display:\"flex\",flexDirection:\"row\",alignItems:\"center\",width:\"100%\",height:\"100%\",overflowX:canSwipe?\"auto\":\"hidden\",overflowY:\"hidden\",scrollSnapType:canSwipe?\"x mandatory\":\"none\",WebkitOverflowScrolling:\"touch\",// Our recenter restores scrollLeft manually; let the\n// browser not also try to preserve position.\noverflowAnchor:\"none\",boxSizing:\"border-box\",maskImage,WebkitMaskImage:maskImage},children:mode===\"empty\"?renderSlide(undefined,true):slotIds.map((id,i)=>renderSlide(id,mode===\"playlist\"?windowStart+i===queueIndex:true))})]});}SoundeeArtworkSliderStandalone.displayName=\"Soundee Artwork Slider Standalone\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeArtworkSliderStandalone\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"\"}},\"ArtworkSliderStandaloneProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SoundeeArtworkSliderStandalone.map","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import*as ReactDOM from\"react-dom\";import{AnimatePresence,motion}from\"framer-motion\";import SoundeeArtwork from\"https://framerusercontent.com/modules/SvQ80p4cAsd88JPYWgze/Qq09ALzx6F4r8Yo3Oux8/SoundeeArtwork.js\";import SoundeeChipList from\"https://framerusercontent.com/modules/PC57mgvaDV9A9sP8uwDw/PTfCnKrb1Id3zHIs1a79/SoundeeChipList.js\";import SoundeeArtworkSliderStandalone from\"https://framerusercontent.com/modules/MROAb4XeZzToeN5RVcVm/D1MpHvKSx4tQKgZryzQh/SoundeeArtworkSliderStandalone.js\";import{CmsLink}from\"https://framerusercontent.com/modules/W9fjsr5lFdL2bnlC2Asr/kcV7c8GVsKn0YK9iXBRH/cms_link_slot.js\";import{HoverButton,mixToward,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{useLikeToggle}from\"https://framerusercontent.com/modules/JC0a9KKMuPydWQTekyia/zpty2TT1Fvv6CDvzLF2v/like.js\";import{useAddToCart}from\"https://framerusercontent.com/modules/RQ0otqKV2TW3jegGju98/XwhJAw2aci08xJcT0P6r/cart.js\";import{useStoreCurrency}from\"https://framerusercontent.com/modules/W0ZcNXEfQdPU6fsCwczm/6uJWn6X1lzsnoy33dN8O/currency.js\";import{formatPrice}from\"https://framerusercontent.com/modules/XqjS6RmB7bMfpSFcXWq7/Oim1PnSjexxaxkFS6DgJ/format.js\";import{canDemoDownload}from\"https://framerusercontent.com/modules/SS5orfCMcKgfbITH48SC/eC2z6QlmsUuqPjh2EMil/entity_capabilities.js\";import{openSoundeeOverlay}from\"https://framerusercontent.com/modules/JWE25h6PrJ9N8RSe2d8l/rwQ7b5YTPb3c7KuBqZJd/open_overlay.js\";import{subscribeNavigation}from\"https://framerusercontent.com/modules/5775FDVGOrb5R2emuJGi/A3sagwnssNR1ckXqVaAW/navigation_events.js\";import{RowMenu}from\"https://framerusercontent.com/modules/jUfrK8MfKpQBn73ZLkel/t02PRp37vpA8YjRTDYZZ/RowMenu.js\";import{Transport}from\"https://framerusercontent.com/modules/qXqrBVPEL9Mj6CrnRzt1/nR3nZlwSKvZe7J3gLid4/Transport.js\";import{Seek}from\"https://framerusercontent.com/modules/IXwaxMFepWMXDO6BKeLS/8G48skspL20TKffApP8g/Seek.js\";import{menuTokensFrom}from\"https://framerusercontent.com/modules/TZaK7gCtDPgfXn45B5nV/fsUn69htLekEjYfyZzMp/Actions.js\";import{PLAYER_METRICS}from\"https://framerusercontent.com/modules/2dwj6OEWyGHoFEAiQILO/bJ6S3LL75nGXfp7Qemkj/tokens.js\";const selectTracks=e=>e.tracks;/**\n * Under the overlays, above the page.\n *\n * Everything the sheet can open — the row menu's popover (9999), the cart and\n * download dialogs (~2147482000) — must land on top of it, so it stays below\n * their layers on purpose. The page's own sticky bars top out around 10.\n */const SHEET_Z=8e3;/**\n * The full-screen player, opened from the phone bar's chevron.\n *\n * A view, not a second player: the artwork slider is the standalone one that\n * already drives the queue (swiping a cover *is* changing the track), the\n * transport is the bar's own with nothing hidden, the seek strip is the same\n * `Seek`, and the menu is the row's `RowMenu`. What the minimal bar drops —\n * like, price, menu, shuffle, repeat, the waveform — all lands here, so\n * nothing is lost by the bar shrinking; it just moved one tap away.\n */export function FullScreen({open,onClose,track,tokens,seekMode,wave,showTimes,metaTypes,showLike,showShuffle,showRepeat,showFree,showCart,showMenu,isCanvas}){const{liked,toggle:toggleLike}=useLikeToggle(track?.entityId,{isCanvas});const{symbol:currency}=useStoreCurrency();const{onClick:addToCart,variant:liveVariant}=useAddToCart(track?.entityId);const variant=isCanvas?\"Default\":liveVariant;const dead=variant===\"Sold\"||variant===\"Unavailable\";const price=track?.minLicensePrice??track?.price??null;const menuTokens=React.useMemo(()=>menuTokensFrom(tokens),[tokens]);// The sheet is the whole screen, so the page under it must not scroll —\n// and must get its scroll back the moment the sheet leaves.\nReact.useEffect(()=>{if(!open||isCanvas||typeof document===\"undefined\")return;const el=document.documentElement;const prev=el.style.overflow;el.style.overflow=\"hidden\";return()=>{el.style.overflow=prev;};},[open,isCanvas]);React.useEffect(()=>{if(!open||isCanvas)return;const onKey=event=>{if(event.key===\"Escape\")onClose();};window.addEventListener(\"keydown\",onKey);return()=>window.removeEventListener(\"keydown\",onKey);},[open,isCanvas,onClose]);// Navigating closes the player — the CMS title, the menu's Details, the\n// back button. Same plumbing every modal already rides: the navigation\n// tracker patches pushState/popstate and watches same-origin anchor\n// clicks, and this fires only when the pathname actually changes, so a\n// click that goes nowhere leaves the player alone.\nReact.useEffect(()=>{if(!open||isCanvas)return;return subscribeNavigation(()=>onClose());},[open,isCanvas,onClose]);// Touch targets, not the bar's economy: the sheet has a screen to itself,\n// so every control grows to a comfortable size whatever the bar uses.\nconst sheetTokens=React.useMemo(()=>({...tokens,playSize:Math.max(tokens.playSize,64),controlSize:Math.max(tokens.controlSize,44)}),[tokens]);const circle={display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:44,height:44,flexShrink:0,// A circle stays a circle — only the labelled buy pill follows\n// the brand's button radius.\nborderRadius:999,border:`1px solid ${tokens.border}`,background:\"transparent\",color:tokens.textSecondary,cursor:\"pointer\"};const circleHover={background:tint(tokens.textPrimary,10),color:tokens.textPrimary};const body=/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",width:\"100%\",height:\"100%\",minHeight:0,boxSizing:\"border-box\",padding:\"calc(16px + env(safe-area-inset-top)) 20px calc(16px + env(safe-area-inset-bottom))\",gap:14},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",flexShrink:0},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:tokens.textSecondary,...tokens.fontMeta},children:\"Now playing\"}),/*#__PURE__*/_jsx(HoverButton,{onClick:onClose,\"aria-label\":\"Close player\",hoverStyle:circleHover,style:circle,children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"close\",size:18})})]}),/*#__PURE__*/_jsx(\"div\",{style:{flex:\"1 1 0\",minHeight:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:isCanvas?/*#__PURE__*/_jsx(SoundeeArtwork,{entityID:track?.entityId,imageSize:\"Large\",artworkColor:track?.artworkColor,title:track?.title,borderRadius:`${Math.max(tokens.radius,16)}px`,loading:\"eager\",style:{// `dvh`: sized to the screen the cover is actually on, not the\n// taller one a phone reports with its chrome hidden.\nwidth:\"min(100%, 55dvh)\",aspectRatio:\"1 / 1\",height:\"auto\"}}):/*#__PURE__*/_jsx(SoundeeArtworkSliderStandalone,{renderDefault:entity=>/*#__PURE__*/_jsx(SoundeeArtwork,{artwork:entity?.artworkUrlLarge??\"\",title:entity?.title??\"\",borderRadius:`${Math.max(tokens.radius,16)}px`,forceFade:true,loading:\"eager\",style:{width:\"100%\",height:\"100%\"}}),selectEntities:selectTracks,padding:10,maskWidth:0,// Two, not one: the neighbours' covers preload while\n// they wait off-screen, and a second next tapped\n// mid-animation retargets inside the same frozen\n// window instead of dropping to an instant snap —\n// the slider only bails once taps outrun the\n// neighbours it has.\nneighborRadius:2,style:{width:\"100%\",height:\"100%\"}})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:12,flexShrink:0},children:[showMenu?/*#__PURE__*/_jsx(RowMenu,{track:track,tokens:menuTokens,subtitleTypes:metaTypes,titleGap:PLAYER_METRICS.titleGap,liked:liked,onToggleLike:()=>toggleLike(),isCanvas:isCanvas,isMobile:true,trigger:/*#__PURE__*/_jsx(HoverButton,{\"aria-label\":\"More\",hoverStyle:circleHover,style:circle,children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"more\",size:18})})}):// Keeps the title truly centred when the menu is off —\n// the like on the other side still holds its 44px.\nshowLike&&/*#__PURE__*/_jsx(\"span\",{style:{width:44,flexShrink:0}}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:PLAYER_METRICS.titleGap,flex:\"1 1 0\",minWidth:0},children:[/*#__PURE__*/_jsx(CmsLink,{entityId:track?.entityId,label:track?.title,style:{color:tokens.textPrimary,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",textAlign:\"center\",maxWidth:\"100%\",...tokens.fontTitle,// The sheet's one size opinion: the bar's title\n// size is set for a 62px strip, and a full screen\n// deserves a headline. Family and weight stay the\n// producer's.\nfontSize:19,lineHeight:1.25},children:track?.title}),metaTypes.length>0&&/*#__PURE__*/_jsx(SoundeeChipList,{entityID:track.entityId,chipTypes:metaTypes,itemLimit:\"auto\",maxChips:8,maxPerType:0,showRemaining:false,truncate:true,gap:4,justify:\"center\",textStyle:{font:tokens.fontMeta,color:tokens.textSecondary,separator:\",\"}})]}),showLike?/*#__PURE__*/_jsx(HoverButton,{onClick:()=>toggleLike(),\"aria-label\":liked?\"Unlike\":\"Like\",\"aria-pressed\":liked,hoverStyle:{background:tint(tokens.accent,12),color:tokens.accent},style:{...circle,border:\"none\",color:liked?tokens.accent:tokens.textSecondary},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"heart\",size:20,filled:liked})}):showMenu&&/*#__PURE__*/_jsx(\"span\",{style:{width:44,flexShrink:0}})]}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",justifyContent:\"center\",flexShrink:0},children:/*#__PURE__*/_jsx(Transport,{tokens:sheetTokens,showShuffle:showShuffle,showRepeat:showRepeat,isCanvas:isCanvas,compact:false})}),/*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0},children:/*#__PURE__*/_jsx(Seek,{tokens:tokens,mode:seekMode,wave:wave,showTimes:showTimes})}),(showCart||showFree)&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:10,flexShrink:0},children:[showCart&&/*#__PURE__*/_jsxs(HoverButton,{onClick:dead?undefined:addToCart,disabled:dead,inert:variant===\"InCart\",hoverStyle:{background:mixToward(tokens.accent,tokens.accentText,16)},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",gap:8,flex:\"1 1 0\",minWidth:0,height:48,borderRadius:tokens.buttonRadius??999,border:`1px solid ${dead?tokens.border:tokens.accent}`,background:dead?\"transparent\":tokens.accent,color:dead?tokens.textSecondary:tokens.accentText,cursor:dead?\"default\":\"pointer\",opacity:variant===\"Loading\"?.6:1,whiteSpace:\"nowrap\",...tokens.fontButton},children:[!dead&&/*#__PURE__*/_jsx(SoundeeIcon,{name:\"cart\",size:15}),variant===\"Sold\"?\"Sold\":variant===\"Unavailable\"?\"N/A\":variant===\"InCart\"?\"In Cart\":price!=null?formatPrice(price,currency):\"N/A\"]}),showFree&&!isCanvas&&track&&canDemoDownload(track)&&/*#__PURE__*/_jsx(HoverButton,{onClick:()=>openSoundeeOverlay({name:\"download\",withEntity:true,entityId:track.entityId}),\"aria-label\":\"Free download\",hoverStyle:{background:tint(tokens.accent,14)},style:{...circle,width:48,height:48,border:`1px solid ${tokens.accent}`,color:tokens.accent,// The offer pairs with the buy pill, so\n// it follows the brand's button radius —\n// like and menu stay circles.\nborderRadius:tokens.buttonRadius??999},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"download\",size:18})})]})]});// The canvas has no portal worth reaching and nothing to animate — the\n// sheet renders in place, at a phone-ish height, purely to be styled.\nif(isCanvas){if(!open)return null;return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:640,background:tokens.fill,borderTop:`1px solid ${tokens.border}`},children:body});}if(typeof document===\"undefined\")return null;return /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx(AnimatePresence,{children:open&&/*#__PURE__*/_jsx(motion.div,{initial:{y:\"100%\"},animate:{y:0},exit:{y:\"100%\"},transition:{duration:.34,ease:[.32,.72,0,1]},style:{position:\"fixed\",inset:0,zIndex:SHEET_Z,background:tokens.fill,// The bar's frost, carried up: with a translucent\n// fill the page stays present behind the sheet the\n// same way it does behind the bar.\n...tokens.blur>0?{backdropFilter:`blur(${tokens.blur}px)`,WebkitBackdropFilter:`blur(${tokens.blur}px)`}:null,display:\"flex\",flexDirection:\"column\",overscrollBehavior:\"contain\",touchAction:\"pan-y\"},children:body})}),document.body);}\nexport const __FramerMetadata__ = {\"exports\":{\"FullScreen\":{\"type\":\"reactComponent\",\"name\":\"FullScreen\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// Is this element narrower than a given width?\n//\n// A component measures itself rather than the viewport on purpose. On the\n// Framer canvas every breakpoint is a frame sitting side by side in one window,\n// so a viewport media query reports the same answer for all of them and the\n// phone frame draws the desktop layout. The element's own width is the honest\n// question in both places, and it also holds up when a component is dropped\n// into a narrow column on a wide screen.\nimport*as React from\"react\";/**\n * True while the observed element is under `breakpoint` px wide.\n *\n * Starts false — the wide layout — and corrects on the first measurement,\n * which lands before paint. Somewhere without ResizeObserver stays false\n * rather than guessing.\n */export function useIsNarrow(ref,breakpoint){const[narrow,setNarrow]=React.useState(false);React.useLayoutEffect(()=>{const element=ref.current;if(!element||typeof ResizeObserver===\"undefined\")return;const measure=width=>{// Zero means the element is not laid out yet — display:none, or a\n// frame that has not been given a size. Judging on that would\n// flip the layout to narrow and back on the next frame.\nif(width<=0)return;setNarrow(width<breakpoint);};measure(element.getBoundingClientRect().width);const observer=new ResizeObserver(entries=>{for(const entry of entries){measure(entry.contentRect?.width??entry.target.getBoundingClientRect().width);}});observer.observe(element);return()=>observer.disconnect();},[ref,breakpoint]);return narrow;}\nexport const __FramerMetadata__ = {\"exports\":{\"useIsNarrow\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./use_narrow.map","// soundee-core rebuild r17 (2026-09-18) — engine state moved to globalThis, so a second engine build shares the player, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\n// soundee-core republish r5 (2026-08-25, engine fix) — rebuild for the\n// corrected dynamic import in lib/audio/engine.tsx (../store -> ../../store).\n// That path resolved nowhere, which is the code error that blocked Update in\n// the Starter. Importers do not rebuild when only an imported file changes.\n// soundee-core republish (2026-08-25) — rebuild so this component picks up the\n// shared playlist runtime (store/playlist.tsx moved onto globalThis). Without a\n// rebuild it keeps its own inlined copy and playback state stays split.\n// soundee-core republish r4 (2026-08-24 17:2x) — rebuilds the bar module so the\n// free-download radius fix in Actions.tsx (sync-log ff) actually ships: Framer\n// does not rebuild an importer when only its imported file changes.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{playerBarBrand,stripDefaults,useBrandOverrides}from\"https://framerusercontent.com/modules/yD9Ys9s3cEToBITrvdLi/73etEDTq7Xf4D5LzHkb0/brand.js\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{QueryClientProvider}from\"https://framerusercontent.com/modules/A2wyUwJYRLojGcmm5zwu/a25JgpA7VH4glxK8yrBL/react_query.js\";import{queryClient}from\"https://framerusercontent.com/modules/LvDJerpfGbaGUWAOTjYS/Rv56jYPAnRFoK0hFbquK/query_client.js\";import{usePlayerSelector}from\"https://framerusercontent.com/modules/hbBOc6MLN4T1PPsVYazn/WeepVp6C1ldGcXBvdxj6/engine.js\";import{useEntitySelector}from\"https://framerusercontent.com/modules/Fa9rFJN2rq85gl2rXBgV/AVjJVDZFaBnNLsPAn8ph/entities.js\";import{useEnsureSoundeeSession}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";import{DEMO_TRACK_ENTITY}from\"https://framerusercontent.com/modules/y33CnMbsLsRpKYyVdkip/ovJVzRba4ULeCAGmCMSq/entity_actions.js\";import{METADATA_TYPE_OPTIONS,METADATA_TYPE_TITLES}from\"https://framerusercontent.com/modules/RHDRA0LlqBZ48LGdAjXC/8yxeMZ17mAoc8ZwH3FqA/build_chip_data.js\";import{DEFAULT_WAVE_TOKENS,waveTokenControls}from\"https://framerusercontent.com/modules/8841CNm8EKjvZRVrjFfe/IYq9trq37cXscGsUnnZL/tokens.js\";import{NowPlaying}from\"https://framerusercontent.com/modules/irwMballXmvT62hmLcG4/XlC4IZxwolK5QNx5Xg1w/NowPlaying.js\";import{Transport}from\"https://framerusercontent.com/modules/qXqrBVPEL9Mj6CrnRzt1/nR3nZlwSKvZe7J3gLid4/Transport.js\";import{Actions}from\"https://framerusercontent.com/modules/TZaK7gCtDPgfXn45B5nV/fsUn69htLekEjYfyZzMp/Actions.js\";import{Seek}from\"https://framerusercontent.com/modules/IXwaxMFepWMXDO6BKeLS/8G48skspL20TKffApP8g/Seek.js\";import{FullScreen}from\"https://framerusercontent.com/modules/tT8OcRcjqFH5a3qYxD4c/uIHF6DEr3IqIKD9DiSrf/FullScreen.js\";import{HoverButton,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{DEFAULT_PLAYER_TOKENS,mergePlayerTokens,playerControlControls,playerSurfaceControls,playerTextControls,PLAYER_COMPACT_METRICS,PLAYER_COMPACT_WIDTH,PLAYER_METRICS}from\"https://framerusercontent.com/modules/2dwj6OEWyGHoFEAiQILO/bJ6S3LL75nGXfp7Qemkj/tokens.js\";import{useIsNarrow}from\"https://framerusercontent.com/modules/dH4admwrMAdjdS8Tn27Y/oKzNUgN7romyPxMV6I6B/use_narrow.js\";import{PLAYER_BAR_ATTR}from\"https://framerusercontent.com/modules/kzYBDVoF2Qa1Nph54gmt/W3lh9aOdXwFNqPdMZ3fq/viewport_cover.js\";const selectEntityId=s=>s.entityId;const DEFAULT_META_TYPES=[\"bpm\",\"artists\",\"genre\"];/**\n * The finished player bar.\n *\n * Composed from what already exists rather than rebuilt: `SoundeeWaveform` and\n * `SoundeeProgressBar` own the seek gesture, `useAddToCart` owns Sold/In Cart,\n * `useLikeToggle` owns the sign-in-before-liking rule, `RowMenu` owns which\n * extra actions an entity can offer, and `SoundeeArtwork` and `SoundeeChipList`\n * draw the cover and the metadata. This lays them out and hands them the bar's\n * tokens.\n *\n * It reads the player store directly, so it needs no wiring to a list — drop it\n * on a page and it follows whatever is loaded.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerDisableUnlink\n */export default function SoundeePlayerBar(props){return /*#__PURE__*/_jsx(QueryClientProvider,{client:queryClient,children:/*#__PURE__*/_jsx(PlayerBarInner,{...props})});}function PlayerBarInner({layout=\"Auto\",seekMode=\"Waveform\",wave=DEFAULT_WAVE_TOKENS,showTimes=true,metaTypes=DEFAULT_META_TYPES,showLike=true,showShuffle=true,showRepeat=true,showVolume=true,showFree=true,showCart=true,showMenu=true,fullscreen=true,previewTrack=true,previewFullscreen=false,bar,text,controls,style}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;useEnsureSoundeeSession();const entityId=usePlayerSelector(selectEntityId);const liveTrack=useEntitySelector(s=>entityId?s.tracks[entityId]:undefined);// Nothing is loaded on the canvas, so without a stand-in the bar renders as\n// an empty strip and cannot be styled at all.\nconst track=isCanvas&&previewTrack?DEMO_TRACK_ENTITY:liveTrack??null;// Brand under the bar's own groups — see lib/brand.tsx.\nconst brand=useBrandOverrides();const tokens=React.useMemo(()=>mergePlayerTokens(playerBarBrand(brand),// Only genuine changes — a materialised default must not\n    // block the brand (see stripDefaults).\n    stripDefaults(DEFAULT_PLAYER_TOKENS,bar),stripDefaults(DEFAULT_PLAYER_TOKENS,text),stripDefaults(DEFAULT_PLAYER_TOKENS,controls)),[brand,bar,text,controls]);// Measured, not a breakpoint prop: the bar is one component pinned across\n// the bottom of every page, and asking a producer to set its layout three\n// times for something that only ever depends on how wide it is would be a\n// control that can only be set wrong. Measuring also gets the Framer canvas\n// right, where all three breakpoint frames sit in one window and a viewport\n// query would answer for the window rather than the frame.\nconst barRef=React.useRef(null);const narrow=useIsNarrow(barRef,PLAYER_COMPACT_WIDTH);const compact=layout===\"Auto\"?narrow:layout===\"Mobile\";// The minimal bar and the sheet come as a pair, and only on the phone —\n// the desktop bar has room for everything and needs neither.\nconst minimal=fullscreen&&compact;const[sheetOpen,setSheetOpen]=React.useState(false);// Stable, because the sheet's navigation subscription lives as long as\n// this identity does.\nconst closeSheet=React.useCallback(()=>setSheetOpen(false),[]);// Growing past the breakpoint swaps in the desktop bar, which has no\n// chevron — a sheet left open there would have no way to close.\nReact.useEffect(()=>{if(!minimal)setSheetOpen(false);},[minimal]);/**\n     * The whole minimal bar is the opening tap — a 44px chevron alone is a\n     * small target for the one thing this bar does. Real controls keep\n     * winning: anything that is a link or a button handles its own tap.\n     */const openFromBar=event=>{if(!minimal||isCanvas)return;const target=event.target;if(target?.closest(\"a, button, input, [role='slider']\"))return;setSheetOpen(true);};// Nothing loaded, nothing to show: a bar with an empty cover and a dead\n// transport is worse than no bar, and it takes up the bottom of every page\n// until the visitor happens to press play.\nif(!track){if(!isCanvas)return null;// The canvas is the one place it has to stay visible: a component that\n// renders nothing cannot be selected, moved or styled.\nreturn /*#__PURE__*/_jsx(\"div\",{style:{padding:12,borderRadius:8,border:`1px dashed ${tokens.border}`,background:\"rgba(0,0,0,0.35)\",color:tokens.textSecondary,font:\"12px/1.5 ui-monospace, monospace\",...style},children:\"Soundee Player Bar — hidden until something is playing. Turn on Preview Track to style it here.\"});}// Bar mode is the Spotify shape: the line lives under the transport, in the\n// middle column, because a thin bar spanning the whole width has nothing to\n// draw and reads as a rule rather than a control. A waveform is worth the\n// full width — it is showing you the track — so that one keeps its own band.\n//\n// Never on a phone, whichever mode is set: the middle column is barely\n// wider than the play button there, and a seek strip inside it has nothing\n// to draw. It goes to the full-width band instead, which is the one place\n// a phone has room for it.\nconst centred=seekMode===\"Bar\"&&!compact;// Two bands, not one stack. The rule between them belongs to the bar and\n// runs its full width, while the contents of each band stay capped and\n// centred — a divider that stopped where the padding starts would read as\n// part of the controls rather than as the bar's own seam.\nconst inner={width:\"100%\",maxWidth:tokens.maxWidth>0?tokens.maxWidth:undefined,margin:\"0 auto\",minWidth:0,boxSizing:\"border-box\"};return /*#__PURE__*/_jsxs(\"div\",{ref:barRef,[PLAYER_BAR_ATTR]:\"\",style:{display:\"flex\",flexDirection:\"column\",width:\"100%\",minWidth:0,boxSizing:\"border-box\",background:tokens.fill,// Prefixed as well: Safari still wants it, and the player bar\n// is the one thing on the page that is always in view.\n...tokens.blur>0?{backdropFilter:`blur(${tokens.blur}px)`,WebkitBackdropFilter:`blur(${tokens.blur}px)`}:null,borderTop:`1px solid ${tokens.border}`,...style},children:[/*#__PURE__*/_jsx(\"div\",{style:{...inner,padding:`${tokens.paddingY}px ${tokens.paddingX}px`},children:/*#__PURE__*/_jsxs(\"div\",{onClick:openFromBar,style:{display:\"flex\",alignItems:\"center\",gap:compact?PLAYER_COMPACT_METRICS.sectionGap:PLAYER_METRICS.sectionGap,minWidth:0,cursor:minimal&&!isCanvas?\"pointer\":undefined},children:[/*#__PURE__*/_jsx(NowPlaying,{track:track,tokens:tokens,metaTypes:metaTypes,// The like moves into the sheet: the minimal bar keeps\n// only what identifies the track and what plays it.\nshowLike:showLike&&!minimal,isCanvas:isCanvas,compact:compact,// Plain text in the minimal bar: on touch a CMS link\n// covers the title with its anchor, so the biggest\n// tap target navigated away instead of opening the\n// sheet. The sheet's own title carries the link.\nlinkTitle:!minimal}),centred?/*#__PURE__*/_jsxs(\"div\",{style:{// Capped and centred rather than filling: at\n// full width the transport drifts to the far\n// side of a wide screen and away from the line\n// it belongs to.\nflex:\"0 1 640px\",minWidth:0,display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:6},children:[/*#__PURE__*/_jsx(Transport,{tokens:tokens,showShuffle:showShuffle,showRepeat:showRepeat,isCanvas:isCanvas,compact:compact}),/*#__PURE__*/_jsx(Seek,{tokens:tokens,mode:seekMode,wave:wave,showTimes:showTimes})]}):/*#__PURE__*/_jsx(Transport,{tokens:tokens,showShuffle:showShuffle,showRepeat:showRepeat,isCanvas:isCanvas,compact:compact}),minimal?// Price, menu and volume live in the sheet now; the\n// bar's own right side is the one control that opens\n// it.\n/*#__PURE__*/_jsx(HoverButton,{onClick:()=>!isCanvas&&setSheetOpen(true),\"aria-label\":\"Open full-screen player\",\"aria-expanded\":sheetOpen,hoverStyle:{background:tint(tokens.textPrimary,10)},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:tokens.playSize,height:tokens.playSize,flexShrink:0,borderRadius:999,border:`1px solid ${tokens.border}`,background:\"transparent\",color:tokens.textPrimary,cursor:\"pointer\"},children:/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{display:\"inline-flex\",transform:\"rotate(180deg)\"},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"chevronDown\",size:20})})}):/* Balances the track block on the left, so the\n                           transport sits in the middle of the bar rather than\n                           the middle of whatever is left over — which would\n                           shift it every time a title changes length. *//*#__PURE__*/_jsx(\"div\",{style:{// On a phone it takes only what it needs.\n// Splitting the row evenly there would hand\n// half of a 375px screen to three buttons and\n// leave the title with the other half minus\n// the cover.\nflex:compact?\"0 0 auto\":\"1 1 0\",minWidth:0,display:\"flex\",justifyContent:\"flex-end\"},children:/*#__PURE__*/_jsx(Actions,{track:track,tokens:tokens,metaTypes:metaTypes,showVolume:showVolume,showFree:showFree,showCart:showCart,showMenu:showMenu,isCanvas:isCanvas,compact:compact})})]})}),!centred&&!minimal&&/*#__PURE__*/_jsx(\"div\",{style:{borderTop:`1px solid ${tokens.border}`,width:\"100%\",minWidth:0},children:/*#__PURE__*/_jsx(\"div\",{style:{...inner,// Horizontal only: the times line up with the\n// controls above, and the waveform sits on the\n// bar's bottom edge rather than floating above a\n// gap.\npadding:`${PLAYER_METRICS.rowGap}px ${tokens.paddingX}px 0`},children:/*#__PURE__*/_jsx(Seek,{tokens:tokens,mode:seekMode,wave:wave,showTimes:showTimes})})}),fullscreen&&(minimal||isCanvas&&previewFullscreen)&&/*#__PURE__*/_jsx(FullScreen,{open:isCanvas?previewFullscreen:sheetOpen,onClose:closeSheet,track:track,tokens:tokens,seekMode:seekMode,wave:wave,showTimes:showTimes,metaTypes:metaTypes,showLike:showLike,showShuffle:showShuffle,showRepeat:showRepeat,showFree:showFree,showCart:showCart,showMenu:showMenu,isCanvas:isCanvas})]});}SoundeePlayerBar.displayName=\"Soundee Player Bar\";// Typed rather than inferred: a bare object literal widens `seekMode` to\n// `string`, which Framer's checker rejects when the component is registered.\nconst playerBarDefaults={layout:\"Auto\",seekMode:\"Waveform\",wave:DEFAULT_WAVE_TOKENS,showTimes:true,metaTypes:DEFAULT_META_TYPES,showLike:true,showShuffle:true,showRepeat:true,showVolume:true,showFree:true,showCart:true,showMenu:true,fullscreen:true,previewTrack:true,previewFullscreen:false};SoundeePlayerBar.defaultProps=playerBarDefaults;addPropertyControls(SoundeePlayerBar,{layout:{type:ControlType.Enum,title:\"Layout\",options:[\"Auto\",\"Desktop\",\"Mobile\"],optionTitles:[\"Auto\",\"Desktop\",\"Mobile\"],defaultValue:\"Auto\",displaySegmentedControl:true,description:\"Auto switches to the phone layout below 640px — cover, title, play, price and menu, with the seek strip full width. Pin it per breakpoint only if you place the bar somewhere its width does not match the screen.\"},seekMode:{type:ControlType.Enum,title:\"Seek\",options:[\"Waveform\",\"Bar\"],optionTitles:[\"Waveform\",\"Bar\"],defaultValue:\"Waveform\",displaySegmentedControl:true,description:\"Waveform draws the track; Bar is a plain line. Both seek, scrub and preview the same way.\"},showTimes:{type:ControlType.Boolean,title:\"Times\",defaultValue:true,description:\"Elapsed and total either side of the seek control.\"},metaTypes:{type:ControlType.Array,title:\"Meta\",control:{type:ControlType.Enum,options:METADATA_TYPE_OPTIONS,optionTitles:METADATA_TYPE_TITLES},defaultValue:DEFAULT_META_TYPES,maxCount:6,description:\"The line under the title.\"},showLike:{type:ControlType.Boolean,title:\"Like\",defaultValue:true},showShuffle:{type:ControlType.Boolean,title:\"Shuffle\",defaultValue:true},showRepeat:{type:ControlType.Boolean,title:\"Repeat\",defaultValue:true},showVolume:{type:ControlType.Boolean,title:\"Volume\",defaultValue:true},showFree:{type:ControlType.Boolean,title:\"Free Download\",defaultValue:true,description:\"Shown only on tracks that actually offer one.\"},showCart:{type:ControlType.Boolean,title:\"Buy\",defaultValue:true},showMenu:{type:ControlType.Boolean,title:\"Menu\",defaultValue:true},fullscreen:{type:ControlType.Boolean,title:\"Full Screen\",defaultValue:true,description:\"On a phone the bar shrinks to cover, title and play, and a chevron opens the full-screen player — swipeable covers, the full transport, the waveform, like, buy and the menu. Off keeps everything crowded into the bar.\"},bar:playerSurfaceControls,text:playerTextControls,controls:playerControlControls,wave:{...waveTokenControls,description:\"The same waveform settings the track list uses. Bar mode reads the height and the two colours and ignores the rest.\"},previewTrack:{type:ControlType.Boolean,title:\"Preview Track\",defaultValue:true,description:\"Canvas only: nothing is playing there, so a demo track stands in and the bar can be styled.\"},previewFullscreen:{type:ControlType.Boolean,title:\"Preview Full Screen\",defaultValue:false,hidden:props=>props.fullscreen===false,description:\"Canvas only: renders the full-screen player under the bar so it can be styled without a phone in hand.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"PlayerLayout\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeePlayerBar\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport{inCart}from\"https://framerusercontent.com/modules/ZkH7fJxhmqZcrglWy6e9/jg1afezs6T1tddWBHcwP/cart.js\";export function formatLicenseValue(n){if(n==null)return\"—\";if(n===-1)return\"Unlimited\";if(n>=1e6)return`${(n/1e6).toFixed(n%1e6===0?0:1)}M`;if(n>=1e3)return`${(n/1e3).toFixed(n%1e3===0?0:1)}K`;return String(n);}export function formatLicenseFiles(files){const parts=[];if(files.mp3)parts.push(\"MP3\");if(files.wav)parts.push(\"WAV\");if(files.stems)parts.push(\"Stems\");return parts.join(\" + \");}export function resolveLicenseVariant(lic){if(lic.offersOnly)return\"OffersOnly\";if(lic.exclusive)return\"Exclusive\";if(lic.highlight)return\"Highlighted\";return\"Default\";}export function resolveDefaultLicense(licenses,entityId){const inCartItem=entityId?licenses.find(l=>inCart(entityId,l.id)):undefined;return inCartItem??licenses.find(l=>l.highlight)??licenses[0];}\nexport const __FramerMetadata__ = {\"exports\":{\"resolveLicenseVariant\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"formatLicenseFiles\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveDefaultLicense\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"formatLicenseValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport{getEntity}from\"https://framerusercontent.com/modules/Fa9rFJN2rq85gl2rXBgV/AVjJVDZFaBnNLsPAn8ph/entities.js\";import{canAddToCart as canEntityAddToCart}from\"https://framerusercontent.com/modules/SS5orfCMcKgfbITH48SC/eC2z6QlmsUuqPjh2EMil/entity_capabilities.js\";export function getLicensePermissions(entityId,licenseId){const entity=entityId?getEntity(entityId):undefined;const licenses=entity&&\"licenses\"in entity?entity.licenses:[];const license=licenseId?licenses.find(l=>l.id===licenseId):undefined;const entityOffers=entity&&\"offers\"in entity?!!entity.offers:false;const entityCanAddToCart=canEntityAddToCart(entity);return{canAddToCart:entityCanAddToCart&&!!license&&!license.offersOnly,canOffer:!!license&&entityOffers&&license.offers};}\nexport const __FramerMetadata__ = {\"exports\":{\"getLicensePermissions\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./license_permissions.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport*as React from\"react\";const OverlayEntityContext=/*#__PURE__*/React.createContext(null);export const OverlayEntityProvider=OverlayEntityContext.Provider;export function useOverlayEntityContext(){return React.useContext(OverlayEntityContext);}\nexport const __FramerMetadata__ = {\"exports\":{\"OverlayEntityProvider\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"OverlayEntityContextValue\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOverlayEntityContext\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./overlay_entity_context.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport{createExternalStore}from\"https://framerusercontent.com/modules/UH4WTHe23jjVFZ4QN9aB/pXMXEE6fEy1994ZzJknr/create_store.js\";const _store=createExternalStore({amount:\"\",message:\"\",status:\"idle\",errorMessage:\"\"});export const useOfferStore=_store.useStore;export function setOfferAmount(amount){_store.setState({amount});}export function setOfferMessage(message){_store.setState({message});}export function setOfferStatus(status,errorMessage=\"\"){_store.setState({status,errorMessage});}export function resetOffer(){_store.setState({amount:\"\",message:\"\",status:\"idle\",errorMessage:\"\"});}export function getOfferState(){return _store.getState();}\nexport const __FramerMetadata__ = {\"exports\":{\"OfferStoreState\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setOfferMessage\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getOfferState\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setOfferAmount\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resetOffer\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setOfferStatus\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOfferStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./offer.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n/**\n * Parses a Framer-provided license/entity id (number or string) into a positive\n * integer, or null when it is empty/invalid.\n *\n * License selection itself no longer lives in a global store: it is owned by\n * SoundeeOverlayEntityState as local state and published via OverlayEntityContext.\n * This module only keeps the shared id parser used across license components.\n */export function parseOptionalLicenseNumber(value){if(typeof value===\"number\"){return Number.isFinite(value)&&value>0?value:null;}if(typeof value!==\"string\")return null;const parsed=parseInt(value,10);return Number.isFinite(parsed)&&parsed>0?parsed:null;}\nexport const __FramerMetadata__ = {\"exports\":{\"parseOptionalLicenseNumber\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./license_selection.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\nimport*as React from\"react\";import{useOverlayEntityContext}from\"https://framerusercontent.com/modules/0RonYXaFPmxeltEwENiI/Qgi8aVD0Dh8RRtwbGsvT/overlay_entity_context.js\";import{useOfferStore,getOfferState,setOfferStatus}from\"https://framerusercontent.com/modules/lUywu5LgsP5KMOAeYWuN/kDOm8yiEoPUojunzIYS3/offer.js\";import{getEntity}from\"https://framerusercontent.com/modules/Fa9rFJN2rq85gl2rXBgV/AVjJVDZFaBnNLsPAn8ph/entities.js\";import{useSessionStore}from\"https://framerusercontent.com/modules/Z0KLFt0cNobZoDQYzrLW/7QZObf132AnTW9nAUMEU/session.js\";import{parseOptionalLicenseNumber}from\"https://framerusercontent.com/modules/3ZI93L89JEWVFfs5mT5l/Kw2V4hu6zPy5GR9gdOQe/license_selection.js\";import{resolveFramerEntityID}from\"https://framerusercontent.com/modules/KBFG7rL6zUCLBgAUcXJM/dMW3anX1IrVEjpQUC5bZ/entity_id.js\";import{apiPost}from\"https://framerusercontent.com/modules/2cqxRgmIE8CaH8oMSLJI/Xc2VTih7dteQqDikr6wz/client.js\";import{getLicensePermissions}from\"https://framerusercontent.com/modules/Lci5PFsZ9gAAR0YguSpN/YUpfNllKisiO9uwXVBZ4/license_permissions.js\";import{AUTH_OVERLAY,openSoundeeOverlay}from\"https://framerusercontent.com/modules/JWE25h6PrJ9N8RSe2d8l/rwQ7b5YTPb3c7KuBqZJd/open_overlay.js\";import{hasSoundeeModals}from\"https://framerusercontent.com/modules/0GpgGzS00VxJis3gSiB4/xQvXV8rHdeXnAzSd0ksq/registry.js\";import{requestSoundeeAuth}from\"https://framerusercontent.com/modules/WO1OkTRlQ7Ujgw4kWkqW/CfsiFGnaWgQ1QvOs342E/auth_state.js\";function resolveVariant(status){if(status===\"loading\")return\"Loading\";if(status===\"success\")return\"Success\";if(status===\"error\")return\"Error\";return\"Default\";}export function useOfferSubmit(options={}){const overlay=useOverlayEntityContext();const offer=useOfferStore();const session=useSessionStore();const{entityID,entityId,licenseID,onSuccess,onError}=options;const resolvedEntityID=resolveFramerEntityID(entityID,entityId)??overlay?.entityId??null;const resolvedLicenseID=parseOptionalLicenseNumber(licenseID)??overlay?.selectedLicenseId??null;const entity=resolvedEntityID?getEntity(resolvedEntityID):undefined;const trackId=entity&&\"trackId\"in entity?entity.trackId:null;const licenseId=resolvedLicenseID;const minOfferAmount=entity&&\"licenses\"in entity?entity.licenses.find(l=>l.id===licenseId)?.minOfferAmount??0:0;const{canOffer}=getLicensePermissions(resolvedEntityID,licenseId);const variant=resolveVariant(offer.status);const handleClick=React.useCallback(async()=>{if(offer.status===\"loading\"||offer.status===\"success\")return;if(session.isLoading){setOfferStatus(\"error\",\"Please wait while your session loads\");onError?.();return;}// An offer on an anonymous session is refused server-side, so asking\n// is better than reporting. Same ladder as the heart: the built-in\n// panel resolves and the offer carries on, a producer's own overlay\n// named \"auth\" takes over where the panel is not placed, and only with\n// neither of those does this fall back to saying so.\nif(!session.isLoggedIn){if(hasSoundeeModals()){const signedIn=await requestSoundeeAuth();if(!signedIn)return;}else if(openSoundeeOverlay({name:AUTH_OVERLAY})){return;}else{setOfferStatus(\"error\",\"Please log in to make an offer\");onError?.();return;}}if(!trackId||!licenseId){setOfferStatus(\"error\",\"Missing track or license\");onError?.();return;}if(!canOffer){setOfferStatus(\"error\",\"Offers are not available for this license\");onError?.();return;}const{amount,message}=getOfferState();const numAmount=Number(amount.trim().replace(\",\",\".\"));if(!Number.isFinite(numAmount)||numAmount<=0){setOfferStatus(\"error\",\"Please enter an amount\");onError?.();return;}if(minOfferAmount>0&&numAmount<minOfferAmount){setOfferStatus(\"error\",`Minimum offer is $${minOfferAmount}`);onError?.();return;}setOfferStatus(\"loading\");try{await apiPost(\"/me/negotiations\",{trackId:Number(trackId),licenseId:Number(licenseId),amount:numAmount,...message.trim()?{message:message.trim()}:{}});setOfferStatus(\"success\");onSuccess?.();}catch(err){setOfferStatus(\"error\",err?.message??\"Something went wrong\");onError?.();}},[canOffer,licenseId,minOfferAmount,onError,onSuccess,offer.status,session.isLoading,session.isLoggedIn,trackId]);return{variant,onClick:handleClick,canOffer,// Signed out is deliberately *not* disabled: the click is what opens\n// the sign-in, and a greyed-out button gives a visitor nothing to press\n// and no reason why. `userIsLoggedIn` is still published for anyone who\n// wants to label the button differently.\ndisabled:session.isLoading||!canOffer||!trackId||!licenseId||offer.status===\"loading\"||offer.status===\"success\",userIsLoggedIn:session.isLoggedIn,sessionIsLoading:session.isLoading,loading:offer.status===\"loading\",success:offer.status===\"success\",hasError:offer.status===\"error\",errorMessage:offer.errorMessage};}\nexport const __FramerMetadata__ = {\"exports\":{\"useOfferSubmit\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{AnimatePresence,motion}from\"framer-motion\";import{getEntity}from\"https://framerusercontent.com/modules/Fa9rFJN2rq85gl2rXBgV/AVjJVDZFaBnNLsPAn8ph/entities.js\";import{addToCart,inCart,openCart,useCartStore}from\"https://framerusercontent.com/modules/ZkH7fJxhmqZcrglWy6e9/jg1afezs6T1tddWBHcwP/cart.js\";import{closeModal,useModalStore}from\"https://framerusercontent.com/modules/GWfspgjtCDM1TzNhU8zZ/qqg4ghGDLDMPIKD53Sop/modal.js\";import{useSessionStore}from\"https://framerusercontent.com/modules/Z0KLFt0cNobZoDQYzrLW/7QZObf132AnTW9nAUMEU/session.js\";import{requestSoundeeAuth}from\"https://framerusercontent.com/modules/WO1OkTRlQ7Ujgw4kWkqW/CfsiFGnaWgQ1QvOs342E/auth_state.js\";import{useStoreCurrency}from\"https://framerusercontent.com/modules/W0ZcNXEfQdPU6fsCwczm/6uJWn6X1lzsnoy33dN8O/currency.js\";import{resolveDefaultLicense}from\"https://framerusercontent.com/modules/IK7dcSFOeL2aX0wC7LZi/qMhXdDAZQTV7YoK6VM1a/license_format.js\";import{getLicensePermissions}from\"https://framerusercontent.com/modules/Lci5PFsZ9gAAR0YguSpN/YUpfNllKisiO9uwXVBZ4/license_permissions.js\";import{useOfferSubmit}from\"https://framerusercontent.com/modules/1dlBFzaE3vwuuMyF4oHX/I2ZWRe65YTAq0prZCjoq/offer_submit.js\";import{resetOffer,setOfferAmount,setOfferMessage,useOfferStore}from\"https://framerusercontent.com/modules/lUywu5LgsP5KMOAeYWuN/kDOm8yiEoPUojunzIYS3/offer.js\";import{formatPrice}from\"https://framerusercontent.com/modules/XqjS6RmB7bMfpSFcXWq7/Oim1PnSjexxaxkFS6DgJ/format.js\";import{SoundeeDialog}from\"https://framerusercontent.com/modules/O60C240xSqPv1FtQHfho/b7n5E3JqZkPRnWfzfUgL/SoundeeDialog.js\";import{HoverButton,buttonStyles,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";function formatFiles(files){const parts=[];if(files?.mp3)parts.push(\"MP3\");if(files?.wav)parts.push(\"WAV\");if(files?.stems)parts.push(\"Stems\");return parts.join(\" + \");}function Badge({theme,subtle=false,children}){return /*#__PURE__*/_jsx(\"span\",{style:{flexShrink:0,padding:\"3px 8px\",borderRadius:6,// A tint rather than a solid fill: a badge next to the licence\n// name should label it, not compete with the price for the\n// loudest thing in the row.\nbackground:subtle?\"transparent\":`color-mix(in srgb, ${theme.accent} 16%, transparent)`,border:subtle?`1px solid ${theme.border}`:`1px solid color-mix(in srgb, ${theme.accent} 32%, transparent)`,color:subtle?theme.textSecondary:theme.accent,whiteSpace:\"nowrap\",fontSize:10,fontWeight:600,letterSpacing:\"0.06em\",textTransform:\"uppercase\",lineHeight:1.5},children:children});}function countLabel(n){return n>0?n.toLocaleString(\"en-US\"):\"Unlimited\";}function licenseFeatures(license){return[{text:\"Receive files immediately after purchase\",allowed:true},// The thing an exclusive actually buys is the *removal* of everyone\n// else — that is the difference worth paying for, and it is the one\n// term the numbered limits below cannot express.\n...license.exclusive?[{text:\"You own the beat — it is taken off sale for everyone else\",allowed:true}]:[],{text:license.distribution!==0?`Distribute up to ${countLabel(license.distribution)} cop${license.distribution===1?\"y\":\"ies\"}`:\"No distribution allowed\",allowed:license.distribution!==0},{text:license.streams!==0?`${countLabel(license.streams)} online audio stream${license.streams===1?\"\":\"s\"}`:\"No online audio streams allowed\",allowed:license.streams!==0},{text:license.musicVideos!==0?`${countLabel(license.musicVideos)} music video${license.musicVideos===1?\"\":\"s\"}`:\"No music videos allowed\",allowed:license.musicVideos!==0},{text:license.performances!==0?`${countLabel(license.performances)} paid performance${license.performances===1?\"\":\"s\"}`:\"No paid performances allowed\",allowed:license.performances!==0},{text:license.broadcasting?`Radio broadcasting allowed (${license.radioStations===-1?\"Unlimited\":license.radioStations.toLocaleString(\"en-US\")})`:\"No radio broadcasting allowed\",allowed:!!license.broadcasting}];}/**\n * Built-in license picker, opened by add-to-cart when an entity has licenses\n * and no license was preselected.\n *\n * Selection defaults come from `resolveDefaultLicense` rather than a rule\n * restated here: cart line first, then the highlighted license, then the first.\n * The designed-overlay path uses the same helper, so both agree on what is\n * preselected.\n */export function LicensePicker({theme,sheet}){const modal=useModalStore();const session=useSessionStore();// Subscribing keeps the \"in cart\" state on the button honest.\nuseCartStore();const isOpen=modal.activeModal===\"license\";const entityId=modal.entityId;const entity=entityId?getEntity(entityId):undefined;const licenses=entity&&\"licenses\"in entity?entity.licenses??[]:[];// Store currency, not the visitor's country currency — see\n// `useStoreCurrency`.\nconst{symbol:currency}=useStoreCurrency();const[selectedId,setSelectedId]=React.useState(null);const[pending,setPending]=React.useState(false);// Two steps in one panel rather than a second modal: the offer is about the\n// license just selected, so sending the visitor somewhere else loses that.\nconst[view,setView]=React.useState(\"licenses\");// Terms stay closed. The list is a price comparison first; the rights are\n// the detail you go looking for once you have narrowed it down.\nconst[showTerms,setShowTerms]=React.useState(false);// Re-seed whenever a different entity opens, not on every render: a change\n// of selection must not be undone by the next store update.\nReact.useEffect(()=>{if(!isOpen||!entityId)return;const fallback=modal.selectedLicenseId??resolveDefaultLicense(licenses,entityId)?.id??licenses[0]?.id??null;setSelectedId(fallback);setPending(false);setView(\"licenses\");setShowTerms(false);resetOffer();// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isOpen,entityId]);const selected=licenses.find(l=>l.id===selectedId)??null;// Per license, not per entity: a track can sell some licenses outright and\n// take offers only on the exclusive. Uses the shared resolver so the picker\n// and the designed overlay agree on what each license allows.\nconst permissions=getLicensePermissions(entityId,selectedId);const offer=useOfferStore();const offerSubmit=useOfferSubmit({entityID:entityId,licenseID:selectedId});async function handleAdd(){if(!entityId||!selected||pending)return;setPending(true);try{const item=await addToCart(entityId,selected.id);if(item){closeModal();openCart();}}finally{setPending(false);}}const alreadyInCart=!!entityId&&!!selected&&inCart(entityId,selected.id);// Shared with every other CTA in the project, hover included — see\n// `lib/ui/hover_button.tsx` for why these are not written out per modal.\nconst buttons=buttonStyles(theme);const inputStyle={width:\"100%\",boxSizing:\"border-box\",padding:\"12px 14px\",borderRadius:Math.min(theme.radius,12),border:`1px solid ${theme.border}`,background:theme.inputFill,color:theme.textPrimary,outline:\"none\",...theme.fontBody};const isSignedIn=session.isLoggedIn&&!!session.user;/**\n     * Ask for the sign-in before the form, not after it.\n     *\n     * An offer is worthless on an anonymous session — the submit is refused\n     * server-side — so the old flow let a visitor pick an amount, write a\n     * message, press send and only then read \"please log in\". Same rule as the\n     * heart: ask up front, and resume what they actually asked for once they\n     * are in. Dismissing the panel leaves them on the licenses, where they\n     * started.\n     *\n     * No `hasSoundeeModals` check here, unlike the like button: this panel is\n     * one of those modals, so if it is on screen they are placed.\n     */const openOffer=React.useCallback(async()=>{if(!isSignedIn){const signedIn=await requestSoundeeAuth();if(!signedIn)return;}setView(\"offer\");},[isSignedIn]);const minAmount=selected?.minOfferAmount??0;// One dialog, two sets of children. Two dialogs would unmount and remount\n// on the step change, so AnimatePresence would play a full close and open\n// instead of letting `layout` morph the height between the steps.\nconst offerContent=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{style:{padding:`${theme.padding}px ${theme.padding+36}px ${theme.padding}px ${theme.padding}px`,borderBottom:`1px solid ${theme.border}`,flexShrink:0,display:\"flex\",flexDirection:\"column\",gap:6},children:[/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.textSecondary,textTransform:\"uppercase\",letterSpacing:\"0.08em\",fontSize:11,lineHeight:1},children:\"Make an offer\"}),/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontHeading,color:theme.textPrimary,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:selected?.name})]}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:1,minHeight:0,overflowY:\"auto\",padding:theme.padding,display:\"flex\",flexDirection:\"column\",gap:14},children:[/*#__PURE__*/_jsxs(\"label\",{style:{display:\"flex\",flexDirection:\"column\",gap:6},children:[/*#__PURE__*/_jsxs(\"span\",{style:{...theme.fontBody,color:theme.textSecondary},children:[\"Your offer\",minAmount>0&&/*#__PURE__*/_jsx(\"span\",{style:{color:theme.textSecondary},children:` \\u00b7 minimum ${formatPrice(minAmount,currency)}`})]}),/*#__PURE__*/_jsxs(\"span\",{style:{position:\"relative\",display:\"block\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",left:14,top:\"50%\",transform:\"translateY(-50%)\",pointerEvents:\"none\",color:theme.textSecondary,...theme.fontHeading},children:currency}),/*#__PURE__*/_jsx(\"input\",{type:\"text\",inputMode:\"decimal\",value:offer.amount,onChange:e=>setOfferAmount(e.target.value),placeholder:minAmount>0?String(minAmount):\"0\",style:{...inputStyle,paddingLeft:14+18,height:56,...theme.fontHeading}})]})]}),/*#__PURE__*/_jsxs(\"label\",{style:{display:\"flex\",flexDirection:\"column\",gap:6},children:[/*#__PURE__*/_jsxs(\"span\",{style:{...theme.fontBody,color:theme.textSecondary},children:[\"Message \",/*#__PURE__*/_jsx(\"span\",{style:{opacity:.7},children:\"(optional)\"})]}),/*#__PURE__*/_jsx(\"textarea\",{value:offer.message,onChange:e=>setOfferMessage(e.target.value),placeholder:\"Tell the producer what you have in mind\",rows:3,style:{...inputStyle,resize:\"vertical\"}})]}),offer.status===\"error\"&&offer.errorMessage&&/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.danger,padding:\"10px 12px\",borderRadius:Math.min(theme.radius,10),background:tint(theme.danger,10)},children:offer.errorMessage}),offer.status===\"success\"&&/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.success,padding:\"10px 12px\",borderRadius:Math.min(theme.radius,10),background:tint(theme.success,10)},children:\"Offer sent. The producer will be in touch.\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:theme.padding,borderTop:`1px solid ${theme.border}`,flexShrink:0,display:\"flex\",flexDirection:\"column\",gap:8},children:[/*#__PURE__*/_jsx(HoverButton,{onClick:offerSubmit.onClick,disabled:offerSubmit.disabled,hoverStyle:buttons.primary.hoverStyle,activeStyle:buttons.primary.activeStyle,style:{...buttons.primary.style,opacity:offerSubmit.disabled?.6:1,cursor:offerSubmit.disabled?\"default\":\"pointer\"},children:offer.status===\"loading\"?\"Sending…\":offer.status===\"success\"?\"Sent\":\"Send offer\"}),/*#__PURE__*/_jsx(HoverButton,{onClick:()=>setView(\"licenses\"),...buttons.secondary,children:\"Back to licenses\"})]})]});const licenseContent=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:14,// Right padding is the designer's value plus room for the\n// shell's close button, so the title can never run under it\n// however tight they set the padding.\npadding:`${theme.padding}px ${theme.padding+36}px ${theme.padding}px ${theme.padding}px`,borderBottom:`1px solid ${theme.border}`,flexShrink:0},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:52,height:52,flexShrink:0,borderRadius:Math.min(theme.radius,10),overflow:\"hidden\",background:entity?.artworkColor||theme.border},children:entity?.artworkUrlSmall&&/*#__PURE__*/_jsx(\"img\",{src:entity.artworkUrlSmall,alt:\"\",loading:\"lazy\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\"}})}),/*#__PURE__*/_jsxs(\"div\",{style:{minWidth:0,display:\"flex\",flexDirection:\"column\",gap:6},children:[/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.textSecondary,textTransform:\"uppercase\",letterSpacing:\"0.08em\",fontSize:11,lineHeight:1},children:\"Choose a license\"}),/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontHeading,color:theme.textPrimary,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:entity?.title??\"This track\"})]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{// The list scrolls, the header and footer do not — a long\n// licence list must never push the buy button off screen.\nflex:1,minHeight:0,overflowY:\"auto\",padding:theme.padding,display:\"flex\",flexDirection:\"column\",gap:10},children:[licenses.length===0&&/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.textSecondary,padding:12},children:\"No licenses available for this track.\"}),licenses.map(license=>{const active=license.id===selectedId;// The producer's own pick. `resolveDefaultLicense` already\n// preselects it, so showing it explains why this row starts\n// selected instead of leaving that unexplained.\nconst highlighted=license.highlight;// Only the selected row expands. A grid of numbers under\n// every tier turns the list into a spec sheet you have to\n// scroll; under the one you picked it is the detail you\n// actually wanted.\nconst features=licenseFeatures(license);const files=formatFiles(license.files);return /*#__PURE__*/_jsxs(\"button\",{onClick:()=>{setSelectedId(license.id);// Picking a different tier closes the terms:\n// they described the previous one.\nif(license.id!==selectedId)setShowTerms(false);},\"aria-pressed\":active,style:{display:\"block\",width:\"100%\",padding:14,borderRadius:Math.min(theme.radius,12),// Selection reads as a ring, not a 1px colour\n// change — at a glance you should never have to\n// hunt for which tier you are buying.\nborder:`1px solid ${active?theme.accent:theme.border}`,boxShadow:active?`0 0 0 1px ${theme.accent} inset`:\"none\",background:active?\"rgba(255,255,255,0.06)\":highlighted?\"rgba(255,255,255,0.03)\":\"transparent\",color:theme.textPrimary,cursor:\"pointer\",textAlign:\"left\"},children:[/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",alignItems:\"center\",gap:12},children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:18,height:18,flexShrink:0,borderRadius:999,border:`1px solid ${active?theme.accent:theme.border}`,background:active?theme.accent:\"transparent\"},children:active&&/*#__PURE__*/_jsx(SoundeeIcon,{name:\"check\",size:10,strokeWidth:3.5,style:{color:theme.accentText}})}),/*#__PURE__*/_jsxs(\"span\",{style:{flex:1,minWidth:0,display:\"flex\",flexDirection:\"column\",gap:4},children:[/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",alignItems:\"center\",gap:8,minWidth:0,...theme.fontTitle},children:[/*#__PURE__*/_jsx(\"span\",{style:{overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:license.name}),highlighted&&/*#__PURE__*/_jsx(Badge,{theme:theme,children:\"Recommended\"}),license.exclusive&&/*#__PURE__*/_jsx(Badge,{theme:theme,subtle:true,children:\"Exclusive\"})]}),files&&/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",...theme.fontBody,color:theme.textSecondary},children:files})]}),/*#__PURE__*/_jsx(\"span\",{style:{flexShrink:0,...theme.fontTitle,color:active?theme.accent:theme.textPrimary},children:license.offersOnly?\"Offer\":formatPrice(license.price,currency)})]}),/*#__PURE__*/_jsx(AnimatePresence,{initial:false,children:features.length>0&&active&&/*#__PURE__*/_jsx(motion.span,{initial:{height:0,opacity:0},animate:{height:\"auto\",opacity:1},exit:{height:0,opacity:0},transition:theme.transition,style:{display:\"block\",overflow:\"hidden\"},children:/*#__PURE__*/_jsxs(\"span\",{onClick:event=>{event.stopPropagation();setShowTerms(prev=>!prev);},role:\"button\",tabIndex:0,style:{display:\"inline-flex\",alignItems:\"center\",gap:6,marginTop:10,marginLeft:30,color:theme.textSecondary,cursor:\"pointer\",...theme.fontBody,fontSize:12},children:[showTerms?\"Hide terms\":\"View terms\",/*#__PURE__*/_jsx(SoundeeIcon,{name:\"chevronDown\",size:12,strokeWidth:2.5,style:{transform:showTerms?\"rotate(180deg)\":\"none\",transition:\"transform 150ms ease\"}})]})})}),/*#__PURE__*/_jsx(AnimatePresence,{initial:false,children:features.length>0&&active&&showTerms&&// Animating real height rather than Motion's\n// `layout` projection: projection scales the\n// box, which stretches the text and rounds the\n// border while it moves. Height keeps every\n// glyph its own size.\n/*#__PURE__*/_jsx(motion.span,{initial:{height:0,opacity:0},animate:{height:\"auto\",opacity:1},exit:{height:0,opacity:0},transition:theme.transition,style:{display:\"block\",overflow:\"hidden\",marginLeft:30},children:/*#__PURE__*/_jsx(\"span\",{style:{display:\"flex\",flexDirection:\"column\",gap:8,marginTop:10,paddingTop:10,borderTop:`1px solid ${theme.border}`},children:features.map(feature=>/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",alignItems:\"flex-start\",gap:8,...theme.fontBody,color:feature.allowed?theme.textPrimary:theme.textSecondary},children:[/*#__PURE__*/_jsx(SoundeeIcon,{name:feature.allowed?\"check\":\"close\",size:14,strokeWidth:2.5,style:{marginTop:2,color:feature.allowed?theme.accent:theme.textSecondary}}),feature.text]},feature.text))})})})]},license.id);})]}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:theme.padding,borderTop:`1px solid ${theme.border}`,flexShrink:0,display:\"flex\",flexDirection:\"column\",gap:8},children:[permissions.canAddToCart&&/*#__PURE__*/_jsx(HoverButton,{onClick:handleAdd,disabled:!selected||pending||alreadyInCart,hoverStyle:buttons.primary.hoverStyle,activeStyle:buttons.primary.activeStyle,style:{...buttons.primary.style,opacity:!selected||pending?.6:1,cursor:!selected||pending||alreadyInCart?\"default\":\"pointer\"},children:alreadyInCart?\"In cart\":pending?\"Adding…\":selected?`Add to cart \\u2014 ${formatPrice(selected.price,currency)}`:\"Select a license\"}),permissions.canOffer&&/*#__PURE__*/_jsx(HoverButton,{onClick:openOffer,...permissions.canAddToCart?buttons.secondary:buttons.primary,children:\"Make an offer\"}),!permissions.canAddToCart&&!permissions.canOffer&&/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.textSecondary,textAlign:\"center\"},children:selected?\"This license is not available right now.\":\"Select a license\"})]})]});return /*#__PURE__*/_jsx(SoundeeDialog,{open:isOpen,onOpenChange:next=>{if(!next)closeModal();},theme:theme,sheet:sheet,label:view===\"offer\"?\"Make an offer\":\"Choose a license\",children:view===\"offer\"?offerContent:licenseContent});}\nexport const __FramerMetadata__ = {\"exports\":{\"LicensePicker\":{\"type\":\"reactComponent\",\"name\":\"LicensePicker\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport{apiGet,apiPost}from\"https://framerusercontent.com/modules/2cqxRgmIE8CaH8oMSLJI/Xc2VTih7dteQqDikr6wz/client.js\";const START_CACHE_TTL=5*60*1e3;let countriesPromise=null;const startCache=new Map;function getStartCacheKey(config,entityId){return`${config.baseUrl.replace(/\\/$/,\"\")}:${entityId}`;}export async function startDemoDownload(config,entityId){const key=getStartCacheKey(config,entityId);const cached=startCache.get(key);const now=Date.now();if(cached&&cached.expiresAt>now)return cached.promise;const promise=apiGet(config,`/freedl/track/${entityId}`).then(res=>res.response.data).catch(error=>{startCache.delete(key);throw error;});startCache.set(key,{expiresAt:now+START_CACHE_TTL,promise});return promise;}export async function submitDemoDownloadEmail(config,entityId,payload){await apiPost(`/freedl/track/${entityId}/email`,payload,config);}export async function fetchCountries(config){if(countriesPromise)return countriesPromise;countriesPromise=apiGet(config,\"/assets/countries.json\").then(res=>res.response.data).catch(error=>{countriesPromise=null;throw error;});return countriesPromise;}\nexport const __FramerMetadata__ = {\"exports\":{\"DemoDownloadEmailPayload\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DemoDownloadAccount\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DemoDownloadStartResult\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Country\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fetchCountries\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"submitDemoDownloadEmail\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"startDemoDownload\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DemoDownloadExchange\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./demo_download.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport{createExternalStore}from\"https://framerusercontent.com/modules/UH4WTHe23jjVFZ4QN9aB/pXMXEE6fEy1994ZzJknr/create_store.js\";import{startDemoDownload as startDemoDownloadRequest,submitDemoDownloadEmail as submitDemoDownloadEmailRequest}from\"https://framerusercontent.com/modules/mDAn5Njqkc7ii6fMHcnq/tOJ7FEojW3ktSeH1gkCN/demo_download.js\";import{closeModal,getModalState}from\"https://framerusercontent.com/modules/GWfspgjtCDM1TzNhU8zZ/qqg4ghGDLDMPIKD53Sop/modal.js\";const EMPTY_STATE={status:\"idle\",modalType:null,activeEntityId:null,requestId:0,accounts:[],errorMessage:\"\",downloadUrl:\"\",popup:{isOpen:false,url:\"\",entityId:null}};const _store=createExternalStore(EMPTY_STATE);let nextRequestId=0;export const useDemoDownloadStore=_store.useStore;function patch(partial){_store.setState(partial);}function getActiveDownloadEntityId(){const download=_store.getState();if(download.activeEntityId)return download.activeEntityId;const modal=getModalState();if(modal.activeModal!==\"download\")return null;return modal.entityId;}function normalizeDownloadUrl(url){return new URL(url,\"https://soundee.com\").toString();}function startBrowserDownload(url){if(typeof window===\"undefined\")return;window.location.href=normalizeDownloadUrl(url);}export function resetDemoDownload(){_store.setState({...EMPTY_STATE});}export function closeDemoDownloadModal(){resetDemoDownload();closeModal();}export async function startDemoDownload({baseUrl,entityId}){if(!entityId)return;const requestId=++nextRequestId;patch({status:\"loading\",modalType:\"loading\",activeEntityId:entityId,requestId,accounts:[],errorMessage:\"\",downloadUrl:\"\",popup:{isOpen:false,url:\"\",entityId:null}});try{const result=await startDemoDownloadRequest({baseUrl},entityId);const current=_store.getState();if(current.requestId!==requestId||current.activeEntityId!==entityId){return;}if(\"url\"in result&&result.url){patch({status:\"success\",modalType:\"direct-success\",downloadUrl:result.url});startBrowserDownload(result.url);return;}if(result.exchange===\"email\"||result.exchange===\"social\"){patch({status:\"idle\",modalType:\"email\",accounts:[]});return;}throw new Error(\"Invalid download response\");}catch(error){const current=_store.getState();if(current.requestId!==requestId||current.activeEntityId!==entityId){return;}patch({status:\"error\",modalType:\"error\",errorMessage:error?.message??\"Could not start download\"});}}export async function submitDemoDownloadEmail(baseUrl,payload){const entityId=getActiveDownloadEntityId();if(!entityId)return;patch({status:\"loading\",errorMessage:\"\"});try{await submitDemoDownloadEmailRequest({baseUrl},entityId,payload);patch({status:\"success\",modalType:\"email-success\"});}catch(error){patch({status:\"error\",modalType:\"email\",errorMessage:error?.message??\"Could not submit download form\"});}}export function startSocialExchange(baseUrl,platformUrl){void baseUrl;void platformUrl;patch({status:\"idle\",modalType:\"email\",accounts:[],errorMessage:\"\",popup:{isOpen:false,url:\"\",entityId:null}});}\nexport const __FramerMetadata__ = {\"exports\":{\"DemoDownloadStatus\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"startDemoDownload\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DemoDownloadModalType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resetDemoDownload\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"closeDemoDownloadModal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DemoDownloadStoreState\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"submitDemoDownloadEmail\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"startSocialExchange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useDemoDownloadStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./demo_download.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{getEntity}from\"https://framerusercontent.com/modules/Fa9rFJN2rq85gl2rXBgV/AVjJVDZFaBnNLsPAn8ph/entities.js\";import{canAddToCart}from\"https://framerusercontent.com/modules/SS5orfCMcKgfbITH48SC/eC2z6QlmsUuqPjh2EMil/entity_capabilities.js\";import{closeModal,openModal,useModalStore}from\"https://framerusercontent.com/modules/GWfspgjtCDM1TzNhU8zZ/qqg4ghGDLDMPIKD53Sop/modal.js\";import{useSessionStore}from\"https://framerusercontent.com/modules/Z0KLFt0cNobZoDQYzrLW/7QZObf132AnTW9nAUMEU/session.js\";import{useStoreCurrency}from\"https://framerusercontent.com/modules/W0ZcNXEfQdPU6fsCwczm/6uJWn6X1lzsnoy33dN8O/currency.js\";import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";import{getRequirePhoneForFreeDownload}from\"https://framerusercontent.com/modules/1C0GagjgfuDFRJ9FgBvQ/vA2eEs3TA2I41S4tjUXn/propage_config.js\";import{fetchCountries}from\"https://framerusercontent.com/modules/xn26h5NrAzVgK1g1mCEf/21ab4g2K45SW6vwCQhLk/countries.js\";import{closeDemoDownloadModal,resetDemoDownload,startDemoDownload,submitDemoDownloadEmail,useDemoDownloadStore}from\"https://framerusercontent.com/modules/cbDihm3Gn8O1oWAYyuyA/2FZeXrApAaLUzmQMbfgi/demo_download.js\";import{formatPrice}from\"https://framerusercontent.com/modules/XqjS6RmB7bMfpSFcXWq7/Oim1PnSjexxaxkFS6DgJ/format.js\";import{SoundeeDialog}from\"https://framerusercontent.com/modules/O60C240xSqPv1FtQHfho/b7n5E3JqZkPRnWfzfUgL/SoundeeDialog.js\";import{HoverButton,buttonStyles,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{Spinner}from\"https://framerusercontent.com/modules/2dz2LtfEPrHoRvnZYZTV/lYiqFZvueQpmdyXSqtMJ/loading.js\";import SoundeeArtwork from\"https://framerusercontent.com/modules/SvQ80p4cAsd88JPYWgze/Qq09ALzx6F4r8Yo3Oux8/SoundeeArtwork.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";const FIELD_ICONS={person:\"person\",mail:\"mail\",globe:\"globe\",phone:\"phone\",shield:\"shield\"};/**\n * An icon in the field rather than a label above it: the form is short and the\n * placeholders already name each field, so labels would only add height.\n *\n * Declared at module level, not inside the modal. A component defined in a\n * render body is a new type on every render, so React unmounts and remounts its\n * subtree — which destroyed the focused <input> after every keystroke and made\n * the form impossible to type into.\n */function Field({icon,children,color,grow=false}){return /*#__PURE__*/_jsxs(\"span\",{style:{position:\"relative\",display:\"block\",// Only inside a row. As a direct child of the form's column,\n// `flex: 1` grew the box to the leftover height and the icon —\n// centred on that box — dropped well below its input.\nflex:grow?\"1 1 0\":\"0 0 auto\",minWidth:0},children:[/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",left:14,top:\"50%\",transform:\"translateY(-50%)\",display:\"inline-flex\",pointerEvents:\"none\",color},\"aria-hidden\":true,children:icon}),children]});}/** Same reason as `Field`: module level, so the panel is not rebuilt per key. */function Header({eyebrow,title,entityId,artworkColor,theme}){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:14,padding:`${theme.padding}px ${theme.padding+36}px ${theme.padding}px ${theme.padding}px`,borderBottom:`1px solid ${theme.border}`,flexShrink:0},children:[/*#__PURE__*/_jsx(SoundeeArtwork,{entityID:entityId,imageSize:\"Small\",artworkColor:artworkColor,title:title,borderRadius:`${Math.min(theme.radius,10)}px`,loading:\"lazy\",style:{width:52,height:52,flexShrink:0}}),/*#__PURE__*/_jsxs(\"div\",{style:{minWidth:0,display:\"flex\",flexDirection:\"column\",gap:6},children:[/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.textSecondary,textTransform:\"uppercase\",letterSpacing:\"0.08em\",fontSize:11,lineHeight:1},children:eyebrow}),/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontHeading,color:theme.textPrimary,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:title})]})]});}/**\n * Built-in free-download modal.\n *\n * The flow is not ours to invent — `store/demo_download.tsx` already owns it and\n * decides between an instant download and a gated one, which is why this reads\n * `modalType` rather than tracking steps itself:\n *\n *   loading        → the server is deciding\n *   email          → this track is gated; collect details\n *   direct-success → no gate, the file is ready\n *   email-success  → details accepted, the link is on its way\n *   error          → something failed, with a way back\n */export function FreeDownload({theme,sheet}){const modal=useModalStore();const download=useDemoDownloadStore();const session=useSessionStore();const cfg=useSoundeeConfig();const isOpen=modal.activeModal===\"download\";const entityId=modal.entityId;const entity=entityId?getEntity(entityId):undefined;const startedRef=React.useRef(null);// Prefill from the session when we have it — a signed-in visitor should not\n// retype what Soundee already knows.\nconst[firstName,setFirstName]=React.useState(\"\");const[lastName,setLastName]=React.useState(\"\");const[email,setEmail]=React.useState(\"\");const[phone,setPhone]=React.useState(\"\");const[countryId,setCountryId]=React.useState(\"\");const[formError,setFormError]=React.useState(\"\");const[countries,setCountries]=React.useState([]);// The store owns this policy; the Framer side just follows it.\nconst[requirePhone,setRequirePhone]=React.useState(false);React.useEffect(()=>{if(!isOpen)return;let cancelled=false;fetchCountries().then(list=>{if(!cancelled)setCountries(list);});getRequirePhoneForFreeDownload(cfg.baseUrl,String(cfg.storeId)).then(required=>{if(!cancelled)setRequirePhone(required);});return()=>{cancelled=true;};},[isOpen,cfg.baseUrl,cfg.storeId]);React.useEffect(()=>{if(!isOpen||!entityId){startedRef.current=null;resetDemoDownload();return;}if(startedRef.current===entityId)return;startedRef.current=entityId;setFormError(\"\");setFirstName(session.user?.firstName??\"\");setLastName(session.user?.lastName??\"\");setEmail(session.user?.email??\"\");setPhone(session.user?.phone??\"\");setCountryId(String(session.user?.countryId??session.country?.id??\"\"));startDemoDownload({baseUrl:cfg.baseUrl,entityId});// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isOpen,entityId]);async function handleSubmit(event){event.preventDefault();setFormError(\"\");if(!firstName.trim()||!lastName.trim()){setFormError(\"Please fill in your name\");return;}// Deliberately loose: the server is the authority on what it accepts,\n// and a strict client-side pattern only ever rejects valid addresses.\nif(!email.includes(\"@\")){setFormError(\"Please enter a valid email address\");return;}if(requirePhone&&!phone.trim()){setFormError(\"Please enter your phone number\");return;}await submitDemoDownloadEmail(cfg.baseUrl,{firstName:firstName.trim(),lastName:lastName.trim(),email:email.trim(),...phone.trim()?{phone:phone.trim()}:{},...countryId?{countryId:Number(countryId)}:{}});}const inputStyle={width:\"100%\",boxSizing:\"border-box\",// An explicit height rather than padding alone: a <select> and an\n// <input> compute different intrinsic heights from the same padding,\n// which is why the country field sat shorter than the phone field.\nheight:48,padding:\"0 14px 0 42px\",borderRadius:Math.min(theme.radius,12),border:`1px solid ${theme.border}`,background:theme.inputFill,color:theme.textPrimary,outline:\"none\",...theme.fontBody};const buttons=buttonStyles(theme);const primaryButton=buttons.primary.style;const headerPadding=`${theme.padding}px ${theme.padding+36}px ${theme.padding}px ${theme.padding}px`;const{symbol:currency}=useStoreCurrency();const minPrice=entity?.minLicensePrice??entity?.price??null;const trackTitle=entity?.title??\"This track\";const type=download.modalType;const busy=download.status===\"loading\";let content=null;if(type===\"loading\"||!type&&isOpen){content=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Header,{eyebrow:\"Free download\",title:trackTitle,entityId:entityId,artworkColor:entity?.artworkColor,theme:theme}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:theme.padding*2,display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:12},children:[/*#__PURE__*/_jsx(Spinner,{color:theme.accent}),/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.textSecondary},children:\"Preparing your download…\"})]})]});}else if(type===\"email\"||type===\"social\"){content=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Header,{eyebrow:\"Almost there\",title:trackTitle,entityId:entityId,artworkColor:entity?.artworkColor,theme:theme}),/*#__PURE__*/_jsxs(\"form\",{onSubmit:handleSubmit,style:{flex:1,minHeight:0,overflowY:\"auto\",padding:theme.padding,display:\"flex\",flexDirection:\"column\",gap:12},children:[/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.textSecondary},children:\"Where should we send your download link?\"}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:10},children:[/*#__PURE__*/_jsx(Field,{grow:true,color:theme.textSecondary,icon:/*#__PURE__*/_jsx(SoundeeIcon,{name:FIELD_ICONS.person,size:16,strokeWidth:1.8}),children:/*#__PURE__*/_jsx(\"input\",{value:firstName,onChange:e=>setFirstName(e.target.value),placeholder:\"First name\",autoComplete:\"given-name\",style:inputStyle})}),/*#__PURE__*/_jsx(Field,{grow:true,color:theme.textSecondary,icon:/*#__PURE__*/_jsx(SoundeeIcon,{name:FIELD_ICONS.person,size:16,strokeWidth:1.8}),children:/*#__PURE__*/_jsx(\"input\",{value:lastName,onChange:e=>setLastName(e.target.value),placeholder:\"Last name\",autoComplete:\"family-name\",style:inputStyle})})]}),/*#__PURE__*/_jsx(Field,{color:theme.textSecondary,icon:/*#__PURE__*/_jsx(SoundeeIcon,{name:FIELD_ICONS.mail,size:16,strokeWidth:1.8}),children:/*#__PURE__*/_jsx(\"input\",{type:\"email\",value:email,onChange:e=>setEmail(e.target.value),placeholder:\"Email address\",autoComplete:\"email\",style:inputStyle})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:10},children:[/*#__PURE__*/_jsx(Field,{grow:true,color:theme.textSecondary,icon:/*#__PURE__*/_jsx(SoundeeIcon,{name:FIELD_ICONS.globe,size:16,strokeWidth:1.8}),children:/*#__PURE__*/_jsxs(\"select\",{value:countryId,onChange:e=>setCountryId(e.target.value),\"aria-label\":\"Country code\",style:{...inputStyle,// Room for the native chevron on the right.\npaddingRight:30,appearance:\"none\",cursor:\"pointer\"},children:[/*#__PURE__*/_jsx(\"option\",{value:\"\",children:\"Country\"}),countries.map(country=>/*#__PURE__*/_jsxs(\"option\",{value:country.id,children:[country.countryCode3,\" (\",country.dialCode,\")\"]},country.id))]})}),/*#__PURE__*/_jsx(\"span\",{style:{flex:1.6,display:\"block\"},children:/*#__PURE__*/_jsx(Field,{grow:true,color:theme.textSecondary,icon:/*#__PURE__*/_jsx(SoundeeIcon,{name:FIELD_ICONS.phone,size:16,strokeWidth:1.8}),children:/*#__PURE__*/_jsx(\"input\",{type:\"tel\",value:phone,onChange:e=>setPhone(e.target.value),placeholder:requirePhone?\"Phone number\":\"Phone number (optional)\",autoComplete:\"tel\",style:inputStyle})})})]}),(formError||download.errorMessage)&&/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.danger,padding:\"10px 12px\",borderRadius:Math.min(theme.radius,10),background:tint(theme.danger,10)},children:formError||download.errorMessage}),/*#__PURE__*/_jsxs(HoverButton,{type:\"submit\",disabled:busy,hoverStyle:buttons.primary.hoverStyle,activeStyle:buttons.primary.activeStyle,style:{...primaryButton,marginTop:4,gap:8,opacity:busy?.6:1,cursor:busy?\"default\":\"pointer\"},children:[busy?\"Sending…\":\"Get download\",!busy&&/*#__PURE__*/_jsx(SoundeeIcon,{name:\"arrowRight\",size:16,strokeWidth:2.2})]}),canAddToCart(entity)&&entityId&&/*#__PURE__*/_jsxs(HoverButton,{type:\"button\",onClick:()=>openModal(\"license\",entityId),hoverStyle:{background:tint(theme.accent,8),border:`1px solid ${tint(theme.accent,40)}`},style:{display:\"flex\",// Top, not centre: the sentence is two lines and\n// the icon should sit beside its heading rather\n// than float halfway down the paragraph.\nalignItems:\"flex-start\",textAlign:\"left\",gap:14,marginTop:4,padding:16,cursor:\"pointer\",borderRadius:Math.min(theme.radius,12),background:theme.inputFill,border:`1px solid ${theme.border}`,color:\"inherit\",font:\"inherit\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:36,height:36,flexShrink:0,borderRadius:Math.min(theme.radius,10),background:`color-mix(in srgb, ${theme.accent} 16%, transparent)`,color:theme.accent},\"aria-hidden\":true,children:/*#__PURE__*/_jsx(SoundeeIcon,{name:FIELD_ICONS.shield,size:16,strokeWidth:1.8})}),/*#__PURE__*/_jsxs(\"span\",{style:{flex:1,minWidth:0,display:\"flex\",flexDirection:\"column\",gap:6},children:[/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:10,...theme.fontTitle,color:theme.textPrimary},children:[/*#__PURE__*/_jsx(\"span\",{style:{minWidth:0,overflow:\"hidden\",textOverflow:\"ellipsis\"},children:\"Use this beat commercially?\"}),/*#__PURE__*/_jsx(\"span\",{style:{flexShrink:0,color:theme.accent,whiteSpace:\"nowrap\",...theme.fontButton},children:minPrice!=null?`From ${formatPrice(minPrice,currency)}`:\"View licenses\"})]}),/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",...theme.fontBody,color:theme.textSecondary},children:\"The free file is tagged. Pick a license to release, monetise and perform it.\"})]})]})]})]});}else if(type===\"direct-success\"||type===\"email-success\"){const instant=type===\"direct-success\";content=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Header,{eyebrow:instant?\"Ready\":\"Check your inbox\",title:trackTitle,entityId:entityId,artworkColor:entity?.artworkColor,theme:theme}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:`${theme.padding*1.5}px ${theme.padding}px`,display:\"flex\",flexDirection:\"column\",alignItems:\"center\",textAlign:\"center\",gap:8},children:[/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:56,height:56,marginBottom:4,borderRadius:999,background:`color-mix(in srgb, ${theme.accent} 16%, transparent)`,color:theme.accent},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:instant?\"download\":\"mail\",size:26,strokeWidth:2.2})}),/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontHeading,color:theme.textPrimary},children:instant?\"Your download is ready\":\"Check your inbox\"}),/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.textSecondary,maxWidth:320},children:instant?\"The tagged demo is yours to try. Buy a license when you are ready to release.\":email?`We sent the download link to ${email}. It can take a minute to arrive.`:\"We sent the download link to your email. It can take a minute to arrive.\"})]}),/*#__PURE__*/_jsx(\"div\",{style:{padding:theme.padding,borderTop:`1px solid ${theme.border}`,flexShrink:0,display:\"flex\",flexDirection:\"column\",gap:8},children:instant&&download.downloadUrl?/*#__PURE__*/_jsxs(\"a\",{href:download.downloadUrl,download:true,style:{...primaryButton,textDecoration:\"none\"},children:[/*#__PURE__*/_jsx(SoundeeIcon,{name:\"download\",size:16,strokeWidth:2.2,style:{marginRight:8}}),\"Download now\"]}):/*#__PURE__*/_jsx(HoverButton,{onClick:closeDemoDownloadModal,...buttons.primary,children:\"Done\"})})]});}else if(type===\"error\"){content=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Header,{eyebrow:\"Free download\",title:trackTitle,entityId:entityId,artworkColor:entity?.artworkColor,theme:theme}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:theme.padding,display:\"flex\",flexDirection:\"column\",gap:14},children:[/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.danger,padding:\"10px 12px\",borderRadius:Math.min(theme.radius,10),background:tint(theme.danger,10)},children:download.errorMessage||\"Something went wrong. Please try again.\"}),/*#__PURE__*/_jsx(HoverButton,{onClick:closeDemoDownloadModal,...buttons.primary,children:\"Close\"})]})]});}return /*#__PURE__*/_jsx(SoundeeDialog,{open:isOpen,onOpenChange:next=>{if(!next)closeModal();},theme:theme,sheet:sheet,label:\"Free download\",children:content});}\nexport const __FramerMetadata__ = {\"exports\":{\"FreeDownload\":{\"type\":\"reactComponent\",\"name\":\"FreeDownload\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport{buildEntityUrl}from\"https://framerusercontent.com/modules/3k8Y3cHpFSqmVB6KTjnO/4pnR3qwdQXwXRlbiSoxC/entity_url.js\";function cleanSharePayload(payload){return{title:payload.title?.trim()||undefined,text:payload.text?.trim()||undefined,url:payload.url};}function isAbortError(error){return error instanceof DOMException&&error.name===\"AbortError\";}export function canUseNativeShare(payload){if(typeof navigator===\"undefined\"||typeof navigator.share!==\"function\"){return false;}if(!payload.url)return false;const sharePayload=cleanSharePayload(payload);if(typeof navigator.canShare!==\"function\")return true;try{return navigator.canShare(sharePayload);}catch{return false;}}export async function shareNative(payload){if(!canUseNativeShare(payload))return\"unsupported\";try{await navigator.share(cleanSharePayload(payload));return\"shared\";}catch(error){return isAbortError(error)?\"aborted\":\"failed\";}}export function getEntitySharePayload(entity,templates,origin,overrides){if(!entity)return null;const url=buildEntityUrl(entity,templates,origin);if(!url)return null;return{title:overrides?.title??entity.title,text:overrides?.text,url};}export function buildShareHref(platform,payload){const url=encodeURIComponent(payload.url);const text=encodeURIComponent(payload.text??payload.title??\"\");const subject=encodeURIComponent(payload.title??\"Check this out\");const body=encodeURIComponent([payload.text??payload.title,payload.url].filter(Boolean).join(\"\\n\"));switch(platform){case\"whatsapp\":return`https://wa.me/?text=${encodeURIComponent([payload.text??payload.title,payload.url].filter(Boolean).join(\" \"))}`;case\"x\":return`https://twitter.com/intent/tweet?url=${url}&text=${text}`;case\"facebook\":return`https://www.facebook.com/sharer/sharer.php?u=${url}`;case\"telegram\":return`https://t.me/share/url?url=${url}&text=${text}`;case\"email\":return`mailto:?subject=${subject}&body=${body}`;case\"sms\":return`sms:?&body=${body}`;default:return payload.url;}}\nexport const __FramerMetadata__ = {\"exports\":{\"getEntitySharePayload\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"buildShareHref\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SharePayload\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"shareNative\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ShareEntity\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SharePlatform\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NativeShareResult\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"canUseNativeShare\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./share.map","// share — a snd.ee short link for a page this site built itself.\n//\n// The same endpoint the pro page's share modal uses\n// (`assets/js/init/share.js`), with the full url instead of an origin: the\n// pro page's paths are the API's to build, but a Framer site's are not —\n// `/products/<slug>`, or whatever its url templates say.\nimport{apiGet}from\"https://framerusercontent.com/modules/2cqxRgmIE8CaH8oMSLJI/Xc2VTih7dteQqDikr6wz/client.js\";/**\n * The short link for `url`, or `url` itself.\n *\n * The API only shortens a domain that points to Soundee or to Framer and hands\n * the long url back for anything else, so whatever comes back is shareable.\n */export async function fetchShortShareUrl(config,entityId,url){const res=await apiGet(config,`/entities/${entityId}/share`,{url});return res?.response?.data?.url?.short||url;}\nexport const __FramerMetadata__ = {\"exports\":{\"fetchShortShareUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./share.map","import*as React from\"react\";import{fetchShortShareUrl}from\"https://framerusercontent.com/modules/4wOB8Ax9QXIenQdCZvs1/F3fH1ZRUvlR16CwWF9QY/share.js\";import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";// One request per url per visit, shared by every render that asks. A failed\n// request is remembered as the long url, so it is not asked again either.\nconst shortened=new Map;/**\n * The link to hand out for `url`: a snd.ee short link once the API has made\n * one, and `url` itself until then.\n *\n * Also `url` for good when the short link never comes — no session, a domain\n * the API will not shorten, a failed request. A long link that works beats a\n * share modal waiting on a short one, so nothing here blocks or retries.\n *\n * Plain state, not react-query: the modals render outside any\n * QueryClientProvider, and a `useQuery` there throws on every render — the\n * share modal is mounted while closed, so it took every other modal down with\n * it.\n */export function useShortShareUrl(entityId,url,enabled){const cfg=useSoundeeConfig();const key=`${cfg.baseUrl}|${cfg.storeId}|${entityId}|${url}`;const[short,setShort]=React.useState(null);React.useEffect(()=>{if(!enabled||!entityId||!url||!cfg._ready)return;let pending=shortened.get(key);if(!pending){pending=fetchShortShareUrl({baseUrl:cfg.baseUrl,storeId:cfg.storeId,userId:cfg.userId},Number(entityId),url).catch(()=>url);shortened.set(key,pending);}let cancelled=false;pending.then(result=>{if(!cancelled)setShort({key,url:result});});return()=>{cancelled=true;};},[enabled,entityId,url,key,cfg._ready,cfg.baseUrl,cfg.storeId,cfg.userId]);return short?.key===key?short.url:url??null;}\nexport const __FramerMetadata__ = {\"exports\":{\"useShortShareUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nexport async function copyToClipboard(value){if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(value);return;}const textarea=document.createElement(\"textarea\");textarea.value=value;textarea.style.position=\"fixed\";textarea.style.opacity=\"0\";document.body.appendChild(textarea);textarea.select();document.execCommand(\"copy\");document.body.removeChild(textarea);}\nexport const __FramerMetadata__ = {\"exports\":{\"copyToClipboard\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./_clipboard.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{getEntity}from\"https://framerusercontent.com/modules/Fa9rFJN2rq85gl2rXBgV/AVjJVDZFaBnNLsPAn8ph/entities.js\";import{closeModal,useModalStore}from\"https://framerusercontent.com/modules/GWfspgjtCDM1TzNhU8zZ/qqg4ghGDLDMPIKD53Sop/modal.js\";import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";import{resolveEntityUrlTemplates}from\"https://framerusercontent.com/modules/3k8Y3cHpFSqmVB6KTjnO/4pnR3qwdQXwXRlbiSoxC/entity_url.js\";import{getResolvedCmsHref}from\"https://framerusercontent.com/modules/W9fjsr5lFdL2bnlC2Asr/kcV7c8GVsKn0YK9iXBRH/cms_link_slot.js\";import{buildCmsUrlFromBasePath}from\"https://framerusercontent.com/modules/wnrXHoohp8XHWajzV5xv/PrYNsbjSxzfzlBSz8giZ/cms_base_path.js\";import{buildShareHref,canUseNativeShare,getEntitySharePayload,shareNative}from\"https://framerusercontent.com/modules/JmNrL24TXefy9eqeRSA8/Igu9AokBNfoZhkwbJpvq/share.js\";import{useShortShareUrl}from\"https://framerusercontent.com/modules/3VVfHGHmWpgTkD6EEVny/08x5vcA6RZAo0Z1ffbf3/short_share_url.js\";import{copyToClipboard}from\"https://framerusercontent.com/modules/wChAbWcD1BNLom97vs8f/bvoC1yHOcdpv3AGHKRGr/_clipboard.js\";import{SoundeeDialog}from\"https://framerusercontent.com/modules/O60C240xSqPv1FtQHfho/b7n5E3JqZkPRnWfzfUgL/SoundeeDialog.js\";import{HoverButton,HoverLink,buttonStyles,mixToward,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import SoundeeArtwork from\"https://framerusercontent.com/modules/SvQ80p4cAsd88JPYWgze/Qq09ALzx6F4r8Yo3Oux8/SoundeeArtwork.js\";const PLATFORMS=[{id:\"whatsapp\",label:\"WhatsApp\",path:\"M21 11.5a8.4 8.4 0 0 1-12.6 7.3L3 20.5l1.8-5.2A8.4 8.4 0 1 1 21 11.5z\"},{id:\"x\",label:\"X\",path:\"M4 4l16 16M20 4L4 20\"},{id:\"facebook\",label:\"Facebook\",path:\"M15 3h-2a4 4 0 0 0-4 4v3H7v4h2v7h4v-7h3l1-4h-4V7a1 1 0 0 1 1-1h2z\"},{id:\"telegram\",label:\"Telegram\",path:\"M21 4 3 11l5 2 2 6 3-4 5 4z\"},{id:\"email\",label:\"Email\",path:\"M4 5h16a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm-1 2 9 6 9-6\"},{id:\"sms\",label:\"Message\",path:\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"}];/**\n * Built-in share modal.\n *\n * The link it shares is the same one the row links to: the CMS detail page when\n * a probe has taught us where those live, and the Soundee route otherwise. A\n * share that points somewhere the visitor's own site does not is worse than no\n * share button.\n */export function Share({theme,sheet}){const modal=useModalStore();const cfg=useSoundeeConfig();const[copied,setCopied]=React.useState(false);const isOpen=modal.activeModal===\"share\";const entityId=modal.entityId;const entity=entityId?getEntity(entityId):undefined;const templates=React.useMemo(()=>resolveEntityUrlTemplates(null,cfg.urlTemplates),[cfg.urlTemplates]);const longPayload=React.useMemo(()=>{// The address Framer itself resolved for this entity, if its row has\n// rendered one. Asked for first, and on its own terms: the builder\n// below gives up when its own template produces nothing, which is how\n// an item with a perfectly good CMS page still came out unshareable.\n//\n// Preferred over anything assembled here for the same reason it exists\n// — everything else bolts a slug derived from the entity's title onto\n// a base path, and a share link is the one place a near-miss is\n// useless, because it leaves the building.\nconst exact=entity?.entityId?getResolvedCmsHref(entity.entityId):null;const base=getEntitySharePayload(entity,templates,typeof window===\"undefined\"?undefined:window.location.origin);if(exact){return base?{...base,url:exact}:{title:entity?.title,url:exact};}if(!base)return null;const cmsUrl=buildCmsUrlFromBasePath(entity?.cmsSlug??entity?._raw?.cmsSlug??\"\");if(!cmsUrl)return base;// Relative until now; a shared link has to carry the host.\nconst absolute=typeof window===\"undefined\"?cmsUrl:new URL(cmsUrl,window.location.origin).toString();return{...base,url:absolute};},[entity,templates]);// What actually leaves the building: the same page, as a snd.ee link once\n// the API has made one. The long url stands in until then, so the modal\n// never waits on it.\nconst shareUrl=useShortShareUrl(entityId,longPayload?.url,isOpen);const payload=React.useMemo(()=>longPayload&&shareUrl?{...longPayload,url:shareUrl}:longPayload,[longPayload,shareUrl]);React.useEffect(()=>{if(!isOpen)setCopied(false);},[isOpen]);async function handleCopy(){if(!payload)return;await copyToClipboard(payload.url);setCopied(true);window.setTimeout(()=>setCopied(false),2e3);}const showNative=!!payload&&canUseNativeShare(payload);const buttons=buttonStyles(theme);const tile={display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",gap:8,padding:\"14px 6px\",borderRadius:Math.min(theme.radius,12),border:`1px solid ${theme.border}`,background:\"transparent\",color:theme.textPrimary,cursor:\"pointer\",textDecoration:\"none\",...theme.fontBody};return /*#__PURE__*/_jsxs(SoundeeDialog,{open:isOpen,onOpenChange:next=>{if(!next)closeModal();},theme:theme,sheet:sheet,label:\"Share\",children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:14,padding:`${theme.padding}px ${theme.padding+36}px ${theme.padding}px ${theme.padding}px`,borderBottom:`1px solid ${theme.border}`,flexShrink:0},children:[/*#__PURE__*/_jsx(SoundeeArtwork,{entityID:entityId,imageSize:\"Small\",artworkColor:entity?.artworkColor,title:entity?.title??\"\",borderRadius:`${Math.min(theme.radius,10)}px`,loading:\"lazy\",style:{width:52,height:52,flexShrink:0}}),/*#__PURE__*/_jsxs(\"div\",{style:{minWidth:0,display:\"flex\",flexDirection:\"column\",gap:6},children:[/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.textSecondary,textTransform:\"uppercase\",letterSpacing:\"0.08em\",fontSize:11,lineHeight:1},children:\"Share\"}),/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontHeading,color:theme.textPrimary,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:entity?.title??\"This track\"})]})]}),/*#__PURE__*/_jsx(\"div\",{style:{flex:1,minHeight:0,overflowY:\"auto\",padding:theme.padding,display:\"flex\",flexDirection:\"column\",gap:14},children:!payload?/*#__PURE__*/_jsx(\"div\",{style:{...theme.fontBody,color:theme.textSecondary},children:\"This item has no shareable link yet.\"}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"repeat(auto-fit, minmax(84px, 1fr))\",gap:8},children:PLATFORMS.map(platform=>/*#__PURE__*/_jsxs(HoverLink,{href:buildShareHref(platform.id,payload),target:\"_blank\",// The share target is a third party; without\n    // this it can reach back through opener.\n    rel:\"noopener noreferrer\",style:tile,hoverStyle:{background:tint(theme.textPrimary,8),border:`1px solid ${tint(theme.textPrimary,26)}`,color:theme.textPrimary},children:[/*#__PURE__*/_jsx(\"svg\",{width:20,height:20,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:1.8,strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{color:theme.textSecondary},\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:platform.path})}),platform.label]},platform.id))}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:8,padding:\"6px 6px 6px 14px\",borderRadius:Math.min(theme.radius,12),border:`1px solid ${theme.border}`,background:theme.inputFill},children:[/*#__PURE__*/_jsx(\"span\",{style:{flex:1,minWidth:0,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",color:theme.textSecondary,...theme.fontBody},children:payload.url}),/*#__PURE__*/_jsx(HoverButton,{onClick:handleCopy,hoverStyle:copied?{background:tint(theme.accent,30)}:{background:mixToward(theme.accent,theme.accentText,16)},style:{...buttons.primary.style,width:\"auto\",flexShrink:0,height:36,padding:\"0 14px\",background:copied?tint(theme.accent,22):theme.accent,color:copied?theme.accent:theme.accentText,whiteSpace:\"nowrap\"},children:copied?\"Copied\":\"Copy\"})]}),showNative&&/*#__PURE__*/_jsx(HoverButton,{onClick:()=>shareNative(payload),...buttons.secondary,children:\"More options\"})]})})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"Share\":{\"type\":\"reactComponent\",\"name\":\"Share\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\nimport{getAuthBranding}from\"https://framerusercontent.com/modules/1C0GagjgfuDFRJ9FgBvQ/vA2eEs3TA2I41S4tjUXn/propage_config.js\";// The canonical host, not the Vercel one. `soundee-auth-v2.vercel.app` 301s to\n// this, and the redirect is what broke the in-app flow: the iframe ends up on\n// `auth.soundee.com`, so every postMessage arrived with *that* origin and was\n// dropped by a check written against the Vercel host — the X did nothing and a\n// completed sign-in never reached the page.\nexport const SOUNDEE_AUTH_BASE_URL=\"https://auth.soundee.com\";/**\n * Origins whose messages the auth iframe may be trusted for.\n *\n * The redirect target is listed too so a stale URL still works, and this stays\n * an allow-list rather than a substring test: `auth.soundee.com.evil.tld`\n * passes an `includes()` check.\n */const SOUNDEE_AUTH_ORIGINS=new Set([\"https://auth.soundee.com\",\"https://soundee-auth-v2.vercel.app\"]);export function isSoundeeAuthOrigin(origin){return SOUNDEE_AUTH_ORIGINS.has(origin);}export const SOUNDEE_AUTH_DEFAULT_BRAND_COLOR=\"#fdbc53\";function normalizeHexColor(value){if(!value)return null;let hex=value.trim();if(!hex)return null;if(!hex.startsWith(\"#\"))hex=`#${hex}`;if(/^#[0-9a-fA-F]{3}$/.test(hex)){hex=\"#\"+hex.slice(1).split(\"\").map(char=>char+char).join(\"\");}return/^#[0-9a-fA-F]{6}$/.test(hex)?hex.toLowerCase():null;}function getWindowAuthBrandColor(){if(typeof window===\"undefined\")return null;const raw=window.__SOUNDEE__;const value=raw?.authBranding?.brandColor??raw?.authBrandColor;return typeof value===\"string\"?normalizeHexColor(value):null;}export function buildSoundeeAuthUrl({theme=\"dark\",redirectUri=typeof window!==\"undefined\"?window.location.href:\"\",affiliate,brandName,brandLogo,brandColor,hideLogo,inApp}={}){const resolvedBrandColor=normalizeHexColor(brandColor)??getWindowAuthBrandColor()??SOUNDEE_AUTH_DEFAULT_BRAND_COLOR;const params=new URLSearchParams({theme,redirect_uri:redirectUri,...affiliate?{aff:String(affiliate)}:{},...brandName?{brand_name:brandName}:{},...brandLogo?{brand_logo:brandLogo}:{},...resolvedBrandColor?{brand_color:resolvedBrandColor}:{},...hideLogo?{hide_logo:\"1\"}:{},...inApp?{in_app:\"1\"}:{}});return`${SOUNDEE_AUTH_BASE_URL}/?${params.toString()}`;}export async function resolveSoundeeAuthUrl(options={}){const serverBranding=await getAuthBranding()??{};return buildSoundeeAuthUrl({...serverBranding,...options,brandName:options.brandName??serverBranding.brandName,brandLogo:options.brandLogo??serverBranding.brandLogo});}\nexport const __FramerMetadata__ = {\"exports\":{\"SOUNDEE_AUTH_BASE_URL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveSoundeeAuthUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"buildSoundeeAuthUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SOUNDEE_AUTH_DEFAULT_BRAND_COLOR\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isSoundeeAuthOrigin\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./auth_url.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{motion}from\"framer-motion\";import{refreshSession,useSessionStore}from\"https://framerusercontent.com/modules/Z0KLFt0cNobZoDQYzrLW/7QZObf132AnTW9nAUMEU/session.js\";import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";import{isSoundeeAuthOrigin,resolveSoundeeAuthUrl,SOUNDEE_AUTH_BASE_URL}from\"https://framerusercontent.com/modules/lIOZr5cqUtDqxsgBiGLD/trSWxEbngoxSX5xOft4g/auth_url.js\";import{closeSoundeeAuth,getSoundeeAuthAction,useSoundeeAuthOpen}from\"https://framerusercontent.com/modules/WO1OkTRlQ7Ujgw4kWkqW/CfsiFGnaWgQ1QvOs342E/auth_state.js\";import{prefersRedirectAuth,setPendingAuthAction}from\"https://framerusercontent.com/modules/TOt02YijdtA7cgWqibQv/UHeSInOP0uxn8z4qzYyv/auth_resume.js\";import{SoundeeDialog}from\"https://framerusercontent.com/modules/O60C240xSqPv1FtQHfho/b7n5E3JqZkPRnWfzfUgL/SoundeeDialog.js\";import{Spinner}from\"https://framerusercontent.com/modules/2dz2LtfEPrHoRvnZYZTV/lYiqFZvueQpmdyXSqtMJ/loading.js\";import{HoverButton,buttonStyles}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";/**\n * Sign-in, in an iframe, without leaving the page.\n *\n * The contract matches the pro page and the Next app, so all three behave the\n * same and the auth service only has one integration to support:\n *\n *   - open `?in_app=1&hide_logo=1&theme=…&redirect_uri=…`\n *   - accept `\"action:closePopup\"` as a dismissal\n *   - accept a *stringified JSON* `{ code }` as the sign-in\n *   - hand that code to `GET /sessions?auth_code=…`\n *\n * That last step is why the redirect route still works untouched: both paths end\n * on the same request, and `initSession` already reads `auth_code` from the URL.\n */export function AuthModal({theme}){const open=useSoundeeAuthOpen();const cfg=useSoundeeConfig();const session=useSessionStore();const[url,setUrl]=React.useState(\"\");const[exchanging,setExchanging]=React.useState(false);// WebKit/Apple browsers can't run the auth iframe (Safari's autofill\n// throws walking the frame tree on focus, third-party cookies blocked), so\n// they get a top-level redirect instead — a confirm modal, then the whole\n// tab navigates to the auth page and comes back with `?auth_code=`. The\n// action the visitor was mid-doing is replayed after they return (see\n// auth_resume), so \"like a beat → sign in → liked\" survives the round-trip.\nconst redirect=React.useMemo(()=>prefersRedirectAuth(),[]);const action=React.useMemo(()=>open?getSoundeeAuthAction():null,[open]);React.useEffect(()=>{if(!open){setUrl(\"\");setExchanging(false);return;}let cancelled=false;resolveSoundeeAuthUrl({// The compact card is for the iframe; a full-tab redirect gets the\n// whole branded page.\ninApp:!redirect,hideLogo:true,redirectUri:typeof window===\"undefined\"?\"\":window.location.href}).then(next=>{if(!cancelled)setUrl(next);}).catch(()=>{if(!cancelled){setUrl(`${SOUNDEE_AUTH_BASE_URL}/?${redirect?\"\":\"in_app=1&\"}hide_logo=1`);}});return()=>{cancelled=true;};},[open,redirect]);function goToRedirectAuth(){if(!url)return;// Written down before we leave, replayed once we return signed in.\nif(action)setPendingAuthAction(action);// The top window, not this one: only a top-level navigation makes the\n// auth page first-party. If this site is itself embedded in an iframe,\n// a self-redirect would keep auth in the same cross-origin frame and\n// Safari would block it exactly as before; `window.top` escapes it.\n// Top-level (the usual case) has `window.top === window`, so this is a\n// plain self-redirect. A sandbox that refuses top navigation falls back\n// to self. (Resume rides localStorage; in the rare embedded case the\n// top-level return reads a different storage partition, so the replay\n// may be lost — login still works.)\ntry{window.top.location.href=url;}catch{window.location.href=url;}}// Already signed in by the time the panel opened (another tab, a redirect\n// that landed) — nothing to ask.\nReact.useEffect(()=>{if(open&&session.isLoggedIn&&session.user)closeSoundeeAuth(true);},[open,session.isLoggedIn,session.user]);React.useEffect(()=>{if(!open||typeof window===\"undefined\")return;async function onMessage(event){// This listener sits on the host page and any frame or tab can post\n// to it, so the origin is checked before anything else. Checked\n// against the allow-list rather than the configured base URL: the\n// auth host redirects, and the frame reports where it *landed*.\nif(!isSoundeeAuthOrigin(event.origin))return;if(event.data===\"action:closePopup\"){closeSoundeeAuth(false);return;}// The auth page sends a stringified JSON payload. Google Identity\n// Services runs on that same origin and posts its own object\n// messages (`registerAsChildFrameAck` and friends) — those must not\n// be mistaken for a sign-in.\nif(typeof event.data!==\"string\")return;let payload;try{payload=JSON.parse(event.data);}catch{return;}const code=payload?.code;if(typeof code!==\"string\"||!code)return;setExchanging(true);try{await refreshSession(cfg.baseUrl,code);closeSoundeeAuth(true);}finally{setExchanging(false);}}window.addEventListener(\"message\",onMessage);return()=>window.removeEventListener(\"message\",onMessage);},[open,cfg.baseUrl]);if(redirect){const label=action?.label;const authButtons=buttonStyles(theme);return /*#__PURE__*/_jsx(SoundeeDialog,{open:open,onOpenChange:next=>{if(!next)closeSoundeeAuth(false);},theme:theme,layer:1,label:\"Sign in\",children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:8,padding:24,maxWidth:360},children:[/*#__PURE__*/_jsx(\"strong\",{style:{color:theme.textPrimary,...theme.fontHeading},children:\"Sign in to continue\"}),/*#__PURE__*/_jsx(\"p\",{style:{color:theme.textSecondary,...theme.fontBody,margin:0},children:label?`You'll be taken to sign in, then brought back to ${label}.`:\"You'll be taken to sign in, then brought back here.\"}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:10,marginTop:14},children:[/*#__PURE__*/_jsx(HoverButton,{onClick:goToRedirectAuth,disabled:!url,hoverStyle:authButtons.primary.hoverStyle,activeStyle:authButtons.primary.activeStyle,style:{...authButtons.primary.style,width:\"auto\",flex:\"1 1 0\",cursor:url?\"pointer\":\"default\",opacity:url?1:.6},children:\"Continue\"}),/*#__PURE__*/_jsx(HoverButton,{onClick:()=>closeSoundeeAuth(false),hoverStyle:authButtons.secondary.hoverStyle,activeStyle:authButtons.secondary.activeStyle,style:{...authButtons.secondary.style,width:\"auto\",padding:\"0 18px\"},children:\"Cancel\"})]})]})});}return /*#__PURE__*/_jsx(SoundeeDialog,{open:open,onOpenChange:next=>{if(!next)closeSoundeeAuth(false);},theme:theme,// `in_app=1` makes the auth page draw its own card, so it gets the\n// whole viewport rather than a panel around a panel.\nfullscreen:true,// Above every other modal, because it is the one that opens *from*\n// them: the license picker asks for a sign-in before an offer, and\n// the heart asks from a row. On the shared layer its scrim landed\n// behind the picker's panel — same z-index, so only the panels\n// stacked — and the sign-in read as a card floating inside an\n// undimmed picker rather than in front of it.\nlayer:1,label:\"Sign in\",children:/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\"},children:[url&&/*#__PURE__*/_jsx(\"iframe\",{src:url,title:\"Sign in to Soundee\",// Only what the auth page needs. `allow-same-origin` is\n// required for it to reach its own session storage.\nsandbox:\"allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox\",style:{width:\"100%\",height:\"100%\",border:\"none\",display:\"block\",background:\"transparent\"}}),exchanging&&/*#__PURE__*/_jsx(motion.div,{role:\"status\",\"aria-label\":\"Signing you in\",initial:{opacity:0},animate:{opacity:1},transition:{duration:.2,delay:.18},style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",// `backgroundColor` first as the fallback: where\n// `color-mix` is unsupported the declaration is\n// dropped and the veil is simply opaque.\nbackgroundColor:theme.surface,background:`color-mix(in srgb, ${theme.surface} 68%, transparent)`,backdropFilter:\"blur(3px)\",WebkitBackdropFilter:\"blur(3px)\"},children:/*#__PURE__*/_jsx(Spinner,{color:theme.textSecondary,size:22})})]})});}\nexport const __FramerMetadata__ = {\"exports\":{\"AuthModal\":{\"type\":\"reactComponent\",\"name\":\"AuthModal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\nimport{getObjectTypeLabel}from\"https://framerusercontent.com/modules/d3VRtpPEqbZowvAH2Zxw/zTJIWEhWaDQp7jiQQkt8/object_type.js\";import{buildCmsSlugFromEntity,getSoundeeUrlSlugFromEntity}from\"https://framerusercontent.com/modules/vmO3Qj1A95tLsyCVxfqD/TNnfZ9iOZ8jvIcZzxOSS/cms_slugs.js\";function getCartItemSlugSource(item){const url=\"object\"in item?item.object?.url:item.urlSlug;if(!url)return null;return{entityType:(\"entityType\"in item?item.entityType:undefined)??(\"object\"in item?item.object?.entityType:undefined)??(\"object\"in item?item.object?.type:undefined)??item.type,url};}function getCartItemSlugProps(item){const source=getCartItemSlugSource(item);if(!source)return{urlSlug:\"\",cmsSlug:\"\"};return{urlSlug:getSoundeeUrlSlugFromEntity(source),cmsSlug:buildCmsSlugFromEntity(source)};}/**\n * Maps cart line items to designer-facing Framer slot props. Keep ID keys in\n * the Framer style (`entityID`, `licenseID`) instead of internal camelCase\n * store names like `entityId`.\n */export function getCartItemSlotProps(item,processedItem){const displayPrice=processedItem?.price??item.price;const originalPrice=processedItem?.originalPrice??item.license?.price??item.price;const hasDiscount=displayPrice<originalPrice;return{entityID:item.entityId,licenseID:item.licenseId,title:item.object?.title??\"\",description:item.license?.name??item.object?.type??item.type??\"\",licenseName:item.license?.name??\"\",artworkSmall:item.object?.artwork?.sources?.small??\"\",artworkMedium:item.object?.artwork?.sources?.medium??\"\",artworkLarge:item.object?.artwork?.sources?.large??\"\",artworkColor:item.object?.artwork?.color??\"\",price:displayPrice,originalPrice,hasDiscount,dealLabel:hasDiscount&&displayPrice===0?\"FREE\":\"\",// `entityType` is the product family — always `track`, `kit` or\n// `service`. It used to fall back to `object.type`, which for a service\n// is a human label like \"Mixing Service\", so the two meanings leaked\n// into one prop. The label now has its own key.\nentityType:item.object?.entityType??item.entityType??item.type??\"track\",/**\n         * The entity's own sub-type as shown to a visitor — \"Drum Kit\",\n         * \"Mixing Service\". Kits and services carry it; tracks have no\n         * equivalent, so it is empty for them.\n         */objectType:getObjectTypeLabel(item.object?.type),...getCartItemSlugProps(item),editable:!!item.licenseId};}export function getMockCartItemSlotProps(item){return{entityID:item.entityId,licenseID:item.licenseId,title:item.title,description:item.description,licenseName:item.description,artworkSmall:item.artworkUrl,artworkMedium:item.artworkUrl,artworkLarge:item.artworkUrl,artworkColor:\"\",price:item.price,originalPrice:item.originalPrice,hasDiscount:item.price<item.originalPrice,dealLabel:\"\",entityType:item.type,objectType:\"\",...getCartItemSlugProps(item),editable:item.editable,removable:item.removable};}\nexport const __FramerMetadata__ = {\"exports\":{\"ProcessedCartItem\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getCartItemSlotProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getMockCartItemSlotProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./cart_item.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n/**\n * \"a\" or \"an\", for a licence name dropped into a sentence.\n *\n * A vowel takes \"an\". So does a short initialism whose first letter is said\n * with a vowel sound — an MP3 lease, an LP licence — recognised as an F, H, L,\n * M, N, R, S or X followed by at most two more capitals or digits and then no\n * letter. \"MIDI\" and \"FLAC\" are four capitals and said as words, so they keep\n * \"a\" — as do the vowel spellings said with a consonant: a Unique, a Universal,\n * a One-Stop, a Euro.\n */export function indefiniteArticle(name){const trimmed=name.trim();if(/^(uni|use|usu|ute|uti|ura|eu|one|once)/i.test(trimmed))return\"a\";if(/^[aeiou]/i.test(trimmed))return\"an\";if(/^[FHLMNRSX][A-Z0-9]{0,2}(?![A-Za-z])/.test(trimmed))return\"an\";return\"a\";}/**\n * \"an Unlimited license\", \"a Standard License\", \"an MP3 Lease\": article, name,\n * and the word \"license\" unless the name already says license or lease. A\n * licence with no name at all reads \"this license\" rather than a gap.\n */export function licensePhrase(licenseName){const name=licenseName.trim();if(!name)return\"this license\";const article=indefiniteArticle(name);return/\\b(licen[cs]e|lease)\\b/i.test(name)?`${article} ${name}`:`${article} ${name} license`;}function buildSavedSuffix(context){const amount=context?.bulkDiscount??0;if(!(amount>0))return\"\";return` You saved ${context?.currency??\"$\"}${amount.toFixed(2)} already!`;}export function getDealRowSlotProps(row,index,context){const plural=row.itemsNeeded===1?\"\":\"s\";const savedSuffix=buildSavedSuffix(context);return{dealString:row.dealString,dealProgress:row.dealProgress,active:row.active,applied:row.applied??row.active,itemsNeeded:row.itemsNeeded,remainingItems:row.itemsNeeded,itemsCount:row.itemsCount,currentCount:row.itemsCount,threshold:row.threshold,licenseID:row.licenseId,licenseName:row.licenseName,dealType:row.dealType,index,// Optional convenience copy (pro-page parity); designers may ignore\n// these and bind the raw fields above instead.\npromoNudgeText:row.active?\"\":`Add ${row.itemsNeeded} more track${plural} with ${licensePhrase(row.licenseName)} to activate ${row.dealString}.`,promoUnlockedText:row.active?`Awesome! ${row.dealString} unlocked.${savedSuffix}`:\"\",// The same figures separately, for a design that wants to style the\n// amount rather than take the whole sentence.\nsavedAmount:context?.bulkDiscount??0,savedFormatted:`${context?.currency??\"$\"}${(context?.bulkDiscount??0).toFixed(2)}`,hasSavings:(context?.bulkDiscount??0)>0};}export function getMockDealRowSlotProps(mock,index,context){const plural=mock.itemsNeeded===1?\"\":\"s\";const savedSuffix=buildSavedSuffix(context);return{dealString:mock.dealString,dealProgress:mock.dealProgress,active:mock.active,applied:mock.active,itemsNeeded:mock.itemsNeeded,remainingItems:mock.itemsNeeded,itemsCount:mock.itemsCount,currentCount:mock.itemsCount,threshold:mock.threshold,licenseID:mock.licenseId,licenseName:mock.licenseName,dealType:mock.dealType,index,promoNudgeText:mock.active?\"\":`Add ${mock.itemsNeeded} more track${plural} with ${licensePhrase(mock.licenseName)} to activate ${mock.dealString}.`,promoUnlockedText:mock.active?`Awesome! ${mock.dealString} unlocked.${savedSuffix}`:\"\",savedAmount:context?.bulkDiscount??0,savedFormatted:`${context?.currency??\"$\"}${(context?.bulkDiscount??0).toFixed(2)}`,hasSavings:(context?.bulkDiscount??0)>0};}\nexport const __FramerMetadata__ = {\"exports\":{\"licensePhrase\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"indefiniteArticle\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getMockDealRowSlotProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DealRowContext\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getDealRowSlotProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./deal.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// checkout — starting a checkout session, and the three things that make it\n// work in a browser.\n//\n// Lifted out of `SoundeeCheckoutButton`, which held the only copy. The built-in\n// cart panel needs the same call, and none of this is obvious enough to write\n// twice: where the buyer comes back to, where \"back\" returns them to, and the\n// bfcache reset that otherwise leaves the button stuck loading forever.\nimport*as React from\"react\";import{RenderTarget}from\"framer\";import{apiPost}from\"https://framerusercontent.com/modules/2cqxRgmIE8CaH8oMSLJI/Xc2VTih7dteQqDikr6wz/client.js\";import{useCartProps}from\"https://framerusercontent.com/modules/RQ0otqKV2TW3jegGju98/XwhJAw2aci08xJcT0P6r/cart.js\";import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";/**\n * Post-payment downloads land on the Soundee store subdomain, because a Framer\n * site does not host the /downloads route. With a storeId we always target\n * {storeId}.soundee.com; otherwise the marketplace, or the current origin for a\n * generic embed.\n */function checkoutReturnOrigin(originMode,storeId){if(storeId)return`https://${storeId}.soundee.com`;if(originMode===\"Soundee\")return\"https://soundee.com\";if(typeof window===\"undefined\")return\"https://soundee.com\";return window.location.origin;}/** \"Back\" returns the buyer to the exact page they left, captured at click. */function checkoutBackUri(){if(typeof window===\"undefined\")return\"https://soundee.com\";return window.location.href;}function redirectToCheckout(url,openInNewTab){if(typeof window===\"undefined\")return;if(openInNewTab){window.open(url,\"_blank\",\"noopener,noreferrer\");return;}window.location.href=url;}export function useCheckout({originMode=\"Current Page\",openInNewTab=false}={}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const cartProps=useCartProps();const config=useSoundeeConfig();const[loading,setLoading]=React.useState(false);const[error,setError]=React.useState(null);const disabled=cartProps.count<=0||loading;// Going back can restore the page from bfcache with `loading` still true,\n// leaving the button stuck and unclickable. `pageshow` with `persisted`\n// covers bfcache; `popstate` covers browsers that restore through history\n// without a full `pageshow`.\nReact.useEffect(()=>{if(isCanvas||typeof window===\"undefined\")return;const reset=()=>{setLoading(false);setError(null);};const onPageShow=event=>{if(event.persisted)reset();};window.addEventListener(\"pageshow\",onPageShow);window.addEventListener(\"popstate\",reset);return()=>{window.removeEventListener(\"pageshow\",onPageShow);window.removeEventListener(\"popstate\",reset);};},[isCanvas]);const start=React.useCallback(async event=>{event?.stopPropagation?.();if(isCanvas||disabled)return;setLoading(true);setError(null);try{const storeId=typeof config.storeId===\"number\"&&config.storeId>0?config.storeId:undefined;const data=await apiPost(\"/checkout\",{returnOrigin:checkoutReturnOrigin(originMode,storeId),backUri:checkoutBackUri(),...storeId?{storeId}:{}});const url=data.response.data.url;if(!url)throw new Error(\"Checkout URL is missing\");redirectToCheckout(url,openInNewTab);}catch(err){setError(err instanceof Error?err.message:\"Checkout could not be started.\");setLoading(false);}},[config.storeId,disabled,isCanvas,openInNewTab,originMode]);return{start,loading,error,disabled,count:cartProps.count};}\nexport const __FramerMetadata__ = {\"exports\":{\"CheckoutOriginMode\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useCheckout\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"UseCheckoutOptions\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\nimport{loadProPageConfig}from\"https://framerusercontent.com/modules/1C0GagjgfuDFRJ9FgBvQ/vA2eEs3TA2I41S4tjUXn/propage_config.js\";function mapRawDeal(raw){return{id:raw.id,active:raw.active,fixed:raw.fixed,price:raw.price,upgrades:raw.upgrades,buy:raw.buy,free:raw.free,licenseId:raw.licenseId,dealString:raw.dealString};}/**\n * Store license catalog with bulk deals from `GET /propage/{storeId}`.\n * Reached through `useStoreDealCatalog` — not via `store/cart.tsx`.\n */export async function fetchStoreDealCatalog(baseUrl,storeId){const config=await loadProPageConfig(baseUrl,storeId);const rawLicenses=config?.licenses;if(!Array.isArray(rawLicenses)||rawLicenses.length===0)return[];const entries=[];for(const raw of rawLicenses){if(raw==null||raw.active===0)continue;const rawDeals=raw.deals??[];const deals=rawDeals.filter(d=>d!=null&&d.active===1).map(mapRawDeal);if(!deals.length)continue;entries.push({licenseId:raw.id,licenseName:raw.name??\"\",deals});}return entries;}\nexport const __FramerMetadata__ = {\"exports\":{\"fetchStoreDealCatalog\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./fetchStoreDealCatalog.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\nimport*as React from\"react\";import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";import{fetchStoreDealCatalog}from\"https://framerusercontent.com/modules/Q5ZnR7kotfTlzdZmP1fo/LlkbBwo3nG61U3iWwJAx/fetchStoreDealCatalog.js\";/**\n * The store's licence deals — every tier the producer set up, not only the\n * ones the cart happens to touch.\n *\n * `undefined` while loading, `[]` when the store has none or the request\n * failed, the entries otherwise. Backed by the pro-page config cache, which the\n * currency hook has usually already filled, so a second reader on the page\n * costs nothing. Store config, not cart state: it does not re-fetch when the\n * cart changes, only the simulation over it does.\n */export function useStoreDealCatalog(enabled=true){const config=useSoundeeConfig();const[catalog,setCatalog]=React.useState(enabled?undefined:null);React.useEffect(()=>{if(!enabled){setCatalog(null);return;}let cancelled=false;setCatalog(undefined);fetchStoreDealCatalog(config.baseUrl,String(config.storeId)).then(entries=>{if(!cancelled)setCatalog(entries);}).catch(()=>{if(!cancelled)setCatalog([]);});return()=>{cancelled=true;};},[enabled,config.baseUrl,config.storeId]);return catalog;}\nexport const __FramerMetadata__ = {\"exports\":{\"useStoreDealCatalog\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\n// soundee-core republish (2026-08-24) — rebuild for the deal-relevance\n// change in lib/cart/nextDeal.tsx (importers do not rebuild on their own).\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useCartStore,getDealStatus}from\"https://framerusercontent.com/modules/ZkH7fJxhmqZcrglWy6e9/jg1afezs6T1tddWBHcwP/cart.js\";import{normalizeSlot,cloneSlotWithUniqueLayout}from\"https://framerusercontent.com/modules/h8NiJEJpWFHyeRETbmyt/8yFZXOUwH5F5bkx7bL6Q/slot.js\";import{useEnsureSoundeeSession}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";function clampProgress(value){return Math.round(Math.min(Math.max(value,0),100));}function resolveProgress(progressProp,isCanvas){if(progressProp!=null&&!Number.isNaN(progressProp)){return clampProgress(progressProp);}if(isCanvas)return 50;const{current,next}=getDealStatus();const deal=next??current;if(!deal)return 0;return clampProgress(deal.dealProgress);}/**\n * Display-only bulk-deal progress bar (0–100% width). Uses the most relevant\n * cart deal when Progress is unset; optional custom Fill slot.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight fixed\n * @framerDisableUnlink\n */export default function SoundeeDealProgress({fill,height=8,borderRadius=99,background=\"rgba(255,255,255,0.10)\",fillColor=\"#c8a06a\",progress:progressProp}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;// Reads session-derived state, so it must start the session itself.\nuseEnsureSoundeeSession();useCartStore();const progress=resolveProgress(progressProp,isCanvas);const[mounted,setMounted]=React.useState(false);React.useEffect(()=>{requestAnimationFrame(()=>setMounted(true));},[]);const displayProgress=isCanvas?progress:mounted?progress:0;const template=normalizeSlot(fill);return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height,borderRadius,background,overflow:\"hidden\",position:\"relative\"},children:/*#__PURE__*/_jsx(\"div\",{style:{width:`${displayProgress}%`,height:\"100%\",borderRadius,transition:\"width 1000ms ease-out\",position:\"relative\"},children:template&&/*#__PURE__*/React.isValidElement(template)?cloneSlotWithUniqueLayout(template,{style:{width:\"100%\",height:\"100%\",borderRadius}},\"fill\"):/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",borderRadius,background:fillColor}})})});}SoundeeDealProgress.displayName=\"Soundee Deal Progress\";const dealProgressDefaults={height:8,borderRadius:99,background:\"rgba(255,255,255,0.10)\",fillColor:\"#c8a06a\"};SoundeeDealProgress.defaultProps=dealProgressDefaults;addPropertyControls(SoundeeDealProgress,{fill:{type:ControlType.Slot,title:\"Fill\",maxCount:1,description:\"Optional custom fill layer. When empty, Fill Color paints the progress segment.\"},height:{type:ControlType.Number,title:\"Height\",defaultValue:8,min:2,max:64,step:1,unit:\"px\"},borderRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:99,min:0,max:999,step:1,unit:\"px\"},background:{type:ControlType.Color,title:\"Track\",defaultValue:\"rgba(255,255,255,0.10)\",description:\"Background track behind the fill.\"},fillColor:{type:ControlType.Color,title:\"Fill Color\",defaultValue:\"#c8a06a\",hidden:props=>!!props.fill,description:\"Default fill when no Fill slot is connected.\"},progress:{type:ControlType.Number,title:\"Progress\",min:0,max:100,step:1,description:\"0–100. Canvas preview defaults to 50 when empty. On the live site, leave unset to follow the most relevant cart bulk deal, or bind to a parent row's dealProgress.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeDealProgress\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// deal_meter — the bar a bulk deal fills, and the card it sits in.\n//\n// Drawn twice before it existed: once in the cart's bundle nudge, once per row\n// in the deals dialog. The bar itself is `SoundeeDealProgress`, the component a\n// producer places on the canvas, so the built-in panels animate exactly the way\n// a designed one does.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import SoundeeDealProgress from\"https://framerusercontent.com/modules/5jo0ty6poiqjvdGF6y6j/As9FzbO5JBAQoWA4MUNZ/SoundeeDealProgress.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";/**\n * A tier's progress with its count beside it — \"2/10\" on the way there, a\n * check once it is applied.\n *\n * The count is what this tier is measured against: the threshold less what is\n * still needed. Not the licence's whole eligible pool (`itemsCount`, the\n * pro-page figure the slot props carry) — on a second tier of a ladder that\n * pool has already been spent by the first, and \"8/3\" next to \"add 2 more\"\n * contradicts itself. The bar is driven from the same ratio, for the same\n * reason.\n *\n * Spans, not divs: the cart renders this inside a button, whose content must\n * be phrasing.\n */export function DealMeter({tier,theme}){const toward=tier.active?tier.threshold:Math.max(0,Math.min(tier.itemsCount,tier.threshold-tier.itemsNeeded));const progress=tier.threshold>0?toward/tier.threshold*100:0;return /*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",alignItems:\"center\",gap:10},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",flex:\"1 1 auto\",minWidth:0},children:/*#__PURE__*/_jsx(SoundeeDealProgress,{progress:progress,height:6,borderRadius:99,background:tint(theme.textPrimary,10),fillColor:theme.accent})}),tier.active?// Decorative: the copy beside it already says applied.\n/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{flexShrink:0,display:\"inline-flex\",color:theme.accent},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"check\",size:14,strokeWidth:2.6})}):/*#__PURE__*/_jsxs(\"span\",{style:{flexShrink:0,color:theme.textSecondary,fontVariantNumeric:\"tabular-nums\",...theme.fontBody,fontSize:12,lineHeight:1},children:[toward,\"/\",tier.threshold]})]});}/**\n * The card a deal is presented in.\n *\n * A shade lighter than the surface rather than a solid fill: it has to sit on\n * the panel as a thing you can pick out, not as a second panel.\n */export function dealCardStyle(theme){return{display:\"flex\",flexDirection:\"column\",alignItems:\"stretch\",gap:10,width:\"100%\",boxSizing:\"border-box\",margin:0,padding:14,borderRadius:Math.min(theme.radius,14),border:`1px solid ${theme.border}`,background:tint(theme.textPrimary,4),color:theme.textPrimary,textAlign:\"left\"};}\nexport const __FramerMetadata__ = {\"exports\":{\"DealMeter\":{\"type\":\"reactComponent\",\"name\":\"DealMeter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"dealCardStyle\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{AnimatePresence,motion}from\"framer-motion\";import SoundeeArtwork from\"https://framerusercontent.com/modules/SvQ80p4cAsd88JPYWgze/Qq09ALzx6F4r8Yo3Oux8/SoundeeArtwork.js\";import{closeCart,getCartItems,getCartTotals,getCouponError,getDealStatus,getProcessedCartItems,isCartLoading,openDeals,removeCoupon,useCartStore}from\"https://framerusercontent.com/modules/ZkH7fJxhmqZcrglWy6e9/jg1afezs6T1tddWBHcwP/cart.js\";import{CmsLink}from\"https://framerusercontent.com/modules/W9fjsr5lFdL2bnlC2Asr/kcV7c8GVsKn0YK9iXBRH/cms_link_slot.js\";import{getCartItemSlotProps}from\"https://framerusercontent.com/modules/9x7VXjlV5gfMUVAvBTcS/v1RyXlg1VqUOWtFWlW3O/cart_item.js\";import{getDealRowSlotProps}from\"https://framerusercontent.com/modules/r9SvROsEGcDbE4laRLt2/7CGExb2dxCxdJCGIAo7e/deal.js\";import{useRemoveFromCart}from\"https://framerusercontent.com/modules/RQ0otqKV2TW3jegGju98/XwhJAw2aci08xJcT0P6r/cart.js\";import{useCheckout}from\"https://framerusercontent.com/modules/ESlLTzG1EEvsAHI9B2r5/g7WM9RzEcdEYm40vkPhl/checkout.js\";import{useStoreCurrency}from\"https://framerusercontent.com/modules/W0ZcNXEfQdPU6fsCwczm/6uJWn6X1lzsnoy33dN8O/currency.js\";import{useStoreDealCatalog}from\"https://framerusercontent.com/modules/pUKAa9TPHCgHkvFJDqxT/BA8RHilBxwZqG88iDQbh/deal_catalog.js\";import{ROW_MOTION}from\"https://framerusercontent.com/modules/GhX8WeO9A1GCVSf8fZPb/MMvnyDD49ddz2YRxdIZB/list_motion.js\";import{formatPrice}from\"https://framerusercontent.com/modules/XqjS6RmB7bMfpSFcXWq7/Oim1PnSjexxaxkFS6DgJ/format.js\";import{HoverButton,buttonStyles,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{openModal}from\"https://framerusercontent.com/modules/GWfspgjtCDM1TzNhU8zZ/qqg4ghGDLDMPIKD53Sop/modal.js\";import{SoundeeDialog}from\"https://framerusercontent.com/modules/O60C240xSqPv1FtQHfho/b7n5E3JqZkPRnWfzfUgL/SoundeeDialog.js\";import{DealMeter,dealCardStyle}from\"https://framerusercontent.com/modules/UFDkEkgdbZc6wdIpZmjN/8WWoruKqoDjyrcS5W7Oy/deal_meter.js\";/**\n * The cart, as a panel.\n *\n * Everything it knows comes from the cart store — `getCartItems` for the rows,\n * `getProcessedCartItems` for the prices after deals, `getCartTotals` for the\n * sum — and `useCheckout` starts the session, the same call the checkout button\n * makes. Editing a line reopens the license picker on that entity, which is why\n * the two live side by side in SoundeeModals.\n */export function CartPanel({theme,sheet,title,inset,width,isCanvas}){const cart=useCartStore();const{symbol:currency}=useStoreCurrency();const{start,loading:checkingOut,disabled}=useCheckout();// Store config, already cached by the time the panel opens: what the\n// teaser below lists when the cart has nothing for a deal to measure.\nconst catalog=useStoreDealCatalog();const items=getCartItems();const processed=getProcessedCartItems();const totals=getCartTotals();const buttons=buttonStyles(theme);const processedById=React.useMemo(()=>new Map(processed.map(p=>[p.entityId,p])),[processed]);const rowDivider=`1px solid ${theme.border}`;// The deal the card at the foot of the list talks about: the tier the cart\n// is closest to, or failing that the one it has. Read on every render\n// rather than memoised — it is a function of the items, and the store\n// subscription above already re-renders for those.\nconst{current,next}=getDealStatus();const featured=items.length?next??current:null;// Nothing to work towards — an empty cart, or one holding only items no\n// deal applies to — and the card turns into a teaser of what the store\n// offers, read from the catalog rather than the cart.\nconst teaser=!featured&&catalog?.length?catalog:null;const showCard=!!featured||!!teaser;return /*#__PURE__*/_jsx(SoundeeDialog,{open:cart.isOpen&&!isCanvas,onOpenChange:next=>{if(!next)closeCart();},theme:theme,sheet:sheet,side:!sheet,// Below the entity modals: Edit opens the license picker from a\n// cart row, and the picker has to land on top of the panel it was\n// opened from.\nlayer:-1,inset:inset,width:width,label:title,children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",minHeight:0,height:\"100%\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{padding:`${theme.padding}px ${theme.padding+40}px ${theme.padding}px ${theme.padding}px`,borderBottom:rowDivider,flexShrink:0},children:[/*#__PURE__*/_jsx(\"div\",{style:{color:theme.textPrimary,...theme.fontHeading},children:title}),/*#__PURE__*/_jsx(\"div\",{style:{marginTop:4,color:theme.textSecondary,...theme.fontBody},children:totals.count===1?\"1 item\":`${totals.count} items`})]}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:\"1 1 auto\",minHeight:0,overflowY:\"auto\",// The bundle card brings its own bottom padding, so\n// the surface behind it can run to the edge.\npadding:showCard?`${theme.padding}px ${theme.padding}px 0`:`${theme.padding}px`,display:\"flex\",flexDirection:\"column\"},children:[items.length===0?/*#__PURE__*/_jsx(\"div\",{style:{padding:\"48px 0\",textAlign:\"center\",color:theme.textSecondary,...theme.fontBody},children:\"Your cart is empty.\"}):/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:18,flexShrink:0,// A row on its way out is taken out of flow\n// and pinned to the nearest positioned\n// ancestor. Without this it would fly off\n// against the page instead of the panel.\nposition:\"relative\"},children:/*#__PURE__*/_jsx(AnimatePresence,{initial:false,mode:\"popLayout\",children:items.map(item=>/*#__PURE__*/_jsx(motion.div,{...ROW_MOTION,children:/*#__PURE__*/_jsx(CartRow,{item:item,processed:processedById.get(item.entityId),theme:theme,currency:currency})},item.entityId))})}),showCard&&/*#__PURE__*/_jsx(\"div\",{style:{// Pinned to the foot of the list: rows scroll\n// under it, and a short cart still ends on it\n// — `margin-top: auto` is what sends it down\n// when the rows fall short of the panel.\nposition:\"sticky\",bottom:0,zIndex:1,flexShrink:0,margin:`auto -${theme.padding}px 0`,padding:`20px ${theme.padding}px ${theme.padding}px`,background:`linear-gradient(to bottom, transparent, ${theme.surface} 20px)`},children:featured?/*#__PURE__*/_jsx(DealNudge,{tier:featured,theme:theme,currency:currency,bulkDiscount:totals.bulkDiscount}):/*#__PURE__*/_jsx(DealTeaser,{catalog:teaser,theme:theme})})]}),/*#__PURE__*/_jsxs(\"div\",{style:{flexShrink:0,padding:theme.padding,borderTop:rowDivider,display:\"flex\",flexDirection:\"column\",gap:14},children:[/*#__PURE__*/_jsx(CouponLines,{coupons:totals.coupons,error:getCouponError(),empty:items.length===0,theme:theme,currency:currency}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"baseline\",justifyContent:\"space-between\",gap:12},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:theme.textSecondary,...theme.fontBody},children:\"Subtotal\"}),/*#__PURE__*/_jsx(\"span\",{style:{color:theme.textPrimary,fontVariantNumeric:\"tabular-nums\",...theme.fontHeading,fontSize:30},children:formatPrice(totals.total,currency)})]}),/*#__PURE__*/_jsxs(HoverButton,{onClick:event=>start(event),disabled:disabled,hoverStyle:buttons.primary.hoverStyle,activeStyle:buttons.primary.activeStyle,style:{...buttons.primary.style,opacity:disabled?.5:1,cursor:disabled?\"default\":\"pointer\"},children:[!checkingOut&&/*#__PURE__*/_jsx(SoundeeIcon,{name:\"cart\",size:16}),checkingOut?\"Opening checkout…\":\"Go to checkout\"]})]})]})});}/**\n * The coupons on the cart, just above the total they come off: the code, what\n * it gives, and what it takes off this cart — or why it takes nothing. Also the\n * one place a code that did not take says so, which is how a bad\n * `?snd_coupon=` link reports itself.\n */function CouponLines({coupons,error,empty,theme,currency}){if(!coupons.length&&!error)return null;const small={...theme.fontBody,fontSize:13};return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:8},children:[coupons.map(({coupon,discount,applies})=>/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:12},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:8,minWidth:0},children:[/*#__PURE__*/_jsx(\"span\",{style:{flexShrink:0,padding:\"3px 8px\",borderRadius:Math.min(theme.radius,6),border:`1px dashed ${theme.border}`,color:theme.textPrimary,...small,fontWeight:600,letterSpacing:\"0.04em\"},children:coupon.name}),/*#__PURE__*/_jsx(\"span\",{style:{color:applies||empty?theme.textSecondary:theme.danger,...small,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:applies?coupon.amount_off_string:empty?`${coupon.amount_off_string} \\xb7 add something to use it`:\"Not applicable to these items\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:6,flexShrink:0},children:[applies&&/*#__PURE__*/_jsxs(\"span\",{style:{color:theme.success,fontVariantNumeric:\"tabular-nums\",...small,fontWeight:600},children:[\"−\",formatPrice(discount,currency)]}),/*#__PURE__*/_jsx(HoverButton,{onClick:()=>void removeCoupon(coupon.id),\"aria-label\":`Remove coupon ${coupon.name}`,hoverStyle:{color:theme.textPrimary},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:24,height:24,padding:0,border:\"none\",borderRadius:999,background:\"transparent\",color:theme.textSecondary,cursor:\"pointer\"},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"close\",size:12})})]})]},coupon.id)),error&&/*#__PURE__*/_jsx(\"div\",{style:{color:theme.danger,...small},children:error})]});}function CartRow({item,processed,theme,currency}){const props=getCartItemSlotProps(item,processed);const{onClick:remove}=useRemoveFromCart(item.entityId);const loading=isCartLoading(item.entityId);return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",// Centred, not stretched. Stretching gave the right-hand column\n// the cover's full height to spread over, which pushed the\n// price to the ceiling and the bin to the floor — two lines of\n// text on the left, two lonely items on the right.\nalignItems:\"center\",gap:12,minWidth:0,opacity:loading?.5:1,transition:\"opacity 140ms ease\"},children:[/*#__PURE__*/_jsx(SoundeeArtwork,{entityID:item.entityId,imageSize:\"Small\",artworkSmall:props.artworkSmall,artworkMedium:props.artworkMedium,artworkLarge:props.artworkLarge,artworkColor:props.artworkColor,title:props.title,borderRadius:`${Math.min(theme.radius,10)}px`,loading:\"lazy\",style:{width:56,height:56,flexShrink:0}}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:\"1 1 0\",minWidth:0,display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",gap:4},children:[/*#__PURE__*/_jsx(CmsLink,{entityId:item.entityId,label:item.title,style:{color:theme.textPrimary,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",...theme.fontTitle},children:props.title}),/*#__PURE__*/_jsxs(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",gap:8,color:theme.textSecondary,...theme.fontBody},children:[props.licenseName||props.objectType,props.licenseName&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{opacity:.5},children:\"\\xb7\"}),/*#__PURE__*/_jsx(HoverButton,{onClick:()=>openModal(\"license\",item.entityId),hoverStyle:{background:tint(theme.accent,14)},style:{height:\"auto\",width:\"auto\",padding:\"2px 6px\",margin:\"-2px -6px\",borderRadius:6,border:\"none\",background:\"transparent\",color:theme.accent,cursor:\"pointer\",...theme.fontBody},children:\"Edit\"})]})]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{flexShrink:0,display:\"flex\",flexDirection:\"column\",alignItems:\"flex-end\",justifyContent:\"center\",gap:4},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:theme.textPrimary,whiteSpace:\"nowrap\",fontVariantNumeric:\"tabular-nums\",...theme.fontTitle},children:formatPrice(props.price,currency)}),/*#__PURE__*/_jsx(HoverButton,{onClick:remove,disabled:loading,\"aria-label\":`Remove ${props.title}`,hoverStyle:{background:tint(theme.danger,14),color:theme.danger},style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",// Sized to the line it shares, not to a comfortable tap\n// target — this is a desktop panel, and a 32px circle\n// beside 14px text is the thing you see first.\nwidth:26,height:26,// Pulls the glyph out to the panel's edge, so the round\n// hover area does not read as an indent.\nmarginRight:-4,border:\"none\",borderRadius:999,background:\"transparent\",color:theme.textSecondary,cursor:\"pointer\"},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"trash\",size:16})})]})]});}/**\n * The card at the foot of the list — the shell both contents share.\n *\n * The whole card is the button: it opens the deals overlay, where every tier\n * is laid out, so the card itself only has to say one thing. Everything inside\n * is a span, because a button's content must be phrasing.\n */function DealCard({title,theme,children}){return /*#__PURE__*/_jsxs(HoverButton,{onClick:()=>openDeals(),hoverStyle:{background:tint(theme.textPrimary,8),border:`1px solid ${tint(theme.textPrimary,24)}`},activeStyle:{background:tint(theme.textPrimary,12)},style:{...dealCardStyle(theme),// A button does not inherit the panel's font by default.\nfont:\"inherit\",cursor:\"pointer\"},children:[/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:12},children:[/*#__PURE__*/_jsx(\"span\",{style:{minWidth:0,color:theme.textPrimary,...theme.fontTitle},children:title}),/*#__PURE__*/_jsxs(\"span\",{style:{flexShrink:0,display:\"inline-flex\",alignItems:\"center\",gap:4,color:theme.accent,...theme.fontBody,fontSize:12,lineHeight:1},children:[\"View deals\",/*#__PURE__*/_jsx(SoundeeIcon,{name:\"arrowRight\",size:13,strokeWidth:2.2})]})]}),children]});}/**\n * The tier the cart is closest to — or the one it has — with its bar under it.\n *\n * The nudge sentence is the one a designed deal row receives, so the built-in\n * card and a canvas one never say different things about the same deal. The\n * applied state is worded like the overlay's rows instead, and the saving is\n * its own line in both states: the closest tier wins the card, so without it\n * a deal already taken on another licence would go unmentioned.\n */function DealNudge({tier,theme,currency,bulkDiscount}){const copy=getDealRowSlotProps(tier,0,{currency,bulkDiscount});return /*#__PURE__*/_jsxs(DealCard,{title:tier.active?\"Deal applied\":\"Build your bundle\",theme:theme,children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",color:theme.textSecondary,...theme.fontBody},children:tier.active?`${tier.dealString} is applied to your cart.`:copy.promoNudgeText}),bulkDiscount>0&&/*#__PURE__*/_jsxs(\"span\",{style:{display:\"block\",color:theme.accent,fontVariantNumeric:\"tabular-nums\",...theme.fontBody,fontSize:12},children:[\"You're saving \",formatPrice(bulkDiscount,currency)]}),/*#__PURE__*/_jsx(DealMeter,{tier:tier,theme:theme})]});}/** How many licences the teaser names before it says \"and N more\". */const TEASER_ROWS=3;/**\n * The tier with the lowest bar to clear — the honest hook under \"buy more,\n * pay less\". Producers often list the big bundle first, since the sequential\n * simulation rewards that order, but that is the last tier a visitor reaches.\n */function entryTier(entry){let best;let bestThreshold=Infinity;for(const deal of entry.deals){const threshold=deal.fixed?deal.buy:deal.buy+deal.free;if(threshold<bestThreshold){best=deal;bestThreshold=threshold;}}return best;}/**\n * The same card with nothing to measure: an empty cart, or one holding only\n * items no deal applies to. It names what the store offers instead — the\n * first tier per licence, from the catalog. No bar: a bar at zero reads as\n * broken, not as an invitation. The moment a first deal track lands in the\n * cart this becomes the nudge above, bar and all.\n */function DealTeaser({catalog,theme}){const entries=catalog.map(entry=>({entry,deal:entryTier(entry)})).filter(row=>!!row.deal);const shown=entries.slice(0,TEASER_ROWS);const more=entries.length-shown.length;return /*#__PURE__*/_jsx(DealCard,{title:\"Buy more, pay less\",theme:theme,children:/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",flexDirection:\"column\",gap:4},children:[shown.map(({entry,deal})=>/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",// Wraps rather than clips: a long licence name and\n    // its deal are both worth reading in full.\n    flexWrap:\"wrap\",alignItems:\"baseline\",gap:\"0 8px\",color:theme.textSecondary,...theme.fontBody},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:theme.textPrimary},children:entry.licenseName}),/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{opacity:.5},children:\"\\xb7\"}),/*#__PURE__*/_jsx(\"span\",{children:deal.dealString})]},entry.licenseId)),more>0&&/*#__PURE__*/_jsxs(\"span\",{style:{display:\"block\",color:theme.textSecondary,...theme.fontBody,fontSize:12},children:[\"and \",more,\" more\"]})]})});}\nexport const __FramerMetadata__ = {\"exports\":{\"CartPanel\":{\"type\":\"reactComponent\",\"name\":\"CartPanel\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{closeDeals,getCartTotals,getDealListRows,getProcessedCartItems,syncDealsClosed,syncDealsOpen,useCartStore}from\"https://framerusercontent.com/modules/ZkH7fJxhmqZcrglWy6e9/jg1afezs6T1tddWBHcwP/cart.js\";import{subscribeOverlayEvents}from\"https://framerusercontent.com/modules/nYNkrjG4SG2g3zpRI8vd/2NpFBOzmMwHK6O32tKsy/overlay.js\";import{useStoreCurrency}from\"https://framerusercontent.com/modules/W0ZcNXEfQdPU6fsCwczm/6uJWn6X1lzsnoy33dN8O/currency.js\";import{useStoreDealCatalog}from\"https://framerusercontent.com/modules/pUKAa9TPHCgHkvFJDqxT/BA8RHilBxwZqG88iDQbh/deal_catalog.js\";import{formatPrice}from\"https://framerusercontent.com/modules/XqjS6RmB7bMfpSFcXWq7/Oim1PnSjexxaxkFS6DgJ/format.js\";import{SoundeeDialog}from\"https://framerusercontent.com/modules/O60C240xSqPv1FtQHfho/b7n5E3JqZkPRnWfzfUgL/SoundeeDialog.js\";import{DealMeter,dealCardStyle}from\"https://framerusercontent.com/modules/UFDkEkgdbZc6wdIpZmjN/8WWoruKqoDjyrcS5W7Oy/deal_meter.js\";/** One card per licence, its tiers in the order the store lists them. */function groupByLicense(rows){const groups=[];const byId=new Map;for(const row of rows){let group=byId.get(row.licenseId);if(!group){group={licenseId:row.licenseId,licenseName:row.licenseName,tiers:[]};byId.set(row.licenseId,group);groups.push(group);}group.tiers.push(row);}return groups;}function tierStatus(tier){if(tier.active)return\"Applied to your cart\";const n=tier.itemsNeeded;const noun=n===1?\"track\":\"tracks\";// \"more\" only once there is something to add to.\nreturn tier.itemsCount>0?`Add ${n} more ${noun} to unlock`:`Add ${n} ${noun} to unlock`;}/**\n * Every bulk deal the store offers, and how close the cart is to each.\n *\n * Its own overlay rather than a second view inside the cart: it stacks over the\n * cart the way Edit raises the license picker over a row, and a producer can\n * open it from anywhere else — a pricing page, a banner — with a\n * `SoundeeOverlayOpen` named \"deals\".\n *\n * Listed from the store's catalog so a licence with nothing in the cart still\n * shows, at zero: the point of the page is what you could unlock, not only what\n * you are unlocking. The cart's own licences are the fallback while that loads\n * or when the store has no catalog to give.\n */export function BulkDeals({theme,sheet,title}){const cart=useCartStore();const{symbol:currency}=useStoreCurrency();const catalog=useStoreDealCatalog();// A designed button fires the overlay by name; this is what turns that\n// into the panel opening, the same way the cart's own button goes through\n// the store. `openDeals` fires the same event after it has set the state,\n// so the sync below is a no-op on that path.\nReact.useEffect(()=>subscribeOverlayEvents(event=>{if(event.name!==\"deals\")return;if(event.type===\"open\")syncDealsOpen();else syncDealsClosed();}),[]);const totals=getCartTotals();const processed=getProcessedCartItems();const rows=React.useMemo(()=>{const fromStore=catalog?.length?getDealListRows({scope:\"all\",catalogSource:\"store\",storeCatalog:catalog}):[];if(fromStore.length)return fromStore;return getDealListRows({scope:\"all\",allMode:\"fullLadder\"});// `cart.version` is what makes this recompute: the rows read the\n// store imperatively.\n// eslint-disable-next-line react-hooks/exhaustive-deps\n},[catalog,cart.version]);const groups=React.useMemo(()=>groupByLicense(rows),[rows]);// What each licence's deals take off, netted the way `bulkDiscount` is:\n// a fixed bundle raises its cheapest item to the bundle price, and\n// `totals.deals` carries only the positive lines, so summing those would\n// show a licence saving more than the header says the cart does.\nconst savedByLicense=React.useMemo(()=>{const map=new Map;for(const item of processed){if(!item.licenseId)continue;const delta=item.originalPrice-item.price;if(delta!==0){map.set(item.licenseId,(map.get(item.licenseId)??0)+delta);}}return map;},[processed]);return /*#__PURE__*/_jsxs(SoundeeDialog,{open:cart.dealsOpen,onOpenChange:next=>{if(!next)closeDeals();},theme:theme,sheet:sheet,label:title,children:[/*#__PURE__*/_jsxs(\"div\",{style:{// Room on the right for the shell's close button, so the\n// title cannot run under it however tight the padding.\npadding:`${theme.padding}px ${theme.padding+36}px ${theme.padding}px ${theme.padding}px`,borderBottom:`1px solid ${theme.border}`,flexShrink:0},children:[/*#__PURE__*/_jsx(\"div\",{style:{color:theme.textPrimary,...theme.fontHeading},children:title}),groups.length>0&&/*#__PURE__*/_jsx(\"div\",{style:{marginTop:4,color:theme.textSecondary,...theme.fontBody},children:totals.bulkDiscount>0?`You're saving ${formatPrice(totals.bulkDiscount,currency)}`:\"Add tracks on the same license to unlock a discount.\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{// The list scrolls, the header does not.\nflex:1,minHeight:0,overflowY:\"auto\",padding:theme.padding,display:\"flex\",flexDirection:\"column\",gap:10},children:[groups.length===0&&/*#__PURE__*/_jsx(\"div\",{style:{padding:\"24px 0\",textAlign:\"center\",color:theme.textSecondary,...theme.fontBody},children:\"No bulk deals right now.\"}),groups.map(group=>/*#__PURE__*/_jsx(LicenseDeals,{group:group,theme:theme,currency:currency,saved:savedByLicense.get(group.licenseId)??0},group.licenseId))]})]});}function LicenseDeals({group,theme,currency,saved}){return /*#__PURE__*/_jsxs(\"div\",{style:{...dealCardStyle(theme),gap:12},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"baseline\",justifyContent:\"space-between\",gap:12},children:[/*#__PURE__*/_jsx(\"span\",{style:{minWidth:0,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",color:theme.textPrimary,...theme.fontTitle},children:group.licenseName}),saved>0&&/*#__PURE__*/_jsxs(\"span\",{style:{flexShrink:0,color:theme.accent,fontVariantNumeric:\"tabular-nums\",...theme.fontBody,fontSize:12},children:[\"Saving \",formatPrice(saved,currency)]})]}),group.tiers.map(tier=>/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:8},children:[/*#__PURE__*/_jsx(\"div\",{style:{color:theme.textPrimary,...theme.fontBody},children:tier.dealString}),/*#__PURE__*/_jsx(DealMeter,{tier:tier,theme:theme}),/*#__PURE__*/_jsx(\"div\",{style:{color:tier.active?theme.accent:theme.textSecondary,...theme.fontBody,fontSize:12},children:tierStatus(tier)})]},tier.dealId))]});}\nexport const __FramerMetadata__ = {\"exports\":{\"BulkDeals\":{\"type\":\"reactComponent\",\"name\":\"BulkDeals\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r11 (2026-08-26) — OptInFields gained an optional\n// onSubmit so the inline email opt-in can open a dialog for the name the\n// mailing list requires. This file does not use it, but Framer does not rebuild\n// an importer when only an imported file changes, and a chain left on two\n// builds of one module is the bug that keeps coming back. Content change to\n// force it.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\n// ExitIntent — one offer, at the moment someone is leaving.\n//\n// The trigger is the pointer crossing the top edge of the window: that is the\n// move towards the address bar, the tab strip, the close button. Deliberately\n// narrower than the pro page's version (`assets/js/init/email-capture.js`),\n// which also fired on window blur and on any edge — blur means \"switched to\n// another app\", which on a phone is every notification, and the side edges are\n// where scrollbars and second monitors live.\n//\n// It never appears on touch: there is no pointer to leave with, so the only\n// signals available there are switching apps or scrolling up, and both punish\n// someone who is still reading.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{closeOpenOverlays}from\"https://framerusercontent.com/modules/JRBIzDVQbQd0NNrHrNE0/4Cvzs1UuB9ewpDZmR8om/close_overlays.js\";import{getOpenOverlayNames}from\"https://framerusercontent.com/modules/nYNkrjG4SG2g3zpRI8vd/2NpFBOzmMwHK6O32tKsy/overlay.js\";import{SoundeeDialog}from\"https://framerusercontent.com/modules/O60C240xSqPv1FtQHfho/b7n5E3JqZkPRnWfzfUgL/SoundeeDialog.js\";import{OptInFields,OptInSuccess}from\"https://framerusercontent.com/modules/XkTDWycQhRu9cQNbt68f/R3xa8mzJSE3AHA0hhuVk/OptInFields.js\";import{hasSubscribed,useOptInForm}from\"https://framerusercontent.com/modules/FlXurabJhE0c8Ztu9YHe/RY8shyS9z8962NId5OiH/state.js\";export const DEFAULT_EXIT_INTENT={enabled:false,heading:\"Before you go — 10% off\",description:\"Join the list and get a code for 10% off your first order, plus new beats as they drop.\",cta:\"Send me the code\",successHeading:\"Check your inbox\",successMessage:\"Your code is on its way. Welcome to the list.\",askName:true,phone:\"Off\",remindAfterDays:7};const SHOWN_KEY=\"soundee_exit_intent_shown\";/** Dismissed recently? The timestamp is this browser's, and never sent. */function shownRecently(days){try{const raw=window.localStorage.getItem(SHOWN_KEY);if(!raw)return false;const at=Number(raw);if(!Number.isFinite(at))return false;return Date.now()-at<days*24*60*60*1e3;}catch{return false;}}function markShown(){try{window.localStorage.setItem(SHOWN_KEY,String(Date.now()));}catch{}}export function ExitIntent({theme,settings,isCanvas}){const[open,setOpen]=React.useState(false);const fields={askName:settings.askName,phone:settings.phone};const form=useOptInForm(fields,\"exit-intent-opt-in\");React.useEffect(()=>{if(isCanvas||!settings.enabled)return;if(typeof window===\"undefined\")return;// No pointer, no exit intent. See the note at the top.\nif(!window.matchMedia(\"(pointer: fine)\").matches)return;if(hasSubscribed()||shownRecently(settings.remindAfterDays))return;let armed=true;const onLeave=event=>{if(!armed)return;// The top edge only, and only when the pointer really left: a\n// `mouseleave` also fires for an iframe or a select popup.\nif(event.clientY>0)return;if(event.relatedTarget)return;// Never over something the visitor already opened — the cart, a\n// licence picker. That is not someone leaving; that is someone\n// buying.\nif(getOpenOverlayNames().length>0)return;armed=false;markShown();setOpen(true);};document.addEventListener(\"mouseleave\",onLeave);return()=>document.removeEventListener(\"mouseleave\",onLeave);},[isCanvas,settings.enabled,settings.remindAfterDays]);// Anything the visitor had open wins the screen; this only ever appears on\n// an otherwise quiet page, so closing the rest is not a fight.\nReact.useEffect(()=>{if(open)closeOpenOverlays();},[open]);return /*#__PURE__*/_jsx(SoundeeDialog,{open:open&&!isCanvas,onOpenChange:next=>{if(!next)setOpen(false);},theme:theme,label:settings.heading||\"Subscribe\",children:/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:14,// Even on every side. The close button is cleared by the\n// heading's own right inset below, not by pushing the whole\n// panel in — that left the fields and the button visibly\n// off-centre, 36px further from the right edge than the left.\npadding:theme.padding},children:form.done?/*#__PURE__*/_jsx(OptInSuccess,{theme:theme,heading:settings.successHeading,message:settings.successMessage}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",// Room for the shell's close button.\npaddingRight:36,gap:6},children:[settings.heading&&/*#__PURE__*/_jsx(\"div\",{style:{color:theme.textPrimary,...theme.fontHeading},children:settings.heading}),settings.description&&/*#__PURE__*/_jsx(\"div\",{style:{color:theme.textSecondary,...theme.fontBody},children:settings.description})]}),/*#__PURE__*/_jsx(OptInFields,{form:form,fields:fields,theme:theme,cta:settings.cta})]})})});}\nexport const __FramerMetadata__ = {\"exports\":{\"DEFAULT_EXIT_INTENT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ExitIntentSettings\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ExitIntent\":{\"type\":\"reactComponent\",\"name\":\"ExitIntent\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-26) — ExitIntent's padding changed: the\n// close-button inset moved off the whole panel and onto the heading, so the\n// fields sit evenly. This file only imports it, and an importer does not\n// rebuild on its own.\n// soundee-core rebuild r11 (2026-08-26) — OptInFields gained an optional\n// onSubmit so the inline email opt-in can open a dialog for the name the\n// mailing list requires. This file does not use it, but Framer does not rebuild\n// an importer when only an imported file changes, and a chain left on two\n// builds of one module is the bug that keeps coming back. Content change to\n// force it.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\n// soundee-core republish (2026-08-24) — rebuild for the deal-relevance\n// change in lib/cart/nextDeal.tsx (importers do not rebuild on their own).\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{DEFAULT_MODAL_THEME,registerSoundeeModals,setModalTheme}from\"https://framerusercontent.com/modules/0GpgGzS00VxJis3gSiB4/xQvXV8rHdeXnAzSd0ksq/registry.js\";import{LicensePicker}from\"https://framerusercontent.com/modules/DDIHMf3werrNeXGOq6HO/vx67RteLPoinqjOlAO4Q/LicensePicker.js\";import{FreeDownload}from\"https://framerusercontent.com/modules/Gb0uOUmAEsBdwk7bW9hO/34ahuTVvGwHd3yuY4GRr/FreeDownload.js\";import{Share}from\"https://framerusercontent.com/modules/YH5bwniQZxQoYQd5L4V3/hBTG5hJrly19eziEJINA/Share.js\";import{AuthModal}from\"https://framerusercontent.com/modules/ZPorO7PPRscoZuz2vBRh/ueybl9YbZtNGlL8Y1qk8/AuthModal.js\";import{CartPanel}from\"https://framerusercontent.com/modules/J9pHBOCYuMvixpt0OAtG/2T5mWZRGSI7M7FEy7Xlv/CartPanel.js\";import{BulkDeals}from\"https://framerusercontent.com/modules/TU1fgxgQrmLqi1rr7uZS/op71DOcbhrIzDEz30F4e/BulkDeals.js\";import{DEFAULT_EXIT_INTENT,ExitIntent}from\"https://framerusercontent.com/modules/25XsMsXA46B7jVPDwvxN/8x2em0xjACbZ95C2SVAg/ExitIntent.js\";import{ensureScrollRestoration}from\"https://framerusercontent.com/modules/r0CAv0YpHCMOiaBy9POg/VepPLPXaPoYGah8pYdP2/history_cache.js\";import{ensureNavigationTracking}from\"https://framerusercontent.com/modules/5775FDVGOrb5R2emuJGi/A3sagwnssNR1ckXqVaAW/navigation_events.js\";import{registerCmsLinkTemplate}from\"https://framerusercontent.com/modules/W9fjsr5lFdL2bnlC2Asr/kcV7c8GVsKn0YK9iXBRH/cms_link_slot.js\";import{setSoundeeIdentity,useEnsureSoundeeSession}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";const DEFAULT_PANEL={maxWidth:460,padding:DEFAULT_MODAL_THEME.padding,surface:DEFAULT_MODAL_THEME.surface,border:DEFAULT_MODAL_THEME.border,scrim:DEFAULT_MODAL_THEME.scrim,radius:DEFAULT_MODAL_THEME.radius};const DEFAULT_TEXT={textPrimary:DEFAULT_MODAL_THEME.textPrimary,textSecondary:DEFAULT_MODAL_THEME.textSecondary,fontHeading:DEFAULT_MODAL_THEME.fontHeading,fontTitle:DEFAULT_MODAL_THEME.fontTitle,fontBody:DEFAULT_MODAL_THEME.fontBody};const DEFAULT_BUTTONS={accent:DEFAULT_MODAL_THEME.accent,accentText:DEFAULT_MODAL_THEME.accentText,fontButton:DEFAULT_MODAL_THEME.fontButton,buttonRadius:DEFAULT_MODAL_THEME.buttonRadius,buttonHeight:DEFAULT_MODAL_THEME.buttonHeight};/**\n * The overlays Soundee provides, and how they look.\n *\n * Place one on your template page. Everything that needs an overlay — the track\n * row's menu, add to cart, downloads, share — renders through this instead of\n * asking you to design each one. Remove it and those components fall back to\n * firing a named overlay, so a site built the old way keeps working.\n *\n * It renders nothing visible; only the overlays it owns, when they open.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function SoundeeModals({cmsLink,storeId=0,userId=0,layout=\"Desktop\",mobilePresentation=\"Drawer\",cartTitle=\"Your cart\",dealsTitle=\"Deals\",cartInset=16,cartWidth=400,exitIntent=DEFAULT_EXIT_INTENT,panel=DEFAULT_PANEL,text=DEFAULT_TEXT,buttons=DEFAULT_BUTTONS,transition,slideTransition,style}){// Before the session starts, and during render rather than in an effect:\n// the request goes out on the first commit, so an effect would be a beat\n// too late and the editor would load the demo store anyway. The call is\n// guarded and idempotent.\nsetSoundeeIdentity({userId,storeId});const isCanvas=RenderTarget.current()===RenderTarget.canvas;useEnsureSoundeeSession();const theme=React.useMemo(()=>({maxWidth:panel.maxWidth,padding:panel.padding,surface:panel.surface,border:panel.border,scrim:panel.scrim,radius:panel.radius,inputFill:panel.inputFill??DEFAULT_MODAL_THEME.inputFill,// Instances configured while the control's default missed its\n    // spread value carry a literal \"undefinedpx\" — invalid CSS that\n    // silently drops the whole shadow. Repair rather than trust.\n    shadow:panel.shadow&&!panel.shadow.includes(\"undefined\")?panel.shadow:DEFAULT_MODAL_THEME.shadow,danger:text.danger??DEFAULT_MODAL_THEME.danger,success:text.success??DEFAULT_MODAL_THEME.success,textPrimary:text.textPrimary,textSecondary:text.textSecondary,fontHeading:text.fontHeading??DEFAULT_MODAL_THEME.fontHeading,fontTitle:text.fontTitle??DEFAULT_MODAL_THEME.fontTitle,fontBody:text.fontBody??DEFAULT_MODAL_THEME.fontBody,accent:buttons.accent,accentText:buttons.accentText,fontButton:buttons.fontButton??DEFAULT_MODAL_THEME.fontButton,buttonRadius:buttons.buttonRadius,buttonHeight:buttons.buttonHeight,mobilePresentation,transition:transition??DEFAULT_MODAL_THEME.transition,slideTransition:slideTransition??DEFAULT_MODAL_THEME.slideTransition}),[panel,text,buttons,mobilePresentation,transition,slideTransition]);// Publish before paint so a component reading the theme in its first render\n// doesn't briefly use the defaults.\nReact.useLayoutEffect(()=>{setModalTheme(theme);},[theme]);// Published on the canvas too: the editor should show the same linked\n// titles the visitor gets, or a producer cannot tell whether it worked.\nReact.useEffect(()=>{return registerCmsLinkTemplate(cmsLink??null);},[cmsLink]);// Also here, not only on the catalog list. Installing patches `pushState`,\n// so it wants to be in place before the first navigation away — and this\n// sits on the template page, which mounts before any list does. Idempotent,\n// so both calling it is free, and a page with no list still restores.\nReact.useEffect(()=>{if(isCanvas)return;ensureScrollRestoration();// And the navigation tracker, for the same reason. It is what closes\n// the cart and the deals overlay when a link is clicked or the\n// pathname changes — but until now only a SoundeeOverlayBridge, a\n// SoundeeOverlayOpen, a row menu or an open full-screen player\n// installed it. A page with just this component and a cart button\n// had none of those, and its cart stayed open across navigations.\nensureNavigationTracking();},[isCanvas]);React.useEffect(()=>{if(isCanvas)return;// Registration is what tells add-to-cart and friends to use the built-in\n// overlays instead of firing a named one. Canvas never registers: the\n// editor should keep showing whatever the designer placed.\nreturn registerSoundeeModals();},[isCanvas]);// Nothing on the canvas: the overlays only exist at runtime, and a notice\n// in their place is a box the producer has to design around on every\n// template page. It stays selectable from the layers panel.\nif(isCanvas)return null;// `layout` is the same Desktop/Mobile switch the lists use, set per Framer\n// breakpoint. Deriving presentation from it rather than a media query keeps\n// one source of truth and avoids a server render that guesses wrong.\nconst sheet=layout===\"Mobile\"&&mobilePresentation===\"Drawer\";return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(LicensePicker,{theme:theme,sheet:sheet}),/*#__PURE__*/_jsx(FreeDownload,{theme:theme,sheet:sheet}),/*#__PURE__*/_jsx(Share,{theme:theme,sheet:sheet}),/*#__PURE__*/_jsx(AuthModal,{theme:theme}),/*#__PURE__*/_jsx(BulkDeals,{theme:theme,sheet:sheet,title:dealsTitle}),/*#__PURE__*/_jsx(ExitIntent,{theme:theme,settings:{...DEFAULT_EXIT_INTENT,...exitIntent},isCanvas:isCanvas}),/*#__PURE__*/_jsx(CartPanel,{theme:theme,sheet:sheet,title:cartTitle,inset:cartInset,width:cartWidth,isCanvas:isCanvas})]});}SoundeeModals.displayName=\"Soundee Setup\";const modalsDefaults={storeId:0,userId:0,layout:\"Desktop\",mobilePresentation:\"Drawer\",cartTitle:\"Your cart\",dealsTitle:\"Deals\",cartInset:16,cartWidth:400,exitIntent:DEFAULT_EXIT_INTENT,panel:DEFAULT_PANEL,text:DEFAULT_TEXT,buttons:DEFAULT_BUTTONS,transition:DEFAULT_MODAL_THEME.transition,slideTransition:DEFAULT_MODAL_THEME.slideTransition};SoundeeModals.defaultProps=modalsDefaults;addPropertyControls(SoundeeModals,{cmsLink:{type:ControlType.Slot,title:\"CMS Link\",maxCount:1,description:\"A component that takes an entity id and links to that item's CMS page. Connect one and every built-in title renders through it; leave it empty and titles link the way they do now.\\n\\nIt receives entityId, title and the row's text style, and must always render a label: not every entity has a CMS item, so when the lookup finds nothing it should fall back to the title it was given. Rendering nothing there leaves rows with no title at all.\"},// Written by the Soundee plugin, not typed by hand: it already knows which\n// store the producer is signed in to, and an id in the panel is one more\n// thing to get wrong. Hidden is a panel concern only — the plugin sets the\n// value through `setAttributes({ controls })` either way.\n//\n// The same props configure canvas, preview and the published website.\nstoreId:{type:ControlType.Number,title:\"Store ID\",defaultValue:0,min:0,step:1,hidden:()=>true},userId:{type:ControlType.Number,title:\"User ID\",defaultValue:0,min:0,step:1,hidden:()=>true},layout:{type:ControlType.Enum,title:\"Layout\",options:[\"Desktop\",\"Mobile\"],optionTitles:[\"Desktop\",\"Mobile\"],defaultValue:\"Desktop\",displaySegmentedControl:true,description:\"Set this per breakpoint, the same way you set it on the track list.\"},mobilePresentation:{type:ControlType.Enum,title:\"On Mobile\",options:[\"Drawer\",\"Dialog\"],optionTitles:[\"Drawer\",\"Dialog\"],defaultValue:\"Drawer\",displaySegmentedControl:true,hidden:props=>props.layout!==\"Mobile\",description:\"Drawer slides up from the bottom; Dialog stays centred.\"},cartTitle:{type:ControlType.String,title:\"Cart Title\",defaultValue:\"Your cart\",description:\"The cart slides in from the right on desktop and up as a drawer on mobile, following On Mobile above.\"},dealsTitle:{type:ControlType.String,title:\"Deals Title\",defaultValue:\"Deals\",description:'The bulk-deals overlay: every licence deal the store offers and how close the cart is to each. Opens from the bundle card in the cart, or from a SoundeeOverlayOpen named \"deals\".'},cartInset:{type:ControlType.Number,title:\"Cart Inset\",defaultValue:16,min:0,max:48,step:1,unit:\"px\",description:\"Space between the cart and the screen edges. Zero sits it flush and squares the attached corners; above zero it floats and takes Panel Radius all round.\"},cartWidth:{type:ControlType.Number,title:\"Cart Width\",defaultValue:400,min:300,max:640,step:10,unit:\"px\",description:\"Its own width, not the panel Max Width: the cart is a column of rows and the centred dialogs are paragraphs, so they want different measures.\"},exitIntent:{type:ControlType.Object,title:\"Exit Intent\",icon:\"effect\",buttonTitle:\"Opt-in\",defaultValue:DEFAULT_EXIT_INTENT,description:\"One offer, shown when the pointer leaves for the address bar. Desktop only — a phone has no pointer to leave with, and the signals that remain there fire while someone is still reading. It stays away from anyone who has already subscribed, and from a visitor with the cart or a licence picker open.\",controls:{enabled:{type:ControlType.Boolean,title:\"Show\",defaultValue:DEFAULT_EXIT_INTENT.enabled,enabledTitle:\"On\",disabledTitle:\"Off\"},heading:{type:ControlType.String,title:\"Heading\",defaultValue:DEFAULT_EXIT_INTENT.heading},description:{type:ControlType.String,title:\"Text\",displayTextArea:true,defaultValue:DEFAULT_EXIT_INTENT.description},cta:{type:ControlType.String,title:\"Button\",defaultValue:DEFAULT_EXIT_INTENT.cta},successHeading:{type:ControlType.String,title:\"Done Heading\",defaultValue:DEFAULT_EXIT_INTENT.successHeading},successMessage:{type:ControlType.String,title:\"Done Text\",displayTextArea:true,defaultValue:DEFAULT_EXIT_INTENT.successMessage},askName:{type:ControlType.Boolean,title:\"Name\",defaultValue:DEFAULT_EXIT_INTENT.askName,enabledTitle:\"Ask\",disabledTitle:\"Skip\"},phone:{type:ControlType.Enum,title:\"Phone\",options:[\"Off\",\"Optional\",\"Required\"],optionTitles:[\"Off\",\"Optional\",\"Required\"],defaultValue:DEFAULT_EXIT_INTENT.phone,displaySegmentedControl:true},remindAfterDays:{type:ControlType.Number,title:\"Ask Again\",defaultValue:DEFAULT_EXIT_INTENT.remindAfterDays,min:1,max:90,step:1,unit:\" days\",description:\"How long someone who closed it is left alone. Subscribing silences it for good.\"}}},panel:{type:ControlType.Object,title:\"Panel\",icon:\"color\",controls:{maxWidth:{type:ControlType.Number,title:\"Max Width\",defaultValue:460,min:320,max:900,step:10,unit:\"px\",description:\"Fills the available width up to this, then stops.\"},padding:{type:ControlType.Number,title:\"Padding\",defaultValue:DEFAULT_MODAL_THEME.padding,min:0,max:48,step:2,unit:\"px\",description:\"Inner spacing for the header, list and footer alike.\"},surface:{type:ControlType.Color,title:\"Surface\",defaultValue:DEFAULT_MODAL_THEME.surface},border:{type:ControlType.Color,title:\"Border\",defaultValue:DEFAULT_MODAL_THEME.border},scrim:{type:ControlType.Color,title:\"Backdrop\",defaultValue:DEFAULT_MODAL_THEME.scrim},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:DEFAULT_MODAL_THEME.radius,min:0,max:40,step:1,unit:\"px\"},inputFill:{type:ControlType.Color,title:\"Input Fill\",defaultValue:DEFAULT_MODAL_THEME.inputFill,description:\"The wash inside text fields and quiet cards across the overlays.\"},shadow:{type:ControlType.BoxShadow,title:\"Shadow\",defaultValue:DEFAULT_MODAL_THEME.shadow,description:\"The elevation under every overlay panel.\"}},defaultValue:DEFAULT_PANEL},text:{type:ControlType.Object,title:\"Text\",icon:\"color\",controls:{textPrimary:{type:ControlType.Color,title:\"Primary\",defaultValue:DEFAULT_MODAL_THEME.textPrimary},textSecondary:{type:ControlType.Color,title:\"Muted\",defaultValue:DEFAULT_MODAL_THEME.textSecondary},fontHeading:{type:ControlType.Font,title:\"Heading\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:DEFAULT_MODAL_THEME.fontHeading},fontTitle:{type:ControlType.Font,title:\"Title\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:DEFAULT_MODAL_THEME.fontTitle},fontBody:{type:ControlType.Font,title:\"Body\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:DEFAULT_MODAL_THEME.fontBody},danger:{type:ControlType.Color,title:\"Error\",defaultValue:DEFAULT_MODAL_THEME.danger,description:\"Error messages and destructive actions, like removing a cart line.\"},success:{type:ControlType.Color,title:\"Success\",defaultValue:DEFAULT_MODAL_THEME.success}},defaultValue:DEFAULT_TEXT,description:\"Heading, Title and Body set here also become the default type for row titles, meta lines and the search field across the site — fonts set on a component itself still win.\"},buttons:{type:ControlType.Object,title:\"Buttons\",icon:\"interaction\",controls:{accent:{type:ControlType.Color,title:\"Background\",defaultValue:DEFAULT_MODAL_THEME.accent},accentText:{type:ControlType.Color,title:\"Label\",defaultValue:DEFAULT_MODAL_THEME.accentText},fontButton:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:DEFAULT_MODAL_THEME.fontButton},buttonRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:DEFAULT_MODAL_THEME.buttonRadius,min:0,max:999,step:1,unit:\"px\"},buttonHeight:{type:ControlType.Number,title:\"Height\",defaultValue:DEFAULT_MODAL_THEME.buttonHeight,min:32,max:72,step:1,unit:\"px\"}},defaultValue:DEFAULT_BUTTONS,description:\"Your brand's buttons, in one place. Anything you change here also becomes the default for the buy, like and download buttons in lists, cards, carousels and the player — a colour or radius set on one of those components still wins there.\"},transition:{type:ControlType.Transition,title:\"Animation\",description:\"Framer's own transition editor. Applies to every overlay that fades in — dialogs and the track row menu.\"},slideTransition:{type:ControlType.Transition,title:\"Slide\",description:\"For the panels that come in from an edge: the cart, and the drawers on mobile. A spring by default, because they read as objects being thrown in rather than faded up.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeModals\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (6ca5d98)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,useSVGTemplate,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const Base=/*#__PURE__*/forwardRef(function(props,ref){return /*#__PURE__*/_jsx(\"svg\",{...props,ref:ref,children:props.children});});const MotionSVG=motion.create(Base);const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(MotionSVG,{...rest,layoutId:layoutId,ref:ref,children:children}):/*#__PURE__*/_jsx(\"svg\",{...rest,ref:ref,children:children});});const svg='<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 0 12 L 0 0 L 16.5 0 L 16.5 12 Z\" fill-opacity=\"var(--1m6trwb, 0)\" fill=\"var(--21h8s6, rgb(0, 0, 0))\" height=\"12px\" id=\"gwB_ZdJt6\" transform=\"translate(3.75 6)\" width=\"16.5px\"/><path d=\"M 0 0 L 16.5 0\" fill=\"transparent\" height=\"1px\" id=\"xGkn4qbwc\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(3.75 12)\" width=\"16.5px\"/><path d=\"M 0 0 L 16.5 0\" fill=\"transparent\" height=\"1px\" id=\"uQ9bOFKFt\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(3.75 6)\" width=\"16.5px\"/><path d=\"M 0 0 L 16.5 0\" fill=\"transparent\" height=\"1px\" id=\"hrURkUe9P\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(3.75 18)\" width=\"16.5px\"/></svg>';const getProps=({alpha,color,height,id,width,width1,...props})=>{return{...props,ezTt3ayMo:color??props.ezTt3ayMo??\"rgb(0, 0, 0)\",lschgej4H:width1??props.lschgej4H??1.5,qxTvv_EBh:alpha??props.qxTvv_EBh};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,ezTt3ayMo,lschgej4H,qxTvv_EBh,...restProps}=getProps(props);const href=useSVGTemplate(\"3559153988\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-iZmZi\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--1m6trwb\":qxTvv_EBh,\"--21h8s6\":ezTt3ayMo,\"--pgex8v\":lschgej4H,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-iZmZi { -webkit-mask: ${mask}; aspect-ratio: 1; display: block; mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"ezTt3ayMo\":\"color\",\"lschgej4H\":\"width1\",\"qxTvv_EBh\":\"alpha\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"List\",\"color\":{\"type\":\"variable\",\"value\":\"21h8s6\"},\"set\":{\"localId\":\"vectorSet/NGVKdicsm\",\"id\":\"NGVKdicsm\",\"moduleId\":\"omX0gWFPqDwhaiWwf6ab\"}}\n * @framerDisableUnlink true\n */const Icon=withCSS(Component,css,\"framer-iZmZi\");Icon.displayName=\"List\";export default Icon;addPropertyControls(Icon,{ezTt3ayMo:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},lschgej4H:{defaultValue:1.5,displayStepper:true,hidden:false,max:6,min:0,step:.5,title:\"Width\",type:ControlType.Number},qxTvv_EBh:{defaultValue:0,displayStepper:true,hidden:false,max:1,min:0,step:.1,title:\"Alpha\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"24\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerImmutableVariables\":\"true\",\"framerVariables\":\"{\\\"ezTt3ayMo\\\":\\\"color\\\",\\\"lschgej4H\\\":\\\"width1\\\",\\\"qxTvv_EBh\\\":\\\"alpha\\\"}\",\"framerVector\":\"{\\\"name\\\":\\\"List\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"21h8s6\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/NGVKdicsm\\\",\\\"id\\\":\\\"NGVKdicsm\\\",\\\"moduleId\\\":\\\"omX0gWFPqDwhaiWwf6ab\\\"}}\",\"framerDisableUnlink\":\"true\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"24\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{motion}from\"framer-motion\";export function SearchIcon(props){return /*#__PURE__*/ _jsx(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 256 256\",width:props.width,height:props.height,style:{...props.style,color:props.color},children:/*#__PURE__*/ _jsx(\"path\",{d:\"M232.49,215.51,185,168a92.12,92.12,0,1,0-17,17l47.53,47.54a12,12,0,0,0,17-17ZM44,112a68,68,0,1,1,68,68A68.07,68.07,0,0,1,44,112Z\",fill:\"currentColor\"})});}export function ClearIcon(props){return /*#__PURE__*/ _jsxs(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 256 256\",...props,children:[/*#__PURE__*/ _jsx(\"rect\",{width:\"256\",height:\"256\",fill:\"none\"}),/*#__PURE__*/ _jsx(\"path\",{d:\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm37.66,130.34a8,8,0,0,1-11.32,11.32L128,139.31l-26.34,26.35a8,8,0,0,1-11.32-11.32L116.69,128,90.34,101.66a8,8,0,0,1,11.32-11.32L128,116.69l26.34-26.35a8,8,0,0,1,11.32,11.32L139.31,128Z\",fill:\"currentColor\"})]});}export function SpinnerIcon(props){const borderWidth=3;return /*#__PURE__*/ _jsxs(\"div\",{style:{position:\"relative\",...props.style},children:[/*#__PURE__*/ _jsx(motion.div,{animate:{rotate:360},transition:{ease:\"linear\",duration:1,repeat:Infinity},style:{borderRadius:100,backgroundImage:`conic-gradient(from 270deg, transparent 0%, ${props.color} 100%)`,width:\"100%\",height:\"100%\"}}),/*#__PURE__*/ _jsx(\"div\",{style:{backgroundColor:props.backgroundColor,borderRadius:100,position:\"absolute\",top:borderWidth,left:borderWidth,bottom:borderWidth,right:borderWidth}})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"ClearIcon\":{\"type\":\"reactComponent\",\"name\":\"ClearIcon\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"SpinnerIcon\":{\"type\":\"reactComponent\",\"name\":\"SpinnerIcon\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchIcon\":{\"type\":\"reactComponent\",\"name\":\"SearchIcon\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Icons.map","export function Storage(name) {\n    this.ready = new Promise((resolve, reject)=>{\n        var request = window.indexedDB.open(location.origin);\n        request.onupgradeneeded = (e)=>{\n            this.db = e.target[\"result\"];\n            this.db.createObjectStore(\"store\");\n        };\n        request.onsuccess = (e)=>{\n            this.db = e.target[\"result\"];\n            resolve();\n        };\n        request.onerror = (e)=>{\n            this.db = e.target[\"result\"];\n            reject(e);\n        };\n    });\n}\nStorage.prototype.get = function(key) {\n    return this.ready.then(()=>{\n        return new Promise((resolve, reject)=>{\n            var request = this.getStore().get(key);\n            request.onsuccess = (e)=>resolve(e.target.result)\n            ;\n            request.onerror = reject;\n        });\n    });\n};\nStorage.prototype.getStore = function() {\n    return this.db.transaction([\n        \"store\"\n    ], \"readwrite\").objectStore(\"store\");\n};\nStorage.prototype.set = function(key, value) {\n    return this.ready.then(()=>{\n        return new Promise((resolve, reject)=>{\n            var request = this.getStore().put(value, key);\n            request.onsuccess = resolve;\n            request.onerror = reject;\n        });\n    });\n};\nStorage.prototype.delete = function(key, value) {\n    window.indexedDB.deleteDatabase(location.origin);\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"Storage\":{\"type\":\"function\"}}}","// @ts-ignore\nimport{Storage}from\"https://framerusercontent.com/modules/3Xi2AslpcDRhfyCVPmx3/d0Oobr5BHnVqZJQyMdGn/storage.js\";export const hashCode=s=>s.split(\"\").reduce((a,b)=>{a=(a<<5)-a+b.charCodeAt(0);return a&a;},0);export function corsProxy(url){return`https://cors-anywhere.herokuapp.com/${url}`;}export async function cachedResponse(url,cache=new Storage(\"cache\")){const cacheKey=url;const data=await cache.get(cacheKey);if(data){return data;}else{var req=new XMLHttpRequest;req.open(\"GET\",url,true);req.responseType=\"blob\";return new Promise((resolve,reject)=>{req.onload=async function(){if(this.status===200){await cache.set(url,this.response);resolve(this.response);}else{reject(new Error(`Response status ${this.status} ${this.statusText}`));}};req.onerror=function(error){reject(error);};req.send();});}}export async function setCachedData(url,dataToCache,cache=new Storage(\"cache\")){const cacheKey=url;const data=await cache.set(cacheKey,dataToCache);}export async function checkForCachedData(url,cache=new Storage(\"cache\")){const cacheKey=url;const data=await cache.get(cacheKey);if(data){return data;}else{return null;}}\nexport const __FramerMetadata__ = {\"exports\":{\"hashCode\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setCachedData\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"checkForCachedData\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"corsProxy\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"cachedResponse\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./cache.map","/*\n * cache\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/m2nL4qHNbqX9QCxsHsGL/b9aplVZjN51x28yfNK16/cache.js\"\n","import{checkForCachedData,setCachedData}from\"https://framer.com/m/cache-YMiL.js@b9aplVZjN51x28yfNK16\";const VERSION=1;const defaultLocaleId=\"default\";export function isDefaultLocaleId(localeId){return!localeId||localeId===\"default\";}const INDEX_KEY=\"searchIndexCache\";function getIndexKey(localeId){if(isDefaultLocaleId(localeId))return INDEX_KEY;return`${INDEX_KEY}-${localeId}`;}const METADATA_KEY=\"searchCacheMetadata\";function getMetadataKey(localeId){if(isDefaultLocaleId(localeId))return METADATA_KEY;return`${METADATA_KEY}-${localeId}`;}export async function getCachedIndex(localeId,indexHash){// A check here for metadata can be added later if we need to\n// migrate or expire the index. Though most likely, any version change\n// should result in deleting the cache and starting again.\nconst metadataKey=getMetadataKey(localeId);const indexKey=getIndexKey(localeId);const[metadata,cachedIndex]=await Promise.all([checkForCachedData(metadataKey),checkForCachedData(indexKey)]);if(cachedIndex){return{status:indexHash&&metadata?.indexHash===indexHash?\"fresh\":\"stale\",searchIndex:cachedIndex,indexHash:metadata?.indexHash};}return{status:\"miss\"};}export function setCachedIndex(localeId,index,indexHash){const indexKey=getIndexKey(localeId);setCachedData(indexKey,index);const metadata={version:VERSION,timestamp:Date.now(),indexHash};const metadataKey=getMetadataKey(localeId);setCachedData(metadataKey,metadata);}\nexport const __FramerMetadata__ = {\"exports\":{\"isDefaultLocaleId\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getCachedIndex\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setCachedIndex\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./cachedIndex.map","// Fake example data used for when the search component is in preview mode.\n// Note that the `url` value is used as a key in React, so it needs to be unique.\nexport const fakeResults={\"/\":{version:1,title:\"Example Search Result\",description:\"Description of search result.\",keywords:\"\",h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],p:[],url:\"/example-url/\",codeblock:[]},\"/example-1\":{version:1,title:\"Publish your Site to Search\",description:\"Try Site Search to instantly search your Framer site content.\",keywords:\"\",h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],p:[],url:\"/example-url/1/\",codeblock:[]},\"/example-2\":{version:1,title:\"Customise your Site Search\",description:\"Personalize everything from corner radius, to icon weight.\",keywords:\"\",h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],p:[],url:\"/example-url/2/\",codeblock:[]}};\nexport const __FramerMetadata__ = {\"exports\":{\"fakeResults\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./fakeResults.map","// This file is based on the Levenshtein algorithm. Originally from Koen but maybe he\n// got it from somewhere else.\nconst peq=new Uint32Array(65536);const myers_32=(a,b)=>{const n=a.length;const m=b.length;const lst=1<<n-1;let pv=-1;let mv=0;let sc=n;let i=n;while(i--){peq[a.charCodeAt(i)]|=1<<i;}for(i=0;i<m;i++){let eq=peq[b.charCodeAt(i)];const xv=eq|mv;eq|=(eq&pv)+pv^pv;mv|=~(eq|pv);pv&=eq;if(mv&lst){sc++;}if(pv&lst){sc--;}mv=mv<<1|1;pv=pv<<1|~(xv|mv);mv&=xv;}i=n;while(i--){peq[a.charCodeAt(i)]=0;}return sc;};const myers_x=(b,a)=>{const n=a.length;const m=b.length;const mhc=[];const phc=[];const hsize=Math.ceil(n/32);const vsize=Math.ceil(m/32);for(let i=0;i<hsize;i++){phc[i]=-1;mhc[i]=0;}let j=0;for(;j<vsize-1;j++){let mv=0;let pv=-1;const start=j*32;const vlen=Math.min(32,m)+start;for(let k=start;k<vlen;k++){peq[b.charCodeAt(k)]|=1<<k;}for(let i1=0;i1<n;i1++){const eq=peq[a.charCodeAt(i1)];const pb=phc[i1/32|0]>>>i1&1;const mb=mhc[i1/32|0]>>>i1&1;const xv=eq|mv;const xh=((eq|mb)&pv)+pv^pv|eq|mb;let ph=mv|~(xh|pv);let mh=pv&xh;if(ph>>>31^pb){phc[i1/32|0]^=1<<i1;}if(mh>>>31^mb){mhc[i1/32|0]^=1<<i1;}ph=ph<<1|pb;mh=mh<<1|mb;pv=mh|~(xv|ph);mv=ph&xv;}for(let k1=start;k1<vlen;k1++){peq[b.charCodeAt(k1)]=0;}}let mv1=0;let pv1=-1;const start1=j*32;const vlen1=Math.min(32,m-start1)+start1;for(let k2=start1;k2<vlen1;k2++){peq[b.charCodeAt(k2)]|=1<<k2;}let score=m;for(let i2=0;i2<n;i2++){const eq1=peq[a.charCodeAt(i2)];const pb1=phc[i2/32|0]>>>i2&1;const mb1=mhc[i2/32|0]>>>i2&1;const xv1=eq1|mv1;const xh1=((eq1|mb1)&pv1)+pv1^pv1|eq1|mb1;let ph1=mv1|~(xh1|pv1);let mh1=pv1&xh1;score+=ph1>>>m-1&1;score-=mh1>>>m-1&1;if(ph1>>>31^pb1){phc[i2/32|0]^=1<<i2;}if(mh1>>>31^mb1){mhc[i2/32|0]^=1<<i2;}ph1=ph1<<1|pb1;mh1=mh1<<1|mb1;pv1=mh1|~(xv1|ph1);mv1=ph1&xv1;}for(let k3=start1;k3<vlen1;k3++){peq[b.charCodeAt(k3)]=0;}return score;};const distance=(a,b)=>{if(a.length<b.length){const tmp=b;b=a;a=tmp;}if(b.length===0){return a.length;}if(a.length<=32){return myers_32(a,b);}return myers_x(a,b);};const closest=(str,arr)=>{let min_distance=Infinity;let min_index=0;for(let i=0;i<arr.length;i++){const dist=distance(str,arr[i]);if(dist<min_distance){min_distance=dist;min_index=i;}}return arr[min_index];};export{closest,distance};\nexport const __FramerMetadata__ = {\"exports\":{\"closest\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"distance\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./fuzzySearch.map","export const localStorageDebugFlag=(()=>{try{return typeof window!==\"undefined\"&&window.localStorage.__framerDebugSearch===\"true\";}catch(e){// localStorage not available\n}})();const groupsRegex=/[A-Z]{2,}|[A-Z][a-z]+|[a-z]+|[A-Z]\\d*|\\d+/gu;function capitalizeFirstLetter(value){return value.charAt(0).toUpperCase()+value.slice(1);}export function titleCase(value){const groups=value.match(groupsRegex)||[];return groups.map(capitalizeFirstLetter).join(\" \");}export function clampText(text,maxLength){const textLength=text.length;if(textLength<=maxLength){return text;}const slicedText=text.slice(0,maxLength);if(textLength>maxLength){return slicedText+\"…\";}return slicedText;}export function isEmptyObject(object){return Object.keys(object).length===0;}export function createLogger(showOutput){function log(...data){console.log(Date.now(),...data);}function time(label){console.time(label);}function timeEnd(label){console.timeEnd(label);}function noop(){}if(!showOutput){return{log:noop,time:noop,timeEnd:noop};}return{log,time,timeEnd};}export const DEFAULT_FONT_FAMILY=`\"Inter\", system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;export function getFontFamily(theme){if(theme.inputFont?.fontFamily)return theme.inputFont.fontFamily;if(theme.titleFont?.fontFamily)return theme.titleFont.fontFamily;if(theme.subtitleFont?.fontFamily)return theme.subtitleFont.fontFamily;return DEFAULT_FONT_FAMILY;}export function animationKeyFromLayout(layout){return`${layout}Animation`;}export const safeDocument=typeof document!==\"undefined\"?document:null;export const safeWindow=typeof window!==\"undefined\"?window:null;const metaTagSelector='meta[name=\"framer-search-index\"]';export function getMetaTagContent(){const metaTag=safeDocument?.querySelector(metaTagSelector);if(!metaTag)return undefined;const metaTagContent=metaTag.getAttribute(\"content\");return metaTagContent;}export const checkIfOverLimit=()=>{return getMetaTagContent()===\"limit-reached\";};export function stripLocaleSlugFromPath(url,localeSlug){if(!localeSlug)return url;const localeSlugWithSlash=`/${localeSlug}`;if(url.startsWith(localeSlugWithSlash)){return url.slice(localeSlugWithSlash.length);}}/**\n * @param isHighPriority If true and `scheduler.yield` is not available, the function will either use `postTask` or if also not available, return a resolved promise.\n */export function yieldToMain(isHighPriority){if(\"scheduler\"in window){// see https://github.com/WICG/scheduling-apis/blob/main/explainers/yield-and-continuation.md\n// \"user-blocking\" is the highest priority and creates a paint opportunity.\n// \"user-visible\" is the default, creates a paint opportunity, but has more potential to be delayed (by \"user-blocking\" tasks).\nconst options={priority:isHighPriority?\"user-blocking\":\"user-visible\"};if(\"yield\"in scheduler)return scheduler.yield(options);if(\"postTask\"in scheduler)return scheduler.postTask(()=>{},options);}if(isHighPriority){// `setTimeout` could suffer from being delayed for longer: https://developer.chrome.com/blog/introducing-scheduler-yield-origin-trial#the_problem_with_current_yielding_strategies\n// so for browsers not supporting yield, we guarantee execution for high priority actions, but do not guarantee a paint opportunity as trade-off.\nreturn Promise.resolve();}return new Promise(resolve=>{setTimeout(resolve,0);});}\nexport const __FramerMetadata__ = {\"exports\":{\"safeWindow\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"stripLocaleSlugFromPath\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"titleCase\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"safeDocument\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localStorageDebugFlag\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createLogger\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"animationKeyFromLayout\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"clampText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"yieldToMain\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getMetaTagContent\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"checkIfOverLimit\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getFontFamily\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isEmptyObject\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_FONT_FAMILY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./utils.map","// @ts-ignore\nimport{useLocaleInfo}from\"framer\";import{clamp}from\"framer-motion\";import{useEffect,useState,useTransition}from\"react\";import{SearchResultTitleType}from\"https://framerusercontent.com/modules/tV9haTHllpHHc9Fjue2H/wgITiHCOZBBo33pin0wW/SearchModal.js\";import{getCachedIndex,setCachedIndex,isDefaultLocaleId}from\"https://framerusercontent.com/modules/uU1mtMKXsrVAg8N5hW7w/v7gDLwKJgQ5vAsFHxY4H/cachedIndex.js\";import{fakeResults}from\"https://framerusercontent.com/modules/K9JZRwJcE6slDAf8rUmh/mJ54py1Ecnn1RoC4N1m4/fakeResults.js\";import{distance}from\"https://framerusercontent.com/modules/TwRgbWuhHeB95MPifel4/YW8Hlm59FG3PajbrVsaR/fuzzySearch.js\";import{createLogger,localStorageDebugFlag,safeDocument,safeWindow,stripLocaleSlugFromPath,yieldToMain}from\"https://framerusercontent.com/modules/MWsEnYfRnoOQq31DN4ql/fxR5MNtgeSOU8Mj4iY9n/utils.js\";const{log,time,timeEnd}=createLogger(localStorageDebugFlag);function isValidUrl(url){try{new URL(url);return true;}catch(_error){return false;}}const splitWordsRegex=(()=>{try{// Regex lookbehind is used to ignore ampersands when splitting\n// words. For example \"H&M\" will not be split and is considered as\n// one word, but \"H & M\" will be split.\n// However, some browsers (like Safari iOS 15) don't support\n// lookbehind and will crash. When it's not supported, fallback to\n// a safer regex that always splits ampersands.\nconst regex=RegExp(\"[\\\\s.,;!?\\\\p{P}\\\\p{Z}]+(?<!\\\\p{L}&)(?!&\\\\p{L})\",\"u\");\"\".split(regex);return regex;}catch{log(\"Falling back to regex without lookbehind\");return RegExp(\"[\\\\s.,;!?\\\\p{P}\\\\p{Z}]+\",\"u\");}})();function splitWords(text){return text.split(splitWordsRegex);}function getUniqueWords(str){const words=splitWords(str).filter(word=>word.trim()&&word.length>0);return new Set(words);}const normalizeRegex=/[\\u0300-\\u036f]/g;/**\n * Replace accented characters with equivilant non-accented versions and\n * make everything lowercase.\n */function getNormalizedString(text){if(Array.isArray(text)){return text.map(getNormalizedString);}return text.normalize(\"NFD\")// From: https://stackoverflow.com/a/37511463\n.replace(normalizeRegex,\"\").toLowerCase();}const normalizedItemCache=new WeakMap;function getNormalizedItemFromCache(item){const cached=normalizedItemCache.get(item);if(cached)return cached;const normalizedItem=getNormalizedItem(item);normalizedItemCache.set(item,normalizedItem);return normalizedItem;}function getNormalizedItem(item){const normalizedItem={};for(const key in item){if(item.hasOwnProperty(key)){const value=item[key];if(typeof value===\"string\"){normalizedItem[key]=getNormalizedString(value);continue;}if(Array.isArray(value)){normalizedItem[key]=getNormalizedString(value);continue;}normalizedItem[key]=value;}}return normalizedItem;}function getMatchRange(currentRange,start,end){const result={...currentRange};if(start<result.start){result.start=start;}if(end>result.end){result.end=end;}return result;}/**\n * Score index item based on the contents of it's fields such as title, description, headings etc.\n *\n * Note that this does not normalize the item or query. Normalization is expected to happen\n * before passing the data into this.\n */function getScoreForSearchIndexItem(item,query,words,fullQuery){let score=0;const match={title:{start:Infinity,end:0},description:{start:Infinity,end:0}};const urlWords=getUniqueWords(item.url);// Match query based on words in the URL so that random strings inside\n// other strings are not matched.\nif(urlWords.has(query)){score+=10;}// Really boost single word queries that match single word URLs.\nif(words.size===1&&urlWords.size===1&&urlWords.values().next().value===query){score+=score*5;}// Score shorter URLs higher so `/pricing` is before `/lala/pricing`.\nif(score>0){const splitLength=item.url.split(\"/\").length;score+=clamp(10-splitLength,0,splitLength);}const titleWords=getUniqueWords(item.title);// Prefer full word matches in the title.\nif(titleWords.has(query)){score+=10;}const titleIndex=item.title.indexOf(query);if(titleIndex!==-1){score+=10;// TODO: Matches are currently not used, but they can be used in the\n// future to add text highlighting.\nmatch.title=getMatchRange(match.title,titleIndex,titleIndex+query.length);}// If the full query is close to being the heading, score this highly as\n// the user is most likely looking for that exact title.\nif(distance(item.title,fullQuery)<=2){score+=score*10;}// Fuzzy match full words in the title.\nfor(const titleWord of titleWords){const distanceScore=distance(query,titleWord);// Small distance score helps with small typos.\nif(distanceScore<=2){score+=10;}}const headings=[...item.h1,...item.h2,...item.h3,...item.h4,...item.h5,...item.h6];for(const heading of headings){const headingWords=getUniqueWords(heading);// If the full query is close to being the heading, score this highly as\n// the user is most likely looking for that exact title.\nif(distance(heading,fullQuery)<=2){score+=score*10;}// Bias headings that start with the query as this helps when\n// you know the title you are searching for.\nif(heading.startsWith(query)){score+=10;}if(headingWords.has(query)){score+=10;}if(heading.includes(query)){score+=1;}// Fuzzy match full words in headings.\nfor(const headingWord of headingWords){const distanceScore=distance(query,headingWord);if(distanceScore<=2){score+=1;}}}const descriptionIndex=item.description.indexOf(query);if(descriptionIndex!==-1){score+=10;match.description=getMatchRange(match.description,descriptionIndex,descriptionIndex+query.length);}for(const p of item.p){if(p.includes(query)){score+=.5;}}for(const codeblock of item.codeblock){// If the full query is close to being the codeblock, score this highly as\n// the user is most likely looking for that exact code.\nif(distance(codeblock,fullQuery)<=2){score*=10;}if(codeblock.includes(fullQuery)){score+=10;}if(codeblock.includes(query)){score+=.5;}}return{score,match};}function getSearchIndexItemScore(item,normalizedQuery){const normalizedItem=getNormalizedItemFromCache(item);const queryWords=getUniqueWords(normalizedQuery);let total=0;for(const queryWord of queryWords){const{score}=getScoreForSearchIndexItem(normalizedItem,queryWord,queryWords,normalizedQuery);total+=score;}return total;}function useRawSearch(index,query,settings){const[results,setResults]=useState(null);const[,startTransition]=useTransition();useEffect(()=>{const abortController=new AbortController;executeRawSearch(index,query,settings,abortController.signal).then(res=>{if(!abortController.signal.aborted){startTransition(()=>{setResults(res);});}}).catch(err=>{if(err.name!==\"AbortError\"){console.error(\"Search failed:\",err);}});return()=>{abortController.abort();};},[index,query]);return{results:results??[]};}const QUANTUM=32// ms, 2*16ms (2 frames on 60 hz)\n;async function executeRawSearch(index,query,settings,signal){const path=safeWindow?.location.pathname;time(\"query\");const normalizedQuery=getNormalizedString(query);const results=[];const items=Object.values(index);let deadline=performance.now()+QUANTUM;async function yieldToMainIfNecessary(){if(performance.now()>=deadline){await yieldToMain();deadline=performance.now()+QUANTUM;}}for(let i=0;i<items.length;++i){if(performance.now()>=deadline){await yieldToMainIfNecessary();deadline=performance.now()+QUANTUM;}if(signal?.aborted)return[];const item=items[i];const score=getSearchIndexItemScore(item,normalizedQuery);if(score>(settings.minimumScore||0)&&(!path||item.url!==path)){const heading=item.h1.length&&item.h1[0];const title=settings?.titleType===SearchResultTitleType.Title?item.title:heading?heading:item.title;// Convert index item to result item.\nresults.push({url:item.url,title,description:item.description,body:[...item.p,item.codeblock].join(\" \"),score});}}await yieldToMainIfNecessary();if(signal?.aborted)return[];const sorted=results.sort((itemA,itemB)=>itemB.score-itemA.score);timeEnd(\"query\");await yieldToMainIfNecessary();if(signal?.aborted)return[];return results.slice(0,20);}function getIndexedScopedToUrl(index,rawUrlScope,localeSlug){const scopedIndex={};const baseScopeUrlHasVariable=rawUrlScope.includes(\":\");const urlUpToPathVariable=rawUrlScope.split(\":\")[0];const urlScope=urlUpToPathVariable.length>1?urlUpToPathVariable:\"\";for(const url in index){const strippedURL=stripLocaleSlugFromPath(url,localeSlug);if(!strippedURL.startsWith(urlScope)){continue;}if(baseScopeUrlHasVariable&&url.length<=urlScope.length){continue;}scopedIndex[url]=index[url];}return scopedIndex;}export function useSearch(query,settings){const[searchIndex,_setSearchIndex]=useState({});const[status,setStatus]=useState(\"loading\");const{results}=useRawSearch(searchIndex,query,settings);const{activeLocale}=useLocaleInfo();const localeId=activeLocale?.id;// Seperate setter function so that the URL scope is always applied\n// to indexes loaded from either the cache or network.\nfunction setSearchIndex(index,options={ignoreScope:false}){let scopedIndex=index;if(settings.urlScope&&!options.ignoreScope){scopedIndex=getIndexedScopedToUrl(index,settings.urlScope,activeLocale?.slug);log(\"Using URL scope\",settings.urlScope);}_setSearchIndex(scopedIndex);}useEffect(()=>{async function loadSearchIndex(){setStatus(\"loading\");const baseUrl=getBaseUrl(\"framer-search-index\");if(!baseUrl){setStatus(\"no-meta-tag-found\");setSearchIndex(fakeResults,{ignoreScope:true});log(\"No meta tag found\");return;}// If a cached index exists, use the cached version until the latest one from the network loads.\nconst cacheResult=await getCachedIndex(localeId,baseUrl);if(cacheResult.status!==\"miss\"){setSearchIndex(cacheResult.searchIndex);setStatus(\"loading-with-cache\");log(\"Using cached index\");if(cacheResult.status===\"fresh\")return;}const searchIndexUrl=getSearchIndexUrl(baseUrl,localeId);const response=await fetch(searchIndexUrl);// Happy case.\nif(response.ok){const downloadedIndex=await response.json();setSearchIndex(downloadedIndex);setCachedIndex(localeId,downloadedIndex,baseUrl);setStatus(\"success\");log(\"Using downloaded index\");return;}// Unexpected error.\n// Our \"sites\" CDN currently returns 403s for missing files.\nconst isNotFound=response.status===403||response.status===404;if(!isNotFound){throw new Error(response.statusText);}// Index is likely still being generated.\nlog(\"Index not found\");const fallbackBaseUrl=getBaseUrl(\"framer-search-index-fallback\");if(!fallbackBaseUrl){if(cacheResult.status===\"miss\"){setStatus(\"pending-index-generation\");log(\"No fallback, no cache\");}else{log(\"No fallback, using cache\");}return;}const fallbackSearchIndexUrl=getSearchIndexUrl(fallbackBaseUrl,localeId);const fallbackResponse=await fetch(fallbackSearchIndexUrl);if(fallbackResponse.ok){const downloadedIndex=await fallbackResponse.json();setSearchIndex(downloadedIndex);// It's safe to cache the fallback because if we're here, current cache is empty or stale.\nsetCachedIndex(localeId,downloadedIndex,fallbackBaseUrl);setStatus(\"success\");log(\"Using downloaded fallback index\");return;}if(cacheResult.status===\"miss\"){setStatus(\"pending-index-generation\");log(\"Fallback failed, no cache\");}else{log(\"Fallback failed, using cache\");}}loadSearchIndex().catch(error=>{// TODO: Check for error type here. If it's a network error,\n// we could do a few retries.\nsetStatus(\"error\");log(\"Failed to load search index\",error);});},[localeId]);log({status,results});return{results,status};}function getBaseUrl(name){return safeDocument?.querySelector(`meta[name=\"${name}\"]`)?.getAttribute(\"content\");}function getSearchIndexUrl(baseURL,localeId){if(isDefaultLocaleId(localeId))return baseURL;return baseURL.replace(\".json\",`-${localeId}.json`);}\nexport const __FramerMetadata__ = {\"exports\":{\"SearchIndex\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useSearch\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","export var Browser;(function(Browser){var isTouch=Browser.isTouch=()=>\"ontouchstart\"in window||navigator.maxTouchPoints>0;var isChrome=Browser.isChrome=()=>navigator.userAgent.toLowerCase().includes(\"chrome/\");var isWebKit=Browser.isWebKit=()=>navigator.userAgent.toLowerCase().includes(\"applewebkit/\");var isSafari=Browser.isSafari=()=>isWebKit()&&!isChrome();var isSafariDesktop=Browser.isSafariDesktop=()=>isSafari()&&!isTouch();var isWindows=Browser.isWindows=()=>/Win/.test(navigator.platform);var isMacOS=Browser.isMacOS=()=>/Mac/.test(navigator.platform);})(Browser||(Browser={}));\nexport const __FramerMetadata__ = {\"exports\":{\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./browser.map","// From: @framerjs/fresco/src/components/utils/useCallbackOnMouseMove.ts\nimport{useRef,useCallback}from\"react\";import{Browser}from\"https://framerusercontent.com/modules/PJVBcBLmDteTEAZh3J9Z/keXJyjyE9VnzUcDMayjg/browser.js\";/**\n * Webkit fires mousemove events if the pointer's coordination changes relative\n * to its container (e.g. if the container scrolls), or when a modifier key is\n * pressed, mousemove would fire even if the cursor did not actually move.\n * This helper compares the cursor position between mouse events, and fire the\n * callback only when its position changes.\n */ export const useCallbackOnMouseMove=(callback,mousePositionRef)=>{const prevPositionRef=useRef(null);return useCallback(event=>{if(!Browser.isSafari())return callback(event);const ref=mousePositionRef?mousePositionRef:prevPositionRef;const{clientX,clientY}=event;const prevCursorPosition=ref.current;ref.current={x:clientX,y:clientY};// Ignore mouse moves unless we have a position. Else it might be an\n// element that appears behind the mouse without the mouse moving.\nif(!prevCursorPosition){return;}if(prevCursorPosition.x!==clientX||prevCursorPosition.y!==clientY){return callback(event);}},[mousePositionRef,callback]);};\nexport const __FramerMetadata__ = {\"exports\":{\"useCallbackOnMouseMove\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Point\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useCallbackOnMouseMove.map","// Safari does not support `element.scrollIntoView({ block: \"nearest\" })`, so this\n// is a workaround for that.\nexport function scrollIntoView(targetElement,scrollElement,/** Additional spacing to add from the top or bottom of the scroll element viewport. */ {offsetTop,offsetBottom}){const targetElementBounds=targetElement.getBoundingClientRect();const scrollElementBounds=scrollElement.getBoundingClientRect();if(targetElementBounds.top<scrollElementBounds.top){const difference=scrollElementBounds.top-targetElementBounds.top;scrollElement.scrollTop=scrollElement.scrollTop-difference-offsetTop;}else if(targetElementBounds.bottom>scrollElementBounds.bottom){const topAligned=scrollElementBounds.top-targetElementBounds.top;const minOffset=scrollElement.scrollTop-topAligned-offsetTop;const bottomAligned=targetElementBounds.bottom-scrollElementBounds.bottom;const offset=scrollElement.scrollTop+bottomAligned+offsetBottom;scrollElement.scrollTop=Math.min(minOffset,offset);}}\nexport const __FramerMetadata__ = {\"exports\":{\"scrollIntoView\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./scrollIntoView.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useSearch}from\"https://framerusercontent.com/modules/MyBp84Z0p9nUcMimVMnY/IOZYtsQMauhTmjY894DM/useSearch.js\";import React,{useEffect,useState,useMemo,forwardRef,useRef,useDeferredValue,useLayoutEffect,useCallback,useImperativeHandle}from\"react\";import{Browser}from\"https://framerusercontent.com/modules/PJVBcBLmDteTEAZh3J9Z/keXJyjyE9VnzUcDMayjg/browser.js\";import{motion,clamp,useAnimate}from\"framer-motion\";import{SearchIcon,ClearIcon,SpinnerIcon}from\"https://framerusercontent.com/modules/LV9trClbmNwd5PVj9l8y/L4rFqMGNzGSwRZpGTGF3/Icons.js\";import{clampText,getFontFamily,localStorageDebugFlag,animationKeyFromLayout,stripLocaleSlugFromPath}from\"https://framerusercontent.com/modules/MWsEnYfRnoOQq31DN4ql/fxR5MNtgeSOU8Mj4iY9n/utils.js\";import{useCallbackOnMouseMove}from\"https://framerusercontent.com/modules/Gzef0nFihI9m9vZG45th/lIUxbZcreiDm2GzUkt3y/useCallbackOnMouseMove.js\";import{scrollIntoView}from\"https://framerusercontent.com/modules/eAnjm75CdfYT1Zz4BIaz/7KDSfnnyD1T3Ap75L4m8/scrollIntoView.js\";import{useLocaleInfo,// @ts-expect-error Internal API\nuseRouter,// @ts-expect-error Internal API\ninferInitialRouteFromPath}from\"framer\";const MAX_DESCRIPTION_LENGTH=120;const MODAL_MAX_HEIGHT=496;const VERTICAL_SPACING_MULTIPLIER=.6;function ClearButton({theme,type,onClick,text}){const shouldDisplayIcon=type===\"icon\";const iconOrText=shouldDisplayIcon?/*#__PURE__*/_jsx(ClearIcon,{style:{color:theme.inputIconColor,width:theme.inputIconSize,height:theme.inputIconSize}}):text;return /*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,fontSize:theme&&theme.titleFont&&theme.titleFont.fontSize?theme.titleFont.fontSize:15},children:/*#__PURE__*/_jsx(\"button\",{className:\"__framer-search-clear-button\",onClick:onClick,style:{fontFamily:\"inherit\",border:\"none\",background:\"none\",cursor:\"pointer\",display:\"flex\",textTransform:\"uppercase\",color:theme.inputIconColor,fontSize:\"0.75em\",padding:0},children:iconOrText})});}function Divider({theme,type}){const styles={background:theme.foregroundColor,height:1,flexShrink:0,opacity:.05};if(type===\"contained\"&&theme){styles.marginLeft=theme.horizontalSpacing;styles.marginRight=theme.horizontalSpacing;}return /*#__PURE__*/_jsx(\"div\",{style:styles});}export const Input=/*#__PURE__*/forwardRef(function Input(props,ref){const{value=\"\",status,autofocus,theme,placeholder,iconType,clearButtonType,onChange}=props;const[inputValue,setInputValue]=useState(value);const[isFocused,setIsFocused]=useState(false);const inputRef=useRef();useImperativeHandle(ref,()=>inputRef.current);React.useLayoutEffect(()=>{// Runs on unmount, fixes a bug in Safari that scrolls to the bottom\n// of the page when the input unmounts.\nreturn()=>{const inputElement=inputRef.current;if(!inputElement||inputElement!==document.activeElement)return;inputElement.blur();};},[]);const handleInputClick=()=>{if(inputRef.current){inputRef.current.focus();}};const handleClearClick=()=>{setInputValue(\"\");};useEffect(()=>{onChange(inputValue);},[inputValue]);const hasInputText=inputValue.length>0;const showClearButton=inputValue.length>0&&clearButtonType&&clearButtonType!==\"none\";const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);const searchIcon=iconType===\"custom\"&&theme.inputIconImage?/*#__PURE__*/_jsx(\"img\",{alt:\"icon alongside the Site Search input\",src:theme.inputIconImage.src,width:theme.inputIconSize,height:theme.inputIconSize,decoding:\"async\"}):/*#__PURE__*/_jsx(SearchIcon,{color:theme.inputIconColor,width:theme.inputIconSize,height:theme.inputIconSize});return /*#__PURE__*/_jsxs(\"div\",{role:\"search\",style:{...inputContainerStyle,fontFamily:getFontFamily(theme),paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,gap:12,paddingTop:verticalSpacing,paddingBottom:verticalSpacing,touchAction:\"none\"},onClick:handleInputClick,children:[/*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,display:\"flex\"},children:status===\"loading\"&&inputValue?/*#__PURE__*/_jsx(SpinnerIcon,{color:theme.inputIconColor,backgroundColor:theme.backgroundColor,style:{height:theme&&theme.inputIconSize,width:theme&&theme.inputIconSize}}):searchIcon}),/*#__PURE__*/_jsx(\"input\",{ref:inputRef,spellCheck:false,autoFocus:autofocus,style:{...inputStyle,WebkitTapHighlightColor:\"rgba(0,0,0,0)\",color:theme.foregroundColor,lineHeight:\"2em\",verticalAlign:\"baseline\",...theme.titleFont,...theme.inputFont,fontSize:theme.inputFontSize,// @ts-ignore\n\"--framer-search-placeholder-color\":theme.placeholderColor},onFocus:()=>{const scrollOffset=document.documentElement.scrollTop;document.documentElement.scrollTop=scrollOffset;},placeholder:placeholder,value:inputValue,onChange:()=>setInputValue(inputRef.current.value)}),showClearButton&&/*#__PURE__*/_jsx(ClearButton,{theme:theme,type:props.clearButtonType,text:props.clearButtonText,onClick:handleClearClick})]});});const inputContainerStyle={display:\"inline-flex\",alignItems:\"center\",flexShrink:0};const inputStyle={outline:\"none\",border:\"none\",background:\"transparent\",fontWeight:500,height:\"2em\",padding:0,width:\"100%\"};export const ResultRow=/*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function ResultRow(props,ref){const{index,result,prevMousePositionRef,type=\"contained\",subtitleType=\"path\",selected=false,theme,localeSlug,style,onMouseMove,onPointerDown,onNavigateTo}=props;const{url,title,score}=result;const urlPath=useMemo(()=>{return stripLocaleSlugFromPath(url,localeSlug);},[url,localeSlug]);const handleMouseMove=useCallbackOnMouseMove(event=>onMouseMove(event,index),prevMousePositionRef);const isContained=type===\"contained\";const borderRadius=isContained?clamp(0,Infinity,theme.borderRadius-theme.spacing):0;const subtitleText=subtitleType===\"path\"?urlPath:clampText(result.description,MAX_DESCRIPTION_LENGTH);const handleClick=event=>{event.preventDefault();onNavigateTo(result.url);};const focusTrap=event=>{event.preventDefault();};return /*#__PURE__*/_jsx(\"a\",{ref:ref,style:{textDecoration:\"none\"},href:result.url,onClick:handleClick,onMouseMove:handleMouseMove,onMouseDown:focusTrap,onPointerDown:event=>onPointerDown(event,index),children:/*#__PURE__*/_jsxs(\"li\",{style:{...resultContainer,...style,paddingTop:isContained?12:16,paddingBottom:isContained?12:16,color:theme.foregroundColor,position:\"relative\",paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing},children:[/*#__PURE__*/_jsx(\"div\",{style:{backgroundColor:theme.foregroundColor,position:\"absolute\",opacity:selected?.06:0,borderRadius,left:theme&&isContained?theme.spacing:0,right:theme&&isContained?theme.spacing:0,top:0,bottom:0}}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",overflow:\"hidden\",gap:4},children:[/*#__PURE__*/_jsx(\"h3\",{style:{...resultTitle,...theme.titleFont,lineHeight:\"1.4em\"},children:title}),/*#__PURE__*/_jsxs(\"p\",{style:{margin:0,color:theme.subtitleColor,...theme.subtitleFont,whiteSpace:\"nowrap\",overflow:\"hidden\",textOverflow:\"ellipsis\",lineHeight:\"1.4em\"},children:[localStorageDebugFlag?score:\"\",\" \",subtitleText]})]})]},result.url)});}));/**\n * Flexible gap used inside a flexbox layout to push down the quick menu\n * by 20% of the screen height, but also allow it to collapse to zero if\n * there is not enough vertical room.\n */function QuickMenuSpacer({onClick}){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",flexBasis:\"20vh\"},onClick:onClick});}const layoutContainerStyle={display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"flex-start\",gap:15,overflow:\"visible\"};function LayoutContainer({layoutType,theme,onKeyDown,onDismiss,children,modalOptions}){const layoutStyles=getLayoutBaseStyles(layoutType,theme);const style={...layoutContainerStyle,...layoutStyles,willChange:\"transform\",marginTop:layoutType===\"FixedTop\"?theme.offsetTop:0,height:layoutType===\"Sidebar\"?\"100%\":\"auto\",maxHeight:layoutType===\"QuickMenu\"?\"100%\":\"none\",justifyContent:layoutType===\"Sidebar\"?\"flex-end\":\"flex-start\",flexDirection:layoutType===\"Sidebar\"?\"column-reverse\":\"column\"};const innerStyle={...layoutContainerStyle,...layoutStyles,height:layoutType===\"Sidebar\"?\"100%\":\"auto\",maxHeight:layoutType===\"QuickMenu\"?\"100%\":\"none\",gap:layoutType===\"Sidebar\"?0:theme.gapBetweenStatusAndSearch,backgroundColor:layoutType===\"Sidebar\"?theme.backgroundColor:\"transparent\",justifyContent:layoutType===\"Sidebar\"?\"flex-end\":\"flex-start\",flexDirection:layoutType===\"Sidebar\"?\"column-reverse\":\"column\",originX:.5,originY:.5};function getContainerAnimation(){switch(layoutType){case\"FixedTop\":{const key=animationKeyFromLayout(\"FixedTop\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{y:-10,opacity:.2,transition:{duration:Browser.isTouch()?0:.15}};}break;}case\"QuickMenu\":{const key=animationKeyFromLayout(\"QuickMenu\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{scale:.95,opacity:0,y:0,x:0,rotate:0,transition:{type:\"spring\",stiffness:600,damping:40}};}break;}case\"Sidebar\":{const key=animationKeyFromLayout(\"Sidebar\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{x:-10,opacity:0,transition:{duration:.15}};}break;}}}const containerAnimation=getContainerAnimation();return /*#__PURE__*/_jsxs(\"div\",{style:style,onKeyDown:onKeyDown,onClick:event=>event.stopPropagation(),children:[layoutType===\"QuickMenu\"&&/*#__PURE__*/_jsx(QuickMenuSpacer,{onClick:onDismiss}),/*#__PURE__*/_jsx(motion.div,{initial:containerAnimation,animate:{opacity:1,scale:1,x:0,y:0,rotate:0},transition:containerAnimation?containerAnimation.transition:undefined,exit:{opacity:0,transition:{duration:0}},style:innerStyle,children:children})]});}function ModalContainer({layoutType,theme,children,heightIsStatic,heightTransition,heightDeps}){const style={// This `willChange` is required to avoid weird rendering issues where\n// parts of the search window won't redraw, which we observed in Safari 16.4.\nwillChange:\"transform\",backgroundColor:theme.backgroundColor,color:theme.foregroundColor,borderRadius:layoutType===\"QuickMenu\"?theme.borderRadius:0,width:\"100%\",display:\"flex\",flexDirection:\"column\",overflow:\"hidden\",boxShadow:layoutType!==\"Sidebar\"?theme.shadow:undefined,maxHeight:layoutType===\"QuickMenu\"?`min(${MODAL_MAX_HEIGHT}px, calc(100vh - 30px))`:undefined};// Opt-in Height Animations for the Search Quick Actions menu.\n// These are disabled by default, but can be enabled via props.\nconst[scope,animate]=useAnimate();useLayoutEffect(()=>{if(layoutType!==\"QuickMenu\"||heightIsStatic)return;const prevHeight=scope.current.offsetHeight;scope.current.style.height=\"auto\";const height=scope.current.offsetHeight;scope.current.style.height=prevHeight+\"px\";animate(scope.current,{height:[prevHeight,height]},heightTransition);},heightDeps);return /*#__PURE__*/_jsx(\"div\",{ref:scope,role:\"dialog\",className:layoutType===\"FixedTop\"?\"__framer-max-height-80dvh\":undefined,style:style,children:children});}const ScrollView=/*#__PURE__*/React.forwardRef(function ScrollView({theme,children},ref){const isTouch=Browser.isTouch();const[canScroll,setCanScroll]=React.useState(true);React.useEffect(()=>{if(!isTouch)return;const element=ref.current;if(!element)return;setCanScroll(element.scrollHeight>element.clientHeight);});return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{width:`calc(100% + ${theme.scrollBarWidth}px)`,overflowY:\"scroll\",overflowX:\"hidden\",overscrollBehavior:\"contain\",touchAction:canScroll?undefined:\"none\",// Make the list appear slightly under the divider\n// so that the divider is still visible when the first\n// item is selected.\nmarginTop:-1},children:children});});const statusStyle={backgroundColor:\"#B5B5B5\",color:\"#FFF\",boxShadow:\"0px 20px 40px 0px rgba(0, 0, 0, 0.25)\",fontFamily:\"inherit\",textAlign:\"center\",fontSize:13,padding:\"8px 0\"};function StatusMessage({status,layoutType,theme}){const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);const style={...statusStyle,userSelect:\"none\",fontFamily:getFontFamily(theme),paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,fontWeight:500,lineHeight:`calc(${theme.inputFontSize} * 2)`,paddingTop:verticalSpacing,paddingBottom:verticalSpacing,...theme.titleFont,zIndex:theme.zIndex+1,maxWidth:layoutType===\"FixedTop\"?\"none\":theme.width,width:layoutType===\"FixedTop\"?`calc(100% - ${verticalSpacing*2}px`:\"100%\",boxShadow:layoutType!==\"Sidebar\"&&statusStyle.boxShadow,borderRadius:layoutType!==\"Sidebar\"&&theme.borderRadius};// Show less text on fixed text to look nicer on mobile\nconst previewInfoText=layoutType===\"FixedTop\"?\"Preview Mode\":\"Preview Mode. Publish your Site to Search.\";if(status===\"no-meta-tag-found\"){return /*#__PURE__*/_jsx(\"div\",{style:style,children:previewInfoText});}if(status===\"pending-index-generation\"){return /*#__PURE__*/_jsx(\"div\",{style:style,children:\"Site is being indexed\"});}return null;}const resultTitle={textOverflow:\"ellipsis\",maxWidth:\"100%\",overflow:\"hidden\",fontWeight:500,whiteSpace:\"nowrap\",flex:1,margin:0};const resultContainer={padding:\"16px 20px\",listStyle:\"none\",fontWeight:500};const sidebarStyles={left:0,width:500};const fixedTopStyles={top:0,width:\"100%\"};const quickMenuStyles={width:500};function getLayoutBaseStyles(layoutOption,theme){switch(layoutOption){case\"Sidebar\":return{...sidebarStyles,width:theme.width};case\"FixedTop\":return fixedTopStyles;case\"QuickMenu\":return{...quickMenuStyles,width:theme.width};}}export var SearchInputClearButtonType;(function(SearchInputClearButtonType){SearchInputClearButtonType[\"Icon\"]=\"icon\";SearchInputClearButtonType[\"Text\"]=\"text\";SearchInputClearButtonType[\"None\"]=\"none\";})(SearchInputClearButtonType||(SearchInputClearButtonType={}));export var SearchInputDividerType;(function(SearchInputDividerType){SearchInputDividerType[\"None\"]=\"none\";SearchInputDividerType[\"FullWidth\"]=\"fullWidth\";SearchInputDividerType[\"Contained\"]=\"contained\";})(SearchInputDividerType||(SearchInputDividerType={}));export var SearchResultTitleType;(function(SearchResultTitleType){SearchResultTitleType[\"H1\"]=\"h1\";SearchResultTitleType[\"Title\"]=\"title\";})(SearchResultTitleType||(SearchResultTitleType={}));export var SearchResultSubtitleType;(function(SearchResultSubtitleType){SearchResultSubtitleType[\"Description\"]=\"description\";SearchResultSubtitleType[\"Path\"]=\"path\";})(SearchResultSubtitleType||(SearchResultSubtitleType={}));export var SearchResultItemType;(function(SearchResultItemType){SearchResultItemType[\"FullWidth\"]=\"fullWidth\";SearchResultItemType[\"Contained\"]=\"contained\";})(SearchResultItemType||(SearchResultItemType={}));export var SearchLayoutType;(function(SearchLayoutType){SearchLayoutType[\"Sidebar\"]=\"Sidebar\";SearchLayoutType[\"FixedTop\"]=\"FixedTop\";SearchLayoutType[\"QuickMenu\"]=\"QuickMenu\";})(SearchLayoutType||(SearchLayoutType={}));export var SearchEntryType;(function(SearchEntryType){SearchEntryType[\"Icon\"]=\"icon\";SearchEntryType[\"Text\"]=\"text\";})(SearchEntryType||(SearchEntryType={}));export var SearchIconType;(function(SearchIconType){SearchIconType[\"Default\"]=\"default\";SearchIconType[\"Custom\"]=\"custom\";})(SearchIconType||(SearchIconType={}));/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export function SearchModal(props){const{layoutType,theme,urlScope,inputOptions,backdropOptions,modalOptions,resultOptions,onDismiss}=props;const{activeLocale}=useLocaleInfo();const localeId=activeLocale?.id;const localeSlug=activeLocale?.slug;const input=useRef();const selectedResultRow=useRef();const scrollView=useRef();const[selected,setSelected]=useState({index:0,scroll:true});const prevMousePositionRef=useRef(null);const[isKeyboardNavigationDisabled,setIsKeyboardNavigationDisabled]=useState(Browser.isTouch);const[query,setQuery]=useState(\"\");const deferredQuery=useDeferredValue(query);const{results,status}=useSearch(deferredQuery,{minimumScore:0,urlScope,titleType:resultOptions.titleType});const selectedResult=results[selected.index];const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);useEffect(()=>{// Reset the selection to the top if the query changes.\nsetSelected({index:0,scroll:true});},[deferredQuery]);const handleResultRowPointerDown=useCallback((event,index)=>{if(event.pointerType!==\"touch\")return;setIsKeyboardNavigationDisabled(true);setSelected({index,scroll:false});},[]);const handleResultRowMouseMove=useCallback((event,index)=>{setSelected(previousSelected=>{if(previousSelected.index===index){return previousSelected;}return{index,scroll:false};});},[]);const router=useRouter();const navigateTo=useCallback(async url=>{if(status===\"no-meta-tag-found\"){return;}try{// Ideally, we would directly expose `routeId` in the search index so that\n// we don't need to infer it from the URL.\nconst{routeId,pathVariables}=inferInitialRouteFromPath(router.routes,url);const route=router.getRoute?.(routeId);onDismiss();await route?.page?.preload?.();router.navigate?.(routeId,null,pathVariables,false);}catch(error){window.location.href=url;}},[status]);const handleKeyDown=event=>{const maxIndex=results.length-1;switch(event.code){case\"ArrowUp\":event.preventDefault();if(isKeyboardNavigationDisabled){setIsKeyboardNavigationDisabled(false);break;}setSelected(previousSelected=>({index:clamp(0,maxIndex,previousSelected.index-1),scroll:true}));break;case\"ArrowDown\":event.preventDefault();if(isKeyboardNavigationDisabled){setIsKeyboardNavigationDisabled(false);break;}setSelected(previousSelected=>({index:clamp(0,maxIndex,previousSelected.index+1),scroll:true}));break;case\"Escape\":break;case\"Enter\":if(selectedResult){navigateTo(selectedResult.url);}break;default:event.stopPropagation();}};const showNoResults=results.length===0&&deferredQuery.length>1&&status!==\"loading\";const showDivider=Boolean((deferredQuery.length>0&&results.length>0||showNoResults)&&status!==\"loading\"&&props.inputOptions&&props.inputOptions.dividerType!==\"none\");const isItemContained=Boolean(props.resultOptions&&props.resultOptions.itemType===\"contained\");const spacing=isItemContained?theme.spacing:10;const listPaddingTop=showDivider&&isItemContained?spacing+theme.gapBetweenResults*2:0;useEffect(()=>{if(!selected.scroll)return;const element=selectedResultRow.current;if(!element)return;scrollIntoView(element,scrollView.current,{offsetTop:showDivider&&isItemContained?listPaddingTop:0,offsetBottom:isItemContained?spacing:0});// `showDivider` and `isItemContained` are not dependencies because\n// they will be the latest values when `selected` changes. And including\n// them will cause unnecessary scrolling into view.\n},[selected]);return /*#__PURE__*/_jsxs(LayoutContainer,{layoutType:layoutType,modalOptions:modalOptions,theme:theme,onKeyDown:handleKeyDown,onDismiss:onDismiss,children:[/*#__PURE__*/_jsxs(ModalContainer,{layoutType:layoutType,theme:theme,heightIsStatic:modalOptions.heightIsStatic,heightTransition:modalOptions.heightTransition,heightDeps:[results.length,showNoResults],children:[/*#__PURE__*/_jsx(Input,{autofocus:true,ref:input,onChange:setQuery,value:query,theme:theme,status:status,iconType:inputOptions.iconOptions.iconType,placeholder:inputOptions.placeholderOptions.placeholderText,clearButtonType:inputOptions?inputOptions.clearButtonType:undefined,clearButtonText:inputOptions.clearButtonText}),showDivider&&/*#__PURE__*/_jsx(Divider,{theme:theme,type:inputOptions.dividerType}),/*#__PURE__*/_jsx(ScrollView,{ref:scrollView,theme:theme,children:/*#__PURE__*/_jsxs(\"ul\",{\"aria-live\":\"polite\",style:{display:\"flex\",flexDirection:\"column\",width:`calc(100% - ${theme.scrollBarWidth}px)`,padding:0,paddingTop:listPaddingTop,paddingBottom:results.length&&isItemContained?spacing:0,gap:theme.gapBetweenResults,margin:0},children:[results.map((result,index)=>{const isSelected=index===selected.index;return /*#__PURE__*/_jsx(ResultRow,{ref:isSelected?selectedResultRow:null,index:index,result:result,prevMousePositionRef:prevMousePositionRef,selected:!isKeyboardNavigationDisabled&&isSelected,type:props.resultOptions.itemType,subtitleType:props.resultOptions.subtitleOptions.subtitleType,theme:theme,localeSlug:localeSlug,onMouseMove:handleResultRowMouseMove,onPointerDown:handleResultRowPointerDown,onNavigateTo:navigateTo},result.url);}),showNoResults&&/*#__PURE__*/_jsx(\"li\",{style:{paddingTop:verticalSpacing-listPaddingTop,paddingBottom:verticalSpacing,lineHeight:\"2em\",paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,height:\"Sidebar\"?\"100%\":\"auto\"},children:/*#__PURE__*/_jsx(\"h3\",{style:{...resultTitle,textAlign:\"center\",lineHeight:`calc(${theme.inputFontSize} * 2)`,color:theme.subtitleColor,...theme.titleFont},children:\"No results\"})})]})})]}),/*#__PURE__*/_jsx(StatusMessage,{status:status,layoutType:layoutType,theme:theme})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"ResultRow\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultTitleType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultItemType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchLayoutType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchInputDividerType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchTheme\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultSubtitleType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchModal\":{\"type\":\"reactComponent\",\"name\":\"SearchModal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"SearchIconType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Input\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchEntryType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchInputClearButtonType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-ignore\nimport{useLocaleInfo}from\"framer\";import{clamp}from\"framer-motion\";import{useEffect,useState,useTransition}from\"react\";import{SearchResultTitleType}from\"https://framerusercontent.com/modules/tV9haTHllpHHc9Fjue2H/wgITiHCOZBBo33pin0wW/SearchModal.js\";import{getCachedIndex,isDefaultLocaleId,setCachedIndex}from\"https://framerusercontent.com/modules/uU1mtMKXsrVAg8N5hW7w/v7gDLwKJgQ5vAsFHxY4H/cachedIndex.js\";import{fakeResults}from\"https://framerusercontent.com/modules/K9JZRwJcE6slDAf8rUmh/mJ54py1Ecnn1RoC4N1m4/fakeResults.js\";import{distance}from\"https://framerusercontent.com/modules/TwRgbWuhHeB95MPifel4/YW8Hlm59FG3PajbrVsaR/fuzzySearch.js\";import{createLogger,localStorageDebugFlag,safeDocument,safeWindow,stripLocaleSlugFromPath,yieldToMain}from\"https://framerusercontent.com/modules/MWsEnYfRnoOQq31DN4ql/fxR5MNtgeSOU8Mj4iY9n/utils.js\";const{log,time,timeEnd}=createLogger(localStorageDebugFlag);const splitWordsRegex=(()=>{try{// Regex lookbehind is used to ignore ampersands when splitting\n// words. For example \"H&M\" will not be split and is considered as\n// one word, but \"H & M\" will be split.\n// However, some browsers (like Safari iOS 15) don't support\n// lookbehind and will crash. When it's not supported, fallback to\n// a safer regex that always splits ampersands.\nconst regex=RegExp(\"[\\\\s.,;!?\\\\p{P}\\\\p{Z}]+(?<!\\\\p{L}&)(?!&\\\\p{L})\",\"u\");\"\".split(regex);return regex;}catch{log(\"Falling back to regex without lookbehind\");return RegExp(\"[\\\\s.,;!?\\\\p{P}\\\\p{Z}]+\",\"u\");}})();function splitWords(text){return text.split(splitWordsRegex);}function getUniqueWords(str){const words=splitWords(str).filter(word=>word.trim()&&word.length>0);return new Set(words);}const normalizeRegex=/[\\u0300-\\u036f]/g;/**\n * Replace accented characters with equivilant non-accented versions and\n * make everything lowercase.\n */function getNormalizedString(text){if(Array.isArray(text)){return text.map(getNormalizedString);}return text.normalize(\"NFD\")// From: https://stackoverflow.com/a/37511463\n.replace(normalizeRegex,\"\").toLowerCase();}const normalizedItemCache=new WeakMap;function getNormalizedItemFromCache(item){const cached=normalizedItemCache.get(item);if(cached)return cached;const normalizedItem=getNormalizedItem(item);normalizedItemCache.set(item,normalizedItem);return normalizedItem;}function getNormalizedItem(item){const normalizedItem={};for(const key in item){if(item.hasOwnProperty(key)){const value=item[key];if(typeof value===\"string\"){normalizedItem[key]=getNormalizedString(value);continue;}if(Array.isArray(value)){normalizedItem[key]=getNormalizedString(value);continue;}normalizedItem[key]=value;}}return normalizedItem;}function getMatchRange(currentRange,start,end){const result={...currentRange};if(start<result.start){result.start=start;}if(end>result.end){result.end=end;}return result;}/**\n * Score index item based on the contents of it's fields such as title, description, headings etc.\n *\n * Note that this does not normalize the item or query. Normalization is expected to happen\n * before passing the data into this.\n */function getScoreForSearchIndexItem(item,query,words,fullQuery){let score=0;const match={title:{start:Infinity,end:0},description:{start:Infinity,end:0}};const urlWords=getUniqueWords(item.url);// Match query based on words in the URL so that random strings inside\n// other strings are not matched.\nif(urlWords.has(query)){score+=10;}// Really boost single word queries that match single word URLs.\nif(words.size===1&&urlWords.size===1&&urlWords.values().next().value===query){score+=score*5;}// Score shorter URLs higher so `/pricing` is before `/lala/pricing`.\nif(score>0){const splitLength=item.url.split(\"/\").length;score+=clamp(10-splitLength,0,splitLength);}const titleWords=getUniqueWords(item.title);// Prefer full word matches in the title.\nif(titleWords.has(query)){score+=10;}const titleIndex=item.title.indexOf(query);if(titleIndex!==-1){score+=10;// TODO: Matches are currently not used, but they can be used in the\n// future to add text highlighting.\nmatch.title=getMatchRange(match.title,titleIndex,titleIndex+query.length);}// If the full query is close to being the heading, score this highly as\n// the user is most likely looking for that exact title.\nif(distance(item.title,fullQuery)<=2){score+=score*10;}// Fuzzy match full words in the title.\nfor(const titleWord of titleWords){const distanceScore=distance(query,titleWord);// Small distance score helps with small typos.\nif(distanceScore<=2){score+=10;}}const headings=[...item.h1,...item.h2,...item.h3,...item.h4,...item.h5,...item.h6];for(const heading of headings){const headingWords=getUniqueWords(heading);// If the full query is close to being the heading, score this highly as\n// the user is most likely looking for that exact title.\nif(distance(heading,fullQuery)<=2){score+=score*10;}// Bias headings that start with the query as this helps when\n// you know the title you are searching for.\nif(heading.startsWith(query)){score+=10;}if(headingWords.has(query)){score+=10;}if(heading.includes(query)){score+=1;}// Fuzzy match full words in headings.\nfor(const headingWord of headingWords){const distanceScore=distance(query,headingWord);if(distanceScore<=2){score+=1;}}}const descriptionIndex=item.description.indexOf(query);if(descriptionIndex!==-1){score+=10;match.description=getMatchRange(match.description,descriptionIndex,descriptionIndex+query.length);}for(const p of item.p){if(p.includes(query)){score+=.5;}}for(const codeblock of item.codeblock){// If the full query is close to being the codeblock, score this highly as\n// the user is most likely looking for that exact code.\nif(distance(codeblock,fullQuery)<=2){score*=10;}if(codeblock.includes(fullQuery)){score+=10;}if(codeblock.includes(query)){score+=.5;}}return{score,match};}function getSearchIndexItemScore(item,normalizedQuery){const normalizedItem=getNormalizedItemFromCache(item);const queryWords=getUniqueWords(normalizedQuery);let total=0;for(const queryWord of queryWords){const{score}=getScoreForSearchIndexItem(normalizedItem,queryWord,queryWords,normalizedQuery);total+=score;}return total;}function useRawSearch(index,query,settings){const[results,setResults]=useState(null);const[,startTransition]=useTransition();useEffect(()=>{const abortController=new AbortController;executeRawSearch(index,query,settings,abortController.signal).then(res=>{if(!abortController.signal.aborted){startTransition(()=>{setResults(res);});}}).catch(err=>{if(err.name!==\"AbortError\"){console.error(\"Search failed:\",err);}});return()=>{abortController.abort();};},[index,query]);return{results:results??[]};}const QUANTUM=32// ms, 2*16ms (2 frames on 60 hz)\n;async function executeRawSearch(index,query,settings,signal){const path=safeWindow?.location.pathname;time(\"query\");const normalizedQuery=getNormalizedString(query);const results=[];const items=Object.values(index);let deadline=performance.now()+QUANTUM;async function yieldToMainIfNecessary(){if(performance.now()>=deadline){await yieldToMain();deadline=performance.now()+QUANTUM;}}for(let i=0;i<items.length;++i){if(performance.now()>=deadline){await yieldToMainIfNecessary();deadline=performance.now()+QUANTUM;}if(signal?.aborted)return[];const item=items[i];const score=getSearchIndexItemScore(item,normalizedQuery);if(score>(settings.minimumScore||0)&&(!path||item.url!==path)){const heading=item.h1.length&&item.h1[0];const title=settings?.titleType===SearchResultTitleType.Title?item.title:heading?heading:item.title;// Convert index item to result item.\nresults.push({url:item.url,title,description:item.description,body:[...item.p,item.codeblock].join(\" \"),score});}}await yieldToMainIfNecessary();if(signal?.aborted)return[];const sorted=results.sort((itemA,itemB)=>itemB.score-itemA.score);timeEnd(\"query\");await yieldToMainIfNecessary();if(signal?.aborted)return[];return results.slice(0,20);}function getIndexedScopedToUrl(index,rawUrlScope,localeSlug){const scopedIndex={};const baseScopeUrlHasVariable=rawUrlScope.includes(\":\");const urlUpToPathVariable=rawUrlScope.split(\":\")[0];const urlScope=urlUpToPathVariable.length>1?urlUpToPathVariable:\"\";for(const url in index){const strippedURL=stripLocaleSlugFromPath(url,localeSlug);if(!strippedURL.startsWith(urlScope)){continue;}if(baseScopeUrlHasVariable&&url.length<=urlScope.length){continue;}scopedIndex[url]=index[url];}return scopedIndex;}export function useSearch(query,settings){const[searchIndex,_setSearchIndex]=useState({});const[status,setStatus]=useState(\"loading\");const{results}=useRawSearch(searchIndex,query,settings);const{activeLocale}=useLocaleInfo();const localeId=activeLocale?.id;// Seperate setter function so that the URL scope is always applied\n// to indexes loaded from either the cache or network.\nfunction setSearchIndex(index,options={ignoreScope:false}){let scopedIndex=index;if(settings.urlScope&&!options.ignoreScope){scopedIndex=getIndexedScopedToUrl(index,settings.urlScope,activeLocale?.slug);log(\"Using URL scope\",settings.urlScope);}_setSearchIndex(scopedIndex);}useEffect(()=>{async function loadSearchIndex(){setStatus(\"loading\");const baseUrl=getBaseUrl(\"framer-search-index\");if(!baseUrl){setStatus(\"no-meta-tag-found\");setSearchIndex(fakeResults,{ignoreScope:true});log(\"No meta tag found\");return;}const cacheResult=await getCachedIndex(localeId,baseUrl);if(cacheResult.status===\"fresh\"){setSearchIndex(cacheResult.searchIndex);setStatus(\"success\");log(\"Using fresh cached index\");return;}if(cacheResult.status===\"stale\"){setSearchIndex(cacheResult.searchIndex);setStatus(\"loading-with-cache\");log(\"Using stale cached index while loading a fresh one\");}const searchIndexUrl=getSearchIndexUrl(baseUrl,localeId);const response=await fetch(searchIndexUrl);if(response.ok){const downloadedIndex=await response.json();setSearchIndex(downloadedIndex);setCachedIndex(localeId,downloadedIndex,baseUrl);setStatus(\"success\");log(\"Using downloaded index\");return;}// Our \"sites\" CDN currently returns 403s for missing files.\nconst isNotFound=response.status===403||response.status===404;if(!isNotFound){throw new Error(response.statusText);}// Index is likely still being generated.\nlog(\"Index not found\");const fallbackBaseUrl=getBaseUrl(\"framer-search-index-fallback\");if(!fallbackBaseUrl){if(cacheResult.status===\"miss\"){setStatus(\"pending-index-generation\");log(\"No fallback, no cache\");}else{log(\"No fallback, using cache\");}return;}// If we're here, cache is missing or stale. If it's stale but it's our fallback index, we can use it.\nif(cacheResult.status===\"stale\"&&cacheResult.indexHash===fallbackBaseUrl){setStatus(\"success\");log(\"Using cached fallback index\");return;}const fallbackSearchIndexUrl=getSearchIndexUrl(fallbackBaseUrl,localeId);const fallbackResponse=await fetch(fallbackSearchIndexUrl);if(fallbackResponse.ok){const downloadedIndex=await fallbackResponse.json();setSearchIndex(downloadedIndex);setCachedIndex(localeId,downloadedIndex,fallbackBaseUrl);setStatus(\"success\");log(\"Using downloaded fallback index\");return;}if(cacheResult.status===\"miss\"){setStatus(\"pending-index-generation\");log(\"Fallback failed, no cache\");}else{log(\"Fallback failed, using cache\");}}loadSearchIndex().catch(error=>{// TODO: Check for error type here. If it's a network error,\n// we could do a few retries.\nsetStatus(\"error\");log(\"Failed to load search index\",error);});},[localeId]);log({status,results});return{results,status};}function getBaseUrl(name){return safeDocument?.querySelector(`meta[name=\"${name}\"]`)?.getAttribute(\"content\");}function getSearchIndexUrl(baseURL,localeId){if(isDefaultLocaleId(localeId))return baseURL;return baseURL.replace(\".json\",`-${localeId}.json`);}\nexport const __FramerMetadata__ = {\"exports\":{\"SearchIndex\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useSearch\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useSearch.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useSearch}from\"https://framerusercontent.com/modules/MyBp84Z0p9nUcMimVMnY/G59GwobMNJqwSjtPO6Pv/useSearch.js\";import React,{useEffect,useState,useMemo,forwardRef,useRef,useDeferredValue,useLayoutEffect,useCallback,useImperativeHandle}from\"react\";import{Browser}from\"https://framerusercontent.com/modules/PJVBcBLmDteTEAZh3J9Z/keXJyjyE9VnzUcDMayjg/browser.js\";import{motion,clamp,useAnimate}from\"framer-motion\";import{SearchIcon,ClearIcon,SpinnerIcon}from\"https://framerusercontent.com/modules/LV9trClbmNwd5PVj9l8y/L4rFqMGNzGSwRZpGTGF3/Icons.js\";import{clampText,getFontFamily,localStorageDebugFlag,animationKeyFromLayout,stripLocaleSlugFromPath}from\"https://framerusercontent.com/modules/MWsEnYfRnoOQq31DN4ql/fxR5MNtgeSOU8Mj4iY9n/utils.js\";import{useCallbackOnMouseMove}from\"https://framerusercontent.com/modules/Gzef0nFihI9m9vZG45th/lIUxbZcreiDm2GzUkt3y/useCallbackOnMouseMove.js\";import{scrollIntoView}from\"https://framerusercontent.com/modules/eAnjm75CdfYT1Zz4BIaz/7KDSfnnyD1T3Ap75L4m8/scrollIntoView.js\";import{useLocaleInfo,// @ts-expect-error Internal API\nuseRouter,// @ts-expect-error Internal API\ninferInitialRouteFromPath}from\"framer\";const MAX_DESCRIPTION_LENGTH=120;const MODAL_MAX_HEIGHT=496;const VERTICAL_SPACING_MULTIPLIER=.6;function ClearButton({theme,type,onClick,text}){const shouldDisplayIcon=type===\"icon\";const iconOrText=shouldDisplayIcon?/*#__PURE__*/_jsx(ClearIcon,{style:{color:theme.inputIconColor,width:theme.inputIconSize,height:theme.inputIconSize}}):text;return /*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,fontSize:theme&&theme.titleFont&&theme.titleFont.fontSize?theme.titleFont.fontSize:15},children:/*#__PURE__*/_jsx(\"button\",{className:\"__framer-search-clear-button\",onClick:onClick,style:{fontFamily:\"inherit\",border:\"none\",background:\"none\",cursor:\"pointer\",display:\"flex\",textTransform:\"uppercase\",color:theme.inputIconColor,fontSize:\"0.75em\",padding:0},children:iconOrText})});}function Divider({theme,type}){const styles={background:theme.foregroundColor,height:1,flexShrink:0,opacity:.05};if(type===\"contained\"&&theme){styles.marginLeft=theme.horizontalSpacing;styles.marginRight=theme.horizontalSpacing;}return /*#__PURE__*/_jsx(\"div\",{style:styles});}export const Input=/*#__PURE__*/forwardRef(function Input(props,ref){const{value=\"\",status,autofocus,theme,placeholder,iconType,clearButtonType,onChange}=props;const[inputValue,setInputValue]=useState(value);const[isFocused,setIsFocused]=useState(false);const inputRef=useRef();useImperativeHandle(ref,()=>inputRef.current);React.useLayoutEffect(()=>{// Runs on unmount, fixes a bug in Safari that scrolls to the bottom\n// of the page when the input unmounts.\nreturn()=>{const inputElement=inputRef.current;if(!inputElement||inputElement!==document.activeElement)return;inputElement.blur();};},[]);const handleInputClick=()=>{if(inputRef.current){inputRef.current.focus();}};const handleClearClick=()=>{setInputValue(\"\");};useEffect(()=>{onChange(inputValue);},[inputValue]);const hasInputText=inputValue.length>0;const showClearButton=inputValue.length>0&&clearButtonType&&clearButtonType!==\"none\";const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);const searchIcon=iconType===\"custom\"&&theme.inputIconImage?/*#__PURE__*/_jsx(\"img\",{alt:\"icon alongside the Site Search input\",src:theme.inputIconImage.src,width:theme.inputIconSize,height:theme.inputIconSize,decoding:\"async\"}):/*#__PURE__*/_jsx(SearchIcon,{color:theme.inputIconColor,width:theme.inputIconSize,height:theme.inputIconSize});return /*#__PURE__*/_jsxs(\"div\",{role:\"search\",style:{...inputContainerStyle,fontFamily:getFontFamily(theme),paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,gap:12,paddingTop:verticalSpacing,paddingBottom:verticalSpacing,touchAction:\"none\"},onClick:handleInputClick,children:[/*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,display:\"flex\"},children:status===\"loading\"&&inputValue?/*#__PURE__*/_jsx(SpinnerIcon,{color:theme.inputIconColor,backgroundColor:theme.backgroundColor,style:{height:theme&&theme.inputIconSize,width:theme&&theme.inputIconSize}}):searchIcon}),/*#__PURE__*/_jsx(\"input\",{ref:inputRef,spellCheck:false,autoFocus:autofocus,style:{...inputStyle,WebkitTapHighlightColor:\"rgba(0,0,0,0)\",color:theme.foregroundColor,lineHeight:\"2em\",verticalAlign:\"baseline\",...theme.titleFont,...theme.inputFont,fontSize:theme.inputFontSize,// @ts-ignore\n\"--framer-search-placeholder-color\":theme.placeholderColor},onFocus:()=>{const scrollOffset=document.documentElement.scrollTop;document.documentElement.scrollTop=scrollOffset;},placeholder:placeholder,value:inputValue,onChange:()=>setInputValue(inputRef.current.value)}),showClearButton&&/*#__PURE__*/_jsx(ClearButton,{theme:theme,type:props.clearButtonType,text:props.clearButtonText,onClick:handleClearClick})]});});const inputContainerStyle={display:\"inline-flex\",alignItems:\"center\",flexShrink:0};const inputStyle={outline:\"none\",border:\"none\",background:\"transparent\",fontWeight:500,height:\"2em\",padding:0,width:\"100%\"};export const ResultRow=/*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function ResultRow(props,ref){const{index,result,prevMousePositionRef,type=\"contained\",subtitleType=\"path\",selected=false,theme,localeSlug,style,onMouseMove,onPointerDown,onNavigateTo}=props;const{url,title,score}=result;const urlPath=useMemo(()=>{return stripLocaleSlugFromPath(url,localeSlug);},[url,localeSlug]);const handleMouseMove=useCallbackOnMouseMove(event=>onMouseMove(event,index),prevMousePositionRef);const isContained=type===\"contained\";const borderRadius=isContained?clamp(0,Infinity,theme.borderRadius-theme.spacing):0;const subtitleText=subtitleType===\"path\"?urlPath:clampText(result.description,MAX_DESCRIPTION_LENGTH);const handleClick=event=>{event.preventDefault();onNavigateTo(result.url);};const focusTrap=event=>{event.preventDefault();};return /*#__PURE__*/_jsx(\"a\",{ref:ref,style:{textDecoration:\"none\"},href:result.url,onClick:handleClick,onMouseMove:handleMouseMove,onMouseDown:focusTrap,onPointerDown:event=>onPointerDown(event,index),children:/*#__PURE__*/_jsxs(\"li\",{style:{...resultContainer,...style,paddingTop:isContained?12:16,paddingBottom:isContained?12:16,color:theme.foregroundColor,position:\"relative\",paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing},children:[/*#__PURE__*/_jsx(\"div\",{style:{backgroundColor:theme.foregroundColor,position:\"absolute\",opacity:selected?.06:0,borderRadius,left:theme&&isContained?theme.spacing:0,right:theme&&isContained?theme.spacing:0,top:0,bottom:0}}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",overflow:\"hidden\",gap:4},children:[/*#__PURE__*/_jsx(\"h3\",{style:{...resultTitle,...theme.titleFont,lineHeight:\"1.4em\"},children:title}),/*#__PURE__*/_jsxs(\"p\",{style:{margin:0,color:theme.subtitleColor,...theme.subtitleFont,whiteSpace:\"nowrap\",overflow:\"hidden\",textOverflow:\"ellipsis\",lineHeight:\"1.4em\"},children:[localStorageDebugFlag?score:\"\",\" \",subtitleText]})]})]},result.url)});}));/**\n * Flexible gap used inside a flexbox layout to push down the quick menu\n * by 20% of the screen height, but also allow it to collapse to zero if\n * there is not enough vertical room.\n */function QuickMenuSpacer({onClick}){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",flexBasis:\"20vh\"},onClick:onClick});}const layoutContainerStyle={display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"flex-start\",gap:15,overflow:\"visible\"};function LayoutContainer({layoutType,theme,onKeyDown,onDismiss,children,modalOptions}){const layoutStyles=getLayoutBaseStyles(layoutType,theme);const style={...layoutContainerStyle,...layoutStyles,willChange:\"transform\",marginTop:layoutType===\"FixedTop\"?theme.offsetTop:0,height:layoutType===\"Sidebar\"?\"100%\":\"auto\",maxHeight:layoutType===\"QuickMenu\"?\"100%\":\"none\",justifyContent:layoutType===\"Sidebar\"?\"flex-end\":\"flex-start\",flexDirection:layoutType===\"Sidebar\"?\"column-reverse\":\"column\"};const innerStyle={...layoutContainerStyle,...layoutStyles,height:layoutType===\"Sidebar\"?\"100%\":\"auto\",maxHeight:layoutType===\"QuickMenu\"?\"100%\":\"none\",gap:layoutType===\"Sidebar\"?0:theme.gapBetweenStatusAndSearch,backgroundColor:layoutType===\"Sidebar\"?theme.backgroundColor:\"transparent\",justifyContent:layoutType===\"Sidebar\"?\"flex-end\":\"flex-start\",flexDirection:layoutType===\"Sidebar\"?\"column-reverse\":\"column\",originX:.5,originY:.5};function getContainerAnimation(){switch(layoutType){case\"FixedTop\":{const key=animationKeyFromLayout(\"FixedTop\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{y:-10,opacity:.2,transition:{duration:Browser.isTouch()?0:.15}};}break;}case\"QuickMenu\":{const key=animationKeyFromLayout(\"QuickMenu\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{scale:.95,opacity:0,y:0,x:0,rotate:0,transition:{type:\"spring\",stiffness:600,damping:40}};}break;}case\"Sidebar\":{const key=animationKeyFromLayout(\"Sidebar\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{x:-10,opacity:0,transition:{duration:.15}};}break;}}}const containerAnimation=getContainerAnimation();return /*#__PURE__*/_jsxs(\"div\",{style:style,onKeyDown:onKeyDown,onClick:event=>event.stopPropagation(),children:[layoutType===\"QuickMenu\"&&/*#__PURE__*/_jsx(QuickMenuSpacer,{onClick:onDismiss}),/*#__PURE__*/_jsx(motion.div,{initial:containerAnimation,animate:{opacity:1,scale:1,x:0,y:0,rotate:0},transition:containerAnimation?containerAnimation.transition:undefined,exit:{opacity:0,transition:{duration:0}},style:innerStyle,children:children})]});}function ModalContainer({layoutType,theme,children,heightIsStatic,heightTransition,heightDeps}){const style={// This `willChange` is required to avoid weird rendering issues where\n// parts of the search window won't redraw, which we observed in Safari 16.4.\nwillChange:\"transform\",backgroundColor:theme.backgroundColor,color:theme.foregroundColor,borderRadius:layoutType===\"QuickMenu\"?theme.borderRadius:0,width:\"100%\",display:\"flex\",flexDirection:\"column\",overflow:\"hidden\",boxShadow:layoutType!==\"Sidebar\"?theme.shadow:undefined,maxHeight:layoutType===\"QuickMenu\"?`min(${MODAL_MAX_HEIGHT}px, calc(100vh - 30px))`:undefined};// Opt-in Height Animations for the Search Quick Actions menu.\n// These are disabled by default, but can be enabled via props.\nconst[scope,animate]=useAnimate();useLayoutEffect(()=>{if(layoutType!==\"QuickMenu\"||heightIsStatic)return;const prevHeight=scope.current.offsetHeight;scope.current.style.height=\"auto\";const height=scope.current.offsetHeight;scope.current.style.height=prevHeight+\"px\";animate(scope.current,{height:[prevHeight,height]},heightTransition);},heightDeps);return /*#__PURE__*/_jsx(\"div\",{ref:scope,role:\"dialog\",className:layoutType===\"FixedTop\"?\"__framer-max-height-80dvh\":undefined,style:style,children:children});}const ScrollView=/*#__PURE__*/React.forwardRef(function ScrollView({theme,children},ref){const isTouch=Browser.isTouch();const[canScroll,setCanScroll]=React.useState(true);React.useEffect(()=>{if(!isTouch)return;const element=ref.current;if(!element)return;setCanScroll(element.scrollHeight>element.clientHeight);});return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{width:`calc(100% + ${theme.scrollBarWidth}px)`,overflowY:\"scroll\",overflowX:\"hidden\",overscrollBehavior:\"contain\",touchAction:canScroll?undefined:\"none\",// Make the list appear slightly under the divider\n// so that the divider is still visible when the first\n// item is selected.\nmarginTop:-1},children:children});});const statusStyle={backgroundColor:\"#B5B5B5\",color:\"#FFF\",boxShadow:\"0px 20px 40px 0px rgba(0, 0, 0, 0.25)\",fontFamily:\"inherit\",textAlign:\"center\",fontSize:13,padding:\"8px 0\"};function StatusMessage({status,layoutType,theme}){const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);const style={...statusStyle,userSelect:\"none\",fontFamily:getFontFamily(theme),paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,fontWeight:500,lineHeight:`calc(${theme.inputFontSize} * 2)`,paddingTop:verticalSpacing,paddingBottom:verticalSpacing,...theme.titleFont,zIndex:theme.zIndex+1,maxWidth:layoutType===\"FixedTop\"?\"none\":theme.width,width:layoutType===\"FixedTop\"?`calc(100% - ${verticalSpacing*2}px`:\"100%\",boxShadow:layoutType!==\"Sidebar\"&&statusStyle.boxShadow,borderRadius:layoutType!==\"Sidebar\"&&theme.borderRadius};// Show less text on fixed text to look nicer on mobile\nconst previewInfoText=layoutType===\"FixedTop\"?\"Preview Mode\":\"Preview Mode. Publish your Site to Search.\";if(status===\"no-meta-tag-found\"){return /*#__PURE__*/_jsx(\"div\",{style:style,children:previewInfoText});}if(status===\"pending-index-generation\"){return /*#__PURE__*/_jsx(\"div\",{style:style,children:\"Site is being indexed\"});}return null;}const resultTitle={textOverflow:\"ellipsis\",maxWidth:\"100%\",overflow:\"hidden\",fontWeight:500,whiteSpace:\"nowrap\",flex:1,margin:0};const resultContainer={padding:\"16px 20px\",listStyle:\"none\",fontWeight:500};const sidebarStyles={left:0,width:500};const fixedTopStyles={top:0,width:\"100%\"};const quickMenuStyles={width:500};function getLayoutBaseStyles(layoutOption,theme){switch(layoutOption){case\"Sidebar\":return{...sidebarStyles,width:theme.width};case\"FixedTop\":return fixedTopStyles;case\"QuickMenu\":return{...quickMenuStyles,width:theme.width};}}export var SearchInputClearButtonType;(function(SearchInputClearButtonType){SearchInputClearButtonType[\"Icon\"]=\"icon\";SearchInputClearButtonType[\"Text\"]=\"text\";SearchInputClearButtonType[\"None\"]=\"none\";})(SearchInputClearButtonType||(SearchInputClearButtonType={}));export var SearchInputDividerType;(function(SearchInputDividerType){SearchInputDividerType[\"None\"]=\"none\";SearchInputDividerType[\"FullWidth\"]=\"fullWidth\";SearchInputDividerType[\"Contained\"]=\"contained\";})(SearchInputDividerType||(SearchInputDividerType={}));export var SearchResultTitleType;(function(SearchResultTitleType){SearchResultTitleType[\"H1\"]=\"h1\";SearchResultTitleType[\"Title\"]=\"title\";})(SearchResultTitleType||(SearchResultTitleType={}));export var SearchResultSubtitleType;(function(SearchResultSubtitleType){SearchResultSubtitleType[\"Description\"]=\"description\";SearchResultSubtitleType[\"Path\"]=\"path\";})(SearchResultSubtitleType||(SearchResultSubtitleType={}));export var SearchResultItemType;(function(SearchResultItemType){SearchResultItemType[\"FullWidth\"]=\"fullWidth\";SearchResultItemType[\"Contained\"]=\"contained\";})(SearchResultItemType||(SearchResultItemType={}));export var SearchLayoutType;(function(SearchLayoutType){SearchLayoutType[\"Sidebar\"]=\"Sidebar\";SearchLayoutType[\"FixedTop\"]=\"FixedTop\";SearchLayoutType[\"QuickMenu\"]=\"QuickMenu\";})(SearchLayoutType||(SearchLayoutType={}));export var SearchEntryType;(function(SearchEntryType){SearchEntryType[\"Icon\"]=\"icon\";SearchEntryType[\"Text\"]=\"text\";})(SearchEntryType||(SearchEntryType={}));export var SearchIconType;(function(SearchIconType){SearchIconType[\"Default\"]=\"default\";SearchIconType[\"Custom\"]=\"custom\";})(SearchIconType||(SearchIconType={}));/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export function SearchModal(props){const{layoutType,theme,urlScope,inputOptions,backdropOptions,modalOptions,resultOptions,onDismiss}=props;const{activeLocale}=useLocaleInfo();const localeId=activeLocale?.id;const localeSlug=activeLocale?.slug;const input=useRef();const selectedResultRow=useRef();const scrollView=useRef();const[selected,setSelected]=useState({index:0,scroll:true});const prevMousePositionRef=useRef(null);const[isKeyboardNavigationDisabled,setIsKeyboardNavigationDisabled]=useState(Browser.isTouch);const[query,setQuery]=useState(\"\");const deferredQuery=useDeferredValue(query);const{results,status}=useSearch(deferredQuery,{minimumScore:0,urlScope,titleType:resultOptions.titleType});const selectedResult=results[selected.index];const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);useEffect(()=>{// Reset the selection to the top if the query changes.\nsetSelected({index:0,scroll:true});},[deferredQuery]);const handleResultRowPointerDown=useCallback((event,index)=>{if(event.pointerType!==\"touch\")return;setIsKeyboardNavigationDisabled(true);setSelected({index,scroll:false});},[]);const handleResultRowMouseMove=useCallback((event,index)=>{setSelected(previousSelected=>{if(previousSelected.index===index){return previousSelected;}return{index,scroll:false};});},[]);const router=useRouter();const navigateTo=useCallback(async url=>{if(status===\"no-meta-tag-found\"){return;}try{// Ideally, we would directly expose `routeId` in the search index so that\n// we don't need to infer it from the URL.\nconst{routeId,pathVariables}=inferInitialRouteFromPath(router.routes,url);const route=router.getRoute?.(routeId);onDismiss();await route?.page?.preload?.();router.navigate?.(routeId,null,pathVariables,false);}catch(error){window.location.href=url;}},[status]);const handleKeyDown=event=>{const maxIndex=results.length-1;switch(event.code){case\"ArrowUp\":event.preventDefault();if(isKeyboardNavigationDisabled){setIsKeyboardNavigationDisabled(false);break;}setSelected(previousSelected=>({index:clamp(0,maxIndex,previousSelected.index-1),scroll:true}));break;case\"ArrowDown\":event.preventDefault();if(isKeyboardNavigationDisabled){setIsKeyboardNavigationDisabled(false);break;}setSelected(previousSelected=>({index:clamp(0,maxIndex,previousSelected.index+1),scroll:true}));break;case\"Escape\":break;case\"Enter\":if(selectedResult){navigateTo(selectedResult.url);}break;default:event.stopPropagation();}};const showNoResults=results.length===0&&deferredQuery.length>1&&status!==\"loading\";const showDivider=Boolean((deferredQuery.length>0&&results.length>0||showNoResults)&&status!==\"loading\"&&props.inputOptions&&props.inputOptions.dividerType!==\"none\");const isItemContained=Boolean(props.resultOptions&&props.resultOptions.itemType===\"contained\");const spacing=isItemContained?theme.spacing:10;const listPaddingTop=showDivider&&isItemContained?spacing+theme.gapBetweenResults*2:0;useEffect(()=>{if(!selected.scroll)return;const element=selectedResultRow.current;if(!element)return;scrollIntoView(element,scrollView.current,{offsetTop:showDivider&&isItemContained?listPaddingTop:0,offsetBottom:isItemContained?spacing:0});// `showDivider` and `isItemContained` are not dependencies because\n// they will be the latest values when `selected` changes. And including\n// them will cause unnecessary scrolling into view.\n},[selected]);return /*#__PURE__*/_jsxs(LayoutContainer,{layoutType:layoutType,modalOptions:modalOptions,theme:theme,onKeyDown:handleKeyDown,onDismiss:onDismiss,children:[/*#__PURE__*/_jsxs(ModalContainer,{layoutType:layoutType,theme:theme,heightIsStatic:modalOptions.heightIsStatic,heightTransition:modalOptions.heightTransition,heightDeps:[results.length,showNoResults],children:[/*#__PURE__*/_jsx(Input,{autofocus:true,ref:input,onChange:setQuery,value:query,theme:theme,status:status,iconType:inputOptions.iconOptions.iconType,placeholder:inputOptions.placeholderOptions.placeholderText,clearButtonType:inputOptions?inputOptions.clearButtonType:undefined,clearButtonText:inputOptions.clearButtonText}),showDivider&&/*#__PURE__*/_jsx(Divider,{theme:theme,type:inputOptions.dividerType}),/*#__PURE__*/_jsx(ScrollView,{ref:scrollView,theme:theme,children:/*#__PURE__*/_jsxs(\"ul\",{\"aria-live\":\"polite\",style:{display:\"flex\",flexDirection:\"column\",width:`calc(100% - ${theme.scrollBarWidth}px)`,padding:0,paddingTop:listPaddingTop,paddingBottom:results.length&&isItemContained?spacing:0,gap:theme.gapBetweenResults,margin:0},children:[results.map((result,index)=>{const isSelected=index===selected.index;return /*#__PURE__*/_jsx(ResultRow,{ref:isSelected?selectedResultRow:null,index:index,result:result,prevMousePositionRef:prevMousePositionRef,selected:!isKeyboardNavigationDisabled&&isSelected,type:props.resultOptions.itemType,subtitleType:props.resultOptions.subtitleOptions.subtitleType,theme:theme,localeSlug:localeSlug,onMouseMove:handleResultRowMouseMove,onPointerDown:handleResultRowPointerDown,onNavigateTo:navigateTo},result.url);}),showNoResults&&/*#__PURE__*/_jsx(\"li\",{style:{paddingTop:verticalSpacing-listPaddingTop,paddingBottom:verticalSpacing,lineHeight:\"2em\",paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,height:\"Sidebar\"?\"100%\":\"auto\"},children:/*#__PURE__*/_jsx(\"h3\",{style:{...resultTitle,textAlign:\"center\",lineHeight:`calc(${theme.inputFontSize} * 2)`,color:theme.subtitleColor,...theme.titleFont},children:\"No results\"})})]})})]}),/*#__PURE__*/_jsx(StatusMessage,{status:status,layoutType:layoutType,theme:theme})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"ResultRow\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultTitleType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultItemType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchLayoutType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchInputDividerType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchTheme\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultSubtitleType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchModal\":{\"type\":\"reactComponent\",\"name\":\"SearchModal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"SearchIconType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Input\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchEntryType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchInputClearButtonType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-ignore\nimport{useLocaleInfo}from\"framer\";import{clamp}from\"framer-motion\";import{useEffect,useState,useTransition}from\"react\";import{SearchResultTitleType}from\"https://framerusercontent.com/modules/tV9haTHllpHHc9Fjue2H/bsLTiXYjkHoD2XaMjabu/SearchModal.js\";import{getCachedIndex,isDefaultLocaleId,setCachedIndex}from\"https://framerusercontent.com/modules/uU1mtMKXsrVAg8N5hW7w/v7gDLwKJgQ5vAsFHxY4H/cachedIndex.js\";import{fakeResults}from\"https://framerusercontent.com/modules/K9JZRwJcE6slDAf8rUmh/mJ54py1Ecnn1RoC4N1m4/fakeResults.js\";import{distance}from\"https://framerusercontent.com/modules/TwRgbWuhHeB95MPifel4/YW8Hlm59FG3PajbrVsaR/fuzzySearch.js\";import{createLogger,localStorageDebugFlag,safeDocument,safeWindow,stripLocaleSlugFromPath,yieldToMain}from\"https://framerusercontent.com/modules/MWsEnYfRnoOQq31DN4ql/fxR5MNtgeSOU8Mj4iY9n/utils.js\";const{log,time,timeEnd}=createLogger(localStorageDebugFlag);const splitWordsRegex=(()=>{try{// Regex lookbehind is used to ignore ampersands when splitting\n// words. For example \"H&M\" will not be split and is considered as\n// one word, but \"H & M\" will be split.\n// However, some browsers (like Safari iOS 15) don't support\n// lookbehind and will crash. When it's not supported, fallback to\n// a safer regex that always splits ampersands.\nconst regex=RegExp(\"[\\\\s.,;!?\\\\p{P}\\\\p{Z}]+(?<!\\\\p{L}&)(?!&\\\\p{L})\",\"u\");\"\".split(regex);return regex;}catch{log(\"Falling back to regex without lookbehind\");return RegExp(\"[\\\\s.,;!?\\\\p{P}\\\\p{Z}]+\",\"u\");}})();function splitWords(text){return text.split(splitWordsRegex);}function getUniqueWords(str){const words=splitWords(str).filter(word=>word.trim()&&word.length>0);return new Set(words);}const normalizeRegex=/[\\u0300-\\u036f]/g;/**\n * Replace accented characters with equivilant non-accented versions and\n * make everything lowercase.\n */function getNormalizedString(text){if(Array.isArray(text)){return text.map(getNormalizedString);}return text.normalize(\"NFD\")// From: https://stackoverflow.com/a/37511463\n.replace(normalizeRegex,\"\").toLowerCase();}const normalizedItemCache=new WeakMap;function getNormalizedItemFromCache(item){const cached=normalizedItemCache.get(item);if(cached)return cached;const normalizedItem=getNormalizedItem(item);normalizedItemCache.set(item,normalizedItem);return normalizedItem;}function getNormalizedItem(item){const normalizedItem={};for(const key in item){if(item.hasOwnProperty(key)){const value=item[key];if(typeof value===\"string\"){normalizedItem[key]=getNormalizedString(value);continue;}if(Array.isArray(value)){normalizedItem[key]=getNormalizedString(value);continue;}normalizedItem[key]=value;}}return normalizedItem;}function getMatchRange(currentRange,start,end){const result={...currentRange};if(start<result.start){result.start=start;}if(end>result.end){result.end=end;}return result;}/**\n * Score index item based on the contents of it's fields such as title, description, headings etc.\n *\n * Note that this does not normalize the item or query. Normalization is expected to happen\n * before passing the data into this.\n */function getScoreForSearchIndexItem(item,query,words,fullQuery){let score=0;const match={title:{start:Infinity,end:0},description:{start:Infinity,end:0}};const urlWords=getUniqueWords(item.url);// Match query based on words in the URL so that random strings inside\n// other strings are not matched.\nif(urlWords.has(query)){score+=10;}// Really boost single word queries that match single word URLs.\nif(words.size===1&&urlWords.size===1&&urlWords.values().next().value===query){score+=score*5;}// Score shorter URLs higher so `/pricing` is before `/lala/pricing`.\nif(score>0){const splitLength=item.url.split(\"/\").length;score+=clamp(10-splitLength,0,splitLength);}const titleWords=getUniqueWords(item.title);// Prefer full word matches in the title.\nif(titleWords.has(query)){score+=10;}const titleIndex=item.title.indexOf(query);if(titleIndex!==-1){score+=10;// TODO: Matches are currently not used, but they can be used in the\n// future to add text highlighting.\nmatch.title=getMatchRange(match.title,titleIndex,titleIndex+query.length);}// If the full query is close to being the heading, score this highly as\n// the user is most likely looking for that exact title.\nif(distance(item.title,fullQuery)<=2){score+=score*10;}// Fuzzy match full words in the title.\nfor(const titleWord of titleWords){const distanceScore=distance(query,titleWord);// Small distance score helps with small typos.\nif(distanceScore<=2){score+=10;}}const headings=[...item.h1,...item.h2,...item.h3,...item.h4,...item.h5,...item.h6];for(const heading of headings){const headingWords=getUniqueWords(heading);// If the full query is close to being the heading, score this highly as\n// the user is most likely looking for that exact title.\nif(distance(heading,fullQuery)<=2){score+=score*10;}// Bias headings that start with the query as this helps when\n// you know the title you are searching for.\nif(heading.startsWith(query)){score+=10;}if(headingWords.has(query)){score+=10;}if(heading.includes(query)){score+=1;}// Fuzzy match full words in headings.\nfor(const headingWord of headingWords){const distanceScore=distance(query,headingWord);if(distanceScore<=2){score+=1;}}}const descriptionIndex=item.description.indexOf(query);if(descriptionIndex!==-1){score+=10;match.description=getMatchRange(match.description,descriptionIndex,descriptionIndex+query.length);}for(const p of item.p){if(p.includes(query)){score+=.5;}}for(const codeblock of item.codeblock){// If the full query is close to being the codeblock, score this highly as\n// the user is most likely looking for that exact code.\nif(distance(codeblock,fullQuery)<=2){score*=10;}if(codeblock.includes(fullQuery)){score+=10;}if(codeblock.includes(query)){score+=.5;}}return{score,match};}function getSearchIndexItemScore(item,normalizedQuery){const normalizedItem=getNormalizedItemFromCache(item);const queryWords=getUniqueWords(normalizedQuery);let total=0;for(const queryWord of queryWords){const{score}=getScoreForSearchIndexItem(normalizedItem,queryWord,queryWords,normalizedQuery);total+=score;}return total;}function useRawSearch(index,query,settings){const[results,setResults]=useState(null);const[,startTransition]=useTransition();useEffect(()=>{const abortController=new AbortController;executeRawSearch(index,query,settings,abortController.signal).then(res=>{if(!abortController.signal.aborted){startTransition(()=>{setResults(res);});}}).catch(err=>{if(err.name!==\"AbortError\"){console.error(\"Search failed:\",err);}});return()=>{abortController.abort();};},[index,query]);return{results:results??[]};}const QUANTUM=32// ms, 2*16ms (2 frames on 60 hz)\n;async function executeRawSearch(index,query,settings,signal){const path=safeWindow?.location.pathname;time(\"query\");const normalizedQuery=getNormalizedString(query);const results=[];const items=Object.values(index);let deadline=performance.now()+QUANTUM;async function yieldToMainIfNecessary(){if(performance.now()>=deadline){await yieldToMain();deadline=performance.now()+QUANTUM;}}for(let i=0;i<items.length;++i){if(performance.now()>=deadline){await yieldToMainIfNecessary();deadline=performance.now()+QUANTUM;}if(signal?.aborted)return[];const item=items[i];const score=getSearchIndexItemScore(item,normalizedQuery);if(score>(settings.minimumScore||0)&&(!path||item.url!==path)){const heading=item.h1.length&&item.h1[0];const title=settings?.titleType===SearchResultTitleType.Title?item.title:heading?heading:item.title;// Convert index item to result item.\nresults.push({url:item.url,title,description:item.description,body:[...item.p,item.codeblock].join(\" \"),score});}}await yieldToMainIfNecessary();if(signal?.aborted)return[];const sorted=results.sort((itemA,itemB)=>itemB.score-itemA.score);timeEnd(\"query\");await yieldToMainIfNecessary();if(signal?.aborted)return[];return results.slice(0,20);}function getIndexedScopedToUrl(index,rawUrlScope,localeSlug){const scopedIndex={};const baseScopeUrlHasVariable=rawUrlScope.includes(\":\");const urlUpToPathVariable=rawUrlScope.split(\":\")[0];const urlScope=urlUpToPathVariable.length>1?urlUpToPathVariable:\"\";for(const url in index){const strippedURL=stripLocaleSlugFromPath(url,localeSlug);if(!strippedURL.startsWith(urlScope)){continue;}if(baseScopeUrlHasVariable&&url.length<=urlScope.length){continue;}scopedIndex[url]=index[url];}return scopedIndex;}export function useSearch(query,settings){const[searchIndex,_setSearchIndex]=useState({});const[status,setStatus]=useState(\"loading\");const{results}=useRawSearch(searchIndex,query,settings);const{activeLocale}=useLocaleInfo();const localeId=activeLocale?.id;// Seperate setter function so that the URL scope is always applied\n// to indexes loaded from either the cache or network.\nfunction setSearchIndex(index,options={ignoreScope:false}){let scopedIndex=index;if(settings.urlScope&&!options.ignoreScope){scopedIndex=getIndexedScopedToUrl(index,settings.urlScope,activeLocale?.slug);log(\"Using URL scope\",settings.urlScope);}_setSearchIndex(scopedIndex);}useEffect(()=>{async function loadSearchIndex(){setStatus(\"loading\");const baseUrl=getBaseUrl(\"framer-search-index\");if(!baseUrl){setStatus(\"no-meta-tag-found\");setSearchIndex(fakeResults,{ignoreScope:true});log(\"No meta tag found\");return;}const cacheResult=await getCachedIndex(localeId,baseUrl);if(cacheResult.status===\"fresh\"){setSearchIndex(cacheResult.searchIndex);setStatus(\"success\");log(\"Using fresh cached index\");return;}if(cacheResult.status===\"stale\"){setSearchIndex(cacheResult.searchIndex);setStatus(\"loading-with-cache\");log(\"Using stale cached index while loading a fresh one\");}const searchIndexUrl=getSearchIndexUrl(baseUrl,localeId);const response=await fetch(searchIndexUrl);if(response.ok){const downloadedIndex=await response.json();setSearchIndex(downloadedIndex);setCachedIndex(localeId,downloadedIndex,baseUrl);setStatus(\"success\");log(\"Using downloaded index\");return;}// Our \"sites\" CDN currently returns 403s for missing files.\nconst isNotFound=response.status===403||response.status===404;if(!isNotFound){throw new Error(response.statusText);}// Index is likely still being generated.\nlog(\"Index not found\");const fallbackBaseUrl=getBaseUrl(\"framer-search-index-fallback\");if(!fallbackBaseUrl){if(cacheResult.status===\"miss\"){setStatus(\"pending-index-generation\");log(\"No fallback, no cache\");}else{setStatus(\"success\");log(\"No fallback, using cache\");}return;}// If we're here, cache is missing or stale. If it's stale but it's our fallback index, we can use it.\nif(cacheResult.status===\"stale\"&&cacheResult.indexHash===fallbackBaseUrl){setStatus(\"success\");log(\"Using cached fallback index\");return;}const fallbackSearchIndexUrl=getSearchIndexUrl(fallbackBaseUrl,localeId);const fallbackResponse=await fetch(fallbackSearchIndexUrl);if(fallbackResponse.ok){const downloadedIndex=await fallbackResponse.json();setSearchIndex(downloadedIndex);setCachedIndex(localeId,downloadedIndex,fallbackBaseUrl);setStatus(\"success\");log(\"Using downloaded fallback index\");return;}if(cacheResult.status===\"miss\"){setStatus(\"pending-index-generation\");log(\"Fallback failed, no cache\");}else{setStatus(\"success\");log(\"Fallback failed, using cache\");}}loadSearchIndex().catch(error=>{// TODO: Check for error type here. If it's a network error,\n// we could do a few retries.\nsetStatus(\"error\");log(\"Failed to load search index\",error);});},[localeId]);log({status,results});return{results,status};}function getBaseUrl(name){return safeDocument?.querySelector(`meta[name=\"${name}\"]`)?.getAttribute(\"content\");}function getSearchIndexUrl(baseURL,localeId){if(isDefaultLocaleId(localeId))return baseURL;return baseURL.replace(\".json\",`-${localeId}.json`);}\nexport const __FramerMetadata__ = {\"exports\":{\"SearchIndex\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useSearch\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useSearch.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useSearch}from\"https://framerusercontent.com/modules/MyBp84Z0p9nUcMimVMnY/fpvHBWGoGQcWezUopJLS/useSearch.js\";import React,{useEffect,useState,useMemo,forwardRef,useRef,useDeferredValue,useLayoutEffect,useCallback,useImperativeHandle}from\"react\";import{Browser}from\"https://framerusercontent.com/modules/PJVBcBLmDteTEAZh3J9Z/keXJyjyE9VnzUcDMayjg/browser.js\";import{motion,clamp,useAnimate}from\"framer-motion\";import{SearchIcon,ClearIcon,SpinnerIcon}from\"https://framerusercontent.com/modules/LV9trClbmNwd5PVj9l8y/L4rFqMGNzGSwRZpGTGF3/Icons.js\";import{clampText,getFontFamily,localStorageDebugFlag,animationKeyFromLayout,stripLocaleSlugFromPath}from\"https://framerusercontent.com/modules/MWsEnYfRnoOQq31DN4ql/fxR5MNtgeSOU8Mj4iY9n/utils.js\";import{useCallbackOnMouseMove}from\"https://framerusercontent.com/modules/Gzef0nFihI9m9vZG45th/lIUxbZcreiDm2GzUkt3y/useCallbackOnMouseMove.js\";import{scrollIntoView}from\"https://framerusercontent.com/modules/eAnjm75CdfYT1Zz4BIaz/7KDSfnnyD1T3Ap75L4m8/scrollIntoView.js\";import{useLocaleInfo,// @ts-expect-error Internal API\nuseRouter,// @ts-expect-error Internal API\ninferInitialRouteFromPath}from\"framer\";const MAX_DESCRIPTION_LENGTH=120;const MODAL_MAX_HEIGHT=496;const VERTICAL_SPACING_MULTIPLIER=.6;function ClearButton({theme,type,onClick,text}){const shouldDisplayIcon=type===\"icon\";const iconOrText=shouldDisplayIcon?/*#__PURE__*/_jsx(ClearIcon,{style:{color:theme.inputIconColor,width:theme.inputIconSize,height:theme.inputIconSize}}):text;return /*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,fontSize:theme&&theme.titleFont&&theme.titleFont.fontSize?theme.titleFont.fontSize:15},children:/*#__PURE__*/_jsx(\"button\",{className:\"__framer-search-clear-button\",onClick:onClick,style:{fontFamily:\"inherit\",border:\"none\",background:\"none\",cursor:\"pointer\",display:\"flex\",textTransform:\"uppercase\",color:theme.inputIconColor,fontSize:\"0.75em\",padding:0},children:iconOrText})});}function Divider({theme,type}){const styles={background:theme.foregroundColor,height:1,flexShrink:0,opacity:.05};if(type===\"contained\"&&theme){styles.marginLeft=theme.horizontalSpacing;styles.marginRight=theme.horizontalSpacing;}return /*#__PURE__*/_jsx(\"div\",{style:styles});}export const Input=/*#__PURE__*/forwardRef(function Input(props,ref){const{value=\"\",status,autofocus,theme,placeholder,iconType,clearButtonType,onChange}=props;const[inputValue,setInputValue]=useState(value);const[isFocused,setIsFocused]=useState(false);const inputRef=useRef();useImperativeHandle(ref,()=>inputRef.current);React.useLayoutEffect(()=>{// Runs on unmount, fixes a bug in Safari that scrolls to the bottom\n// of the page when the input unmounts.\nreturn()=>{const inputElement=inputRef.current;if(!inputElement||inputElement!==document.activeElement)return;inputElement.blur();};},[]);const handleInputClick=()=>{if(inputRef.current){inputRef.current.focus();}};const handleClearClick=()=>{setInputValue(\"\");};useEffect(()=>{onChange(inputValue);},[inputValue]);const hasInputText=inputValue.length>0;const showClearButton=inputValue.length>0&&clearButtonType&&clearButtonType!==\"none\";const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);const searchIcon=iconType===\"custom\"&&theme.inputIconImage?/*#__PURE__*/_jsx(\"img\",{alt:\"icon alongside the Site Search input\",src:theme.inputIconImage.src,width:theme.inputIconSize,height:theme.inputIconSize,decoding:\"async\"}):/*#__PURE__*/_jsx(SearchIcon,{color:theme.inputIconColor,width:theme.inputIconSize,height:theme.inputIconSize});return /*#__PURE__*/_jsxs(\"div\",{role:\"search\",style:{...inputContainerStyle,fontFamily:getFontFamily(theme),paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,gap:12,paddingTop:verticalSpacing,paddingBottom:verticalSpacing,touchAction:\"none\"},onClick:handleInputClick,children:[/*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,display:\"flex\"},children:status===\"loading\"&&inputValue?/*#__PURE__*/_jsx(SpinnerIcon,{color:theme.inputIconColor,backgroundColor:theme.backgroundColor,style:{height:theme&&theme.inputIconSize,width:theme&&theme.inputIconSize}}):searchIcon}),/*#__PURE__*/_jsx(\"input\",{ref:inputRef,spellCheck:false,autoFocus:autofocus,style:{...inputStyle,WebkitTapHighlightColor:\"rgba(0,0,0,0)\",color:theme.foregroundColor,lineHeight:\"2em\",verticalAlign:\"baseline\",...theme.titleFont,...theme.inputFont,fontSize:theme.inputFontSize,// @ts-ignore\n\"--framer-search-placeholder-color\":theme.placeholderColor},onFocus:()=>{const scrollOffset=document.documentElement.scrollTop;document.documentElement.scrollTop=scrollOffset;},placeholder:placeholder,value:inputValue,onChange:()=>setInputValue(inputRef.current.value)}),showClearButton&&/*#__PURE__*/_jsx(ClearButton,{theme:theme,type:props.clearButtonType,text:props.clearButtonText,onClick:handleClearClick})]});});const inputContainerStyle={display:\"inline-flex\",alignItems:\"center\",flexShrink:0};const inputStyle={outline:\"none\",border:\"none\",background:\"transparent\",fontWeight:500,height:\"2em\",padding:0,width:\"100%\"};export const ResultRow=/*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function ResultRow(props,ref){const{index,result,prevMousePositionRef,type=\"contained\",subtitleType=\"path\",selected=false,theme,localeSlug,style,onMouseMove,onPointerDown,onNavigateTo}=props;const{url,title,score}=result;const urlPath=useMemo(()=>{return stripLocaleSlugFromPath(url,localeSlug);},[url,localeSlug]);const handleMouseMove=useCallbackOnMouseMove(event=>onMouseMove(event,index),prevMousePositionRef);const isContained=type===\"contained\";const borderRadius=isContained?clamp(0,Infinity,theme.borderRadius-theme.spacing):0;const subtitleText=subtitleType===\"path\"?urlPath:clampText(result.description,MAX_DESCRIPTION_LENGTH);const handleClick=event=>{event.preventDefault();onNavigateTo(result.url);};const focusTrap=event=>{event.preventDefault();};return /*#__PURE__*/_jsx(\"a\",{ref:ref,style:{textDecoration:\"none\"},href:result.url,onClick:handleClick,onMouseMove:handleMouseMove,onMouseDown:focusTrap,onPointerDown:event=>onPointerDown(event,index),children:/*#__PURE__*/_jsxs(\"li\",{style:{...resultContainer,...style,paddingTop:isContained?12:16,paddingBottom:isContained?12:16,color:theme.foregroundColor,position:\"relative\",paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing},children:[/*#__PURE__*/_jsx(\"div\",{style:{backgroundColor:theme.foregroundColor,position:\"absolute\",opacity:selected?.06:0,borderRadius,left:theme&&isContained?theme.spacing:0,right:theme&&isContained?theme.spacing:0,top:0,bottom:0}}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",overflow:\"hidden\",gap:4},children:[/*#__PURE__*/_jsx(\"h3\",{style:{...resultTitle,...theme.titleFont,lineHeight:\"1.4em\"},children:title}),/*#__PURE__*/_jsxs(\"p\",{style:{margin:0,color:theme.subtitleColor,...theme.subtitleFont,whiteSpace:\"nowrap\",overflow:\"hidden\",textOverflow:\"ellipsis\",lineHeight:\"1.4em\"},children:[localStorageDebugFlag?score:\"\",\" \",subtitleText]})]})]},result.url)});}));/**\n * Flexible gap used inside a flexbox layout to push down the quick menu\n * by 20% of the screen height, but also allow it to collapse to zero if\n * there is not enough vertical room.\n */function QuickMenuSpacer({onClick}){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",flexBasis:\"20vh\"},onClick:onClick});}const layoutContainerStyle={display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"flex-start\",gap:15,overflow:\"visible\"};function LayoutContainer({layoutType,theme,onKeyDown,onDismiss,children,modalOptions}){const layoutStyles=getLayoutBaseStyles(layoutType,theme);const style={...layoutContainerStyle,...layoutStyles,willChange:\"transform\",marginTop:layoutType===\"FixedTop\"?theme.offsetTop:0,height:layoutType===\"Sidebar\"?\"100%\":\"auto\",maxHeight:layoutType===\"QuickMenu\"?\"100%\":\"none\",justifyContent:layoutType===\"Sidebar\"?\"flex-end\":\"flex-start\",flexDirection:layoutType===\"Sidebar\"?\"column-reverse\":\"column\"};const innerStyle={...layoutContainerStyle,...layoutStyles,height:layoutType===\"Sidebar\"?\"100%\":\"auto\",maxHeight:layoutType===\"QuickMenu\"?\"100%\":\"none\",gap:layoutType===\"Sidebar\"?0:theme.gapBetweenStatusAndSearch,backgroundColor:layoutType===\"Sidebar\"?theme.backgroundColor:\"transparent\",justifyContent:layoutType===\"Sidebar\"?\"flex-end\":\"flex-start\",flexDirection:layoutType===\"Sidebar\"?\"column-reverse\":\"column\",originX:.5,originY:.5};function getContainerAnimation(){switch(layoutType){case\"FixedTop\":{const key=animationKeyFromLayout(\"FixedTop\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{y:-10,opacity:.2,transition:{duration:Browser.isTouch()?0:.15}};}break;}case\"QuickMenu\":{const key=animationKeyFromLayout(\"QuickMenu\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{scale:.95,opacity:0,y:0,x:0,rotate:0,transition:{type:\"spring\",stiffness:600,damping:40}};}break;}case\"Sidebar\":{const key=animationKeyFromLayout(\"Sidebar\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{x:-10,opacity:0,transition:{duration:.15}};}break;}}}const containerAnimation=getContainerAnimation();return /*#__PURE__*/_jsxs(\"div\",{style:style,onKeyDown:onKeyDown,onClick:event=>event.stopPropagation(),children:[layoutType===\"QuickMenu\"&&/*#__PURE__*/_jsx(QuickMenuSpacer,{onClick:onDismiss}),/*#__PURE__*/_jsx(motion.div,{initial:containerAnimation,animate:{opacity:1,scale:1,x:0,y:0,rotate:0},transition:containerAnimation?containerAnimation.transition:undefined,exit:{opacity:0,transition:{duration:0}},style:innerStyle,children:children})]});}function ModalContainer({layoutType,theme,children,heightIsStatic,heightTransition,heightDeps}){const style={// This `willChange` is required to avoid weird rendering issues where\n// parts of the search window won't redraw, which we observed in Safari 16.4.\nwillChange:\"transform\",backgroundColor:theme.backgroundColor,color:theme.foregroundColor,borderRadius:layoutType===\"QuickMenu\"?theme.borderRadius:0,width:\"100%\",display:\"flex\",flexDirection:\"column\",overflow:\"hidden\",boxShadow:layoutType!==\"Sidebar\"?theme.shadow:undefined,maxHeight:layoutType===\"QuickMenu\"?`min(${MODAL_MAX_HEIGHT}px, calc(100vh - 30px))`:undefined};// Opt-in Height Animations for the Search Quick Actions menu.\n// These are disabled by default, but can be enabled via props.\nconst[scope,animate]=useAnimate();useLayoutEffect(()=>{if(layoutType!==\"QuickMenu\"||heightIsStatic)return;const prevHeight=scope.current.offsetHeight;scope.current.style.height=\"auto\";const height=scope.current.offsetHeight;scope.current.style.height=prevHeight+\"px\";animate(scope.current,{height:[prevHeight,height]},heightTransition);},heightDeps);return /*#__PURE__*/_jsx(\"div\",{ref:scope,role:\"dialog\",className:layoutType===\"FixedTop\"?\"__framer-max-height-80dvh\":undefined,style:style,children:children});}const ScrollView=/*#__PURE__*/React.forwardRef(function ScrollView({theme,children},ref){const isTouch=Browser.isTouch();const[canScroll,setCanScroll]=React.useState(true);React.useEffect(()=>{if(!isTouch)return;const element=ref.current;if(!element)return;setCanScroll(element.scrollHeight>element.clientHeight);});return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{width:`calc(100% + ${theme.scrollBarWidth}px)`,overflowY:\"scroll\",overflowX:\"hidden\",overscrollBehavior:\"contain\",touchAction:canScroll?undefined:\"none\",// Make the list appear slightly under the divider\n// so that the divider is still visible when the first\n// item is selected.\nmarginTop:-1},children:children});});const statusStyle={backgroundColor:\"#B5B5B5\",color:\"#FFF\",boxShadow:\"0px 20px 40px 0px rgba(0, 0, 0, 0.25)\",fontFamily:\"inherit\",textAlign:\"center\",fontSize:13,padding:\"8px 0\"};function StatusMessage({status,layoutType,theme}){const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);const style={...statusStyle,userSelect:\"none\",fontFamily:getFontFamily(theme),paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,fontWeight:500,lineHeight:`calc(${theme.inputFontSize} * 2)`,paddingTop:verticalSpacing,paddingBottom:verticalSpacing,...theme.titleFont,zIndex:theme.zIndex+1,maxWidth:layoutType===\"FixedTop\"?\"none\":theme.width,width:layoutType===\"FixedTop\"?`calc(100% - ${verticalSpacing*2}px`:\"100%\",boxShadow:layoutType!==\"Sidebar\"&&statusStyle.boxShadow,borderRadius:layoutType!==\"Sidebar\"&&theme.borderRadius};// Show less text on fixed text to look nicer on mobile\nconst previewInfoText=layoutType===\"FixedTop\"?\"Preview Mode\":\"Preview Mode. Publish your Site to Search.\";if(status===\"no-meta-tag-found\"){return /*#__PURE__*/_jsx(\"div\",{style:style,children:previewInfoText});}if(status===\"pending-index-generation\"){return /*#__PURE__*/_jsx(\"div\",{style:style,children:\"Site is being indexed\"});}return null;}const resultTitle={textOverflow:\"ellipsis\",maxWidth:\"100%\",overflow:\"hidden\",fontWeight:500,whiteSpace:\"nowrap\",flex:1,margin:0};const resultContainer={padding:\"16px 20px\",listStyle:\"none\",fontWeight:500};const sidebarStyles={left:0,width:500};const fixedTopStyles={top:0,width:\"100%\"};const quickMenuStyles={width:500};function getLayoutBaseStyles(layoutOption,theme){switch(layoutOption){case\"Sidebar\":return{...sidebarStyles,width:theme.width};case\"FixedTop\":return fixedTopStyles;case\"QuickMenu\":return{...quickMenuStyles,width:theme.width};}}export var SearchInputClearButtonType;(function(SearchInputClearButtonType){SearchInputClearButtonType[\"Icon\"]=\"icon\";SearchInputClearButtonType[\"Text\"]=\"text\";SearchInputClearButtonType[\"None\"]=\"none\";})(SearchInputClearButtonType||(SearchInputClearButtonType={}));export var SearchInputDividerType;(function(SearchInputDividerType){SearchInputDividerType[\"None\"]=\"none\";SearchInputDividerType[\"FullWidth\"]=\"fullWidth\";SearchInputDividerType[\"Contained\"]=\"contained\";})(SearchInputDividerType||(SearchInputDividerType={}));export var SearchResultTitleType;(function(SearchResultTitleType){SearchResultTitleType[\"H1\"]=\"h1\";SearchResultTitleType[\"Title\"]=\"title\";})(SearchResultTitleType||(SearchResultTitleType={}));export var SearchResultSubtitleType;(function(SearchResultSubtitleType){SearchResultSubtitleType[\"Description\"]=\"description\";SearchResultSubtitleType[\"Path\"]=\"path\";})(SearchResultSubtitleType||(SearchResultSubtitleType={}));export var SearchResultItemType;(function(SearchResultItemType){SearchResultItemType[\"FullWidth\"]=\"fullWidth\";SearchResultItemType[\"Contained\"]=\"contained\";})(SearchResultItemType||(SearchResultItemType={}));export var SearchLayoutType;(function(SearchLayoutType){SearchLayoutType[\"Sidebar\"]=\"Sidebar\";SearchLayoutType[\"FixedTop\"]=\"FixedTop\";SearchLayoutType[\"QuickMenu\"]=\"QuickMenu\";})(SearchLayoutType||(SearchLayoutType={}));export var SearchEntryType;(function(SearchEntryType){SearchEntryType[\"Icon\"]=\"icon\";SearchEntryType[\"Text\"]=\"text\";})(SearchEntryType||(SearchEntryType={}));export var SearchIconType;(function(SearchIconType){SearchIconType[\"Default\"]=\"default\";SearchIconType[\"Custom\"]=\"custom\";})(SearchIconType||(SearchIconType={}));/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export function SearchModal(props){const{layoutType,theme,urlScope,inputOptions,backdropOptions,modalOptions,resultOptions,onDismiss}=props;const{activeLocale}=useLocaleInfo();const localeId=activeLocale?.id;const localeSlug=activeLocale?.slug;const input=useRef();const selectedResultRow=useRef();const scrollView=useRef();const[selected,setSelected]=useState({index:0,scroll:true});const prevMousePositionRef=useRef(null);const[isKeyboardNavigationDisabled,setIsKeyboardNavigationDisabled]=useState(Browser.isTouch);const[query,setQuery]=useState(\"\");const deferredQuery=useDeferredValue(query);const{results,status}=useSearch(deferredQuery,{minimumScore:0,urlScope,titleType:resultOptions.titleType});const selectedResult=results[selected.index];const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);useEffect(()=>{// Reset the selection to the top if the query changes.\nsetSelected({index:0,scroll:true});},[deferredQuery]);const handleResultRowPointerDown=useCallback((event,index)=>{if(event.pointerType!==\"touch\")return;setIsKeyboardNavigationDisabled(true);setSelected({index,scroll:false});},[]);const handleResultRowMouseMove=useCallback((event,index)=>{setSelected(previousSelected=>{if(previousSelected.index===index){return previousSelected;}return{index,scroll:false};});},[]);const router=useRouter();const navigateTo=useCallback(async url=>{if(status===\"no-meta-tag-found\"){return;}try{// Ideally, we would directly expose `routeId` in the search index so that\n// we don't need to infer it from the URL.\nconst{routeId,pathVariables}=inferInitialRouteFromPath(router.routes,url);const route=router.getRoute?.(routeId);onDismiss();await route?.page?.preload?.();router.navigate?.(routeId,null,pathVariables,false);}catch(error){window.location.href=url;}},[status]);const handleKeyDown=event=>{const maxIndex=results.length-1;switch(event.code){case\"ArrowUp\":event.preventDefault();if(isKeyboardNavigationDisabled){setIsKeyboardNavigationDisabled(false);break;}setSelected(previousSelected=>({index:clamp(0,maxIndex,previousSelected.index-1),scroll:true}));break;case\"ArrowDown\":event.preventDefault();if(isKeyboardNavigationDisabled){setIsKeyboardNavigationDisabled(false);break;}setSelected(previousSelected=>({index:clamp(0,maxIndex,previousSelected.index+1),scroll:true}));break;case\"Escape\":break;case\"Enter\":if(selectedResult){navigateTo(selectedResult.url);}break;default:event.stopPropagation();}};const showNoResults=results.length===0&&deferredQuery.length>1&&status!==\"loading\";const showDivider=Boolean((deferredQuery.length>0&&results.length>0||showNoResults)&&status!==\"loading\"&&props.inputOptions&&props.inputOptions.dividerType!==\"none\");const isItemContained=Boolean(props.resultOptions&&props.resultOptions.itemType===\"contained\");const spacing=isItemContained?theme.spacing:10;const listPaddingTop=showDivider&&isItemContained?spacing+theme.gapBetweenResults*2:0;useEffect(()=>{if(!selected.scroll)return;const element=selectedResultRow.current;if(!element)return;scrollIntoView(element,scrollView.current,{offsetTop:showDivider&&isItemContained?listPaddingTop:0,offsetBottom:isItemContained?spacing:0});// `showDivider` and `isItemContained` are not dependencies because\n// they will be the latest values when `selected` changes. And including\n// them will cause unnecessary scrolling into view.\n},[selected]);return /*#__PURE__*/_jsxs(LayoutContainer,{layoutType:layoutType,modalOptions:modalOptions,theme:theme,onKeyDown:handleKeyDown,onDismiss:onDismiss,children:[/*#__PURE__*/_jsxs(ModalContainer,{layoutType:layoutType,theme:theme,heightIsStatic:modalOptions.heightIsStatic,heightTransition:modalOptions.heightTransition,heightDeps:[results.length,showNoResults],children:[/*#__PURE__*/_jsx(Input,{autofocus:true,ref:input,onChange:setQuery,value:query,theme:theme,status:status,iconType:inputOptions.iconOptions.iconType,placeholder:inputOptions.placeholderOptions.placeholderText,clearButtonType:inputOptions?inputOptions.clearButtonType:undefined,clearButtonText:inputOptions.clearButtonText}),showDivider&&/*#__PURE__*/_jsx(Divider,{theme:theme,type:inputOptions.dividerType}),/*#__PURE__*/_jsx(ScrollView,{ref:scrollView,theme:theme,children:/*#__PURE__*/_jsxs(\"ul\",{\"aria-live\":\"polite\",style:{display:\"flex\",flexDirection:\"column\",width:`calc(100% - ${theme.scrollBarWidth}px)`,padding:0,paddingTop:listPaddingTop,paddingBottom:results.length&&isItemContained?spacing:0,gap:theme.gapBetweenResults,margin:0},children:[results.map((result,index)=>{const isSelected=index===selected.index;return /*#__PURE__*/_jsx(ResultRow,{ref:isSelected?selectedResultRow:null,index:index,result:result,prevMousePositionRef:prevMousePositionRef,selected:!isKeyboardNavigationDisabled&&isSelected,type:props.resultOptions.itemType,subtitleType:props.resultOptions.subtitleOptions.subtitleType,theme:theme,localeSlug:localeSlug,onMouseMove:handleResultRowMouseMove,onPointerDown:handleResultRowPointerDown,onNavigateTo:navigateTo},result.url);}),showNoResults&&/*#__PURE__*/_jsx(\"li\",{style:{paddingTop:verticalSpacing-listPaddingTop,paddingBottom:verticalSpacing,lineHeight:\"2em\",paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,height:\"Sidebar\"?\"100%\":\"auto\"},children:/*#__PURE__*/_jsx(\"h3\",{style:{...resultTitle,textAlign:\"center\",lineHeight:`calc(${theme.inputFontSize} * 2)`,color:theme.subtitleColor,...theme.titleFont},children:\"No results\"})})]})})]}),/*#__PURE__*/_jsx(StatusMessage,{status:status,layoutType:layoutType,theme:theme})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"ResultRow\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultTitleType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultItemType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchLayoutType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchInputDividerType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchTheme\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultSubtitleType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchModal\":{\"type\":\"reactComponent\",\"name\":\"SearchModal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"SearchIconType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Input\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchEntryType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchInputClearButtonType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-ignore\nimport{useLocaleInfo}from\"framer\";import{clamp}from\"framer-motion\";import{useEffect,useState,useTransition}from\"react\";import{SearchResultTitleType}from\"https://framerusercontent.com/modules/tV9haTHllpHHc9Fjue2H/1GynhDlRW7uuXFYW1RXb/SearchModal.js\";import{getCachedIndex,isDefaultLocaleId,setCachedIndex}from\"https://framerusercontent.com/modules/uU1mtMKXsrVAg8N5hW7w/v7gDLwKJgQ5vAsFHxY4H/cachedIndex.js\";import{fakeResults}from\"https://framerusercontent.com/modules/K9JZRwJcE6slDAf8rUmh/mJ54py1Ecnn1RoC4N1m4/fakeResults.js\";import{distance}from\"https://framerusercontent.com/modules/TwRgbWuhHeB95MPifel4/YW8Hlm59FG3PajbrVsaR/fuzzySearch.js\";import{createLogger,localStorageDebugFlag,safeDocument,safeWindow,stripLocaleSlugFromPath,yieldToMain}from\"https://framerusercontent.com/modules/MWsEnYfRnoOQq31DN4ql/fxR5MNtgeSOU8Mj4iY9n/utils.js\";const{log,time,timeEnd}=createLogger(localStorageDebugFlag);const splitWordsRegex=(()=>{try{// Regex lookbehind is used to ignore ampersands when splitting\n// words. For example \"H&M\" will not be split and is considered as\n// one word, but \"H & M\" will be split.\n// However, some browsers (like Safari iOS 15) don't support\n// lookbehind and will crash. When it's not supported, fallback to\n// a safer regex that always splits ampersands.\nconst regex=RegExp(\"[\\\\s.,;!?\\\\p{P}\\\\p{Z}]+(?<!\\\\p{L}&)(?!&\\\\p{L})\",\"u\");\"\".split(regex);return regex;}catch{log(\"Falling back to regex without lookbehind\");return RegExp(\"[\\\\s.,;!?\\\\p{P}\\\\p{Z}]+\",\"u\");}})();function splitWords(text){return text.split(splitWordsRegex);}function getUniqueWords(str){const words=splitWords(str).filter(word=>word.trim()&&word.length>0);return new Set(words);}const normalizeRegex=/[\\u0300-\\u036f]/g;/**\n * Replace accented characters with equivilant non-accented versions and\n * make everything lowercase.\n */function getNormalizedString(text){if(Array.isArray(text)){return text.map(getNormalizedString);}return text.normalize(\"NFD\")// From: https://stackoverflow.com/a/37511463\n.replace(normalizeRegex,\"\").toLowerCase();}const normalizedItemCache=new WeakMap;function getNormalizedItemFromCache(item){const cached=normalizedItemCache.get(item);if(cached)return cached;const normalizedItem=getNormalizedItem(item);normalizedItemCache.set(item,normalizedItem);return normalizedItem;}function getNormalizedItem(item){const normalizedItem={};for(const key in item){if(item.hasOwnProperty(key)){const value=item[key];if(typeof value===\"string\"){normalizedItem[key]=getNormalizedString(value);continue;}if(Array.isArray(value)){normalizedItem[key]=getNormalizedString(value);continue;}normalizedItem[key]=value;}}return normalizedItem;}function getMatchRange(currentRange,start,end){const result={...currentRange};if(start<result.start){result.start=start;}if(end>result.end){result.end=end;}return result;}/**\n * Score index item based on the contents of it's fields such as title, description, headings etc.\n *\n * Note that this does not normalize the item or query. Normalization is expected to happen\n * before passing the data into this.\n */function getScoreForSearchIndexItem(item,query,words,fullQuery){let score=0;const match={title:{start:Infinity,end:0},description:{start:Infinity,end:0}};const urlWords=getUniqueWords(item.url);// Match query based on words in the URL so that random strings inside\n// other strings are not matched.\nif(urlWords.has(query)){score+=10;}// Really boost single word queries that match single word URLs.\nif(words.size===1&&urlWords.size===1&&urlWords.values().next().value===query){score+=score*5;}// Score shorter URLs higher so `/pricing` is before `/lala/pricing`.\nif(score>0){const splitLength=item.url.split(\"/\").length;score+=clamp(10-splitLength,0,splitLength);}const titleWords=getUniqueWords(item.title);// Prefer full word matches in the title.\nif(titleWords.has(query)){score+=10;}const titleIndex=item.title.indexOf(query);if(titleIndex!==-1){score+=10;// TODO: Matches are currently not used, but they can be used in the\n// future to add text highlighting.\nmatch.title=getMatchRange(match.title,titleIndex,titleIndex+query.length);}// If the full query is close to being the heading, score this highly as\n// the user is most likely looking for that exact title.\nif(distance(item.title,fullQuery)<=2){score+=score*10;}// Fuzzy match full words in the title.\nfor(const titleWord of titleWords){const distanceScore=distance(query,titleWord);// Small distance score helps with small typos.\nif(distanceScore<=2){score+=10;}}const headings=[...item.h1,...item.h2,...item.h3,...item.h4,...item.h5,...item.h6];for(const heading of headings){const headingWords=getUniqueWords(heading);// If the full query is close to being the heading, score this highly as\n// the user is most likely looking for that exact title.\nif(distance(heading,fullQuery)<=2){score+=score*10;}// Bias headings that start with the query as this helps when\n// you know the title you are searching for.\nif(heading.startsWith(query)){score+=10;}if(headingWords.has(query)){score+=10;}if(heading.includes(query)){score+=1;}// Fuzzy match full words in headings.\nfor(const headingWord of headingWords){const distanceScore=distance(query,headingWord);if(distanceScore<=2){score+=1;}}}const descriptionIndex=item.description.indexOf(query);if(descriptionIndex!==-1){score+=10;match.description=getMatchRange(match.description,descriptionIndex,descriptionIndex+query.length);}for(const p of item.p){if(p.includes(query)){score+=.5;}}for(const codeblock of item.codeblock){// If the full query is close to being the codeblock, score this highly as\n// the user is most likely looking for that exact code.\nif(distance(codeblock,fullQuery)<=2){score*=10;}if(codeblock.includes(fullQuery)){score+=10;}if(codeblock.includes(query)){score+=.5;}}return{score,match};}function getSearchIndexItemScore(item,normalizedQuery){const normalizedItem=getNormalizedItemFromCache(item);const queryWords=getUniqueWords(normalizedQuery);let total=0;for(const queryWord of queryWords){const{score}=getScoreForSearchIndexItem(normalizedItem,queryWord,queryWords,normalizedQuery);total+=score;}return total;}function useRawSearch(index,query,settings){const[results,setResults]=useState(null);const[,startTransition]=useTransition();useEffect(()=>{const abortController=new AbortController;executeRawSearch(index,query,settings,abortController.signal).then(res=>{if(!abortController.signal.aborted){startTransition(()=>{setResults(res);});}}).catch(err=>{if(err.name!==\"AbortError\"){console.error(\"Search failed:\",err);}});return()=>{abortController.abort();};},[index,query]);return{results:results??[]};}const QUANTUM=32// ms, 2*16ms (2 frames on 60 hz)\n;async function executeRawSearch(index,query,settings,signal){const path=safeWindow?.location.pathname;time(\"query\");const normalizedQuery=getNormalizedString(query);const results=[];const items=Object.values(index);let deadline=performance.now()+QUANTUM;async function yieldToMainIfNecessary(){if(performance.now()>=deadline){await yieldToMain();deadline=performance.now()+QUANTUM;}}for(let i=0;i<items.length;++i){if(performance.now()>=deadline){await yieldToMainIfNecessary();deadline=performance.now()+QUANTUM;}if(signal?.aborted)return[];const item=items[i];const score=getSearchIndexItemScore(item,normalizedQuery);if(score>(settings.minimumScore||0)&&(!path||item.url!==path)){const heading=item.h1.length&&item.h1[0];const title=settings?.titleType===SearchResultTitleType.Title?item.title:heading?heading:item.title;// Convert index item to result item.\nresults.push({url:item.url,title,description:item.description,body:[...item.p,item.codeblock].join(\" \"),score});}}await yieldToMainIfNecessary();if(signal?.aborted)return[];const sorted=results.sort((itemA,itemB)=>itemB.score-itemA.score);timeEnd(\"query\");await yieldToMainIfNecessary();if(signal?.aborted)return[];return results.slice(0,20);}function getIndexedScopedToUrl(index,rawUrlScope,localeSlug){const scopedIndex={};const baseScopeUrlHasVariable=rawUrlScope.includes(\":\");const urlUpToPathVariable=rawUrlScope.split(\":\")[0];const urlScope=urlUpToPathVariable.length>1?urlUpToPathVariable:\"\";for(const url in index){const strippedURL=stripLocaleSlugFromPath(url,localeSlug);if(!strippedURL.startsWith(urlScope)){continue;}if(baseScopeUrlHasVariable&&url.length<=urlScope.length){continue;}scopedIndex[url]=index[url];}return scopedIndex;}export function useSearch(query,settings){const[searchIndex,_setSearchIndex]=useState({});const[status,setStatus]=useState(\"loading\");const{results}=useRawSearch(searchIndex,query,settings);const{activeLocale}=useLocaleInfo();const localeId=activeLocale?.id;// Seperate setter function so that the URL scope is always applied\n// to indexes loaded from either the cache or network.\nfunction setSearchIndex(index,options={ignoreScope:false}){let scopedIndex=index;if(settings.urlScope&&!options.ignoreScope){scopedIndex=getIndexedScopedToUrl(index,settings.urlScope,activeLocale?.slug);log(\"Using URL scope\",settings.urlScope);}_setSearchIndex(scopedIndex);}useEffect(()=>{async function loadSearchIndex(){setStatus(\"loading\");const baseUrl=getBaseUrl(\"framer-search-index\");if(!baseUrl){setStatus(\"no-meta-tag-found\");setSearchIndex(fakeResults,{ignoreScope:true});log(\"No meta tag found\");return;}const cacheResult=await getCachedIndex(localeId,baseUrl);if(cacheResult.status===\"fresh\"){setSearchIndex(cacheResult.searchIndex);setStatus(\"success\");log(\"Using fresh cached index\");return;}if(cacheResult.status===\"stale\"){setSearchIndex(cacheResult.searchIndex);setStatus(\"loading-with-cache\");log(\"Using stale cached index while loading a fresh one\");}const searchIndexUrl=getSearchIndexUrl(baseUrl,localeId);const response=await fetch(searchIndexUrl);if(response.ok){const downloadedIndex=await response.json();setSearchIndex(downloadedIndex);setCachedIndex(localeId,downloadedIndex,baseUrl);setStatus(\"success\");log(\"Using downloaded index\");return;}// Our \"sites\" CDN currently returns 403s for missing files.\nconst isNotFound=response.status===403||response.status===404;if(!isNotFound){throw new Error(response.statusText);}// Index is likely still being generated.\nlog(\"Index not found\");const fallbackBaseUrl=getBaseUrl(\"framer-search-index-fallback\");if(!fallbackBaseUrl){if(cacheResult.status===\"miss\"){setStatus(\"pending-index-generation\");log(\"No fallback, no cache\");}else{setStatus(\"success\");log(\"No fallback, using cache\");}return;}// If we're here, cache is missing or stale.\n// If it's stale but it's our fallback index, we can use it.\nif(cacheResult.status===\"stale\"&&cacheResult.indexHash===fallbackBaseUrl){setStatus(\"success\");log(\"Using cached fallback index\");return;}const fallbackSearchIndexUrl=getSearchIndexUrl(fallbackBaseUrl,localeId);const fallbackResponse=await fetch(fallbackSearchIndexUrl);if(fallbackResponse.ok){const downloadedIndex=await fallbackResponse.json();setSearchIndex(downloadedIndex);setCachedIndex(localeId,downloadedIndex,fallbackBaseUrl);setStatus(\"success\");log(\"Using downloaded fallback index\");return;}if(cacheResult.status===\"miss\"){setStatus(\"pending-index-generation\");log(\"Fallback failed, no cache\");}else{setStatus(\"success\");log(\"Fallback failed, using cache\");}}loadSearchIndex().catch(error=>{// TODO: Check for error type here. If it's a network error,\n// we could do a few retries.\nsetStatus(\"error\");log(\"Failed to load search index\",error);});},[localeId]);log({status,results});return{results,status};}function getBaseUrl(name){return safeDocument?.querySelector(`meta[name=\"${name}\"]`)?.getAttribute(\"content\");}function getSearchIndexUrl(baseURL,localeId){if(isDefaultLocaleId(localeId))return baseURL;return baseURL.replace(\".json\",`-${localeId}.json`);}\nexport const __FramerMetadata__ = {\"exports\":{\"SearchIndex\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useSearch\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useSearch.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useSearch}from\"https://framerusercontent.com/modules/MyBp84Z0p9nUcMimVMnY/1vZ2fdkLJI4IprrVTHqR/useSearch.js\";import React,{useEffect,useState,useMemo,forwardRef,useRef,useDeferredValue,useLayoutEffect,useCallback,useImperativeHandle}from\"react\";import{Browser}from\"https://framerusercontent.com/modules/PJVBcBLmDteTEAZh3J9Z/keXJyjyE9VnzUcDMayjg/browser.js\";import{motion,clamp,useAnimate}from\"framer-motion\";import{SearchIcon,ClearIcon,SpinnerIcon}from\"https://framerusercontent.com/modules/LV9trClbmNwd5PVj9l8y/L4rFqMGNzGSwRZpGTGF3/Icons.js\";import{clampText,getFontFamily,localStorageDebugFlag,animationKeyFromLayout,stripLocaleSlugFromPath}from\"https://framerusercontent.com/modules/MWsEnYfRnoOQq31DN4ql/fxR5MNtgeSOU8Mj4iY9n/utils.js\";import{useCallbackOnMouseMove}from\"https://framerusercontent.com/modules/Gzef0nFihI9m9vZG45th/lIUxbZcreiDm2GzUkt3y/useCallbackOnMouseMove.js\";import{scrollIntoView}from\"https://framerusercontent.com/modules/eAnjm75CdfYT1Zz4BIaz/7KDSfnnyD1T3Ap75L4m8/scrollIntoView.js\";import{useLocaleInfo,// @ts-expect-error Internal API\nuseRouter,// @ts-expect-error Internal API\ninferInitialRouteFromPath}from\"framer\";const MAX_DESCRIPTION_LENGTH=120;const MODAL_MAX_HEIGHT=496;const VERTICAL_SPACING_MULTIPLIER=.6;function ClearButton({theme,type,onClick,text}){const shouldDisplayIcon=type===\"icon\";const iconOrText=shouldDisplayIcon?/*#__PURE__*/_jsx(ClearIcon,{style:{color:theme.inputIconColor,width:theme.inputIconSize,height:theme.inputIconSize}}):text;return /*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,fontSize:theme&&theme.titleFont&&theme.titleFont.fontSize?theme.titleFont.fontSize:15},children:/*#__PURE__*/_jsx(\"button\",{className:\"__framer-search-clear-button\",onClick:onClick,style:{fontFamily:\"inherit\",border:\"none\",background:\"none\",cursor:\"pointer\",display:\"flex\",textTransform:\"uppercase\",color:theme.inputIconColor,fontSize:\"0.75em\",padding:0},children:iconOrText})});}function Divider({theme,type}){const styles={background:theme.foregroundColor,height:1,flexShrink:0,opacity:.05};if(type===\"contained\"&&theme){styles.marginLeft=theme.horizontalSpacing;styles.marginRight=theme.horizontalSpacing;}return /*#__PURE__*/_jsx(\"div\",{style:styles});}export const Input=/*#__PURE__*/forwardRef(function Input(props,ref){const{value=\"\",status,autofocus,theme,placeholder,iconType,clearButtonType,onChange}=props;const[inputValue,setInputValue]=useState(value);const[isFocused,setIsFocused]=useState(false);const inputRef=useRef();useImperativeHandle(ref,()=>inputRef.current);React.useLayoutEffect(()=>{// Runs on unmount, fixes a bug in Safari that scrolls to the bottom\n// of the page when the input unmounts.\nreturn()=>{const inputElement=inputRef.current;if(!inputElement||inputElement!==document.activeElement)return;inputElement.blur();};},[]);const handleInputClick=()=>{if(inputRef.current){inputRef.current.focus();}};const handleClearClick=()=>{setInputValue(\"\");};useEffect(()=>{onChange(inputValue);},[inputValue]);const hasInputText=inputValue.length>0;const showClearButton=inputValue.length>0&&clearButtonType&&clearButtonType!==\"none\";const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);const searchIcon=iconType===\"custom\"&&theme.inputIconImage?/*#__PURE__*/_jsx(\"img\",{alt:\"icon alongside the Site Search input\",src:theme.inputIconImage.src,width:theme.inputIconSize,height:theme.inputIconSize,decoding:\"async\"}):/*#__PURE__*/_jsx(SearchIcon,{color:theme.inputIconColor,width:theme.inputIconSize,height:theme.inputIconSize});return /*#__PURE__*/_jsxs(\"div\",{role:\"search\",style:{...inputContainerStyle,fontFamily:getFontFamily(theme),paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,gap:12,paddingTop:verticalSpacing,paddingBottom:verticalSpacing,touchAction:\"none\"},onClick:handleInputClick,children:[/*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,display:\"flex\"},children:status===\"loading\"&&inputValue?/*#__PURE__*/_jsx(SpinnerIcon,{color:theme.inputIconColor,backgroundColor:theme.backgroundColor,style:{height:theme&&theme.inputIconSize,width:theme&&theme.inputIconSize}}):searchIcon}),/*#__PURE__*/_jsx(\"input\",{ref:inputRef,spellCheck:false,autoFocus:autofocus,style:{...inputStyle,WebkitTapHighlightColor:\"rgba(0,0,0,0)\",color:theme.foregroundColor,lineHeight:\"2em\",verticalAlign:\"baseline\",...theme.titleFont,...theme.inputFont,fontSize:theme.inputFontSize,// @ts-ignore\n\"--framer-search-placeholder-color\":theme.placeholderColor},onFocus:()=>{const scrollOffset=document.documentElement.scrollTop;document.documentElement.scrollTop=scrollOffset;},placeholder:placeholder,value:inputValue,onChange:()=>setInputValue(inputRef.current.value)}),showClearButton&&/*#__PURE__*/_jsx(ClearButton,{theme:theme,type:props.clearButtonType,text:props.clearButtonText,onClick:handleClearClick})]});});const inputContainerStyle={display:\"inline-flex\",alignItems:\"center\",flexShrink:0};const inputStyle={outline:\"none\",border:\"none\",background:\"transparent\",fontWeight:500,height:\"2em\",padding:0,width:\"100%\"};export const ResultRow=/*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function ResultRow(props,ref){const{index,result,prevMousePositionRef,type=\"contained\",subtitleType=\"path\",selected=false,theme,localeSlug,style,onMouseMove,onPointerDown,onNavigateTo}=props;const{url,title,score}=result;const urlPath=useMemo(()=>{return stripLocaleSlugFromPath(url,localeSlug);},[url,localeSlug]);const handleMouseMove=useCallbackOnMouseMove(event=>onMouseMove(event,index),prevMousePositionRef);const isContained=type===\"contained\";const borderRadius=isContained?clamp(0,Infinity,theme.borderRadius-theme.spacing):0;const subtitleText=subtitleType===\"path\"?urlPath:clampText(result.description,MAX_DESCRIPTION_LENGTH);const handleClick=event=>{event.preventDefault();onNavigateTo(result.url);};const focusTrap=event=>{event.preventDefault();};return /*#__PURE__*/_jsx(\"a\",{ref:ref,style:{textDecoration:\"none\"},href:result.url,onClick:handleClick,onMouseMove:handleMouseMove,onMouseDown:focusTrap,onPointerDown:event=>onPointerDown(event,index),children:/*#__PURE__*/_jsxs(\"li\",{style:{...resultContainer,...style,paddingTop:isContained?12:16,paddingBottom:isContained?12:16,color:theme.foregroundColor,position:\"relative\",paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing},children:[/*#__PURE__*/_jsx(\"div\",{style:{backgroundColor:theme.foregroundColor,position:\"absolute\",opacity:selected?.06:0,borderRadius,left:theme&&isContained?theme.spacing:0,right:theme&&isContained?theme.spacing:0,top:0,bottom:0}}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",overflow:\"hidden\",gap:4},children:[/*#__PURE__*/_jsx(\"h3\",{style:{...resultTitle,...theme.titleFont,lineHeight:\"1.4em\"},children:title}),/*#__PURE__*/_jsxs(\"p\",{style:{margin:0,color:theme.subtitleColor,...theme.subtitleFont,whiteSpace:\"nowrap\",overflow:\"hidden\",textOverflow:\"ellipsis\",lineHeight:\"1.4em\"},children:[localStorageDebugFlag?score:\"\",\" \",subtitleText]})]})]},result.url)});}));/**\n * Flexible gap used inside a flexbox layout to push down the quick menu\n * by 20% of the screen height, but also allow it to collapse to zero if\n * there is not enough vertical room.\n */function QuickMenuSpacer({onClick}){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",flexBasis:\"20vh\"},onClick:onClick});}const layoutContainerStyle={display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"flex-start\",gap:15,overflow:\"visible\"};function LayoutContainer({layoutType,theme,onKeyDown,onDismiss,children,modalOptions}){const layoutStyles=getLayoutBaseStyles(layoutType,theme);const style={...layoutContainerStyle,...layoutStyles,willChange:\"transform\",marginTop:layoutType===\"FixedTop\"?theme.offsetTop:0,height:layoutType===\"Sidebar\"?\"100%\":\"auto\",maxHeight:layoutType===\"QuickMenu\"?\"100%\":\"none\",justifyContent:layoutType===\"Sidebar\"?\"flex-end\":\"flex-start\",flexDirection:layoutType===\"Sidebar\"?\"column-reverse\":\"column\"};const innerStyle={...layoutContainerStyle,...layoutStyles,height:layoutType===\"Sidebar\"?\"100%\":\"auto\",maxHeight:layoutType===\"QuickMenu\"?\"100%\":\"none\",gap:layoutType===\"Sidebar\"?0:theme.gapBetweenStatusAndSearch,backgroundColor:layoutType===\"Sidebar\"?theme.backgroundColor:\"transparent\",justifyContent:layoutType===\"Sidebar\"?\"flex-end\":\"flex-start\",flexDirection:layoutType===\"Sidebar\"?\"column-reverse\":\"column\",originX:.5,originY:.5};function getContainerAnimation(){switch(layoutType){case\"FixedTop\":{const key=animationKeyFromLayout(\"FixedTop\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{y:-10,opacity:.2,transition:{duration:Browser.isTouch()?0:.15}};}break;}case\"QuickMenu\":{const key=animationKeyFromLayout(\"QuickMenu\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{scale:.95,opacity:0,y:0,x:0,rotate:0,transition:{type:\"spring\",stiffness:600,damping:40}};}break;}case\"Sidebar\":{const key=animationKeyFromLayout(\"Sidebar\");const prop=modalOptions?modalOptions[key]:undefined;if(prop){return prop;}else{return{x:-10,opacity:0,transition:{duration:.15}};}break;}}}const containerAnimation=getContainerAnimation();return /*#__PURE__*/_jsxs(\"div\",{style:style,onKeyDown:onKeyDown,onClick:event=>event.stopPropagation(),children:[layoutType===\"QuickMenu\"&&/*#__PURE__*/_jsx(QuickMenuSpacer,{onClick:onDismiss}),/*#__PURE__*/_jsx(motion.div,{initial:containerAnimation,animate:{opacity:1,scale:1,x:0,y:0,rotate:0},transition:containerAnimation?containerAnimation.transition:undefined,exit:{opacity:0,transition:{duration:0}},style:innerStyle,children:children})]});}function ModalContainer({layoutType,theme,children,heightIsStatic,heightTransition,heightDeps}){const style={// This `willChange` is required to avoid weird rendering issues where\n// parts of the search window won't redraw, which we observed in Safari 16.4.\nwillChange:\"transform\",backgroundColor:theme.backgroundColor,color:theme.foregroundColor,borderRadius:layoutType===\"QuickMenu\"?theme.borderRadius:0,width:\"100%\",display:\"flex\",flexDirection:\"column\",overflow:\"hidden\",boxShadow:layoutType!==\"Sidebar\"?theme.shadow:undefined,maxHeight:layoutType===\"QuickMenu\"?`min(${MODAL_MAX_HEIGHT}px, calc(100vh - 30px))`:undefined};// Opt-in Height Animations for the Search Quick Actions menu.\n// These are disabled by default, but can be enabled via props.\nconst[scope,animate]=useAnimate();useLayoutEffect(()=>{if(layoutType!==\"QuickMenu\"||heightIsStatic)return;const prevHeight=scope.current.offsetHeight;scope.current.style.height=\"auto\";const height=scope.current.offsetHeight;scope.current.style.height=prevHeight+\"px\";animate(scope.current,{height:[prevHeight,height]},heightTransition);},heightDeps);return /*#__PURE__*/_jsx(\"div\",{ref:scope,role:\"dialog\",className:layoutType===\"FixedTop\"?\"__framer-max-height-80dvh\":undefined,style:style,children:children});}const ScrollView=/*#__PURE__*/React.forwardRef(function ScrollView({theme,children},ref){const isTouch=Browser.isTouch();const[canScroll,setCanScroll]=React.useState(true);React.useEffect(()=>{if(!isTouch)return;const element=ref.current;if(!element)return;setCanScroll(element.scrollHeight>element.clientHeight);});return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{width:`calc(100% + ${theme.scrollBarWidth}px)`,overflowY:\"scroll\",overflowX:\"hidden\",overscrollBehavior:\"contain\",touchAction:canScroll?undefined:\"none\",// Make the list appear slightly under the divider\n// so that the divider is still visible when the first\n// item is selected.\nmarginTop:-1},children:children});});const statusStyle={backgroundColor:\"#B5B5B5\",color:\"#FFF\",boxShadow:\"0px 20px 40px 0px rgba(0, 0, 0, 0.25)\",fontFamily:\"inherit\",textAlign:\"center\",fontSize:13,padding:\"8px 0\"};function StatusMessage({status,layoutType,theme}){const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);const style={...statusStyle,userSelect:\"none\",fontFamily:getFontFamily(theme),paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,fontWeight:500,lineHeight:`calc(${theme.inputFontSize} * 2)`,paddingTop:verticalSpacing,paddingBottom:verticalSpacing,...theme.titleFont,zIndex:theme.zIndex+1,maxWidth:layoutType===\"FixedTop\"?\"none\":theme.width,width:layoutType===\"FixedTop\"?`calc(100% - ${verticalSpacing*2}px`:\"100%\",boxShadow:layoutType!==\"Sidebar\"&&statusStyle.boxShadow,borderRadius:layoutType!==\"Sidebar\"&&theme.borderRadius};// Show less text on fixed text to look nicer on mobile\nconst previewInfoText=layoutType===\"FixedTop\"?\"Preview Mode\":\"Preview Mode. Publish your Site to Search.\";if(status===\"no-meta-tag-found\"){return /*#__PURE__*/_jsx(\"div\",{style:style,children:previewInfoText});}if(status===\"pending-index-generation\"){return /*#__PURE__*/_jsx(\"div\",{style:style,children:\"Site is being indexed\"});}return null;}const resultTitle={textOverflow:\"ellipsis\",maxWidth:\"100%\",overflow:\"hidden\",fontWeight:500,whiteSpace:\"nowrap\",flex:1,margin:0};const resultContainer={padding:\"16px 20px\",listStyle:\"none\",fontWeight:500};const sidebarStyles={left:0,width:500};const fixedTopStyles={top:0,width:\"100%\"};const quickMenuStyles={width:500};function getLayoutBaseStyles(layoutOption,theme){switch(layoutOption){case\"Sidebar\":return{...sidebarStyles,width:theme.width};case\"FixedTop\":return fixedTopStyles;case\"QuickMenu\":return{...quickMenuStyles,width:theme.width};}}export var SearchInputClearButtonType;(function(SearchInputClearButtonType){SearchInputClearButtonType[\"Icon\"]=\"icon\";SearchInputClearButtonType[\"Text\"]=\"text\";SearchInputClearButtonType[\"None\"]=\"none\";})(SearchInputClearButtonType||(SearchInputClearButtonType={}));export var SearchInputDividerType;(function(SearchInputDividerType){SearchInputDividerType[\"None\"]=\"none\";SearchInputDividerType[\"FullWidth\"]=\"fullWidth\";SearchInputDividerType[\"Contained\"]=\"contained\";})(SearchInputDividerType||(SearchInputDividerType={}));export var SearchResultTitleType;(function(SearchResultTitleType){SearchResultTitleType[\"H1\"]=\"h1\";SearchResultTitleType[\"Title\"]=\"title\";})(SearchResultTitleType||(SearchResultTitleType={}));export var SearchResultSubtitleType;(function(SearchResultSubtitleType){SearchResultSubtitleType[\"Description\"]=\"description\";SearchResultSubtitleType[\"Path\"]=\"path\";})(SearchResultSubtitleType||(SearchResultSubtitleType={}));export var SearchResultItemType;(function(SearchResultItemType){SearchResultItemType[\"FullWidth\"]=\"fullWidth\";SearchResultItemType[\"Contained\"]=\"contained\";})(SearchResultItemType||(SearchResultItemType={}));export var SearchLayoutType;(function(SearchLayoutType){SearchLayoutType[\"Sidebar\"]=\"Sidebar\";SearchLayoutType[\"FixedTop\"]=\"FixedTop\";SearchLayoutType[\"QuickMenu\"]=\"QuickMenu\";})(SearchLayoutType||(SearchLayoutType={}));export var SearchEntryType;(function(SearchEntryType){SearchEntryType[\"Icon\"]=\"icon\";SearchEntryType[\"Text\"]=\"text\";})(SearchEntryType||(SearchEntryType={}));export var SearchIconType;(function(SearchIconType){SearchIconType[\"Default\"]=\"default\";SearchIconType[\"Custom\"]=\"custom\";})(SearchIconType||(SearchIconType={}));/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export function SearchModal(props){const{layoutType,theme,urlScope,inputOptions,backdropOptions,modalOptions,resultOptions,onDismiss}=props;const{activeLocale}=useLocaleInfo();const localeId=activeLocale?.id;const localeSlug=activeLocale?.slug;const input=useRef();const selectedResultRow=useRef();const scrollView=useRef();const[selected,setSelected]=useState({index:0,scroll:true});const prevMousePositionRef=useRef(null);const[isKeyboardNavigationDisabled,setIsKeyboardNavigationDisabled]=useState(Browser.isTouch);const[query,setQuery]=useState(\"\");const deferredQuery=useDeferredValue(query);const{results,status}=useSearch(deferredQuery,{minimumScore:0,urlScope,titleType:resultOptions.titleType});const selectedResult=results[selected.index];const verticalSpacing=Math.floor(theme?theme.horizontalSpacing*VERTICAL_SPACING_MULTIPLIER:0);useEffect(()=>{// Reset the selection to the top if the query changes.\nsetSelected({index:0,scroll:true});},[deferredQuery]);const handleResultRowPointerDown=useCallback((event,index)=>{if(event.pointerType!==\"touch\")return;setIsKeyboardNavigationDisabled(true);setSelected({index,scroll:false});},[]);const handleResultRowMouseMove=useCallback((event,index)=>{setSelected(previousSelected=>{if(previousSelected.index===index){return previousSelected;}return{index,scroll:false};});},[]);const router=useRouter();const navigateTo=useCallback(async url=>{if(status===\"no-meta-tag-found\"){return;}try{// Ideally, we would directly expose `routeId` in the search index so that\n// we don't need to infer it from the URL.\nconst{routeId,pathVariables}=inferInitialRouteFromPath(router.routes,url);const route=router.getRoute?.(routeId);onDismiss();await route?.page?.preload?.();router.navigate?.(routeId,null,pathVariables,false);}catch(error){window.location.href=url;}},[status]);const handleKeyDown=event=>{const maxIndex=results.length-1;switch(event.code){case\"ArrowUp\":event.preventDefault();if(isKeyboardNavigationDisabled){setIsKeyboardNavigationDisabled(false);break;}setSelected(previousSelected=>({index:clamp(0,maxIndex,previousSelected.index-1),scroll:true}));break;case\"ArrowDown\":event.preventDefault();if(isKeyboardNavigationDisabled){setIsKeyboardNavigationDisabled(false);break;}setSelected(previousSelected=>({index:clamp(0,maxIndex,previousSelected.index+1),scroll:true}));break;case\"Escape\":break;case\"Enter\":if(selectedResult){navigateTo(selectedResult.url);}break;default:event.stopPropagation();}};const showNoResults=results.length===0&&deferredQuery.length>1&&status!==\"loading\";const showDivider=Boolean((deferredQuery.length>0&&results.length>0||showNoResults)&&status!==\"loading\"&&props.inputOptions&&props.inputOptions.dividerType!==\"none\");const isItemContained=Boolean(props.resultOptions&&props.resultOptions.itemType===\"contained\");const spacing=isItemContained?theme.spacing:10;const listPaddingTop=showDivider&&isItemContained?spacing+theme.gapBetweenResults*2:0;useEffect(()=>{if(!selected.scroll)return;const element=selectedResultRow.current;if(!element)return;scrollIntoView(element,scrollView.current,{offsetTop:showDivider&&isItemContained?listPaddingTop:0,offsetBottom:isItemContained?spacing:0});// `showDivider` and `isItemContained` are not dependencies because\n// they will be the latest values when `selected` changes. And including\n// them will cause unnecessary scrolling into view.\n},[selected]);return /*#__PURE__*/_jsxs(LayoutContainer,{layoutType:layoutType,modalOptions:modalOptions,theme:theme,onKeyDown:handleKeyDown,onDismiss:onDismiss,children:[/*#__PURE__*/_jsxs(ModalContainer,{layoutType:layoutType,theme:theme,heightIsStatic:modalOptions.heightIsStatic,heightTransition:modalOptions.heightTransition,heightDeps:[results.length,showNoResults],children:[/*#__PURE__*/_jsx(Input,{autofocus:true,ref:input,onChange:setQuery,value:query,theme:theme,status:status,iconType:inputOptions.iconOptions.iconType,placeholder:inputOptions.placeholderOptions.placeholderText,clearButtonType:inputOptions?inputOptions.clearButtonType:undefined,clearButtonText:inputOptions.clearButtonText}),showDivider&&/*#__PURE__*/_jsx(Divider,{theme:theme,type:inputOptions.dividerType}),/*#__PURE__*/_jsx(ScrollView,{ref:scrollView,theme:theme,children:/*#__PURE__*/_jsxs(\"ul\",{\"aria-live\":\"polite\",style:{display:\"flex\",flexDirection:\"column\",width:`calc(100% - ${theme.scrollBarWidth}px)`,padding:0,paddingTop:listPaddingTop,paddingBottom:results.length&&isItemContained?spacing:0,gap:theme.gapBetweenResults,margin:0},children:[results.map((result,index)=>{const isSelected=index===selected.index;return /*#__PURE__*/_jsx(ResultRow,{ref:isSelected?selectedResultRow:null,index:index,result:result,prevMousePositionRef:prevMousePositionRef,selected:!isKeyboardNavigationDisabled&&isSelected,type:props.resultOptions.itemType,subtitleType:props.resultOptions.subtitleOptions.subtitleType,theme:theme,localeSlug:localeSlug,onMouseMove:handleResultRowMouseMove,onPointerDown:handleResultRowPointerDown,onNavigateTo:navigateTo},result.url);}),showNoResults&&/*#__PURE__*/_jsx(\"li\",{style:{paddingTop:verticalSpacing-listPaddingTop,paddingBottom:verticalSpacing,lineHeight:\"2em\",paddingLeft:theme&&theme.horizontalSpacing,paddingRight:theme&&theme.horizontalSpacing,height:\"Sidebar\"?\"100%\":\"auto\"},children:/*#__PURE__*/_jsx(\"h3\",{style:{...resultTitle,textAlign:\"center\",lineHeight:`calc(${theme.inputFontSize} * 2)`,color:theme.subtitleColor,...theme.titleFont},children:\"No results\"})})]})})]}),/*#__PURE__*/_jsx(StatusMessage,{status:status,layoutType:layoutType,theme:theme})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"ResultRow\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultTitleType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultItemType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchLayoutType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchInputDividerType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchTheme\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchResultSubtitleType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchModal\":{\"type\":\"reactComponent\",\"name\":\"SearchModal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"SearchIconType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Input\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchEntryType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SearchInputClearButtonType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{useEffect,useState}from\"react\";function getViewportSize(){if(typeof window===\"undefined\"){return{width:0,height:0};}return{width:window.innerWidth,height:window.innerHeight};}export function useViewportSizeState(getState){const[state,setState]=useState(()=>getState(getViewportSize()));useEffect(()=>{const handleWindowResize=()=>setState(getState(getViewportSize()));window.addEventListener(\"resize\",handleWindowResize);return()=>{window.removeEventListener(\"resize\",handleWindowResize);};},[]);return state;}\nexport const __FramerMetadata__ = {\"exports\":{\"useViewportSizeState\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useViewportSizeState.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{createPortal}from\"react-dom\";import{useRef,useState,useEffect,forwardRef}from\"react\";import{AnimatePresence,motion}from\"framer-motion\";import{SearchIcon}from\"https://framerusercontent.com/modules/LV9trClbmNwd5PVj9l8y/L4rFqMGNzGSwRZpGTGF3/Icons.js\";import{addPropertyControls,ControlType,RenderTarget,withCSS}from\"framer\";import{SearchModal,SearchResultItemType,SearchResultTitleType,SearchResultSubtitleType,SearchInputDividerType,SearchInputClearButtonType,SearchLayoutType,SearchIconType}from\"https://framerusercontent.com/modules/tV9haTHllpHHc9Fjue2H/lCNMpf6DznmmCJRndYjM/SearchModal.js\";import{useViewportSizeState}from\"https://framerusercontent.com/modules/hqEf5wXaAewP8VPuaZ98/5A0QGVeEr2cwheQpIuEG/useViewportSizeState.js\";import{titleCase,DEFAULT_FONT_FAMILY,isEmptyObject,animationKeyFromLayout,checkIfOverLimit}from\"https://framerusercontent.com/modules/MWsEnYfRnoOQq31DN4ql/fxR5MNtgeSOU8Mj4iY9n/utils.js\";import{Browser}from\"https://framerusercontent.com/modules/PJVBcBLmDteTEAZh3J9Z/keXJyjyE9VnzUcDMayjg/browser.js\";var EntryPointOptions;// SITE SEARCH\n// By Anthony and Hunter\n(function(EntryPointOptions){EntryPointOptions[\"icon\"]=\"Icon\";EntryPointOptions[\"input\"]=\"Input\";})(EntryPointOptions||(EntryPointOptions={}));function buildShadow(shadowProperty,fallback=\"none\"){if(!shadowProperty)return fallback;const{x,y,blur,color,spread}=shadowProperty;return`${x}px ${y}px ${blur}px ${spread}px ${color}`;}const Overlay=/*#__PURE__*/forwardRef(function Overlay(props,ref){const{layoutType,theme,onDismiss}=props;useEffect(()=>{const handleKeyDown=event=>{if(event.code===\"Escape\"){event.stopPropagation();onDismiss();}};const handlePointerDown=event=>{if(event.pointerType!==\"touch\")return;const isWithinSearchHeader=Boolean(event.target instanceof Element&&event.target.closest(\"[role=search]\"));if(isWithinSearchHeader)return;if(document.activeElement instanceof HTMLInputElement){document.activeElement.blur();}};// Event listener added to window so that pressing escape key to dimiss\n// can be invoked from anywhere on the page.\nwindow.addEventListener(\"keydown\",handleKeyDown);window.addEventListener(\"pointerdown\",handlePointerDown,{capture:true});// Disable page scrolling when overlay is shown.\ndocument.body.classList.add(bodyOverflowHidden);return()=>{window.removeEventListener(\"keydown\",handleKeyDown);window.removeEventListener(\"pointerdown\",handlePointerDown,{capture:true});document.body.classList.remove(bodyOverflowHidden);};},[]);return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{ref:ref,className:\"__framer-search-modal-container\",role:\"presentation\",style:{...backdropStyles,zIndex:props.backdropOptions.zIndex,justifyContent:layoutType===SearchLayoutType.Sidebar?\"flex-start\":\"center\"},onClick:onDismiss,children:[/*#__PURE__*/_jsx(motion.div,{role:\"presentation\",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0,transition:{duration:0}},transition:theme.overlayTransition,style:{top:0,left:0,right:0,bottom:0,width:\"100%\",height:\"100%\",boxSizing:\"border-box\",position:\"absolute\",touchAction:\"none\",backgroundColor:props.backdropOptions.backgroundColor}}),/*#__PURE__*/_jsx(SearchModal,{urlScope:props.urlScope,layoutType:layoutType,inputOptions:props.inputOptions,resultOptions:props.resultOptions,modalOptions:props.modalOptions,backdropOptions:props.backdropOptions,theme:props.theme,onDismiss:onDismiss})]}),document.body);});const backdropStyles={width:\"100%\",boxSizing:\"border-box\",willChange:\"transform\",position:\"fixed\",display:\"flex\",alignItems:\"flex-start\",top:0,left:0,right:0,bottom:0};const containerStyle={height:\"100%\",display:\"flex\",borderRadius:10,cursor:\"inherit\",overflow:\"hidden\"};const bodyOverflowHidden=\"__framer-overflow-hidden\";/**\n *\n * SEARCH\n * By Anthony and Hunter\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 40\n * @framerIntrinsicHeight 40\n */const EntryPoint=withCSS(function EntryPoint(props){const overlay=useRef(null);const[isOpen,setIsOpen]=useState(false);const[isOverLimit,setIsOverLimit]=useState(false);const[isSafariTouchDevice,setIsSafariTouchDevice]=useState(false);const[isOnCanvas]=useState(()=>RenderTarget.current()===RenderTarget.canvas);useEffect(()=>{setIsOverLimit(checkIfOverLimit());setIsSafariTouchDevice(Browser.isSafari()&&Browser.isTouch());},[]);const baseInputFontSize=props.inputOptions?.inputFont?.fontSize?props.inputOptions.inputFont.fontSize:\"16px\";// The font size is set to a minimum of `16px` on Safari with touch screens\n// because otherwise Safari will zoom in slightly if the type size is smaller.\nconst inputFontSize=isSafariTouchDevice?`max(16px, ${baseInputFontSize})`:baseInputFontSize;const layoutType=useViewportSizeState(size=>{if(size.width<props.modalOptions.width+10){return SearchLayoutType.FixedTop;}// @ts-ignore – Fallback\nreturn props.modalOptions.layoutType||props.layoutType;});const theme={subtitleColor:props.resultOptions.subtitleOptions.subtitleColor,backgroundColor:props.modalOptions.backgroundColor,foregroundColor:props.resultOptions.titleColor,placeholderColor:props.inputOptions.placeholderOptions.placeholderColor,titleFont:props.resultOptions?.titleFont&&!isEmptyObject(props.resultOptions.titleFont)?props.resultOptions.titleFont:{fontSize:14,fontFamily:DEFAULT_FONT_FAMILY,fontWeight:500},subtitleFont:props.resultOptions.subtitleOptions?.subtitleFont&&!isEmptyObject(props.resultOptions.subtitleOptions.subtitleFont)?props.resultOptions.subtitleOptions.subtitleFont:{fontSize:12,fontFamily:DEFAULT_FONT_FAMILY,fontWeight:500},inputFont:props.inputOptions?.inputFont&&!isEmptyObject(props.inputOptions.inputFont)?props.inputOptions.inputFont:{fontSize:16,fontFamily:DEFAULT_FONT_FAMILY,fontWeight:500},// Keep separate so we can more easily override\ninputFontSize:inputFontSize,width:props.modalOptions.width,offsetTop:props.modalOptions.top,borderRadius:props.modalOptions.borderRadius,shadow:buildShadow(props.modalOptions.shadow),entryIconColor:props.iconColor,entryIconSize:props.iconSize,entryIconImage:props.iconImage,inputIconSize:props.inputOptions.iconOptions.iconSize,inputIconColor:props.inputOptions.iconOptions.iconColor,inputIconImage:props.inputOptions.iconOptions.iconImage,gapBetweenStatusAndSearch:16,gapBetweenResults:1,scrollBarWidth:20,margin:10,spacing:8,zIndex:props.backdropOptions.zIndex,horizontalSpacing:20,overlayTransition:props.backdropOptions.transition};const handleClick=event=>{// Both need to keep `autofocus` working on the search input.\nevent.preventDefault();event.stopPropagation();if(isOverLimit)return;setIsOpen(true);};return /*#__PURE__*/_jsxs(\"div\",{style:{...containerStyle,...props.style,pointerEvents:isOverLimit?\"none\":\"auto\",opacity:isOverLimit?.4:1},children:[/*#__PURE__*/_jsx(\"button\",{\"aria-label\":\"Search Icon\",style:{width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:\"none\",cursor:\"inherit\",color:\"inherit\",border:\"none\",borderRadius:10,padding:0},onClick:handleClick,children:props.iconType===SearchIconType.Custom&&theme.entryIconImage?/*#__PURE__*/_jsx(\"img\",{alt:\"icon entry point for Site Search\",src:theme.entryIconImage.src,width:theme.entryIconSize,height:theme.entryIconSize}):/*#__PURE__*/_jsx(SearchIcon,{color:theme.entryIconColor,width:theme.entryIconSize,height:theme.entryIconSize})}),/*#__PURE__*/_jsx(AnimatePresence,{children:isOpen&&!isOnCanvas&&/*#__PURE__*/_jsx(Overlay,{ref:overlay,layoutType:layoutType,urlScope:props.urlScope,inputOptions:props.inputOptions,resultOptions:props.resultOptions,backdropOptions:props.backdropOptions,modalOptions:props.modalOptions,theme:theme,onDismiss:()=>setIsOpen(false)})})]});},[// Prevent scrolling on iOS Safari when Input is focused.\n// From: https://gist.github.com/kiding/72721a0553fa93198ae2bb6eefaa3299\n`\n        @keyframes __framer-blink-input {\n            0% { opacity: 0; }\n            100% { opacity: 1; }\n        }\n\n        .__framer-search-modal-container input:focus {\n            animation: __framer-blink-input 0.01s;\n        }\n        `,// Allow styling of input placeholder\n`\n         .__framer-search-modal-container input::placeholder, \n         .__framer-search-modal-container input::-webkit-input-placeholder { \n            color: var(--framer-search-placeholder-color, #999999);\n            opacity: 1;\n        }\n        `,// Allow fallback to 100vh when dvh unit is not supported.\n`\n        .__framer-search-modal-container {\n            height: 100vh;\n            height: 100dvh;\n        }\n        .__framer-search-modal-container .__framer-max-height-80dvh {\n            max-height: 80vh;\n            max-height: 80dvh;\n        }\n        `,`\n        body.${bodyOverflowHidden} {\n            overflow: hidden;\n        }`,// Increase hit target\n`\n        button.__framer-search-clear-button {\n            position: relative;\n        }\n        button.__framer-search-clear-button::after {\n            content: \"\";\n            position: absolute;\n            top: -10px;\n            right: -10px;\n            bottom: -10px;\n            left: -10px;\n        }`],\"framer-lib-search\");export default EntryPoint;addPropertyControls(EntryPoint,{urlScope:{title:\"Scope\",// @ts-ignore - Internal\ntype:ControlType.PageScope},// entryType: {\n//     title: \"Type\",\n//     type: ControlType.Enum,\n//     options: Object.values(SearchEntryType),\n//     optionTitles: Object.values(SearchEntryType).map(titleCase),\n//     displaySegmentedControl: true,\n// },\niconType:{title:\"Icon\",type:ControlType.Enum,options:Object.values(SearchIconType),optionTitles:Object.values(SearchIconType).map(titleCase),displaySegmentedControl:true},iconColor:{title:\"Color\",type:ControlType.Color,defaultValue:\"#333\",hidden:props=>props.iconType===SearchIconType.Custom},iconImage:{title:\"File\",type:ControlType.ResponsiveImage,allowedFileTypes:[\"jpg\",\"png\",\"svg\"],hidden:props=>props.iconType===SearchIconType.Default},iconSize:{title:\"Size\",type:ControlType.Number,displayStepper:true,defaultValue:24},inputOptions:{title:\"Input\",type:ControlType.Object,buttonTitle:\"Icon, Styles\",controls:{iconOptions:{title:\"Icon\",type:ControlType.Object,buttonTitle:\"Color, Size\",controls:{iconType:{title:\"Icon\",type:ControlType.Enum,options:Object.values(SearchIconType),optionTitles:Object.values(SearchIconType).map(titleCase),displaySegmentedControl:true},iconColor:{title:\"Color\",type:ControlType.Color,defaultValue:\"rgba(0, 0, 0, 0.45)\",hidden:({iconType})=>{return iconType===SearchIconType.Custom;}},iconImage:{title:\"File\",type:ControlType.ResponsiveImage,allowedFileTypes:[\"jpg\",\"png\",\"svg\"],hidden:({iconType})=>iconType===SearchIconType.Default},iconSize:{title:\"Icon Size\",type:ControlType.Number,displayStepper:true,defaultValue:18,min:0,max:100}}},inputFont:{title:\"Font\",// @ts-ignore – Internal\ntype:ControlType.Font,displayFontSize:true},textColor:{title:\"Color\",type:ControlType.Color,defaultValue:\"#333\"},placeholderOptions:{title:\"Placeholder\",type:ControlType.Object,buttonTitle:\"Color, Text\",controls:{placeholderText:{title:\"Text\",type:ControlType.String,defaultValue:\"Search...\"},placeholderColor:{title:\"Color\",type:ControlType.Color,defaultValue:\"rgba(0,0,0,0.4)\"}}},dividerType:{title:\"Divider\",type:ControlType.Enum,options:Object.values(SearchInputDividerType),optionTitles:Object.keys(SearchInputDividerType).map(titleCase),defaultValue:SearchInputDividerType.FullWidth},clearButtonType:{title:\"Clear Type\",type:ControlType.Enum,options:Object.values(SearchInputClearButtonType),optionTitles:Object.keys(SearchInputClearButtonType).map(titleCase),defaultValue:SearchInputClearButtonType.Icon},clearButtonText:{title:\"Clear Text\",type:ControlType.String,defaultValue:\"Clear\",hidden:props=>props.clearButtonType!==SearchInputClearButtonType.Text}}},modalOptions:{title:\"Modal\",buttonTitle:\"Layout, Width\",type:ControlType.Object,controls:{layoutType:{title:\"Layout\",type:ControlType.Enum,options:Object.keys(SearchLayoutType),optionTitles:Object.values(SearchLayoutType).map(titleCase),defaultValue:SearchLayoutType.QuickMenu},width:{title:\"Width\",type:ControlType.Number,defaultValue:500,min:200,max:1e3,displayStepper:true,step:5,hidden:props=>props.layoutType===SearchLayoutType.FixedTop},top:{title:\"Top\",type:ControlType.Number,defaultValue:0,min:0,max:1e3,displayStepper:true,hidden:props=>props.layoutType!==SearchLayoutType.FixedTop},heightIsStatic:{title:\"Height\",type:ControlType.Boolean,enabledTitle:\"Instant\",disabledTitle:\"Animate\",hidden:({layoutType})=>layoutType!==SearchLayoutType.QuickMenu},heightTransition:{title:\"Type\",type:ControlType.Transition,defaultValue:{type:\"spring\",stiffness:800,damping:60},hidden:({heightIsStatic,layoutType})=>layoutType!==SearchLayoutType.QuickMenu||heightIsStatic},borderRadius:{title:\"Radius\",type:ControlType.Number,defaultValue:16,displayStepper:true,min:0,hidden:({layoutType})=>layoutType!==SearchLayoutType.QuickMenu},shadow:{buttonTitle:\"Options\",type:ControlType.Object,defaultValue:{x:0,y:20,blur:40,spread:0,color:\"rgba(0,0,0,0.2)\"},controls:{color:{type:ControlType.Color,defaultValue:\"rgba(0,0,0,0.2)\"},x:{type:ControlType.Number,defaultValue:0},y:{type:ControlType.Number,defaultValue:20},blur:{type:ControlType.Number,defaultValue:40},spread:{type:ControlType.Number,defaultValue:0}}},backgroundColor:{title:\"Background\",type:ControlType.Color,defaultValue:\"#FFF\"},[animationKeyFromLayout(SearchLayoutType.QuickMenu)]:{title:\"Animation\",type:ControlType.Object,icon:\"effect\",hidden:({layoutType})=>layoutType!==SearchLayoutType.QuickMenu,optional:true,buttonTitle:\"Options\",controls:{opacity:{type:ControlType.Number,defaultValue:.5,step:.1,min:0,max:1},scale:{type:ControlType.Number,defaultValue:.75,step:.1,min:0,max:2},// rotate: {\n//     type: ControlType.Number,\n//     defaultValue: 0,\n//     min: -360,\n//     max: 360,\n// },\nx:{type:ControlType.Number,defaultValue:0,min:-500,max:500},y:{type:ControlType.Number,defaultValue:0,min:-500,max:500},transition:{type:ControlType.Transition}}},[animationKeyFromLayout(SearchLayoutType.FixedTop)]:{title:\"Animation\",type:ControlType.Object,icon:\"effect\",buttonTitle:\"Options\",hidden:({layoutType})=>layoutType!==SearchLayoutType.FixedTop,optional:true,controls:{opacity:{type:ControlType.Number,defaultValue:.8,step:.1,min:0,max:1},y:{type:ControlType.Number,defaultValue:0,min:-100,max:100},transition:{type:ControlType.Transition}}},[animationKeyFromLayout(SearchLayoutType.Sidebar)]:{title:\"Animation\",type:ControlType.Object,icon:\"effect\",buttonTitle:\"Options\",hidden:({layoutType})=>layoutType!==SearchLayoutType.Sidebar,optional:true,controls:{opacity:{type:ControlType.Number,defaultValue:.8,step:.1,min:0,max:1},x:{type:ControlType.Number,defaultValue:0,min:-1e3,max:1e3},transition:{type:ControlType.Transition}}}}},resultOptions:{title:\"Results\",buttonTitle:\"Fonts, Style\",type:ControlType.Object,defaultValue:{},// description:\n//     \"Learn more about how to use Site Search [here](https://framer.com/learn/site-search)\",\ncontrols:{itemType:{title:\"Style\",type:ControlType.Enum,options:Object.values(SearchResultItemType),optionTitles:Object.keys(SearchResultItemType).map(titleCase),defaultValue:SearchResultItemType.FullWidth},titleFont:{title:\"Title\",// @ts-ignore - Internal\ntype:ControlType.Font,defaultValue:{fontSize:15},displayFontSize:true},titleColor:{title:\"Color\",type:ControlType.Color,defaultValue:\"#333\"},titleType:{title:\"Content\",type:ControlType.Enum,options:Object.values(SearchResultTitleType),optionTitles:Object.keys(SearchResultTitleType).map(titleCase),defaultValue:SearchResultTitleType.H1,displaySegmentedControl:true},subtitleOptions:{type:ControlType.Object,title:\"Subtitle\",buttonTitle:\"Font, Content\",controls:{subtitleFont:{title:\"Font\",// @ts-ignore - Internal\ntype:ControlType.Font,defaultValue:{fontSize:13},displayFontSize:true},subtitleColor:{title:\"Color\",type:ControlType.Color,defaultValue:\"rgba(0, 0, 0, 0.4)\"},subtitleType:{title:\"Content\",type:ControlType.Enum,options:Object.values(SearchResultSubtitleType),optionTitles:Object.keys(SearchResultSubtitleType).map(titleCase),defaultValue:SearchResultSubtitleType.Path}}}}},backdropOptions:{title:\"Backdrop\",type:ControlType.Object,buttonTitle:\"Color, Z Index\",controls:{backgroundColor:{title:\"Color\",type:ControlType.Color,defaultValue:\"rgba(0, 0, 0, 0.8)\"},zIndex:{title:\"Z Index\",type:ControlType.Number,defaultValue:10,displayStepper:true,min:0,max:10},transition:{type:ControlType.Transition}}}});EntryPoint.displayName=\"Search\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"EntryPoint\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"40\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"40\"}},\"ResponsiveImage\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Shadow\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EntryPointProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"WindowAnimation\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// auth_code — hand the current login over to another Soundee origin.\n//\n// The Framer storefront and the pro page at `{storeId}.soundee.com` are\n// separate origins with separate session tokens, so a link between them would\n// normally land the visitor logged out. `POST /sessions/current/auth-code`\n// mints a single-use, 10-minute code for the signed-in user; the other side\n// exchanges it on its own `GET /sessions?auth_code=...` and adopts the login.\n//\n// `current`, not the raw token in the path: the session credential lives in\n// an HttpOnly cookie now and never in JS. The in-memory token (old-Safari\n// fallback) still travels as the UUID header via apiPost, and the API's\n// `/current` route accepts either transport.\nimport{apiPost}from\"https://framerusercontent.com/modules/2cqxRgmIE8CaH8oMSLJI/Xc2VTih7dteQqDikr6wz/client.js\";import{hasSession}from\"https://framerusercontent.com/modules/dBt19uczKsS98p2bZoOW/B8jBSbrtS4nEQRXP2n9N/token_new.js\";/**\n * Mints a login code for the current session.\n *\n * Call this on the click that navigates, never ahead of time: the code is a\n * credential with a short life, so one minted at render is both a thing to\n * leak and a thing to expire before it is used.\n *\n * Returns `null` when there is no session or the visitor is not signed in —\n * callers should then fall back to a plain link or the auth flow rather than\n * blocking the navigation.\n */export async function mintAuthCode(){if(!hasSession())return null;try{const res=await apiPost(\"/sessions/current/auth-code\");const code=res?.response?.data?.code;return typeof code===\"string\"&&code?code:null;}catch{// Not signed in, rate limited, or offline. The caller still navigates;\n// the visitor just arrives signed out instead of not arriving at all.\nreturn null;}}/**\n * Builds the destination on the store's Soundee origin.\n *\n * `path` is appended as-is (leading slash optional). The code is added last so\n * it survives any query string the caller already put on the path.\n */export function buildStoreHandoffUrl({storeId,path,code}){const cleanPath=path.startsWith(\"/\")?path:`/${path}`;const url=new URL(`https://${storeId}.soundee.com${cleanPath}`);if(code)url.searchParams.set(\"auth_code\",code);return url.toString();}\nexport const __FramerMetadata__ = {\"exports\":{\"buildStoreHandoffUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mintAuthCode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./auth_code.map","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{normalizeSlot,renderSlotWithSizing}from\"https://framerusercontent.com/modules/h8NiJEJpWFHyeRETbmyt/8yFZXOUwH5F5bkx7bL6Q/slot.js\";import{useSessionStore}from\"https://framerusercontent.com/modules/Z0KLFt0cNobZoDQYzrLW/7QZObf132AnTW9nAUMEU/session.js\";import{useSoundeeConfig,useEnsureSoundeeSession}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";import{mintAuthCode,buildStoreHandoffUrl}from\"https://framerusercontent.com/modules/C6hToKeGpdYRHbNFCoXe/yryan3QujHRo5vXsxb2H/auth_code.js\";import{closeTransientUi}from\"https://framerusercontent.com/modules/BP84IYrqhrVajyxSXDMs/jLh2zPKcwPx5bvzClI4n/close_transient_ui.js\";const DESTINATION_PATHS={Purchased:\"/purchased\",Account:\"/account\"};const DEFAULT_LINK_SIZE={width:\"Auto\",height:\"Auto\"};function resolvePath(destination,custom){if(destination!==\"Custom\")return DESTINATION_PATHS[destination];const trimmed=(custom??\"\").trim();return trimmed||\"/\";}/**\n * Links to a page on the store's own Soundee origin while carrying the login\n * across — `{storeId}.soundee.com/purchased`, `/account`, and so on.\n *\n * The Framer storefront and that origin keep separate sessions, so a plain link\n * would drop the visitor there signed out. On click this mints a single-use\n * login code and appends it, and the other side exchanges it while booting.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function SoundeeSessionLink({destination=\"Purchased\",path=\"\",newTab=false,link,linkSize=DEFAULT_LINK_SIZE,loadingSlot,previewState=\"Default\",style}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;// Reads session-derived state, so it must start the session itself.\nuseEnsureSoundeeSession();const session=useSessionStore();const config=useSoundeeConfig();const[pending,setPending]=React.useState(false);const mountedRef=React.useRef(false);React.useEffect(()=>{mountedRef.current=true;return()=>{mountedRef.current=false;};},[]);const isLoggedIn=session.isLoggedIn&&!!session.user;const isLoading=isCanvas?previewState===\"Loading\":pending;const targetPath=resolvePath(destination,path);const navigate=React.useCallback(url=>{if(typeof window===\"undefined\")return;if(newTab){// `noopener` matters here: the destination carries a login code,\n// and a tab opened without it can reach back through\n// `window.opener`.\nwindow.open(url,\"_blank\",\"noopener,noreferrer\");}else{window.location.href=url;}},[newTab]);const handleClick=React.useCallback(async event=>{event.preventDefault();if(isCanvas||pending)return;// Not signed in: there is no login to hand over, so just go. The\n// destination handles signing in on its own if it needs to.\nif(!isLoggedIn){navigate(buildStoreHandoffUrl({storeId:config.storeId,path:targetPath}));return;}setPending(true);try{// Minted per click, so the code is fresh and used within\n// seconds. `mintAuthCode` returns null rather than throwing —\n// a failed mint should still take the visitor to the page,\n// just signed out.\nconst code=await mintAuthCode();closeTransientUi();navigate(buildStoreHandoffUrl({storeId:config.storeId,path:targetPath,code}));}finally{if(mountedRef.current)setPending(false);}},[config.storeId,isCanvas,isLoggedIn,navigate,pending,targetPath]);const loading=normalizeSlot(loadingSlot);const slot=isLoading&&/*#__PURE__*/React.isValidElement(loading)?loading:normalizeSlot(link);if(!/*#__PURE__*/React.isValidElement(slot)){if(!isCanvas)return null;return /*#__PURE__*/_jsx(\"div\",{style:{fontSize:12,opacity:.4,color:\"white\"},children:\"Connect a design to the Link slot\"});}return /*#__PURE__*/_jsx(\"div\",{onClick:handleClick,style:{display:\"flex\",cursor:isCanvas?\"default\":\"pointer\",...style},children:renderSlotWithSizing(slot,{isLoading,isLoggedIn,// The real URL is only known after the code is minted, so\n// this is the destination without one — enough for a design\n// that wants to show where it goes.\nhref:buildStoreHandoffUrl({storeId:config.storeId,path:targetPath})},`session-link-${destination.toLowerCase()}`,linkSize)});}SoundeeSessionLink.displayName=\"Soundee External Link\";addPropertyControls(SoundeeSessionLink,{destination:{type:ControlType.Enum,title:\"Page\",options:[\"Purchased\",\"Account\",\"Custom\"],optionTitles:[\"Purchased\",\"Account\",\"Custom\"],defaultValue:\"Purchased\",description:\"Page on the store's Soundee origin. The visitor arrives signed in.\"},path:{type:ControlType.String,title:\"Path\",defaultValue:\"/purchased\",placeholder:\"/purchased\",hidden:props=>props.destination!==\"Custom\"},link:{type:ControlType.Slot,title:\"Link\",maxCount:1,description:\"Your design. Receives `isLoading` (boolean), `isLoggedIn` (boolean) and `href` (string, without the login code).\"},linkSize:{type:ControlType.Object,title:\"Link Size\",controls:{width:{type:ControlType.Enum,title:\"Width\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:\"Auto\"},height:{type:ControlType.Enum,title:\"Height\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:\"Auto\"}},defaultValue:DEFAULT_LINK_SIZE},loadingSlot:{type:ControlType.Slot,title:\"Loading\",maxCount:1,description:\"Shown for the moment the login code is minted. Falls back to the Link design.\"},newTab:{type:ControlType.Boolean,title:\"New Tab\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},previewState:{type:ControlType.Enum,title:\"Preview\",options:[\"Default\",\"Loading\"],optionTitles:[\"Default\",\"Loading\"],defaultValue:\"Default\",description:\"Canvas only. Ignored on the published site.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeSessionLink\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\n// soundee-core republish r2 (2026-08-07 12:25) — forces a fresh module version\n// so every Starter instance is offered an update and all bundles\n// land on the same runtime.\n// instance is offered an update and all bundles land on the same runtime.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{normalizeSlot,renderSlotWithSizing}from\"https://framerusercontent.com/modules/h8NiJEJpWFHyeRETbmyt/8yFZXOUwH5F5bkx7bL6Q/slot.js\";import{useSoundeeConfig}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";import{logoutSession,useSessionStore}from\"https://framerusercontent.com/modules/Z0KLFt0cNobZoDQYzrLW/7QZObf132AnTW9nAUMEU/session.js\";import{closeTransientUi}from\"https://framerusercontent.com/modules/BP84IYrqhrVajyxSXDMs/jLh2zPKcwPx5bvzClI4n/close_transient_ui.js\";const DEFAULT_BUTTON_SIZE={width:\"Auto\",height:\"Auto\"};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function SoundeeLogoutButton({button,loadingSlot,buttonSize=DEFAULT_BUTTON_SIZE,disabledWhenLoggedOut=true,previewState=\"Default\",onLogout,style}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const session=useSessionStore();const config=useSoundeeConfig();const[pending,setPending]=React.useState(false);const mountedRef=React.useRef(false);React.useEffect(()=>{mountedRef.current=true;return()=>{mountedRef.current=false;};},[]);const isLoading=isCanvas?previewState===\"Loading\":pending;const isLoggedIn=session.isLoggedIn&&!!session.user;const disabled=isCanvas||pending||session.isLoading||disabledWhenLoggedOut&&!isLoggedIn;const triggerLogout=React.useCallback(async()=>{if(disabled)return;setPending(true);try{await logoutSession({storeId:config.storeId,updateLoadingState:false});closeTransientUi();onLogout?.();}finally{if(mountedRef.current)setPending(false);}},[config.storeId,disabled,onLogout]);function handleClick(event){event.preventDefault();event.stopPropagation();void triggerLogout();}const activeSlot=isLoading&&normalizeSlot(loadingSlot)?normalizeSlot(loadingSlot):normalizeSlot(button);const injectedProps={disabled,isLoading,loading:isLoading,pending:isLoading,isLoggedIn};const child=activeSlot?renderSlotWithSizing(activeSlot,injectedProps,`logout-${isLoading?\"loading\":\"default\"}`,buttonSize):null;return /*#__PURE__*/_jsx(\"div\",{onClick:handleClick,\"aria-disabled\":disabled||undefined,style:{...style,display:buttonSize.width===\"Fill\"?\"flex\":\"inline-flex\",...buttonSize.width===\"Fill\"?{width:\"100%\"}:{},...buttonSize.height===\"Fill\"?{height:\"100%\"}:{},cursor:disabled?\"default\":\"pointer\"},children:child??/*#__PURE__*/_jsx(\"div\",{style:{fontSize:12,opacity:.45},children:\"Connect button\"})});}SoundeeLogoutButton.displayName=\"Soundee Logout Button Slot\";addPropertyControls(SoundeeLogoutButton,{previewState:{type:ControlType.Enum,title:\"Preview\",options:[\"Default\",\"Loading\"],optionTitles:[\"Default\",\"Loading\"],defaultValue:\"Default\",description:\"Canvas-only preview state for the connected slots.\"},buttonSize:{type:ControlType.Object,title:\"Button Size\",controls:{width:{type:ControlType.Enum,title:\"Width\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:DEFAULT_BUTTON_SIZE.width},height:{type:ControlType.Enum,title:\"Height\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:DEFAULT_BUTTON_SIZE.height}},defaultValue:DEFAULT_BUTTON_SIZE,description:\"Controls whether the logout button keeps its size or fills.\"},disabledWhenLoggedOut:{type:ControlType.Boolean,title:\"Disable Logged Out\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\"Prevents logout clicks when no user is logged in.\"},onLogout:{type:ControlType.EventHandler,title:\"Logged Out\",description:\"Runs after the logout request completes and local auth state is cleared.\"},button:{type:ControlType.Slot,title:\"Button\",maxCount:1},loadingSlot:{type:ControlType.Slot,title:\"Loading\",maxCount:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeLogoutButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r10 (2026-08-25) — radix comes from\n// lib/vendor/radix.tsx now instead of a bare `@radix-ui/...` name. A built\n// module pins the exact build of everything it imports, so every file in that\n// chain needs a content change of its own or it keeps loading the copy that\n// still carried the bare specifier. Pushed deepest-first, because a file\n// rebuilt before its dependencies pins the old ones again.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,Link,RenderTarget}from\"framer\";import{motion}from\"framer-motion\";import SoundeeArtwork from\"https://framerusercontent.com/modules/SvQ80p4cAsd88JPYWgze/Qq09ALzx6F4r8Yo3Oux8/SoundeeArtwork.js\";import SoundeeSessionLink from\"https://framerusercontent.com/modules/XCEk9EyPcFZcqaQGaW2o/XiDmDtWg4HDmFKBDWoLR/SoundeeSessionLink.js\";import SoundeeLogoutButton from\"https://framerusercontent.com/modules/nCDBLnzxgffYByYY0gKq/aFlooFzFACRJxCfnj9lD/SoundeeLogoutButton.js\";import{SoundeeMenu,menuItemHover,menuItemStyle}from\"https://framerusercontent.com/modules/BN0w3b2Q9pvHMH4QxWME/QOjnDvubFO3lOejZV8za/SoundeeMenu.js\";import{HoverButton,HoverLink,tint}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{Spinner,pulseMotion}from\"https://framerusercontent.com/modules/2dz2LtfEPrHoRvnZYZTV/lYiqFZvueQpmdyXSqtMJ/loading.js\";import{hasSoundeeModals,useModalTheme}from\"https://framerusercontent.com/modules/0GpgGzS00VxJis3gSiB4/xQvXV8rHdeXnAzSd0ksq/registry.js\";import{requestSoundeeAuth}from\"https://framerusercontent.com/modules/WO1OkTRlQ7Ujgw4kWkqW/CfsiFGnaWgQ1QvOs342E/auth_state.js\";import{AUTH_OVERLAY,openSoundeeOverlay}from\"https://framerusercontent.com/modules/JWE25h6PrJ9N8RSe2d8l/rwQ7b5YTPb3c7KuBqZJd/open_overlay.js\";import{useSessionStore}from\"https://framerusercontent.com/modules/Z0KLFt0cNobZoDQYzrLW/7QZObf132AnTW9nAUMEU/session.js\";import{useEnsureSoundeeSession}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";/**\n * A row in the account menu.\n *\n * A component rather than a bare element because it is handed to\n * `SoundeeSessionLink` and `SoundeeLogoutButton` as their slot, and those inject\n * `isLoading` / `disabled` into whatever they are given. A DOM element would\n * take those as unknown attributes; a component can act on them — which is how\n * the row dims itself while a login code is being minted.\n */function MenuRow({label,tokens,isMobile,isLoading,disabled}){return(// A real <button>, so the row is reachable by keyboard: Enter fires a\n// click that bubbles to the wrapper these components put around their\n// slot, which is what actually navigates or logs out.\n/*#__PURE__*/_jsxs(HoverButton,{type:\"button\",hoverStyle:disabled?{}:menuItemHover(tokens),style:{...menuItemStyle(tokens,isMobile),opacity:disabled?.4:1,cursor:disabled?\"not-allowed\":\"pointer\"},children:[label,isLoading&&/*#__PURE__*/_jsx(\"span\",{style:{marginLeft:\"auto\",display:\"inline-flex\"},children:/*#__PURE__*/_jsx(Spinner,{color:tokens.textSecondary??tokens.textPrimary,size:14})})]}));}/**\n * The visitor's avatar, with their account menu under it.\n *\n * Everything it does already exists: `SoundeeSessionLink` carries the login\n * across to `{storeId}.soundee.com` so Purchased and Account do not land there\n * signed out, `SoundeeLogoutButton` ends the session, and `SoundeeMenu` is the\n * same popover-on-desktop, sheet-on-mobile panel the track row menu uses. This\n * is the arrangement, not new behaviour.\n *\n * Styling comes from Soundee Setup, like every other floating panel — there is\n * nothing to match up by hand.\n *\n * Size is the frame's, not a prop: Framer already gives every code component a\n * width and height on the canvas, and a Size control beside them is a second\n * knob for one thing that then disagree. The icon and the initials scale with\n * the box instead.\n *\n * @framerIntrinsicWidth 36\n * @framerIntrinsicHeight 36\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerDisableUnlink\n */export default function SoundeeAccountButton({layout=\"Desktop\",radius=999,downloadsLabel=\"My Downloads\",accountLabel=\"My Account\",logoutLabel=\"Log out\",signedOutLabel=\"Sign in\",links=[],pulse=\"rgba(255,255,255,0.12)\",previewSignedIn=true,previewLoading=false,style}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;// Reads the session, so it starts one itself — a header is often the only\n// Soundee component above the fold.\nuseEnsureSoundeeSession();const session=useSessionStore();const theme=useModalTheme();const isMobile=layout===\"Mobile\";const user=session.user;const signedIn=isCanvas?previewSignedIn:session.isLoggedIn&&!!user;const avatarUrl=user?.avatar?.sources?.small??\"\";const name=user?.displayname||user?.username||user?.firstName||\"Account\";const trigger={display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",// The frame's size, filled. `style` lands after this either way, so\n// whatever Framer sets on the canvas wins.\nwidth:\"100%\",height:\"100%\",// Lets the glyph and the initials size themselves against this box\n// rather than against a number that no longer exists. Cast because\n// Framer's own TypeScript lib predates container queries in\n// CSSProperties, though every browser it targets has them.\n...{containerType:\"size\"},flexShrink:0,padding:0,border:\"none\",borderRadius:radius,background:\"transparent\",color:theme.textSecondary,cursor:\"pointer\",overflow:\"hidden\"};// Until the session answers there is no honest state to show. Rendering the\n// signed-out button meanwhile means a returning visitor watches \"Sign in\"\n// turn into their own face a moment later — which reads as having been\n// logged out. A placeholder holds the same circle instead.\nconst resolving=isCanvas?previewLoading:session.isLoading;if(resolving){return /*#__PURE__*/_jsx(motion.span,{\"aria-hidden\":true,...pulseMotion(),style:{display:\"block\",width:\"100%\",height:\"100%\",flexShrink:0,borderRadius:radius,background:pulse,...style}});}// Signed out there is no menu to open — the only useful thing is the way in.\nif(!signedIn){return /*#__PURE__*/_jsx(HoverButton,{onClick:async()=>{if(isCanvas)return;if(hasSoundeeModals()){await requestSoundeeAuth();return;}// No built-in modals on this site: fall back to the named\n// overlay a designer may have placed instead.\nopenSoundeeOverlay({name:AUTH_OVERLAY});},\"aria-label\":signedOutLabel,title:signedOutLabel,hoverStyle:{background:tint(theme.textPrimary,10),color:theme.textPrimary},style:{...trigger,background:tint(theme.textPrimary,6),...style},children:/*#__PURE__*/_jsx(SoundeeIcon,{name:\"person\",size:18,style:{width:\"50cqmin\",height:\"50cqmin\"}})});}const divider=`1px solid ${theme.border}`;return /*#__PURE__*/_jsxs(SoundeeMenu,{sheet:isMobile,label:name,align:\"end\",// Hugs its rows. They are the same three labels on every visit, so\n// there is nothing left for a fixed width to steady.\nwidth:\"max-content\",minWidth:220,isCanvas:isCanvas,theme:theme,trigger:/*#__PURE__*/_jsx(HoverButton,{\"aria-label\":name,hoverStyle:{opacity:.85},style:{...trigger,...style},children:avatarUrl?/*#__PURE__*/_jsx(SoundeeArtwork,{entityID:user?.entityId??null,imageSize:\"Small\",artworkSmall:avatarUrl,artworkColor:user?.avatar?.color,title:name,borderRadius:`${radius}px`,border:false,loading:\"eager\",style:{width:\"100%\",height:\"100%\"}}):// No picture: initials beat a grey circle, and beat a\n// generic person icon that would then mean both \"signed\n// out\" and \"signed in without an avatar\".\n/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:\"100%\",height:\"100%\",background:tint(theme.accent,20),color:theme.accent,fontSize:\"36cqmin\",fontWeight:600,lineHeight:1},children:initials(name)})}),children:[/*#__PURE__*/_jsxs(\"div\",{style:{padding:isMobile?\"6px 18px 16px\":\"12px 14px\",borderBottom:divider,minWidth:0},children:[/*#__PURE__*/_jsx(\"div\",{style:{color:theme.textPrimary,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",...theme.fontTitle},children:name}),user?.email&&/*#__PURE__*/_jsx(\"div\",{style:{marginTop:2,color:theme.textSecondary,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",...theme.fontBody},children:user.email})]}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:isMobile?\"6px 0\":6,display:\"flex\",flexDirection:\"column\",// A hairline, so two rows never merge while one is held.\ngap:1},children:[downloadsLabel.trim()&&/*#__PURE__*/_jsx(SoundeeSessionLink,{destination:\"Purchased\",path:\"\",newTab:false,linkSize:{width:\"Auto\",height:\"Auto\"},previewState:\"Default\",style:{width:\"100%\"},link:/*#__PURE__*/_jsx(MenuRow,{label:downloadsLabel,tokens:theme,isMobile:isMobile})}),accountLabel.trim()&&/*#__PURE__*/_jsx(SoundeeSessionLink,{destination:\"Account\",path:\"\",newTab:false,linkSize:{width:\"Auto\",height:\"Auto\"},previewState:\"Default\",style:{width:\"100%\"},link:/*#__PURE__*/_jsx(MenuRow,{label:accountLabel,tokens:theme,isMobile:isMobile})}),links.map((entry,index)=>{const label=(entry?.label??\"\").trim();if(!label||!entry?.link)return null;return /*#__PURE__*/_jsx(Link,{href:entry.link,// Left unset rather than false: unset means Framer\n// decides, and its rule — external opens a tab,\n// internal does not — is the one people expect.\nopenInNewTab:entry.newTab?true:undefined,children:/*#__PURE__*/_jsx(HoverLink,{hoverStyle:menuItemHover(theme),style:{...menuItemStyle(theme,isMobile),textDecoration:\"none\"},children:label})},`${label}-${index}`);})]}),logoutLabel.trim()&&/*#__PURE__*/_jsx(\"div\",{style:{padding:isMobile?\"6px 0 10px\":6,borderTop:divider},children:/*#__PURE__*/_jsx(SoundeeLogoutButton,{style:{width:\"100%\"},button:/*#__PURE__*/_jsx(MenuRow,{label:logoutLabel,tokens:theme,isMobile:isMobile})})})]});}/** First letters of the first two words, so \"Tmaine Da Producer\" gives TD. */function initials(name){return name.split(/\\s+/).filter(Boolean).slice(0,2).map(part=>part[0]?.toUpperCase()??\"\").join(\"\");}SoundeeAccountButton.displayName=\"Soundee Account Button\";const accountDefaults={layout:\"Desktop\",radius:999,downloadsLabel:\"My Downloads\",accountLabel:\"My Account\",logoutLabel:\"Log out\",signedOutLabel:\"Sign in\",links:[],pulse:\"rgba(255,255,255,0.12)\",previewSignedIn:true,previewLoading:false};SoundeeAccountButton.defaultProps=accountDefaults;addPropertyControls(SoundeeAccountButton,{layout:{type:ControlType.Enum,title:\"Layout\",options:[\"Desktop\",\"Mobile\"],optionTitles:[\"Desktop\",\"Mobile\"],defaultValue:\"Desktop\",displaySegmentedControl:true,description:\"Set this per breakpoint. Mobile opens the menu as a drawer instead of a popover.\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:999,min:0,max:999,step:1,unit:\"px\",description:\"999 keeps it a circle at any frame size.\"},downloadsLabel:{type:ControlType.String,title:\"Downloads\",defaultValue:\"My Downloads\",placeholder:\"Leave empty to hide\",description:\"Goes to the store's purchases page, already signed in.\"},accountLabel:{type:ControlType.String,title:\"Account\",defaultValue:\"My Account\",placeholder:\"Leave empty to hide\"},links:{type:ControlType.Array,title:\"Extra Links\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,title:\"Label\",defaultValue:\"\",placeholder:\"Discord\"},link:{type:ControlType.Link,title:\"Link\"},newTab:{type:ControlType.Boolean,title:\"New Tab\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"}},defaultValue:{label:\"\",newTab:false}},defaultValue:[],description:\"Your own rows, above Log out. An internal page keeps working after you rename it.\"},logoutLabel:{type:ControlType.String,title:\"Log Out\",defaultValue:\"Log out\",placeholder:\"Leave empty to hide\"},signedOutLabel:{type:ControlType.String,title:\"Signed Out\",defaultValue:\"Sign in\",description:\"The label for the signed-out state, which opens the sign-in panel instead of a menu.\"},pulse:{type:ControlType.Color,title:\"Loading\",defaultValue:\"rgba(255,255,255,0.12)\",description:\"The pulsing circle shown while the session is being resolved, before the avatar or Sign in is known. Set it against your header, not the page.\"},previewSignedIn:{type:ControlType.Boolean,title:\"Preview\",defaultValue:true,enabledTitle:\"Signed In\",disabledTitle:\"Signed Out\",description:\"Canvas only: there is no session in the editor, so this picks which of the two states you are styling.\"},previewLoading:{type:ControlType.Boolean,title:\"Preview Loading\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Canvas only: shows the placeholder so you can colour it.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeAccountButton\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"36\",\"framerIntrinsicHeight\":\"36\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// soundee-core rebuild r14 (2026-09-18) — cache bust, see docs/migration/framer-core/07-framer-sync-log.md\n// soundee-core rebuild r13 (2026-08-27) — the runtime stopped repeating itself:\n// one tracking PUT per page instead of one per remounted bundle, one exit\n// beacon per exit instead of two, and one store-config fetch instead of one\n// per bundle. This file reads none of that, but a built module pins the build\n// of everything it imports, so without a content change of its own it keeps\n// loading the copy that still floods.\n// soundee-core rebuild r12 (2026-08-27) — session tracking now sends is_framer\n// so the backend can tell a Framer storefront apart from the pagebuilder. This\n// file never reads the flag, but a built module pins the build of everything it\n// imports, so without a content change of its own it keeps loading the copy\n// that still sent nothing.\n// soundee-core rebuild r9 (2026-08-25) — the r8 build baked in\n// `!missing/../../lib/vendor/react_query.tsx`: the vendor modules were pushed\n// after their importers, and an importer does not rebuild when only an\n// imported file changes. This line is the content change that forces it.\n// soundee-core republish r8 (2026-08-25, eigen hosting) — rebuild because\n// react-query and react-virtuoso now come from framer.soundee.com instead of\n// a bare npm name Framer resolved to v4. See lib/vendor/react_query.tsx.\n// soundee-core republish r6 (2026-08-25, react-query v4) — rebuild for the\n// v4/v5 compatibility fix in lib/query_client.tsx. Framer resolves the bare\n// @tanstack/react-query to v4, where `isPending` does not exist: reading it\n// gave undefined, so the catalogue drew \"No results\" over a list it had\n// never finished asking for.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{toggleCart,useCartStore,getCartCount}from\"https://framerusercontent.com/modules/ZkH7fJxhmqZcrglWy6e9/jg1afezs6T1tddWBHcwP/cart.js\";import{useEnsureSoundeeSession}from\"https://framerusercontent.com/modules/MnaOjDKPmXIgElrPjVea/j93inx32wsgSBRR1iqSG/config.js\";import{HoverButton}from\"https://framerusercontent.com/modules/zp2tRJqH3ga0tv6J2W6H/s0YuByx9Fwo8PgJYM7sn/hover_button.js\";import{SoundeeIcon}from\"https://framerusercontent.com/modules/jztQr8fR84sBOB7CCVtd/trr3UrorLCOOyEOVhQmb/icons.js\";import{normalizeSlot,renderSlotWithSizing}from\"https://framerusercontent.com/modules/h8NiJEJpWFHyeRETbmyt/8yFZXOUwH5F5bkx7bL6Q/slot.js\";const DEFAULT_TRIGGER_SIZE={width:\"Auto\",height:\"Auto\"};/**\n * The cart icon with its count, for a header.\n *\n * Deliberately only the trigger. The panel lives in `SoundeeModals`, because\n * the cart is opened from places that have nothing to do with this button —\n * adding from a track row and confirming a licence both call `openCart()`, and\n * a panel rendered from inside a header would be missing (or clipped) exactly\n * when it is needed. It also outlives the button: a page can open the cart\n * without having one, and a site usually has two (a header and a mobile nav),\n * which would leave two answers to how wide the cart is.\n *\n * Sized by its frame, not by a prop: Framer gives every code component a width\n * and a height on the canvas, and a Size control beside them is a second knob\n * for one thing.\n *\n * @framerIntrinsicWidth 32\n * @framerIntrinsicHeight 32\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerDisableUnlink\n */export default function SoundeeCartButton({trigger,triggerSize=DEFAULT_TRIGGER_SIZE,iconSize=20,color=\"rgba(255,255,255,0.75)\",hoverColor=\"#ffffff\",badgeBackground=\"#c8a06a\",badgeText=\"#121212\",previewCount=2,style}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;// Reads the cart, so it starts the session itself rather than depending on\n// a list being on the page — a header is often the only Soundee component\n// above the fold.\nuseEnsureSoundeeSession();const cart=useCartStore();const count=isCanvas?previewCount:getCartCount();// Your design instead of ours. It gets the same click and the same numbers,\n// so a Soundee Cart Count dropped inside it keeps working — that component\n// reads the store itself and does not need anything passed to it.\nconst custom=normalizeSlot(trigger);if(/*#__PURE__*/React.isValidElement(custom)){return /*#__PURE__*/_jsx(HoverButton,{onClick:()=>!isCanvas&&toggleCart(),\"aria-label\":count>0?`Cart, ${count} items`:\"Cart\",style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",padding:0,border:\"none\",background:\"transparent\",color:\"inherit\",cursor:\"pointer\",...triggerSize.width===\"Fill\"?{width:\"100%\"}:{},...triggerSize.height===\"Fill\"?{height:\"100%\"}:{},...style},children:renderSlotWithSizing(custom,{count,countLabel:count>99?\"99+\":String(count),hasItems:count>0,isOpen:cart.isOpen},\"cart-trigger\",triggerSize)});}return /*#__PURE__*/_jsxs(HoverButton,{onClick:()=>!isCanvas&&toggleCart(),\"aria-label\":count>0?`Cart, ${count} items`:\"Cart\",// Colour only, no plate behind it. A header icon usually sits on\n// its own without a row or panel around it, so a background on\n// hover appears out of nowhere rather than lighting something up.\nhoverStyle:{color:hoverColor},style:{position:\"relative\",display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",// The frame's, and `style` lands after this either way, so\n// whatever the canvas sets wins.\nwidth:\"100%\",height:\"100%\",flexShrink:0,border:\"none\",borderRadius:999,background:\"transparent\",color,cursor:\"pointer\",...style},children:[/*#__PURE__*/_jsx(SoundeeIcon,{name:\"cart\",size:iconSize}),count>0&&// Sits on the icon rather than beside it: a badge that adds\n// width shifts whatever the header has next to the cart every\n// time something is added.\n/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{position:\"absolute\",// Overhanging the corner rather than sitting inside\n// it, so the count clears the icon at any Size. Worth\n// knowing: a frame around this with overflow hidden\n// clips the corner off.\ntop:-6,right:-6,display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",minWidth:18,height:18,padding:\"0 5px\",borderRadius:999,background:badgeBackground,color:badgeText,fontSize:11,fontWeight:700,lineHeight:1,fontVariantNumeric:\"tabular-nums\"},children:count>99?\"99+\":count})]});}SoundeeCartButton.displayName=\"Soundee Cart Button\";/**\n * Whether a design is connected. An empty slot arrives as `undefined` or as an\n * empty array depending on how it was cleared, and `[]` is truthy — hence the\n * length check rather than a plain boolean.\n */function hasTrigger(props){const slot=props.trigger;return Array.isArray(slot)?slot.length>0:!!slot;}/** The built-in look only matters while nothing is connected. */hasTrigger.not=props=>!hasTrigger(props);const cartButtonDefaults={triggerSize:DEFAULT_TRIGGER_SIZE,iconSize:20,color:\"rgba(255,255,255,0.75)\",hoverColor:\"#ffffff\",badgeBackground:\"#c8a06a\",badgeText:\"#121212\",previewCount:2};SoundeeCartButton.defaultProps=cartButtonDefaults;addPropertyControls(SoundeeCartButton,{trigger:{// Hidden until something is connected: the built-in rendering is what\n// this component is for now, and a slot nobody fills is a panel entry\n// that only invites a rebuild. Instances already using one keep theirs,\n// and can still take it out.\nhidden:props=>!props.trigger,type:ControlType.Slot,title:\"Button\",maxCount:1,description:\"Optional. Your own design, clicked to open the cart — put a Soundee Cart Count inside it for the badge. Receives count, countLabel, hasItems and isOpen. The panel it opens is styled on Soundee Setup, since the cart also opens from places that have no button.\"},triggerSize:{type:ControlType.Object,title:\"Button Size\",hidden:hasTrigger.not,controls:{width:{type:ControlType.Enum,title:\"Width\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:\"Auto\"},height:{type:ControlType.Enum,title:\"Height\",options:[\"Auto\",\"Fill\"],optionTitles:[\"Auto\",\"Fill\"],defaultValue:\"Auto\"}},defaultValue:DEFAULT_TRIGGER_SIZE},iconSize:{type:ControlType.Number,title:\"Icon\",defaultValue:20,min:12,max:40,step:1,unit:\"px\",hidden:hasTrigger},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"rgba(255,255,255,0.75)\",hidden:hasTrigger},hoverColor:{type:ControlType.Color,title:\"Hover\",defaultValue:\"#ffffff\",description:\"The whole hover — there is no background behind it, so this has to differ from Color to show.\",hidden:hasTrigger},badgeBackground:{type:ControlType.Color,title:\"Badge\",defaultValue:\"#c8a06a\",hidden:hasTrigger},badgeText:{type:ControlType.Color,title:\"Badge Label\",defaultValue:\"#121212\",hidden:hasTrigger},previewCount:{type:ControlType.Number,title:\"Preview Count\",defaultValue:2,min:0,max:99,step:1,// Stays visible with a design connected — it is the number that design\n// receives on the canvas, so hiding it took away the only way to see\n// your own badge with something in it.\ndescription:\"Canvas only: the cart is empty there, so this number stands in — for the built-in badge, and for the count your own design receives.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoundeeCartButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"32\",\"framerDisableUnlink\":\"\",\"framerIntrinsicWidth\":\"32\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (2b87f15)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,Instance,Link,ResolveLinks,resolvePageScope,RichText,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useRouter,useVariantState,withCSS,withFX}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import List from\"https://framerusercontent.com/modules/4xJsJPc59it6XmHEERsh/koUifyDPwJ9ohyYl3uMd/itu1soPCZ.js\";import Search from\"https://framerusercontent.com/modules/6wAE2eMb2Tl3zrU7u4UL/mKj6QS2p4Cgdaa0WrZKY/Search.js\";import SoundeeAccountButton from\"https://framerusercontent.com/modules/hqfsjAgpRhFAhS8pkaUi/1VN7rkGsiKKqZbAmlw3d/SoundeeAccountButton.js\";import SoundeeCartButton from\"https://framerusercontent.com/modules/SA5M6WNgJB5qt1H42qYM/wVo9L1Qn66h6cJxE0SlM/SoundeeCartButton.js\";import X from\"https://framerusercontent.com/modules/wbL0GysLpUpZOLelXsKU/7IhRlKXIvqCTv7OUjGRe/q95pf4lLL.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/XaGk5KFiRQ4OBta4v4ui/17eJqC0W9VI01fNTYqST/rtfLJ_PWh.js\";const SearchFonts=getFonts(Search);const SoundeeCartButtonFonts=getFonts(SoundeeCartButton);const SoundeeAccountButtonFonts=getFonts(SoundeeAccountButton);const MotionDivWithFX=withFX(motion.div);const cycleOrder=[\"Ketb80Hz2\",\"pN3d9Jp4j\",\"MR_ZX3Ec0\",\"guj7dLuze\"];const serializationHash=\"framer-CHiTw\";const variantClassNames={guj7dLuze:\"framer-v-10uifar\",Ketb80Hz2:\"framer-v-uu61hz\",MR_ZX3Ec0:\"framer-v-1k3hd5e\",pN3d9Jp4j:\"framer-v-1vhuq67\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const AjaQyrfrF=undefined;const transition1={duration:0,type:\"tween\"};const inertia={bounceDamping:30,bounceStiffness:400,delay:0,type:\"inertia\"};const preventDefault=e=>e.preventDefault();const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const transition2={bounce:.2,delay:0,duration:.3,type:\"spring\"};const humanReadableVariantMap={\"Phone Menu Open\":\"guj7dLuze\",\"Variant 1\":\"Ketb80Hz2\",\"With Background\":\"pN3d9Jp4j\",Phone:\"MR_ZX3Ec0\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,openMenu,width,...props})=>{return{...props,AjaQyrfrF:openMenu??props.AjaQyrfrF,variant:humanReadableVariantMap[props.variant]??props.variant??\"Ketb80Hz2\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,AjaQyrfrF,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"Ketb80Hz2\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(baseVariant===\"pN3d9Jp4j\")return false;return true;};const isDisplayed1=()=>{if([\"MR_ZX3Ec0\",\"guj7dLuze\"].includes(baseVariant))return true;return false;};const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap7ry3rr=activeVariantCallback(async(...args)=>{if(AjaQyrfrF){const res=await AjaQyrfrF(...args);if(res===false)return false;}});const isDisplayed2=()=>{if([\"MR_ZX3Ec0\",\"guj7dLuze\"].includes(baseVariant))return false;return true;};const isDisplayed3=()=>{if(baseVariant===\"pN3d9Jp4j\")return true;return false;};const router=useRouter();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(MotionDivWithFX,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-uu61hz\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"Ketb80Hz2\",ref:refBinding,style:{...style},...addPropertyOverrides({guj7dLuze:{\"data-framer-name\":\"Phone Menu Open\"},MR_ZX3Ec0:{\"data-framer-name\":\"Phone\"},pN3d9Jp4j:{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,\"data-framer-name\":\"With Background\",drag:true,dragMomentum:false,dragSnapToOrigin:true,dragTransition:inertia,onMouseDown:preventDefault}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-rdeqe0\",\"data-framer-name\":\"Gradient\",layoutDependency:layoutDependency,layoutId:\"RRL8zLk4W\",style:{backdropFilter:\"blur(72px)\",backgroundColor:\"var(--token-ed76fca5-023e-4623-87b6-3d9884e50af0, rgba(250, 250, 250, 0))\",mask:\"linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%) add\",opacity:0,WebkitBackdropFilter:\"blur(72px)\",WebkitMask:\"linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%) add\"}})}),/*#__PURE__*/_jsx(Transition,{value:transition2,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-cqygdn\",\"data-border\":true,\"data-framer-name\":\"Main\",layoutDependency:layoutDependency,layoutId:\"fwDdrEgqa\",style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-e4a457c5-ea6c-42e2-890c-a96297335b0a, rgba(255, 255, 255, 0))\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\",backdropFilter:\"none\",backgroundColor:\"var(--token-ca240290-acfd-4dbf-bf95-df0c24d466b6, rgba(10, 10, 10, 0))\",WebkitBackdropFilter:\"none\"},variants:{guj7dLuze:{backdropFilter:\"blur(72px)\",backgroundColor:\"var(--token-e951d155-25d3-4c21-b74e-51a2c6d0aaf0, rgba(13, 13, 13, 0.92))\",WebkitBackdropFilter:\"blur(72px)\"},MR_ZX3Ec0:{backdropFilter:\"blur(72px)\",backgroundColor:\"var(--token-e951d155-25d3-4c21-b74e-51a2c6d0aaf0, rgba(13, 13, 13, 0.92))\",WebkitBackdropFilter:\"blur(72px)\"},pN3d9Jp4j:{\"--border-color\":\"var(--token-dd90ff6e-d4e9-4f31-bad9-0cc566c2c6b0, rgba(255, 255, 255, 0.12))\",backdropFilter:\"blur(72px)\",backgroundColor:\"var(--token-e951d155-25d3-4c21-b74e-51a2c6d0aaf0, rgba(10, 10, 10, 0.92))\",WebkitBackdropFilter:\"blur(72px)\"}},children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-q7uuew\",\"data-framer-name\":\"Content\",layoutDependency:layoutDependency,layoutId:\"HRB28Blnw\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-swx0xr\",\"data-framer-name\":\"Inner Content\",layoutDependency:layoutDependency,layoutId:\"IKFVahMtk\",style:{borderBottomLeftRadius:56,borderBottomRightRadius:56,borderTopLeftRadius:56,borderTopRightRadius:56},children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1s3a58d\",layoutDependency:layoutDependency,layoutId:\"rTTKgJHWi\",children:isDisplayed1()&&/*#__PURE__*/_jsxs(motion.button,{className:\"framer-9hs5au\",\"data-framer-name\":\"Open Menu\",\"data-reset\":\"button\",layoutDependency:layoutDependency,layoutId:\"mKtXPnwjq\",style:{backgroundColor:\"var(--token-cb3f6048-1891-4b4c-aab6-c83ebda025ff)\",borderBottomLeftRadius:999,borderBottomRightRadius:999,borderTopLeftRadius:999,borderTopRightRadius:999},variants:{guj7dLuze:{backgroundColor:\"rgba(0, 0, 0, 0)\"},MR_ZX3Ec0:{backgroundColor:\"rgba(0, 0, 0, 0)\"}},...addPropertyOverrides({guj7dLuze:{\"data-framer-name\":\"Close Menu\",\"data-highlight\":true,onTap:undefined},MR_ZX3Ec0:{\"data-highlight\":true,onTap:onTap7ry3rr}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(Instance,{animated:true,className:\"framer-22zdp6\",Component:List,layoutDependency:layoutDependency,layoutId:\"bYbdrczi3\",style:{\"--1m6trwb\":0,\"--21h8s6\":\"var(--token-a19f57ae-2d0e-47dd-842b-0722f8e18e04)\",\"--pgex8v\":1.5},...addPropertyOverrides({guj7dLuze:{Component:X}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--framer-font-size\":\"1px\",\"--framer-line-height\":\"1em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(255, 255, 255))\"},children:\"Open menu\"})}),className:\"framer-1hnq30o\",\"data-framer-name\":\"Screen Reader Label\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"NIeYwad1Y\",style:{\"--extracted-r6o4lv\":\"rgb(255, 255, 255)\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({guj7dLuze:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--framer-font-size\":\"1px\",\"--framer-line-height\":\"1em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(255, 255, 255))\"},children:\"Close menu\"})})}},baseVariant,gestureVariant)})]})}),isDisplayed2()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-19eoa4t\",\"data-framer-name\":\"Links\",layoutDependency:layoutDependency,layoutId:\"ouEA2oq7b\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"12px\",\"--framer-font-weight\":\"800\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-c1e57d17-7637-441f-94db-c5057b2c8094))\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"NXLiMySRH\"},motionChild:true,nodeId:\"ujIAXzOLn\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17524f\",\"data-styles-preset\":\"UTA3MfZIn\",children:\"Beats\"})})})}),className:\"framer-1jw7kb7\",fonts:[\"FS;Manrope-extrabold\"],layoutDependency:layoutDependency,layoutId:\"ujIAXzOLn\",style:{\"--extracted-r6o4lv\":\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\",\"--framer-paragraph-spacing\":\"0px\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"12px\",\"--framer-font-weight\":\"800\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-c1e57d17-7637-441f-94db-c5057b2c8094))\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"PxaKhr2Kx\"},motionChild:true,nodeId:\"aQGqhim24\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17524f\",\"data-styles-preset\":\"UTA3MfZIn\",children:\"Sample Packs\"})})})}),className:\"framer-wo79nc\",fonts:[\"FS;Manrope-extrabold\"],layoutDependency:layoutDependency,layoutId:\"aQGqhim24\",style:{\"--extracted-r6o4lv\":\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\",\"--framer-paragraph-spacing\":\"0px\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"12px\",\"--framer-font-weight\":\"800\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-c1e57d17-7637-441f-94db-c5057b2c8094))\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"liSdsozkQ\"},motionChild:true,nodeId:\"ziK2iqsH0\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17524f\",\"data-styles-preset\":\"UTA3MfZIn\",children:\"About\"})})})}),className:\"framer-1m9avca\",\"data-framer-name\":\"About\",fonts:[\"FS;Manrope-extrabold\"],layoutDependency:layoutDependency,layoutId:\"ziK2iqsH0\",style:{\"--extracted-r6o4lv\":\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"12px\",\"--framer-font-weight\":\"800\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-c1e57d17-7637-441f-94db-c5057b2c8094))\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"liJ2vBa1_\"},motionChild:true,nodeId:\"XqBcrWPoO\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17524f\",\"data-styles-preset\":\"UTA3MfZIn\",children:\"Services\"})})})}),className:\"framer-s90mn5\",\"data-framer-name\":\"Services\",fonts:[\"FS;Manrope-extrabold\"],layoutDependency:layoutDependency,layoutId:\"XqBcrWPoO\",style:{\"--extracted-r6o4lv\":\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"12px\",\"--framer-font-weight\":\"800\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-c1e57d17-7637-441f-94db-c5057b2c8094))\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"X6hZ4fNWZ\"},motionChild:true,nodeId:\"G0vzDAMyl\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17524f\",\"data-styles-preset\":\"UTA3MfZIn\",children:\"Pricing\"})})})}),className:\"framer-182qjej\",fonts:[\"FS;Manrope-extrabold\"],layoutDependency:layoutDependency,layoutId:\"G0vzDAMyl\",style:{\"--extracted-r6o4lv\":\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\",\"--framer-paragraph-spacing\":\"0px\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"12px\",\"--framer-font-weight\":\"800\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-c1e57d17-7637-441f-94db-c5057b2c8094))\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"k4QbJNAOE\"},motionChild:true,nodeId:\"Cr5h2cUTb\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17524f\",\"data-styles-preset\":\"UTA3MfZIn\",children:\"Contact\"})})})}),className:\"framer-1mhheko\",fonts:[\"FS;Manrope-extrabold\"],layoutDependency:layoutDependency,layoutId:\"Cr5h2cUTb\",style:{\"--extracted-r6o4lv\":\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\",\"--framer-paragraph-spacing\":\"0px\"},verticalAlignment:\"top\",withExternalLayout:true}),isDisplayed3()&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"12px\",\"--framer-font-weight\":\"800\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-c1e57d17-7637-441f-94db-c5057b2c8094))\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"augiA20Il\"},motionChild:true,nodeId:\"eQLOItVo7\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17524f\",\"data-styles-preset\":\"UTA3MfZIn\",children:\"HOME\"})})})}),className:\"framer-1qkn3v9\",fonts:[\"FS;Manrope-extrabold\"],layoutDependency:layoutDependency,layoutId:\"eQLOItVo7\",style:{\"--extracted-r6o4lv\":\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\",\"--framer-paragraph-spacing\":\"0px\"},verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1o2s8ut\",\"data-framer-name\":\"Right\",layoutDependency:layoutDependency,layoutId:\"np5obI8iL\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-yw7zer-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"MsnGKo8Nj-container\",nodeId:\"MsnGKo8Nj\",rendersWithMotion:true,scopeId:\"bOWuG6zDw\",children:/*#__PURE__*/_jsx(Search,{backdropOptions:{backgroundColor:\"var(--token-6907e4c2-45ac-4cd4-a4aa-3a6a31087e20)\",transition:{damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"},zIndex:10},height:\"100%\",iconColor:\"var(--token-5e27f1b9-68ad-4fb1-8b74-43037447ac27)\",iconSize:18,iconType:\"default\",id:\"MsnGKo8Nj\",inputOptions:{clearButtonText:\"Clear\",clearButtonType:\"icon\",dividerType:\"fullWidth\",iconOptions:{iconColor:\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\",iconSize:18,iconType:\"default\"},inputFont:{fontFamily:'\"Manrope\", \"Manrope Placeholder\", sans-serif',fontSize:\"16px\",fontStyle:\"normal\",fontWeight:600},placeholderOptions:{placeholderColor:\"var(--token-1571a8ff-891d-4206-9ecf-63ab75c1b373)\",placeholderText:\"Search beats, sample packs or services\"},textColor:\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\"},layoutId:\"MsnGKo8Nj\",modalOptions:{backgroundColor:\"var(--token-cda5730d-db41-4e43-8cb3-45ef68e3e2b8, rgb(28, 28, 28))\",borderRadius:16,heightIsStatic:true,heightTransition:{damping:60,delay:0,mass:1,stiffness:800,type:\"spring\"},layoutType:\"QuickMenu\",shadow:{blur:40,color:\"var(--token-ddb6f5b1-2d3c-4fd3-b1ab-963080eab260)\",spread:0,x:0,y:20},top:0,width:500},resultOptions:{itemType:\"fullWidth\",subtitleOptions:{subtitleColor:\"var(--token-f6f0d308-65b3-469f-8dc8-31f355fea915)\",subtitleFont:{fontFamily:'\"Manrope\", \"Manrope Placeholder\", sans-serif',fontSize:\"13px\",fontStyle:\"normal\",fontWeight:600},subtitleType:\"path\"},titleColor:\"var(--token-f6f0d308-65b3-469f-8dc8-31f355fea915)\",titleFont:{fontFamily:'\"Manrope\", \"Manrope Placeholder\", sans-serif',fontSize:\"15px\",fontStyle:\"normal\",fontWeight:600},titleType:\"h1\"},style:{height:\"100%\",width:\"100%\"},urlScope:resolvePageScope({webPageId:\"gvir9LO1N\"},router),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-sb5z6w-container\",\"data-code-component-plugin-id\":\"api\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"zAUJRBloz-container\",nodeId:\"zAUJRBloz\",rendersWithMotion:true,scopeId:\"bOWuG6zDw\",children:/*#__PURE__*/_jsx(SoundeeCartButton,{badgeBackground:\"var(--token-8a2f9d40-d98b-48eb-9ec1-726a219f94c0)\",badgeText:\"var(--token-f6f0d308-65b3-469f-8dc8-31f355fea915)\",color:\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\",height:\"100%\",hoverColor:\"var(--token-62d1461a-0275-41dd-a2fa-7c4a23f94b68)\",iconSize:20,id:\"zAUJRBloz\",layoutId:\"zAUJRBloz\",previewCount:2,style:{height:\"100%\",width:\"100%\"},trigger:[],triggerSize:{height:\"Auto\",width:\"Auto\"},width:\"100%\",...addPropertyOverrides({guj7dLuze:{badgeText:\"rgb(0, 0, 0)\"},MR_ZX3Ec0:{badgeText:\"rgb(0, 0, 0)\"},pN3d9Jp4j:{badgeBackground:\"rgb(255, 255, 255)\",badgeText:\"rgb(0, 0, 0)\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"NXLiMySRH\"},implicitPathVariables:undefined},{href:{webPageId:\"NXLiMySRH\"},implicitPathVariables:undefined},{href:{webPageId:\"NXLiMySRH\"},implicitPathVariables:undefined},{href:{webPageId:\"NXLiMySRH\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-o0urz2-container\",\"data-code-component-plugin-id\":\"api\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"Vqf44QQ2q-container\",nodeId:\"Vqf44QQ2q\",rendersWithMotion:true,scopeId:\"bOWuG6zDw\",children:/*#__PURE__*/_jsx(SoundeeAccountButton,{accountLabel:\"My Account\",downloadsLabel:\"My Downloads\",height:\"100%\",id:\"Vqf44QQ2q\",layout:\"Desktop\",layoutId:\"Vqf44QQ2q\",links:[{id:\"Zl1mByczn\",label:\"Favorites\",link:resolvedLinks[0],newTab:false}],logoutLabel:\"Log out\",previewLoading:false,previewSignedIn:true,pulse:\"var(--token-dd90ff6e-d4e9-4f31-bad9-0cc566c2c6b0)\",radius:999,signedOutLabel:\"Sign in\",style:{height:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({guj7dLuze:{links:[{id:\"Zl1mByczn\",label:\"Favorites\",link:resolvedLinks[3],newTab:false}]},MR_ZX3Ec0:{links:[{id:\"Zl1mByczn\",label:\"Favorites\",link:resolvedLinks[2],newTab:false}]},pN3d9Jp4j:{links:[{id:\"Zl1mByczn\",label:\"Favorites\",link:resolvedLinks[1],newTab:false}]}},baseVariant,gestureVariant)})})})})]})]})})})}),isDisplayed1()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-xsimtf\",\"data-framer-name\":\"Drawer\",layoutDependency:layoutDependency,layoutId:\"YuvVI8rct\",style:{backgroundColor:\"var(--token-af818c5a-9256-48f1-a191-1cb0317c9d8a)\"},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-19azj9d\",\"data-styles-preset\":\"rtfLJ_PWh\",dir:\"auto\",children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"NXLiMySRH\"},motionChild:true,nodeId:\"djPwX2uxY\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{children:\"Beats\"})})})}),className:\"framer-13wholu\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"djPwX2uxY\",verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-19azj9d\",\"data-styles-preset\":\"rtfLJ_PWh\",dir:\"auto\",style:{\"--framer-text-alignment\":\"start\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"PxaKhr2Kx\"},motionChild:true,nodeId:\"cdQo_bET5\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{children:\"Sample Packs\"})})})}),className:\"framer-1fyjb15\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"cdQo_bET5\",verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-19azj9d\",\"data-styles-preset\":\"rtfLJ_PWh\",dir:\"auto\",children:\"About\"})}),className:\"framer-1kavi4x\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"qayWYfUc5\",verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-19azj9d\",\"data-styles-preset\":\"rtfLJ_PWh\",dir:\"auto\",style:{\"--framer-text-alignment\":\"start\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"liJ2vBa1_\"},motionChild:true,nodeId:\"r2gf1BosT\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{children:\"Services\"})})})}),className:\"framer-1sfe32p\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"r2gf1BosT\",verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"12px\",\"--framer-font-weight\":\"800\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-c1e57d17-7637-441f-94db-c5057b2c8094))\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"X6hZ4fNWZ\"},motionChild:true,nodeId:\"m9wJM_kjr\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{children:\"Pricing\"})})})}),className:\"framer-1upij97\",fonts:[\"FS;Manrope-extrabold\"],layoutDependency:layoutDependency,layoutId:\"m9wJM_kjr\",style:{\"--extracted-r6o4lv\":\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"12px\",\"--framer-font-weight\":\"800\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-c1e57d17-7637-441f-94db-c5057b2c8094))\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"k4QbJNAOE\"},motionChild:true,nodeId:\"V1VD23RTE\",openInNewTab:false,relValues:[],scopeId:\"bOWuG6zDw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{children:\"Contact\"})})})}),className:\"framer-9mv738\",fonts:[\"FS;Manrope-extrabold\"],layoutDependency:layoutDependency,layoutId:\"V1VD23RTE\",style:{\"--extracted-r6o4lv\":\"var(--token-c1e57d17-7637-441f-94db-c5057b2c8094)\"},verticalAlignment:\"top\",withExternalLayout:true})]})]})})})});});const css=[\".framer-CHiTw.framer-157hhel, .framer-CHiTw .framer-157hhel { display: block; }\",\".framer-CHiTw.framer-uu61hz { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1432px; }\",\".framer-CHiTw .framer-rdeqe0 { bottom: -20px; flex: none; height: 20px; left: calc(49.96717005909392% - 100% / 2); overflow: var(--overflow-clip-fallback, clip); position: absolute; width: 100%; z-index: 0; }\",\".framer-CHiTw .framer-cqygdn { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 64px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; z-index: 1; }\",\".framer-CHiTw .framer-q7uuew { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 100%; justify-content: center; max-width: 1300px; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-CHiTw .framer-swx0xr { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; height: 100%; justify-content: space-between; overflow: visible; padding: 0px 20px 0px 20px; position: relative; width: 1px; }\",\".framer-CHiTw .framer-1s3a58d { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: 40px; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 34px; }\",\".framer-CHiTw .framer-9hs5au { align-content: center; align-items: center; cursor: pointer; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 34px; justify-content: center; padding: 0px; position: relative; width: 34px; }\",\".framer-CHiTw .framer-22zdp6 { flex: none; height: auto; position: relative; width: 18px; }\",\".framer-CHiTw .framer-1hnq30o { -webkit-user-select: none; flex: none; height: 1px; left: -9999px; pointer-events: none; position: absolute; top: 0px; user-select: none; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-CHiTw .framer-19eoa4t { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 40px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-CHiTw .framer-1jw7kb7, .framer-CHiTw .framer-wo79nc, .framer-CHiTw .framer-1m9avca, .framer-CHiTw .framer-s90mn5, .framer-CHiTw .framer-182qjej, .framer-CHiTw .framer-1mhheko, .framer-CHiTw .framer-1qkn3v9, .framer-CHiTw .framer-1upij97, .framer-CHiTw .framer-9mv738 { -webkit-user-select: none; flex: none; height: auto; position: relative; user-select: none; white-space: pre; width: auto; }\",\".framer-CHiTw .framer-1o2s8ut { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 30px; height: min-content; justify-content: flex-end; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-CHiTw .framer-yw7zer-container { cursor: pointer; flex: none; height: 32px; position: relative; width: 32px; }\",\".framer-CHiTw .framer-sb5z6w-container { flex: none; height: 32px; position: relative; width: 32px; }\",\".framer-CHiTw .framer-o0urz2-container { aspect-ratio: 1 / 1; flex: none; height: auto; position: relative; width: 32px; }\",\".framer-CHiTw .framer-xsimtf { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; padding: 8px 20px 28px 20px; position: relative; width: 100%; z-index: 1; }\",\".framer-CHiTw .framer-13wholu, .framer-CHiTw .framer-1fyjb15, .framer-CHiTw .framer-1kavi4x, .framer-CHiTw .framer-1sfe32p { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-CHiTw.framer-v-1vhuq67.framer-uu61hz { cursor: grab; }\",\".framer-CHiTw.framer-v-1vhuq67 .framer-1jw7kb7 { order: 1; }\",\".framer-CHiTw.framer-v-1vhuq67 .framer-wo79nc { order: 3; }\",\".framer-CHiTw.framer-v-1vhuq67 .framer-1m9avca { order: 4; }\",\".framer-CHiTw.framer-v-1vhuq67 .framer-s90mn5 { order: 5; }\",\".framer-CHiTw.framer-v-1vhuq67 .framer-182qjej { order: 6; }\",\".framer-CHiTw.framer-v-1vhuq67 .framer-1mhheko { order: 7; }\",\".framer-CHiTw.framer-v-1vhuq67 .framer-1qkn3v9 { order: 0; }\",\".framer-CHiTw.framer-v-1k3hd5e.framer-uu61hz, .framer-CHiTw.framer-v-10uifar.framer-uu61hz { height: 64px; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); width: 390px; }\",\".framer-CHiTw.framer-v-1k3hd5e .framer-swx0xr, .framer-CHiTw.framer-v-10uifar .framer-swx0xr { gap: 0px; justify-content: flex-start; padding: 0px 10px 0px 10px; }\",\".framer-CHiTw.framer-v-1k3hd5e .framer-1s3a58d, .framer-CHiTw.framer-v-10uifar .framer-1s3a58d { flex: 1 0 0px; width: 1px; }\",\".framer-CHiTw.framer-v-1k3hd5e .framer-1o2s8ut, .framer-CHiTw.framer-v-10uifar .framer-1o2s8ut { gap: 14px; }\",...sharedStyle.css,'.framer-CHiTw[data-border=\"true\"]::after, .framer-CHiTw [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 64\n * @framerIntrinsicWidth 1432\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"pN3d9Jp4j\":{\"layout\":[\"fixed\",\"auto\"]},\"MR_ZX3Ec0\":{\"layout\":[\"fixed\",\"fixed\"]},\"guj7dLuze\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"AjaQyrfrF\":\"openMenu\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerbOWuG6zDw=withCSS(Component,css,\"framer-CHiTw\");export default FramerbOWuG6zDw;FramerbOWuG6zDw.displayName=\"Nav Bar\";FramerbOWuG6zDw.defaultProps={height:64,width:1432};addPropertyControls(FramerbOWuG6zDw,{variant:{options:[\"Ketb80Hz2\",\"pN3d9Jp4j\",\"MR_ZX3Ec0\",\"guj7dLuze\"],optionTitles:[\"Variant 1\",\"With Background\",\"Phone\",\"Phone Menu Open\"],title:\"Variant\",type:ControlType.Enum},AjaQyrfrF:{title:\"Open Menu\",type:ControlType.EventHandler}});addFonts(FramerbOWuG6zDw,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"},{cssFamilyName:\"Manrope\",openType:true,source:\"fontshare\",style:\"normal\",uiFamilyName:\"Manrope\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/7EWHG4AMROQSXDCQTDPGBVASATB7CED2/TJSQTK5FHJ2MYKML5IXF2G6YTGFJLTYL/K4ZMLVLHYIFVTTTWGVOTVGOFUUX7NVGI.woff2\",weight:\"800\"},{cssFamilyName:\"Manrope\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Manrope\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/6U2SGH566NSNERG6RGEV3DSNEK7DL2RF/JRDYRKMSAW2H35IWEQIPL67HAJQ35MG5/JNU3GNMUBPWW6V6JTED3S27XL5HN7NM5.woff2\",weight:\"600\"}]},...SearchFonts,...SoundeeCartButtonFonts,...SoundeeAccountButtonFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerbOWuG6zDw\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"AjaQyrfrF\\\":\\\"openMenu\\\"}\",\"framerIntrinsicWidth\":\"1432\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"pN3d9Jp4j\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"MR_ZX3Ec0\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"guj7dLuze\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerColorSyntax\":\"true\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"64\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerAutoSizeImages\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./bOWuG6zDw.map","// Generated by Framer (6ca5d98)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,useSVGTemplate,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const Base=/*#__PURE__*/forwardRef(function(props,ref){return /*#__PURE__*/_jsx(\"svg\",{...props,ref:ref,children:props.children});});const MotionSVG=motion.create(Base);const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(MotionSVG,{...rest,layoutId:layoutId,ref:ref,children:children}):/*#__PURE__*/_jsx(\"svg\",{...rest,ref:ref,children:children});});const svg='<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 0 2.25 C 0 1.007 1.007 0 2.25 0 C 3.493 0 4.5 1.007 4.5 2.25 C 4.5 3.493 3.493 4.5 2.25 4.5 C 1.007 4.5 0 3.493 0 2.25 Z\" fill-opacity=\"var(--1m6trwb, 0)\" fill=\"var(--21h8s6, rgb(0, 0, 0))\" height=\"4.5px\" id=\"O3Md7MsZN\" transform=\"translate(9.75 9.75)\" width=\"4.5px\"/><path d=\"M 0 2.25 C 0 1.007 1.007 0 2.25 0 C 3.493 0 4.5 1.007 4.5 2.25 C 4.5 3.493 3.493 4.5 2.25 4.5 C 1.007 4.5 0 3.493 0 2.25 Z\" fill=\"transparent\" height=\"4.5px\" id=\"Nm9ubc5G2\" stroke-dasharray=\"\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" stroke-miterlimit=\"10\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(9.75 9.75)\" width=\"4.5px\"/></svg>';const getProps=({alpha,color,height,id,width,width1,...props})=>{return{...props,ezTt3ayMo:color??props.ezTt3ayMo??\"rgb(0, 0, 0)\",lschgej4H:width1??props.lschgej4H??1.5,qxTvv_EBh:alpha??props.qxTvv_EBh};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,ezTt3ayMo,lschgej4H,qxTvv_EBh,...restProps}=getProps(props);const href=useSVGTemplate(\"3436826629\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-MtfHw\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--1m6trwb\":qxTvv_EBh,\"--21h8s6\":ezTt3ayMo,\"--pgex8v\":lschgej4H,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-MtfHw { -webkit-mask: ${mask}; aspect-ratio: 1; display: block; mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"ezTt3ayMo\":\"color\",\"lschgej4H\":\"width1\",\"qxTvv_EBh\":\"alpha\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Dot Outline\",\"color\":{\"type\":\"variable\",\"value\":\"21h8s6\"},\"set\":{\"localId\":\"vectorSet/NGVKdicsm\",\"id\":\"NGVKdicsm\",\"moduleId\":\"omX0gWFPqDwhaiWwf6ab\"}}\n * @framerDisableUnlink true\n */const Icon=withCSS(Component,css,\"framer-MtfHw\");Icon.displayName=\"Dot Outline\";export default Icon;addPropertyControls(Icon,{ezTt3ayMo:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},lschgej4H:{defaultValue:1.5,displayStepper:true,hidden:false,max:6,min:0,step:.5,title:\"Width\",type:ControlType.Number},qxTvv_EBh:{defaultValue:0,displayStepper:true,hidden:false,max:1,min:0,step:.1,title:\"Alpha\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"ezTt3ayMo\\\":\\\"color\\\",\\\"lschgej4H\\\":\\\"width1\\\",\\\"qxTvv_EBh\\\":\\\"alpha\\\"}\",\"framerIntrinsicWidth\":\"24\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerVector\":\"{\\\"name\\\":\\\"Dot Outline\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"21h8s6\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/NGVKdicsm\\\",\\\"id\\\":\\\"NGVKdicsm\\\",\\\"moduleId\\\":\\\"omX0gWFPqDwhaiWwf6ab\\\"}}\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerDisableUnlink\":\"true\",\"framerIntrinsicHeight\":\"24\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (2b87f15)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFonts,getFontsFromSharedStyle,RichText,TickerItem,useComponentViewport,useLocaleInfo,useVariantState,withCSS,withTickerFX}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import DotOutline from\"https://framerusercontent.com/modules/7bC5iMJxvK2W1YPj4tpS/qOV9H37hknTGZwKjKp5r/eGjIc3o09.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/hX4Ghq01xttz4H9HUMVb/bmOOpN099454zE9xwVO8/aT4mEY39K.js\";const DotOutlineFonts=getFonts(DotOutline);const MotionDivWithTickerFX=withTickerFX(motion.div);const cycleOrder=[\"wIvhp7b7X\",\"xA9h9MsvO\",\"Wdi3Z8Zd3\"];const serializationHash=\"framer-JuRab\";const variantClassNames={Wdi3Z8Zd3:\"framer-v-1v3492r\",wIvhp7b7X:\"framer-v-1q9gtqw\",xA9h9MsvO:\"framer-v-1qyi509\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Desktop:\"wIvhp7b7X\",Phone:\"Wdi3Z8Zd3\",Tablet:\"xA9h9MsvO\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"wIvhp7b7X\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"wIvhp7b7X\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1q9gtqw\",className,classNames),\"data-border\":true,\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"wIvhp7b7X\",ref:refBinding,style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-dd90ff6e-d4e9-4f31-bad9-0cc566c2c6b0, rgba(255, 255, 255, 0.12))\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",...style},...addPropertyOverrides({Wdi3Z8Zd3:{\"data-framer-name\":\"Phone\"},xA9h9MsvO:{\"data-framer-name\":\"Tablet\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(MotionDivWithTickerFX,{className:\"framer-wcvtye\",\"data-framer-name\":\"Genre Ticker\",layoutDependency:layoutDependency,layoutId:\"vwu9GPBIf\",style:{borderBottomLeftRadius:10,borderBottomRightRadius:10,borderTopLeftRadius:10,borderTopRightRadius:10},tickerEffectAlign:\"center\",tickerEffectDirectionModifier:\"default\",tickerEffectDraggable:false,tickerEffectEnabled:true,tickerEffectGap:\"60px\",tickerEffectHoverModifier:100,tickerEffectOverflow:\"clip\",tickerEffectPosition:\"relative\",tickerEffectStackDirection:\"row\",tickerEffectVelocity:30,children:[/*#__PURE__*/_jsx(TickerItem,{children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ps8ffb\",layoutDependency:layoutDependency,layoutId:\"iOJRqe9nz\",children:[/*#__PURE__*/_jsx(DotOutline,{animated:true,className:\"framer-11r7zxl\",layoutDependency:layoutDependency,layoutId:\"VZFeTqMad\",style:{\"--1m6trwb\":1,\"--21h8s6\":\"rgb(183, 183, 183)\",\"--pgex8v\":1.5}}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xovf84\",\"data-styles-preset\":\"aT4mEY39K\",dir:\"auto\",children:\"R&B\"})}),className:\"framer-rmn3s\",\"data-framer-name\":\"R\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"UUgJSdH2E\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})}),/*#__PURE__*/_jsx(TickerItem,{children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ojtve7\",layoutDependency:layoutDependency,layoutId:\"Fz59OKAN5\",children:[/*#__PURE__*/_jsx(DotOutline,{animated:true,className:\"framer-17xe6gw\",layoutDependency:layoutDependency,layoutId:\"nGS_uwr96\",style:{\"--1m6trwb\":1,\"--21h8s6\":\"rgb(183, 183, 183)\",\"--pgex8v\":1.5}}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xovf84\",\"data-styles-preset\":\"aT4mEY39K\",dir:\"auto\",children:\"NEO SOUL\"})}),className:\"framer-sew1uu\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"k1eve5Uk7\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})}),/*#__PURE__*/_jsx(TickerItem,{children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-176wuwo\",layoutDependency:layoutDependency,layoutId:\"Kya_xkdK2\",children:[/*#__PURE__*/_jsx(DotOutline,{animated:true,className:\"framer-uk0k8\",layoutDependency:layoutDependency,layoutId:\"jRG6BZASD\",style:{\"--1m6trwb\":1,\"--21h8s6\":\"rgb(183, 183, 183)\",\"--pgex8v\":1.5}}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xovf84\",\"data-styles-preset\":\"aT4mEY39K\",dir:\"auto\",children:\"AFRO R&B\"})}),className:\"framer-1jrbd9r\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"O2gQs9lEQ\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})}),/*#__PURE__*/_jsx(TickerItem,{children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-m8v6z2\",layoutDependency:layoutDependency,layoutId:\"uX9OkGsBd\",children:[/*#__PURE__*/_jsx(DotOutline,{animated:true,className:\"framer-1ilxwpa\",layoutDependency:layoutDependency,layoutId:\"xOl2iR4zL\",style:{\"--1m6trwb\":1,\"--21h8s6\":\"rgb(183, 183, 183)\",\"--pgex8v\":1.5}}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xovf84\",\"data-styles-preset\":\"aT4mEY39K\",dir:\"auto\",children:\"EXPERIMENTAL\"})}),className:\"framer-497bv4\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"BMJxSZRvi\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})})]})})})})});});const css=[\".framer-JuRab.framer-xcawqb, .framer-JuRab .framer-xcawqb { display: block; }\",\".framer-JuRab.framer-1q9gtqw { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 24px; height: 60px; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1085px; }\",\".framer-JuRab .framer-wcvtye { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 60px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1px; will-change: var(--framer-will-change-override, transform); }\",\".framer-JuRab .framer-1ps8ffb, .framer-JuRab .framer-1ojtve7, .framer-JuRab .framer-176wuwo, .framer-JuRab .framer-m8v6z2 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 60px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-JuRab .framer-11r7zxl, .framer-JuRab .framer-17xe6gw, .framer-JuRab .framer-uk0k8, .framer-JuRab .framer-1ilxwpa { aspect-ratio: 1 / 1; flex: none; height: auto; position: relative; width: 16px; }\",\".framer-JuRab .framer-rmn3s, .framer-JuRab .framer-sew1uu, .framer-JuRab .framer-1jrbd9r, .framer-JuRab .framer-497bv4 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-JuRab.framer-v-1qyi509.framer-1q9gtqw, .framer-JuRab.framer-v-1v3492r.framer-1q9gtqw { width: 304px; }\",...sharedStyle.css,'.framer-JuRab[data-border=\"true\"]::after, .framer-JuRab [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 60\n * @framerIntrinsicWidth 1085\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"xA9h9MsvO\":{\"layout\":[\"fixed\",\"fixed\"]},\"Wdi3Z8Zd3\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerC5z9FnuRp=withCSS(Component,css,\"framer-JuRab\");export default FramerC5z9FnuRp;FramerC5z9FnuRp.displayName=\"Hero Ticker\";FramerC5z9FnuRp.defaultProps={height:60,width:1085};addPropertyControls(FramerC5z9FnuRp,{variant:{options:[\"wIvhp7b7X\",\"xA9h9MsvO\",\"Wdi3Z8Zd3\"],optionTitles:[\"Desktop\",\"Tablet\",\"Phone\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerC5z9FnuRp,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...DotOutlineFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerC5z9FnuRp\",\"slots\":[],\"annotations\":{\"framerColorSyntax\":\"true\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"xA9h9MsvO\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Wdi3Z8Zd3\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"60\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicWidth\":\"1085\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./C5z9FnuRp.map","// Generated by Framer (2b87f15)\nimport{jsx as _jsx,Fragment as _Fragment}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ChildrenCanSuspend,ControlType,cx,Link,PathVariablesContext,useComponentViewport,useLocaleInfo,useQueryData,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import SoundeeProducts from\"https://framerusercontent.com/modules/Wi37llmvuy4uwkClVGPY/k4tI9KIbaUks3snc47Kx/NlhflDO1T.js\";const serializationHash=\"framer-QZVRt\";const variantClassNames={dL2acjj1i:\"framer-v-11d3ky7\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const lU1KpGjrTY57M1pYix=undefined;const idY57M1pYix=undefined;const J2CDEgbhM=undefined;const transition1={duration:0,type:\"tween\"};const query=(prequery,{J2CDEgbhM})=>prequery({from:{alias:\"Y57M1pYix\",data:SoundeeProducts,type:\"Collection\"},limit:{type:\"LiteralValue\",value:1},select:[{collection:\"Y57M1pYix\",name:\"lU1KpGjrT\",type:\"Identifier\"},{collection:\"Y57M1pYix\",name:\"id\",type:\"Identifier\"}],where:{left:{collection:\"Y57M1pYix\",name:\"M1kxaNKRzMhtmNLAB8nOJ4U\",type:\"Identifier\"},operator:\"==\",right:{type:\"LiteralValue\",value:J2CDEgbhM},type:\"BinaryOperation\"}});const query1=J2CDEgbhM=>({from:{alias:\"Y57M1pYix\",data:SoundeeProducts,type:\"Collection\"},limit:{type:\"LiteralValue\",value:1},select:[{collection:\"Y57M1pYix\",name:\"lU1KpGjrT\",type:\"Identifier\"},{collection:\"Y57M1pYix\",name:\"id\",type:\"Identifier\"}],where:{left:{collection:\"Y57M1pYix\",name:\"M1kxaNKRzMhtmNLAB8nOJ4U\",type:\"Identifier\"},operator:\"==\",right:{type:\"LiteralValue\",value:J2CDEgbhM},type:\"BinaryOperation\"}});const QueryData=({query,pageSize,children})=>{const data=useQueryData(query);return children(data);};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({entityID,height,id,width,...props})=>{return{...props,J2CDEgbhM:entityID??props.J2CDEgbhM??0};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,J2CDEgbhM,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"dL2acjj1i\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-11d3ky7\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"dL2acjj1i\",ref:refBinding,style:{...style},children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1linsns\",\"data-framer-name\":\"Product Link Lookup\",layoutDependency:layoutDependency,layoutId:\"Y57M1pYix\",children:/*#__PURE__*/_jsx(ChildrenCanSuspend,{children:/*#__PURE__*/_jsx(QueryData,{query:query1(J2CDEgbhM),children:(collection,paginationInfo,loadMore)=>{return /*#__PURE__*/_jsx(_Fragment,{children:collection?.map(({id:idY57M1pYix,lU1KpGjrT:lU1KpGjrTY57M1pYix},index)=>{lU1KpGjrTY57M1pYix??=\"\";return /*#__PURE__*/_jsx(LayoutGroup,{id:`Y57M1pYix-${idY57M1pYix}`,children:/*#__PURE__*/_jsx(PathVariablesContext.Provider,{value:{lU1KpGjrT:lU1KpGjrTY57M1pYix},children:/*#__PURE__*/_jsx(Link,{href:{pathVariables:{lU1KpGjrT:lU1KpGjrTY57M1pYix},webPageId:\"ILWUxMSL_\"},motionChild:true,nodeId:\"lJT2F87eq\",scopeId:\"louLrzKLP\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-j4v0j framer-sc11kq\",\"data-framer-name\":\"Product Destination\",layoutDependency:layoutDependency,layoutId:\"lJT2F87eq\"})})})},idY57M1pYix);})});}})})})})})})});});const css=[\".framer-QZVRt.framer-sc11kq, .framer-QZVRt .framer-sc11kq { display: block; }\",\".framer-QZVRt.framer-11d3ky7 { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; padding: 0px; position: relative; width: 100px; }\",\".framer-QZVRt .framer-1linsns { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; padding: 0px; position: relative; width: 1px; }\",\".framer-QZVRt .framer-j4v0j { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: 1px; justify-content: flex-start; padding: 0px; position: relative; text-decoration: none; width: 100%; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 100\n * @framerIntrinsicWidth 100\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"J2CDEgbhM\":\"entityID\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerlouLrzKLP=withCSS(Component,css,\"framer-QZVRt\");export default FramerlouLrzKLP;FramerlouLrzKLP.displayName=\"CMS Link\";FramerlouLrzKLP.defaultProps={height:100,width:100};addPropertyControls(FramerlouLrzKLP,{J2CDEgbhM:{defaultValue:0,title:\"Entity ID\",type:ControlType.Number},onJ2CDEgbhMChange:{changes:\"J2CDEgbhM\",type:ControlType.ChangeHandler}});addFonts(FramerlouLrzKLP,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerlouLrzKLP\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"J2CDEgbhM\\\":\\\"entityID\\\"}\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"100\",\"framerIntrinsicHeight\":\"100\",\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerComponentViewportWidth\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./louLrzKLP.map","// Generated by Framer (80f113d)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"FS;Manrope-semibold\",\"FS;Manrope-bold\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Manrope\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Manrope\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/6U2SGH566NSNERG6RGEV3DSNEK7DL2RF/JRDYRKMSAW2H35IWEQIPL67HAJQ35MG5/JNU3GNMUBPWW6V6JTED3S27XL5HN7NM5.woff2\",weight:\"600\"},{cssFamilyName:\"Manrope\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Manrope\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/NGBUP45ES3F7RD5XGKPEDJ6QEPO4TMOK/EXDVWJ2EDDVVV65UENMX33EDDYBX6OF7/6P4FPMFQH7CCC7RZ4UU4NKSGJ2RLF7V5.woff2\",weight:\"700\"}]}];export const css=[\".framer-UgtC4 .framer-styles-preset-16y19vd:not(.rich-text-wrapper), .framer-UgtC4 .framer-styles-preset-16y19vd.rich-text-wrapper p { --framer-font-family: \\\"Manrope\\\", \\\"Manrope Placeholder\\\", sans-serif; --framer-font-family-bold: \\\"Manrope\\\", \\\"Manrope Placeholder\\\", sans-serif; --framer-font-open-type-features: 'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on; --framer-font-size: 10px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 600; --framer-font-weight-bold: 700; --framer-letter-spacing: 0.14em; --framer-line-height: 1.6em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-4f4f4d9f-4ad1-4478-9cee-7ed35536b315); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: uppercase; }\"];export const className=\"framer-UgtC4\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (2f17f47)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFontsFromSharedStyle,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/rQ68vNLyA9Kd3g87jwil/iOCaBnpgVNJOBdNaHJMM/cZ_YVuZjX.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/MemSb1OQjegBQKEdOeaK/e8FAlHCfZ1FmDE3rA65k/GEgOLTmVH.js\";const serializationHash=\"framer-ZrSU7\";const variantClassNames={sbKkTEN6U:\"framer-v-1x2gfa8\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const AWB2MCX1i=undefined;const M4kRejEZN=undefined;const OQM9HoF0J=undefined;const PnLUV8pyN=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({background,deal,height,hint,id,link,width,...props})=>{return{...props,AWB2MCX1i:background??props.AWB2MCX1i??\"var(--token-8a2f9d40-d98b-48eb-9ec1-726a219f94c0)\",M4kRejEZN:link??props.M4kRejEZN,OQM9HoF0J:deal??props.OQM9HoF0J??\"Buy 2, get 1 free\",PnLUV8pyN:hint??props.PnLUV8pyN??\"Add any 3 beats to cart\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,OQM9HoF0J,PnLUV8pyN,M4kRejEZN,AWB2MCX1i,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"sbKkTEN6U\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:M4kRejEZN,motionChild:true,nodeId:\"sbKkTEN6U\",scopeId:\"Q3J7SJs0t\",children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-1x2gfa8\",className,classNames)} framer-1sdhc1v`,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"sbKkTEN6U\",ref:refBinding,style:{backgroundColor:AWB2MCX1i,...style},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-och0b8\",\"data-styles-preset\":\"GEgOLTmVH\",dir:\"auto\",children:\"Deal\"})}),className:\"framer-1yqz5ih\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"VS9ix8MgB\",text:OQM9HoF0J,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-16y19vd\",\"data-styles-preset\":\"cZ_YVuZjX\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-f6f0d308-65b3-469f-8dc8-31f355fea915, rgb(255, 255, 255)))\"},children:\"Add any 3 beats to cart\"})}),className:\"framer-1qfl9xi\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"KD5tzFDA7\",style:{\"--extracted-r6o4lv\":\"var(--token-f6f0d308-65b3-469f-8dc8-31f355fea915, rgb(255, 255, 255))\"},text:PnLUV8pyN,verticalAlignment:\"top\",withExternalLayout:true})]})})})})});});const css=[\".framer-ZrSU7.framer-1sdhc1v, .framer-ZrSU7 .framer-1sdhc1v { display: block; }\",\".framer-ZrSU7.framer-1x2gfa8 { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: wrap; gap: 18px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 10px 20px 10px 20px; position: relative; text-decoration: none; width: 1200px; }\",\".framer-ZrSU7 .framer-1yqz5ih, .framer-ZrSU7 .framer-1qfl9xi { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",...sharedStyle.css,...sharedStyle1.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 39\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"OQM9HoF0J\":\"deal\",\"PnLUV8pyN\":\"hint\",\"M4kRejEZN\":\"link\",\"AWB2MCX1i\":\"background\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerQ3J7SJs0t=withCSS(Component,css,\"framer-ZrSU7\");export default FramerQ3J7SJs0t;FramerQ3J7SJs0t.displayName=\"Announcement Banner\";FramerQ3J7SJs0t.defaultProps={height:39,width:1200};addPropertyControls(FramerQ3J7SJs0t,{OQM9HoF0J:{defaultValue:\"Buy 2, get 1 free\",title:\"Deal\",type:ControlType.String},onOQM9HoF0JChange:{changes:\"OQM9HoF0J\",type:ControlType.ChangeHandler},PnLUV8pyN:{defaultValue:\"Add any 3 beats to cart\",title:\"Hint\",type:ControlType.String},onPnLUV8pyNChange:{changes:\"PnLUV8pyN\",type:ControlType.ChangeHandler},M4kRejEZN:{title:\"Link\",type:ControlType.Link},AWB2MCX1i:{defaultValue:\"var(--token-8a2f9d40-d98b-48eb-9ec1-726a219f94c0)\",title:\"Background\",type:ControlType.Color}});addFonts(FramerQ3J7SJs0t,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerQ3J7SJs0t\",\"slots\":[],\"annotations\":{\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"39\",\"framerColorSyntax\":\"true\",\"framerVariables\":\"{\\\"OQM9HoF0J\\\":\\\"deal\\\",\\\"PnLUV8pyN\\\":\\\"hint\\\",\\\"M4kRejEZN\\\":\\\"link\\\",\\\"AWB2MCX1i\\\":\\\"background\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerImmutableVariables\":\"true\",\"framerAutoSizeImages\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Put this override on the panel inside a Framer overlay that contains\n// navigation links — the mobile menu. While the panel is mounted (the overlay\n// is open), any tap on a link first lets Framer's router take the click, then\n// dismisses the overlay by dispatching Escape, which every dismissible\n// overlay responds to. Without it, an overlay living on the layout template\n// can survive a page change and sit open on the next page.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect}from\"react\";export function withCloseOverlayOnNavigate(Component){return function CloseOverlayOnNavigate(props){useEffect(()=>{if(typeof document===\"undefined\")return;const onClick=event=>{const target=event.target;if(!(target instanceof Element))return;if(!target.closest(\"a[href]\"))return;// Next tick, so the router handles the navigation first. A\n// link to the current page still closes the menu — tapping a\n// destination should always put the page back in view.\nwindow.setTimeout(()=>{document.dispatchEvent(new KeyboardEvent(\"keydown\",{key:\"Escape\",code:\"Escape\",bubbles:true}));},0);};document.addEventListener(\"click\",onClick,true);return()=>document.removeEventListener(\"click\",onClick,true);},[]);return /*#__PURE__*/_jsx(Component,{...props});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withCloseOverlayOnNavigate\":{\"type\":\"reactHoc\",\"name\":\"withCloseOverlayOnNavigate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CloseOverlayOnNavigate.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef}from\"react\";export function withYear(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,text:String(new Date().getFullYear())});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withYear\":{\"type\":\"reactHoc\",\"name\":\"withYear\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CurrentYear.map","// Put this override on the footer. It hides while a Soundee catalog list on\n// the page still has more to load — scrolling toward the footer is exactly the\n// gesture that fetches more rows and pushes it away — and returns once the\n// whole catalogue is on the page. Before the first rows arrive the footer is\n// visible, so pages without a list are unaffected.\n//\n// It reads the `__soundeeListGrowth` registry the Soundee list components\n// publish on globalThis; there is nothing to configure here.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useSyncExternalStore}from\"react\";function getRegistry(){const scope=globalThis;if(!scope.__soundeeListGrowth){scope.__soundeeListGrowth={lists:new Map,listeners:new Set};}return scope.__soundeeListGrowth;}function subscribe(listener){const reg=getRegistry();reg.listeners.add(listener);return()=>{reg.listeners.delete(listener);};}function getSnapshot(){for(const entry of getRegistry().lists.values()){if(entry.hasData&&entry.canGrow)return true;}return false;}export function withHideFooterWhileListLoads(Component){return function HideFooterWhileListLoads(props){const hide=useSyncExternalStore(subscribe,getSnapshot,()=>false);// `display: none` rather than unmounting: the footer keeps its state\n// (CMS lists, images) and simply leaves the flow, so the page ends at\n// the list while it grows.\nconst style={...props.style,display:hide?\"none\":props.style?.display};return /*#__PURE__*/_jsx(Component,{...props,style:style});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withHideFooterWhileListLoads\":{\"type\":\"reactHoc\",\"name\":\"withHideFooterWhileListLoads\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HideFooterWhileListLoads.map","// Generated by Framer (2b87f15)\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ChildrenCanSuspend,ComponentViewportProvider,Container,ControlType,cx,forwardLoader,GeneratedComponentContext,getFonts,getFontsFromSharedStyle,getPropertyControls,InjectSelectionStyle,Link,PathVariablesContext,PropertyOverrides,queryCache,RenderTarget,ResetOuterLinkContext,ResolveLinks,RichText,runTasksWithYield,useActiveVariantCallback,useCustomCursors,useHydratedBreakpointVariants,useIsOnFramerCanvas,useLocaleInfo,useOverlayState,useQueryData,useRouter,withCodeBoundaryForOverrides,withCSS,withOptimizedAppearEffect}from\"framer\";import{AnimatePresence,LayoutGroup,motion}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as ReactDOM from\"react-dom\";import SoundeePlayerBar from\"https://framerusercontent.com/modules/7wMjBZXxhlZozjwJyQba/lmEwTcPTKJnoQ19TD0n9/SoundeePlayerBar.js\";import SoundeeSetup from\"https://framerusercontent.com/modules/LFsnrCkruKMOwBYJ9TQL/pIrHIPbc8lEQRunPpqcl/SoundeeModals.js\";import X from\"https://framerusercontent.com/modules/wbL0GysLpUpZOLelXsKU/7IhRlKXIvqCTv7OUjGRe/q95pf4lLL.js\";import NavBar from\"#framer/local/canvasComponent/bOWuG6zDw/bOWuG6zDw.js\";import HeroTicker from\"#framer/local/canvasComponent/C5z9FnuRp/C5z9FnuRp.js\";import CMSLink from\"#framer/local/canvasComponent/louLrzKLP/louLrzKLP.js\";import AnnouncementBanner from\"#framer/local/canvasComponent/Q3J7SJs0t/Q3J7SJs0t.js\";import{withCloseOverlayOnNavigate}from\"#framer/local/codeFile/KqlKHW2/CloseOverlayOnNavigate.js\";import{withYear}from\"#framer/local/codeFile/PWp0gsW/CurrentYear.js\";import{withHideFooterWhileListLoads}from\"#framer/local/codeFile/HEkmmg3/HideFooterWhileListLoads.js\";import ProducerBranding from\"#framer/local/collection/uBaU8AKyi/uBaU8AKyi.js\";import*as sharedStyle1 from\"#framer/local/css/A93_lH1lO/A93_lH1lO.js\";import*as sharedStyle from\"#framer/local/css/JwdxshI8r/JwdxshI8r.js\";import*as sharedStyle2 from\"#framer/local/css/nTC8uzm37/nTC8uzm37.js\";const AnnouncementBannerFonts=getFonts(AnnouncementBanner);const ContainerWithOptimizedAppearEffect=withOptimizedAppearEffect(Container);const NavBarFonts=getFonts(NavBar);const XFonts=getFonts(X);const MotionDivWithCloseOverlayOnNavigate937hif=withCodeBoundaryForOverrides(motion.div,{inComponentSlot:true,nodeId:\"UuDxpNvww\",override:withCloseOverlayOnNavigate,scopeId:\"YvpykE1PC\"});const HeroTickerFonts=getFonts(HeroTicker);const CMSLinkFonts=getFonts(CMSLink);const SoundeeSetupFonts=getFonts(SoundeeSetup);const RichTextWithYear1dsbk3p=withCodeBoundaryForOverrides(RichText,{nodeId:\"Anr_2HXuS\",override:withYear,scopeId:\"YvpykE1PC\"});const MotionFooterWithHideFooterWhileListLoads1vs8rl3=withCodeBoundaryForOverrides(motion.footer,{nodeId:\"yOp5KiT2n\",override:withHideFooterWhileListLoads,scopeId:\"YvpykE1PC\"});const SoundeePlayerBarFonts=getFonts(SoundeePlayerBar);const NavBarControls=getPropertyControls(NavBar);const breakpoints={gacYyTBSC:\"(min-width: 810px) and (max-width: 1199.98px)\",rJaUo94Fw:\"(min-width: 1200px)\",UO3GPLR4r:\"(max-width: 809.98px)\"};const isBrowser=()=>typeof document!==\"undefined\";const serializationHash=\"framer-1K9ux\";const variantClassNames={gacYyTBSC:\"framer-v-1if56t2\",rJaUo94Fw:\"framer-v-f2lsk\",UO3GPLR4r:\"framer-v-ne2tec\"};const mFODpwZlM=undefined;const vYrmbNQHe=undefined;const Ip2LUPYdE=undefined;const pDPEWD4wa=undefined;const uZ0bFtZt7yOp5KiT2n=undefined;const EVrCUPMyvyOp5KiT2n=undefined;const AzJrLDdedyOp5KiT2n=undefined;const CAP27IQvGyOp5KiT2n=undefined;const ob6hH8hmXyOp5KiT2n=undefined;const idyOp5KiT2n=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const animation={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition1,x:0,y:0};const animation1={opacity:.001,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:-150};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const getContainer=()=>{return document.querySelector(\"#template-overlay\")??document.querySelector(\"#overlay\")??document.body;};const Overlay=({children,blockDocumentScrolling,dismissWithEsc,enabled=true})=>{const[visible,setVisible]=useOverlayState({blockDocumentScrolling,dismissWithEsc:enabled&&dismissWithEsc});return children({hide:()=>setVisible(false),show:()=>setVisible(true),toggle:()=>setVisible(!visible),visible:enabled&&visible});};const query=prequery=>prequery({from:{alias:\"yOp5KiT2n\",data:ProducerBranding,type:\"Collection\"},limit:{type:\"LiteralValue\",value:1},select:[{collection:\"yOp5KiT2n\",name:\"uZ0bFtZt7\",type:\"Identifier\"},{collection:\"yOp5KiT2n\",name:\"EVrCUPMyv\",type:\"Identifier\"},{collection:\"yOp5KiT2n\",name:\"AzJrLDded\",type:\"Identifier\"},{collection:\"yOp5KiT2n\",name:\"CAP27IQvG\",type:\"Identifier\"},{collection:\"yOp5KiT2n\",name:\"ob6hH8hmX\",type:\"Identifier\"},{collection:\"yOp5KiT2n\",name:\"id\",type:\"Identifier\"}]});const query1=()=>({from:{alias:\"yOp5KiT2n\",data:ProducerBranding,type:\"Collection\"},limit:{type:\"LiteralValue\",value:1},select:[{collection:\"yOp5KiT2n\",name:\"uZ0bFtZt7\",type:\"Identifier\"},{collection:\"yOp5KiT2n\",name:\"EVrCUPMyv\",type:\"Identifier\"},{collection:\"yOp5KiT2n\",name:\"AzJrLDded\",type:\"Identifier\"},{collection:\"yOp5KiT2n\",name:\"CAP27IQvG\",type:\"Identifier\"},{collection:\"yOp5KiT2n\",name:\"ob6hH8hmX\",type:\"Identifier\"},{collection:\"yOp5KiT2n\",name:\"id\",type:\"Identifier\"}]});const QueryData=({query,pageSize,children})=>{const data=useQueryData(query);return children(data);};const breakpointRules={gacYyTBSC:[\".framer-1K9ux .framer-u4xxga { flex-direction: column; gap: 48px; padding: 44px 0px 44px 0px; }\",\".framer-1K9ux .framer-1lzot8 { flex-wrap: wrap; }\",\".framer-1K9ux .framer-gmjv4w, .framer-1K9ux .framer-1l6h2qc, .framer-1K9ux .framer-18y59od { width: 160px; }\"],UO3GPLR4r:[\".framer-1K9ux .framer-o821cl { background-color: var(--token-dd90ff6e-d4e9-4f31-bad9-0cc566c2c6b0, rgba(255, 255, 255, 0.12)); }\",\".framer-1K9ux .framer-12tcmx9 { padding: 0px 10px 0px 10px; }\",\".framer-1K9ux .framer-u4xxga { flex-direction: column; gap: 36px; padding: 36px 0px 36px 0px; }\",\".framer-1K9ux .framer-1lzot8 { flex-direction: column; justify-content: flex-start; }\",\".framer-1K9ux .framer-109m633 { flex-direction: column; gap: 10px; justify-content: flex-start; }\"]};const breakpointKeys=Object.keys(breakpointRules);const selectors={gacYyTBSC:\".framer-1if56t2-override\",UO3GPLR4r:\".framer-ne2tec-override\"};const rules=[\".framer-1K9ux.framer-s2ebje, .framer-1K9ux .framer-s2ebje { display: block; }\",\".framer-1K9ux.framer-f2lsk { align-content: center; align-items: center; background-color: var(--token-af818c5a-9256-48f1-a191-1cb0317c9d8a, #0d0d0d); display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-1K9ux .framer-yzenw4-container { flex: none; height: auto; order: -1000; position: relative; width: 100%; will-change: var(--framer-will-change-effect-override, transform); z-index: 9; }\",\".framer-1K9ux .framer-1k7q4v-container { flex: none; height: auto; order: -999; position: sticky; top: 0px; width: 100%; z-index: 8; }\",\".framer-1K9ux.framer-1wjvr04 { background-color: rgba(0, 0, 0, 0.6); inset: 0px; position: fixed; user-select: none; z-index: 10; }\",\".framer-1K9ux.framer-937hif { align-content: flex-start; align-items: flex-start; background-color: var(--token-ed76fca5-023e-4623-87b6-3d9884e50af0); bottom: 0px; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; justify-content: space-between; left: 0px; overflow: auto; overflow-x: hidden; padding: 20px 20px 36px 20px; position: fixed; right: 0px; top: 0px; z-index: 10; }\",\".framer-1K9ux .framer-b691ru { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: space-between; padding: 0px; position: relative; width: 100%; }\",\".framer-1K9ux .framer-1ru5hoc { -webkit-user-select: none; flex: none; height: auto; position: relative; user-select: none; white-space: pre; width: auto; }\",\".framer-1K9ux .framer-ry8i24 { align-content: center; align-items: center; cursor: pointer; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 40px; justify-content: center; padding: 0px; position: relative; width: 40px; }\",\".framer-1K9ux .framer-2soami { --1m6trwb: 0; --21h8s6: var(--token-a19f57ae-2d0e-47dd-842b-0722f8e18e04); --pgex8v: 1.5; flex: none; height: auto; position: relative; width: 22px; }\",\".framer-1K9ux .framer-ny9pui { -webkit-user-select: none; flex: none; height: 1px; left: -9999px; pointer-events: none; position: absolute; top: 0px; user-select: none; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-1K9ux .framer-198wmrz { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: flex-start; padding: 0px; position: relative; width: 100%; }\",\".framer-1K9ux .framer-m5xksd, .framer-1K9ux .framer-ew5sp9, .framer-1K9ux .framer-mksgjv, .framer-1K9ux .framer-1puebd8, .framer-1K9ux .framer-1n1emwp, .framer-1K9ux .framer-1cj66yz, .framer-1K9ux .framer-9dnjgs { -webkit-user-select: none; cursor: pointer; flex: none; height: auto; position: relative; user-select: none; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-1K9ux .framer-1vtf96x { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 14px; height: min-content; justify-content: flex-start; padding: 0px; position: relative; width: 100%; }\",\".framer-1K9ux .framer-o821cl, .framer-1K9ux .framer-8jenmx, .framer-1K9ux .framer-7ilngq { background-color: var(--token-dd90ff6e-d4e9-4f31-bad9-0cc566c2c6b0); flex: none; height: 1px; position: relative; width: 100%; }\",\".framer-1K9ux .framer-168s0jq, .framer-1K9ux .framer-128poz3, .framer-1K9ux .framer-ux7eca, .framer-1K9ux .framer-v4mgov, .framer-1K9ux .framer-iudj3x, .framer-1K9ux .framer-1d51trq, .framer-1K9ux .framer-96z48o, .framer-1K9ux .framer-sfmg5t, .framer-1K9ux .framer-j98m4s, .framer-1K9ux .framer-19dm8yw, .framer-1K9ux .framer-603260, .framer-1K9ux .framer-t2wmkd, .framer-1K9ux .framer-hjcb7l { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-1K9ux .framer-13pdy9i-container { flex: none; height: auto; order: -998; position: relative; width: 100%; }\",\".framer-1K9ux .framer-1xrnwo5 { background: transparent; flex-grow: 1; height: 0px; margin: 0px; margin-bottom: -0px; position: relative; width: 0px; }\",\".framer-1K9ux .framer-1bydokj-container { flex: none; height: auto; left: 50%; order: 1004; pointer-events: none; position: var(--framer-canvas-fixed-position, fixed); top: -1px; transform: translateX(-50%); width: auto; z-index: -1; }\",\".framer-1K9ux .framer-15bho38-container { height: min-content; order: 6; position: relative; width: 100%; }\",\".framer-1K9ux .framer-1vs8rl3 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; order: 1005; overflow: var(--overflow-clip-fallback, clip); padding: 40px 0px 40px 0px; position: relative; width: 100%; }\",\".framer-1K9ux .framer-12tcmx9 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; max-width: 1300px; padding: 0px 20px 0px 20px; position: relative; width: 100%; }\",\".framer-1K9ux .framer-u4xxga { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 80px; height: min-content; justify-content: flex-start; max-width: 760px; padding: 6px 0px 37px 0px; position: relative; width: 100%; z-index: 1; }\",\".framer-1K9ux .framer-1lzot8 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 80px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-1K9ux .framer-gmjv4w, .framer-1K9ux .framer-1l6h2qc, .framer-1K9ux .framer-18y59od { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; padding: 0px; position: relative; width: 200px; }\",\".framer-1K9ux .framer-109m633 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: center; padding: 12px 0px 0px 0px; position: relative; width: min-content; }\",\".framer-1K9ux .framer-lgmcie { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: flex-start; padding: 0px; position: relative; width: min-content; }\",\".framer-1K9ux .framer-1ehtdgz { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-1K9ux .framer-10zoprs, .framer-1K9ux .framer-1dsbk3p, .framer-1K9ux .framer-1sfc75e { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-1K9ux .framer-qwdwia-container { bottom: 0px; flex: none; height: auto; order: 1006; position: sticky; width: 100%; z-index: 8; }\",'[data-layout-template=\"true\"] > #overlay { margin-bottom: -0px; }',...sharedStyle.css,...sharedStyle1.css,...sharedStyle2.css];const mediaQueries={gacYyTBSC:\"(min-width: 810px) and (max-width: 1199.98px)\",rJaUo94Fw:\"(min-width: 1200px)\",UO3GPLR4r:\"(max-width: 809.98px)\"};const humanReadableVariantMap={Desktop:\"rJaUo94Fw\",Phone:\"UO3GPLR4r\",Tablet:\"gacYyTBSC\"};const HTMLStyle=({value})=>{const onCanvas=useIsOnFramerCanvas();if(onCanvas)return null;return /*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:value},\"data-framer-html-style\":\"\"});};const humanReadableEnumMap={\"Phone Menu Open\":\"guj7dLuze\",\"Variant 1\":\"Ketb80Hz2\",\"With Background\":\"pN3d9Jp4j\",Phone:\"MR_ZX3Ec0\"};const getProps=({bannerDeal,bannerHint,height,id,navVariant,showBanner,width,...props})=>{return{...props,Ip2LUPYdE:bannerHint??props.Ip2LUPYdE??\"Add any 3 beats to cart\",mFODpwZlM:showBanner??props.mFODpwZlM??false,pDPEWD4wa:humanReadableEnumMap[navVariant]??navVariant??props.pDPEWD4wa??\"pN3d9Jp4j\",variant:humanReadableVariantMap[props.variant]??props.variant??\"rJaUo94Fw\",vYrmbNQHe:bannerDeal??props.vYrmbNQHe??\"Buy 2, get 1 free\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,mFODpwZlM,vYrmbNQHe,Ip2LUPYdE,pDPEWD4wa,children,...restProps}=getProps(props);const[baseVariant,hydratedBaseVariant]=useHydratedBreakpointVariants(variant,breakpoints,false);const gestureVariant=undefined;const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className,sharedStyle2.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const router=useRouter();const{activeVariantCallback,delay}=useActiveVariantCallback(undefined);const AjaQyrfrFko9la1=({overlay})=>activeVariantCallback(async(...args)=>{overlay.toggle();});const componentScopeId=\"YvpykE1PC\";const onTap1q29jei=({overlay})=>activeVariantCallback(async(...args)=>{overlay.hide();});useCustomCursors({});return /*#__PURE__*/_jsx(GeneratedComponentContext.Provider,{value:{activeVariantId:baseVariant,humanReadableVariantMap,isLayoutTemplate:true,primaryVariantId:\"rJaUo94Fw\",variantClassNames},children:/*#__PURE__*/_jsxs(LayoutGroup,{id:layoutId??componentScopeId,children:[/*#__PURE__*/_jsx(HTMLStyle,{value:\":root body { background: var(--token-af818c5a-9256-48f1-a191-1cb0317c9d8a, rgb(13, 13, 13)); }\"}),/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(scopingClassNames,\"framer-f2lsk\",className),\"data-layout-template\":true,ref:refBinding,style:{...style},children:[mFODpwZlM!==false&&/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"NXLiMySRH\"},implicitPathVariables:undefined},{href:{webPageId:\"NXLiMySRH\"},implicitPathVariables:undefined},{href:{webPageId:\"NXLiMySRH\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{gacYyTBSC:{y:undefined}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:39,width:\"100vw\",y:0,children:/*#__PURE__*/_jsx(ContainerWithOptimizedAppearEffect,{animate:animation,className:\"framer-yzenw4-container\",\"data-framer-appear-id\":\"yzenw4\",initial:animation1,nodeId:\"ASXFbw6dr\",optimized:true,rendersWithMotion:true,scopeId:\"YvpykE1PC\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{gacYyTBSC:{M4kRejEZN:resolvedLinks[1]},UO3GPLR4r:{M4kRejEZN:resolvedLinks[2]}},children:/*#__PURE__*/_jsx(AnnouncementBanner,{AWB2MCX1i:\"var(--token-8a2f9d40-d98b-48eb-9ec1-726a219f94c0)\",height:\"100%\",id:\"ASXFbw6dr\",layoutId:\"ASXFbw6dr\",M4kRejEZN:resolvedLinks[0],OQM9HoF0J:vYrmbNQHe,PnLUV8pyN:Ip2LUPYdE,style:{width:\"100%\"},width:\"100%\"})})})})})}),/*#__PURE__*/_jsx(Overlay,{blockDocumentScrolling:true,dismissWithEsc:true,children:overlay=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{gacYyTBSC:{y:undefined}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:64,width:\"100vw\",y:0,children:/*#__PURE__*/_jsxs(Container,{className:\"framer-1k7q4v-container\",id:`${componentScopeId}-1k7q4v`,nodeId:\"FtmF9j2du\",scopeId:\"YvpykE1PC\",children:[/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{gacYyTBSC:{variant:matchVariant(overlay.visible&&\"guj7dLuze\",overlay.visible?\"guj7dLuze\":\"MR_ZX3Ec0\")},UO3GPLR4r:{variant:matchVariant(overlay.visible&&\"guj7dLuze\",overlay.visible?\"guj7dLuze\":\"MR_ZX3Ec0\")}},children:/*#__PURE__*/_jsx(NavBar,{AjaQyrfrF:AjaQyrfrFko9la1({overlay}),height:\"100%\",id:\"FtmF9j2du\",layoutId:\"FtmF9j2du\",style:{width:\"100%\"},variant:matchVariant(overlay.visible&&\"guj7dLuze\",overlay.visible?\"guj7dLuze\":pDPEWD4wa),width:\"100%\"})}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay.visible&&/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx(InjectSelectionStyle,{triggerId:`${componentScopeId}-1k7q4v`,children:/*#__PURE__*/_jsxs(ResetOuterLinkContext,{children:[/*#__PURE__*/_jsx(motion.div,{animate:{opacity:1,transition:{delay:0,duration:0,ease:[.5,0,.88,.77],type:\"tween\"}},className:cx(scopingClassNames,\"framer-1wjvr04\"),\"data-framer-portal-id\":`${componentScopeId}-1k7q4v`,exit:{opacity:0,transition:{delay:0,duration:0,ease:[.12,.23,.5,1],type:\"tween\"}},initial:{opacity:0},onTap:()=>overlay.hide()},\"dG7eaz2vi\"),/*#__PURE__*/_jsxs(MotionDivWithCloseOverlayOnNavigate937hif,{className:cx(scopingClassNames,\"framer-937hif\"),\"data-framer-name\":\"Mobile Menu\",\"data-framer-portal-id\":`${componentScopeId}-1k7q4v`,children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-b691ru\",\"data-framer-name\":\"Menu Header\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-gmuf6d\",\"data-styles-preset\":\"JwdxshI8r\",dir:\"auto\",children:\"Menu\"})}),className:\"framer-1ru5hoc\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.button,{className:\"framer-ry8i24\",\"data-framer-name\":\"Close Menu\",\"data-highlight\":true,\"data-reset\":\"button\",onTap:onTap1q29jei({overlay}),children:[/*#__PURE__*/_jsx(X,{animated:false,className:\"framer-2soami\",ezTt3ayMo:true,layoutId:\"keXN16Kct\",lschgej4H:true,qxTvv_EBh:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{dir:\"auto\",style:{\"--framer-font-size\":\"1px\",\"--framer-line-height\":\"1em\",\"--framer-text-color\":\"rgb(255, 255, 255)\"},children:\"Close menu\"})}),className:\"framer-ny9pui\",\"data-framer-name\":\"Screen Reader Label\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-198wmrz\",\"data-framer-name\":\"Menu Links\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"32px\",\"--framer-font-weight\":\"800\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--token-a19f57ae-2d0e-47dd-842b-0722f8e18e04)\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"augiA20Il\"},motionChild:true,nodeId:\"U4FOS3T2U\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"HOME\"})})})}),className:\"framer-m5xksd\",\"data-highlight\":true,fonts:[\"FS;Manrope-extrabold\"],onTap:onTap1q29jei({overlay}),verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"32px\",\"--framer-font-weight\":\"800\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--token-a19f57ae-2d0e-47dd-842b-0722f8e18e04)\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"NXLiMySRH\"},motionChild:true,nodeId:\"xHJG1oGmt\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Beats\"})})})}),className:\"framer-ew5sp9\",\"data-highlight\":true,fonts:[\"FS;Manrope-extrabold\"],onTap:onTap1q29jei({overlay}),verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"32px\",\"--framer-font-weight\":\"800\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--token-a19f57ae-2d0e-47dd-842b-0722f8e18e04)\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"PxaKhr2Kx\"},motionChild:true,nodeId:\"TvvHZsCvf\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Sample packs\"})})})}),className:\"framer-mksgjv\",\"data-highlight\":true,fonts:[\"FS;Manrope-extrabold\"],onTap:onTap1q29jei({overlay}),verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"32px\",\"--framer-font-weight\":\"800\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--token-a19f57ae-2d0e-47dd-842b-0722f8e18e04)\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"liSdsozkQ\"},motionChild:true,nodeId:\"GmS9acTwP\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"About\"})})})}),className:\"framer-1puebd8\",\"data-highlight\":true,fonts:[\"FS;Manrope-extrabold\"],onTap:onTap1q29jei({overlay}),verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"32px\",\"--framer-font-weight\":\"800\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--token-a19f57ae-2d0e-47dd-842b-0722f8e18e04)\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"liJ2vBa1_\"},motionChild:true,nodeId:\"bOTSzrJyq\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Services\"})})})}),className:\"framer-1n1emwp\",\"data-highlight\":true,fonts:[\"FS;Manrope-extrabold\"],onTap:onTap1q29jei({overlay}),verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"32px\",\"--framer-font-weight\":\"800\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--token-a19f57ae-2d0e-47dd-842b-0722f8e18e04)\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"X6hZ4fNWZ\"},motionChild:true,nodeId:\"f5UAH_YZj\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Pricing\"})})})}),className:\"framer-1cj66yz\",\"data-highlight\":true,fonts:[\"FS;Manrope-extrabold\"],onTap:onTap1q29jei({overlay}),verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1leHRyYWJvbGQ=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"32px\",\"--framer-font-weight\":\"800\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--token-a19f57ae-2d0e-47dd-842b-0722f8e18e04)\",\"--framer-text-transform\":\"uppercase\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"k4QbJNAOE\"},motionChild:true,nodeId:\"XRr2nnv8p\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Contact\"})})})}),className:\"framer-9dnjgs\",\"data-highlight\":true,fonts:[\"FS;Manrope-extrabold\"],onTap:onTap1q29jei({overlay}),verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1vtf96x\",\"data-framer-name\":\"Menu Footer\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-o821cl\"}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{dir:\"auto\",style:{\"--font-selector\":\"RlM7TWFucm9wZS1tZWRpdW0=\",\"--framer-font-family\":'\"Manrope\", \"Manrope Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--token-1571a8ff-891d-4206-9ecf-63ab75c1b373)\"},children:\"Original beats for artists with something real to say.\"})}),className:\"framer-168s0jq\",fonts:[\"FS;Manrope-medium\"],verticalAlignment:\"top\",withExternalLayout:true})]})]})]})}),getContainer())})})]})})})})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{gacYyTBSC:{y:undefined}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:60,width:\"100vw\",y:64,children:/*#__PURE__*/_jsx(Container,{className:\"framer-13pdy9i-container\",nodeId:\"SwHRlXMDV\",scopeId:\"YvpykE1PC\",children:/*#__PURE__*/_jsx(HeroTicker,{height:\"100%\",id:\"SwHRlXMDV\",layoutId:\"SwHRlXMDV\",style:{width:\"100%\"},variant:matchVariant(\"wIvhp7b7X\"),width:\"100%\"})})})}),children,/*#__PURE__*/_jsx(\"div\",{className:\"framer-1xrnwo5\"}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1bydokj-container\",\"data-code-component-plugin-id\":\"api\",\"data-framer-layout-hint-center-x\":true,isAuthoredByUser:true,isModuleExternal:true,layoutScroll:true,nodeId:\"NJQDr0hxn\",scopeId:\"YvpykE1PC\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{gacYyTBSC:{layout:\"Mobile\"},UO3GPLR4r:{layout:\"Mobile\"}},children:/*#__PURE__*/_jsx(SoundeeSetup,{buttons:{accent:\"var(--token-8a2f9d40-d98b-48eb-9ec1-726a219f94c0, rgba(153, 189, 255, 0.85))\",accentText:\"rgb(255, 255, 255)\",buttonHeight:46,buttonRadius:0,fontButton:{fontFamily:'\"Manrope\", \"Manrope Placeholder\", sans-serif',fontSize:\"14px\",fontStyle:\"normal\",fontWeight:400,letterSpacing:\"0em\",lineHeight:\"1em\"}},cartInset:16,cartTitle:\"Your cart\",cartWidth:400,cmsLink:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:100,width:\"100px\",children:/*#__PURE__*/_jsx(Container,{className:\"framer-15bho38-container\",inComponentSlot:true,nodeId:\"p17dq54af\",rendersWithMotion:true,scopeId:\"YvpykE1PC\",children:/*#__PURE__*/_jsx(CMSLink,{height:\"100%\",id:\"p17dq54af\",layoutId:\"p17dq54af\",width:\"100%\"})})})],dealsTitle:\"Deals\",exitIntent:{askName:true,cta:\"Send me the code\",description:\"Join the list and get a code for 20% off your first order, plus new beats as they drop.\",enabled:true,heading:\"Before you go — 20% off\",phone:\"Required\",remindAfterDays:3,successHeading:\"Check your inbox\",successMessage:\"Your code is on its way. Welcome to the list.\"},height:\"100%\",id:\"NJQDr0hxn\",layout:\"Desktop\",layoutId:\"NJQDr0hxn\",mobilePresentation:\"Drawer\",panel:{border:\"rgba(255, 255, 255, 0.1)\",inputFill:\"rgba(255, 255, 255, 0.02)\",maxWidth:500,padding:26,radius:0,scrim:\"rgba(0, 0, 0, 0.6)\",shadow:\"0px 24px 64px 0px rgba(0, 0, 0, 0.5)\",surface:\"rgb(28, 28, 28)\"},slideTransition:{delay:0,duration:.3,ease:[.44,0,.56,1],type:\"tween\"},storeId:5946,text:{danger:\"rgb(240, 120, 120)\",fontBody:{fontFamily:'\"Manrope\", \"Manrope Placeholder\", sans-serif',fontSize:\"14px\",fontStyle:\"normal\",fontWeight:400,letterSpacing:\"0em\",lineHeight:\"1em\"},fontHeading:{fontFamily:'\"Manrope\", \"Manrope Placeholder\", sans-serif',fontSize:\"20px\",fontStyle:\"normal\",fontWeight:600,letterSpacing:\"0em\",lineHeight:\"1.4em\",textAlign:\"start\"},fontTitle:{fontFamily:'\"Manrope\", \"Manrope Placeholder\", sans-serif',fontSize:\"16px\",fontStyle:\"normal\",fontWeight:500,letterSpacing:\"0em\",lineHeight:\"1em\"},success:\"rgb(140, 220, 160)\",textPrimary:\"rgb(255, 255, 255)\",textSecondary:\"rgba(255, 255, 255, 0.6)\"},transition:{delay:0,duration:.22,ease:[.44,0,.56,1],type:\"tween\"},userId:49268,width:\"100%\"})})})}),/*#__PURE__*/_jsx(MotionFooterWithHideFooterWhileListLoads1vs8rl3,{className:\"framer-1vs8rl3\",\"data-framer-name\":\"Footer\",children:/*#__PURE__*/_jsx(ChildrenCanSuspend,{children:/*#__PURE__*/_jsx(QueryData,{query:query1(),children:(collection,paginationInfo,loadMore)=>{return /*#__PURE__*/_jsx(_Fragment,{children:collection?.map(({AzJrLDded:AzJrLDdedyOp5KiT2n,CAP27IQvG:CAP27IQvGyOp5KiT2n,EVrCUPMyv:EVrCUPMyvyOp5KiT2n,id:idyOp5KiT2n,ob6hH8hmX:ob6hH8hmXyOp5KiT2n,uZ0bFtZt7:uZ0bFtZt7yOp5KiT2n},index)=>{uZ0bFtZt7yOp5KiT2n??=\"\";EVrCUPMyvyOp5KiT2n??=\"\";AzJrLDdedyOp5KiT2n??=\"\";CAP27IQvGyOp5KiT2n??=\"\";ob6hH8hmXyOp5KiT2n??=\"\";return /*#__PURE__*/_jsx(LayoutGroup,{id:`yOp5KiT2n-${idyOp5KiT2n}`,children:/*#__PURE__*/_jsx(PathVariablesContext.Provider,{value:{ob6hH8hmX:ob6hH8hmXyOp5KiT2n},children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-12tcmx9\",\"data-framer-name\":\"Footer Inner\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-8jenmx\",\"data-framer-name\":\"Rule\"}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-u4xxga\",\"data-framer-name\":\"Footer Main\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1lzot8\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-gmjv4w\",\"data-framer-name\":\"Explore\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-gmuf6d\",\"data-styles-preset\":\"JwdxshI8r\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:\"Explore\"})}),className:\"framer-128poz3\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-1wuy675\",\"data-styles-preset\":\"nTC8uzm37\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"NXLiMySRH\"},motionChild:true,nodeId:\"qSQMuLOfr\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Beats\"})})})}),className:\"framer-ux7eca\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-1wuy675\",\"data-styles-preset\":\"nTC8uzm37\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"X6hZ4fNWZ\"},motionChild:true,nodeId:\"eTnibXcNl\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Licensing\"})})})}),className:\"framer-v4mgov\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-1wuy675\",\"data-styles-preset\":\"nTC8uzm37\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"liSdsozkQ\"},motionChild:true,nodeId:\"LVkUu_Mia\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"About\"})})})}),className:\"framer-iudj3x\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1l6h2qc\",\"data-framer-name\":\"Legal\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-gmuf6d\",\"data-styles-preset\":\"JwdxshI8r\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:\"LEGAL\"})}),className:\"framer-1d51trq\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-1wuy675\",\"data-styles-preset\":\"nTC8uzm37\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"ZjgEbka_s\"},motionChild:true,nodeId:\"Q8DzZRZ0O\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Terms\"})})})}),className:\"framer-96z48o\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-1wuy675\",\"data-styles-preset\":\"nTC8uzm37\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"mebEOldQm\"},motionChild:true,nodeId:\"Tqcf7JWMY\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Privacy\"})})})}),className:\"framer-sfmg5t\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-1wuy675\",\"data-styles-preset\":\"nTC8uzm37\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"k4QbJNAOE\"},motionChild:true,nodeId:\"dvxQbozJ9\",openInNewTab:false,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Contact\"})})})}),className:\"framer-j98m4s\",\"data-framer-name\":\"Contact\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-18y59od\",\"data-framer-name\":\"Connect\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-gmuf6d\",\"data-styles-preset\":\"JwdxshI8r\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:\"Connect\"})}),className:\"framer-19dm8yw\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-1wuy675\",\"data-styles-preset\":\"nTC8uzm37\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:/*#__PURE__*/_jsx(Link,{href:uZ0bFtZt7yOp5KiT2n,motionChild:true,nodeId:\"LeMGeYUZl\",openInNewTab:true,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Instagram\"})})})}),className:\"framer-603260\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-1wuy675\",\"data-styles-preset\":\"nTC8uzm37\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:/*#__PURE__*/_jsx(Link,{href:EVrCUPMyvyOp5KiT2n,motionChild:true,nodeId:\"RC6MuMlpY\",openInNewTab:true,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"YouTube\"})})})}),className:\"framer-t2wmkd\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-1wuy675\",\"data-styles-preset\":\"nTC8uzm37\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:/*#__PURE__*/_jsx(Link,{href:AzJrLDdedyOp5KiT2n,motionChild:true,nodeId:\"QZ8GnC2HK\",openInNewTab:true,relValues:[],scopeId:\"YvpykE1PC\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-17ti6nb\",\"data-styles-preset\":\"A93_lH1lO\",children:\"Soundee\"})})})}),className:\"framer-hjcb7l\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true})]})]})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-7ilngq\",\"data-framer-name\":\"Rule\"}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-109m633\",\"data-framer-name\":\"Footer Bottom\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-lgmcie\",\"data-framer-name\":\"Copyright\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ehtdgz\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-gmuf6d\",\"data-styles-preset\":\"JwdxshI8r\",dir:\"auto\",children:\"\\xa9\"})}),className:\"framer-10zoprs\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichTextWithYear1dsbk3p,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-gmuf6d\",\"data-styles-preset\":\"JwdxshI8r\",dir:\"auto\",children:\"2026\"})}),className:\"framer-1dsbk3p\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-gmuf6d\",\"data-styles-preset\":\"JwdxshI8r\",dir:\"auto\",style:{\"--framer-text-alignment\":\"start\"},children:\"Content\"})}),className:\"framer-1sfc75e\",fonts:[\"Inter\"],text:CAP27IQvGyOp5KiT2n,verticalAlignment:\"top\",withExternalLayout:true})]})})]})})},idyOp5KiT2n);})});}})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-qwdwia-container\",\"data-code-component-plugin-id\":\"api\",isAuthoredByUser:true,isModuleExternal:true,nodeId:\"nQ1apv1Lk\",scopeId:\"YvpykE1PC\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{gacYyTBSC:{layout:\"Mobile\"},UO3GPLR4r:{layout:\"Mobile\",showTimes:false}},children:/*#__PURE__*/_jsx(SoundeePlayerBar,{bar:{blur:72,border:\"var(--token-70799936-6812-4a27-acb7-7b24ee920095)\",fill:\"var(--token-e951d155-25d3-4c21-b74e-51a2c6d0aaf0, rgba(10, 10, 10, 0.9))\",maxWidth:1300,paddingX:20,paddingY:20,radius:0},controls:{accent:\"var(--token-8a2f9d40-d98b-48eb-9ec1-726a219f94c0, rgb(139, 74, 82))\",accentText:\"var(--token-f6f0d308-65b3-469f-8dc8-31f355fea915, rgb(255, 255, 255))\",controlSize:36,playSize:44},fullscreen:true,height:\"100%\",id:\"nQ1apv1Lk\",layout:\"Auto\",layoutId:\"nQ1apv1Lk\",metaTypes:[\"collaborators\",\"bpm\",\"artists\",\"genre\",\"displayName\"],previewFullscreen:false,previewTrack:true,seekMode:\"Waveform\",showCart:true,showFree:true,showLike:true,showMenu:true,showRepeat:true,showShuffle:true,showTimes:true,showVolume:true,style:{width:\"100%\"},text:{fontButton:{fontFamily:'\"Manrope\", \"Manrope Placeholder\", sans-serif',fontSize:\"14px\",fontStyle:\"normal\",fontWeight:600,letterSpacing:\"0em\",lineHeight:\"1em\"},fontMeta:{fontFamily:'\"Manrope\", \"Manrope Placeholder\", sans-serif',fontSize:\"12px\",fontStyle:\"normal\",fontWeight:400,letterSpacing:\"0em\",lineHeight:\"1.4em\"},fontTitle:{fontFamily:'\"Manrope\", \"Manrope Placeholder\", sans-serif',fontSize:\"14px\",fontStyle:\"normal\",fontWeight:500,letterSpacing:\"0em\",lineHeight:\"1.4em\"},textPrimary:\"var(--token-62d1461a-0275-41dd-a2fa-7c4a23f94b68)\",textSecondary:\"var(--token-51cab826-c359-458e-a86d-580648deadcc)\"},wave:{barGap:2,barRadius:0,barWidth:2,durationColor:\"var(--token-51cab826-c359-458e-a86d-580648deadcc)\",durationFont:{fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',fontSize:\"12px\",fontStyle:\"normal\",fontWeight:400,letterSpacing:\"0em\",lineHeight:\"1.2em\"},durationShow:true,gutter:\"var(--token-a83b5237-7f8c-4b6b-875b-f11d2e86f1c6)\",height:20,hover:\"var(--token-8a2f9d40-d98b-48eb-9ec1-726a219f94c0)\",intent:\"var(--token-8a2f9d40-d98b-48eb-9ec1-726a219f94c0)\",minBarHeight:2,mirror:false,mode:\"bars\",playhead:true,playheadColor:\"var(--token-bf10d17a-46b7-4aa3-bd50-095474c36323)\",playheadWidth:2,progress:\"var(--token-8a2f9d40-d98b-48eb-9ec1-726a219f94c0)\",tooltipBackground:\"var(--token-cda5730d-db41-4e43-8cb3-45ef68e3e2b8)\",tooltipPlacement:\"Above\",tooltipText:\"var(--token-62d1461a-0275-41dd-a2fa-7c4a23f94b68)\",tooltipVisible:\"Hover\",transition:\"morph\"},width:\"100%\"})})})})]}),/*#__PURE__*/_jsx(\"div\",{id:\"template-overlay\"})]})});});const css=target=>{const isStaticRenderer=target===RenderTarget.canvas||target===RenderTarget.export;if(!isStaticRenderer){return[...rules,...breakpointKeys.map(key=>{const query2=mediaQueries[key];return`@media ${query2} { ${breakpointRules[key].join(\" \")} }`;})];}return[...rules,...breakpointKeys.flatMap(key=>{const selector=selectors[key];return breakpointRules[key].map(rule=>`${selector} {${rule}}`);})];};/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 1000\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"gacYyTBSC\":{\"layout\":[\"fixed\",\"fixed\"]},\"UO3GPLR4r\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"mFODpwZlM\":\"showBanner\",\"vYrmbNQHe\":\"bannerDeal\",\"Ip2LUPYdE\":\"bannerHint\",\"pDPEWD4wa\":\"navVariant\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerHitTargets {\"rJaUo94Fw\":[\".framer-yzenw4-container\",\".framer-1k7q4v-container\",\".framer-13pdy9i-container\",\".framer-1bydokj-container\",\".framer-1vs8rl3\",\".framer-qwdwia-container\"],\"gacYyTBSC\":[\".framer-yzenw4-container\",\".framer-1k7q4v-container\",\".framer-13pdy9i-container\",\".framer-1bydokj-container\",\".framer-1vs8rl3\",\".framer-qwdwia-container\"],\"UO3GPLR4r\":[\".framer-yzenw4-container\",\".framer-1k7q4v-container\",\".framer-13pdy9i-container\",\".framer-1bydokj-container\",\".framer-1vs8rl3\",\".framer-qwdwia-container\"]}\n * @framerBreakpoints {\"rJaUo94Fw\":{\"min\":1200,\"canvasClassName\":\"framer-f2lsk-override\",\"minHeight\":1000,\"name\":\"Desktop\",\"width\":1200,\"rootFontSize\":16},\"gacYyTBSC\":{\"min\":810,\"max\":1199,\"canvasClassName\":\"framer-1if56t2-override\",\"minHeight\":1000,\"viewportHeight\":1080,\"name\":\"Tablet\",\"width\":810,\"rootFontSize\":16},\"UO3GPLR4r\":{\"max\":809,\"canvasClassName\":\"framer-ne2tec-override\",\"minHeight\":1000,\"viewportHeight\":844,\"name\":\"Phone\",\"width\":390,\"rootFontSize\":16}}\n * @framerDefaultVariant rJaUo94Fw\n * @framerLayoutTemplate true\n */const FramerYvpykE1PC=withCSS(Component,css,\"framer-1K9ux\");export default FramerYvpykE1PC;FramerYvpykE1PC.displayName=\"Template\";FramerYvpykE1PC.defaultProps={height:1e3,width:1200};addPropertyControls(FramerYvpykE1PC,{mFODpwZlM:{defaultValue:false,title:\"Show Banner\",type:ControlType.Boolean},vYrmbNQHe:{defaultValue:\"Buy 2, get 1 free\",title:\"Banner Deal\",type:ControlType.String},Ip2LUPYdE:{defaultValue:\"Add any 3 beats to cart\",title:\"Banner Hint\",type:ControlType.String},pDPEWD4wa:NavBarControls?.[\"variant\"]&&{...NavBarControls[\"variant\"],defaultValue:\"pN3d9Jp4j\",description:undefined,hidden:undefined,title:\"Nav Variant\"}});addFonts(FramerYvpykE1PC,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"},{cssFamilyName:\"Manrope\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Manrope\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/7EWHG4AMROQSXDCQTDPGBVASATB7CED2/TJSQTK5FHJ2MYKML5IXF2G6YTGFJLTYL/K4ZMLVLHYIFVTTTWGVOTVGOFUUX7NVGI.woff2\",weight:\"800\"},{cssFamilyName:\"Manrope\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Manrope\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/BNWG6MUI4RTC6WEND2VPDH4MHMIVU3XZ/R5YXY5FMVG6PXU36GNEEA24MIPMEPGSM/CIM4KQCLZSMMLWPVH25IDDSTY4ENPHEY.woff2\",weight:\"500\"},{cssFamilyName:\"Manrope\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Manrope\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/6U2SGH566NSNERG6RGEV3DSNEK7DL2RF/JRDYRKMSAW2H35IWEQIPL67HAJQ35MG5/JNU3GNMUBPWW6V6JTED3S27XL5HN7NM5.woff2\",weight:\"600\"},{cssFamilyName:\"Manrope\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Manrope\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/2TYFCBHUANEXS6QGR5EQDUNAFH6LSWM3/AYNOU3VEA4LRTDNKJQUFNVNUTYSGOUOP/UXO4O7K2G3HI3D2VKD7UXVJVJD26P4BQ.woff2\",weight:\"400\"}]},...AnnouncementBannerFonts,...NavBarFonts,...XFonts,...HeroTickerFonts,...CMSLinkFonts,...SoundeeSetupFonts,...SoundeePlayerBarFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts),...getFontsFromSharedStyle(sharedStyle2.fonts)],{supportsExplicitInterCodegen:true});FramerYvpykE1PC.loader={load:(props,context)=>{const locale=context.locale;const priority=context.priority;const queryCacheEntry=queryCache.get(query1(),locale,priority);return runTasksWithYield([()=>queryCacheEntry.preload(),()=>forwardLoader(AnnouncementBanner,{},context),()=>forwardLoader(NavBar,{},context),()=>forwardLoader(HeroTicker,{},context),()=>forwardLoader(CMSLink,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerYvpykE1PC\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"mFODpwZlM\\\":\\\"showBanner\\\",\\\"vYrmbNQHe\\\":\\\"bannerDeal\\\",\\\"Ip2LUPYdE\\\":\\\"bannerHint\\\",\\\"pDPEWD4wa\\\":\\\"navVariant\\\"}\",\"framerBreakpoints\":\"{\\\"rJaUo94Fw\\\":{\\\"min\\\":1200,\\\"canvasClassName\\\":\\\"framer-f2lsk-override\\\",\\\"minHeight\\\":1000,\\\"name\\\":\\\"Desktop\\\",\\\"width\\\":1200,\\\"rootFontSize\\\":16},\\\"gacYyTBSC\\\":{\\\"min\\\":810,\\\"max\\\":1199,\\\"canvasClassName\\\":\\\"framer-1if56t2-override\\\",\\\"minHeight\\\":1000,\\\"viewportHeight\\\":1080,\\\"name\\\":\\\"Tablet\\\",\\\"width\\\":810,\\\"rootFontSize\\\":16},\\\"UO3GPLR4r\\\":{\\\"max\\\":809,\\\"canvasClassName\\\":\\\"framer-ne2tec-override\\\",\\\"minHeight\\\":1000,\\\"viewportHeight\\\":844,\\\"name\\\":\\\"Phone\\\",\\\"width\\\":390,\\\"rootFontSize\\\":16}}\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"gacYyTBSC\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"UO3GPLR4r\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerColorSyntax\":\"true\",\"framerIntrinsicHeight\":\"1000\",\"framerDisplayContentsDiv\":\"false\",\"framerLayoutTemplate\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerDefaultVariant\":\"rJaUo94Fw\",\"framerHitTargets\":\"{\\\"rJaUo94Fw\\\":[\\\".framer-yzenw4-container\\\",\\\".framer-1k7q4v-container\\\",\\\".framer-13pdy9i-container\\\",\\\".framer-1bydokj-container\\\",\\\".framer-1vs8rl3\\\",\\\".framer-qwdwia-container\\\"],\\\"gacYyTBSC\\\":[\\\".framer-yzenw4-container\\\",\\\".framer-1k7q4v-container\\\",\\\".framer-13pdy9i-container\\\",\\\".framer-1bydokj-container\\\",\\\".framer-1vs8rl3\\\",\\\".framer-qwdwia-container\\\"],\\\"UO3GPLR4r\\\":[\\\".framer-yzenw4-container\\\",\\\".framer-1k7q4v-container\\\",\\\".framer-13pdy9i-container\\\",\\\".framer-1bydokj-container\\\",\\\".framer-1vs8rl3\\\",\\\".framer-qwdwia-container\\\"]}\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","\r\n\t\timport * as Framer from \"framer\";\r\nimport * as React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport * as ReactDOM from \"react-dom/client\";\r\nimport Template1 from \"https://framerusercontent.com/modules/ytledAAobUmg2vhJsMKA/gjOtqCTA3J7jrkrRAgtG/YvpykE1PC.js\";\r\n\r\n\t\tconst routes = {augiA20Il: {elements: {rXj3pmA_m: \"hero\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/8IKGHO0kNoi1C9VvxMRr/sEcfXrmS30xf4zirIq5w/augiA20Il.js\")), path: \"/\"}, NXLiMySRH: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/74aX3m5c2UwQOgOQLhve/e7RIZBgCcFe5kZPUtA9M/NXLiMySRH.js\")), path: \"/beats\"}, PxaKhr2Kx: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/bo6ht83oCkL5XE8oMOmw/wXIBidhs3z1L0iTCoWfq/PxaKhr2Kx.js\")), path: \"/sample-packs\"}, liJ2vBa1_: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/8a80gb48lqEnDqzv5otF/t1kYPHunNd6wSbNQE7Nj/liJ2vBa1_.js\")), path: \"/services\"}, liSdsozkQ: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/gkrEQ4zYnzVr4QEKy6N8/BjGB2XLuA0DHoXvnX8g5/liSdsozkQ.js\")), path: \"/about\"}, k4QbJNAOE: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/umgs1tCCt5TJ5FyqT3Ep/4khoKecPYdnN5tBCMCei/k4QbJNAOE.js\")), path: \"/contact\"}, X6hZ4fNWZ: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/5eREr4JTrCSXyIZRVtji/SrlhXhoiCqMbfjug7bfJ/X6hZ4fNWZ.js\")), path: \"/pricing\"}, ZjgEbka_s: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/1Uv6cUv9XlddAdlxLbru/z1cv6bIpAxcZBg1kjr8x/ZjgEbka_s.js\")), path: \"/terms\"}, mebEOldQm: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/3dRSp8ukiITa78L5zr8z/APSNhCGU8IQbjHas5Xbv/mebEOldQm.js\")), path: \"/privacy\"}, RireAMNf3: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/PEBZbWmGMb2UCWqfEBrt/IvwSMzlkkHCIuwO5PT0I/RireAMNf3.js\")), path: \"/services/custom-beat\"}, ILWUxMSL_: {collectionId: \"NlhflDO1T\", elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/ZSDWZFaOkCbdv7lyurlS/ThI8lBjuU1FZOnxi2BYD/ILWUxMSL_.js\")), path: \"/products/:lU1KpGjrT\"}}\r\n\r\n\t\tconst locales = [{code: \"en-US\", id: \"default\", name: \"English\", slug: \"\", textDirection: \"ltr\"}]\r\n\t\tconst collectionUtils = {NlhflDO1T: async () => (await import(\"https://framerusercontent.com/modules/Wi37llmvuy4uwkClVGPY/k4tI9KIbaUks3snc47Kx/NlhflDO1T.js\"))?.[\"utils\"]}\r\n\t\tconst serverDatabaseClient = undefined\r\n\t\tconst framerSiteId = \"afcd456698165acadff7e9e6fb7111175f15745a881ce200855c7e32ce81759f\"\r\n\t\tfunction Template({webPageId, children, style, ...rest}) {const props1 = {Ip2LUPYdE: \"Add any 3 beats to cart\", mFODpwZlM: true, pDPEWD4wa: \"Ketb80Hz2\", vYrmbNQHe: \"Buy 2, get 1 free\"}\r\nconst props2 = {...props1, pDPEWD4wa: \"pN3d9Jp4j\"}\r\nconst props3 = {...props1, mFODpwZlM: false, pDPEWD4wa: \"pN3d9Jp4j\"}\r\nconst templateProps = {augiA20Il: props1, ILWUxMSL_: props3, k4QbJNAOE: props3, liJ2vBa1_: props3, liSdsozkQ: props3, mebEOldQm: props3, NXLiMySRH: props2, PxaKhr2Kx: props3, RireAMNf3: props3, X6hZ4fNWZ: props3, ZjgEbka_s: props3}\r\nconst props = templateProps[webPageId] ?? {}\r\nswitch (webPageId) {case \"augiA20Il\":\r\ncase \"NXLiMySRH\":\r\ncase \"PxaKhr2Kx\":\r\ncase \"liJ2vBa1_\":\r\ncase \"liSdsozkQ\":\r\ncase \"k4QbJNAOE\":\r\ncase \"X6hZ4fNWZ\":\r\ncase \"ZjgEbka_s\":\r\ncase \"mebEOldQm\":\r\ncase \"RireAMNf3\":\r\ncase \"ILWUxMSL_\":\r\nreturn React.createElement(Template1, {...props, key: \"Template1\", style}, children(true));\r\ndefault: { return children(false) }}}\r\nexport function getLayoutTemplateBreakpoints(routeId) {switch (routeId) {case \"augiA20Il\":\r\ncase \"NXLiMySRH\":\r\ncase \"PxaKhr2Kx\":\r\ncase \"liJ2vBa1_\":\r\ncase \"liSdsozkQ\":\r\ncase \"k4QbJNAOE\":\r\ncase \"X6hZ4fNWZ\":\r\ncase \"ZjgEbka_s\":\r\ncase \"mebEOldQm\":\r\ncase \"RireAMNf3\":\r\ncase \"ILWUxMSL_\":\r\nreturn [{hash: \"f2lsk\", mediaQuery: \"(min-width: 1200px)\"}, {hash: \"1if56t2\", mediaQuery: \"(min-width: 810px) and (max-width: 1199.98px)\"}, {hash: \"ne2tec\", mediaQuery: \"(max-width: 809.98px)\"}]\r\ndefault: { return undefined }}}\r\n\r\n\t\tconst isBrowser = typeof document !== \"undefined\"\r\n\t\tconst isBot = isBrowser && /bot|-google|google-|yandex|ia_archiver|crawl|spider/iu.test(navigator.userAgent)\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\texport async function getPageRoot({\r\n\t\t\trouteId,\r\n\t\t\tpathVariables,\r\n\t\t\tcanonicalPathVariables,\r\n\t\t\tlocaleId,\r\n\t\t\tcollectionItemId,\r\n\t\t\tcontentLocaleId,\r\n\t\t\tshouldResolveInitialRouteContentState = false,\r\n\t\t}) {\r\n\t\t\tconst rootPreload = routes[routeId].page.preload()\r\n\r\n\t\t\t\r\n\r\n\t\t\tFramer.setLibraryFeatures({checkServerSideRouter: true, disableCustomCode: false, disableHoverOnMobile: false, editorBarDisableFrameAncestorsSecurity: false, motionDivToDiv: false, onPageRichTextBlockSelection: true, scrollRestoration: true, synchronousNavigationOnDesktop: false, yieldOnTap: false})\r\n\t\t\tFramer.setCurrentSiteId(framerSiteId)\r\n\r\n\t\t\tconst content = React.createElement(\r\n\t\t\t\tFramer.PageRoot,\r\n\t\t\t\t{\r\n\t\t\t\t\tisWebsite: true,\r\n\t\t\t\t\tenvironment: \"site\",\r\n\t\t\t\t\trouteId,\r\n\t\t\t\t\tpathVariables,\r\n\t\t\t\t\tcanonicalPathVariables,\r\n\t\t\t\t\troutes,\r\n\t\t\t\t\tcollectionUtils,\r\n\t\t\t\t\tserverDatabaseClient,\r\n\t\t\t\t\tframerSiteId,\r\n\t\t\t\t\tnotFoundPage: Framer.lazy(() => import(\"__framer-not-found-page\")),\r\n\t\t\t\t\tisReducedMotion: undefined,\r\n\t\t\t\t\tlocaleId,\r\n\t\t\t\t\tlocales,\r\n\t\t\t\t\tpreserveQueryParams: false,\r\n\t\t\t\t\tsiteCanonicalURL: \"https://dionso.com\",\r\n\t\t\t\t\tEditorBar: \r\n\t\t\ttypeof window !== \"undefined\" ? (() => {\r\n\t\t\t\tif (isBot) {\r\n\t\t\t\t\tconsole.log(\"[Framer On-Page Editing] Unavailable because navigator is bot\")\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn Framer.lazy(async () => {\r\n\t\t\t\t\tconst dependencies = {\r\n\t\t\t\t\t\t__version: 3,\r\n\t\t\t\t\t\tframer: {\r\n\t\t\t\t\t\t\tuseCurrentRoute: Framer.useCurrentRoute,\r\n\t\t\t\t\t\t\tuseLocaleInfo: Framer.useLocaleInfo,\r\n\t\t\t\t\t\t\tuseRouter: Framer.useRouter,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\treact: {\r\n\t\t\t\t\t\t\tcreateElement: React.createElement,\r\n\t\t\t\t\t\t\tFragment: React.Fragment,\r\n\t\t\t\t\t\t\tmemo: React.memo,\r\n\t\t\t\t\t\t\tuseCallback: React.useCallback,\r\n\t\t\t\t\t\t\tuseEffect: React.useEffect,\r\n\t\t\t\t\t\t\tuseRef: React.useRef,\r\n\t\t\t\t\t\t\tuseState: React.useState,\r\n\t\t\t\t\t\t\tuseLayoutEffect: React.useLayoutEffect,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"react-dom\": { createPortal },\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twindow.__framer_editorBarDependencies = dependencies\r\n\r\n\t\t\t\t\tconst { createEditorBar } = await import(\"https://framer.com/edit/init.mjs\")\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdefault: createEditorBar(),\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t})() : undefined\r\n\t\t,\r\n\t\t\t\t\tadaptLayoutToTextDirection: true,\r\n\t\t\t\t\tLayoutTemplate: Template,\r\n\t\t\t\t\tloadSnippetsModule: new Framer.LazyValue(() => import(\"https://framerusercontent.com/modules/pZuiBz6InUDYJHCTDvVS/vPPqYSY71iPRwkRJusE2/snippets.js\")),\r\n\t\t\t\t\tinitialCollectionItemId: collectionItemId,\r\n\t\t\t\t\tinitialContentLocaleIdOverride: contentLocaleId,\r\n\t\t\t\t}\r\n\t\t\t)\r\n\r\n\t\t\tconst contentWithGracefullyDegradingErrorBoundary = React.createElement(Framer.GracefullyDegradingErrorBoundary, {\r\n\t\t\t\tchildren: content\r\n\t\t\t})\r\n\r\n\t\t\t\r\n\t\t\tconst page = React.createElement(Framer.PageEffectsProvider, {\r\n\t\t\t\tchildren: contentWithGracefullyDegradingErrorBoundary,\r\n\t\t\t\tvalue: {global: {enter: {opacity: 0, rotate: 0, rotate3d: false, rotateX: 0, rotateY: 0, scale: 1, transition: {damping: 30, delay: 0, duration: 0.2, ease: [0.27, 0, 0.51, 1], mass: 1, stiffness: 400, type: \"tween\"}, x: \"0px\", y: \"0px\"}}, routes: {}}\r\n\t\t\t})\r\n\r\n\t\t\t// We don't want the initial render to immediately have to suspend.\r\n\t\t\tawait rootPreload\r\n\t\t\treturn page\r\n\t\t}\r\n\t\r\n\r\n\t\tif (isBrowser) {\r\n\t\t\t// Note: HTTPArchive also uses this function to detect Framer sites; see https://github.com/HTTPArchive/wappalyzer/blob/371a17583f74fd9171b9077f59a5619b24062891/src/technologies/f.json#L1722-L1748.\r\n\t\t\twindow.__framer_importFromPackage = (packageAndFilename, exportIdentifier) => () => {\r\n\t\t\t\treturn React.createElement(Framer.ErrorPlaceholder, { error: 'Package component not supported: \"' + exportIdentifier + '\" in \"' + packageAndFilename + '\"' })\r\n\t\t\t}\r\n\r\n\t\t\twindow.__framer_events = window.__framer_events || []\r\n\r\n\t\t\t// Initialize lazy modules cache for hydration\r\n\t\t\tFramer.initLazyModulesCache()\r\n\r\n\t\t\tconst container = document.getElementById(\"main\")\r\n\t\t\t// We know that #main is parsed before this script, so we don't need to wait for DOMContentLoaded or similar events.\r\n\t\t\tif (\"framerHydrateV2\" in container.dataset) main(true, container)\r\n\t\t\telse main(false, container)\r\n\t\t}\r\n\r\n\t\tfunction track() {\r\n\t\t\tif (!isBrowser) return\r\n\t\t\twindow.__framer_events.push(arguments)\r\n\t\t}\r\n\r\n\t\tasync function main(shouldHydrate, container) {\r\n\t\t\tfunction handleError(error, errorInfo, recoverable = true) {\r\n\t\t\t\tif (error.caught || window.__framer_hadFatalError) return // we already logged it\r\n\r\n\t\t\t\tconst componentStack = errorInfo?.componentStack\r\n\t\t\t\tif (recoverable) {\r\n\t\t\t\t\tconsole.warn(\"Caught a recoverable error. The site is still functional, but might have some UI flickering or degraded page load performance. If you are the author of this website, update external components and check recently added custom code or code overrides to fix the following server/client mismatches:\\n\", error, componentStack)\r\n\t\t\t\t\t// we only want to collect 1%, because this can be quite noisy (floods the data pipeline)\r\n\t\t\t\t\tif (Math.random() > 0.01) return\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error(\"Caught a fatal error. Please report the following to the Framer team via https://www.framer.com/contact/:\\n\", error, componentStack)\r\n\t\t\t\t}\r\n\t\t\t\ttrack(recoverable ? \"published_site_load_recoverable_error\" : \"published_site_load_error\", {\r\n\t\t\t\t\tmessage: String(error),\r\n\t\t\t\t\tcomponentStack, // componentStack is more useful\r\n\t\t\t\t\tstack: componentStack ? undefined : error instanceof Error && typeof error.stack === \"string\" ? error.stack : null,\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tlet routeId, localeId, contentLocaleId, pathVariables, canonicalPathVariables, breakpoints, routeData\r\n\t\t\t\tif (shouldHydrate) {\r\n\t\t\t\t\trouteData = JSON.parse(container.dataset[\"framerHydrateV2\"])\r\n\t\t\t\t\trouteId = routeData.routeId\r\n\t\t\t\t\tlocaleId = routeData.localeId\r\n\t\t\t\t\tcontentLocaleId = routeData.contentLocaleId\r\n\t\t\t\t\tpathVariables = routeData.pathVariables\r\n\t\t\t\t\tcanonicalPathVariables = routeData.canonicalPathVariables\r\n\t\t\t\t\tbreakpoints = routeData.breakpoints\r\n\r\n\t\t\t\t\trouteId = Framer.patchRoutesForABTesting(routes, routeId) // Prioritize optimized route id to avoid flickering in browsers not supporting the server-timing header (Safari older than 16.4)\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\r\n\t\t\t\t\tFramer.patchRoutesForABTesting(routes, undefined) // This must happen before inferInitialRouteFromPath\r\n\t\t\t\t\tconst serverRoute = performance.getEntriesByType(\"navigation\")[0]?.serverTiming?.find(e => e.name === \"route\")?.description\r\n\t\t\t\t\tif (serverRoute) {\r\n\t\t\t\t\t\tconst routeData = new URLSearchParams(serverRoute)\r\n\t\t\t\t\t\trouteId = routeData.get(\"id\")\r\n\t\t\t\t\t\tlocaleId = routeData.get(\"locale\")\r\n\t\t\t\t\t\tfor (const [key, value] of routeData.entries()) {\r\n\t\t\t\t\t\t\tif (!key.startsWith(\"var.\")) continue\r\n\t\t\t\t\t\t\tpathVariables ??= {}\r\n\t\t\t\t\t\t\tpathVariables[key.slice(4)] = value\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!routeId || !localeId) {\r\n\t\t\t\t\t\tconst routeData = Framer.inferInitialRouteFromPath(routes, decodeURIComponent(location.pathname), true, locales)\r\n\t\t\t\t\t\trouteId = routeData.routeId\r\n\t\t\t\t\t\tlocaleId = routeData.localeId\r\n\t\t\t\t\t\tpathVariables = routeData.pathVariables\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst pagePromise = getPageRoot({\r\n\t\t\t\t\trouteId,\r\n\t\t\t\t\tlocaleId,\r\n\t\t\t\t\tcontentLocaleId,\r\n\t\t\t\t\tpathVariables,\r\n\t\t\t\t\tcanonicalPathVariables,\r\n\t\t\t\t\tcollectionItemId: shouldHydrate ? routeData?.collectionItemId : undefined,\r\n\t\t\t\t\tshouldResolveInitialRouteContentState: !shouldHydrate,\r\n\t\t\t\t})\r\n\r\n\t\t\t\t\r\nif (typeof window !== \"undefined\") {\r\n\tvoid (async () => {\r\n\t\tconst route = routes[routeId]\r\n\r\n\t\tconst defaultLocaleId = \"default\"\r\n\t\tconst framerLocale = locales.find(({ id }) => !localeId ? id === defaultLocaleId : id === localeId).code\r\n\r\n\t\t\r\n\t\tlet collectionItemId = routeData?.collectionItemId ?? null\r\n\t\tif (collectionItemId === null && route?.collectionId && collectionUtils) {\r\n\t\t\tconst utils = await collectionUtils[route.collectionId]?.()\r\n\t\t\tconst [slug] = Object.values(pathVariables)\r\n\t\t\tif (utils && typeof slug === \"string\") {\r\n\t\t\t\tcollectionItemId = (await utils.getRecordIdBySlug(slug, framerLocale || undefined)) ?? null\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\r\n\t\tconst resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions()\r\n\t\tconst timezone = resolvedDateTimeOptions.timeZone\r\n\t\tconst locale = resolvedDateTimeOptions.locale\r\n\r\n\t\t// wait for the page to be activated before sending the pageview event\r\n\t\t// https://developer.chrome.com/docs/web-platform/prerender-pages#impact-on-analytics\r\n\t\tawait new Promise((resolve) => {\r\n\t\t\tif (document.prerendering) {\r\n\t\t\t\tdocument.addEventListener(\"prerenderingchange\", resolve, { once: true })\r\n\t\t\t} else {\r\n\t\t\t\tresolve()\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\twindow.__framer_events.push([\r\n\t\t\t\"published_site_pageview\",\r\n\t\t\t{\r\n\t\t\t\tframerSiteId,\r\n\t\t\t\tversion: 2,\r\n\t\t\t\troutePath: route?.path || \"/\",\r\n\t\t\t\tcollectionItemId,\r\n\t\t\t\tframerLocale: framerLocale || null,\r\n\t\t\t\twebPageId: route?.abTestingVariantId ?? routeId,\r\n\t\t\t\tabTestId: route?.abTestId,\r\n\t\t\t\treferrer: document.referrer || null,\r\n\t\t\t\turl: window.location.href,\r\n\t\t\t\thostname: window.location.hostname || null,\r\n\t\t\t\tpathname: window.location.pathname || null,\r\n\t\t\t\thash: window.location.hash || null,\r\n\t\t\t\tsearch: window.location.search || null,\r\n\t\t\t\ttimezone,\r\n\t\t\t\tlocale,\r\n\t\t\t},\r\n\t\t\t\"eager\"\r\n\t\t])\r\n\r\n\t\t// Yield to avoid blocking the main thread with the user code\r\n\t\tawait Framer.yieldToMain({ priority: \"background\", ensureContinueBeforeUnload: true, continueAfter: \"paint\" })\r\n\r\n\t\tdocument.dispatchEvent(new CustomEvent(\"framer:pageview\", {\r\n\t\t\tdetail: { framerLocale: framerLocale || null }\r\n\t\t}))\r\n\t})()\r\n}\r\n\r\n\r\n\t\t\t\tconst page = await pagePromise\r\n\t\t\t\tif (shouldHydrate) {\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tFramer.withPerformanceMarks(\"framer-rewrite-breakpoints\", () => {\r\n\t\t\t\t\t\tFramer.removeHiddenBreakpointLayersV2(breakpoints)\r\n\t\t\t\t\t\twindow.__framer_onRewriteBreakpoints?.(breakpoints)\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tconst startTransition = isBot ? cb => cb() : React.startTransition\r\n\t\t\t\t\tstartTransition(() => {\r\n\t\t\t\t\t\tFramer.markHydrationStart()\r\n\t\t\t\t\t\tFramer.turnOffReactEventHandling()\r\n\t\t\t\t\t\tReactDOM.hydrateRoot(container, page, { onRecoverableError: handleError })\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\r\n\t\t\t\t\tReactDOM.createRoot(container, { onRecoverableError: handleError }).render(page)\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\thandleError(error, undefined, false)\r\n\t\t\t\tthrow error\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\r\n\r\n\t\t\r\n\t"],"mappings":"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"}