mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-10-30 14:49:14 +00:00
72 lines
1.7 KiB
TypeScript
72 lines
1.7 KiB
TypeScript
import {useRef} from 'react';
|
|
import styled from '@emotion/styled';
|
|
|
|
import {Search} from 'sentry/components/search';
|
|
import {IconSearch} from 'sentry/icons';
|
|
import {t} from 'sentry/locale';
|
|
import {useHotkeys} from 'sentry/utils/useHotkeys';
|
|
|
|
const MIN_SEARCH_LENGTH = 1;
|
|
const MAX_RESULTS = 10;
|
|
|
|
function SettingsSearch() {
|
|
const searchInput = useRef<HTMLInputElement>(null);
|
|
|
|
useHotkeys([{match: '/', callback: () => searchInput.current?.focus()}], []);
|
|
|
|
return (
|
|
<Search
|
|
entryPoint="settings_search"
|
|
minSearch={MIN_SEARCH_LENGTH}
|
|
maxResults={MAX_RESULTS}
|
|
renderInput={({getInputProps}) => (
|
|
<SearchInputWrapper>
|
|
<SearchInputIcon legacySize="14px" />
|
|
<SearchInput
|
|
aria-label={t('Search Settings')}
|
|
{...getInputProps({type: 'text', placeholder: t('Search')})}
|
|
ref={searchInput}
|
|
/>
|
|
</SearchInputWrapper>
|
|
)}
|
|
/>
|
|
);
|
|
}
|
|
|
|
export default SettingsSearch;
|
|
|
|
const SearchInputWrapper = styled('div')`
|
|
position: relative;
|
|
`;
|
|
|
|
const SearchInputIcon = styled(IconSearch)`
|
|
color: ${p => p.theme.gray300};
|
|
position: absolute;
|
|
left: 10px;
|
|
top: 8px;
|
|
`;
|
|
|
|
const SearchInput = styled('input')`
|
|
color: ${p => p.theme.formText};
|
|
background-color: ${p => p.theme.background};
|
|
transition: border-color 0.15s ease;
|
|
font-size: 14px;
|
|
width: 260px;
|
|
line-height: 1;
|
|
padding: 5px 8px 4px 28px;
|
|
border: 1px solid ${p => p.theme.border};
|
|
border-radius: 30px;
|
|
height: 28px;
|
|
|
|
box-shadow: inset ${p => p.theme.dropShadowMedium};
|
|
|
|
&:focus {
|
|
outline: none;
|
|
border: 1px solid ${p => p.theme.border};
|
|
}
|
|
|
|
&::placeholder {
|
|
color: ${p => p.theme.formPlaceholder};
|
|
}
|
|
`;
|