@wrkspace/shell
theme

Components

105 production components in @wrkspace/shell

the base surfaces and layout blocks (6)

bordered container. the base card everything else builds on.

frame with border and surface bg

framed section with an optional header.

my-panel
header

panel body content.

full-bleed layout wrapper with brand, breadcrumbs, and actions.

fullscreen centered container
Separator

labeled divider between sections.

plain separator:
labeled separator:

flex and grid helpers: row, stack, grid, cell, spacer.

row 1
row 2
col 1
col 2
col 3
ScrollArea

viewport with a TUI scrollbar thumb.

inputs and the validation system (20)

single-line text input with a square border.

multi-line text in a shell-code face.

minimal dropdown picker, no chrome.

a [x] marker instead of a tick box.

[]subscribe[]checked

a (•) marker for exclusive choice.

(•)alpha()beta

a two-state toggle.

drag a thumb along a bordered track. range, marks, and showValue are optional.

40
20 -> 80
NumberInput

a numeric field with -/+ stepper buttons.

pick a known value from a filterable list. Select is for short closed lists. Autocomplete is free text. CommandPalette is actions.

sync:
async:
Autocomplete

free-text input with suggestions. Does not lock the value to an item.

TagsInput

type to filter, pick multiple, remove with backspace.

a month grid for picking a date, no library required.

september 2026
sumotuwethfrsa
DatePicker

a calendar behind a popover trigger.

DateRangePicker

two clicks on the calendar, start then end.

PasswordInput

password field with a reveal toggle.

react-hook-form + zod, with FormInput, FormSelect, FormNumberInput, FormFileUpload, FormOtpInput, FormAutocomplete, and the rest.

FileUpload

dropzone with max size, removal, and optional per-file progress.

groups related fields under a shared legend.

account

one slot per digit, paste and autofill work out of the box.

same field as OtpInput, entered characters masked.

buttons and the shortcuts behind them (9)

five variants, mechanical press, dither loading.

button with a keyboard shortcut binding.

keycap hint.

mod+k↑↓

three-dimensional mechanical keycap with tactile press and modifier formatting.

⌘K⌃+⇧+PEsc↵↑↓
⌘S⌘S⌘SAction⇥

Press ⌘ + B to toggle sidebar, or ? for shortcuts.

the > selection cursor.

selected

accent link, renders any element.

browse components

a two-state pressed/unpressed button.

ToggleGroup

toggle buttons joined into one segmented control.

a row of actions with proper keyboard navigation between them.

status dots, progress bars, loading placeholders (12)

a filled or hollow dot.

●on○off●accent●warning●danger

dithered progress bar.

[]81%

inline banner with a tone.

!your quota is almost full

bordered box with a title, description, and four tones.

labeled bar with a current value.

cpu
[]42%

label over a big number.

pastes12
tokens1

transient notification, deduplicated, with optional undo/retry actions.

pulsing placeholder for loading regions.

dithered inline loading indicator.

BootScreen

full-region gate while a server-side check resolves.

Checking your permissions
EmptyState

friendly nothing-here placeholder.

no pastes
create one to get started.
ErrorState

failure placeholder with a retry action.

failed to load
the server returned an error.

things that float above the page (10)

hover or tap hint.

modal with backdrop, closes on esc.

non-modal floating panel.

DropdownMenu

menu from a trigger: items, submenus, checkboxes, shortcuts.

ContextMenu

right-click or long-press menu with the same grammar as DropdownMenu: item, checkbox, radio, sub, shortcut.

right-click or long-press

destructive confirmation dialog, with optional type-to-confirm.

side drawer, used for the mobile sidebar.

StepUpModal

Fresh passkey or authenticator-code check. Replaces an open confirm instead of stacking a second modal.

CommandPalette

fuzzy command menu with groups, icons, and shortcuts.

PreviewCard

hover or tap preview card popup.

tabs, menus, breadcrumbs (10)

classic desktop horizontal menu bar with nested submenus and shortcuts.

NavigationMenu

accessible top navigation menu with floating viewport panels.

static vertical menu.

segmented panel switcher.

12 pastes found
Breadcrumb

path trail.

Pagination

page controls with button or href links.

numbered progress through a multi-step flow, optional vertical and clickable completed steps.

  1. xdetails
  2. 2payment
  3. 3confirm
  1. x
  2. 2
    imageiso or recipe
  3. 3
    specscpu ram disk
Accordion

expandable sections.

Collapsible

single show/hide region.

hierarchical list.

components
lib
package.json

tables, lists, code blocks (20)

