81e8c85280
- Create components-showcase.html with all Bootstrap 5 components - Dark mode support with localStorage persistence - Interactive theme toggle button - Complete style guide documentation in STYLE_GUIDE.md Components included: ✅ Color palette (primary, secondary, success, danger, warning, info) ✅ Buttons (variants, sizes, states, groups) ✅ Cards (basic, with badges, hover effects) ✅ Badges (variants, pill shapes) ✅ Alerts (all variants, dismissible) ✅ Forms (inputs, selects, textarea, validation) ✅ Checkboxes & Radio buttons ✅ Tables (striped, hover, bordered, pagination) ✅ Typography (headings, text styles) ✅ Utilities (spacing, display, flexbox, text, colors, borders, shadows) ✅ Dark mode demonstration ✅ Responsive breakpoints guide Style guide includes: 📖 Complete component documentation 🎨 Color system reference 📝 Code examples for all components 📱 Responsive design patterns 🌙 Dark mode implementation ✅ Best practices & accessibility Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
14 KiB
14 KiB
SmartAdmin Bootstrap 5 — Style Guide
Version: 5.5.0
Last Updated: 2026-07-05
Status: ✅ Complete
📖 Overview
This document provides comprehensive guidelines for using SmartAdmin Bootstrap 5 components and utilities. All styles are organized in modular CSS files for better maintainability and performance.
🎨 Color System
Primary Palette
| Color | Hex Value | Usage |
|---|---|---|
| Primary | #2196f3 |
Main actions, links, highlights |
| Secondary | #757575 |
Neutral, less prominent elements |
| Success | #4caf50 |
Positive actions, confirmations |
| Danger | #f44336 |
Destructive actions, errors |
| Warning | #ff9800 |
Caution, warnings |
| Info | #00bcd4 |
Information, notifications |
Neutral Palette
| Color | Hex Value | Usage |
|---|---|---|
| Light | #f5f5f5 |
Light backgrounds |
| Dark | #212121 |
Dark backgrounds, text |
| White | #ffffff |
Main background |
| Transparent | rgba(0,0,0,0) |
No background |
Gray Scale
Gray 100: #f8f9fa (Lightest)
Gray 200: #e9ecef
Gray 300: #dee2e6
Gray 400: #ced4da
Gray 500: #adb5bd (Medium)
Gray 600: #6c757d
Gray 700: #495057
Gray 800: #343a40
Gray 900: #212529 (Darkest)
🔘 Buttons
Variants
Primary Button
<button class="btn btn-primary">Primary</button>
Success Button
<button class="btn btn-success">Success</button>
Danger Button
<button class="btn btn-danger">Delete</button>
Warning Button
<button class="btn btn-warning">Warning</button>
Sizes
<button class="btn btn-primary btn-xs">Extra Small</button>
<button class="btn btn-primary btn-sm">Small</button>
<button class="btn btn-primary">Default</button>
<button class="btn btn-primary btn-lg">Large</button>
States
<!-- Disabled -->
<button class="btn btn-primary" disabled>Disabled</button>
<!-- Loading -->
<button class="btn btn-primary" disabled>
<span class="spinner-border spinner-border-sm me-2"></span>
Loading...
</button>
<!-- With Icon -->
<button class="btn btn-primary">
<i class="fa-solid fa-save me-2"></i>Save
</button>
Button Groups
<div class="btn-group" role="group">
<button type="button" class="btn btn-primary">Left</button>
<button type="button" class="btn btn-primary">Middle</button>
<button type="button" class="btn btn-primary">Right</button>
</div>
📇 Cards
Basic Card
<div class="card">
<div class="card-header">
Header
</div>
<div class="card-body">
<h5 class="card-title">Title</h5>
<p class="card-text">Content goes here...</p>
</div>
<div class="card-footer">
Footer
</div>
</div>
Card Variants
<!-- Card with Badge -->
<div class="card">
<div class="card-body">
<span class="badge badge-primary">New</span>
<h5 class="card-title">Card Title</h5>
<p class="card-text">Content here...</p>
</div>
</div>
<!-- Hoverable Card -->
<div class="card" style="cursor: pointer;">
<!-- Content -->
</div>
🏷️ Badges
Variants
<span class="badge badge-primary">Primary</span>
<span class="badge badge-success">Success</span>
<span class="badge badge-danger">Danger</span>
<span class="badge badge-warning">Warning</span>
<span class="badge badge-info">Info</span>
Pill Badges
<span class="badge badge-primary badge-pill">Primary</span>
<span class="badge badge-success badge-pill">Success</span>
⚠️ Alerts
Variants
<!-- Info Alert -->
<div class="alert alert-primary">
<i class="fa-solid fa-info-circle me-2"></i>
<strong>Info:</strong> Informational message
</div>
<!-- Success Alert -->
<div class="alert alert-success">
<strong>Success!</strong> Operation completed
</div>
<!-- Warning Alert -->
<div class="alert alert-warning">
<strong>Warning!</strong> Please be careful
</div>
<!-- Danger Alert -->
<div class="alert alert-danger">
<strong>Error!</strong> Something went wrong
</div>
Dismissible Alert
<div class="alert alert-primary alert-dismissible">
<strong>Info:</strong> Message goes here
<button type="button" class="btn-close" data-dismiss="alert"></button>
</div>
📝 Forms
Input Fields
<div class="form-group">
<label class="form-label">Email Address</label>
<input type="email" class="form-control" placeholder="user@example.com">
</div>
Input Sizes
<input type="text" class="form-control form-control-sm" placeholder="Small input">
<input type="text" class="form-control" placeholder="Default input">
<input type="text" class="form-control form-control-lg" placeholder="Large input">
Select
<div class="form-group">
<label class="form-label">Choose Option</label>
<select class="form-select">
<option>Select...</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
</div>
Textarea
<div class="form-group">
<label class="form-label">Message</label>
<textarea class="form-control" rows="4"></textarea>
</div>
Checkboxes
<div class="form-check">
<input type="checkbox" class="form-check-input" id="check1">
<label class="form-check-label" for="check1">
Check this option
</label>
</div>
Radio Buttons
<div class="form-check">
<input type="radio" class="form-check-input" name="options" id="radio1">
<label class="form-check-label" for="radio1">
Option 1
</label>
</div>
Form Validation
<!-- Valid -->
<input type="text" class="form-control is-valid">
<div class="valid-feedback">Looks good!</div>
<!-- Invalid -->
<input type="text" class="form-control is-invalid">
<div class="invalid-feedback">Please correct this</div>
Input Groups
<div class="input-group">
<span class="input-group-text">$</span>
<input type="number" class="form-control">
</div>
<div class="input-group">
<input type="text" class="form-control" placeholder="Search...">
<button class="btn btn-primary">
<i class="fa-solid fa-search"></i>
</button>
</div>
📊 Tables
Basic Table
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>#001</td>
<td>John Doe</td>
<td>john@example.com</td>
</tr>
</tbody>
</table>
Table Variants
<!-- Striped -->
<table class="table table-striped">...</table>
<!-- Hover -->
<table class="table table-hover">...</table>
<!-- Bordered -->
<table class="table table-bordered">...</table>
<!-- Striped + Hover -->
<table class="table table-striped table-hover">...</table>
Responsive Table
<div class="table-responsive">
<table class="table">...</table>
</div>
Table Pagination
<div class="table-pagination">
<span>Showing 1-10 of 100</span>
<ul class="pagination">
<li class="page-item"><a class="page-link" href="#">Previous</a></li>
<li class="page-item active"><a class="page-link" href="#">1</a></li>
<li class="page-item"><a class="page-link" href="#">2</a></li>
<li class="page-item"><a class="page-link" href="#">Next</a></li>
</ul>
</div>
🎭 Modals
Basic Modal
<div class="modal" id="exampleModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Modal Title</h5>
<button class="btn-close" data-dismiss="modal"></button>
</div>
<div class="modal-body">
Modal content goes here...
</div>
<div class="modal-footer">
<button class="btn btn-secondary" data-dismiss="modal">Close</button>
<button class="btn btn-primary">Save</button>
</div>
</div>
</div>
</div>
Modal Sizes
<!-- Small -->
<div class="modal-dialog modal-sm">...</div>
<!-- Default -->
<div class="modal-dialog">...</div>
<!-- Large -->
<div class="modal-dialog modal-lg">...</div>
<!-- Extra Large -->
<div class="modal-dialog modal-xl">...</div>
🌈 Utilities
Spacing
<!-- Margin -->
<div class="m-1">Margin 1</div>
<div class="m-2">Margin 2</div>
<div class="m-3">Margin 3</div>
<!-- Padding -->
<div class="p-1">Padding 1</div>
<div class="p-2">Padding 2</div>
<div class="p-3">Padding 3</div>
<!-- Specific Sides -->
<div class="mt-3">Margin Top</div>
<div class="mb-3">Margin Bottom</div>
<div class="ms-3">Margin Start</div>
<div class="me-3">Margin End</div>
Display
<div class="d-none">Hidden</div>
<div class="d-block">Block</div>
<div class="d-flex">Flex</div>
<div class="d-grid">Grid</div>
<!-- Responsive -->
<div class="d-none d-sm-block">Hidden on mobile, visible on tablet+</div>
<div class="d-sm-none">Visible on mobile, hidden on tablet+</div>
Flexbox
<div class="d-flex">
<div class="flex-fill">Fill available space</div>
<div class="flex-shrink-0">Don't shrink</div>
</div>
<div class="d-flex justify-content-between">
<div>Left</div>
<div>Right</div>
</div>
<div class="d-flex align-items-center gap-2">
<i class="fa-solid fa-check"></i>
<span>Centered vertically</span>
</div>
Text Utilities
<!-- Alignment -->
<p class="text-start">Left</p>
<p class="text-center">Center</p>
<p class="text-end">Right</p>
<!-- Transform -->
<p class="text-uppercase">UPPERCASE</p>
<p class="text-lowercase">lowercase</p>
<p class="text-capitalize">Capitalize</p>
<!-- Weight -->
<p class="text-bold">Bold</p>
<p class="text-semi-bold">Semi-bold</p>
<p class="text-normal">Normal</p>
<!-- Color -->
<p class="text-primary">Primary text</p>
<p class="text-success">Success text</p>
<p class="text-danger">Danger text</p>
<p class="text-muted">Muted text</p>
Background Colors
<div class="bg-primary text-white">Primary Background</div>
<div class="bg-success text-white">Success Background</div>
<div class="bg-danger text-white">Danger Background</div>
<div class="bg-warning text-white">Warning Background</div>
<div class="bg-light">Light Background</div>
Borders
<div class="border">All borders</div>
<div class="border-top">Top border only</div>
<div class="border-0">No border</div>
<div class="border border-primary">Primary border</div>
<!-- Rounded -->
<div class="rounded">Rounded corners</div>
<div class="rounded-circle">Circle</div>
<div class="rounded-pill">Pill shape</div>
Shadows
<div class="shadow">Small shadow</div>
<div class="shadow-lg">Large shadow</div>
<div class="shadow-none">No shadow</div>
🌙 Dark Mode
SmartAdmin supports dark mode through the data-bs-theme attribute:
<!-- Light Mode (default) -->
<html data-bs-theme="light">
<!-- Dark Mode -->
<html data-bs-theme="dark">
Toggle Dark Mode with JavaScript
const html = document.documentElement;
const currentTheme = html.getAttribute('data-bs-theme');
const newTheme = currentTheme === 'light' ? 'dark' : 'light';
html.setAttribute('data-bs-theme', newTheme);
// Save preference
localStorage.setItem('theme', newTheme);
📱 Responsive Breakpoints
| Breakpoint | Viewport | Class Prefix |
|---|---|---|
| Mobile | < 576px | None |
| Tablet (sm) | ≥ 576px | -sm- |
| Tablet (md) | ≥ 768px | -md- |
| Desktop (lg) | ≥ 992px | -lg- |
| Desktop (xl) | ≥ 1200px | -xl- |
| Desktop (xxl) | ≥ 1400px | -xxl- |
Examples
<!-- Hide on mobile, show on tablet+ -->
<div class="d-none d-sm-block">...</div>
<!-- Different columns on different screens -->
<div class="col-12 col-sm-6 col-md-4 col-lg-3">
Responsive column
</div>
<!-- Different padding on different screens -->
<div class="p-2 p-md-3 p-lg-4">
Responsive padding
</div>
✅ Best Practices
- Use Semantic HTML: Always use appropriate HTML elements
- Accessibility First: Include ARIA labels and keyboard navigation
- Mobile First: Design for mobile first, then enhance for larger screens
- Consistent Spacing: Use spacing scale (1, 2, 3, 4, 5) consistently
- Color Contrast: Ensure text has sufficient contrast (WCAG AA minimum)
- Component Reuse: Use existing components instead of creating new ones
- Document Changes: Update this guide when adding new components
- Test on Real Devices: Don't rely only on browser DevTools
📚 Component Library
Visit components-showcase.html to see all components in action with interactive examples.
Quick Links
🔄 CSS File Structure
css/
├── base.css (Foundation, resets, typography)
├── components.css (Buttons, cards, badges, alerts)
├── forms.css (Input fields, validation)
├── tables.css (Table styles, responsive)
├── layout.css (Header, sidebar, grid)
├── darkmode.css (Dark theme overrides)
├── responsive.css (Mobile-first media queries)
├── utilities.css (Spacing, colors, helpers)
└── smartapp.min.css (Legacy, for compatibility)
Load Order (HTML <head>):
- base.css
- components.css
- forms.css
- tables.css
- layout.css
- darkmode.css
- responsive.css
- utilities.css
- smartapp.min.css (fallback)
📞 Support
For issues or questions:
- Check the component library first
- Review this style guide
- Check Bootstrap 5 official documentation
- Create an issue in the repository
Last Updated: 2026-07-05
Version: 5.5.0
Status: ✅ Complete & Ready for Use