This folder contains a distilled, reusable UI kit for data-heavy business applications. The goal is to keep the recurring visual patterns that define the UI language and expose them consistently through the inc-* class surface.
Open the hosted examples and component reference: https://incursa.github.io/ui-kit
Licensed under Apache 2.0.
- Bootstrap theming overrides for colors, typography, spacing, borders, inputs, cards, tabs, and tables.
- Dense but readable table styling with strong teal headers and mono-friendly numeric cells.
- Compact action buttons and inline forms that work well inside grids and table rows.
- Card, section-shell, summary-block, vertical-list, and layout primitives used across admin screens.
- Status-oriented badges and alerts with soft backgrounds and stronger foreground/border cues.
- Validation states, error summaries, fieldset/legend groups, filter chips, and dense toolbar patterns for search-heavy screens.
- Operational states such as empty, no-results, loading, error, permission, lock, toast, live-region, auto-refresh, and activity timeline surfaces.
- Bulk-action, sticky-header, and row-state table patterns for operator-facing grids.
- File/document dropzones, file rows, read-only description-list grids, progress/meter surfaces, and drawer-style side panels.
- A small overlay/navigation layer for tabs, pagination, dropdown actions, native details/dialog patterns, and compatibility modals/offcanvas panels.
- Opinionated app-shell pieces for navbar/topbar, breadcrumb/nav-triad, sticky footer, user menu, and common two/three-column page layouts.
- A public-surface standards layer for
inc-prefixing, BEM naming, and accessible interactive behavior.
- App-specific backgrounds, admin footer behavior, report CSS, print CSS, and vendor assets.
- App-specific background art and report/print-only styling.
- Feature-specific one-off classes that do not generalize cleanly across products.
- First-pass Spec Trace suite: specs/requirements/ui-kit/_index.md
- Open requirement gaps and follow-up questions: specs/requirements/ui-kit/REQUIREMENT-GAPS.md
- Verification baseline: specs/verification/ui-kit/_index.md
assets/brand/Repository brand assets for GitHub, docs, and future package-site usage.src/_inc-tokens.scssBootstrap-facing theme tokens and override variables.src/_inc-theme.scssDedicated brand-facing variables for fonts, palette, semantic surfaces, and text colors.src/inc-design-language.scssMain source entrypoint for theinc-*class surface.dist/inc-design-language.cssCompiled standalone CSS output.dist/inc-design-language.jsOptional vanilla-JS helper for menus, tabs, collapsible sections, and auto-refresh widgets with pause/resume controls.index.htmlShowcase hub for the included example pages.demo.htmlDashboard-style preview of the extracted patterns.work-queue.htmlSidebar and table-heavy queue example.record-detail.htmlThree-column detail example with action rail.native-patterns.htmlNative-first details/menu/dialog example.overlay-workflows.htmlModal and offcanvas workflow example with validation and assignment flows.reference.htmlCopy/paste catalog for the standard controls and markup patterns.specs/requirements/ui-kit/First-pass Spec Trace specification suite for the UI kit, including the gap log for unresolved questions.specs/verification/ui-kit/Auditable verification baseline for the current UI kit public surface.states.htmlEmpty, no-results, loading, error, permission, timeline, file, and notification patterns.forms-and-validation.htmlValidation, error-summary, filter-bar, chip, and read-only/edit form patterns.data-grid-advanced.htmlSticky-header table, bulk selection, row states, busy buttons, and side drawer pattern.showcase.cssSmall demo-only helper stylesheet for the static examples.LLMS.txtPlain-text agent guidance in the emergingllms.txt-style format for packaged consumers and tooling.AI-AGENT-INSTRUCTIONS.mdShort operational guidance for an AI agent or another engineer.
The reusable public class surface uses the inc-* prefix.
Examples:
inc-tableinc-btninc-textinc-headinginc-datainc-cardinc-header-bodyinc-summary-block
The BEM/modifier structure stays consistent across the package, for example inc-table__cell--numeric or inc-btn--primary.
For titled sections that wrap tables, use inc-header-body--table-body to keep body padding while removing extra bottom margin from nested table wrappers.
- Typography: IBM Plex Sans for UI copy and IBM Plex Mono for data, amounts, and identifiers.
- Density: tighter than consumer-product UI, but not cramped; compact forms and small action buttons are first-class.
- Surfaces: mostly white and light neutral surfaces with restrained borders and low shadow usage.
- Accent: indigo is the primary brand/action color, with amber used as a brighter warning/highlight accent.
- Status communication: success/warning/error use pale backgrounds with darker foreground and border colors instead of pure solid fills.
- Tables first: headers are high-contrast, numeric alignment is explicit, and responsive table wrappers are part of the default system.
- Shell aware: the package now includes app-shell, breadcrumb, nav-triad, navbar, footer-bar, and user-menu primitives so page layout is part of the language, not an afterthought.
- Layout aware: sidebar menus, inline form fields, and multi-column page examples are included so common admin-page composition is demonstrated directly.
- Workflow aware: validation, filter bars, bulk action bars, audit timelines, and file-review surfaces are part of the package now because those patterns recur constantly in B2B products.
- Native capable: the package now also includes styled
<details>disclosures, a native summary-based menu, and<dialog>surfaces for both centered modals and drawer-style side sheets so you can choose browser primitives when they fit better than helper-managed components.
- CSS-only/native behavior is enough for layout, cards, tables, buttons, alerts, form fields, badges, breadcrumbs, sticky footer, and most surface styling.
- Stateful controls still need behavior: tabs, collapsible sections, menus/dropdowns, modals, offcanvas panels, dismissible alerts, toasts, and auto-refresh countdowns with pause/resume behavior.
- This package now includes an optional dependency-free helper at
dist/inc-design-language.jsfor: user-menu dropdowns, tab switching, collapse/accordion toggles, legacy modal/offcanvas shells, and page auto-refresh countdown widgets. - This package also includes native-styled patterns for:
details.inc-disclosure,details.inc-native-menu,dialog.inc-native-dialog, anddialog.inc-native-dialog--drawer. - If you prefer native HTML behavior where possible, use browser primitives like
<details>and<dialog>for product-specific implementations. The helper exists for places where the design language is intentionally Bootstrap-like and needs matching interaction behavior.
If you just want the look in another app:
- Copy
dist/inc-design-language.css. - If you need interactive tabs/menus/collapses, also copy
dist/inc-design-language.js. - Load the CSS after your reset or base stylesheet.
- Load the optional JS near the end of the page.
- Use the
inc-*classes shown inreference.htmlfor direct copy/paste control markup. - Check
states.html,forms-and-validation.html,data-grid-advanced.html, andoverlay-workflows.htmlfor the workflow-heavy patterns that do not read well as isolated snippets. - Use
demo.html,work-queue.html,record-detail.html, andnative-patterns.htmlfor fuller page composition.
This repository is shaped as a normal npm package:
main,style, andsassentry points are set.fileslimits packaged output to the reusable source and dist assets.npm packproduces a local tarball.publishConfig.accessis set for public scoped publishing.- GitHub Actions is set up for npm Trusted Publishing on release.
Typical flow:
npm install
npm run build
npm packThen in the consuming app:
npm install ../path-to-tarball/incursa-ui-kit-x.y.z.tgzOr, while iterating locally:
npm install ../path-to-styles-folderIf you publish it publicly:
npm install @incursa/ui-kitImport either:
import "@incursa/ui-kit/dist/inc-design-language.css";or, if you want to own the theme variables:
@import "@incursa/ui-kit/src/_inc-theme";
@import "@incursa/ui-kit/src/inc-design-language";There are two supported ways to use it.
- Use the compiled assets.
- Add
dist/inc-design-language.cssto your site and optionallydist/inc-design-language.js. - This is the simplest path.
- You do not need Bootstrap CSS at runtime because the compiled CSS already includes the Bootstrap layer it was built on.
- You do not need Bootstrap JS unless your app separately uses Bootstrap's own JavaScript components.
- Use the SCSS source.
- Import
src/inc-design-language.scssinto your own Sass pipeline. - This path is for when you want to override theme variables or deeper Bootstrap-facing tokens.
- In this mode you do need Bootstrap and Sass available at build time because the source imports
bootstrap/scss/bootstrap.
Practical recommendation for a .NET Razor Pages or MVC app:
- If you just want the finished look, copy or install the package and reference
dist/inc-design-language.cssfrom your layout. - Add
dist/inc-design-language.jsonly if you want the optionalinc-*menu/tab/collapse helper behavior. - Use the native
<details>and<dialog>patterns when you want less JavaScript. - Use the SCSS source path only if you want this package to become part of your app's own asset build and theme pipeline.
This repository is set up for:
- CI on pushes and pull requests via
.github/workflows/ci.yml - GitHub Pages showcase deployment from
mainvia.github/workflows/pages.yml - npm Trusted Publishing on
v*tag pushes via.github/workflows/npm-publish.yml - Public release hygiene through
LICENSE,CHANGELOG.md,CONTRIBUTING.md, andRELEASING.md - Brand assets in
assets/brand/so README and future docs do not depend on external image hosting
For normal releases:
- Merge the source changes you want on
main. - Run the release helper from PowerShell:
.\release.ps1 -ReleaseType patch -Changelog @"
- Summarize the release here.
- Add more markdown if needed.
"@Use minor or major when needed. The script verifies the repo state, bumps the version, runs the package validation step, updates CHANGELOG.md, creates the release commit and tag, and pushes them. Pushing the tag publishes the package to npm automatically. If you need to retry a failed publish, rerun the original tag-triggered workflow run rather than dispatching a separate manual publish.
If you want to keep editing it:
- Install Bootstrap 5.3 and Sass in the consuming project.
- Copy the
src/folder. - Import
src/inc-design-language.scss. - Edit
src/_inc-theme.scssfor the fonts and colors you want. - Use
src/_inc-tokens.scssonly when you need deeper spacing, radius, shadow, or Bootstrap-level tuning.
Example:
$inc-brand-700: #0f5f73;
$inc-brand-800: #0a4958;
$inc-font-family-sans: "Aptos", "Segoe UI", sans-serif;
@import "./src/inc-design-language";