Studio / Alkmaar
Issue 03 goes on the press at 06:00. One primary per view.
Triggers an action. Solid primary or 1px ghost; 40px tall, 36px small.
Studio / Alkmaar
Issue 03 goes on the press at 06:00. One primary per view.
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 { Button } from "@noorddev/vlak-react";Precompiled React and one stylesheet. No compiler to configure. Per-component imports work too: @noorddev/vlak-react/components/button.
npx @noorddev/vlak-cli add button
The StyleX leaf lands in components/vlak/, for your own compiler to own. See StyleX.
npx shadcn add https://vlak.dev/r/button.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 { Button } from "@noorddev/vlak-react";
<Button>Primary action</Button>
<Button variant="ghost" size="sm">Secondary</Button>
<Button disabled>Saving…</Button>| Prop | Type | Default | Description |
|---|---|---|---|
variant | "primary" | "ghost" | "primary" | Solid ink primary or hairline ghost. One primary per view. |
size | "default" | "sm" | "default" | |
grouped | boolean | false | Flush into a ButtonGroup: no own stroke, one ink seam. |
Also accepts ButtonHTMLAttributes<HTMLButtonElement>.
| Keys | Does |
|---|---|
| Tab | Moves focus to the button |
| Enter, Space | Activates it |
<button class="rs-btn-primary">Primary action</button> <button class="rs-btn-ghost">Secondary</button>