drawer Component
Drawer Class API Reference
| Type | Class Options | Usage | Notes |
|---|---|---|---|
| Base | drawer |
Required base class | Always required |
drawer-overlay |
Overlay container | Wraps the drawer element | |
| Position | left |
Slides from left edge | Default position |
right |
Slides from right edge | For filters/details | |
top |
Slides from top edge | For notifications | |
bottom |
Slides from bottom edge | Mobile action sheets | |
| Size | tiny |
240px / 20vh | Minimal content |
small |
320px / 30vh | Simple forms | |
| (default) | 400px / 40vh | No class needed | |
large |
600px / 60vh | Detailed forms | |
big |
800px / 80vh | Complex interfaces | |
fullscreen |
100% viewport | Full coverage | |
| Color (Semantic) | (default) | Gray/neutral | No class needed |
primary |
Main action color | Blue-based | |
positive |
Success/confirm | Green-based | |
negative |
Danger/delete | Red-based | |
warning |
Caution/alert | Yellow/orange-based | |
info |
Information | Blue-based | |
| Overlay | no-backdrop |
No overlay background | Transparent overlay |
dark-backdrop |
Darker overlay | 70% black opacity | |
light-backdrop |
Light overlay | 70% white opacity |
Drawer System
The drawer system provides sliding panels from screen edges. It requires three parts:
- Trigger Button - A button with
data-drawer="drawer-id"attribute - Drawer HTML - The drawer structure with matching
id="drawer-id" - JavaScript - Automatically loaded via
hygge.core.js(no setup needed!)
Position Variants
Left Drawer (Default)
Preview
Code
Right Drawer
Preview
Code
Top Drawer
Preview
Code
Bottom Drawer
Preview
Code
Size Variants
Tiny Drawer
Preview
Code
Large Drawer
Preview
Code
Fullscreen Drawer
Preview
Code
Color Variants
Primary Drawer
Preview
Code
Negative Drawer
Preview
Code
Form Example
Form Drawer
Preview
Code
JavaScript API
JavaScript Methods
Preview
Code
// Open drawer
Drawer.open('drawer-id');
Drawer.open('drawer-id', { position: 'right', size: 'large' });
// Close drawer
Drawer.close('drawer-id');
// Toggle drawer
Drawer.toggle('drawer-id');
// Close all drawers
Drawer.closeAll();
// Check if drawer is open
if (Drawer.isOpen('drawer-id')) {
console.log('Drawer is open');
}
// Event listeners
document.getElementById('drawer-id').addEventListener('drawer:open', (e) => {
console.log('Drawer opened', e.detail);
});
document.getElementById('drawer-id').addEventListener('drawer:close', (e) => {
console.log('Drawer closed', e.detail);
});
Data Attributes
Advanced Trigger Options
Preview
Code
Interactive Examples
Usage Guidelines
Best Practices
- Position: Use left for navigation, right for details/filters, top for notifications, bottom for mobile actions
- Size: Choose based on content - tiny for menus, fullscreen for complex forms
- Colors: Use semantic colors to convey meaning (positive for success, negative for danger)
- Overlay: Clicking the overlay closes the drawer by default (can be disabled)
- Keyboard: ESC key closes the drawer, Tab key is trapped within
- Mobile: Swipe gestures are supported on touch devices
- Accessibility: Proper ARIA attributes and focus management are built-in