← index

UI Kit

120+ token-driven components for SaaS products. Same design system as the blocks — restyle everything from one file.

11 groups
01FormsInputs, selects, toggles — everything a SaaS settings page needs

( 01 ) Field + Input

Visible to your whole team.

This domain is already connected.

Read-only system identifier.

( 02 ) Textarea

Markdown supported.

Please tell us a bit more (min 20 chars).

( 03 ) Select

You need at least one admin.

Locked by your organization.

( 04 ) Checkbox

( 05 ) Radio Group

( 06 ) Switch

( 07 ) Slider Input

1024 MB
40%
30s

( 08 ) Search Input

( 09 ) Tag Input

productionedgev2

Press Enter to add a tag.

acme.co

( 10 ) Assembled — Create Project

Create project

Deploy from a Git repository in under a minute.

dmitrii

Invite more people later from settings.

02DisplayBadges, cards, tables, stats — dashboard building blocks
Monthly revenue+12.4%
Active seats+4.1%
Churn rate-0.6%
DraftNewOperationalDegradedIncidentv2.4.0
designengineeringq3-roadmapapi-v2
Mira VossTheo LangJune ParkSasha Reyes
Mira VossTheo LangJune ParkSasha Reyes+2

Deploy pipeline

Passing

Production deploy from main finished in 2m 14s. All 96 checks green.

100%

Usage quota

⌘U
API requests724k / 1M
Storage41 GB / 100 GB
MemberRoleStatusUsage
Mira VossMira VossOwnerActive84.2k req
Theo LangTheo LangEngineerInvited12.7k req
June ParkJune ParkDesignerActive31.4k req
Sasha ReyesSasha ReyesAnalystSuspended0 req
24%
62%
91%
Kcommand menuEntersubmitEscdismiss

No integrations yet

Connect your first data source to start streaming events into the workspace.

03Overlays & NavModals, drawers, toasts, command palette — the interactive layer

( modal )

( drawer )

( dropdown menu )

( tooltip )

Hover meKeyboard hintStatus

( toast )

( command palette )

( tabs )

12 active projects · 4 pending deploys · uptime 99.98%.

( breadcrumbs )

( pagination )

( accordion )

04Forms — Dates & InputsDate/time pickers, OTP, phone, currency, sliders, ratings, uploads

( 01 ) Date Picker

( 02 ) Time Picker

( 03 ) Calendar View

Standalone month grid

July 2026
MoTuWeThFrSaSu

Availability window (14 days)

July 2026
MoTuWeThFrSaSu

( 04 ) OTP Input

Sent to +1 •••• 4567

Partially entered.

That code has expired.

Request a new code to continue.

( 05 ) Password Input

Weak

Minimum 8 characters.

Strong
Strong

Passwords don't match.

Strong

Managed by your identity provider.

( 06 ) Phone Input

London office, 9am–6pm GMT.

Enter a valid phone number.

Confirmed via SMS.

( 07 ) Number Stepper

4
4 × $24 = $96/mo
14
20%
3

( 08 ) Currency Input

Exceeds the original charge.

Set by finance, read-only.

( 09 ) Color Picker Input

Enter a valid hex value.

Fixed by the design system.

( 10 ) Range Slider

Price range
$120$380
Age range
25y45y
Locked budget
$200$400

( 11 ) Rating

( 12 ) File Upload

Drag & drop, or click to browse
PNG, JPG or PDF up to 5MB.Max 5MB per file
File exceeds the 2MB limit.
Re-enabled once maintenance finishes.
05Forms — PickersCombobox, multi-select, segmented controls, wizards, swatches

( 01 ) Combobox

Type to filter the list.

Locked by your plan.

( 02 ) Multi Select

Applies to the whole workspace.

( 03 ) Segmented Control

( 04 ) Toggle Group

( 05 ) Inline Edit

Click the value to rename.

Managed by the platform.

( 06 ) Form Wizard

  1. 1Connect repository
  2. 2Configure build
  3. 3Invite the team

Connect repository

Import an existing Git repository to deploy from.

( 07 ) Copy Field

( 08 ) Password Strength Meter

Weak
  • At least 8 characters
  • One uppercase letter
  • One lowercase letter
  • One number
  • One symbol
Strong
  • At least 8 characters
  • One uppercase letter
  • One lowercase letter
  • One number
  • One symbol

( 09 ) Quantity Picker

2
seats × $24 = $48/mo
1
250
3

( 10 ) Swatch Picker

Anodized aluminum.

( 11 ) Icon Picker

Project icon
Release channel
Locked

( 12 ) Emoji Rating

Okay

Blazing

Good

