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 } 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: 'var(--bg-surface)', border: '1px solid rgba(255,255,255,0.08)', borderRadius: '12px', overflow: 'hidden', boxShadow: '0 8px 32px rgba(0,0,0,0.4)', width: `${PICKER_WIDTH}px`, }; return ( ); }