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:
<!-- 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 & SRI
For production, pin to a specific version to avoid unexpected changes and use Subresource Integrity (SRI) hashes for security:
<link
rel="stylesheet"
href="https://cdn.focus-ui.de/v2.0.0/focus-ui.css"
integrity="sha384-6Hu/ziK6k/v37QJ71CE74k5b3yiCB7bzjoSEBzEgiACNXOGuOl2mqprjy0tgjDiN"
crossorigin="anonymous">
<script
src="https://cdn.focus-ui.de/v2.0.0/focus-ui.min.js"
integrity="sha384-GDpJYcUtWAkXeEY/ue8/sOuXYpDByN+yjFe52qcCpTwGYyVze1NxcY1qeImkQNHH"
crossorigin="anonymous"></script>Why use SRI? SRI ensures that CDN-hosted files haven't been tampered with. See the SRI documentation for more information.
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.
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:
<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.
// 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:
// 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')
Ready-Made Templates
Jump-start your project with production-ready page templates built entirely with Focus UI:
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) |