# Halftone Design System > One brand on phone and web: Expo and Next.js kits your coding agent builds from. Two prototype kits on one set of design tokens: a native kit (Expo, React Native, NativeWind, react-native-reusables) and a web kit (Next.js, Tailwind 4, shadcn/ui). Each kit lists the only components a prototype may use. Start with the install guide. ## This site - [Install guide for agents](https://halftonedesignsystem.com/install.md): pick a kit and a path, then the rules - [Everything in one file](https://halftonedesignsystem.com/llms-full.txt) - [shadcn registry for Expo + react-native-reusables (@halftone-native)](https://halftonedesignsystem.com/r/native/registry.json) - [shadcn registry for Next.js + shadcn/ui (@halftone-web)](https://halftonedesignsystem.com/r/web/registry.json) - [Studio](https://halftonedesignsystem.com/studio/): people make and keep design systems here (saved in their browser). They hand you an `ht-` theme code or a `.halftone.json`; apply either with `npx halftone-tokens theme apply ` (the kits' apply-theme skill) ## Native kit > A brand-agnostic Expo + React Native prototype kit (Expo Router, NativeWind, react-native-reusables). > Screens are composed ONLY from the components listed below; nothing else exists. Generated by `npm run registry:build` from registry/components.ts — do not edit by hand. ### Read first - [AGENTS.md](https://github.com/itsHendri/halftone/blob/main/apps/mobile/AGENTS.md): stack, commands, how to build a prototype, gotchas - [DESIGN_SYSTEM.md](https://github.com/itsHendri/halftone/blob/main/apps/mobile/DESIGN_SYSTEM.md): tokens, the component registry, patterns, anti-patterns, the hallucination guard - [DESIGN.md](https://github.com/itsHendri/halftone/blob/main/apps/mobile/DESIGN.md): the design tokens in the DESIGN.md format ### Rules - Use only the components below, by their exact names. Missing something: stop and say so (the `add-component` skill adds it properly). - Style with semantic Tailwind classes only. No hex, no Tailwind palette colours, no StyleSheet colours. - `npm run lint` enforces these rules (`halftone/*`): fix every error before calling a screen done. - Text through `` from components/ui/text; icons through `` (lucide). - Check every screen in light and dark. ### Components #### Actions - [Button](https://github.com/itsHendri/halftone/blob/main/apps/mobile/components/ui/button.tsx): `variant` default/secondary/outline/ghost/link/destructive · `size` sm/default/lg/icon · children are ``/`` — `` - [Toggle](https://github.com/itsHendri/halftone/blob/main/apps/mobile/components/ui/toggle.tsx): pressed two-state button — `` - [ToggleGroup](https://github.com/itsHendri/halftone/blob/main/apps/mobile/components/ui/toggle-group.tsx): `type` single/multiple — `` - [FloatingButton](https://github.com/itsHendri/halftone/blob/main/apps/mobile/components/kit/floating-button.tsx): floats OVER the scroll (a Button flows with it) · Material calls it a FAB · `icon label? variant position` · one per screen — `` - [IconBadge](https://github.com/itsHendri/halftone/blob/main/apps/mobile/components/kit/icon-badge.tsx): icon button with unread count/dot · always labelled — `` - [SwipeToConfirm](https://github.com/itsHendri/halftone/blob/main/apps/mobile/components/kit/swipe-to-confirm.tsx): drag past 85% commits · `tone` primary/destructive · reset via `key` — `` - [ActionGrid](https://github.com/itsHendri/halftone/blob/main/apps/mobile/components/kit/action-grid.tsx): the row of shortcuts under a screen hero · 3–4 `items`, one row only, last tile is "More" — `` #### Inputs & selection - [Input](https://github.com/itsHendri/halftone/blob/main/apps/mobile/components/ui/input.tsx): always with `Label` — `