import React, { useCallback } from 'react'; import FocusTrap from 'focus-trap-react'; import { Grid, SearchBar, SearchContext, SearchContextManager } from '@giphy/react-components'; import { IGif } from '@giphy/js-types'; import { Box, color, config } from 'folds'; import { useSetting } from '../state/hooks/settings'; import { settingsAtom } from '../state/settings'; const PICKER_WIDTH = 312; type GifPickerInnerProps = { onSelect: (url: string, width: number, height: number) => void; requestClose: () => void; lotusTerminal: boolean; }; function GifPickerInner({ onSelect, requestClose, lotusTerminal }: GifPickerInnerProps) { const { fetchGifs, searchKey } = React.useContext(SearchContext); const handleClick = useCallback( (gif: IGif, e: React.SyntheticEvent) => { e.preventDefault(); const r = gif.images.downsized ?? gif.images.original; const { url } = r; const width = Number(r.width) || 200; const height = Number(r.height) || 200; onSelect(url, width, height); requestClose(); }, [onSelect, requestClose], ); return ( {lotusTerminal && (
{'// GIF_SEARCH'}
)}
); } type GifPickerProps = { apiKey: string; onSelect: (url: string, width: number, height: number) => void; requestClose: () => void; }; export function GifPicker({ apiKey, onSelect, requestClose }: GifPickerProps) { const [lotusTerminal] = useSetting(settingsAtom, 'lotusTerminal'); const containerStyle = lotusTerminal ? { background: 'var(--lt-bg-secondary)', border: '1px solid color-mix(in srgb, var(--lt-accent-orange) 35%, transparent)', borderRadius: '4px', overflow: 'hidden', boxShadow: '0 4px 24px color-mix(in srgb, var(--lt-accent-orange) 10%, transparent), 0 0 0 1px color-mix(in srgb, var(--lt-accent-orange) 8%, transparent)', width: `${PICKER_WIDTH}px`, } : { background: color.Surface.Container, border: `${config.borderWidth.B300} solid ${color.Surface.ContainerLine}`, borderRadius: config.radii.R400, overflow: 'hidden', boxShadow: color.Other.Shadow, width: `${PICKER_WIDTH}px`, }; return ( ); }