06Data Viz & DevCharts, gauges, heatmaps, trees, code blocks, diffs, logs

( charts — echarts, token-themed )

Line — revenue vs costs
Area — stacked traffic
Bar — plans by quarter
Donut + radar

( timeline )

  1. Deploy shipped to productionJul 2, 14:32

    v2.4.0 rolled out to all regions with zero downtime.

  2. Incident detected — elevated latencyJul 2, 11:08

    edge.cdn p95 crossed 800ms for 6 minutes before recovering.

  3. Pull request mergedJul 1, 19:47

    #4821 refactor auth middleware, reviewed by 2 engineers.

  4. New team member invitedJul 1, 09:15

    Sasha Reyes invited as Analyst.

  5. Billing cycle closedJun 30, 00:00

    Invoice #2291 generated, $4,820 charged.

( activity feed )

Today

  • Mira Voss

    Mira Voss merged pull request #4821 refactor auth middleware

    2:14 PM
  • Theo Lang

    Theo Lang commented on Q3 roadmap

    11:02 AM
  • June Park

    June Park deployed v2.4.0 to production

    9:47 AM

Yesterday

  • Sasha Reyes

    Sasha Reyes created issue Billing webhook retries

    6:20 PM
  • Noah Idris

    Noah Idris invited Lena Brandt to the workspace

    1:35 PM

Jun 28

  • Mira Voss

    Mira Voss closed issue Flaky checkout test

    4:10 PM
  • June Park

    June Park starred design-system/tokens

    9:02 AM

( sparkline )

Signups, line
Revenue, area
Churn, declining

( progress ring )

68%Storage
94%Uptime
22%Errors
Complete

( gauge )

( heatmap calendar )

LessMore

( tree view / file tree )

Workspace
  • Product
    • Roadmap
  • Engineering
    • Frontend
    • Backend
  • Design
Repository
  • src
    • components
      • Button.tsx
      • Button.module.scss
      • Card.tsx
    • app.tsx
    • theme.scss
  • package.json
  • README.md

( code block )

user.ts · tsx
export async function getUser(id: string) {  // fetch from the primary replica, fall back to cache  const cached = await redis.get(`user:${id}`);  if (cached) return JSON.parse(cached);   const res = await fetch(`/api/users/${id}`);  if (!res.ok) {    throw new Error('User not found');  }   const user = await res.json();  return { ...user, fetchedAt: Date.now() };}

( json viewer )

id:"usr_9f21ac",
name:"Mira Voss",
active:true,
role:"owner",
seats:12,
mfaEnabled:true,
lastLogin:null,
plan:"scale",
renewsAt:"2026-08-14",
amount:480
},
0:"read:users",
1:"write:billing",
2:"admin:workspace"
]
}

( diff viewer )

user-service.ts+4-2
@@ -12,7 +12,9 @@ export function getUser(id: string) {  const cacheKey = `user:${id}`;  const cached = memoryCache.get(cacheKey);  if (cached) return cached;  const cached = await redis.get(cacheKey);  if (cached) return JSON.parse(cached);   const stale = staleCache.get(cacheKey);  const user = await db.users.findUnique({ where: { id } });  return user;}

( log viewer )

Live logsStreaming
14:22:01INFOServer listening on :4000
14:22:01DEBUGConnected to postgres pool (12 clients)
14:22:04INFOGET /api/users 200 in 42ms
14:22:09WARNSlow query detected: SELECT * FROM events (812ms)
14:22:14INFOPOST /api/billing/charge 200 in 118ms
14:22:20ERRORUnhandled rejection: redis connection reset
14:22:21INFOReconnected to redis after 1 retry
07Cards & FeedPricing, KPIs, user/product cards, chat, notifications, steps

( comparison table )

Compare plansStarterGrowthPopularScale
Team seats320Unlimited
Projects5UnlimitedUnlimited
API access
Audit log
SSO / SAML
Priority support

( pricing table )

Starter

For solo builders trying things out.

$0/mo
  • 1 project
  • Community support
  • 7-day log retention
Scale

For orgs that need control and scale.

$199/mo
  • Everything in Growth
  • SSO / SAML
  • Audit log
  • Dedicated support

( kpi grid )

Monthly revenue12.4%
$48.2k
Active seats4.1%
318
Churn rate0.6%
2.8%
Support tickets18.3%
92

( metric tile )

Trial conversions3.1%
19.6%
Avg. response time6.4%
182ms
Open support tickets42%
7

( user card )

June Park

June Park

Product Designer at Kapustin

24Projects
1.2kFollowers
186Following
Theo Lang

Theo Lang

Staff Engineer at Kapustin

