City
Where the desk is
The platform list. Vlak chrome.
Presents browser-native options inside a 1px control border.
Where the desk is
The platform list. Vlak chrome.
Three ways in. They share one source, so the pixels match whichever you pick.
npm install @noorddev/vlak-react
// once, next to your app's root
import "@noorddev/vlak-react/css";
import { NativeSelect } from "@noorddev/vlak-react";Precompiled React and one stylesheet. No compiler to configure. Per-component imports work too: @noorddev/vlak-react/components/native-select.
npx @noorddev/vlak-cli add native-select
The StyleX leaf lands in components/vlak/, for your own compiler to own. See StyleX.
npx shadcn add https://vlak.dev/r/native-select.json
The same registry item, installed by shadcn's CLI.
<link rel="stylesheet" href="node_modules/@noorddev/vlak/css/vlak.css" />
No React. Link vlak.css and use the markup and classes below.
import { NativeSelect } from "@noorddev/vlak-react";
<NativeSelect label="City" defaultValue="alkmaar">
<option value="alkmaar">Alkmaar</option>
<option value="amsterdam">Amsterdam</option>
<option value="rotterdam">Rotterdam</option>
</NativeSelect>The platform list. Vlak chrome.
| Prop | Type | Default | Description |
|---|---|---|---|
label | ReactNode |
Also accepts SelectHTMLAttributes<HTMLSelectElement>.
| Keys | Does |
|---|---|
| Space, Alt + Arrow down | Opens the platform list |
| Arrow up, Arrow down | Changes the value |
| Type a letter | Jumps to a matching option |
<select class="rs-native-select"><option>Alkmaar</option><option>Amsterdam</option><option>Rotterdam</option></select>