Spaces:
Runtime error
Runtime error
File size: 1,948 Bytes
db5855f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
import './Search.scss';
import CrossIcon from '@assets/images/cross.svg?react';
import SearchIcon from '@assets/images/search.svg?react';
const sparkClassNames = {
textFieldContainer: 'spark-text-field-container',
fieldTextWrapper: 'spark-fieldtext-wrapper',
textField:
'spark-text-field spark-text-field-outline spark-text-field-size-m spark-text-field-start-slot-1x spark-text-field-end-slot-1x',
textFieldStartSlot: 'spark-text-field-start-slot',
input: 'spark-input spark-input-outline spark-input-size-m spark-focus spark-focus-within spark-focus-snap',
textFieldEndSlot: 'spark-text-field-end-slot',
iconButton: 'spark-button spark-button-ghost',
icon: 'spark-icon',
};
type SearchProps = {
placeholder?: string;
className?: string;
value?: string;
search?: (value: string) => void;
};
export const Search = ({ placeholder, className = '', value = '', search }: SearchProps): JSX.Element => {
return (
<div className={`${sparkClassNames.textFieldContainer} ${className}`}>
<div className={sparkClassNames.fieldTextWrapper}>
<div className={sparkClassNames.textField}>
<div className={sparkClassNames.textFieldStartSlot}>
<SearchIcon className={sparkClassNames.icon}></SearchIcon>
</div>
<input
type="text"
className={sparkClassNames.input}
placeholder={placeholder}
inputMode="text"
value={value}
onChange={(event) => search?.(event.target.value)}
/>
<div className={sparkClassNames.textFieldEndSlot}>
{value && (
<button className={sparkClassNames.iconButton} onClick={() => search?.('')}>
<CrossIcon className={sparkClassNames.icon} width="10"></CrossIcon>
</button>
)}
</div>
</div>
</div>
</div>
);
};
|