@prezly/theme-kit-ui
Version:
UI components for Prezly themes
57 lines (56 loc) • 1.93 kB
JavaScript
'use client';
import * as Dialog from '@radix-ui/react-dialog';
import algoliasearch from 'algoliasearch/lite';
import React, { useMemo } from 'react';
import { Configure, InstantSearch } from 'react-instantsearch';
import { twMerge } from 'tailwind-merge';
import { MainPanel, SearchBar } from "./components/index.mjs";
export function SearchModal(_ref) {
var {
isOpen,
categories,
className,
overlayClassName,
onToggle,
algoliaConfig,
locale,
newsroomName,
logo,
showSubtitle = true,
showDate
} = _ref;
var {
ALGOLIA_API_KEY,
ALGOLIA_APP_ID,
ALGOLIA_INDEX
} = algoliaConfig;
var searchClient = useMemo(() => algoliasearch(ALGOLIA_APP_ID, ALGOLIA_API_KEY), [ALGOLIA_API_KEY, ALGOLIA_APP_ID]);
function handleClose() {
onToggle(false);
}
return /*#__PURE__*/React.createElement(Dialog.Root, {
open: isOpen,
onOpenChange: onToggle
}, /*#__PURE__*/React.createElement(Dialog.Portal, null, /*#__PURE__*/React.createElement(Dialog.Overlay, {
className: twMerge('fixed inset-0 bg-gray-700 bg-opacity-40', overlayClassName)
}), /*#__PURE__*/React.createElement(Dialog.Content, {
className: twMerge('fixed top-1/2 left-1/2 w-full h-screen md:max-h-[70vh] md:h-max max-w-[680px] bg-white -translate-x-1/2 -translate-y-1/2 rounded', 'overflow-auto', className)
}, /*#__PURE__*/React.createElement(InstantSearch, {
searchClient: searchClient,
indexName: ALGOLIA_INDEX
}, /*#__PURE__*/React.createElement(Configure, {
hitsPerPage: 3,
filters: "attributes.culture.code:".concat(locale)
}), /*#__PURE__*/React.createElement(SearchBar, {
locale: locale,
newsroomName: newsroomName,
onClose: handleClose
}), /*#__PURE__*/React.createElement(MainPanel, {
categories: categories,
locale: locale,
logo: logo,
showSubtitle: showSubtitle,
showDate: showDate,
newsroomName: newsroomName
})))));
}