{"version":3,"sources":["Search.tsx"],"sourcesContent":["import { createPortal } from \"react-dom\"\nimport React, {\n    useLayoutEffect,\n    useRef,\n    useMemo,\n    useState,\n    useEffect,\n    forwardRef,\n    createContext,\n} from \"react\"\nimport { AnimatePresence, motion, Transition } from \"framer-motion\"\nimport { SearchIcon } from \"./lib/Icons.tsx\"\nimport { addPropertyControls, ControlType, RenderTarget, withCSS } from \"framer\"\nimport {\n    Input,\n    SearchProps,\n    SearchModal,\n    SearchResultItemType,\n    SearchResultTitleType,\n    SearchResultSubtitleType,\n    SearchInputDividerType,\n    SearchInputClearButtonType,\n    SearchTheme,\n    SearchLayoutType,\n    SearchEntryType,\n    SearchIconType,\n} from \"./lib/SearchModal.tsx\"\n\nimport { useViewportSizeState } from \"./lib/useViewportSizeState.ts\"\nimport {\n    titleCase,\n    DEFAULT_FONT_FAMILY,\n    isEmptyObject,\n    animationKeyFromLayout,\n    getMetaTagContent,\n    checkIfOverLimit,\n} from \"./lib/utils.ts\"\nimport { Browser } from \"./lib/browser.ts\"\n\n// SITE SEARCH\n// By Anthony and Hunter\n\nenum EntryPointOptions {\n    icon = \"Icon\",\n    input = \"Input\",\n}\n\nexport interface Shadow {\n    color: string\n    x: number\n    y: number\n    blur: number\n    spread: number\n}\n\nfunction buildShadow(\n    shadowProperty: Shadow | undefined,\n    fallback: string = \"none\"\n): string {\n    if (!shadowProperty) return fallback\n    const { x, y, blur, color, spread } = shadowProperty\n    return `${x}px ${y}px ${blur}px ${spread}px ${color}`\n}\n\ntype OverlayProps = Pick<SearchProps, \"urlScope\" | \"theme\"> &\n    Pick<\n        EntryPointProps,\n        \"inputOptions\" | \"resultOptions\" | \"backdropOptions\" | \"modalOptions\"\n    > & {\n        layoutType: SearchLayoutType\n        onDismiss: () => void\n    }\n\nconst Overlay = forwardRef<HTMLDivElement, OverlayProps>(\n    function Overlay(props, ref) {\n        const { layoutType, theme, onDismiss } = props\n\n        useEffect(() => {\n            const handleKeyDown = (event: KeyboardEvent) => {\n                if (event.code === \"Escape\") {\n                    event.stopPropagation()\n                    onDismiss()\n                }\n            }\n\n            const handlePointerDown = (event: PointerEvent) => {\n                if (event.pointerType !== \"touch\") return\n                const isWithinSearchHeader = Boolean(\n                    event.target instanceof Element &&\n                        event.target.closest(\"[role=search]\")\n                )\n                if (isWithinSearchHeader) return\n                if (document.activeElement instanceof HTMLInputElement) {\n                    document.activeElement.blur()\n                }\n            }\n\n            // Event listener added to window so that pressing escape key to dimiss\n            // can be invoked from anywhere on the page.\n            window.addEventListener(\"keydown\", handleKeyDown)\n            window.addEventListener(\"pointerdown\", handlePointerDown, {\n                capture: true,\n            })\n\n            // Disable page scrolling when overlay is shown.\n            document.body.classList.add(bodyOverflowHidden)\n\n            return () => {\n                window.removeEventListener(\"keydown\", handleKeyDown)\n                window.removeEventListener(\"pointerdown\", handlePointerDown, {\n                    capture: true,\n                })\n                document.body.classList.remove(bodyOverflowHidden)\n            }\n        }, [])\n\n        return createPortal(\n            <div\n                ref={ref}\n                className=\"__framer-search-modal-container\"\n                role=\"presentation\"\n                style={{\n                    ...backdropStyles,\n                    zIndex: props.backdropOptions.zIndex,\n                    justifyContent:\n                        layoutType === SearchLayoutType.Sidebar\n                            ? \"flex-start\"\n                            : \"center\",\n                }}\n                onClick={onDismiss}\n            >\n                <motion.div\n                    role=\"presentation\"\n                    initial={{ opacity: 0 }}\n                    animate={{ opacity: 1 }}\n                    exit={{ opacity: 0, transition: { duration: 0 } }}\n                    transition={theme.overlayTransition}\n                    style={{\n                        top: 0,\n                        left: 0,\n                        right: 0,\n                        bottom: 0,\n                        width: \"100%\",\n                        height: \"100%\",\n                        boxSizing: \"border-box\",\n                        position: \"absolute\",\n                        touchAction: \"none\",\n                        backgroundColor: props.backdropOptions.backgroundColor,\n                    }}\n                />\n                <SearchModal\n                    urlScope={props.urlScope}\n                    layoutType={layoutType}\n                    inputOptions={props.inputOptions}\n                    resultOptions={props.resultOptions}\n                    modalOptions={props.modalOptions}\n                    backdropOptions={props.backdropOptions}\n                    theme={props.theme}\n                    onDismiss={onDismiss}\n                />\n            </div>,\n            document.body\n        )\n    }\n)\n\nconst backdropStyles: React.CSSProperties = {\n    width: \"100%\",\n    boxSizing: \"border-box\",\n    willChange: \"transform\",\n    position: \"fixed\",\n    display: \"flex\",\n    alignItems: \"flex-start\",\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0,\n}\n\nconst containerStyle = {\n    height: \"100%\",\n    display: \"flex\",\n    borderRadius: 10,\n    cursor: \"inherit\",\n    overflow: \"hidden\",\n}\n\nexport interface ResponsiveImage {\n    alt: string\n    src: string\n    srcSet?: string\n}\n\nexport interface WindowAnimation {\n    opacity: number\n    scale: number\n    rotate: number\n    offsetX: number\n    offsetY: number\n    transition: Transition\n}\n\nexport interface EntryPointProps {\n    urlScope: string\n    iconType: SearchIconType\n    entryType: SearchEntryType\n    iconColor: string\n    iconImage?: ResponsiveImage\n    iconSize: number\n    modalOptions: {\n        layoutType: SearchLayoutType\n        backgroundColor: string\n        shadow: Shadow\n        width: number\n        top: number\n        heightIsStatic: boolean\n        heightTransition: Transition\n        borderRadius: number\n        windowAnimation?: WindowAnimation\n    }\n    backdropOptions: {\n        backgroundColor: string\n        zIndex: number\n        transition: Transition\n    }\n    inputOptions: {\n        iconOptions: {\n            iconType: SearchIconType\n            iconColor: string\n            iconImage?: ResponsiveImage\n            iconSize: number\n        }\n        placeholderOptions: {\n            placeholderText: string\n            placeholderColor: string\n        }\n        inputFont: React.CSSProperties | undefined\n        dividerType: SearchInputDividerType\n        clearButtonType: SearchInputClearButtonType\n        clearButtonText: string\n    }\n    resultOptions: {\n        itemType: SearchResultItemType\n        titleColor: string\n        titleFont: React.CSSProperties | undefined\n        titleType: SearchResultTitleType\n        subtitleOptions: {\n            subtitleColor: string\n            subtitleFont: React.CSSProperties | undefined\n            subtitleType: SearchResultSubtitleType\n        }\n    }\n    style?: React.CSSProperties\n}\n\nconst bodyOverflowHidden = \"__framer-overflow-hidden\"\n\n/**\n *\n * SEARCH\n * By Anthony and Hunter\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 40\n * @framerIntrinsicHeight 40\n */\nconst EntryPoint: React.ComponentType<EntryPointProps> =\n    withCSS<EntryPointProps>(\n        function EntryPoint(props) {\n            const overlay = useRef<HTMLDivElement>(null)\n            const [isOpen, setIsOpen] = useState(false)\n            const [isOverLimit, setIsOverLimit] = useState(false)\n            const [isSafariTouchDevice, setIsSafariTouchDevice] =\n                useState(false)\n            const [isOnCanvas] = useState(\n                () => RenderTarget.current() === RenderTarget.canvas\n            )\n\n            useEffect(() => {\n                setIsOverLimit(checkIfOverLimit())\n                setIsSafariTouchDevice(Browser.isSafari() && Browser.isTouch())\n            }, [])\n\n            const baseInputFontSize = props.inputOptions?.inputFont?.fontSize\n                ? props.inputOptions.inputFont.fontSize\n                : \"16px\"\n            // The font size is set to a minimum of `16px` on Safari with touch screens\n            // because otherwise Safari will zoom in slightly if the type size is smaller.\n            const inputFontSize = isSafariTouchDevice\n                ? `max(16px, ${baseInputFontSize})`\n                : baseInputFontSize\n\n            const layoutType = useViewportSizeState((size) => {\n                if (size.width < props.modalOptions.width + 10) {\n                    return SearchLayoutType.FixedTop\n                }\n\n                // @ts-ignore – Fallback\n                return props.modalOptions.layoutType || props.layoutType\n            })\n\n            const theme: SearchTheme = {\n                subtitleColor:\n                    props.resultOptions.subtitleOptions.subtitleColor,\n                backgroundColor: props.modalOptions.backgroundColor,\n                foregroundColor: props.resultOptions.titleColor,\n                placeholderColor:\n                    props.inputOptions.placeholderOptions.placeholderColor,\n                titleFont:\n                    props.resultOptions?.titleFont &&\n                    !isEmptyObject(props.resultOptions.titleFont)\n                        ? props.resultOptions.titleFont\n                        : {\n                              fontSize: 14,\n                              fontFamily: DEFAULT_FONT_FAMILY,\n                              fontWeight: 500,\n                          },\n                subtitleFont:\n                    props.resultOptions.subtitleOptions?.subtitleFont &&\n                    !isEmptyObject(\n                        props.resultOptions.subtitleOptions.subtitleFont\n                    )\n                        ? props.resultOptions.subtitleOptions.subtitleFont\n                        : {\n                              fontSize: 12,\n                              fontFamily: DEFAULT_FONT_FAMILY,\n                              fontWeight: 500,\n                          },\n                inputFont:\n                    props.inputOptions?.inputFont &&\n                    !isEmptyObject(props.inputOptions.inputFont)\n                        ? props.inputOptions.inputFont\n                        : {\n                              fontSize: 16,\n                              fontFamily: DEFAULT_FONT_FAMILY,\n                              fontWeight: 500,\n                          },\n                // Keep separate so we can more easily override\n                inputFontSize: inputFontSize,\n                width: props.modalOptions.width,\n                offsetTop: props.modalOptions.top,\n                borderRadius: props.modalOptions.borderRadius,\n                shadow: buildShadow(props.modalOptions.shadow),\n                entryIconColor: props.iconColor,\n                entryIconSize: props.iconSize,\n                entryIconImage: props.iconImage,\n\n                inputIconSize: props.inputOptions.iconOptions.iconSize,\n                inputIconColor: props.inputOptions.iconOptions.iconColor,\n                inputIconImage: props.inputOptions.iconOptions.iconImage,\n                gapBetweenStatusAndSearch: 16,\n                gapBetweenResults: 1,\n                scrollBarWidth: 20,\n                margin: 10,\n                spacing: 8,\n                zIndex: props.backdropOptions.zIndex,\n                horizontalSpacing: 20,\n                overlayTransition: props.backdropOptions.transition,\n            }\n\n            const handleClick = (event: React.MouseEvent) => {\n                // Both need to keep `autofocus` working on the search input.\n                event.preventDefault()\n                event.stopPropagation()\n\n                if (isOverLimit) return\n\n                setIsOpen(true)\n            }\n\n            return (\n                <div\n                    style={{\n                        ...containerStyle,\n                        ...props.style,\n                        pointerEvents: isOverLimit ? \"none\" : \"auto\",\n                        opacity: isOverLimit ? 0.4 : 1,\n                    }}\n                >\n                    <button\n                        aria-label=\"Search Icon\"\n                        style={{\n                            width: \"100%\",\n                            height: \"100%\",\n                            display: \"flex\",\n                            alignItems: \"center\",\n                            justifyContent: \"center\",\n                            background: \"none\",\n                            cursor: \"inherit\",\n                            color: \"inherit\",\n                            border: \"none\",\n                            borderRadius: 10,\n                            padding: 0,\n                        }}\n                        onClick={handleClick}\n                    >\n                        {props.iconType === SearchIconType.Custom &&\n                        theme.entryIconImage ? (\n                            <img\n                                alt=\"icon entry point for Site Search\"\n                                src={theme.entryIconImage.src}\n                                width={theme.entryIconSize}\n                                height={theme.entryIconSize}\n                            />\n                        ) : (\n                            <SearchIcon\n                                color={theme.entryIconColor}\n                                width={theme.entryIconSize}\n                                height={theme.entryIconSize}\n                            />\n                        )}\n                    </button>\n                    <AnimatePresence>\n                        {isOpen && !isOnCanvas && (\n                            <Overlay\n                                ref={overlay}\n                                layoutType={layoutType}\n                                urlScope={props.urlScope}\n                                inputOptions={props.inputOptions}\n                                resultOptions={props.resultOptions}\n                                backdropOptions={props.backdropOptions}\n                                modalOptions={props.modalOptions}\n                                theme={theme}\n                                onDismiss={() => setIsOpen(false)}\n                            />\n                        )}\n                    </AnimatePresence>\n                </div>\n            )\n        },\n        [\n            // Prevent scrolling on iOS Safari when Input is focused.\n            // From: https://gist.github.com/kiding/72721a0553fa93198ae2bb6eefaa3299\n            `\n        @keyframes __framer-blink-input {\n            0% { opacity: 0; }\n            100% { opacity: 1; }\n        }\n\n        .__framer-search-modal-container input:focus {\n            animation: __framer-blink-input 0.01s;\n        }\n        `,\n            // Allow styling of input placeholder\n            `\n         .__framer-search-modal-container input::placeholder, \n         .__framer-search-modal-container input::-webkit-input-placeholder { \n            color: var(--framer-search-placeholder-color, #999999);\n            opacity: 1;\n        }\n        `,\n\n            // Allow fallback to 100vh when dvh unit is not supported.\n            `\n        .__framer-search-modal-container {\n            height: 100vh;\n            height: 100dvh;\n        }\n        .__framer-search-modal-container .__framer-max-height-80dvh {\n            max-height: 80vh;\n            max-height: 80dvh;\n        }\n        `,\n            `\n        body.${bodyOverflowHidden} {\n            overflow: hidden;\n        }`,\n            // Increase hit target\n            `\n        button.__framer-search-clear-button {\n            position: relative;\n        }\n        button.__framer-search-clear-button::after {\n            content: \"\";\n            position: absolute;\n            top: -10px;\n            right: -10px;\n            bottom: -10px;\n            left: -10px;\n        }`,\n        ],\n        \"framer-lib-search\"\n    )\n\nexport default EntryPoint\naddPropertyControls(EntryPoint, {\n    urlScope: {\n        title: \"Scope\",\n        // @ts-ignore - Internal\n        type: ControlType.PageScope,\n    },\n    // entryType: {\n    //     title: \"Type\",\n    //     type: ControlType.Enum,\n    //     options: Object.values(SearchEntryType),\n    //     optionTitles: Object.values(SearchEntryType).map(titleCase),\n    //     displaySegmentedControl: true,\n    // },\n    iconType: {\n        title: \"Icon\",\n        type: ControlType.Enum,\n        options: Object.values(SearchIconType),\n        optionTitles: Object.values(SearchIconType).map(titleCase),\n        displaySegmentedControl: true,\n    },\n    iconColor: {\n        title: \"Color\",\n        type: ControlType.Color,\n        defaultValue: \"#333\",\n        hidden: (props) => props.iconType === SearchIconType.Custom,\n    },\n    iconImage: {\n        title: \"File\",\n        type: ControlType.ResponsiveImage,\n        allowedFileTypes: [\"jpg\", \"png\", \"svg\"],\n        hidden: (props) => props.iconType === SearchIconType.Default,\n    },\n    iconSize: {\n        title: \"Size\",\n        type: ControlType.Number,\n        displayStepper: true,\n        defaultValue: 24,\n    },\n    inputOptions: {\n        title: \"Input\",\n        type: ControlType.Object,\n        buttonTitle: \"Icon, Styles\",\n\n        controls: {\n            iconOptions: {\n                title: \"Icon\",\n                type: ControlType.Object,\n                buttonTitle: \"Color, Size\",\n                controls: {\n                    iconType: {\n                        title: \"Icon\",\n                        type: ControlType.Enum,\n                        options: Object.values(SearchIconType),\n                        optionTitles:\n                            Object.values(SearchIconType).map(titleCase),\n                        displaySegmentedControl: true,\n                    },\n                    iconColor: {\n                        title: \"Color\",\n                        type: ControlType.Color,\n                        defaultValue: \"rgba(0, 0, 0, 0.45)\",\n                        hidden: ({ iconType }) => {\n                            return iconType === SearchIconType.Custom\n                        },\n                    },\n                    iconImage: {\n                        title: \"File\",\n                        type: ControlType.ResponsiveImage,\n                        allowedFileTypes: [\"jpg\", \"png\", \"svg\"],\n                        hidden: ({ iconType }) =>\n                            iconType === SearchIconType.Default,\n                    },\n                    iconSize: {\n                        title: \"Icon Size\",\n                        type: ControlType.Number,\n                        displayStepper: true,\n                        defaultValue: 18,\n                        min: 0,\n                        max: 100,\n                    },\n                },\n            },\n            inputFont: {\n                title: \"Font\",\n                // @ts-ignore – Internal\n                type: ControlType.Font,\n                displayFontSize: true,\n            },\n            textColor: {\n                title: \"Color\",\n                type: ControlType.Color,\n                defaultValue: \"#333\",\n            },\n            placeholderOptions: {\n                title: \"Placeholder\",\n                type: ControlType.Object,\n                buttonTitle: \"Color, Text\",\n                controls: {\n                    placeholderText: {\n                        title: \"Text\",\n                        type: ControlType.String,\n                        defaultValue: \"Search...\",\n                    },\n                    placeholderColor: {\n                        title: \"Color\",\n                        type: ControlType.Color,\n                        defaultValue: \"rgba(0,0,0,0.4)\",\n                    },\n                },\n            },\n            dividerType: {\n                title: \"Divider\",\n                type: ControlType.Enum,\n                options: Object.values(SearchInputDividerType),\n                optionTitles: Object.keys(SearchInputDividerType).map(\n                    titleCase\n                ),\n                defaultValue: SearchInputDividerType.FullWidth,\n            },\n            clearButtonType: {\n                title: \"Clear Type\",\n                type: ControlType.Enum,\n                options: Object.values(SearchInputClearButtonType),\n                optionTitles: Object.keys(SearchInputClearButtonType).map(\n                    titleCase\n                ),\n                defaultValue: SearchInputClearButtonType.Icon,\n            },\n            clearButtonText: {\n                title: \"Clear Text\",\n                type: ControlType.String,\n                defaultValue: \"Clear\",\n                hidden: (props) =>\n                    props.clearButtonType !== SearchInputClearButtonType.Text,\n            },\n        },\n    },\n    modalOptions: {\n        title: \"Modal\",\n        buttonTitle: \"Layout, Width\",\n        type: ControlType.Object,\n        controls: {\n            layoutType: {\n                title: \"Layout\",\n                type: ControlType.Enum,\n                options: Object.keys(SearchLayoutType),\n                optionTitles: Object.values(SearchLayoutType).map(titleCase),\n                defaultValue: SearchLayoutType.QuickMenu,\n            },\n            width: {\n                title: \"Width\",\n                type: ControlType.Number,\n                defaultValue: 500,\n                min: 200,\n                max: 1000,\n                displayStepper: true,\n                step: 5,\n                hidden: (props) =>\n                    props.layoutType === SearchLayoutType.FixedTop,\n            },\n            top: {\n                title: \"Top\",\n                type: ControlType.Number,\n                defaultValue: 0,\n                min: 0,\n                max: 1000,\n                displayStepper: true,\n                hidden: (props) =>\n                    props.layoutType !== SearchLayoutType.FixedTop,\n            },\n            heightIsStatic: {\n                title: \"Height\",\n                type: ControlType.Boolean,\n                enabledTitle: \"Instant\",\n                disabledTitle: \"Animate\",\n                hidden: ({ layoutType }) =>\n                    layoutType !== SearchLayoutType.QuickMenu,\n            },\n            heightTransition: {\n                title: \"Type\",\n                type: ControlType.Transition,\n                defaultValue: {\n                    type: \"spring\",\n                    stiffness: 800,\n                    damping: 60,\n                },\n                hidden: ({ heightIsStatic, layoutType }) =>\n                    layoutType !== SearchLayoutType.QuickMenu || heightIsStatic,\n            },\n            borderRadius: {\n                title: \"Radius\",\n                type: ControlType.Number,\n                defaultValue: 16,\n                displayStepper: true,\n                min: 0,\n                hidden: ({ layoutType }) =>\n                    layoutType !== SearchLayoutType.QuickMenu,\n            },\n\n            shadow: {\n                buttonTitle: \"Options\",\n                type: ControlType.Object,\n                defaultValue: {\n                    x: 0,\n                    y: 20,\n                    blur: 40,\n                    spread: 0,\n                    color: \"rgba(0,0,0,0.2)\",\n                },\n                controls: {\n                    color: {\n                        type: ControlType.Color,\n                        defaultValue: \"rgba(0,0,0,0.2)\",\n                    },\n                    x: { type: ControlType.Number, defaultValue: 0 },\n                    y: { type: ControlType.Number, defaultValue: 20 },\n                    blur: { type: ControlType.Number, defaultValue: 40 },\n                    spread: { type: ControlType.Number, defaultValue: 0 },\n                },\n            },\n            backgroundColor: {\n                title: \"Background\",\n                type: ControlType.Color,\n                defaultValue: \"#FFF\",\n            },\n            [animationKeyFromLayout(SearchLayoutType.QuickMenu)]: {\n                title: \"Animation\",\n                type: ControlType.Object,\n                icon: \"effect\",\n                hidden: ({ layoutType }) =>\n                    layoutType !== SearchLayoutType.QuickMenu,\n                optional: true,\n                buttonTitle: \"Options\",\n                controls: {\n                    opacity: {\n                        type: ControlType.Number,\n                        defaultValue: 0.5,\n                        step: 0.1,\n                        min: 0,\n                        max: 1,\n                    },\n                    scale: {\n                        type: ControlType.Number,\n                        defaultValue: 0.75,\n                        step: 0.1,\n                        min: 0,\n                        max: 2,\n                    },\n                    // rotate: {\n                    //     type: ControlType.Number,\n                    //     defaultValue: 0,\n                    //     min: -360,\n                    //     max: 360,\n                    // },\n                    x: {\n                        type: ControlType.Number,\n                        defaultValue: 0,\n                        min: -500,\n                        max: 500,\n                    },\n                    y: {\n                        type: ControlType.Number,\n                        defaultValue: 0,\n                        min: -500,\n                        max: 500,\n                    },\n                    transition: {\n                        type: ControlType.Transition,\n                    },\n                },\n            },\n            [animationKeyFromLayout(SearchLayoutType.FixedTop)]: {\n                title: \"Animation\",\n                type: ControlType.Object,\n                icon: \"effect\",\n                buttonTitle: \"Options\",\n                hidden: ({ layoutType }) =>\n                    layoutType !== SearchLayoutType.FixedTop,\n                optional: true,\n                controls: {\n                    opacity: {\n                        type: ControlType.Number,\n                        defaultValue: 0.8,\n                        step: 0.1,\n                        min: 0,\n                        max: 1,\n                    },\n                    y: {\n                        type: ControlType.Number,\n                        defaultValue: 0,\n                        min: -100,\n                        max: 100,\n                    },\n                    transition: {\n                        type: ControlType.Transition,\n                    },\n                },\n            },\n            [animationKeyFromLayout(SearchLayoutType.Sidebar)]: {\n                title: \"Animation\",\n                type: ControlType.Object,\n                icon: \"effect\",\n                buttonTitle: \"Options\",\n                hidden: ({ layoutType }) =>\n                    layoutType !== SearchLayoutType.Sidebar,\n                optional: true,\n                controls: {\n                    opacity: {\n                        type: ControlType.Number,\n                        defaultValue: 0.8,\n                        step: 0.1,\n                        min: 0,\n                        max: 1,\n                    },\n                    x: {\n                        type: ControlType.Number,\n                        defaultValue: 0,\n                        min: -1000,\n                        max: 1000,\n                    },\n                    transition: {\n                        type: ControlType.Transition,\n                    },\n                },\n            },\n        },\n    },\n\n    resultOptions: {\n        title: \"Results\",\n        buttonTitle: \"Fonts, Style\",\n        type: ControlType.Object,\n        defaultValue: {},\n        // description:\n        //     \"Learn more about how to use Site Search [here](https://framer.com/learn/site-search)\",\n        controls: {\n            itemType: {\n                title: \"Style\",\n                type: ControlType.Enum,\n                options: Object.values(SearchResultItemType),\n                optionTitles: Object.keys(SearchResultItemType).map(titleCase),\n                defaultValue: SearchResultItemType.FullWidth,\n            },\n            titleFont: {\n                title: \"Title\",\n                // @ts-ignore - Internal\n                type: ControlType.Font,\n                defaultValue: { fontSize: 15 },\n                displayFontSize: true,\n            },\n            titleColor: {\n                title: \"Color\",\n                type: ControlType.Color,\n                defaultValue: \"#333\",\n            },\n            titleType: {\n                title: \"Content\",\n                type: ControlType.Enum,\n                options: Object.values(SearchResultTitleType),\n                optionTitles: Object.keys(SearchResultTitleType).map(titleCase),\n                defaultValue: SearchResultTitleType.H1,\n                displaySegmentedControl: true,\n            },\n            subtitleOptions: {\n                type: ControlType.Object,\n                title: \"Subtitle\",\n                buttonTitle: \"Font, Content\",\n                controls: {\n                    subtitleFont: {\n                        title: \"Font\",\n                        // @ts-ignore - Internal\n                        type: ControlType.Font,\n                        defaultValue: { fontSize: 13 },\n                        displayFontSize: true,\n                    },\n                    subtitleColor: {\n                        title: \"Color\",\n                        type: ControlType.Color,\n                        defaultValue: \"rgba(0, 0, 0, 0.4)\",\n                    },\n                    subtitleType: {\n                        title: \"Content\",\n                        type: ControlType.Enum,\n                        options: Object.values(SearchResultSubtitleType),\n                        optionTitles: Object.keys(SearchResultSubtitleType).map(\n                            titleCase\n                        ),\n                        defaultValue: SearchResultSubtitleType.Path,\n                    },\n                },\n            },\n        },\n    },\n\n    backdropOptions: {\n        title: \"Backdrop\",\n        type: ControlType.Object,\n        buttonTitle: \"Color, Z Index\",\n        controls: {\n            backgroundColor: {\n                title: \"Color\",\n                type: ControlType.Color,\n                defaultValue: \"rgba(0, 0, 0, 0.8)\",\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            transition: {\n                type: ControlType.Transition,\n            },\n            // overlayAnimation: {\n            //     title: \"Animation\",\n            //     type: ControlType.Object,\n            //     icon: \"effect\",\n            //     optional: true,\n            //     controls: {\n            //         transition: {\n            //             type: ControlType.Transition,\n            //         },\n            //     },\n            // },\n        },\n    },\n})\n\nEntryPoint.displayName = \"Search\"\n"],"names":[],"mappings":"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"}