pos_bluetooth_thermal_printer/CSS_VISUAL_PREVIEW.md
2025-11-21 05:52:53 +07:00

15 KiB
Raw Blame History

CSS Visual Preview

Status Indicators

Connected State

┌─────────────────────────────┐
│  ●  Connected               │  ← Green indicator with glow
│  ↑                          │
│  Green (#28a745)            │
└─────────────────────────────┘

Disconnected State

┌─────────────────────────────┐
│  ●  Disconnected            │  ← Red indicator with glow
│  ↑                          │
│  Red (#dc3545)              │
└─────────────────────────────┘

Connecting State

┌─────────────────────────────┐
│  ◐  Connecting...           │  ← Yellow indicator, pulsing & spinning
│  ↑                          │
│  Yellow (#ffc107)           │
│  Pulse + Spin animation     │
└─────────────────────────────┘

Error State

┌─────────────────────────────┐
│  ●  Error                   │  ← Red indicator with enhanced glow
│  ↑                          │
│  Red (#dc3545)              │
└─────────────────────────────┘

Configuration Dialog Layout

┌────────────────────────────────────────────────────────────┐
│  Bluetooth Printer Configuration                           │
│  Configure your bluetooth thermal printer for this POS     │
├────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌──────────────────────────────────────────────────────┐ │
│  │ 1. Scan for Devices                                  │ │
│  │ Click the button below to scan for available...      │ │
│  │                                                       │ │
│  │  [🔍 Scan for Devices]                               │ │
│  └──────────────────────────────────────────────────────┘ │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐ │
│  │ 2. Select a Printer                                  │ │
│  │ Choose your bluetooth thermal printer from the list  │ │
│  │                                                       │ │
│  │  ┌────────────────────────────────────────────────┐ │ │
│  │  │ ⚡ RPP02 Printer              📶 Strong    ✓  │ │ │ ← Selected
│  │  │ 00:11:22:33:44:55                             │ │ │
│  │  ├────────────────────────────────────────────────┤ │ │
│  │  │ ⚡ Thermal Printer 2          📶 Medium       │ │ │ ← Hover
│  │  │ 00:11:22:33:44:66                             │ │ │
│  │  ├────────────────────────────────────────────────┤ │ │
│  │  │ ⚡ POS Printer                📶 Weak         │ │ │
│  │  │ 00:11:22:33:44:77                             │ │ │
│  │  └────────────────────────────────────────────────┘ │ │
│  └──────────────────────────────────────────────────────┘ │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐ │
│  │ 3. Printer Settings                                  │ │
│  │ Configure printer-specific settings                  │ │
│  │                                                       │ │
│  │  Character Set:  [CP437 (USA, Standard Europe) ▼]   │ │
│  │  Paper Width:    [48 characters (80mm) ▼]           │ │
│  │  ☑ Enable automatic reconnection                    │ │
│  │  Timeout:        [10000] ms                          │ │
│  └──────────────────────────────────────────────────────┘ │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐ │
│  │ 4. Test Connection                                   │ │
│  │ Test your printer configuration                      │ │
│  │                                                       │ │
│  │  [🖨️ Test Print]  [✕ Disconnect]                    │ │
│  └──────────────────────────────────────────────────────┘ │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐ │
│  │ Need Help?                                           │ │
│  │ • Make sure your bluetooth printer is powered on     │ │
│  │ • Ensure bluetooth is enabled on your device         │ │
│  │ • This feature requires Chrome, Edge, or Opera       │ │
│  └──────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────┘

Button States

Primary Button (Scan)

Normal:    [🔍 Scan for Devices]  ← Blue (#007bff)
Hover:     [🔍 Scan for Devices]  ← Darker blue, lifted
Active:    [🔍 Scan for Devices]  ← Pressed down
Disabled:  [🔍 Scan for Devices]  ← 50% opacity
Loading:   [⟳ Scanning...]        ← Spinner animation

Success Button (Test Print)

Normal:    [🖨️ Test Print]  ← Green (#28a745)
Hover:     [🖨️ Test Print]  ← Darker green, lifted
Active:    [🖨️ Test Print]  ← Pressed down
Disabled:  [🖨️ Test Print]  ← 50% opacity
Loading:   [⟳ Printing...]  ← Spinner animation

Danger Button (Disconnect)

Normal:    [✕ Disconnect]  ← Red (#dc3545)
Hover:     [✕ Disconnect]  ← Darker red, lifted
Active:    [✕ Disconnect]  ← Pressed down
Disabled:  [✕ Disconnect]  ← 50% opacity

Notifications

Success Notification

┌────────────────────────────────────────────────┐
│ ✓  Successfully connected to printer          │  ← Green background
│                                                │     Pulse animation
└────────────────────────────────────────────────┘

Error Notification

┌────────────────────────────────────────────────┐
│ ⚠  Failed to connect to printer               │  ← Red background
│                                                │     Shake animation
└────────────────────────────────────────────────┘

Warning Notification

┌────────────────────────────────────────────────┐
│ ⚠  Bluetooth printer unavailable               │  ← Yellow background
│                                                │
└────────────────────────────────────────────────┘

Info Notification

┌────────────────────────────────────────────────┐
│   Connecting to printer...                   │  ← Blue background
│                                                │
└────────────────────────────────────────────────┘

Responsive Layouts

Desktop (>1024px)

┌─────────────────────────────────────────────────────────┐
│  Full width dialog (700px max)                          │
│  All sections visible                                   │
│  Horizontal button layout                               │
│  Device list: 300px height                              │
└─────────────────────────────────────────────────────────┘

Tablet Landscape (769px-1024px)

┌──────────────────────────────────────────────────┐
│  Narrower dialog (600px max)                     │
│  All sections visible                            │
│  Horizontal button layout                        │
│  Device list: 280px height                       │
└──────────────────────────────────────────────────┘

Tablet Portrait (≤768px)

┌────────────────────────────────────┐
│  Full width dialog                 │
│  Reduced padding                   │
│  Vertical button layout            │
│  Device list: 250px height         │
│  Smaller fonts                     │
└────────────────────────────────────┘

Animation Sequences

Connecting Animation

Frame 1:  ●  (scale: 1.0,  glow: 8px)
          ↓
Frame 2:  ◉  (scale: 1.05, glow: 16px)  ← Pulse peak
          ↓
Frame 3:  ●  (scale: 1.0,  glow: 8px)
          ↓
Repeat...

Icon:     ⚡ → ⚡ → ⚡  (rotating 360°)

Device List Slide-in

Item 1:  ←─── (delay: 0.05s)
Item 2:   ←─── (delay: 0.10s)
Item 3:    ←─── (delay: 0.15s)
Item 4:     ←─── (delay: 0.20s)
Item 5:      ←─── (delay: 0.25s)

Success Pulse

Frame 1:  ✓  ○         (ring: 0px)
          ↓
Frame 2:  ✓   ○        (ring: 5px, fading)
          ↓
Frame 3:  ✓    ○       (ring: 10px, invisible)

Error Shake

Frame 1:  ⚠  (x: 0)
          ↓
Frame 2:  ⚠  (x: -10px)
          ↓
Frame 3:  ⚠  (x: +10px)
          ↓
Frame 4:  ⚠  (x: 0)

Color Palette Reference

Status Colors

Connected:    ████ #28a745 (Green)
Disconnected: ████ #dc3545 (Red)
Connecting:   ████ #ffc107 (Yellow/Orange)
Error:        ████ #dc3545 (Red)

Action Colors

Primary:      ████ #007bff (Blue)
Success:      ████ #28a745 (Green)
Warning:      ████ #ffc107 (Yellow)
Danger:       ████ #dc3545 (Red)
Info:         ████ #17a2b8 (Cyan)

Neutral Colors

Background:   ████ #f8f9fa (Light Gray)
Border:       ████ #dee2e6 (Medium Gray)
Text Primary: ████ #212529 (Dark Gray)
Text Muted:   ████ #6c757d (Medium Gray)

Dark Mode Colors

Background:   ████ #2d3748 (Dark Blue-Gray)
Surface:      ████ #1a202c (Darker Blue-Gray)
Border:       ████ #4a5568 (Medium Gray)
Text:         ████ #e2e8f0 (Light Gray)

Spacing System

Extra Small:  4px   ▪
Small:        8px   ▪▪
Medium:       12px  ▪▪▪
Large:        16px  ▪▪▪▪
Extra Large:  24px  ▪▪▪▪▪▪

Typography Scale

Extra Large:  24px  Bluetooth Printer Configuration
Large:        18px  1. Scan for Devices
Medium:       14px  Click the button below to scan...
Small:        13px  Helper text and descriptions
Extra Small:  12px  Device IDs and metadata

Border Radius Scale

Small:   4px   ┌─┐
Medium:  6px   ┌──┐
Large:   8px   ┌───┐
Circle:  50%   ●

Shadow Depths

Level 1:  0 1px 3px rgba(0,0,0,0.05)   ▁
Level 2:  0 2px 4px rgba(0,0,0,0.1)    ▂
Level 3:  0 4px 8px rgba(0,0,0,0.15)   ▃
Level 4:  0 4px 16px rgba(0,0,0,0.1)   ▄

Interaction States

Hover

Before:  [Button]
After:   [Button]  ← Lifted 1px, enhanced shadow

Active

Before:  [Button]
After:   [Button]  ← Pressed down, reduced shadow

Focus

Before:  [Button]
After:   [Button]  ← Blue outline, 2px offset
         ┗━━━━━━┛

Disabled

Before:  [Button]
After:   [Button]  ← 50% opacity, no pointer

Accessibility Features

Focus Indicators

Keyboard Focus:  ┏━━━━━━━┓  ← 2px blue outline
                 ┃ Button ┃
                 ┗━━━━━━━┛

High Contrast Mode

Normal:          [Button]
High Contrast:   ┏━━━━━━━┓  ← Enhanced borders
                 ┃ Button ┃
                 ┗━━━━━━━┛

Touch Targets

Minimum Size:    ┌────────────┐
                 │   Button   │  ← 44px × 44px
                 └────────────┘

Conclusion

This visual preview demonstrates the comprehensive styling implemented for the bluetooth printer module. All elements are designed to be:

  • Visually Clear: Distinct colors and states
  • Responsive: Adapts to different screen sizes
  • Accessible: Keyboard navigation and screen reader friendly
  • Animated: Smooth transitions and feedback
  • Professional: Modern, polished appearance

The CSS implementation provides a complete, production-ready user interface.