toolbar, table, empty, error, and pagination as one list page.

/
NAMELANG
quiet-geckots
blue-pigeonjson
SearchField

GET search input with a TUI / prefix. Hidden fields keep filters.

/

sortable table with selection, empty, loading, and footer.

[]
[]quiet-geckots2m
[]blue-pigeonjson1h
[]happy-cattext1d

divided vertical list.

one
two
three

label / value pair.

namequiet-gecko
langtypescript

inline code and code blocks, with optional Shiki highlighting.

no demo available

plain text with backtick spans rendered as code.

press mod+k to open the palette

text with a copy button.

secret-token
Sensitive

hidden value with a reveal toggle, for secrets on screen.

small outlined label.

defaultaccentdanger

renders a filesystem path.

~/projects/wrkspace
TerminalLine

a line of terminal output.

$ ls -la
AsciiDivider

a run of characters as a divider.

an input that looks like a shell prompt.

HotkeyHint

keycap plus description.

mod+kpalette

live-ticking duration and uptime clock in various TUI formats.

hms:
digital:
compact:
long:
LogViewer

terminal log stream console with filtering, follow autoscroll, and line actions.

audit-stream.log(5 lines)
ObjectTree

interactive inspector for nested objects, arrays, and primitive values.

id:
"app_01JBX789KMNP"
name:
"wrkspace-web"
client_type:
"public"
id:
"usr_01JBCDEFGH"
name:
"Jakub Warkusz"
role:
"admin"
verified:
true
pkce_required:
true
signing_algorithm:
"RS256"
active_sessions:
14
requests_24h:
12450
error_rate:
0.0012
last_deployment:
"2026-08-18T14:30:00.000Z"
JsonViewer

panel-wrapped JSON inspector with interactive tree, raw text mode, filtering, and export.

client-manifest.json(4 keys)
id:
"app_01JBX789KMNP"
name:
"wrkspace-web"
client_type:
"public"
id:
"usr_01JBCDEFGH"
name:
"Jakub Warkusz"
role:
"admin"
verified:
true
pkce_required:
true
signing_algorithm:
"RS256"
active_sessions:
14
requests_24h:
12450
error_rate:
0.0012
last_deployment:
"2026-08-18T14:30:00.000Z"
DiffViewer

terminal diff viewer with split and unified modes, custom TUI hunk expansion, and Shiki highlighting powered by @pierre/diffs.

auth-v2.ts
loading diff viewer…

the full application frame (8)

the whole app frame: sidebar, topbar, main.

demo app
ResizablePanels

mechanical tmux/vim split panes with horizontal and vertical drag handles.

explorer
▾ src/
▸ auth/
▸ routes/
● server.ts
server.tstypescript

// Vim split pane

const app = new Hono();

app.get("/", (c) => c.text("ok"));

terminal
$ bun run dev (ready in 2ms)
SplitPane

two-pane resizable layout with customizable default and min/max limits.

source.ts

// Left panel

export const token = "abc-123";

preview.json
{
  "active": true,
  "role": "admin"
}

nav rail, collapses to a sheet on mobile.

top strip with trigger and actions.

app / page
PageHeader

title, description, and actions for a page.

my pastes

12 pastes

avatar trigger with a dropdown.

ThemeSwitch

system / light / dark picker.

theme

the ordered dithering engine (7)

DitherAvatar

avatar derived from a name hash, dithered.

the wrksz logo as a dithered canvas.

DitherSurface

a dithered background texture.

Sparkline

compact dithered trend line with gradient area fill and crosshair.

70
20
95
AreaChart

full cartesian time-series chart with axes, grid, and crosshair tooltip.

1780985190
00:0010:0022:00

discrete dithered column histogram with mechanical hover.

Mon (45)
Tue (72)
Wed (95)
Thu (60)
Fri (84)
Sat (30)
Sun (22)
auth
api
err
sys
DonutChart

dithered circular ring chart with segment breakdown.

Active65%
Idle25%
Banned10%
Admin20%
Members35%
Guests45%
Read50%
Write30%
Admin20%

the shared Bus event activity timeline, used by Bus Web and wrkszID (3)

ActivityTimeline

day-grouped Bus event list with load more, empty state, and detail sheet wiring.

Wed, Jan 14

IdSession • Created
StashPaste • Created

Tue, Jan 13

AcmeWidget • Built

one Bus event as a list row: source tag, summary, time.

IdSession • Created
StashPaste • Created
EventDetailSheet

full event detail (source, type, timestamps, payload) in a sheet.