Documentation

UI Elements

UI Elements

UltraViolet Pro includes a comprehensive set of UI elements built on Bootstrap 5.3.8, enhanced with custom styling and components for creating modern, professional interfaces.

Design System

Typography

UltraViolet uses a carefully curated typography system for optimal readability and visual hierarchy.

Route: /admin/design/typography

Font Families

// Primary Font Stack
$font-family-sans-serif: 'Space Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

// Display Font
$font-family-display: 'Orbitron', sans-serif;

// Monospace Font
$font-family-monospace: 'Fira Code', 'Monaco', 'Consolas', monospace;

Headings

<h1 class="display-1">Display 1</h1>
<h1 class="display-2">Display 2</h1>
<h1 class="display-3">Display 3</h1>
<h1 class="display-4">Display 4</h1>

<h1>Heading 1</h1>
<h2>Heading 2</h2>
<h3>Heading 3</h3>
<h4>Heading 4</h4>
<h5>Heading 5</h5>
<h6>Heading 6</h6>

Text Utilities

<!-- Font Weights -->
<p class="fw-light">Light text</p>
<p class="fw-normal">Normal text</p>
<p class="fw-medium">Medium text</p>
<p class="fw-semibold">Semibold text</p>
<p class="fw-bold">Bold text</p>

<!-- Font Sizes -->
<p class="fs-1">Font size 1</p>
<p class="fs-2">Font size 2</p>
<p class="fs-3">Font size 3</p>
<p class="fs-4">Font size 4</p>
<p class="fs-5">Font size 5</p>
<p class="fs-6">Font size 6</p>

<!-- Text Alignment -->
<p class="text-start">Left aligned text</p>
<p class="text-center">Center aligned text</p>
<p class="text-end">Right aligned text</p>

Special Typography

<!-- Orbitron Display Font -->
<h1 class="orbitron">Futuristic Heading</h1>

<!-- Lead Text -->
<p class="lead">This is a lead paragraph with emphasis.</p>

<!-- Muted Text -->
<p class="text-muted">This is muted text</p>

<!-- Small Text -->
<small>This is small text</small>

Color Palette

UltraViolet features a modern color palette optimized for the synthwave aesthetic.

Route: /admin/design/color-palette

Primary Colors

<div class="bg-primary text-white p-3">Primary Color</div>
<div class="bg-secondary text-white p-3">Secondary Color</div>
<div class="bg-success text-white p-3">Success Color</div>
<div class="bg-danger text-white p-3">Danger Color</div>
<div class="bg-warning text-dark p-3">Warning Color</div>
<div class="bg-info text-white p-3">Info Color</div>

Theme Colors

// UltraViolet Theme Colors
$primary: #6366f1;      // Indigo
$secondary: #8b5cf6;    // Purple
$success: #10b981;      // Emerald
$danger: #ef4444;       // Red
$warning: #f59e0b;      // Amber
$info: #06b6d4;         // Cyan

// Dark Theme
$dark: #0f172a;         // Slate 900
$light: #f1f5f9;        // Slate 100

Gradient Utilities

<div class="bg-gradient-primary p-3">Primary Gradient</div>
<div class="bg-gradient-secondary p-3">Secondary Gradient</div>
<div class="bg-gradient-success p-3">Success Gradient</div>

Background Animations

Dynamic background animations for enhanced visual appeal.

Route: /admin/design/background-animations

Cosmic Wave

<cosmic-wave 
    class="fill-primary" 
    data-wave-points="12" 
    data-wave-variance="2"
    data-wave-face="bottom">
</cosmic-wave>

Particle Effects

<div class="particles-background" data-particles="50"></div>

Interface Elements

Alerts

Contextual feedback messages for user actions.

Route: /admin/ui?page=alerts

<div class="alert alert-primary" role="alert">
    A simple primary alert—check it out!
</div>

<div class="alert alert-success alert-dismissible fade show" role="alert">
    <strong>Success!</strong> Your changes have been saved.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>

<div class="alert alert-warning d-flex align-items-center" role="alert">
    <i class="material-symbols-rounded me-2">warning</i>
    <div>This is a warning alert with an icon!</div>
</div>

Buttons

Button components with various styles and states.

Route: /admin/ui?page=buttons

<!-- Button Variants -->
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-danger">Danger</button>

<!-- Outline Buttons -->
<button type="button" class="btn btn-outline-primary">Primary</button>
<button type="button" class="btn btn-outline-secondary">Secondary</button>

<!-- Button Sizes -->
<button type="button" class="btn btn-primary btn-sm">Small</button>
<button type="button" class="btn btn-primary">Default</button>
<button type="button" class="btn btn-primary btn-lg">Large</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>

<!-- Cyber Buttons (Custom) -->
<button type="button" class="btn btn-cyber">
    <i class="material-symbols-rounded me-2">rocket_launch</i>
    Cyber Button
</button>

Modals

Dialog boxes for user interactions.

Route: /admin/ui?page=modals

<!-- Modal Trigger -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
    Launch Modal
</button>

<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Modal Title</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <p>Modal body content goes here.</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary">Save changes</button>
            </div>
        </div>
    </div>
</div>

<!-- HUD Modal (Custom) -->
<x-hud.modal id="hudModal" title="HUD Modal">
    <p>This is a custom HUD-style modal with futuristic styling.</p>
