Top-class UI.Built for Next.js.
Premium components that help you build faster. Server-first on React 19 and Tailwind CSS v4, in English and Arabic from the same code.
v0.1 beta is on npm. Read the docs to get started.
- TopClass UI
- Overview
- Components
- Icons
- Themes
- Settings
Components
46 components, 3 kinds
Showing 1 to 7 of 46
Button added to your project
npx topclassui add buttonWhat makes it different
Three things you get from day one
Every example on this page is a real component. Each one has its own page in the docs.
Less JavaScript
5 of the 6 components in this card add no JavaScript to your page. Only the dialog does.
Invoice TC-2041
PaidIssued 12 Sep 2026
1,240.00 SAR
client - DialogThe solid border marks what renders on the server.
- Renders on the server
- 0 KB
- Runs in the browser
- 16.7 KB gzipped
The component tree
- Icon
- Card
- Badge
- Separator
- Button
- Dialog
5 server, 0 KB each
1 client
How the size is checked
{
"kb": { "overlay": 14 },
"components": { "dialog": "overlay" }
}Every client component has a size budget. pnpm size --check fails the build when one goes over it, so the number on the chip cannot quietly drift.
Arabic, built in
The same form in English and in Arabic. Layout, icons and digits mirror on their own.
| Light | Dark | Ocean | |
|---|---|---|---|
| ltr | checked | checked | checked |
| rtl | checked | checked | checked |
3 modes x 2 directions, checked in a real browser.
Caret and arrow icons flip; the magnifying glass does not. The components use logical utilities such as ps-, pe-, inset-s- and text-start, never left or right.
Tested, not promised
Every gate runs before a release, in a real browser, on every demo of every component.
- 3054 pages checked by axe
- 3054 pages measured for 24 px targets
- 3054 pages checked for a visible focus ring
- 390 color pairs held to AA contrast
The commands that run them
# in a clone of the repository
pnpm install
# axe, 24 px targets, focus ring
pnpm test:e2e
# 390 color pairs, AA in every mode
pnpm check:contrast
# every gate, in order
pnpm checkEach number above is counted from the library when this site is built, so it cannot drift from what the gates check.
Theming
Light, dark, or your own
A theme is one small CSS block. Switch modes, or add your brand colors, without touching a component.
Light
data-theme="light"Dark
data-theme="dark"Ocean
data-theme="ocean"By the numbers
What is inside
Everything counted, nothing rounded up.
- 46components
- 84icons, 16 flip automatically in Arabic
- 6pages per demo, across every mode and direction
- 0 KBJavaScript added by a server-rendered component
The catalog
46 components, one consistent layout
Each chip carries a badge. S renders on the server and adds no JavaScript. C runs in the browser. Sp renders on the server with one small interactive part.
- ServerButton
- SplitTag
- ServerKbd
- ClientSegmentedControl
- ServerInput
- SplitTextarea
- ClientSelect
- ClientCombobox
- ClientCheckbox
- ClientRadioGroup
- ClientSwitch
- ClientSlider
- ClientNumberField
- ClientOtpField
- ClientDatePicker
- ClientFileUpload
- SplitRating
- ServerBadge
- SplitAvatar
- ServerAvatarGroup
- ServerCard
- ServerSeparator
- ServerSkeleton
- SplitCodeBlock
- SplitTable
- ClientTreeView
- ServerTimeline
- ServerStepper
- ServerAlert
- ClientToast
- SplitBanner
- ServerProgress
- ServerSpinner
- ServerEmptyState
- ClientDialog
- ClientDrawer
- ClientPopover
- ClientTooltip
- ClientDropdown
- ClientCommand
- SplitNavbar
- SplitSidebar
- SplitTabs
- SplitAccordion
- ServerBreadcrumb
- ServerPagination
Follow us
One handle, everywhere
@topclassui on GitHub, YouTube and X. Star, subscribe or follow, and you will hear the moment a new version ships.
GitHub
@topclassui
Star the repository, read the source and open issues.
Star on GitHubgithub.com/TopClassUI/topclassui
YouTube
@topclassui
Short videos on how each component is built.
Subscribeyoutube.com/@topclassui
X
@topclassui
Release notes, previews and answers.
Followx.com/topclassui
Install
Copy the source, or import the package
Copy a component into your project and edit it, or install the package and import it. Same component either way.
Copy the source
npx topclassui add buttonThe component and its files are copied into your project, ready to edit.
Import from the package
import { Button } from 'topclassui/button'Import only what you use. Nothing else ends up in your bundle.
What you need
Three things, current versions
If your project runs these, it runs TopClass UI.
- 15+
Next.js
App Router. Server components and Server Actions come from here.
- 19+
React
ref is an ordinary prop and a form takes an action. Nothing older works.
- 4.2+
Tailwind CSS
Configured in CSS with three import lines. No config file.