import { cx } from 'flairup';
import * as React from 'react';
import { darkMode, stylesheet } from '../../../Stylesheet/stylesheet';
import {
useAutoFocusSearchConfig,
useSearchDisabledConfig,
useSearchPlaceHolderConfig,
} from '../../../config/useConfig';
import { useCloseAllOpenToggles } from '../../../hooks/useCloseAllOpenToggles';
import { useFilter } from '../../../hooks/useFilter';
import { useIsSkinToneInSearch } from '../../../hooks/useShouldShowSkinTonePicker';
import Flex from '../../Layout/Flex';
import Relative from '../../Layout/Relative';
import { useSearchInputRef } from '../../context/ElementRefContext';
import { SkinTonePicker } from '../SkinTonePicker/SkinTonePicker';
import { BtnClearSearch } from './BtnClearSearch';
import { IcnSearch } from './IcnSearch';
import SVGTimes from './svg/times.svg';
export function SearchContainer() {
const searchDisabled = useSearchDisabledConfig();
const isSkinToneInSearch = useIsSkinToneInSearch();
if (searchDisabled) {
return null;
}
return (
{isSkinToneInSearch ? : null}
);
}
export function Search() {
const closeAllOpenToggles = useCloseAllOpenToggles();
const SearchInputRef = useSearchInputRef();
const placeholder = useSearchPlaceHolderConfig();
const autoFocus = useAutoFocusSearchConfig();
const { statusSearchResults, searchTerm, onChange } = useFilter();
const input = SearchInputRef?.current;
const value = input?.value;
return (
{
onChange(event?.target?.value ?? value);
}}
ref={SearchInputRef}
/>
{searchTerm ? (
{statusSearchResults}
) : null}
);
}
const styles = stylesheet.create({
overlay: {
padding: 'var(--epr-header-padding)',
zIndex: 'var(--epr-header-overlay-z-index)',
},
searchContainer: {
'.': 'epr-search-container',
flex: '1',
display: 'block',
minWidth: '0',
},
visuallyHidden: {
clip: 'rect(0 0 0 0)',
clipPath: 'inset(50%)',
height: '1px',
overflow: 'hidden',
position: 'absolute',
whiteSpace: 'nowrap',
width: '1px',
},
search: {
outline: 'none',
transition: 'all 0.2s ease-in-out',
color: 'var(--epr-search-input-text-color)',
borderRadius: 'var(--epr-search-input-border-radius)',
padding: 'var(--epr-search-input-padding)',
height: 'var(--epr-search-input-height)',
backgroundColor: 'var(--epr-search-input-bg-color)',
border: '1px solid var(--epr-search-border-color)',
width: '100%',
':focus': {
backgroundColor: 'var(--epr-search-input-bg-color-active)',
border: '1px solid var(--epr-search-border-color-active)',
},
'::placeholder': {
color: 'var(--epr-search-input-placeholder-color)',
},
},
btnClearSearch: {
'.': 'epr-btn-clear-search',
position: 'absolute',
right: 'var(--epr-search-bar-inner-padding)',
height: '30px',
width: '30px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
top: '50%',
transform: 'translateY(-50%)',
padding: '0',
borderRadius: '50%',
':hover': {
background: 'var(--epr-hover-bg-color)',
},
':focus': {
background: 'var(--epr-hover-bg-color)',
},
},
icnClearnSearch: {
'.': 'epr-icn-clear-search',
backgroundColor: 'transparent',
backgroundRepeat: 'no-repeat',
backgroundSize: '20px',
height: '20px',
width: '20px',
backgroundImage: `url(${SVGTimes})`,
':hover': {
backgroundPositionY: '-20px',
},
':focus': {
backgroundPositionY: '-20px',
},
},
...darkMode('icnClearnSearch', {
backgroundPositionY: '-40px',
}),
...darkMode('btnClearSearch', {
':hover > .epr-icn-clear-search': {
backgroundPositionY: '-60px',
},
}),
});