Design System

Component Library

Interactive UI components with brand-specific theming. Switch brands to see how each component adapts.

Active Brand:
View CSS Specs

Buttons

Primary actions, secondary options, and ghost buttons

Primary Buttons

Secondary Buttons

Outline Buttons

Ghost Buttons

View CSS Specifications
.brand-btn-primary {
  background: var(--brand-primary);
  color: white;
}
.brand-btn-sm { padding: 0.25rem 0.75rem; font-size: 0.75rem; }
.brand-btn-lg { padding: 0.75rem 1.5rem; font-size: 1rem; }

Data Tables

CSS Reference

Zebra-striped tables with multi-select filters, date ranges, and sorting. For React apps, see the DataTable component →

Sam Sample
Showing 12 of 156 entries (3 filters active)
EmployeeCustomerDateHoursStatus
Sarah JohnsonMinute7 CustomersDec 5, 20258.0Approved
Michael ChenMinute7 DevelopmentDec 5, 20256.5Pending
Emily DavisMinute7 CustomersDec 4, 20257.5Approved
James WilsonMinute7 DevelopmentDec 4, 20254.0Rejected
0 - 0 of 0 timesheets
View CSS Specifications
.brand-table tbody tr:nth-child(even) {
  background: var(--brand-table-stripe);
}
.brand-table tbody tr:hover {
  background: var(--brand-table-hover);
}

Filter Components

Reusable filter elements: chips, dropdowns, date pickers, and grouping options

More Filters Panel

More Filters
Grouping Options

Individual Components

Active Filter Chips

Minute7 Customers
Billable
Design/Marketing

Date Range Picker

View CSS Specifications
/* Filter Chip (removable) */
.brand-filter-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--brand-space-2);
  padding: var(--brand-space-1) var(--brand-space-3);
  background-color: var(--brand-primary-50);
  border: 1px solid var(--brand-primary-200);
  border-radius: var(--brand-radius-full);
  color: var(--brand-primary-700);
}

/* Filter Dropdown Button (active state) */
.brand-filter-dropdown-btn.active {
  background-color: var(--brand-primary);
  border-color: var(--brand-primary);
  color: white;
}

Form Elements

Inputs, selects, checkboxes, and validation states

Text Inputs

Please enter a valid email address

Select and Checkboxes

Cards

Feature cards, pricing cards, and info cards

Time Tracking

Track hours in real-time with automatic timers

Expense Reports

Submit and approve expenses with ease

Reports

Get insights into team productivity

Alerts

Informational, success, warning, and error messages

Information

Your timesheet will be automatically submitted at the end of the day.

Success

Your time entry has been saved and synced to QuickBooks.

Warning

You have 3 unapproved timesheets from last week.

Error

Failed to sync with QuickBooks. Please check your connection.

Badges

Status indicators and categorical labels

Status Badges

Primary Info Approved Pending Rejected

Typography

Headings, body text, and text utilities

StyleTypefaceSizeWeightLine HeightExample
Heading 1Geist Sans2.25rem (36px)700 (Bold)1.2Time Tracking
Heading 2Geist Sans1.875rem (30px)600 (Semibold)1.3Features
Heading 3Geist Sans1.5rem (24px)600 (Semibold)1.4Integration
Heading 4Geist Sans1.25rem (20px)600 (Semibold)1.4Details
BodySystem UI1rem (16px)400 (Regular)1.5Regular paragraph text
SmallSystem UI0.875rem (14px)400 (Regular)1.5Captions and footnotes
MutedSystem UI0.875rem (14px)400 (Regular)1.5Secondary information
MonospaceSF Mono0.875rem (14px)400 (Regular)1.5code example
View CSS Specifications
:root {
  /* Font Families */
  --brand-font-heading: 'Geist Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --brand-font-body: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --brand-font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;

  /* Font Weights */
  --brand-font-normal: 400;
  --brand-font-medium: 500;
  --brand-font-semibold: 600;
  --brand-font-bold: 700;

  /* Font Sizes */
  --brand-text-xs: 0.75rem;   /* 12px */
  --brand-text-sm: 0.875rem;  /* 14px */
  --brand-text-base: 1rem;    /* 16px */
  --brand-text-lg: 1.125rem;  /* 18px */
  --brand-text-xl: 1.25rem;   /* 20px */
  --brand-text-2xl: 1.5rem;   /* 24px */
  --brand-text-3xl: 1.875rem; /* 30px */
  --brand-text-4xl: 2.25rem;  /* 36px */
}

Brand Logos & Icons

Official brand assets for each product. Available as icon, logo, and wordmark variants.

LMNTL.AI

Platform
LMNTL Icon

Icon

lmntl-icon.svg
LMNTL Logo

Logo

lmntl-logo.svg
LMNTL Wordmark

Wordmark

lmntl-wordmark.svg
LMNTL Icon White On dark
LMNTL Icon Mono Mono

Minute7

Time & Expense
Minute7 Icon

Icon

minute7-icon.svg
Minute7 Logo

Logo

minute7-logo.svg
Minute7 Wordmark

Wordmark

minute7-wordmark.svg
Minute7 Icon White On dark
Minute7 Icon Mono Mono

Hour Timesheet

DCAA Compliance
Hour Timesheet Icon

Icon

hour-timesheet-icon.svg
Hour Timesheet Logo

Logo

hour-timesheet-logo.svg
Hour Timesheet Wordmark

