5.8 KiB
5.8 KiB
Print Module Theme System Implementation
✅ Theme Support Successfully Implemented
CSS Custom Properties System
I've implemented a comprehensive theme system using CSS custom properties (CSS variables) that automatically adapts all tables and UI elements in the printing module to match the selected theme (light/dark mode).
Theme Variables Defined
:root {
/* Light mode colors (default) */
--print-table-header-bg: #e9ecef;
--print-table-header-text: #000;
--print-table-body-bg: #fff;
--print-table-body-text: #000;
--print-table-border: #ddd;
--print-table-hover: #f8f9fa;
--print-table-selected: #007bff;
--print-card-bg: #fff;
--print-card-border: #ddd;
--print-search-field-bg: #fff;
--print-search-field-text: #000;
--print-search-field-border: #ddd;
}
Light Mode Theme
body.light-mode {
--print-table-header-bg: #e9ecef; /* Light gray headers */
--print-table-header-text: #000; /* Black text */
--print-table-body-bg: #fff; /* White background */
--print-table-body-text: #000; /* Black text */
--print-table-border: #ddd; /* Light gray borders */
--print-table-hover: #f8f9fa; /* Very light gray hover */
--print-card-bg: #fff; /* White cards */
}
Dark Mode Theme
body.dark-mode {
--print-table-header-bg: #2a3441; /* Dark blue-gray headers */
--print-table-header-text: #ffffff; /* White text */
--print-table-body-bg: #2a3441; /* Dark blue-gray background */
--print-table-body-text: #ffffff; /* White text */
--print-table-border: #495057; /* Medium gray borders */
--print-table-hover: #3a4451; /* Lighter dark gray hover */
--print-card-bg: #2a2a2a; /* Dark gray cards */
}
Components That Respond to Theme
✅ View Orders Table
- Headers: Background and text color change automatically
- Body cells: Background, text, and border colors adapt
- Hover effects: Appropriate hover colors for each theme
- Selected rows: Consistent selection highlighting
✅ Print Module Table
- Headers: Theme-aware colors and borders
- Data cells: Proper contrast in both themes
- Row interactions: Hover and selection states
- Border consistency: Unified border styling
✅ Upload Orders Table
- Same styling system: Uses shared CSS variables
- Consistent appearance: Matches other tables
- Theme transitions: Smooth switching between themes
✅ Cards and Forms
- Background colors: Adapt to theme
- Border colors: Consistent with theme palette
- Search fields: Proper contrast and visibility
- Form elements: Theme-aware styling
✅ Label Preview
- Preview backgrounds: Appropriate for each theme
- Barcode frames: Maintains visibility in both modes
- Text contrast: Ensures readability
How Theme Switching Works
- Automatic Detection: The system detects
body.light-modeorbody.dark-modeclass - Variable Updates: CSS custom properties automatically update based on the body class
- Instant Application: All elements using the variables immediately reflect the new theme
- No JavaScript Required: Pure CSS implementation for better performance
Benefits Achieved
✅ Consistent Design
- All printing module tables have unified styling
- Colors are coordinated across all components
- Professional appearance in both themes
✅ Better User Experience
- Light Mode: Clean, bright interface for well-lit environments
- Dark Mode: Easy on the eyes for low-light conditions
- Smooth Transitions: No jarring color mismatches when switching
✅ Accessibility
- High Contrast: Proper contrast ratios in both themes
- Color Consistency: Related elements use the same color palette
- Visual Hierarchy: Headers clearly distinguished from content
✅ Maintainability
- Single Source of Truth: All theme colors defined in one place
- Easy Updates: Change a variable to update all occurrences
- Scalable: Easy to add new components or themes
Visual Comparison
Light Mode
- Table Headers: Light gray background (#e9ecef) with black text
- Table Bodies: White background with black text
- Borders: Light gray (#ddd) for subtle separation
- Hover: Very light gray (#f8f9fa) for subtle feedback
- Cards: Clean white backgrounds
Dark Mode
- Table Headers: Dark blue-gray (#2a3441) with white text
- Table Bodies: Dark blue-gray background with white text
- Borders: Medium gray (#495057) for proper separation
- Hover: Lighter dark gray (#3a4451) for clear feedback
- Cards: Dark gray backgrounds for reduced eye strain
Pages Affected
✅ view_orders.html - Orders listing with improved 25/75 layout ✅ print_module.html - Main printing interface ✅ print_lost_labels.html - Lost labels printing ✅ upload_orders.html - Order upload interface ✅ main_page_etichete.html - Labels main page
Technical Implementation
The theme system works by:
- CSS Variables: Using
var(--variable-name)throughout the stylesheets - Body Classes: Theme variables update based on
body.light-mode/body.dark-mode - Automatic Inheritance: All child elements inherit the appropriate theme
- Performance: No JavaScript overhead, pure CSS solution
Testing Confirmed
- ✅ Theme switching works instantly
- ✅ All tables respond to theme changes
- ✅ No visual inconsistencies
- ✅ Proper contrast in both modes
- ✅ Layout remains stable during theme switches
The printing module now provides a professional, consistent, and accessible user interface that adapts beautifully to both light and dark themes!