{"version":3,"sources":["Cookies.tsx"],"sourcesContent":["import type { Transition } from \"framer-motion\"\nimport type { CSSProperties } from \"react\"\nimport type { ConsentModes } from \"./hooks/consent.ts\"\nimport type { BannerComponentProps } from \"./lib/Banner.tsx\"\nimport type { FlexboxPosition } from \"./lib/utils.ts\"\n\nimport {\n    addPropertyControls,\n    ControlType,\n    useIsOnFramerCanvas,\n    withCSS,\n} from \"framer\"\nimport { AnimatePresence, isBrowser, motion } from \"framer-motion\"\nimport { lazy, startTransition, Suspense, useEffect, useState } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport {\n    defaultConsent,\n    useConsent,\n    useGTMDefaultConsent,\n} from \"./hooks/consent.ts\"\nimport { useRegion } from \"./hooks/region.ts\"\nimport { Banner } from \"./lib/Banner.tsx\"\nimport { inEU } from \"./lib/inEU.ts\"\nimport {\n    DEFAULT_FONT_FAMILY,\n    getFlexboxValues,\n    interactionResponse,\n    yieldBeforeCb,\n} from \"./lib/utils.ts\"\n\ninterface ConsentEventProps {\n    isInEU: boolean\n}\n\ntype ConsentChangeEventProps = ConsentEventProps & {\n    consent: ConsentModes\n}\n\nexport interface CookieBannerProps {\n    gtmId?: string\n    preview: boolean\n    content: ContentProps\n    trigger: TriggerProps\n    banner: BannerProps\n    button: ButtonsProps\n    options: OptionsProps\n    style: CSSProperties\n\n    /** When set to `true`, will not initialize GTM after intializing the cookie banner. Requires GTM to be loaded externally (e.g. in the head) */\n    gtmLoadedExternally?: boolean\n\n    /** Fires everytime the cookie banner is visually shown in the DOM */\n    onShown?: (props: ConsentEventProps) => void\n\n    /** Fires everytime consent is changed */\n    onConsentChange?: (props: ConsentChangeEventProps) => void\n\n    /** Fires when a user explicitely clicks the accept button. */\n    onAccept?: (props: ConsentEventProps) => void\n\n    /** Fires when a user explicitely clicks the dismiss button. */\n    onDismiss?: (props: ConsentEventProps) => void\n\n    /** Fires when a user explicitely clicks the reject button. */\n    onReject?: (props: ConsentEventProps) => void\n\n    /** Fires when a user explicitely clicks the safe preferences button. */\n    onSavePreferences?: (props: ConsentEventProps) => void\n}\n\n// Keep track of open state between page reloads\nlet initiallyOpen = false\n\n/**\n * COOKIE BANNER\n * By Floris Verloop\n *\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n *\n */\nexport default function CookieBanner({\n    gtmId,\n    preview,\n    trigger,\n    banner,\n    button,\n    content,\n    options,\n    style,\n    gtmLoadedExternally,\n    onShown,\n    onConsentChange,\n    onAccept,\n    onDismiss,\n    onReject,\n    onSavePreferences,\n}: CookieBannerProps) {\n    const isOnFramerCanvas = useIsOnFramerCanvas()\n    const isPreview = preview && isOnFramerCanvas\n    const skipLogic = !preview && isOnFramerCanvas\n    const isInEU = isBrowser ? inEU() : false\n\n    const gtmDefaults = useGTMDefaultConsent()\n    const region = useRegion({\n        content,\n        useRegionFromProps: isPreview,\n        // skip EU check (expensive) if we are on the canvas and don't want a preview\n        skipEUCheck: skipLogic,\n        regionFromGTM: gtmDefaults.region,\n    })\n    const consent = useConsent({\n        gtmId,\n        defaultConsent: gtmDefaults.available\n            ? gtmDefaults.consent\n            : region.defaults,\n        gtmLoadedExternally,\n        defaultsFromGTM: gtmDefaults.available,\n    })\n\n    const [isOpen, setIsOpen] = useState(initiallyOpen)\n\n    // On page switch, disable all transitions so the banner shows up as fast as possible.\n    const [instantlyShowOnMount, setInstantlyShowOnMount] =\n        useState(initiallyOpen)\n\n    useEffect(() => {\n        if (skipLogic) return\n\n        // Save open state between page switches\n        initiallyOpen = isOpen\n\n        // Disable instantly show on mount after first open\n        if (isOpen) {\n            setInstantlyShowOnMount(false)\n        }\n\n        // Track shown event\n        if (isOpen && !isPreview && onShown) {\n            yieldBeforeCb(() => onShown({ isInEU }), {\n                priority: \"user-blocking\",\n            })\n        }\n    }, [isOpen, skipLogic])\n\n    // Check if user should be prompted\n    useEffect(() => {\n        if (skipLogic) return\n\n        const noConsentGiven = consent.isInitialized && !consent.isDismissed\n        const shouldAutoAccept =\n            region.type === \"simple\" && !consent.isAutoAccepted\n\n        if (noConsentGiven) {\n            performance.mark(\"framer-cookie-open\")\n            setIsOpen(true)\n\n            /** Automatically accept all cookies for simple banner. */\n            if (shouldAutoAccept) {\n                consent.autoAccept()\n\n                // Fire callback\n                if (onAccept) {\n                    yieldBeforeCb(() => onAccept({ isInEU }))\n                }\n            }\n        }\n\n        if (consent.isDismissed) {\n            setIsOpen(false)\n        }\n    }, [consent.isInitialized, consent.isDismissed, skipLogic])\n\n    useEffect(() => {\n        if (skipLogic) return\n\n        if (onConsentChange) {\n            yieldBeforeCb(() =>\n                onConsentChange({ isInEU, consent: consent.modes })\n            )\n        }\n    }, [consent.modes, skipLogic])\n\n    async function handleDismiss() {\n        await interactionResponse()\n\n        consent.dismiss()\n        setIsOpen(false)\n\n        // Fire callback\n        if (onDismiss) {\n            yieldBeforeCb(() => onDismiss({ isInEU }))\n        }\n    }\n\n    async function handleAcceptAll() {\n        await interactionResponse()\n\n        consent.acceptAll()\n        setIsOpen(false)\n\n        // Fire callback\n        if (onAccept) {\n            yieldBeforeCb(() => onAccept({ isInEU }))\n        }\n    }\n\n    async function handleRejectAll() {\n        await interactionResponse()\n\n        consent.rejectAll()\n        setIsOpen(false)\n\n        // Fire callback\n        if (onReject) {\n            yieldBeforeCb(() => onReject({ isInEU }))\n        }\n    }\n\n    async function handleAcceptCurrent() {\n        await interactionResponse()\n\n        consent.acceptCurrent()\n        setIsOpen(false)\n\n        // Fire callbacks\n        yieldBeforeCb(() => {\n            if (onAccept) {\n                onAccept({ isInEU })\n            }\n        })\n        yieldBeforeCb(() => {\n            if (onSavePreferences) {\n                onSavePreferences({ isInEU })\n            }\n        })\n    }\n\n    if (isPreview) {\n        return (\n            <div style={{ ...style, width: banner.width }}>\n                <Banner\n                    banner={banner}\n                    button={button}\n                    region={region}\n                    options={options}\n                    previewOptions={isPreview && options.preview}\n                    consentModes={{ ...defaultConsent, necessary: true }}\n                    animateOnMount={false}\n                />\n            </div>\n        )\n    }\n\n    return (\n        <>\n            <Trigger\n                style={style}\n                trigger={trigger}\n                onClick={() => setIsOpen(true)}\n            />\n            {!skipLogic && (\n                <Overlay\n                    banner={banner}\n                    button={button}\n                    region={region}\n                    options={options}\n                    consentModes={consent.modes}\n                    animateOnMount={!instantlyShowOnMount}\n                    onAcceptAll={handleAcceptAll}\n                    onAcceptCurrent={handleAcceptCurrent}\n                    onRejectAll={handleRejectAll}\n                    onDismiss={handleDismiss}\n                    onToggleConsent={consent.toggleMode}\n                    isOpen={isOpen}\n                />\n            )}\n        </>\n    )\n}\n\nconst IconCookie = lazy(() => import(\"./lib/Icons.tsx\"))\n\nfunction Overlay(props: BannerComponentProps & { isOpen: boolean }) {\n    const insetValue = props.banner.insetPerSide\n        ? `${props.banner.insetTop}px ${props.banner.insetRight}px ${props.banner.insetBottom}px ${props.banner.insetLeft}px`\n        : `${props.banner.inset}px`\n\n    const { justifyContent, alignItems } = getFlexboxValues(\n        props.banner.position\n    )\n\n    const isOpen = props.isOpen\n\n    const [shouldRenderPortal, setShouldRenderPortal] = useState(isOpen)\n    // if the portal has previously been rendered, we want to keep rendering the portal, which ensures:\n    // - that AnimatePresence works (fade out effect)\n    // - we don't cause body style recalc/reflow when the DOM node is removed\n    if (!shouldRenderPortal && isOpen) setShouldRenderPortal(isOpen)\n\n    if (!shouldRenderPortal) return null\n\n    const blocking = props.region.blocking\n\n    return createPortal(\n        <div style={{ display: \"contents\" }}>\n            <AnimatePresence>\n                {isOpen ? (\n                    <motion.div\n                        style={{\n                            // We only need to span to the full viewport width if the overlay is blocking.\n                            // Otherwise, we optimize for a smaller layer size. see: https://framer-team.slack.com/archives/C05V49Q4NJ2/p1709820207863249\n                            top:\n                                blocking || alignItems === \"flex-start\"\n                                    ? 0\n                                    : undefined,\n                            left:\n                                blocking || justifyContent === \"flex-start\"\n                                    ? 0\n                                    : undefined,\n                            right:\n                                blocking || justifyContent === \"flex-end\"\n                                    ? 0\n                                    : undefined,\n                            height: blocking ? \"100%\" : undefined,\n                            width:\n                                blocking || justifyContent === \"center\"\n                                    ? \"100%\"\n                                    : undefined,\n                            bottom:\n                                blocking || alignItems === \"flex-end\"\n                                    ? 0\n                                    : undefined,\n                            boxSizing: \"border-box\",\n                            position: \"fixed\",\n                            touchAction: \"none\",\n                            padding: insetValue,\n                            zIndex: props.banner.zIndex,\n                            display: \"flex\",\n                            flexDirection: \"row\",\n                            gap: 20,\n                            justifyContent: \"center\",\n                            pointerEvents: blocking ? \"all\" : \"none\",\n                        }}\n                    >\n                        {blocking && (\n                            <Backdrop color={props.banner.style?.backdrop} />\n                        )}\n                        <div\n                            style={{\n                                width: \"100%\",\n                                height: \"100%\",\n                                display: \"flex\",\n                                justifyContent,\n                                alignItems,\n                                pointerEvents: \"none\",\n                                maxWidth:\n                                    props.banner.containerWidth > 0\n                                        ? props.banner.containerWidth\n                                        : \"unset\",\n                            }}\n                        >\n                            <Banner {...props} />\n                        </div>\n                    </motion.div>\n                ) : null}\n            </AnimatePresence>\n        </div>,\n        document.body\n    )\n}\n\ninterface TriggerComponentProps {\n    trigger: TriggerProps\n    style: CSSProperties\n    onClick: () => void\n}\n\nconst Trigger = withCSS(\n    ({ trigger, style, onClick }: TriggerComponentProps) => {\n        const isOnFramerCanvas = useIsOnFramerCanvas()\n\n        if (trigger.type !== \"none\") {\n            return (\n                <button\n                    className=\"__framer-cookie-component-button\"\n                    aria-label=\"Cookie Trigger\"\n                    style={{\n                        width: \"100%\",\n                        height: \"100%\",\n                        background: \"none\",\n                        display: \"flex\",\n                        border: \"none\",\n                        padding: 0,\n                        color: trigger.color,\n                        fontSize: 16,\n                        cursor: \"pointer\",\n                        ...trigger.textFont,\n                    }}\n                    onClick={onClick}\n                >\n                    {trigger.type === \"icon\" ? (\n                        <>\n                            {trigger.iconType === \"custom\" &&\n                            trigger.iconImage ? (\n                                <img\n                                    alt=\"icon entry point for Site Search\"\n                                    src={trigger.iconImage.src}\n                                    width={trigger.iconSize}\n                                    height={trigger.iconSize}\n                                />\n                            ) : (\n                                <Suspense>\n                                    <IconCookie\n                                        width={trigger.iconSize}\n                                        height={trigger.iconSize}\n                                        color={trigger.color}\n                                    />\n                                </Suspense>\n                            )}\n                        </>\n                    ) : (\n                        <span style={{ whiteSpace: \"nowrap\" }}>\n                            {trigger.text}\n                        </span>\n                    )}\n                </button>\n            )\n        }\n\n        if (isOnFramerCanvas) {\n            return (\n                <div\n                    style={{\n                        borderRadius: 8,\n                        color: \"#09F\",\n                        border: \"1px dashed #09F\",\n                        background: \"rgba(0, 153, 255, 0.1)\",\n                        padding: 20,\n                        display: \"flex\",\n                        flexDirection: \"column\",\n                        gap: 5,\n                        fontFamily: DEFAULT_FONT_FAMILY,\n                        textAlign: \"center\",\n                        justifyContent: \"center\",\n                        width: 164,\n                        ...style,\n                    }}\n                >\n                    <p\n                        style={{\n                            fontSize: 12,\n                            fontWeight: 600,\n                            lineHeight: 1,\n                            margin: 0,\n                        }}\n                    >\n                        Cookie Banner\n                    </p>\n                    <p style={{ fontSize: 12, lineHeight: 1.5, margin: 0 }}>\n                        Put on a page to add a Cookie Banner.\n                    </p>\n                </div>\n            )\n        }\n    },\n    \".__framer-cookie-component-button:focus:not(:focus-visible){outline-color:transparent}\",\n    \"framer-lib-cookie-trigger\"\n)\n\ninterface BackdropProps {\n    color: string\n}\n\nfunction Backdrop({ color }: BackdropProps) {\n    return (\n        <motion.div\n            initial={{ opacity: 0 }}\n            animate={{ opacity: 1 }}\n            exit={{ opacity: 0 }}\n            style={{\n                position: \"absolute\",\n                top: 0,\n                left: 0,\n                right: 0,\n                bottom: 0,\n                width: \"100%\",\n                height: \"100%\",\n                backgroundColor: color,\n                pointerEvents: \"none\",\n            }}\n        />\n    )\n}\n\ninterface PaddingProps {\n    padding: number\n    paddingPerSide: boolean\n    paddingTop: number\n    paddingRight: number\n    paddingBottom: number\n    paddingLeft: number\n}\n\ntype FontProps = Partial<{\n    fontFamily: string\n    fontSize: string\n    lineHeight: string\n    letterSpacing: string\n}>\n\ninterface ShadowProps {\n    shadowBlur: number\n    shadowColor: string\n    shadowX: number\n    shadowY: number\n}\n\ninterface BorderProps {\n    width: number\n    color: string\n    radius: number\n}\n\ninterface ResponsiveImage {\n    alt: string\n    src: string\n    srcSet?: string\n}\n\ninterface BannerStyleProps {\n    fontTitle: FontProps\n    colorTitle: string\n    fontBody: FontProps\n    colorBody: string\n    fill: string\n    backdrop?: string\n    link?: string\n    shadow?: ShadowProps\n    border: BorderProps\n}\n\ntype BannerProps = PaddingProps & {\n    zIndex: number\n    position: FlexboxPosition\n    inset: number\n    insetBottom: number\n    insetLeft: number\n    insetPerSide: boolean\n    insetRight: number\n    insetTop: number\n    width: number\n    containerWidth: number\n    style: BannerStyleProps\n    animation: AnimationProps\n}\n\nexport type ButtonsProps = PaddingProps & {\n    primary: {\n        fill: string\n        color: string\n        shadow?: ShadowProps\n    }\n    secondary: {\n        fill: string\n        color: string\n        shadow?: ShadowProps\n    }\n    labels: {\n        accept: string\n        reject: string\n        acceptAll: string\n        rejectAll: string\n        customize: string\n        save: string\n        confirm: string\n    }\n    font: FontProps\n    borderRadius: number\n    tapOpacity: number\n    hoverOpacity: number\n    direction: \"row\" | \"column\"\n    fluid: boolean\n}\n\ninterface AnimationProps {\n    x: number\n    y: number\n    scale: number\n    transition: Transition\n}\n\nexport interface PolicyProps {\n    label: string\n    prefix: string\n    link: string\n}\n\nexport type ContentType = \"simple\" | \"medium\" | \"advanced\"\nexport interface ContentProps {\n    isEU: boolean\n    euType: ContentType\n    euTitle: string\n    euDescription: string\n    euDefaults: ConsentModes\n    euPolicy: PolicyProps\n    euShowReject: boolean\n    euBlocking: boolean\n    worldType: ContentType\n    worldTitle: string\n    worldDescription: string\n    worldDefaults: ConsentModes\n    worldPolicy: PolicyProps\n    worldShowReject: boolean\n    worldBlocking: boolean\n}\n\ninterface Option {\n    title: string\n    description: string\n}\n\nexport type OptionsStyle = PaddingProps & {\n    fontTitle: FontProps\n    fontBody: FontProps\n    background: string\n    border: BorderProps\n    toggleColor: string\n    toggleColorInactive: string\n}\n\ninterface OptionsProps {\n    preview: boolean\n    necessary: Option & { optional: boolean }\n    analytics: Option\n    marketing: Option\n    preferences: Option\n    descriptions: boolean\n    style: OptionsStyle\n}\n\ninterface TriggerProps {\n    type: \"text\" | \"icon\" | \"none\"\n    color?: string\n    text?: string\n    textFont?: FontProps\n    iconType: \"default\" | \"custom\"\n    iconImage: ResponsiveImage\n    iconSize: number\n}\n\naddPropertyControls(CookieBanner, {\n    gtmId: {\n        title: \"GTM ID\",\n        type: ControlType.String,\n        placeholder: \"GTM-AAAAAAA\",\n        description:\n            \"Your GTM container ID.\\n[Learn more](https://www.framer.com/learn/cookie-banner/)\",\n    },\n    preview: {\n        type: ControlType.Boolean,\n        defaultValue: true,\n        description: \"Lets you preview the banner on the Canvas.\",\n    },\n    trigger: {\n        type: ControlType.Object,\n        buttonTitle: \"Icon, Text\",\n        controls: {\n            type: {\n                title: \"Type\",\n                type: ControlType.Enum,\n                options: [\"text\", \"icon\", \"none\"],\n                optionTitles: [\"Text\", \"Icon\", \"None\"],\n                defaultValue: \"text\",\n                displaySegmentedControl: true,\n            },\n            iconType: {\n                title: \"Icon\",\n                type: ControlType.Enum,\n                options: [\"default\", \"custom\"],\n                optionTitles: [\"Default\", \"Custom\"],\n                displaySegmentedControl: true,\n                hidden: (props) => props.type !== \"icon\",\n            },\n            text: {\n                title: \"Label\",\n                type: ControlType.String,\n                defaultValue: \"Cookie Settings\",\n                hidden: (props) => props.type !== \"text\",\n            },\n            textFont: {\n                // @ts-ignore - internal\n                type: ControlType.Font,\n                title: \" \",\n                controls: \"extended\",\n                hidden: (props) => props.type !== \"text\",\n            },\n            iconSize: {\n                title: \"Size\",\n                type: ControlType.Number,\n                displayStepper: true,\n                defaultValue: 24,\n                hidden: (props) => props.type !== \"icon\",\n            },\n            color: {\n                title: \"Color\",\n                type: ControlType.Color,\n                defaultValue: \"#333\",\n                hidden: (props) =>\n                    props.type === \"none\" ||\n                    (props.type === \"icon\" && props.iconType === \"custom\"),\n            },\n            iconImage: {\n                title: \"File\",\n                type: ControlType.ResponsiveImage,\n                allowedFileTypes: [\"jpg\", \"png\", \"svg\"],\n                hidden: (props) => props.iconType === \"default\",\n            },\n        },\n    },\n    banner: {\n        title: \"Banner\",\n        type: ControlType.Object,\n        buttonTitle: \"Font, Styles\",\n        controls: {\n            position: {\n                type: ControlType.Enum,\n                title: \"Position\",\n                options: [\n                    \"top-left\",\n                    \"top-center\",\n                    \"top-right\",\n                    \"bottom-right\",\n                    \"bottom-center\",\n                    \"bottom-left\",\n                ],\n                optionTitles: [\n                    \"Top Left\",\n                    \"Top Center\",\n                    \"Top Right\",\n                    \"Bottom Right\",\n                    \"Bottom Center\",\n                    \"Bottom Left\",\n                ],\n                defaultValue: \"bottom-right\",\n            },\n            zIndex: {\n                title: \"Z Index\",\n                type: ControlType.Number,\n                defaultValue: 10,\n                displayStepper: true,\n                min: 0,\n                max: 10,\n            },\n            width: {\n                title: \"Width\",\n                type: ControlType.Number,\n                defaultValue: 360,\n                min: 200,\n                max: 1000,\n                displayStepper: true,\n                step: 5,\n            },\n            containerWidth: {\n                title: \"Wrapping\",\n                type: ControlType.Number,\n                defaultValue: 0,\n                min: 0,\n            },\n            padding: {\n                title: \"Padding\",\n                type: ControlType.FusedNumber,\n                toggleKey: \"paddingPerSide\",\n                toggleTitles: [\"Padding\", \"Padding per side\"],\n                defaultValue: 20,\n                valueKeys: [\n                    \"paddingTop\",\n                    \"paddingRight\",\n                    \"paddingBottom\",\n                    \"paddingLeft\",\n                ],\n                valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n                min: 0,\n            },\n            inset: {\n                title: \"Inset\",\n                type: ControlType.FusedNumber,\n                toggleKey: \"insetPerSide\",\n                toggleTitles: [\"Inset\", \"Inset per side\"],\n                defaultValue: 20,\n                valueKeys: [\n                    \"insetTop\",\n                    \"insetRight\",\n                    \"insetBottom\",\n                    \"insetLeft\",\n                ],\n                valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n                min: 0,\n            },\n            style: {\n                type: ControlType.Object,\n                title: \"Style\",\n                buttonTitle: \"Fonts, Colors, Shadow\",\n                controls: {\n                    fontTitle: {\n                        // @ts-ignore - internal\n                        type: ControlType.Font,\n                        title: \"Title\",\n                        controls: \"extended\",\n                    },\n                    colorTitle: {\n                        title: \" \",\n                        type: ControlType.Color,\n                        defaultValue: \"#000\",\n                    },\n                    fontBody: {\n                        // @ts-ignore - internal\n                        type: ControlType.Font,\n                        title: \"Body\",\n                        controls: \"extended\",\n                    },\n                    colorBody: {\n                        title: \" \",\n                        type: ControlType.Color,\n                        defaultValue: \"#444\",\n                    },\n                    fill: {\n                        title: \"Fill\",\n                        type: ControlType.Color,\n                        defaultValue: \"#FFF\",\n                    },\n                    link: {\n                        title: \"Link\",\n                        type: ControlType.Color,\n                        optional: true,\n                        defaultValue: \"#999\",\n                    },\n                    border: {\n                        type: ControlType.Object,\n                        title: \"Border\",\n                        buttonTitle: \"Radius, Width\",\n                        controls: {\n                            radius: {\n                                title: \"Radius\",\n                                type: ControlType.Number,\n                                displayStepper: true,\n                                min: 0,\n                                defaultValue: 14,\n                            },\n                            width: {\n                                title: \"Width\",\n                                type: ControlType.Number,\n                                displayStepper: true,\n                                min: 0,\n                                defaultValue: 1,\n                            },\n                            color: {\n                                title: \"Color\",\n                                type: ControlType.Color,\n                                defaultValue: \"rgba(0,0,0,0.05)\",\n                            },\n                        },\n                    },\n                    shadow: {\n                        type: ControlType.Object,\n                        title: \"Shadow\",\n                        optional: true,\n                        controls: {\n                            shadowColor: {\n                                title: \"Color\",\n                                type: ControlType.Color,\n                                defaultValue: \"rgba(0,0,0,0.25)\",\n                            },\n                            shadowX: {\n                                title: \"X\",\n                                type: ControlType.Number,\n                                min: -100,\n                                max: 100,\n                                defaultValue: 0,\n                            },\n                            shadowY: {\n                                title: \"Y\",\n                                type: ControlType.Number,\n                                min: -100,\n                                max: 100,\n                                defaultValue: 2,\n                            },\n                            shadowBlur: {\n                                title: \"Blur\",\n                                type: ControlType.Number,\n                                min: 0,\n                                max: 100,\n                                defaultValue: 4,\n                            },\n                        },\n                    },\n                    backdrop: {\n                        title: \"Backdrop\",\n                        type: ControlType.Color,\n                        defaultValue: \"rgba(0,0,0,0.1)\",\n                        hidden: (_, props) =>\n                            !props.content.euBlocking &&\n                            !props.content.worldBlocking,\n                    },\n                },\n            },\n            animation: {\n                icon: \"effect\",\n                buttonTitle: \"Options\",\n                type: ControlType.Object,\n                controls: {\n                    x: {\n                        type: ControlType.Number,\n                        displayStepper: true,\n                        defaultValue: 0,\n                    },\n                    y: {\n                        type: ControlType.Number,\n                        displayStepper: true,\n                        defaultValue: 10,\n                    },\n                    scale: {\n                        type: ControlType.Number,\n                        min: 0,\n                        step: 0.1,\n                        defaultValue: 1,\n                    },\n                    transition: {\n                        type: ControlType.Transition,\n                    },\n                },\n            },\n        },\n    },\n    button: {\n        title: \"Buttons\",\n        type: ControlType.Object,\n        buttonTitle: \"Variants, Style\",\n        controls: {\n            primary: {\n                title: \"Primary\",\n                type: ControlType.Object,\n                buttonTitle: \"Colors, Shadow\",\n                controls: {\n                    fill: {\n                        title: \"Fill\",\n                        type: ControlType.Color,\n                        defaultValue: \"#000\",\n                    },\n                    color: {\n                        title: \"Color\",\n                        type: ControlType.Color,\n                        defaultValue: \"#FFF\",\n                    },\n                    shadow: {\n                        type: ControlType.Object,\n                        title: \"Shadow\",\n                        optional: true,\n                        controls: {\n                            shadowColor: {\n                                title: \"Color\",\n                                type: ControlType.Color,\n                                defaultValue: \"rgba(0,0,0,0.25)\",\n                            },\n                            shadowX: {\n                                title: \"X\",\n                                type: ControlType.Number,\n                                min: -100,\n                                max: 100,\n                            },\n                            shadowY: {\n                                title: \"Y\",\n                                type: ControlType.Number,\n                                min: -100,\n                                max: 100,\n                            },\n                            shadowBlur: {\n                                title: \"Blur\",\n                                type: ControlType.Number,\n                                min: 0,\n                                max: 100,\n                            },\n                        },\n                    },\n                },\n            },\n            secondary: {\n                title: \"Secondary\",\n                type: ControlType.Object,\n                buttonTitle: \"Colors, Shadow\",\n                controls: {\n                    fill: {\n                        title: \"Fill\",\n                        type: ControlType.Color,\n                        defaultValue: \"#EEE\",\n                    },\n                    color: {\n                        title: \"Color\",\n                        type: ControlType.Color,\n                        defaultValue: \"#444\",\n                    },\n                    shadow: {\n                        type: ControlType.Object,\n                        title: \"Shadow\",\n                        optional: true,\n                        controls: {\n                            shadowColor: {\n                                title: \"Color\",\n                                type: ControlType.Color,\n                                defaultValue: \"rgba(0,0,0,0.25)\",\n                            },\n                            shadowX: {\n                                title: \"X\",\n                                type: ControlType.Number,\n                                min: -100,\n                                max: 100,\n                            },\n                            shadowY: {\n                                title: \"Y\",\n                                type: ControlType.Number,\n                                min: -100,\n                                max: 100,\n                            },\n                            shadowBlur: {\n                                title: \"Blur\",\n                                type: ControlType.Number,\n                                min: 0,\n                                max: 100,\n                            },\n                        },\n                    },\n                },\n            },\n            labels: {\n                type: ControlType.Object,\n                controls: {\n                    accept: {\n                        type: ControlType.String,\n                        defaultValue: \"Accept\",\n                    },\n                    reject: {\n                        type: ControlType.String,\n                        defaultValue: \"Reject\",\n                    },\n                    acceptAll: {\n                        type: ControlType.String,\n                        defaultValue: \"Accept all\",\n                    },\n                    rejectAll: {\n                        type: ControlType.String,\n                        defaultValue: \"Reject all\",\n                    },\n                    customize: {\n                        type: ControlType.String,\n                        defaultValue: \"Customize\",\n                    },\n                    save: {\n                        type: ControlType.String,\n                        defaultValue: \"Save Preferences\",\n                    },\n                    confirm: {\n                        type: ControlType.String,\n                        defaultValue: \"Okay\",\n                    },\n                },\n            },\n            font: {\n                // @ts-ignore - internal\n                type: ControlType.Font,\n                title: \"Font\",\n                controls: \"extended\",\n            },\n            padding: {\n                title: \"Padding\",\n                type: ControlType.FusedNumber,\n                toggleKey: \"paddingPerSide\",\n                toggleTitles: [\"Padding\", \"Padding per side\"],\n                defaultValue: 10,\n                valueKeys: [\n                    \"paddingTop\",\n                    \"paddingRight\",\n                    \"paddingBottom\",\n                    \"paddingLeft\",\n                ],\n                valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n                min: 0,\n            },\n            borderRadius: {\n                title: \"Radius\",\n                type: ControlType.Number,\n                displayStepper: true,\n                min: 0,\n                defaultValue: 8,\n            },\n            tapOpacity: {\n                title: \"Tap Opacity\",\n                type: ControlType.Number,\n                step: 0.1,\n                displayStepper: true,\n                max: 1,\n                min: 0,\n                defaultValue: 0.4,\n            },\n            hoverOpacity: {\n                title: \"Hover Opacity\",\n                type: ControlType.Number,\n                step: 0.1,\n                displayStepper: true,\n                max: 1,\n                min: 0,\n                defaultValue: 0.6,\n            },\n            direction: {\n                type: ControlType.Enum,\n                title: \"Direction\",\n                options: [\"row\", \"column\"],\n                // @ts-ignore - internal\n                optionIcons: [\"direction-horizontal\", \"direction-vertical\"],\n                defaultValue: \"row\",\n                displaySegmentedControl: true,\n            },\n            fluid: {\n                title: \"Fluid\",\n                type: ControlType.Boolean,\n                defaultValue: true,\n            },\n        },\n    },\n    content: {\n        title: \"Regions\",\n        type: ControlType.Object,\n        buttonTitle: \"World, EU\",\n        controls: {\n            isEU: {\n                title: \" \",\n                type: ControlType.Boolean,\n                defaultValue: true,\n                enabledTitle: \"EU\",\n                disabledTitle: \"World\",\n            },\n            euType: {\n                title: \"Choices\",\n                type: ControlType.Enum,\n                options: [\"simple\", \"medium\", \"advanced\"],\n                optionTitles: [\"None\", \"Accept/Reject\", \"Customizable\"],\n                defaultValue: \"medium\",\n                hidden: (props) => !props.isEU,\n            },\n            euTitle: {\n                title: \"Title\",\n                type: ControlType.String,\n                defaultValue: \"Cookie Settings\",\n                hidden: (props) => props.euType === \"simple\" || !props.isEU,\n            },\n            euDescription: {\n                title: \"Description\",\n                type: ControlType.String,\n                defaultValue:\n                    \"We use cookies to enhance your experience, analyze site traffic and deliver personalized content.\",\n                displayTextArea: true,\n                hidden: (props) => !props.isEU,\n            },\n            euPolicy: {\n                title: \"Policy\",\n                type: ControlType.Object,\n                buttonTitle: \"Link, Prefix\",\n                controls: {\n                    link: {\n                        title: \"Link\",\n                        type: ControlType.Link,\n                        defaultValue: \"https://www.framer.com/legal/policy/\",\n                    },\n                    prefix: {\n                        title: \"Prefix\",\n                        type: ControlType.String,\n                        defaultValue: \"Read our\",\n                        //hidden: (props) => !props.link,\n                    },\n                    label: {\n                        title: \"Label\",\n                        type: ControlType.String,\n                        defaultValue: \"Cookie Policy\",\n                        //hidden: (props) => !props.link,\n                    },\n                },\n                hidden: (props) => !props.isEU,\n            },\n            euDefaults: {\n                title: \"Defaults\",\n                buttonTitle: \"Options\",\n                type: ControlType.Object,\n                controls: {\n                    necessary: {\n                        type: ControlType.Boolean,\n                        enabledTitle: \"Granted\",\n                        disabledTitle: \"Denied\",\n                        defaultValue: true,\n                    },\n                    preferences: {\n                        type: ControlType.Boolean,\n                        enabledTitle: \"Granted\",\n                        disabledTitle: \"Denied\",\n                        defaultValue: false,\n                    },\n                    analytics: {\n                        type: ControlType.Boolean,\n                        enabledTitle: \"Granted\",\n                        disabledTitle: \"Denied\",\n                        defaultValue: false,\n                    },\n                    marketing: {\n                        type: ControlType.Boolean,\n                        enabledTitle: \"Granted\",\n                        disabledTitle: \"Denied\",\n                        defaultValue: false,\n                        description:\n                            \"The default consent when the user hasn’t provided any yet.\",\n                    },\n                },\n                hidden: (props) => !props.isEU,\n            },\n            euShowReject: {\n                title: \"Reject All\",\n                type: ControlType.Boolean,\n                defaultValue: true,\n                enabledTitle: \"Show\",\n                disabledTitle: \"Hide\",\n                hidden: (props) => props.euType !== \"advanced\",\n            },\n            euBlocking: {\n                title: \"Blocking\",\n                type: ControlType.Boolean,\n                defaultValue: false,\n                description: \"Renders a content blocking backdrop.\",\n                hidden: (props) => !props.isEU,\n            },\n            worldType: {\n                title: \"Choices\",\n                type: ControlType.Enum,\n                options: [\"simple\", \"medium\", \"advanced\"],\n                optionTitles: [\"None\", \"Accept/Reject\", \"Customizable\"],\n                defaultValue: \"simple\",\n                hidden: (props) => props.isEU,\n            },\n            worldTitle: {\n                title: \"Title\",\n                type: ControlType.String,\n                defaultValue: \"Cookie Settings\",\n                hidden: (props) => props.worldType === \"simple\" || props.isEU,\n            },\n            worldDescription: {\n                title: \"Description\",\n                type: ControlType.String,\n                defaultValue:\n                    \"We use cookies to personalize content, run ads, and analyze traffic.\",\n                displayTextArea: true,\n                hidden: (props) => props.isEU,\n            },\n            worldPolicy: {\n                title: \"Policy\",\n                type: ControlType.Object,\n                buttonTitle: \"Link, Prefix\",\n                controls: {\n                    link: {\n                        title: \"Link\",\n                        type: ControlType.Link,\n                    },\n                    prefix: {\n                        title: \"Prefix\",\n                        type: ControlType.String,\n                        defaultValue: \"Read our\",\n                        //hidden: (props) => !props.link,\n                    },\n                    label: {\n                        title: \"Label\",\n                        type: ControlType.String,\n                        defaultValue: \"Cookie Policy\",\n                        //hidden: (props) => !props.link,\n                    },\n                },\n                hidden: (props) => props.isEU,\n            },\n            worldDefaults: {\n                title: \"Defaults\",\n                buttonTitle: \"Options\",\n                type: ControlType.Object,\n                controls: {\n                    necessary: {\n                        type: ControlType.Boolean,\n                        enabledTitle: \"Granted\",\n                        disabledTitle: \"Denied\",\n                        defaultValue: true,\n                    },\n                    preferences: {\n                        type: ControlType.Boolean,\n                        enabledTitle: \"Granted\",\n                        disabledTitle: \"Denied\",\n                        defaultValue: true,\n                    },\n                    analytics: {\n                        type: ControlType.Boolean,\n                        enabledTitle: \"Granted\",\n                        disabledTitle: \"Denied\",\n                        defaultValue: true,\n                    },\n                    marketing: {\n                        type: ControlType.Boolean,\n                        enabledTitle: \"Granted\",\n                        disabledTitle: \"Denied\",\n                        defaultValue: true,\n                        description:\n                            \"The default consent when the user hasn’t provided any yet.\",\n                    },\n                },\n                hidden: (props) => props.isEU,\n            },\n            worldShowReject: {\n                title: \"Reject All\",\n                type: ControlType.Boolean,\n                defaultValue: true,\n                enabledTitle: \"Show\",\n                disabledTitle: \"Hide\",\n                hidden: (props) => props.worldType !== \"advanced\",\n            },\n            worldBlocking: {\n                title: \"Blocking\",\n                type: ControlType.Boolean,\n                defaultValue: false,\n                description: \"Renders a content blocking backdrop.\",\n                hidden: (props) => props.isEU,\n            },\n        },\n    },\n    options: {\n        type: ControlType.Object,\n        buttonTitle: \"Content, Styles\",\n        hidden: (_, props) =>\n            props.content.euType !== \"advanced\" &&\n            props.content.worldType !== \"advanced\",\n        controls: {\n            preview: {\n                type: ControlType.Boolean,\n                defaultValue: false,\n                description: \"Open when previewing banner on the canvas.\",\n                hidden: (_, props) => !props.preview,\n            },\n            necessary: {\n                title: \"Necessary\",\n                type: ControlType.Object,\n                buttonTitle: \"Content\",\n                controls: {\n                    title: {\n                        title: \"Title\",\n                        type: ControlType.String,\n                        defaultValue: \"Necessary\",\n                    },\n                    description: {\n                        title: \"Description\",\n                        type: ControlType.String,\n                        defaultValue:\n                            \"Enables security and basic functionality.\",\n                        displayTextArea: true,\n                    },\n                    optional: {\n                        title: \"Optional\",\n                        type: ControlType.Boolean,\n                        defaultValue: true,\n                    },\n                },\n            },\n            preferences: {\n                title: \"Preferences\",\n                type: ControlType.Object,\n                buttonTitle: \"Content\",\n                controls: {\n                    title: {\n                        title: \"Title\",\n                        type: ControlType.String,\n                        defaultValue: \"Preferences\",\n                    },\n                    description: {\n                        title: \"Description\",\n                        type: ControlType.String,\n                        defaultValue:\n                            \"Enables personalized content and settings.\",\n                        displayTextArea: true,\n                        optional: true,\n                    },\n                },\n            },\n            analytics: {\n                title: \"Analytics\",\n                type: ControlType.Object,\n                buttonTitle: \"Content\",\n                controls: {\n                    title: {\n                        title: \"Title\",\n                        type: ControlType.String,\n                        defaultValue: \"Analytics\",\n                    },\n                    description: {\n                        title: \"Description\",\n                        type: ControlType.String,\n                        defaultValue: \"Enables tracking of performance.\",\n                        displayTextArea: true,\n                    },\n                },\n            },\n            marketing: {\n                title: \"Marketing\",\n                type: ControlType.Object,\n                buttonTitle: \"Content\",\n                controls: {\n                    title: {\n                        title: \"Title\",\n                        type: ControlType.String,\n                        defaultValue: \"Marketing\",\n                    },\n                    description: {\n                        title: \"Description\",\n                        type: ControlType.String,\n                        defaultValue:\n                            \"Enables ads personalization and tracking.\",\n                        displayTextArea: true,\n                    },\n                },\n            },\n            style: {\n                type: ControlType.Object,\n                title: \"Style\",\n                buttonTitle: \"Fonts, Colors\",\n                controls: {\n                    fontTitle: {\n                        // @ts-ignore - internal\n                        type: ControlType.Font,\n                        title: \"Title\",\n                        controls: \"basic\",\n                    },\n                    fontBody: {\n                        // @ts-ignore - internal\n                        type: ControlType.Font,\n                        title: \"Body\",\n                        controls: \"basic\",\n                    },\n                    background: {\n                        title: \"Background\",\n                        type: ControlType.Color,\n                        defaultValue: \"rgba(0,0,0,0.02)\",\n                    },\n                    border: {\n                        type: ControlType.Object,\n                        title: \"Border\",\n                        buttonTitle: \"Radius, Width\",\n                        controls: {\n                            radius: {\n                                title: \"Radius\",\n                                type: ControlType.Number,\n                                displayStepper: true,\n                                min: 0,\n                                defaultValue: 8,\n                            },\n                            width: {\n                                title: \"Width\",\n                                type: ControlType.Number,\n                                displayStepper: true,\n                            },\n                            color: {\n                                title: \"Color\",\n                                type: ControlType.Color,\n                                defaultValue: \"rgba(0,0,0,0.02)\",\n                            },\n                        },\n                    },\n                    toggleColor: {\n                        title: \"On\",\n                        type: ControlType.Color,\n                        defaultValue: \"#000\",\n                    },\n                    toggleColorInactive: {\n                        title: \"Off\",\n                        type: ControlType.Color,\n                        defaultValue: \"rgba(0,0,0,0.1)\",\n                    },\n                    padding: {\n                        title: \"Padding\",\n                        type: ControlType.FusedNumber,\n                        toggleKey: \"paddingPerSide\",\n                        toggleTitles: [\"Padding\", \"Padding per side\"],\n                        defaultValue: 12,\n                        valueKeys: [\n                            \"paddingTop\",\n                            \"paddingRight\",\n                            \"paddingBottom\",\n                            \"paddingLeft\",\n                        ],\n                        valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n                        min: 0,\n                    },\n                },\n            },\n        },\n    },\n})\n\nCookieBanner.displayName = \"Cookie Banner\"\n"],"names":[],"mappings":"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"}