{"version":3,"file":"shared.DxjLQ1lk.mjs","names":["useMemo","useMemo","useMemo","useRef","useCallback","useState","useMemo","React.useState","React.useMemo"],"sources":["https:/framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js","https:/framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js","https:/framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js","https:/framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js","https:/framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js","https:/framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js","https:/framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js","https:/framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js","https:/framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js","https:/framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js","https:/framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js","https:/framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js","https:/framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js","https:/framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js","https:/framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js","https:/framerusercontent.com/modules/lRDHiNWNVWmE0lqtoVHP/7qT0r3So12155VV5Jq5x/Video.js","https:/framerusercontent.com/modules/JnPmHvsTsssWkeEolmno/WwEcxXs7CgPIU2e2Tf0U/LiveLocation.js","https:/framerusercontent.com/modules/6fvN5zepm8YMDQUJb6qy/4tzSXMpe9TXuSgepBwmA/qTN8Ce2dd.js","https:/framerusercontent.com/modules/uakxEvrv8bqoo5WlCn5p/qzQMVHH14fL6JOMA2Qze/siteMetadata.js"],"sourcesContent":["import { ControlType } from \"framer\";\nexport const fontStack = `\"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;\nexport const containerStyles = {\n    position: \"relative\",\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n};\nexport const emptyStateStyle = {\n    ...containerStyles,\n    borderRadius: 6,\n    background: \"rgba(136, 85, 255, 0.3)\",\n    color: \"#85F\",\n    border: \"1px dashed #85F\",\n    flexDirection: \"column\"\n};\nexport const defaultEvents = {\n    onClick: {\n        type: ControlType.EventHandler\n    },\n    onMouseEnter: {\n        type: ControlType.EventHandler\n    },\n    onMouseLeave: {\n        type: ControlType.EventHandler\n    }\n};\nexport const fontSizeOptions = {\n    type: ControlType.Number,\n    title: \"Font Size\",\n    min: 2,\n    max: 200,\n    step: 1,\n    displayStepper: true\n};\nexport const fontControls = {\n    font: {\n        type: ControlType.Boolean,\n        title: \"Font\",\n        defaultValue: false,\n        disabledTitle: \"Default\",\n        enabledTitle: \"Custom\"\n    },\n    fontFamily: {\n        type: ControlType.String,\n        title: \"Family\",\n        placeholder: \"Inter\",\n        hidden: ({ font  })=>!font\n    },\n    fontWeight: {\n        type: ControlType.Enum,\n        title: \"Weight\",\n        options: [\n            100,\n            200,\n            300,\n            400,\n            500,\n            600,\n            700,\n            800,\n            900\n        ],\n        optionTitles: [\n            \"Thin\",\n            \"Extra-light\",\n            \"Light\",\n            \"Regular\",\n            \"Medium\",\n            \"Semi-bold\",\n            \"Bold\",\n            \"Extra-bold\",\n            \"Black\", \n        ],\n        hidden: ({ font  })=>!font\n    }\n};\n// @TODO check if we're missing anything here — there doesn't seem to be a reliable browser API for this\nexport const localeOptions = {\n    af: \"Afrikaans\",\n    sq: \"Albanian\",\n    an: \"Aragonese\",\n    ar: \"Arabic (Standard)\",\n    \"ar-dz\": \"Arabic (Algeria)\",\n    \"ar-bh\": \"Arabic (Bahrain)\",\n    \"ar-eg\": \"Arabic (Egypt)\",\n    \"ar-iq\": \"Arabic (Iraq)\",\n    \"ar-jo\": \"Arabic (Jordan)\",\n    \"ar-kw\": \"Arabic (Kuwait)\",\n    \"ar-lb\": \"Arabic (Lebanon)\",\n    \"ar-ly\": \"Arabic (Libya)\",\n    \"ar-ma\": \"Arabic (Morocco)\",\n    \"ar-om\": \"Arabic (Oman)\",\n    \"ar-qa\": \"Arabic (Qatar)\",\n    \"ar-sa\": \"Arabic (Saudi Arabia)\",\n    \"ar-sy\": \"Arabic (Syria)\",\n    \"ar-tn\": \"Arabic (Tunisia)\",\n    \"ar-ae\": \"Arabic (U.A.E.)\",\n    \"ar-ye\": \"Arabic (Yemen)\",\n    hy: \"Armenian\",\n    as: \"Assamese\",\n    ast: \"Asturian\",\n    az: \"Azerbaijani\",\n    eu: \"Basque\",\n    bg: \"Bulgarian\",\n    be: \"Belarusian\",\n    bn: \"Bengali\",\n    bs: \"Bosnian\",\n    br: \"Breton\",\n    my: \"Burmese\",\n    ca: \"Catalan\",\n    ch: \"Chamorro\",\n    ce: \"Chechen\",\n    zh: \"Chinese\",\n    \"zh-hk\": \"Chinese (Hong Kong)\",\n    \"zh-cn\": \"Chinese (PRC)\",\n    \"zh-sg\": \"Chinese (Singapore)\",\n    \"zh-tw\": \"Chinese (Taiwan)\",\n    cv: \"Chuvash\",\n    co: \"Corsican\",\n    cr: \"Cree\",\n    hr: \"Croatian\",\n    cs: \"Czech\",\n    da: \"Danish\",\n    nl: \"Dutch (Standard)\",\n    \"nl-be\": \"Dutch (Belgian)\",\n    en: \"English\",\n    \"en-au\": \"English (Australia)\",\n    \"en-bz\": \"English (Belize)\",\n    \"en-ca\": \"English (Canada)\",\n    \"en-ie\": \"English (Ireland)\",\n    \"en-jm\": \"English (Jamaica)\",\n    \"en-nz\": \"English (New Zealand)\",\n    \"en-ph\": \"English (Philippines)\",\n    \"en-za\": \"English (South Africa)\",\n    \"en-tt\": \"English (Trinidad & Tobago)\",\n    \"en-gb\": \"English (United Kingdom)\",\n    \"en-us\": \"English (United States)\",\n    \"en-zw\": \"English (Zimbabwe)\",\n    eo: \"Esperanto\",\n    et: \"Estonian\",\n    fo: \"Faeroese\",\n    fa: \"Farsi\",\n    fj: \"Fijian\",\n    fi: \"Finnish\",\n    fr: \"French (Standard)\",\n    \"fr-be\": \"French (Belgium)\",\n    \"fr-ca\": \"French (Canada)\",\n    \"fr-fr\": \"French (France)\",\n    \"fr-lu\": \"French (Luxembourg)\",\n    \"fr-mc\": \"French (Monaco)\",\n    \"fr-ch\": \"French (Switzerland)\",\n    fy: \"Frisian\",\n    fur: \"Friulian\",\n    gd: \"Gaelic (Scots)\",\n    \"gd-ie\": \"Gaelic (Irish)\",\n    gl: \"Galacian\",\n    ka: \"Georgian\",\n    de: \"German (Standard)\",\n    \"de-at\": \"German (Austria)\",\n    \"de-de\": \"German (Germany)\",\n    \"de-li\": \"German (Liechtenstein)\",\n    \"de-lu\": \"German (Luxembourg)\",\n    \"de-ch\": \"German (Switzerland)\",\n    el: \"Greek\",\n    gu: \"Gujurati\",\n    ht: \"Haitian\",\n    he: \"Hebrew\",\n    hi: \"Hindi\",\n    hu: \"Hungarian\",\n    is: \"Icelandic\",\n    id: \"Indonesian\",\n    iu: \"Inuktitut\",\n    ga: \"Irish\",\n    it: \"Italian (Standard)\",\n    \"it-ch\": \"Italian (Switzerland)\",\n    ja: \"Japanese\",\n    kn: \"Kannada\",\n    ks: \"Kashmiri\",\n    kk: \"Kazakh\",\n    km: \"Khmer\",\n    ky: \"Kirghiz\",\n    tlh: \"Klingon\",\n    ko: \"Korean\",\n    \"ko-kp\": \"Korean (North Korea)\",\n    \"ko-kr\": \"Korean (South Korea)\",\n    la: \"Latin\",\n    lv: \"Latvian\",\n    lt: \"Lithuanian\",\n    lb: \"Luxembourgish\",\n    mk: \"FYRO Macedonian\",\n    ms: \"Malay\",\n    ml: \"Malayalam\",\n    mt: \"Maltese\",\n    mi: \"Maori\",\n    mr: \"Marathi\",\n    mo: \"Moldavian\",\n    nv: \"Navajo\",\n    ng: \"Ndonga\",\n    ne: \"Nepali\",\n    no: \"Norwegian\",\n    nb: \"Norwegian (Bokmal)\",\n    nn: \"Norwegian (Nynorsk)\",\n    oc: \"Occitan\",\n    or: \"Oriya\",\n    om: \"Oromo\",\n    \"fa-ir\": \"Persian/Iran\",\n    pl: \"Polish\",\n    pt: \"Portuguese\",\n    \"pt-br\": \"Portuguese (Brazil)\",\n    pa: \"Punjabi\",\n    \"pa-in\": \"Punjabi (India)\",\n    \"pa-pk\": \"Punjabi (Pakistan)\",\n    qu: \"Quechua\",\n    rm: \"Rhaeto-Romanic\",\n    ro: \"Romanian\",\n    \"ro-mo\": \"Romanian (Moldavia)\",\n    ru: \"Russian\",\n    \"ru-mo\": \"Russian (Moldavia)\",\n    sz: \"Sami (Lappish)\",\n    sg: \"Sango\",\n    sa: \"Sanskrit\",\n    sc: \"Sardinian\",\n    sd: \"Sindhi\",\n    si: \"Singhalese\",\n    sr: \"Serbian\",\n    sk: \"Slovak\",\n    sl: \"Slovenian\",\n    so: \"Somani\",\n    sb: \"Sorbian\",\n    es: \"Spanish\",\n    \"es-ar\": \"Spanish (Argentina)\",\n    \"es-bo\": \"Spanish (Bolivia)\",\n    \"es-cl\": \"Spanish (Chile)\",\n    \"es-co\": \"Spanish (Colombia)\",\n    \"es-cr\": \"Spanish (Costa Rica)\",\n    \"es-do\": \"Spanish (Dominican Republic)\",\n    \"es-ec\": \"Spanish (Ecuador)\",\n    \"es-sv\": \"Spanish (El Salvador)\",\n    \"es-gt\": \"Spanish (Guatemala)\",\n    \"es-hn\": \"Spanish (Honduras)\",\n    \"es-mx\": \"Spanish (Mexico)\",\n    \"es-ni\": \"Spanish (Nicaragua)\",\n    \"es-pa\": \"Spanish (Panama)\",\n    \"es-py\": \"Spanish (Paraguay)\",\n    \"es-pe\": \"Spanish (Peru)\",\n    \"es-pr\": \"Spanish (Puerto Rico)\",\n    \"es-es\": \"Spanish (Spain)\",\n    \"es-uy\": \"Spanish (Uruguay)\",\n    \"es-ve\": \"Spanish (Venezuela)\",\n    sx: \"Sutu\",\n    sw: \"Swahili\",\n    sv: \"Swedish\",\n    \"sv-fi\": \"Swedish (Finland)\",\n    \"sv-sv\": \"Swedish (Sweden)\",\n    ta: \"Tamil\",\n    tt: \"Tatar\",\n    te: \"Teluga\",\n    th: \"Thai\",\n    tig: \"Tigre\",\n    ts: \"Tsonga\",\n    tn: \"Tswana\",\n    tr: \"Turkish\",\n    tk: \"Turkmen\",\n    uk: \"Ukrainian\",\n    hsb: \"Upper Sorbian\",\n    ur: \"Urdu\",\n    ve: \"Venda\",\n    vi: \"Vietnamese\",\n    vo: \"Volapuk\",\n    wa: \"Walloon\",\n    cy: \"Welsh\",\n    xh: \"Xhosa\",\n    ji: \"Yiddish\",\n    zu: \"Zulu\"\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./constants.map","import { useIsInCurrentNavigationTarget } from \"framer\";\nimport { useEffect } from \"react\";\nexport function useOnEnter(onEnter, enabled) {\n    return useOnSpecificTargetChange(true, onEnter, enabled);\n}\nexport function useOnExit(onExit, enabled) {\n    return useOnSpecificTargetChange(false, onExit, enabled);\n}\nfunction useOnSpecificTargetChange(goal, callback, enabled = true) {\n    const isInTarget = useIsInCurrentNavigationTarget();\n    useEffect(()=>{\n        if (enabled && isInTarget === goal) callback();\n    }, [\n        isInTarget\n    ]);\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useOnEnter\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnNavigationTargetChange.map","import { useRef } from \"react\";\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */ export function useConstant(init) {\n    const ref = useRef(null);\n    if (ref.current === null) {\n        ref.current = init();\n    }\n    return ref.current;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useConstant.map","import { Color } from \"framer\";\nexport function colorFromToken(color) {\n    if (color.startsWith(\"var(--token-\")) return \"rgb\" + color.split(\") /*\")[0].split(\", rgb\")[1];\n    return color;\n}\nexport function colorTokentoValue(color) {\n    return Color(colorFromToken(color)).toValue();\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"colorFromToken\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./colorFromToken.map","import { MotionValue } from \"framer\";\nexport const isMotionValue = (v)=>v instanceof MotionValue\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isMotionValue.map","import * as React from \"react\";\nconst letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\nconst l = ()=>letters[Math.floor(Math.random() * letters.length)]\n;\nexport const randomID = ()=>l() + l() + l() + l() + l() + l() + l() + l() + l()\n;\nfunction createUniqueClass(suffix) {\n    return `framer-${suffix}-${randomID()}`;\n}\nexport function useUniqueClassName(suffix, deps) {\n    const [className, setClassName] = React.useState(createUniqueClass(suffix));\n    React.useEffect(()=>{\n        setClassName(createUniqueClass(suffix));\n    }, [\n        suffix,\n        ...deps\n    ]);\n    return className;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useUniqueClassName\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useUniqueClassName.map","import { ControlType } from \"framer\";\n// I realize this only applies to select right now\n// but we can work on it in here\nexport function getVariantControls(Component, variant, additionalControls = {\n}) {\n    return {\n        [`${variant}TextColor`]: {\n            type: ControlType.Color,\n            title: \"Text Color\",\n            defaultValue: Component.defaultProps[`${variant}TextColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}IconColor`]: {\n            type: ControlType.Color,\n            title: \"Icon Color\",\n            defaultValue: Component.defaultProps[`${variant}IconColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BackgroundColor`]: {\n            type: ControlType.Color,\n            title: \"Bg Color\",\n            defaultValue: Component.defaultProps[`${variant}BackgroundColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderColor`]: {\n            type: ControlType.Color,\n            title: \"Border Color\",\n            defaultValue: Component.defaultProps[`${variant}BorderColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderWidth`]: {\n            type: ControlType.Number,\n            title: \" \",\n            min: 0,\n            max: 5,\n            displayStepper: true,\n            defaultValue: Component.defaultProps[`${variant}BorderWidth`],\n            hidden: (props)=>props.variant !== variant\n        },\n        ...additionalControls\n    };\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"getVariantControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./variantUtils.map","import { useMemo } from \"react\";\nexport const isBrowserSafari = ()=>{\n    if (typeof navigator !== `undefined`) {\n        const userAgent = navigator.userAgent.toLowerCase();\n        const isSafari = (userAgent.indexOf(\"safari\") > -1 || userAgent.indexOf(\"framermobile\") > -1 || userAgent.indexOf(\"framerx\") > -1) && userAgent.indexOf(\"chrome\") < 0;\n        return isSafari;\n    } else return false;\n};\nexport const useIsBrowserSafari = ()=>useMemo(()=>isBrowserSafari()\n    , [])\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isBrowser.map","import { useEffect } from \"react\";\n//@ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\nexport function useOnChange(value, callback) {\n    useEffect(()=>// @ts-ignore this should be detected as a MV :shrug:\n        isMotionValue(value) ? value.onChange(callback) : undefined\n    );\n}\nexport function useMultiOnChange(values, handler) {\n    useEffect(()=>{\n        const subscriptions = values.map((value)=>value.onChange(handler)\n        );\n        return ()=>subscriptions.forEach((unsubscribe)=>unsubscribe()\n            )\n        ;\n    });\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"Subscriber\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnChange.map","import { useCallback, useEffect, useRef } from \"react\";\nimport { motionValue, animate, RenderTarget } from \"framer\";\n// @ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\n// @ts-ignore\nimport { useConstant } from \"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";\nexport function useAutoMotionValue(inputValue, options) {\n    var ref;\n    // Put options on a local ref\n    // Might wanna just memo instead but it works for now\n    const optionsRef = useRef(options);\n    const animation = useRef();\n    const didInitialMount = useRef(false);\n    const isOnCanvas = RenderTarget.current() === RenderTarget.canvas;\n    // in-progress - trying to figure out effect hooks\n    const onChangeDeps = (options === null || options === void 0 ? void 0 : options.onChangeDeps) ? options.onChangeDeps : [];\n    // Memoize the onChange handler\n    const onChange = useCallback(options === null || options === void 0 ? void 0 : options.onChange, [\n        ...onChangeDeps, \n    ]);\n    // Optionally scale the value from props\n    const transformer = useCallback((value)=>((ref = optionsRef.current) === null || ref === void 0 ? void 0 : ref.transform) ? optionsRef.current.transform(value) : value\n    , []);\n    // Create new MotionValue from inputValue\n    const value = useConstant(()=>isMotionValue(inputValue) ? inputValue : motionValue(transformer(inputValue))\n    );\n    // Setting value from prop change\n    useEffect(()=>{\n        if (!isMotionValue(inputValue) && didInitialMount.current) {\n            var ref1, ref2;\n            const newValue = transformer(inputValue);\n            (ref1 = animation.current) === null || ref1 === void 0 ? void 0 : ref1.stop();\n            // Call change callback\n            if (onChange) onChange(newValue, value);\n            // Trigger animation to new value\n            if (((ref2 = optionsRef.current) === null || ref2 === void 0 ? void 0 : ref2.animate) && !isOnCanvas) {\n                var ref3;\n                // @ts-ignore\n                animation.current = animate(value, newValue, (ref3 = optionsRef.current) === null || ref3 === void 0 ? void 0 : ref3.transition);\n            } else {\n                value.set(newValue);\n            }\n        }\n        didInitialMount.current = true;\n    }, [\n        inputValue,\n        ...onChangeDeps\n    ]);\n    return value;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useAutoMotionValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","// @ts-ignore\nimport{fontStore}from\"framer\";import{useEffect}from\"react\";import{fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";const fontWeights={100:\"Thin\",200:\"Extra-light\",300:\"Light\",400:\"Regular\",500:\"Medium\",600:\"Semi-bold\",700:\"Bold\",800:\"Extra-bold\",900:\"Black\"};export function useFontControls(props){const{fontFamily=\"Inter\",fontSize=16,fontWeight=400,font=false}=props;const fontWeightName=fontWeights[fontWeight];const customFontStack=`\"${fontFamily} ${fontWeightName}\", \"${fontFamily}\", ${fontStack}`;const fontFamilyStyle=fontFamily?{fontSize,fontWeight,fontFamily:customFontStack}:{fontSize,fontWeight};const fetchCustomFonts=async()=>{await fontStore.loadWebFontsFromSelectors([`CUSTOM;${fontFamily}`,`CUSTOM;${fontFamily} ${fontWeightName}`,`GF;${fontFamily}-${fontWeightName.toLowerCase()}`,]).catch(e=>console.error(e));};useEffect(()=>{if(font)fetchCustomFonts();},[font,fontFamily,fontWeight]);return fontFamilyStyle;}\nexport const __FramerMetadata__ = {\"exports\":{\"useFontControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useFontControls.map","import { useMemo } from \"react\";\nimport { RenderTarget } from \"framer\";\nexport function useRenderTarget() {\n    const currentRenderTarget = useMemo(()=>RenderTarget.current()\n    , []);\n    return currentRenderTarget;\n}\nexport function useIsInPreview() {\n    const inPreview = useMemo(()=>RenderTarget.current() === RenderTarget.preview\n    , []);\n    return inPreview;\n}\nexport function useIsOnCanvas() {\n    const onCanvas = useMemo(()=>RenderTarget.current() === RenderTarget.canvas\n    , []);\n    return onCanvas;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsInPreview\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useRenderTarget.map","import * as React from \"react\";\nexport function useControlledState(value) {\n    const [controlledValue, setValue] = React.useState(value);\n    React.useEffect(()=>{\n        setValue(value);\n    }, [\n        value\n    ]);\n    return [\n        controlledValue,\n        setValue\n    ];\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useControlledState\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useControlledState.map","import { useMemo } from \"react\";\nimport { ControlType } from \"framer\";\nexport function useRadius(props) {\n    const { borderRadius , isMixedBorderRadius , topLeftRadius , topRightRadius , bottomRightRadius , bottomLeftRadius ,  } = props;\n    const radiusValue = useMemo(()=>isMixedBorderRadius ? `${topLeftRadius}px ${topRightRadius}px ${bottomRightRadius}px ${bottomLeftRadius}px` : `${borderRadius}px`\n    , [\n        borderRadius,\n        isMixedBorderRadius,\n        topLeftRadius,\n        topRightRadius,\n        bottomRightRadius,\n        bottomLeftRadius, \n    ]);\n    return radiusValue;\n}\nexport const borderRadiusControl = {\n    borderRadius: {\n        title: \"Radius\",\n        type: ControlType.FusedNumber,\n        toggleKey: \"isMixedBorderRadius\",\n        toggleTitles: [\n            \"Radius\",\n            \"Radius per corner\"\n        ],\n        valueKeys: [\n            \"topLeftRadius\",\n            \"topRightRadius\",\n            \"bottomRightRadius\",\n            \"bottomLeftRadius\", \n        ],\n        valueLabels: [\n            \"TL\",\n            \"TR\",\n            \"BR\",\n            \"BL\"\n        ],\n        min: 0\n    }\n};\nexport function usePadding(props) {\n    const { padding , paddingPerSide , paddingTop , paddingRight , paddingBottom , paddingLeft ,  } = props;\n    const paddingValue = useMemo(()=>paddingPerSide ? `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px` : padding\n    , [\n        padding,\n        paddingPerSide,\n        paddingTop,\n        paddingRight,\n        paddingBottom,\n        paddingLeft, \n    ]);\n    return paddingValue;\n}\nexport const paddingControl = {\n    padding: {\n        type: ControlType.FusedNumber,\n        toggleKey: \"paddingPerSide\",\n        toggleTitles: [\n            \"Padding\",\n            \"Padding per side\"\n        ],\n        valueKeys: [\n            \"paddingTop\",\n            \"paddingRight\",\n            \"paddingBottom\",\n            \"paddingLeft\", \n        ],\n        valueLabels: [\n            \"T\",\n            \"R\",\n            \"B\",\n            \"L\"\n        ],\n        min: 0,\n        title: \"Padding\"\n    }\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RadiusProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PaddingProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./propUtils.map","import{defaultEvents,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";import{useOnEnter,useOnExit}from\"https://framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js\";import{useConstant}from\"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";import{colorTokentoValue,colorFromToken}from\"https://framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js\";import{isMotionValue}from\"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";import{useUniqueClassName,randomID}from\"https://framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js\";import{getVariantControls}from\"https://framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js\";import{useIsBrowserSafari}from\"https://framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js\";import{useMultiOnChange,useOnChange}from\"https://framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js\";import{mstoMinAndSec,secondsToMinutes}from\"https://framerusercontent.com/modules/4zHZnO5JojN1PrIbu2jm/revv9QCWpkh8lPzi2jje/time.js\";import{useAutoMotionValue}from\"https://framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js\";import{useFontControls}from\"https://framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js\";import{useRenderTarget,useIsInPreview,useIsOnCanvas}from\"https://framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js\";import{useControlledState}from\"https://framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js\";import{usePadding,useRadius,paddingControl,borderRadiusControl}from\"https://framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js\";import{detectAutoSizingAxis}from\"https://framerusercontent.com/modules/8CkHAZatUz1UR8jNTcfD/HwbnIAZlUmQ2oTpcLkaH/detectAutoSizingAxis.js\";export{useOnEnter,useOnExit,defaultEvents,isMotionValue,colorFromToken,colorTokentoValue,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack,useUniqueClassName,getVariantControls,useIsBrowserSafari,randomID,useConstant,useMultiOnChange,useOnChange,usePadding,useRadius,paddingControl,borderRadiusControl,mstoMinAndSec,useFontControls,secondsToMinutes,useAutoMotionValue,useRenderTarget,useIsInPreview,useControlledState,detectAutoSizingAxis,useIsOnCanvas,};\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useUniqueClassName\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getVariantControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorFromToken\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useControlledState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useFontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useAutoMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsInPreview\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"detectAutoSizingAxis\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mstoMinAndSec\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnEnter\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"secondsToMinutes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsInCurrentNavigationTarget,RenderTarget}from\"framer\";import{isMotionValue,useInView}from\"framer-motion\";import{borderRadiusControl,defaultEvents,useIsBrowserSafari,useIsOnCanvas,useOnEnter,useOnExit,useRadius,useRenderTarget}from\"https://framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js\";// https://framer.com/m/framer/default-utils.js@^0.45.0\nimport{memo,useCallback,useEffect,useMemo,useRef,useState}from\"react\";var ObjectFitType;(function(ObjectFitType){ObjectFitType[\"Fill\"]=\"fill\";ObjectFitType[\"Contain\"]=\"contain\";ObjectFitType[\"Cover\"]=\"cover\";ObjectFitType[\"None\"]=\"none\";ObjectFitType[\"ScaleDown\"]=\"scale-down\";})(ObjectFitType||(ObjectFitType={}));var SrcType;(function(SrcType){SrcType[\"Video\"]=\"Upload\";SrcType[\"Url\"]=\"URL\";})(SrcType||(SrcType={}));const defaultVideo=\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\";// Reduce renders\nfunction getProps(props){const{width,height,topLeft,topRight,bottomRight,bottomLeft,id,children,...rest}=props;return rest;}/**\n * VIDEO\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 112\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export function Video(props){const newProps=getProps(props);return /*#__PURE__*/_jsx(VideoMemo,{...newProps});}function usePlaybackControls(videoRef){const isInCurrentNavigationTarget=useIsInCurrentNavigationTarget();const requestingPlay=useRef(false);const isPlayingRef=useRef(false);const setProgress=useCallback(rawProgress=>{if(!videoRef.current)return;const newProgress=(rawProgress===1?.999:rawProgress)*videoRef.current.duration;const isAlreadySet=Math.abs(videoRef.current.currentTime-newProgress)<.1;if(videoRef.current.duration>0&&!isAlreadySet){videoRef.current.currentTime=newProgress;}},[]);const play=useCallback(()=>{const video=videoRef.current;if(!video)return;video.preload=\"auto\"// makes sure browsers don't throttle: https://html.spec.whatwg.org/multipage/media.html#:~:text=When%20the%20media%20resource%20is%20playing%2C%20hints%20to%20the%20user%20agent%20that%20bandwidth%20is%20to%20be%20considered%20scarce%2C%20e.g.%20suggesting%20throttling%20the%20download%20so%20that%20the%20media%20data%20is%20obtained%20at%20the%20slowest%20possible%20rate%20that%20still%20maintains%20consistent%20playback.\n;const isPlaying=video.currentTime>0&&video.onplaying&&!video.paused&&!video.ended&&video.readyState>=video.HAVE_CURRENT_DATA;if(!isPlaying&&video&&!requestingPlay.current&&isInCurrentNavigationTarget){requestingPlay.current=true;isPlayingRef.current=true;video.play().catch(e=>{})// It's likely fine, swallow error\n.finally(()=>requestingPlay.current=false);}},[]);const pause=useCallback(()=>{if(!videoRef.current||requestingPlay.current)return;videoRef.current.pause();isPlayingRef.current=false;},[]);return{play,pause,setProgress,isPlaying:isPlayingRef};}function useAutoplayBehavior({playingProp,muted,loop,playsinline,controls}){const[initialPlayingProp]=useState(()=>playingProp);const[hasPlayingPropChanged,setHasPlayingPropChanged]=useState(false);if(playingProp!==initialPlayingProp&&!hasPlayingPropChanged){setHasPlayingPropChanged(true);}const behavesAsGif=// passing `playing === true` on mount indicates that the video should\n// autoplay, like a GIF\ninitialPlayingProp&&muted&&loop&&playsinline&&!controls&&// Some users of the <Video> component use it by wrapping it with\n// another smart component and adding their own controls on top. (The\n// controls use transitions to control the video: e.g., when clicking\n// the play button, the smart component will transition to a state with\n// <Video playing={true} />.) In this case, we don't want the video to\n// behave as a gif, as it will be weird if the video suddenly started\n// acting as such (and auto-pausing when leaving the viewport) as soon\n// as the site visitor mutes it and clicks “Play”.\n!hasPlayingPropChanged;let autoplay;if(behavesAsGif)autoplay=\"on-viewport\";else if(initialPlayingProp)autoplay=\"on-mount\";else autoplay=\"no-autoplay\";return autoplay;}const VideoMemo=/*#__PURE__*/memo(function VideoInner(props){const{// default props\nsrcType=\"URL\",srcUrl,srcFile=\"\",posterEnabled=false,controls=false,playing=true,loop=true,muted=true,playsinline=true,restartOnEnter=false,objectFit=\"cover\",backgroundColor=\"rgba(0,0,0,0)\",radius=0,volume=25,startTime:startTimeProp=0,poster,playing:playingProp,progress,onSeeked,onPause,onPlay,onEnd,onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp}=props;const videoRef=useRef();const isSafari=useIsBrowserSafari();const wasPausedOnLeave=useRef(null);const wasEndedOnLeave=useRef(null);const isOnCanvas=useIsOnCanvas();const renderTarget=useRenderTarget();const isStaticRenderer=isOnCanvas||renderTarget===RenderTarget.export;const borderRadius=useRadius(props);// Hard-coding `autoplayBehavior` and `isInViewport` when on canvas as a\n// tiny perf optimization. isStaticRenderer won’t change through the lifecycle of\n// the component, so using these hooks conditionally should be safe\nconst autoplayBehavior=isStaticRenderer?\"no-autoplay\":useAutoplayBehavior({playingProp,muted,loop,playsinline,controls});const isInViewport=isStaticRenderer?true:useInView(videoRef);const isCloseToViewport=isStaticRenderer?false:useInView(videoRef,{margin:\"10%\",once:true});// Video elements behave oddly at 100% duration\nconst startTime=startTimeProp===100?99.9:startTimeProp;const{play,pause,setProgress,isPlaying}=usePlaybackControls(videoRef);// Pause/play via props\nuseEffect(()=>{if(isStaticRenderer)return;if(autoplayBehavior===\"on-viewport\")return;if(playingProp)play();else pause();},[autoplayBehavior,playingProp]);// Pause/play via viewport\nuseEffect(()=>{if(isStaticRenderer)return;// this also explicitly retries playing for videos that play on-mount, which could fail if they're not muted for example\nif(isInViewport&&playingProp&&autoplayBehavior!==\"no-autoplay\")play();if(autoplayBehavior!==\"on-viewport\")return;pause();},[autoplayBehavior,isInViewport,playingProp]);useEffect(()=>{if(!isOnCanvas||poster||posterEnabled||startTime||!videoRef.current)return;// forces a poster to show up when the video is in an iframe; this is needed when `poster` changes\nvideoRef.current.currentTime=.01;},[posterEnabled,poster,startTime]);/**\n     * The Video component has some effects that sync the video element with props\n     * like `startTime`, `progress`, etc. React calls these effects whenever these\n     * props change. However, it also calls them on the first mount, and this is\n     * troublesome – if we’re doing SSR, and the user changed the video state before\n     * the video was hydrated, the initial `useEffect` call will reset the video\n     * state. To avoid this, we use this flag.\n     */const isMountedAndReadyForProgressChanges=useRef(false);// Allow scrubbling via progress prop\n// 1) Handle cases when the progress prop itself changes\nuseEffect(()=>{if(!isMountedAndReadyForProgressChanges.current){isMountedAndReadyForProgressChanges.current=true;return;}const rawProgressValue=isMotionValue(progress)?progress.get():(progress??0)*.01;setProgress(// When the progress value exists (e.g. <Video startTime={10}\n// progress={50} />), we respect the `progress` value over\n// `startTime`, even if `startTime` changes. That’s because\n// `startTime` == start == changing it shouldn’t affect the current\n// progress\n(rawProgressValue??0)||// Then why fall back to `startTime` when `progress` doesn’t exist,\n// you might ask? Now, that’s for\n// - canvas UX: we want the video progress to change when the user\n//   is scrobbling the “Start Time” in component settings.\n// - backwards compatibility: maybe some users *are* scrobbling\n//   using `startTime` instead of `progress`? We don’t know, and it\n//   always supported it, so let’s not break it\n(startTime??0)/100);},[startTime,srcFile,srcUrl,progress]);// 2) Handle cases when the motion value inside the progress prop changes\nuseEffect(()=>{if(!isMotionValue(progress))return;return progress.on(\"change\",value=>setProgress(value));},[progress]);// (Prototyping) Checking if we need to play on navigation enter\nuseOnEnter(()=>{if(wasPausedOnLeave.current===null)return;if(videoRef.current){// if (restartOnEnter) setProgress(0)\nif(!wasEndedOnLeave&&loop||!wasPausedOnLeave.current)play();}});// (Prototyping) Pausing & saving playing state on navigation exit\nuseOnExit(()=>{if(videoRef.current){wasEndedOnLeave.current=videoRef.current.ended;wasPausedOnLeave.current=videoRef.current.paused;pause();}});const src=useMemo(()=>{let fragment=\"\";// if (\n//     startTime > 0 &&\n//     videoRef.current &&\n//     !isNaN(videoRef.current.duration) &&\n//     !isStaticRenderer\n// ) {\n//     console.log(startTime, videoRef.current.duration)\n//     fragment = `#t=${startTime * videoRef.current.duration}`\n// }\nif(srcType===\"URL\")return srcUrl+fragment;if(srcType===\"Upload\")return srcFile+fragment;},[srcType,srcFile,srcUrl,startTime]);// Autoplay via JS to work in Safari\nuseEffect(()=>{if(isSafari&&videoRef.current&&autoplayBehavior===\"on-mount\"){setTimeout(()=>play(),50);}},[]);// Volume Control\nuseEffect(()=>{if(videoRef.current&&!muted)videoRef.current.volume=(volume??0)/100;},[volume]);// When video is ready, set start-time, then autoplay if needed\nconst handleReady=()=>{const video=videoRef.current;if(!video)return;if(video.currentTime<.3&&startTime>0)setProgress((startTime??0)*.01);if(// when the component updates (e.g. only srcFile/url changes), and the video was already playing, keep playing\nisPlaying.current||autoplayBehavior===\"on-mount\"||playingProp&&autoplayBehavior===\"on-viewport\"&&isInViewport)play();};return /*#__PURE__*/_jsx(\"video\",{onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp,src:src,loop:loop,ref:videoRef,onSeeked:e=>onSeeked?.(e),onPause:e=>onPause?.(e),onPlay:e=>onPlay?.(e),onEnded:e=>onEnd?.(e),autoPlay:isPlaying.current||autoplayBehavior===\"on-mount\"||playingProp&&autoplayBehavior===\"on-viewport\"&&isInViewport,preload:isPlaying.current?\"auto\":isStaticRenderer&&!poster?\"metadata\":autoplayBehavior!==\"on-mount\"&&!isCloseToViewport?\"none\":// `autoplay` overrides this too\n\"metadata\",poster:posterEnabled&&!srcFile&&srcUrl===defaultVideo?\"https://framerusercontent.com/images/5ILRvlYXf72kHSVHqpa3snGzjU.jpg\":posterEnabled&&poster?poster:undefined,onLoadedData:handleReady,controls:controls,muted:isStaticRenderer?true:muted,playsInline:playsinline,style:{cursor:!!onClick?\"pointer\":\"auto\",width:\"100%\",height:\"100%\",borderRadius,display:\"block\",objectFit:objectFit,backgroundColor:backgroundColor,objectPosition:\"50% 50%\"}});});Video.displayName=\"Video\";function capitalizeFirstLetter(value){return value.charAt(0).toUpperCase()+value.slice(1);}export function titleCase(value){const groups=value.match(/[A-Z]{2,}|[A-Z][a-z]+|[a-z]+|[A-Z]|\\d+/gu)||[];return groups.map(capitalizeFirstLetter).join(\" \");}const objectFitOptions=[\"cover\",\"fill\",\"contain\",\"scale-down\",\"none\"];addPropertyControls(Video,{srcType:{type:ControlType.Enum,displaySegmentedControl:true,title:\"Source\",options:[\"URL\",\"Upload\"]},srcUrl:{type:ControlType.String,title:\"URL\",defaultValue:\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\",hidden(props){return props.srcType===\"Upload\";}},srcFile:{type:ControlType.File,title:\"File\",allowedFileTypes:[\"mp4\",\"webm\"],hidden(props){return props.srcType===\"URL\";}},playing:{type:ControlType.Boolean,title:\"Playing\",enabledTitle:\"Yes\",disabledTitle:\"No\"},...borderRadiusControl,posterEnabled:{type:ControlType.Boolean,title:\"Poster\",enabledTitle:\"Yes\",disabledTitle:\"No\"},poster:{type:ControlType.Image,title:\"Image\",hidden:({posterEnabled})=>!posterEnabled,description:\"We recommend adding a poster. [Learn more](https://www.framer.com/help/articles/how-are-videos-optimized-in-framer/).\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"rgba(0,0,0,0)\"},startTime:{title:\"Start Time\",type:ControlType.Number,min:0,max:100,step:.1,unit:\"%\"},loop:{type:ControlType.Boolean,title:\"Loop\",enabledTitle:\"Yes\",disabledTitle:\"No\"},objectFit:{type:ControlType.Enum,title:\"Fit\",options:objectFitOptions,optionTitles:objectFitOptions.map(titleCase)},// restartOnEnter: {\n//     type: ControlType.Boolean,\n//     title: \"On ReEnter\",\n//     enabledTitle: \"Restart\",\n//     disabledTitle: \"Resume\",\n// },\ncontrols:{type:ControlType.Boolean,title:\"Controls\",enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:false},muted:{type:ControlType.Boolean,title:\"Muted\",enabledTitle:\"Yes\",disabledTitle:\"No\"},volume:{type:ControlType.Number,max:100,min:0,unit:\"%\",hidden:({muted})=>muted,defaultValue:25},onEnd:{type:ControlType.EventHandler},onSeeked:{type:ControlType.EventHandler},onPause:{type:ControlType.EventHandler},onPlay:{type:ControlType.EventHandler},...defaultEvents});\nexport const __FramerMetadata__ = {\"exports\":{\"VideoProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"titleCase\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Video\":{\"type\":\"reactComponent\",\"name\":\"Video\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"112\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"200\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Video.map","/**\n * @framerDisableUnlink\n * @framerDisplayName \"Live Location\"\n *//**\n * Live Location v1.1.0\n * Professional location display component with live pulse indicator.\n *\n * ✨ Features:\n * • Auto-detects City/Country via IP (no API keys required)\n * • Multiple display modes: City, Country, or City + Country\n * • Multi-language support with locale awareness\n * • Responsive pulse animation that scales with font size\n * • Full accessibility support (ARIA, screen readers)\n * • Respects user motion preferences automatically\n * • Smart 24-hour caching for optimal performance\n * • Clean property controls with organized groups\n *\n * 🎨 Customization:\n * • Native Framer font controls with full typography support\n * • Customizable pulse color, position, and spacing\n * • Flag emoji support for countries\n * • Language/locale selection (manual or auto-detect)\n * • Flexible error handling and loading states\n *\n * 🚀 Perfect for:\n * • Hero sections showing visitor location\n * • Footer location displays\n * • Personalized welcome messages\n * • Location-based content blocks\n * • Multi-language websites\n *\n * 📝 CHANGELOG:\n * v1.1.0 (2025-08-12) - Added comprehensive locale/language support\n * v1.0.0 (2025-08-12) - Initial release\n *\n * © 2025 Amr Rashed - All rights reserved\n * Author: Amr Rashed (https://amrrashed.com)\n * Documentation: https://livelocation.framer.website/demo\n * Support: hello@amrrashed.com\n * License: Commercial use allowed with attribution\n */import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,motion,useReducedMotion}from\"framer\";/* =========================\n   Constants & Defaults\n   ========================= */const CACHE_KEY=\"liveLocationCacheV1\";const CACHE_HOURS=24;const DEFAULT_TIMEOUT=5e3// Slightly longer for better reliability\n;const defaultFont={family:\"Inter\",weight:\"500\",size:16,lineHeight:1.4,letterSpacing:0,textAlign:\"left\"};// Translations for UI text\nconst translations={\"en-US\":{loading:\"Detecting location…\",error:\"Somewhere in the world\"},\"es-ES\":{loading:\"Detectando ubicaci\\xf3n…\",error:\"En alg\\xfan lugar del mundo\"},\"fr-FR\":{loading:\"D\\xe9tection de la position…\",error:\"Quelque part dans le monde\"},\"de-DE\":{loading:\"Standort wird ermittelt…\",error:\"Irgendwo auf der Welt\"},\"it-IT\":{loading:\"Rilevamento posizione…\",error:\"Da qualche parte nel mondo\"},\"pt-BR\":{loading:\"Detectando localiza\\xe7\\xe3o…\",error:\"Em algum lugar do mundo\"},\"ru-RU\":{loading:\"Определение местоположения…\",error:\"Где-то в мире\"},\"ja-JP\":{loading:\"位置を検出中…\",error:\"世界のどこか\"},\"ko-KR\":{loading:\"위치 감지 중…\",error:\"세계 어딘가\"},\"zh-CN\":{loading:\"正在检测位置…\",error:\"世界某处\"},\"ar-SA\":{loading:\"جارٍ تحديد الموقع…\",error:\"في مكان ما في العالم\"},\"hi-IN\":{loading:\"स्थान का पता लगाया जा रहा है…\",error:\"दुनिया में कहीं\"},\"nl-NL\":{loading:\"Locatie detecteren…\",error:\"Ergens ter wereld\"},\"pl-PL\":{loading:\"Wykrywanie lokalizacji…\",error:\"Gdzieś na świecie\"},\"tr-TR\":{loading:\"Konum algılanıyor…\",error:\"D\\xfcnyanın bir yerinde\"},\"sv-SE\":{loading:\"Uppt\\xe4cker plats…\",error:\"N\\xe5gonstans i v\\xe4rlden\"},\"da-DK\":{loading:\"Registrerer placering…\",error:\"Et sted i verden\"},\"no-NO\":{loading:\"Oppdager plassering…\",error:\"Et sted i verden\"},\"fi-FI\":{loading:\"Tunnistetaan sijaintia…\",error:\"Jossain p\\xe4in maailmaa\"},\"cs-CZ\":{loading:\"Zjišťov\\xe1n\\xed polohy…\",error:\"Někde ve světě\"},\"hu-HU\":{loading:\"Helymeghat\\xe1roz\\xe1s…\",error:\"Valahol a vil\\xe1gban\"},\"el-GR\":{loading:\"Εντοπισμός τοποθεσίας…\",error:\"Κάπου στον κόσμο\"},\"th-TH\":{loading:\"กำลังตรวจหาตำแหน่ง…\",error:\"ที่ใดที่หนึ่งในโลก\"},\"vi-VN\":{loading:\"Đang ph\\xe1t hiện vị tr\\xed…\",error:\"Một nơi n\\xe0o đ\\xf3 tr\\xean thế giới\"},\"id-ID\":{loading:\"Mendeteksi lokasi…\",error:\"Di suatu tempat di dunia\"},\"ms-MY\":{loading:\"Mengesan lokasi…\",error:\"Di suatu tempat di dunia\"},\"uk-UA\":{loading:\"Визначення місцезнаходження…\",error:\"Десь у світі\"},\"ro-RO\":{loading:\"Detectare locație…\",error:\"Undeva \\xeen lume\"},\"bg-BG\":{loading:\"Откриване на местоположение…\",error:\"Някъде по света\"},\"hr-HR\":{loading:\"Otkrivanje lokacije…\",error:\"Negdje u svijetu\"}};/* =========================\n   Utils\n   ========================= */function countryCodeToFlagEmoji(code){if(!code)return\"\";const cc=code.trim().toUpperCase();if(cc.length!==2)return\"\";const base=127397;return String.fromCodePoint(cc.charCodeAt(0)+base,cc.charCodeAt(1)+base);}function cleanCountryName(name){// Common country name cleanups for better display\nconst cleanups={\"The Netherlands\":\"Netherlands\",\"The Bahamas\":\"Bahamas\",\"The Gambia\":\"Gambia\"};return cleanups[name]||name;}// Get localized country name using Intl.DisplayNames\nfunction getLocalizedCountryName(countryCode,locale){if(!countryCode||typeof Intl===\"undefined\")return undefined;try{// Use Intl.DisplayNames if available (modern browsers)\nif(\"DisplayNames\"in Intl){const displayNames=new Intl.DisplayNames([locale],{type:\"region\",fallback:\"code\"});return displayNames.of(countryCode.toUpperCase());}}catch(error){// Fallback to English or original name\nif(process.env.NODE_ENV===\"development\"){console.warn(\"Failed to get localized country name:\",error);}}return undefined;}// Get browser locale or use fallback\nfunction getBrowserLocale(){if(typeof window===\"undefined\")return\"en-US\";// Try multiple sources for locale\nconst locale=navigator.language||navigator.userLanguage||navigator.languages&&navigator.languages[0]||\"en-US\";return locale;}// Validate and normalize locale code\nfunction normalizeLocale(locale){// Handle common locale formats: en, en-US, en_US\nconst normalized=locale.replace(/_/g,\"-\");// If it's just a language code (e.g., \"en\"), try to expand it\nif(normalized.length===2){const expansions={en:\"en-US\",es:\"es-ES\",fr:\"fr-FR\",de:\"de-DE\",it:\"it-IT\",pt:\"pt-BR\",ru:\"ru-RU\",ja:\"ja-JP\",ko:\"ko-KR\",zh:\"zh-CN\",ar:\"ar-SA\",hi:\"hi-IN\",nl:\"nl-NL\"};return expansions[normalized.toLowerCase()]||normalized;}return normalized;}// Get localized text for loading and error states\nfunction getLocalizedText(locale,type){const normalized=normalizeLocale(locale);const translation=translations[normalized]||translations[\"en-US\"];return translation[type];}async function fetchGeo(timeoutMs=DEFAULT_TIMEOUT){const ctrl=new AbortController;const t=setTimeout(()=>ctrl.abort(),timeoutMs);try{const res=await fetch(\"https://ipapi.co/json/\",{signal:ctrl.signal,headers:{Accept:\"application/json\",\"User-Agent\":\"LiveLocation-Framer/1.0\"}});if(!res.ok)throw new Error(`HTTP ${res.status}: ${res.statusText}`);const data=await res.json();if(typeof data!==\"object\"||data===null){throw new Error(\"Invalid response format\");}return data;}catch(error){if(error instanceof Error&&error.name===\"AbortError\"){throw new Error(\"Request timeout\");}throw error;}finally{clearTimeout(t);}}function getCached(){if(typeof window===\"undefined\")return null;try{const raw=localStorage.getItem(CACHE_KEY);if(!raw)return null;const parsed=JSON.parse(raw);if(!parsed.ts)return null;const ageMs=Date.now()-parsed.ts;if(ageMs>CACHE_HOURS*3600*1e3){// Clean up expired cache\nlocalStorage.removeItem(CACHE_KEY);return null;}return parsed;}catch{// Clean up corrupted cache\ntry{localStorage.removeItem(CACHE_KEY);}catch{}return null;}}function setCached(data){if(typeof window===\"undefined\")return;try{localStorage.setItem(CACHE_KEY,JSON.stringify({...data,ts:Date.now()}));}catch(error){// Handle quota exceeded silently\nif(process.env.NODE_ENV===\"development\"){console.warn(\"LiveLocation: Failed to cache data\",error);}}}/* =========================\n   Component\n   ========================= */export default function LiveLocation(props){const{displayMode=\"CityCountry\",countryFormat=\"name\",showFlag=false,localeMode=\"manual\",locale=\"en-US\",font,textColor=\"#000000\",showPulse=true,pulseColor=\"#4CAF50\",pulsePosition=\"left\",pulseSize=10,pulseGap=8,loadingText=\"Detecting location…\",errorFallback=\"Somewhere in the world\",enabled=true}=props;const[geo,setGeo]=React.useState(null);const[state,setState]=React.useState(\"idle\");const reduceMotion=useReducedMotion();// Determine which locale to use\nconst activeLocale=React.useMemo(()=>{return localeMode===\"auto\"?getBrowserLocale():locale;},[localeMode,locale]);React.useEffect(()=>{if(typeof window===\"undefined\"||!enabled){setState(\"error\");setGeo(null);return;}const cached=getCached();if(cached?.city||cached?.country_name||cached?.country_code){setGeo(cached);setState(\"ready\");return;}let mounted=true;setState(\"loading\");setGeo(null);fetchGeo().then(data=>{if(!mounted)return;// Validate we got useful data\nif(!data.city&&!data.country_name&&!data.country_code){throw new Error(\"No location data received\");}setGeo(data);setCached(data);setState(\"ready\");}).catch(error=>{if(!mounted)return;if(process.env.NODE_ENV===\"development\"){console.warn(\"LiveLocation: Failed to fetch location data\",error.message||error);}setState(\"error\");});return()=>{mounted=false;};},[enabled]);// Memoize text processing for performance\nconst displayText=React.useMemo(()=>{// City names stay in original form (Latin script)\nconst city=geo?.city?.trim();// Get country name (localized if enabled)\nlet countryName=geo?.country_name?cleanCountryName(geo.country_name.trim()):\"\";// Attempt to get localized version if we're showing country name\nif(geo?.country_code&&countryFormat===\"name\"){const localizedName=getLocalizedCountryName(geo.country_code,activeLocale);if(localizedName){countryName=localizedName;}}const countryCode=geo?.country_code?.trim();const flag=showFlag?countryCodeToFlagEmoji(countryCode):\"\";// Get localized or custom text for loading and error states\nconst effectiveLoadingText=locale!==\"en-US\"?getLocalizedText(activeLocale,\"loading\"):loadingText;const effectiveErrorText=locale!==\"en-US\"?getLocalizedText(activeLocale,\"error\"):errorFallback;let text=null;if(state===\"loading\"){text=effectiveLoadingText||\"\";}else if(state===\"error\"){text=effectiveErrorText===\"hide\"?null:effectiveErrorText;}else if(state===\"ready\"){if(displayMode===\"City\"){text=city||(effectiveErrorText===\"hide\"?null:effectiveErrorText);}else if(displayMode===\"Country\"){text=countryFormat===\"code\"?countryCode||\"\":countryName||\"\";if(!text)text=effectiveErrorText===\"hide\"?null:effectiveErrorText;}else{const countryOut=countryFormat===\"code\"?countryCode||\"\":countryName||\"\";const parts=[city,countryOut].filter(Boolean);text=parts.length?parts.join(\", \"):effectiveErrorText===\"hide\"?null:effectiveErrorText;}}if(text==null)return null;return{text,finalText:`${flag?`${flag} `:\"\"}${text}`};},[geo,state,displayMode,countryFormat,showFlag,loadingText,errorFallback,localeMode,activeLocale]);if(!displayText)return null;// Use custom pulse size or default to 10px\nconst dotSize=pulseSize||10;const justifyContent=(font?.textAlign||defaultFont.textAlign)===\"center\"?\"center\":(font?.textAlign||defaultFont.textAlign)===\"right\"?\"flex-end\":\"flex-start\";const Ripple=/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:dotSize,height:dotSize,display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",marginRight:pulsePosition===\"left\"?pulseGap:0,marginLeft:pulsePosition===\"right\"?pulseGap:0,flexShrink:0,overflow:\"visible\"},\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",width:dotSize,height:dotSize,borderRadius:\"50%\",backgroundColor:pulseColor,zIndex:2}}),!reduceMotion&&/*#__PURE__*/_jsx(motion.span,{style:{position:\"absolute\",width:dotSize,height:dotSize,borderRadius:\"50%\",backgroundColor:pulseColor,willChange:\"transform, opacity\",transformOrigin:\"center\",zIndex:1},animate:{scale:[1,2.8],opacity:[0,.35,0]},transition:{duration:2.2,repeat:Infinity,ease:[\"linear\",\"easeOut\"],times:[0,.25,1]}},`pulse-${dotSize}-${pulseColor}`)]});const fontStyle={...font||defaultFont,color:textColor};return /*#__PURE__*/_jsxs(\"div\",{style:{...fontStyle,width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent,overflow:\"visible\"},\"aria-label\":`Current location: ${displayText.text}`,\"aria-live\":state===\"loading\"?\"polite\":\"off\",\"aria-busy\":state===\"loading\",role:\"status\",title:displayText.finalText,children:[showPulse&&pulsePosition===\"left\"&&Ripple,/*#__PURE__*/_jsx(\"span\",{style:{whiteSpace:\"nowrap\",textOverflow:\"ellipsis\",overflow:\"visible\"},children:displayText.finalText}),showPulse&&pulsePosition===\"right\"&&Ripple]});}/* =========================\n   Property Controls\n   ========================= */addPropertyControls(LiveLocation,{// Location group\ndisplayMode:{type:ControlType.Enum,options:[\"City\",\"Country\",\"CityCountry\"],optionTitles:[\"City\",\"Country\",\"City + Country\"],title:\"Display Mode\",defaultValue:\"CityCountry\",group:\"Location\"},countryFormat:{type:ControlType.Enum,options:[\"name\",\"code\"],optionTitles:[\"Full Name\",\"Code\"],title:\"Country Format\",defaultValue:\"name\",displaySegmentedControl:true,hidden:props=>props.displayMode===\"City\",group:\"Location\"},showFlag:{type:ControlType.Boolean,title:\"Show Flag Emoji\",defaultValue:false,group:\"Location\"},// Locale group\nlocaleMode:{type:ControlType.Enum,options:[\"manual\",\"auto\"],optionTitles:[\"Manual\",\"Auto\"],title:\"Locale\",defaultValue:\"manual\",displaySegmentedControl:true,group:\"Locale\"},locale:{type:ControlType.Enum,options:[\"en-US\",\"es-ES\",\"fr-FR\",\"de-DE\",\"it-IT\",\"pt-BR\",\"ru-RU\",\"ja-JP\",\"ko-KR\",\"zh-CN\",\"ar-SA\",\"hi-IN\",\"nl-NL\",\"pl-PL\",\"tr-TR\",\"sv-SE\",\"da-DK\",\"no-NO\",\"fi-FI\",\"cs-CZ\",\"hu-HU\",\"el-GR\",\"th-TH\",\"vi-VN\",\"id-ID\",\"ms-MY\",\"uk-UA\",\"ro-RO\",\"bg-BG\",\"hr-HR\"],optionTitles:[\"English (US)\",\"Espa\\xf1ol (Spain)\",\"Fran\\xe7ais (France)\",\"Deutsch (Germany)\",\"Italiano (Italy)\",\"Portugu\\xeas (Brazil)\",\"Русский (Russia)\",\"日本語 (Japan)\",\"한국어 (Korea)\",\"中文 (China)\",\"العربية (Saudi)\",\"हिन्दी (India)\",\"Nederlands (Netherlands)\",\"Polski (Poland)\",\"T\\xfcrk\\xe7e (Turkey)\",\"Svenska (Sweden)\",\"Dansk (Denmark)\",\"Norsk (Norway)\",\"Suomi (Finland)\",\"Čeština (Czech)\",\"Magyar (Hungary)\",\"Ελληνικά (Greece)\",\"ไทย (Thailand)\",\"Tiếng Việt (Vietnam)\",\"Bahasa (Indonesia)\",\"Bahasa (Malaysia)\",\"Українська (Ukraine)\",\"Rom\\xe2nă (Romania)\",\"Български (Bulgaria)\",\"Hrvatski (Croatia)\"],title:\"Language\",defaultValue:\"en-US\",hidden:props=>props.localeMode===\"auto\",group:\"Locale\"},// Typography group\nfont:{type:ControlType.Font,title:\"Typography\",controls:\"extended\",displayFontSize:true,displayTextAlignment:true,defaultValue:{...defaultFont},group:\"Typography\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\",group:\"Typography\"},// Pulse group\nshowPulse:{type:ControlType.Boolean,title:\"Show Pulse\",defaultValue:true,group:\"Pulse\"},pulseColor:{type:ControlType.Color,title:\"Pulse Color\",defaultValue:\"#4CAF50\",hidden:props=>!props.showPulse,group:\"Pulse\"},pulsePosition:{type:ControlType.Enum,title:\"Pulse Position\",options:[\"left\",\"right\"],optionTitles:[\"Left\",\"Right\"],defaultValue:\"left\",displaySegmentedControl:true,hidden:props=>!props.showPulse,group:\"Pulse\"},pulseSize:{type:ControlType.Number,title:\"Pulse Size\",min:1,step:1,unit:\"px\",defaultValue:10,hidden:props=>!props.showPulse,group:\"Pulse\"},pulseGap:{type:ControlType.Number,title:\"Pulse Gap\",min:0,step:1,unit:\"px\",defaultValue:8,hidden:props=>!props.showPulse,group:\"Pulse\"},// States group\nloadingText:{type:ControlType.String,title:\"Loading Text\",defaultValue:\"Detecting location…\",placeholder:\"Text shown while loading\",group:\"States\"},errorFallback:{type:ControlType.String,title:\"Error Fallback\",defaultValue:\"Somewhere in the world\",placeholder:\"Use 'hide' to hide component on error\",group:\"States\"},enabled:{type:ControlType.Boolean,title:\"Enable Component\",defaultValue:true,description:\"Live Location built by [Amr Rashed](https://amrrashed.com)\",group:\"States\"}});LiveLocation.displayName=\"Live Location\";LiveLocation.defaultProps={font:{...defaultFont}};LiveLocation.FramerDisableLink=true;// Disable unlinking to protect the component\nexport const framerDisableUnlinking=true;\nexport const __FramerMetadata__ = {\"exports\":{\"framerDisableUnlinking\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"LiveLocation\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LiveLocation.map","// Generated by Framer (ca8ceca)\nimport{fontStore}from\"framer\";fontStore.loadFonts([]);export const fonts=[{explicitInter:true,fonts:[]}];export const css=[\".framer-2fVHp .framer-styles-preset-h0hxj8:not(.rich-text-wrapper), .framer-2fVHp .framer-styles-preset-h0hxj8.rich-text-wrapper a { --framer-link-hover-text-color: #383838; --framer-link-text-color: #0a0a0a; }\"];export const className=\"framer-2fVHp\";\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 (3f060d6)\nexport default function metadata(params,activeLocale){return{description:\"LogoClub99 is a branding and web design studio building strategic brand identities for ambitious businesses across India and worldwide\",favicon:\"https://framerusercontent.com/assets/982HxD41IeODjAXFVweSTpmOtI.svg\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/JWqLqeUlNJ3tbtsLkRJcji0Lvhk.png\",title:\"LogoClub99 – Branding & Web Design Agency, India\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}