Reference Catalog
Rendered controls with copyable HTML
This page is the practical copy/paste surface. Each section shows the rendered result first, then the HTML markup directly below it.
Code View
Web Components first, HTML + CSS on demand
Web Components is the default code view on this page. Sections that are still CSS-first are labeled in the viewer so the page stays honest about what exists today.
Theme Switcher
Appearance
System
The bundled helper stores the selected mode in localStorage, resolves system against prefers-color-scheme, keeps the root `data-bs-theme` attribute in sync, and can either wire your own controls or mount the packaged switcher into an empty host.
<div class="inc-theme-toggle" data-inc-theme-switcher>
<div class="inc-theme-toggle__label">
<p class="inc-theme-toggle__title">Appearance</p>
<p class="inc-theme-toggle__value" data-inc-theme-label>System</p>
</div>
<div class="inc-button-group inc-button-group--sm" role="group" aria-label="Theme mode">
<button class="inc-btn inc-btn--secondary" type="button" data-inc-theme-mode="light">Light</button>
<button class="inc-btn inc-btn--secondary" type="button" data-inc-theme-mode="dark">Dark</button>
<button class="inc-btn inc-btn--secondary" type="button" data-inc-theme-mode="system">System</button>
</div>
<button class="inc-btn inc-btn--outline-secondary inc-btn--sm" type="button" data-inc-theme-toggle>Cycle</button>
</div>
<div data-inc-theme-switcher data-inc-theme-switcher-block></div>
<script>
window.IncTheme.setMode("dark");
</script>
Page Framing
<div class="inc-page inc-breadcrumb-body">
<div class="inc-page__breadcrumbs inc-breadcrumb-body__breadcrumb">
<ol class="inc-breadcrumb">
<li class="inc-breadcrumb__item"><a href="./index.html">Examples</a></li>
<li class="inc-breadcrumb__item active"><span>Reference</span></li>
</ol>
</div>
<div class="inc-page__body inc-breadcrumb-body__body">
<div class="inc-section-container demo-stack">
<section class="inc-page-header">...</section>
</div>
</div>
</div>
Buttons
<button class="inc-btn inc-btn--primary" type="button">Primary</button>
<button class="inc-btn inc-btn--secondary" type="button">Secondary</button>
<button class="inc-btn inc-btn--outline-secondary" type="button">Outline</button>
<button class="inc-btn inc-btn--danger" type="button">Danger</button>
<button class="inc-btn inc-btn--primary inc-btn--sm" type="button">Small</button>
<button class="inc-btn inc-btn--secondary inc-btn--micro" type="button">Micro</button>
<div class="inc-button-group inc-button-group--sm">
<button class="inc-btn inc-btn--secondary" type="button">Left</button>
<button class="inc-btn inc-btn--primary" type="button">Right</button>
</div>
<button class="inc-btn inc-btn--primary is-loading" type="button">Publishing<span class="inc-spinner inc-spinner--border inc-spinner--border--sm" aria-hidden="true"></span></button>
<button class="inc-btn inc-btn--secondary is-loading" type="button">Refreshing<span class="inc-spinner inc-spinner--border inc-spinner--border--sm" aria-hidden="true"></span></button>
<button class="inc-btn inc-btn--primary" type="button" aria-busy="true"><span class="inc-spinner inc-spinner--border inc-spinner--border--sm" aria-hidden="true"></span><span>Publishing</span></button>
<button class="inc-btn inc-btn--outline-secondary" type="button" aria-busy="true"><span class="inc-spinner inc-spinner--border inc-spinner--border--sm" aria-hidden="true"></span><span>Refreshing</span></button>
Badges And Alerts
<span class="inc-badge inc-badge--success inc-badge--pill">Approved</span>
<span class="inc-badge inc-badge--warning inc-badge--pill">Pending</span>
<span class="inc-badge inc-badge--danger inc-badge--pill">Rejected</span>
<span class="inc-badge inc-badge--info inc-badge--pill">Imported</span>
<div class="inc-alert inc-alert--success">Success alert text.</div>
<div class="inc-alert inc-alert--info">Information alert text.</div>
<div class="inc-alert inc-alert--warning">Warning alert text.</div>
<div class="inc-alert inc-alert--danger">Danger alert text.</div>
Form Fields
<label class="inc-form__label" for="ref-name">Text input</label>
<input id="ref-name" class="inc-form__control" type="text">
<label class="inc-form__label" for="ref-status">Select</label>
<select id="ref-status" class="inc-form__select">
<option>Draft</option>
<option selected>In Progress</option>
</select>
<label class="inc-form__label" for="ref-notes">Textarea</label>
<textarea id="ref-notes" class="inc-form__control" rows="3"></textarea>
<label class="inc-form__label" for="ref-start-date">Start date</label>
<input id="ref-start-date" class="inc-form__control" type="date">
<label class="inc-form__label" for="ref-attachment">Attachment</label>
<input id="ref-attachment" class="inc-form__control" type="file">
<div class="inc-input-group">
<span class="inc-input-group__text">$</span>
<input class="inc-form__control" type="text">
</div>
<fieldset class="inc-form__fieldset">
<legend class="inc-form__legend">Workflow options</legend>
<div class="inc-form__choices">
<div class="inc-form__check">...</div>
<div class="inc-form__check inc-form__switch">...</div>
</div>
</fieldset>
<fieldset class="inc-form__fieldset">
<legend class="inc-form__legend">Approval route</legend>
<div class="inc-form__choices">
<div class="inc-form__check">
<input class="inc-form__check-input" type="radio" id="ref-route-fast" name="ref-route" checked>
<label class="inc-form__check-label" for="ref-route-fast">Fast approval</label>
</div>
<div class="inc-form__check">
<input class="inc-form__check-input" type="radio" id="ref-route-standard" name="ref-route">
<label class="inc-form__check-label" for="ref-route-standard">Standard approval</label>
</div>
</div>
</fieldset>
Cards, Metrics, And Empty States
No saved views
Create a named filter set so your operators can reuse it across screens.
<section class="inc-summary-overview inc-summary-overview--3-col">
<article class="inc-summary-block">...</article>
<article class="inc-summary-block">...</article>
<article class="inc-summary-block">...</article>
</section>
<section class="inc-summary-overview inc-summary-overview--4-col">
<article class="inc-summary-block">
<div class="inc-summary-block__header inc-summary-block__header--with-action">
<span>Open Items</span>
<span class="inc-summary-block__header-action">Updated 10m ago</span>
</div>
<div class="inc-summary-block__body inc-summary-block__body--left">
<div class="inc-summary-block__value inc-summary-block__value--large">18</div>
</div>
</article>
<article class="inc-summary-block">
<div class="inc-summary-block__header">Queue Health</div>
<div class="inc-summary-block__body inc-summary-block__body--right">
<div class="inc-summary-block__value inc-summary-block__value--small">92%</div>
<span class="inc-summary-block__status-badge inc-summary-block__status-badge--approved">On track</span>
</div>
</article>
<article class="inc-summary-block">...</article>
<article class="inc-summary-block">...</article>
</section>
<div class="inc-empty-state">
<div class="inc-empty-state__content">
<div class="inc-empty-state__icon" data-inc-icon="empty" aria-hidden="true"></div>
<h3 class="inc-heading inc-heading--h3">No saved views</h3>
<p class="inc-text inc-text--regular inc-text--muted">Create a named filter set...</p>
<div class="inc-empty-state__actions">
<button class="inc-btn inc-btn--secondary" type="button">Dismiss</button>
<button class="inc-btn inc-btn--primary" type="button">Create View</button>
</div>
</div>
</div>
Tabs
Folder tab content.
Second folder tab content.
Line tab content.
Second line tab content.
<section class="inc-tabs-folder">
<ul class="inc-tabs-nav" role="tablist">
<li><button class="inc-tab active" type="button" data-inc-toggle="tab" data-inc-target="#ref-folder-overview">Overview</button></li>
<li><button class="inc-tab" type="button" data-inc-toggle="tab" data-inc-target="#ref-folder-aging">Aging</button></li>
</ul>
<div class="inc-tab-content">
<div class="inc-tab-pane active" id="ref-folder-overview" role="tabpanel">...</div>
<div class="inc-tab-pane" id="ref-folder-aging" role="tabpanel">...</div>
</div>
</section>
<section class="inc-tabs-line">
<ul class="inc-tabs-nav" role="tablist">
<li><button class="inc-tab active" type="button" data-inc-toggle="tab" data-inc-target="#ref-line-one">Needs Review</button></li>
<li><button class="inc-tab" type="button" data-inc-toggle="tab" data-inc-target="#ref-line-two">Ready</button></li>
</ul>
</section>
Sparklines
| Benchmark | Current | History | Delta |
|---|---|---|---|
| HTTP/3 plaintext | 5,510 rps |
|
+3.1% |
<inc-sparkline values="12,15,14,20,18" width="120" height="28" aria-label="Five point numeric trend"></inc-sparkline>
<inc-sparkline
points='[{"x":"2026-06-01","y":1200},{"x":"2026-06-02","y":1350}]'
width="120"
height="28"
variant="area"
tone="accent"
curve="monotone"
aria-label="Timestamped benchmark history">
</inc-sparkline>
<inc-sparkline
values="5120,5400,5310,5600,5510"
height="28"
width="120"
tone="accent"
show-last-marker
aria-label="Recent requests per second trend for Incursa HTTP/3 on HTTP plaintext">
</inc-sparkline>
<inc-sparkline values="-3,-1,2,1,4" reference-value="0" show-min-max aria-label="Mixed positive and negative delta trend"></inc-sparkline>
Tables And Lists
| Project | Period | Amount | Status |
|---|---|---|---|
| AP-2026-00142 | March 2026 | $18,240.22 | Approved |
- First review pass
- Secondary approval
- Final export
<div class="inc-table-responsive">
<table class="inc-table inc-table--sm inc-table--data-table">
<thead>...</thead>
<tbody>
<tr>
<td class="inc-table__cell inc-table__cell--data">AP-2026-00142</td>
<td class="inc-table__cell">March 2026</td>
<td class="inc-table__cell inc-table__cell--numeric">$18,240.22</td>
<td class="inc-table__cell"><span class="inc-badge inc-badge--success inc-badge--pill">Approved</span></td>
</tr>
</tbody>
</table>
</div>
<div class="inc-list-group">
<a class="inc-list-group__item inc-list-group__item--action active" href="#">Needs Review</a>
<a class="inc-list-group__item inc-list-group__item--action" href="#">March Closeout</a>
</div>
<div class="inc-list-group inc-list-group--flush">
<a class="inc-list-group__item inc-list-group__item--action" href="#">Inbox</a>
<a class="inc-list-group__item inc-list-group__item--action" href="#">Assigned to me</a>
</div>
<ol class="inc-list-group inc-list-group--numbered">
<li class="inc-list-group__item">First review pass</li>
<li class="inc-list-group__item">Secondary approval</li>
<li class="inc-list-group__item">Final export</li>
</ol>
<div class="inc-vertical-list inc-vertical-list--compact inc-vertical-list--trim inc-vertical-list--inset">
<div class="inc-vertical-list__item inc-flex-between">...</div>
</div>
Native Controls
Billing summary 3 items
Example disclosure body.
<details class="inc-disclosure" open>
<summary class="inc-disclosure__summary">
<span class="demo-disclosure-title">
<span class="inc-disclosure__title">Billing summary</span>
<span class="inc-badge inc-badge--info inc-badge--pill">3 items</span>
</span>
<span class="inc-disclosure__meta">Native details</span>
</summary>
<div class="inc-disclosure__content">...</div>
</details>
<details class="inc-native-menu inc-native-menu--block">
<summary class="inc-native-menu__summary">
<span class="inc-user-menu__avatar">AP</span>
<span class="inc-native-menu__section-title">
<span class="inc-user-menu__name">Queue Actions</span>
<span class="inc-user-menu__detail">Summary-based menu</span>
</span>
</summary>
<div class="inc-native-menu__panel">...</div>
</details>
<progress class="inc-progress inc-progress--success" max="100" value="72">72%</progress>
<meter class="inc-meter inc-meter--warning" min="0" max="100" low="65" high="90" optimum="100" value="74">74%</meter>
Floating Content
<div class="demo-muted-panel position-relative">
<div class="inc-tooltip show bs-tooltip-auto" role="tooltip">
<div class="tooltip-arrow" aria-hidden="true"></div>
<div class="inc-tooltip__inner">Tooltip text for short hover help.</div>
</div>
</div>
<div class="demo-muted-panel position-relative">
<div class="inc-popover show bs-popover-auto" role="tooltip">
<div class="popover-arrow" aria-hidden="true"></div>
<div class="inc-popover-header">Popover title</div>
<div class="inc-popover-body">Popover content can hold short guidance, counts, or a compact callout.</div>
</div>
</div>
Validation And Filter Toolbars
There are 2 issues to fix
- Contract number is required.
- Billing period must be selected.
Contract number is required.
Email looks valid.
<div class="inc-form__error-summary">
<h3 class="inc-form__error-summary-title">There are 2 issues to fix</h3>
<ul class="inc-form__error-summary-list">
<li>Contract number is required.</li>
<li>Billing period must be selected.</li>
</ul>
</div>
<div class="inc-form__group">
<label class="inc-form__label inc-form__label--required" for="ref-contract">Contract number</label>
<input id="ref-contract" class="inc-form__control is-invalid" type="text" aria-invalid="true">
<p class="inc-form__feedback inc-form__feedback--error">Contract number is required.</p>
</div>
<section class="inc-filter-bar">
<div class="inc-filter-bar__main">...</div>
<div class="inc-filter-bar__actions">
<div class="inc-filter-bar__chips">
<span class="inc-filter-chip">Owner: AP Team</span>
</div>
</div>
</section>
Spacing And Visibility Utilities
Use the utility layer when you need a light spacing or visibility adjustment without pulling in Bootstrap utility classes.
inc-u-hidden-mobile and disappears on smaller screens.Common helpers now include stack spacing, gap, padding, hidden/mobile-hidden/desktop-hidden, and visually hidden text.
<div class="inc-u-stack-sm">
<span class="inc-badge inc-badge--info inc-badge--pill">inc-u-stack-sm</span>
<p class="inc-text inc-text--regular">Light spacing without Bootstrap utilities.</p>
<div class="demo-chip-row inc-u-gap-sm">
<button class="inc-btn inc-btn--secondary inc-btn--sm" type="button">Secondary</button>
<button class="inc-btn inc-btn--primary inc-btn--sm" type="button">Primary</button>
</div>
</div>
<div class="inc-alert inc-alert--info inc-u-hidden-mobile">Hidden on smaller screens.</div>
Table Families
Review Grid
| Record | State | Amount |
|---|---|---|
| AP-142 | Needs Review | $18,240 |
| AP-148 | Expiring Docs | $7,882 |
Analytics Grid
| Week | Approved | Variance |
|---|---|---|
| W10 | 428 | +6.2% |
| W11 | 447 | +4.4% |
Spreadsheet Grid
| Line | Code | Hours |
|---|---|---|
| 001 | FRM-042 | 12.50 |
| 002 | FRM-043 | 8.25 |
<table class="inc-table inc-table--review-grid inc-table--sm">...</table>
<table class="inc-table inc-table--analytics-grid inc-table--sm">...</table>
<table class="inc-table inc-table--spreadsheet-grid inc-table--sm">...</table>
Overlay Workflows
<button class="inc-btn inc-btn--primary" type="button" data-inc-toggle="modal" data-inc-target="#approval-modal">Open modal</button>
<button class="inc-btn inc-btn--outline-secondary" type="button" data-inc-toggle="offcanvas" data-inc-target="#assignment-drawer">Open offcanvas</button>
Operational States And Feedback
No results matched
Distinct from the create-first empty state.
Export failed
Use a proper failure surface, not just a muted paragraph.
View saved
Use for asynchronous success or background-status messages.
<div class="inc-state-panel inc-state-panel--results">...</div>
<div class="inc-state-panel inc-state-panel--error">...</div>
<div class="inc-permission-banner">
<div class="inc-permission-banner__icon" data-inc-icon="permission" aria-hidden="true"></div>
<div>...</div>
</div>
<div class="inc-toast-stack">
<div class="inc-toast-card">...</div>
</div>
Detail, Timeline, Files, And Grid Patterns
- Record Id
- AP-2026-00142
- Current request
- $18,240.22
Imported from OpenPay
Timeline entries combine actor, time, event, and state without falling apart visually.
Drop documents here
For review workflows with waiver or attachment requirements.
No files selected yet.
<div class="inc-key-value-grid">
<dl class="inc-key-value inc-key-value--card">
<dt class="inc-key-value__label">Record Id</dt>
<dd class="inc-key-value__value inc-key-value__value--data">AP-2026-00142</dd>
</dl>
</div>
<div class="inc-timeline">
<div class="inc-timeline__item">...</div>
</div>
<div class="inc-file-dropzone">...</div>
<div class="inc-bulk-bar">...</div>
Auto Refresh Widget
Use the inline modifier inside cards or toolbars, and the base class when you want the widget pinned to the page corner.
<div class="inc-auto-refresh"
data-inc-auto-refresh
data-inc-refresh-seconds="30"
data-inc-refresh-label="Refresh in"
data-inc-refresh-loading-label="Refreshing">
<button class="inc-btn inc-btn--secondary inc-btn--micro inc-auto-refresh__toggle"
type="button"
data-inc-action="auto-refresh-toggle"
aria-label="Pause"
aria-pressed="false">
<span class="inc-auto-refresh__toggle-icon" aria-hidden="true"></span>
<span class="inc-auto-refresh__toggle-text">Pause</span>
</button>
<span class="inc-auto-refresh__countdown">
<span class="inc-auto-refresh__label">Refresh in</span>
<span class="inc-auto-refresh__value">30s</span>
</span>
<span class="inc-auto-refresh__status" role="status" aria-live="polite" aria-atomic="true" hidden>
<span class="inc-auto-refresh__spinner" aria-hidden="true">
<span class="inc-spinner inc-spinner--border inc-spinner--border--sm inc-spinner--border--primary"></span>
<span class="inc-spinner inc-spinner--grow inc-spinner--grow--sm inc-spinner--grow--primary"></span>
</span>
<span class="inc-auto-refresh__status-text">Refreshing</span>
</span>
</div>
<div class="inc-auto-refresh inc-auto-refresh--inline"
data-inc-auto-refresh
data-inc-refresh-seconds="90">
...
</div>