select — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited select (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Feature-rich dropdown select with search filtering, keyboard navigation, multi-select, creatable options, and paste support. Uses Fuse.js for fuzzy search. Renders via ConnectedOverlay (Floating UI).
import { Select, SelectOption } from 'reablocks';| Prop | Type | Default | Description | ||
|---|---|---|---|---|---|
value | `string \ | string[]` | — | Selected value(s) | |
onChange | (value) => void | — | Value change handler | ||
children | SelectOption elements | — | Option elements | ||
multiple | boolean | — | Enable multi-select | ||
filterable | `boolean \ | 'async'` | true | Enable search filtering ('async' for external filtering) | |
clearable | boolean | true | Show clear button | ||
createable | boolean | — | Allow creating new options by typing | ||
disabled | boolean | — | Disable the select | ||
error | boolean | — | Error state | ||
loading | boolean | — | Loading indicator | ||
placeholder | string | — | Placeholder text | ||
size | `'small' \ | 'medium' \ | 'large'` | 'medium' | Select size |
closeOnSelect | boolean | true | Close menu after selection | ||
menuPlacement | Placement | 'bottom-start' | Menu positioning | ||
menuDisabled | boolean | false | Disable dropdown menu | ||
refreshable | boolean | false | Show refresh button for async options | ||
tabToSelect | boolean | — | Use Tab key to select active option | ||
selectOnPaste | boolean | — | Select options on paste | ||
selectOnKeys | string[] | ['Enter'] | Keys that trigger selection | ||
clearOnBlur | boolean | true | Clear search text on blur | ||
start | ReactNode | — | Content before the input | ||
end | ReactNode | — | Content after input (before action buttons) | ||
required | boolean | — | Required field | ||
defaultFilterValue | string | — | Default search filter text | ||
searchOptions | Fuse.IFuseOptions | — | Custom Fuse.js search options | ||
input | ReactElement | <SelectInput /> | Custom input component | ||
menu | ReactElement | <SelectMenu /> | Custom menu component | ||
className | string | — | Input CSS classes | ||
containerClassName | string | — | Container CSS classes | ||
activeClassName | string | — | CSS classes when menu is open | ||
theme | via SelectInput/SelectMenu | — | Theme overrides |
<SelectOption value="option1">Option 1</SelectOption>
<SelectOption value="option2" disabled>Option 2</SelectOption>
<SelectOption value="option3" group="Group A">Option 3</SelectOption>const [value, setValue] = useState<string>();
<Select value={value} onChange={setValue} placeholder="Select...">
<SelectOption value="apple">Apple</SelectOption>
<SelectOption value="banana">Banana</SelectOption>
<SelectOption value="cherry">Cherry</SelectOption>
</Select>const [values, setValues] = useState<string[]>([]);
<Select multiple value={values} onChange={setValues} placeholder="Select items...">
<SelectOption value="a">Item A</SelectOption>
<SelectOption value="b">Item B</SelectOption>
<SelectOption value="c">Item C</SelectOption>
</Select><Select createable value={value} onChange={setValue} placeholder="Type to create...">
<SelectOption value="existing">Existing Option</SelectOption>
</Select><Select value={value} onChange={setValue}>
<SelectOption value="a" group="Fruits">Apple</SelectOption>
<SelectOption value="b" group="Fruits">Banana</SelectOption>
<SelectOption value="c" group="Vegetables">Carrot</SelectOption>
</Select>tabToSelect)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.