Wordmark

hour-timesheet-wordmark.svg
Hour Timesheet Icon White On dark
Hour Timesheet Icon Mono Mono

Mission Critical SaaS

Enterprise
MCS Icon

Icon

mcs-icon.svg
MCS Logo

Logo

mcs-logo.svg
MCS Wordmark

Wordmark

mcs-wordmark.svg
MCS Icon White On dark
MCS Icon Mono Mono

Download All Brand Assets

Get the complete logo kit with all variants and formats.

View on GitHub

Design Token Reference

Spacing Scale

--brand-space-10.25rem (4px)
--brand-space-20.5rem (8px)
--brand-space-30.75rem (12px)
--brand-space-41rem (16px)
--brand-space-61.5rem (24px)
--brand-space-82rem (32px)
--brand-space-123rem (48px)
--brand-space-164rem (64px)

Border Radius

--brand-radius-sm0.25rem (4px)
--brand-radius-md0.375rem (6px)
--brand-radius-lg0.5rem (8px)
--brand-radius-xl0.75rem (12px)
--brand-radius-2xl1rem (16px)
--brand-radius-full9999px

Shadows

--brand-shadow-sm
--brand-shadow-md
--brand-shadow-lg
--brand-shadow-xl

Transitions

--brand-transition-fast150ms ease
--brand-transition-normal200ms ease
--brand-transition-slow300ms ease

Line Heights

--brand-leading-tight1.25
--brand-leading-normal1.5
--brand-leading-relaxed1.625

Focus Ring

--brand-focus-ring: 0 0 0 3px var(--brand-primary-200)

Download Full CSS

Get the complete brand-tokens.css file with all design tokens and component styles.

View on GitHub

Implementation Files

Source files for the brand design system. These files define the core styling tokens and utilities.

ResourceFileDescription
Brand Tokenssrc/styles/brand-tokens.cssCSS custom properties for all brand colors, spacing, and typography
Tailwind Configtailwind.config.mjsExtended color palette and custom theme configuration
Global Stylessrc/styles/global.cssBase typography, button styles, and utility classes
Glass Effectssrc/styles/glass.cssGlassmorphism and frosted glass UI effects
Animationssrc/styles/animations.cssKeyframe animations and transition utilities

React Components

NPM Package

For React applications, use the @mission-critical-saas/brand-system package. It includes fully-typed React components with built-in brand theming.

Installation GitHub Packages
npm install @mission-critical-saas/brand-system

DataTable

v1.2.0

Full-featured data table with sorting, zebra striping, loading states, and row click handlers. Uses LMNTL purple for zebra stripes by default.

Features

  • Clickable column headers with sort indicators
  • Zebra striping with brand colors
  • Loading skeleton state
  • Empty state messaging
  • Row click handlers with keyboard support
  • CVA variants for customization
View Usage Example
import { DataTable, useSortState } from '@mission-critical-saas/brand-system'
import type { Column } from '@mission-critical-saas/brand-system'

interface User {
  id: string
  name: string
  email: string
  status: string
}

const columns: Column<User>[] = [
  { key: 'name', header: 'Name', sortable: true },
  { key: 'email', header: 'Email', sortable: true },
  {
    key: 'status',
    header: 'Status',
    render: (value) => <StatusBadge status={value} />
  },
]

function UsersTable() {
  const { sort, handleSort } = useSortState('name', 'asc')

  return (
    <DataTable
      columns={columns}
      data={users}
      rowKey="id"
      sortColumn={sort.column ?? undefined}
      sortDirection={sort.direction ?? undefined}
      onSortChange={handleSort}
      onRowClick={(row) => navigate(`/users/${row.id}`)}
    />
  )
}

DataTableFiltersAdvanced

v1.2.0

Comprehensive filter bar with search, select, date range, and balance filters. Supports multiple layout variants and "clear all" functionality.

Filter Types

Search

Text input with icon

Select

Dropdown with options

Date Range

From/to date pickers

Balance

Min/max number inputs

View Usage Example
import { DataTableFiltersAdvanced, useFilterState } from '@mission-critical-saas/brand-system'
import type { FilterConfig } from '@mission-critical-saas/brand-system'

const filters: FilterConfig[] = [
  { key: 'search', label: 'Search', type: 'search' },
  {
    key: 'status',
    label: 'Status',
    type: 'select',
    options: [
      { value: 'all', label: 'All Statuses' },
      { value: 'active', label: 'Active' },
      { value: 'inactive', label: 'Inactive' },
    ],
  },
  { key: 'dateRange', label: 'Date Range', type: 'date-range' },
  { key: 'balance', label: 'Balance', type: 'balance' },
]

function FilteredTable() {
  const { values, setValue, clearAll } = useFilterState({
    search: '',
    status: 'all',
    dateRange: { from: null, to: null },
    balance: { min: null, max: null },
  })

  return (
    <DataTableFiltersAdvanced
      filters={filters}
      values={values}
      onChange={setValue}
      onClear={clearAll}
      layout="grid"
      columns={3}
    />
  )
}

Additional Components

ComponentDescriptionVersion
StatusBadgeStatus indicators with auto color mappingv1.2.0
BrandProviderContext provider for brand themingv1.0.0
TrustBadgesConfigurable trust badge displayv1.0.0
TooltipCursor-following tooltips for charts/tablesv1.2.0