vulcansoftcomponents
COMPONENT LIBRARY

Every component. Every theme.

One token-driven library: every public component rendered live below, with copy-paste code. Flip the palette in the top bar - or browse all 74 prebuilt themes - and watch the whole catalogue re-skin instantly.

90 components · 9 groups · 74 themes · tailwind v4

Palette

canvas
card
heading
accent
success
warning
error
info

Type

Outfit - display & UI
JetBrains Mono - labels · data · 01 / 04

Core

Primary action trigger - four variants, two extra sizes, and a disabled state.

PropTypeDefaultDescription
variant"primary" | "secondary" | "ghost" | "link""primary"Visual style.
size"sm" | "md" | "lg""md"
iconLeftReact.ReactNode-Optional leading icon node (Lucide).
toneTone"accent"Brand colour.
asReact.ElementType"button"Render as a different element/component (e.g.
hrefstring-Passed through when `as` renders a link (anchor / SmartLink / next-Link).

Labelled text field with hint, error, and monospace variants for controlled forms.

Lowercase, hyphen-separated.
Must be a valid HTTPS URL.
PropTypeDefaultDescription
labelstring-Mono uppercase label rendered above field.
hintstring-Helper text below field.
errorstring-Error message — turns border + text crimson-error.
monobooleanfalseRender value in JetBrains Mono (for IDs, tokens, code).

Surface for grouped content with eyebrow and title, plus an optional framed stamp treatment.

01 · Infrastructure

ledger-api

Event-sourced payments ledger. p95 142ms · 99.98% · 6 replicas.
02 · Stamp

Framed surface

Ink rule, no shadow - the brand stamp treatment.
PropTypeDefaultDescription
framedbooleanfalseInk 1.5px rule, no shadow — the brand "stamp".
eyebrowstring-Mono uppercase eyebrow above the title.
titlestring-

Compact status label with accent, success, warning, and error variants.

prodemberhealthydegradeddown
PropTypeDefaultDescription
variant"neutral" | "accent" | "success" | "warning" | "error""neutral"

Forms

Multi-line text input with label, hint, optional character counter, and error state.

Markdown supported.
37 / 600
Brief is required.
PropTypeDefaultDescription
labelstring-
hintstring-
errorstring-
showCountbooleanfalseShow a live "n / maxLength" counter.

Styled single-select dropdown driven by an options array, controlled via value + onValueChange.

PropTypeDefaultDescription
options*SelectOption[]-
valuestring-
defaultValuestring-
onValueChange(value: string) => void-
labelstring-
placeholderstring-
defaultOpenbooleanfalseRender initially open — handy for layout/stories.
classNamestring-
idstring-

Labeled checkbox wrapping a native input, controlled with checked + onChange.

PropTypeDefaultDescription
labelReact.ReactNode-
toneTone"accent"Brand colour of the checked fill.

Single-choice radio button; group options by sharing the same name attribute.

PropTypeDefaultDescription
labelReact.ReactNode-
toneTone"accent"Brand colour of the selected ring + dot.

Toggle control with label and optional description, controlled via checked + onChange.

PropTypeDefaultDescription
labelReact.ReactNode-
descriptionReact.ReactNode-
toneTone"accent"Brand colour of the "on" track.

Inline segmented control for picking one option from a small set, controlled via value + onValueChange.

PropTypeDefaultDescription
options*SegmentedOption[]-
namestring-Shared radio group name.
valuestring-
defaultValuestring-
onValueChange(value: string) => void-
classNamestring-

Range slider over a min/max bound, controlled via native value + onChange.

6
PropTypeDefaultDescription
toneTone"accent"Brand colour of the thumb.

Thin styled wrapper over a native <select>, taking <option> children and an invalid state.

PropTypeDefaultDescription
invalidbooleanfalseError state — crimson border.

Group of toggle buttons supporting single (radio-like) or multiple (toolbar) selection via value + onValueChange.

Single-select with type-ahead filtering over an options array, controlled via value + onValueChange.

PropTypeDefaultDescription
options*ComboboxOption[]-
valuestring-
defaultValuestring-
onValueChange(value: string) => void-
labelstring-
"aria-label"string-Accessible name for trigger when no visible label is rendered.
"aria-labelledby"string-ID of external element labelling the trigger.
placeholderstring-
searchPlaceholderstring"Search…"Placeholder inside filter input.
emptyTextstring"No results"Shown when filter matches nothing.
defaultOpenbooleanfalseRender initially open — handy for layout/stories.
classNamestring-
idstring-

Calendar date picker holding a Date value, controlled via value + onChange.

PropTypeDefaultDescription
valueDate-
defaultValueDate-
onChange(date: Date) => void-
labelstring-
placeholderstring-
defaultOpenbooleanfalseRender initially open — handy for layout/stories.
classNamestring-
idstring-

Segmented one-time-passcode input; value is the concatenated string, controlled via onChange.

value: 4821
PropTypeDefaultDescription
lengthnumber6Number of character boxes.
valuestring-
defaultValuestring-
onChange(value: string) => void-
onComplete(value: string) => void-Fires once every box is filled.
labelstring"One-time code"Accessible group label.
disabledboolean-
classNamestring-

Form field label tied to a control via htmlFor, with an optional required marker.

PropTypeDefaultDescription
requiredbooleanfalseAppend a crimson required marker.

Field wrapper that pairs a label, hint, and error message around any input control.

Owner/name of the GitHub repository.
That branch could not be found.
PropTypeDefaultDescription
labelstring-Mono uppercase label rendered above control.
htmlForstring-id the control label points at.
requiredbooleanfalseMark field required (crimson asterisk on label).
hintstring-Helper text below control.
errorstring-Error message replaces hint and turns crimson.
footerReact.ReactNode-Custom footer below the control.

Joins an input with leading/trailing addons or buttons into a single attached control.

https://.vulcansoft.dev

Visually attaches a set of related buttons into a single segmented cluster.

PropTypeDefaultDescription
rolestring"group"ARIA grouping role.

Overlays

Centered modal dialog with title, description, and footer slots, driven by controlled state.

PropTypeDefaultDescription
open*boolean-
onOpenChange*(open: boolean) => void-
titleReact.ReactNode-
descriptionReact.ReactNode-
childrenReact.ReactNode-
footerReact.ReactNode-Right-aligned action row (e.g.
dismissablebooleantrueClose when the scrim is clicked.
classNamestring-

Side panel for inline editing, with eyebrow and title, opened via controlled state.

PropTypeDefaultDescription
open*boolean-
onOpenChange*(open: boolean) => void-
side"left" | "right""right"Edge to slide from.
eyebrowstring-
titleReact.ReactNode-
childrenReact.ReactNode-
dismissableboolean-
classNamestring-

Sliding overlay panel for contextual flows, with eyebrow and title slots.

PropTypeDefaultDescription
open*boolean-
onOpenChange*(open: boolean) => void-
side"bottom" | "top" | "left" | "right""bottom"Edge to slide from.
eyebrowstring-
titleReact.ReactNode-
childrenReact.ReactNode-
dismissablebooleantrueClose on scrim click / Escape.
classNamestring-

Confirmation dialog for destructive actions with a dedicated onConfirm callback.

PropTypeDefaultDescription
open*boolean-
onOpenChange*(open: boolean) => void-
onConfirm*() => void-Fired when the confirm action is chosen (dialog also closes).
titleReact.ReactNode-
descriptionReact.ReactNode-
childrenReact.ReactNode-
confirmLabelstring"Confirm"
cancelLabelstring"Cancel"
destructivebooleantrueCrimson primary confirm for irreversible actions.
dismissablebooleanfalseAllow scrim click to cancel.
classNamestring-

Small hover label wrapping a trigger element, positioned automatically.

Last deploy 14m ago · v2.4.1
PropTypeDefaultDescription
content*React.ReactNode-
children*React.ReactElement<{ "aria-describedby"?: string }>-
side"top" | "bottom""top"
classNamestring-

Click-triggered floating panel anchored to a trigger, for rich detail content.

PropTypeDefaultDescription
trigger*React.ReactNode-Content rendered inside the trigger button.
children*React.ReactNode-
side"top" | "bottom""bottom"
align"start" | "end""start" (left)Horizontal edge the panel anchors to.
defaultOpenboolean-
classNamestring-
contentClassNamestring-
triggerClassNamestring-Override the trigger button styling (e.g.

Hover-triggered floating card for previewing a referenced entity inline.

@riya
PropTypeDefaultDescription
trigger*React.ReactNode-Inline trigger content (e.g.
children*React.ReactNode-
side"top" | "bottom""bottom"
openDelaynumber200ms before opening on hover.
closeDelaynumber120ms before closing after leave.
defaultOpenbooleanfalseRender initially open for layout/stories.
classNamestring-
contentClassNamestring-

Feedback

Inline message banner with title and success/error variants for status callouts.

PropTypeDefaultDescription
variant"info" | "success" | "warning" | "error""info"
titleReact.ReactNode-Bold first line above the body.
iconReact.ReactNode-Replace the default variant icon (or pass null to drop it).

Transient notification pushed imperatively via the useToast hook, rendered by a root Toaster.

Horizontal progress bar supporting both determinate values and an indeterminate loading state.

PropTypeDefaultDescription
valuenumber0Current value.
maxnumber100
indeterminatebooleanfalseUnbounded loading wave — no value reported.
"aria-label"string-Accessible label for the bar.
toneTone"accent"Brand colour of the bar/wave.

Placeholder shimmer for loading content, sizeable via className with an optional circle shape.

PropTypeDefaultDescription
circlebooleanfalseRender a full circle (avatars, dots).

Data display

A composable static table built from Table.Header, Table.Row, and Table.Cell parts with selected rows and numeric alignment.

ServiceEnvp95UptimeStatus
ledger-apiprod142ms99.98%Healthy
billing-workerprod88ms99.95%Degraded
analytics-ingestus-west-2-97.10%Down

A data-driven table that renders from a typed columns config with sortable headers, custom cell renderers, and zebra striping.

Status
edge-gatewayprod31ms12Healthy
billing-workerprod88ms4Degraded
ledger-apiprod142ms6Healthy
analytics-ingestus-west-2311ms2Down
PropTypeDefaultDescription
columns*DataColumn<T>[]-
data*T[]-
defaultSortkeyof T & string-Initial sort column key.
zebrabooleanfalseAlternate row tint.
classNamestring-

A user avatar that derives initials from a name and shows a presence status dot, with AvatarStack for overlapping groups.

AM
AMRKJL+5
PropTypeDefaultDescription
srcstring-Image URL; on error falls back to initials.
namestring-Full name — initials are derived from it (also used as alt).
initialsstring-Explicit fallback text; overrides derived initials.
size"sm" | "md" | "lg""md"
statusAvatarStatus-Presence dot.

A vertically stacked set of expandable panels driven by an items array, with single or multiple open behaviour via controlled value.

Most work is a monthly embedded retainer billed per engineer. Fixed-scope projects are quoted against a written statement of work with milestones.

PropTypeDefaultDescription
items*AccordionItem[]-
type"single" | "multiple""single"
valuestring[]-
defaultValuestring[]-
onValueChange(value: string[]) => void-
classNamestring-
idstring-

A controlled single-date picker that highlights the selected day and an optional 'today' marker.

June 2026
PropTypeDefaultDescription
valueDate | null-
defaultValueDate | null-
onChange(date: Date) => void-
todayDate-Override "today" for the hairline ring (testing/stories).
classNamestring-

Primitives

The core text primitives - Heading, Text, and Eyebrow - that set the type scale, weights, and neutral/mono variants.

01 · Infrastructure

Software you can stop worrying about.

Platform engineering

Apps, APIs and deploys that stay understandable.

Secondary supporting copy in the muted neutral.

build · 2026.06.21 · a1b2c3d

PropTypeDefaultDescription
variant"body" | "muted" | "small" | "mono""body"
asReact.ElementType"p"Override the rendered element.

A rotated, label-like accent badge for playful annotations, with tone presets and a configurable tilt angle.

What I buildBoring techIt just runsHandover
PropTypeDefaultDescription
tone"accent" | "neutral" | "success" | "info""accent"
rotatenumber-2Degrees of rotation for the tilt.

A scroll-triggered wrapper that animates its children into view once they enter the viewport.

Slides in once scrolled into view.
PropTypeDefaultDescription
asReact.ElementType"div"Polymorphic wrapper tag.
delaynumber0Stagger in ms (applied as transition-delay).
variant"slide" | "fade""slide"

A thin rule for dividing content, supporting horizontal or vertical orientation and an optional inline label.

Pipeline configurationDeployment targets
maina1b2c3d2 min ago
PropTypeDefaultDescription
orientation"horizontal" | "vertical""horizontal"
labelReact.ReactNode-Centered mono caption (horizontal only).

An indeterminate loading indicator in sm/md/lg sizes that inherits its colour from the surrounding text.

Provisioning…
PropTypeDefaultDescription
size"sm" | "md" | "lg""md"Diameter in px.
labelstring"Loading"Accessible label for assistive tech.

A placeholder for empty collections, pairing an icon, title, and description to explain the absence and prompt next steps.

No deployments yet

Connect a repository to run your first pipeline.

PropTypeDefaultDescription
iconReact.ReactNode-Icon node (Lucide, 1.5px stroke).
title*string-
descriptionstring-
actionReact.ReactNode-Action node(s) — typically a Button.

A container that constrains its child to a fixed width-to-height ratio, useful for media and embeds.

media
PropTypeDefaultDescription
rationumber16 / 9Width / height ratio.

A titled disclosure region that shows or hides its content via a controlled open state.

DATABASE_URL=postgres://…
REDIS_URL=redis://…
LOG_LEVEL=info
PropTypeDefaultDescription
title*React.ReactNode-Trigger label — typically a short heading.
openboolean-Controlled open state.
defaultOpenbooleanfalseUncontrolled initial state.
onOpenChange(open: boolean) => void-
children*React.ReactNode-The collapsible body.

A scrollable viewport with a styled scrollbar that caps its height and lets overflowing content scroll within.

ledger-api142ms
billing-worker88ms
edge-gateway31ms
analytics-ingest503
scheduler61ms
notify-svc44ms
search-api120ms
auth-broker73ms
webhook-relay29ms
PropTypeDefaultDescription
axis"vertical" | "horizontal" | "both""vertical"Scroll axis.
maxHeightnumber | string168Caps the box; number → px.

A split layout of two ResizablePanels with a draggable, keyboard-nudgeable handle that clamps so neither pane collapses.

Editor
Drag the handle to split this editor against its preview. The split is clamped so neither pane collapses entirely.
Preview
Master / detail and editor / preview layouts both build on this. Arrow keys nudge the handle when it has focus.
PropTypeDefaultDescription
children*[React.ReactNode, React.ReactNode]-The two panes, in order.
direction"horizontal" | "vertical""horizontal"Split direction.
defaultSizenumber50Initial size of the first pane, in %.
minSizenumber12Minimum size of either pane, in %.
stepnumber4Keyboard nudge step, in %.
onResize(size: number) => void-Notified after each resize, with the first pane's new %.

Advanced

A filled-area line chart for plotting a single trend over labelled time buckets.

Jan: 5Feb: 9Mar: 14Apr: 18May: 26Jun: 33Jul: 39Aug: 48Sep: 57Oct: 63Nov: 72Dec: 80
PropTypeDefaultDescription
data*number[]-
labelsstring[]-Optional per-point labels for tooltips.
maxnumber-
ariaLabelstring-
colorstring-

A vertical bar chart for comparing labelled categorical values.

us-east: 82us-eastus-west: 64us-westeu-west: 71eu-westap-se: 38ap-sesa-east: 22sa-east
PropTypeDefaultDescription
data*BarDatum[]-
maxnumber-Upper bound of the value axis.
ariaLabelstring-Accessible description of the chart.
colorstring"var(--accent)"Bar/label color as a CSS color (token var).

A multi-series line chart for overlaying trends, with optional per-series gradient fills.

p50: 62p50: 58p50: 71p50: 66p50: 60p50: 74p50: 69p50: 55p50: 63p50: 58p95: 140p95: 128p95: 182p95: 156p95: 138p95: 201p95: 174p95: 132p95: 160p95: 142
PropTypeDefaultDescription
series*LineSeries[]-
maxnumber-Upper bound of the value axis.
ariaLabelstring-

A ring chart for showing part-to-whole breakdowns, with a center label for the total.

2.4MREQUESTS
  • API · 42%
  • Web · 28%
  • Mobile · 18%
  • Other · 12%
PropTypeDefaultDescription
data*DonutSlice[]-
centerLabelstring-Big number shown in the ring center (e.g.
centerSubstring-Small uppercase caption under the center label (e.g.
ariaLabelstring-Accessible description of the chart.

A spider/radar chart for comparing multiple series across shared axes, with optional dashed reference series.

CPUMemNetDiskAPICache
PropTypeDefaultDescription
axes*string[]-
series*RadarSeries[]-
ringsnumber4Number of concentric grid rings.
ariaLabelstring-

An x/y scatter plot for revealing correlations across two metrics, with per-point color and labels.

ledger-api — x 120, y 38search — x 88, y 52billing-worker — x 210, y 28edge-gateway — x 156, y 44auth — x 60, y 68analytics — x 174, y 33cache — x 132, y 49webhooks — x 98, y 61throughput →
PropTypeDefaultDescription
points*ScatterPoint[]-
xMaxnumber-
yMaxnumber-
ariaLabelstring-
xAxisLabelstring-Axis caption shown bottom-right (e.g.

A stacked bar chart for showing how labelled segments compose each bar across categories.

w1 · success: 8w1 · rollback: 1w1 · failed: 0w1w2 · success: 11w2 · rollback: 2w2 · failed: 1w2w3 · success: 9w3 · rollback: 1w3 · failed: 0w3w4 · success: 13w4 · rollback: 0w4 · failed: 1w4w5 · success: 10w5 · rollback: 2w5 · failed: 0w5w6 · success: 14w6 · rollback: 1w6 · failed: 1w6w7 · success: 12w7 · rollback: 1w7 · failed: 0w7w8 · success: 15w8 · rollback: 2w8 · failed: 1w8
PropTypeDefaultDescription
labels*string[]-Category labels, one per column (x axis).
series*StackSeries[]-
values*number[][]-Row-major values: `values[categoryIndex][seriesIndex]`.
maxnumber-
ariaLabelstring-

A horizontal bar chart for ranking labelled items, with an optional value suffix.

/v2/ledger/v2/ledger: 940/min940/v2/billing/v2/billing: 720/min720/v2/auth/v2/auth: 610/min610/v2/edge/v2/edge: 430/min430/v2/search/v2/search: 280/min280
PropTypeDefaultDescription
data*HBarDatum[]-
maxnumber-
ariaLabelstring-
colorstring-
valueSuffixstring-Suffix shown after each value (e.g.

A GitHub-style calendar heatmap that shades a year of daily values into week columns.

PropTypeDefaultDescription
data*HeatmapDay[]-Days in chronological order; grouped into 7-row week columns.
thresholds[number, number, number, number][1, 3, 6, 10]Upper-bound values for each non-empty bucket (intensities 1..4).
totalstring-Footer caption, e.g.
monthsstring[]-Month labels across the top, evenly spaced over the week columns.
ariaLabelstring-

A circular progress ring for highlighting a single KPI against an implied 100% scale.

99.95%
SLA
30-day uptime
PropTypeDefaultDescription
value*number-
maxnumber100
label*string-Uppercase caption under the ring (e.g.
substring-Smaller line under the label (e.g.
displaystringrounded percentage of value/maxText drawn at the ring center.
colorstring"var(--accent)"Arc paint.
ariaLabelstring-

A live metric card pairing a large numeric value with an inline sparkline that can be paused.

Requests / s
1,259
1.5%
PropTypeDefaultDescription
label*string-Uppercase mono label, e.g.
value*number-Baseline / current value — fixes the sparkline y-range and seeds the series.
unitstring""Unit suffix shown small after the value, e.g.
colorstring"var(--vs-success)"Sparkline + dot color (token expression).
goodDirection"up" | "down""up"Which delta direction reads as "good" — up arrows tint success when this matches the trend, error otherwise.
format(v: number) => stringrounds + locale-groupsFormat the big value.
sample(prev: number) => numberjitter around `value`Produce the next sample given the previous one.
pointsnumber22Number of points in the rolling window.
intervalMsnumber1250Stream interval in ms.
pausedbooleanfalsePause streaming.

A live-tailing log console that color-codes entries by severity level.

ledger-api · production
20:32:49.698···
PropTypeDefaultDescription
source*LogEntry[]-Lines to stream, cycled in order.
titlestring"stream"Terminal title shown in the bar.
intervalMsnumber1900Append interval in ms.
prefillnumber8How many lines to seed immediately on mount.
maxLinesnumber60Max retained lines (oldest dropped).
filtersbooleantrueShow the per-level filter chips.
pausedbooleanfalsePause streaming.

A syntax-highlighted unified diff viewer with add/delete/context line gutters.

services/ledger/charge.ts
+21
4141 export async function charge(req: ChargeReq) {
42- if (!acct) throw new Error("not found");
42+ if (!acct) throw new NotFoundError(req.acctId);
43+ if (acct.frozen) throw new AccountFrozenError(acct.id);
4344 // idempotency guard
4445 return ledger.commit(acct, req.amount);
4546 }
PropTypeDefaultDescription
fileName*string-File path shown in the header.
lines*DiffLine[]-The diff lines, in order.
mode"unified" | "split"-Controlled view mode.
onModeChange(mode: "unified" | "split") => void-Called when the user toggles the view.
defaultMode"unified" | "split""unified"Initial view when uncontrolled.

A collapsible source-tree explorer with git status badges and a selectable active file.

ledger-servicesrc/index.ts
src
index.tsM
server.ts
ledger
charge.tsM
account.ts
schema.sqlA
package.json
deploy.sh
PropTypeDefaultDescription
nodes*TreeNode[]-The root nodes.
repostring-Repo name shown in the header.
selectedstring-Controlled selected path (slash-joined, leading slash, e.g.
defaultSelectedstring-Initial selection when uncontrolled.
onSelect(path: string) => void-Fired when a file is selected.

A drag-and-drop Kanban board that arranges priority-tagged cards across labelled columns.

Backlog2

Rotate signing keys for edge-gateway

highAM

Backfill analytics-ingest from S3 archive

medRK
In progress1

Idempotency keys on charge endpoint

highJL
Review1

Review ledger schema migration

lowRK
Done1

Ship deploy rollback command

medJL
PropTypeDefaultDescription
columns*KanbanColumn[]-
cardsKanbanCard[]-Controlled cards.
defaultCardsKanbanCard[]-Uncontrolled initial cards.
onMove(cardId: string, toColumnId: string) => void-Fired when a card is dropped onto a column (drag-and-drop).
disableDragboolean-Disable drag-and-drop; renders a static board with hover states.

A timeline Gantt chart that plots overlapping, color-coded task bars with a today marker.

Workstream
Q1
Q2
Q3
Q4
Ledger v2 rewrite
platform
Ledger
Billing migration
payments
Billing
Analytics pipeline
data
Analytics
Edge rollout
infra
Edge
PropTypeDefaultDescription
rows*GanttRow[]-
columnsstring[]["Q1","Q2","Q3","Q4"]Column tick labels across the top.
todaynumber-"Today" position as a fraction across the axis (0..units).
labelHeadingstring"Workstream"Heading for the first (label) column.

A multi-step wizard that walks users through labelled stages with built-in back/next navigation.

Create your account

Tell us who owns this workspace.

PropTypeDefaultDescription
steps*WizardStep[]-
stepnumber-Controlled current index.
defaultStepnumber0Uncontrolled initial index.
onStepChange(next: number) => void-Fired with the new index when the step changes.
onFinish() => void-Fired when Next is pressed on the last step.
backLabelstring"Back"Back button label.

A grouped notification feed that buckets items by date and tracks read/unread state per kind.

Notifications3
  • Today
    • Unread: ledger-api deployed to production
      12m ago
    • Unread: p95 latency above SLO for billing-worker
      34m ago
    • Unread: @rkapoor mentioned you in #incidents
      1h ago
  • Yesterday
    • PR #482 merged into main
      19h ago
    • analytics-ingest recovered after 4m outage
      22h ago
PropTypeDefaultDescription
itemsNotificationItem[]-Controlled list.
defaultItemsNotificationItem[]-Uncontrolled initial list.
onItemsChange(next: NotificationItem[]) => void-Fired with the next list after mark-read / dismiss (controlled mode).
onOpen(id: string) => void-Fired when a row's chevron is activated.
titlestring"Notifications"Panel title.

A syntax-highlighted code block with a filename header and language-aware rendering.

deploy.shbash
#!/usr/bin/env bash
set -euo pipefail
 
# deploy ledger-api to production
VERSION=$(git rev-parse --short HEAD)
echo "deploying ledger-api@${VERSION}"
 
kubectl set image deploy/ledger-api app=registry.vulcansoft.dev/ledger:${VERSION}
kubectl rollout status deploy/ledger-api --timeout=90s
PropTypeDefaultDescription
code*string-Source to render and copy.
filenamestring-Filename shown in the bar tab (e.g.
lang"bash" | "ts" | "json" | "plain""bash"Language label + token ruleset.
lineNumbersbooleantrueShow the gutter line numbers.
classNamestring-

A drag-and-drop upload target with a configurable hint describing accepted file types.

PropTypeDefaultDescription
onFiles(files: File[]) => void-Fired with the full current selection after any add/remove.
multiplebooleantrueAccept multiple files.
acceptstring-Passed through to the native input (e.g.
hintstring-Hint line under the prompt.
classNamestring-

A dual-handle range slider with an overlaid distribution histogram and custom value formatting.

$120 $340per-seat / month
PropTypeDefaultDescription
minnumber-
maxnumber-
stepnumber-
histogramnumber[]-Bar heights for the backdrop histogram (left→right buckets).
value[number, number]-
defaultValue[number, number]-
onChange(value: [number, number]) => void-
format(n: number) => stringStringFormat the live readout value (e.g.
captionstring-Small caption under the readout.
classNamestring-

A two-month calendar for selecting a start/end date range, seeded with a default selection.

PropTypeDefaultDescription
valueRange-
defaultValueRange-
onChange(range: Range) => void-
todayDate-Override "today" (testing/stories).
defaultOpenbooleanfalseRender the calendar open initially.
classNamestring-

Blocks

Top-of-page marketing hero with brand nav, headline pitch, dual CTAs, and a divided stat strip.

vulcansoft.
Software you can stop worrying about

Build the product, then keep it running.

Web apps, APIs, background jobs and deploys, kept boring enough to trust.

Engagements
40+
Avg p95 cut
38%
Uptime held
99.98%

App shell pairing a Sidebar with a stat grid and a status Table for monitoring services across environments.

Services

Healthy
36
Avg p95
94ms
Incidents · 24h
1
ServiceEnvp95Status
ledger-apiprod142msHealthy
billing-workerprod88msDegraded
analytics-ingestus-west-2-Down
edge-gatewayprod31msHealthy

Centered authentication card with email/password fields, inline field errors, and an OAuth fallback button.

Welcome back

Sign in to the Vulcansoft console.

New here? Request access

Getting-started checklist that tracks setup progress with a Progress bar and per-step done/pending states.

Getting started

Set up your workspace

2 of 4 complete50%
Create your organization
Done
Connect a repository
Done
Deploy your first service
Push to main to trigger a build.
Invite your team

Two-column settings page with a section nav rail and a card of Inputs and Switch toggles for org preferences.

Full-bleed 404 state on an inverted slab with a large code, explanatory copy, and recovery CTAs.

404

That route was decommissioned, or never deployed. Check the path and try again.

Three-tier pricing grid of Cards with a framed featured plan, checkmarked feature lists, and per-tier CTAs.

Advisory
$8k /mo
Fractional senior engineer
  • Architecture reviews
  • Weekly office hours
  • Async Slack access
Embedded
$24k /mo
One engineer, in your team
  • Ships to your production
  • In your repos & on-call
  • Infra & platform work
  • Docs & handover
Squad
Custom
Multi-engineer team
  • 2–5 senior engineers
  • Dedicated tech lead
  • SLA & roadmap ownership