</x-hud.modal>

Grid & Flexbox

Layout utilities for responsive design.

Route: /admin/ui?page=grid

<!-- Grid System -->
<div class="container">
    <div class="row">
        <div class="col-md-6">Column 1</div>
        <div class="col-md-6">Column 2</div>
    </div>
</div>

<!-- Flexbox Utilities -->
<div class="d-flex justify-content-between align-items-center">
    <div>Left</div>
    <div>Right</div>
</div>

<div class="d-flex flex-column gap-3">
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>

Badges & Avatars

Visual indicators and user representations.

Route: /admin/ui?page=badges

<!-- Badges -->
<span class="badge bg-primary">Primary</span>
<span class="badge bg-secondary">Secondary</span>
<span class="badge bg-success">Success</span>
<span class="badge rounded-pill bg-primary">Pill Badge</span>

<!-- Avatars -->
<img src="./images/avatar.jpg" class="rounded-circle" width="48" height="48" alt="Avatar">

<!-- Avatar Group -->
<div class="avatar-group">
    <img src="./images/avatar1.jpg" class="rounded-circle" width="40" height="40" alt="User 1">
    <img src="./images/avatar2.jpg" class="rounded-circle" width="40" height="40" alt="User 2">
    <img src="./images/avatar3.jpg" class="rounded-circle" width="40" height="40" alt="User 3">
    <span class="avatar-count">+5</span>
</div>

Popovers & Tooltips

Contextual overlays for additional information.

Route: /admin/ui?page=popovers

<!-- Tooltips -->
<button type="button" class="btn btn-primary" 
        data-bs-toggle="tooltip" 
        data-bs-placement="top" 
        title="This is a tooltip">
    Hover me
</button>

<!-- Popovers -->
<button type="button" class="btn btn-secondary" 
        data-bs-toggle="popover" 
        data-bs-title="Popover Title"
        data-bs-content="This is the popover content.">
    Click me
</button>

<script>
// Initialize tooltips and popovers
const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
tooltipTriggerList.map(function (tooltipTriggerEl) {
    return new bootstrap.Tooltip(tooltipTriggerEl);
});

const popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'));
popoverTriggerList.map(function (popoverTriggerEl) {
    return new bootstrap.Popover(popoverTriggerEl);
});
</script>

Pagination

Navigation for paginated content.

Route: /admin/ui?page=pagination

<!-- Basic Pagination -->
<nav aria-label="Page navigation">
    <ul class="pagination">
        <li class="page-item disabled">
            <a class="page-link" href="#" tabindex="-1">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="#">3</a></li>
        <li class="page-item">
            <a class="page-link" href="#">Next</a>
        </li>
    </ul>
</nav>

<!-- Pagination Sizes -->
<ul class="pagination pagination-sm">
    <!-- Small pagination -->
</ul>

<ul class="pagination pagination-lg">
    <!-- Large pagination -->
</ul>

Toggles

Switch components for on/off states.

Route: /admin/ui/toggles

<!-- Basic Toggle -->
<div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" id="flexSwitchCheckDefault">
    <label class="form-check-label" for="flexSwitchCheckDefault">
        Default switch
    </label>
</div>

<!-- Checked Toggle -->
<div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" id="flexSwitchCheckChecked" checked>
    <label class="form-check-label" for="flexSwitchCheckChecked">
        Checked switch
    </label>
</div>

<!-- Disabled Toggle -->
<div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" id="flexSwitchCheckDisabled" disabled>
    <label class="form-check-label" for="flexSwitchCheckDisabled">
        Disabled switch
    </label>
</div>

<!-- Custom Styled Toggle -->
<div class="form-check form-switch form-switch-lg">
    <input class="form-check-input" type="checkbox" id="largeSwitch">
    <label class="form-check-label" for="largeSwitch">
        Large switch
    </label>
</div>

Spacing Utilities

<!-- Margin -->
<div class="m-0">No margin</div>
<div class="m-3">Medium margin</div>
<div class="mt-3">Margin top</div>
<div class="mb-3">Margin bottom</div>
<div class="mx-auto">Horizontal center</div>

<!-- Padding -->
<div class="p-0">No padding</div>
<div class="p-3">Medium padding</div>
<div class="pt-3">Padding top</div>
<div class="pb-3">Padding bottom</div>

<!-- Gap (Flexbox/Grid) -->
<div class="d-flex gap-2">
    <div>Item 1</div>
    <div>Item 2</div>
</div>

Display Utilities

<!-- Display Types -->
<div class="d-none">Hidden</div>
<div class="d-block">Block</div>
<div class="d-flex">Flex</div>
<div class="d-inline-block">Inline block</div>

<!-- Responsive Display -->
<div class="d-none d-md-block">Hidden on mobile, visible on tablet+</div>
<div class="d-block d-md-none">Visible on mobile, hidden on tablet+</div>

Best Practices

  1. Consistency: Use the design system consistently across your application
  2. Accessibility: Ensure all interactive elements are keyboard accessible
  3. Responsive: Test UI elements on all screen sizes
  4. Performance: Optimize animations and transitions
  5. Theming: Use CSS custom properties for easy theming
  6. Documentation: Document custom components and their usage

Production Usage

All UI elements work without server-side dependencies in the static HTML edition. Interactive JavaScript is already bundled and optimized via Vite.