9Projects
412Followers
88Following

( product card )

Fieldwork Tote

Fieldwork Tote

Bags & carry

(212)
$128
Ridge Wallet

Ridge Wallet

Accessories

(58)
$64$80
Field Notebook

Field Notebook

Stationery

(301)
$18

( chat bubble )

Mira Voss
Mira Voss
Hey! Did the updated pricing spec land yet?
10:21
Sounds good — I will push the updated spec by end of day.
10:24
Mira Voss
Mira Voss
Perfect, no rush.
10:24
Contact

( notification item )

Deploy finished

2m ago

Production build from main completed successfully in 2m 14s.

Usage nearing limit

1h ago

You have used 92% of this month's API request quota.

New comment

Yesterday

Theo Lang commented on “Q3 roadmap” — “Let's revisit the timeline.”

( avatar stack )

Mira VossTheo LangJune ParkSasha Reyes+2
Ada LovelaceGrace HopperAlan Turing+1

( banner )

( callout )

Note

Blocks read their content from tokens in styles/theme.scss — restyling the whole library stays a one-file job.

Tip

Use `sectionStyle()` from `@/lib/section` to pick up tone/padding props on any block without touching its internals.

Heads up

Status hues are the one exception to the tokens-only rule — always route them through `color-mix(in oklab, …)` like Badge does.

( steps )

  1. AccountCreate your workspace
  2. BillingAdd a payment method
  3. Invite teamBring your collaborators
  4. LaunchGo live
  1. Order placedJun 28, 09:12
  2. PackedJun 28, 14:40
  3. ShippedJun 29, 08:05
  4. Delivered
08Overlays — AdvancedPopovers, sheets, lightboxes, confirm dialogs, tours, snackbars

( popover )

( hover card )

( context menu )

Right-click this card — “roadmap-q3.pdf”, 2.4 MB.

( sheet )

( lightbox )

( confirm dialog )

( coachmark )

( loading bar )

( workspace overview )

Data last synced 2 minutes ago.

( overlay spinner )

( billing details )

Card ending 4242 · expires 08/28.

( snackbar )

( split button )

( kebab )

10FeedbackSpinners, skeletons, states, meters, countdowns, theme toggle
Loadingsm
Loadingmd
Loadinglg
Syncing workspace…with label

Payment successful

Your subscription is active. A receipt has been sent to your inbox.

CPU usage38/100
Memory76/100
Disk quota94/100
Offer ends in
00days
00hrs
00min
00sec
Deploy triggered
Comment from June Park
Invoice #2291 sent
Workspace created
flips data-theme on <html>

Fixed bottom-right — scroll this page past ~480px to see it fade in and smooth-scroll back to top.

Keyboard shortcuts

Navigation

  • Open command menuK
  • Go to homeGH
  • Go to blocksGB

Actions

  • Save changesS
  • SubmitEnter
  • Dismiss dialogEsc
OnlineAwayBusyOffline
11Misc & MarketingTag clouds, share rows, announcement bars, TOC, filters, clocks
Kapustin Blocks 2.0 is here — a full SaaS UI kit with 100+ animated sections.See what changed
Notifications

Choose how the workspace reaches you.

Place Field / Input / Switch rows here.

Profile photo

PNG or JPG, at least 400×400

Design systems are promises about the future: every token you name is a decision the next project inherits for free. This library keeps those promises small and sharp — one palette, one type scale, one rhythm — so a rebrand is an afternoon in theme.scss instead of a quarter of rework. The blocks stay honest by never hardcoding a value, and the payoff is that inversion, dark mode and per-instance backgrounds come along without touching a single component.

--:--:--
Belgrade
--:--:--
New York
128 results

Overview

A quick tour of the workspace: projects, teams, and the activity feed that ties them together.

Installation

Install the CLI, authenticate with your workspace token, and run the init command inside your repo.

Configuration

Environment variables, feature flags, and the config file schema used across staging and production.

API

REST and webhook endpoints for projects, members, and usage — all versioned under /v2.

Changelog

Every release, from breaking changes down to the smallest copy fix, in reverse chronological order.

Introduction

What this library is, who it is for, and the design principles behind every block.

Getting started

Clone the repo, install dependencies, and run the dev server to browse the component gallery.

Installation

Copy the styles, lib helpers, and the block categories you need into your own Next.js project.

Configuration

Retheme everything from a single tokens file — palette, type scale, radii, and motion.

Components

Forms, display, overlays, and navigation primitives — all rendering realistically with zero props.

Theming

Dark mode and section inversion are free — components only ever read semantic color tokens.

API reference

Full prop tables for every exported component, generated from the TypeScript source.