Shared system. React composition.
Build the interface. Keep the control.
Composable React components, practical hooks, and installable source for teams that want a design system without a black box.
Props flow down. Intent stays with you.
Installation
Install the React package or add components from the React registry.
→02Registry
Browse the React registry items published by Tile UI.
→03Components
Read usage notes for Button, Input, Textarea, Label, and Card.
→04Hooks
Client-side helpers for clipboard, storage, and media-query workflows.
→05Examples
See complete example compositions built from the same primitives.
→Rendered from the source
See it, it’s yours.
Explore the component and its code.
Ship a React workspace
Configure your next registry-powered release.
'use client'; import { useState } from 'react';import { Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Input } from '@tile-ui/react';import { Switch } from '@tile-ui/react';import { Progress } from '@tile-ui/react'; export function HomeShowcaseDemo({ stage, phase }: { stage: number; phase: 'idle' | 'adding' | 'removing' }) { const [project, setProject] = useState('react-studio'); const [preview, setPreview] = useState(true); const [progress, setProgress] = useState(68); return ( <Card className="framework-showcase-card"> <CardHeader> <div className="framework-showcase-card__title"> <div> <CardTitle>Ship a React workspace</CardTitle> <CardDescription className="framework-showcase-card__description">Configure your next registry-powered release.</CardDescription> </div> <Badge variant="secondary">Ready</Badge> </div> </CardHeader> <CardContent className="framework-showcase-card__content"> <Input label="Project name" value={project} onChange={(event) => setProject(event.target.value)} helperText={`tile.dev/${project || 'workspace'}`} /> <div className="framework-showcase-card__row framework-showcase-card__stage" data-visible={stage >= 1} data-active={stage === 1 ? phase : 'idle'}> <div> <strong>Preview deployments</strong> <span>Build every branch with React.</span> </div> <Switch checked={preview} onCheckedChange={(value) => setPreview(value === true)} aria-label="Enable preview deployments" /> </div> <div className="framework-showcase-card__progress framework-showcase-card__stage" data-visible={stage >= 2} data-active={stage === 2 ? phase : 'idle'}> <div> <strong>Registry sync</strong> <span>{progress}%</span> </div> <Progress value={progress} aria-label="Registry sync progress" /> </div> </CardContent> <CardFooter className="framework-showcase-card__footer"> <Button className="framework-showcase-card__stage" data-visible={stage >= 3} data-active={stage === 3 ? phase : 'idle'} variant="outline" onClick={() => setProgress(0)}> Reset </Button> <Button>Deploy workspace</Button> </CardFooter> </Card> );} Drag to compare · Use arrow keys when the divider is focused
Built for the React ecosystem
From local state to production rendering.
- Client + serverDesigned for interactive clients and modern React server rendering.
- Hooks includedReusable browser behavior through a dedicated hooks entry point.
- Source availableInstall registry items directly into the application you own.
One system, every runtime
Your framework, your components.
Tile UI carries the same design language and source-owned workflow across frameworks, without flattening their native patterns.