Getting Started

Get up and running with Focus UI in minutes via CDN, npm, or self-hosting.

Installation

Via CDN (Recommended)

The fastest way to get started is to include Focus UI from our CDN:

HTML
<!-- Focus UI CSS -->
<link rel="stylesheet" href="https://cdn.focus-ui.de/latest/focus-ui.css">

<!-- Focus UI JavaScript (optional, for interactive components) -->
<script src="https://cdn.focus-ui.de/latest/focus-ui.min.js"></script>
Version Pinning

For production, pin to a specific version to avoid unexpected changes:

<link rel="stylesheet" href="https://cdn.focus-ui.de/v1.11.0/focus-ui.css">
<script src="https://cdn.focus-ui.de/v1.11.0/focus-ui.min.js"></script>

Available CDN Files

File Description Size
focus-ui.css Complete CSS bundle (all components) ~45KB
focus-ui.js UMD bundle for browsers ~23KB
focus-ui.min.js Minified UMD bundle ~11KB
focus-ui.esm.js ES Module bundle for bundlers ~21KB

Available Versions

View all available versions at cdn.focus-ui.de/versions.json or see the GitHub Releases.

Via npm Coming Soon

npm package is not yet published. For now, use the CDN or download from GitHub Releases.

Once published, you'll be able to install via npm install focus-ui.

Self-Hosting

Want to host Focus UI on your own server? See the Self-Hosting Guide for instructions.

Basic Usage

CSS-Only Components

Most Focus UI components work perfectly without JavaScript. Simply add the appropriate CSS classes to your HTML elements:

HTML
<button class="focus-btn focus-btn-primary">Primary Button</button>
<button class="focus-btn focus-btn-secondary">Secondary Button</button>
<button class="focus-btn focus-btn-success">Success Button</button>

JavaScript-Enhanced Components

For interactive features like modals, toasts, and dropdowns, include the JavaScript file. Focus UI automatically initializes components with data-focus-* attributes.

JavaScript
// Show a toast notification
FocusUI.Toast.show({
  type: 'success',
  message: 'Hello from Focus UI!'
})

// Show a confirm dialog
FocusUI.Modal.confirm({
  title: 'Confirm',
  message: 'Do you like Focus UI?'
}).then(() => {
  // User confirmed
}).catch(() => {
  // User cancelled
})

JavaScript API

The JavaScript API provides programmatic control over interactive components:

JavaScript
// Modal dialogs
FocusUI.Modal.open('#myModal')
FocusUI.Modal.close('#myModal')
await FocusUI.Modal.confirm({ title: 'Delete?', message: 'Are you sure?' })
const name = await FocusUI.Modal.prompt({ title: 'Enter name' })

// Toast notifications
FocusUI.Toast.show({ type: 'success', title: 'Saved', message: 'Changes saved.' })

// Theme switching
FocusUI.Theme.toggle()      // Cycle: light → dark → auto
FocusUI.Theme.set('dark')   // Set specific theme

// Form validation
FocusUI.Forms.onSubmit('#form', {
  '[name="email"]': { required: true, email: true },
  '[name="password"]': { required: true, minLength: 8 }
}, (data) => console.log(data))

// Sidebar/Dropdown
FocusUI.Sidebar.toggle('#sidebar')
FocusUI.Dropdown.open('#menu')

Naming Convention

All Focus UI classes use the focus- prefix to avoid conflicts with other libraries:

Pattern Example Description
focus-{component} focus-btn Base component class
focus-{component}-{variant} focus-btn-primary Component variant (color, style)
focus-{component}-{size} focus-btn-lg Size modifier
focus-{utility} focus-mt-4 Utility class (margin-top: 1rem)