Wireframe Kit
A lo-fi component library mirroring Neo, Moderne's design system. Browse components below, view their code, and copy into your prototypes.
Setup & usage
Add these two lines to any HTML file in your prototype repo:
<link rel="stylesheet" href="wireframe-kit/wireframe-kit.css">
<script src="wireframe-kit/wireframe-kit.js"></script>
Then use web components directly in your HTML. Wrap everything in class="wf-kit" for base styles:
<body class="wf-kit">
<div class="wf-page">
<!-- Left rail: home + primary nav + tenant logo -->
<wf-sidebar
home="My App"
items="Moddy|sparkles,DevCenter|pie-chart,Trigrep|search,Artifacts|package,Marketplace|globe,Builder|blocks,Activity|history,Changelog|activity"
active="0"
tenant="ACM"></wf-sidebar>
<!-- Top bar: org switcher, search, action icons, avatar -->
<wf-navbar
org="Acme, Inc."
search="Search…"
actions="✦,?"
avatar="AC"></wf-navbar>
<main class="wf-main">
<wf-card title="Hello">Your content here</wf-card>
</main>
</div>
</body>
For React, import from wireframe-kit.jsx alongside wireframe-kit.css.
Page templates
Buttons
Button<wf-button>
<wf-button>Default</wf-button> <wf-button variant="primary">Primary</wf-button> <wf-button variant="secondary">Secondary</wf-button> <wf-button variant="ghost">Ghost</wf-button> <wf-button variant="destructive">Destructive</wf-button> <wf-button size="sm">Small</wf-button> <wf-button size="lg">Large</wf-button>
ButtonGroup<wf-button-group>
<wf-button-group items="Day,Week,Month"></wf-button-group>
ButtonTab<wf-button-tab>
<wf-button-tab items="Overview,Details,History" active="0"></wf-button-tab>
Form controls
Input<wf-input>
<wf-input label="Email address" placeholder="you@example.com"></wf-input> <wf-input label="With error" error="This field is required"></wf-input>
Textarea<wf-textarea>
<wf-textarea label="Description" placeholder="Enter a description..."></wf-textarea>
Select<wf-select>
<wf-select placeholder="Choose option..."></wf-select> <wf-select value="Selected value"></wf-select>
Search<wf-search>
<wf-search placeholder="Search recipes..."></wf-search>
DatePicker<wf-datepicker>
<wf-datepicker value="Jun 4, 2026"></wf-datepicker>
Checkbox<wf-checkbox>
<wf-checkbox label="Option A"></wf-checkbox> <wf-checkbox label="Option B" checked></wf-checkbox>
Radio<wf-radio>
<wf-radio label="Option A" selected></wf-radio> <wf-radio label="Option B"></wf-radio>
Toggle<wf-toggle>
<wf-toggle label="Dark mode"></wf-toggle> <wf-toggle label="Enabled" on></wf-toggle>
Dropdown<wf-dropdown>
<wf-dropdown items="Edit,Duplicate,Archive,Delete" label="Actions"></wf-dropdown>
Data display
Badge<wf-badge>
<wf-badge>Default</wf-badge> <wf-badge filled>Filled</wf-badge>
Default
Filled
Tag<wf-tag>
<wf-tag>Java</wf-tag>
Chip<wf-chip>
<wf-chip>Filter</wf-chip> <wf-chip removable>Removable</wf-chip>
Avatar<wf-avatar>
<wf-avatar initials="AC"></wf-avatar> <wf-avatar size="sm" initials="S"></wf-avatar> <wf-avatar size="lg" initials="LG"></wf-avatar>
KeyValuePair<wf-kv>
<wf-kv key="Author" value="Moderne Team"></wf-kv>
ListItem<wf-list-item>
<wf-list-item title="Spring Boot Migration" subtitle="Java - 342 runs" trailing="2m ago"></wf-list-item>
Table<wf-table>
<wf-table rows="5" cols="4" headers="Name,Status,Role,Date"></wf-table>
DataGrid<wf-data-grid>
<wf-data-grid rows="5" cols="4" headers="Recipe,Status,Repos,Date"></wf-data-grid>
Progress<wf-progress>
<wf-progress value="72"></wf-progress>
DiffStat<wf-diffstat>
<wf-diffstat additions="24" deletions="8"></wf-diffstat>
Navigation
Breadcrumb<wf-breadcrumb>
<wf-breadcrumb items="Home,Recipes,Java,Spring Boot"></wf-breadcrumb>
Tabs<wf-tabs>
<wf-tabs items="Overview,Code Changes,History,Settings" active="0"></wf-tabs>
Pagination<wf-pagination>
<wf-pagination pages="12" active="3"></wf-pagination>
Feedback
Alert<wf-alert>
<wf-alert variant="info" title="Info">Message here.</wf-alert> <wf-alert variant="success" title="Done">All good.</wf-alert> <wf-alert variant="warning" title="Heads up">Check this.</wf-alert> <wf-alert variant="error" title="Error">Failed.</wf-alert>
Banner<wf-banner>
<wf-banner>Your message here.</wf-banner>
Toast<wf-toast>
<wf-toast>Recipe run completed</wf-toast>
Modal<wf-modal>
<wf-modal title="Confirm action" open> <p>Are you sure?</p> </wf-modal>
Confirm action
Are you sure you want to continue?
SpinnerCSS class
<span class="wf-spinner"></span> <span class="wf-spinner wf-spinner--sm"></span> <span class="wf-spinner wf-spinner--lg"></span>
EmptyState<wf-empty-state>
<wf-empty-state title="No recipes found" message="Try adjusting your search" action="Create Recipe"> </wf-empty-state>
Cards & charts
Card<wf-card>
<wf-card title="Card Title" footer> Your content here </wf-card>
StatCard<wf-stat-card>
<wf-stat-card label="Active Recipes" value="247" change="+12 this week"></wf-stat-card>
Chart<wf-chart>
<wf-chart title="Weekly Recipe Runs" bars="7"></wf-chart>
Developer
CodeSnippet<wf-code-snippet>
<wf-code-snippet language="yaml" lines="5"></wf-code-snippet>
<!-- Or with real content: -->
<wf-code-snippet language="java">
public class Main {
public static void main(String[] args) {}
}
</wf-code-snippet>Tree<wf-tree>
<wf-tree depth="3" items="4"></wf-tree>
Assemblies
CardTable<wf-card-table>
<wf-card-table title="Recipe Runs" rows="4"></wf-card-table>
FilterResults<wf-filter-results>
<wf-filter-results rows="4" headers="Repository,Status,Changes,Date" filters="Status,Language"></wf-filter-results>
DataTableLayout<wf-data-table-layout>
<wf-data-table-layout rows="5" headers="Name,Status,Type,Modified"></wf-data-table-layout>
ChangelogFeed<wf-changelog-feed>
<wf-changelog-feed entries="4"></wf-changelog-feed>
Compositions
RecipeResults<wf-recipe-results>
<wf-recipe-results recipe="Migrate to Java 17" status="completed" repos="24" changes="18" errors="2"></wf-recipe-results>
Activation<wf-activation>
<wf-activation headline="Welcome to Moderne" cta="Run your first recipe" prereqs="Connect an SCM:done,Add repositories:done,Run first recipe:pending"> </wf-activation>