diff --git a/README.md b/README.md index 7839ecc..23bb8f8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Telvero Talpa Planning System -Een geavanceerd TV-planning systeem voor het beheren en plannen van homeshopping uitzendingen op Talpa zenders (SBS9, Net5, Veronica). +Een geavanceerd TV-planning systeem voor het beheren en plannen van homeshopping uitzendingen op Talpa zenders (SBS9, Net5, SBS6). ## π― Functionaliteiten @@ -130,7 +130,7 @@ chmod 644 api/*.php 1. Ga naar **Blokken** in het menu 2. Klik op "Nieuw Template" 3. Vul de gegevens in: - - Zender (SBS9, NET5, VERONICA) + - Zender (SBS9, NET5, SBS6) - Template naam (bijv. "SBS9 Dagblok") - Dag van de week - Standaard starttijd diff --git a/api/get_daily_blocks.php b/api/get_daily_blocks.php index 0dbed01..cd72f72 100644 --- a/api/get_daily_blocks.php +++ b/api/get_daily_blocks.php @@ -88,7 +88,7 @@ function getBlockColor($channel) { $colors = [ 'SBS9' => 'rgba(52, 152, 219, 0.1)', // Light blue 'NET5' => 'rgba(231, 76, 60, 0.1)', // Light red - 'VERONICA' => 'rgba(155, 89, 182, 0.1)' // Light purple + 'SBS6' => 'rgba(155, 89, 182, 0.1)' // Light purple ]; return $colors[$channel] ?? 'rgba(200, 200, 200, 0.1)'; diff --git a/assets/css/custom.css b/assets/css/custom.css index 2b0b756..8ed044b 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -1,16 +1,77 @@ /** * Custom Styles for Telvero Talpa Planning System + * Redesigned for uniform UI and typography */ :root { - --text-color: #404040; + /* Legacy support */ + --text-color: #212529; --brand-color: #32327D; --accent-color: #32B4AA; --primary-color: #32327D; --secondary-color: #32327D; - --success-color: #2ecc71; - --warning-color: #f39c12; - --danger-color: #e74c3c; + --success-color: #28A745; + --warning-color: #FFC107; + --danger-color: #DC3545; + + /* Brand Colors */ + --brand-primary: #32327D; + --brand-accent: #32B4AA; + + /* UI Colors - Rustig Palet */ + --ui-bg-primary: #FFFFFF; + --ui-bg-secondary: #F8F9FA; + --ui-bg-tertiary: #E9ECEF; + --ui-border: #DEE2E6; + --ui-border-light: #E9ECEF; + + /* Text Colors */ + --text-primary: #212529; + --text-secondary: #6C757D; + --text-muted: #ADB5BD; + + /* Status Colors - Gedempter */ + --status-success: #28A745; + --status-success-light: #D4EDDA; + --status-warning: #FFC107; + --status-warning-light: #FFF3CD; + --status-danger: #DC3545; + --status-danger-light: #F8D7DA; + --status-info: #17A2B8; + --status-info-light: #D1ECF1; + + /* Interaction States */ + --hover-bg: #F1F3F5; + --active-bg: #E9ECEF; + --focus-ring: rgba(50, 50, 125, 0.25); + + /* Typography */ + --font-h1: 2rem; + --font-h2: 1.5rem; + --font-h3: 1.25rem; + --font-h4: 1.125rem; + --font-h5: 1rem; + --font-h6: 0.875rem; + --font-base: 0.9375rem; + --font-small: 0.875rem; + --font-tiny: 0.8125rem; + + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + + --line-height-tight: 1.25; + --line-height-normal: 1.5; + --line-height-relaxed: 1.75; + + /* Spacing System */ + --space-xs: 0.25rem; + --space-sm: 0.5rem; + --space-md: 1rem; + --space-lg: 1.5rem; + --space-xl: 2rem; + --space-2xl: 3rem; } body { @@ -54,11 +115,23 @@ body { background-color: var(--brand-color) !important; } -/* Buttons */ +/* ============================================ + BUTTON SYSTEM - Uniform & Icon-Based + ============================================ */ + +/* Base Button Styles */ .btn { - border-radius: 6px; - font-weight: 500; - transition: all 0.2s; + border-radius: 0.5rem; + font-weight: var(--font-weight-medium); + font-size: var(--font-base); + transition: all 0.15s ease; + padding: 0.5rem 1rem; + min-width: 40px; + height: 38px; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; } .btn:hover { @@ -66,9 +139,172 @@ body { box-shadow: 0 2px 8px rgba(0,0,0,0.15); } +.btn:active { + transform: translateY(0); +} + +.btn:focus { + outline: none; + box-shadow: 0 0 0 3px var(--focus-ring); +} + +/* Button Sizes */ +.btn-xs { + padding: 0.25rem 0.5rem; + font-size: 0.75rem; + border-radius: 0.25rem; + min-width: 32px; + height: 28px; +} + +.btn-sm { + padding: 0.375rem 0.75rem; + font-size: var(--font-small); + border-radius: 0.375rem; + min-width: 36px; + height: 32px; +} + +.btn-lg { + padding: 0.75rem 1.5rem; + font-size: 1rem; + border-radius: 0.5rem; + min-width: 48px; + height: 44px; +} + +/* Icon-Only Buttons */ +.btn-icon { + background: transparent; + border: 1px solid var(--ui-border); + color: var(--text-secondary); + padding: 0.5rem; + min-width: 38px; + width: 38px; + height: 38px; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 0.375rem; + transition: all 0.15s ease; +} + +.btn-icon:hover { + background: var(--hover-bg); + border-color: var(--ui-border); + color: var(--text-primary); + transform: translateY(-1px); + box-shadow: 0 2px 4px rgba(0,0,0,0.1); +} + +.btn-icon:active { + background: var(--active-bg); + transform: translateY(0); +} + +.btn-icon:focus { + outline: none; + box-shadow: 0 0 0 3px var(--focus-ring); +} + +/* Icon Button Sizes */ +.btn-icon-xs { + min-width: 28px; + width: 28px; + height: 28px; + padding: 0.25rem; + border-radius: 0.25rem; +} + +.btn-icon-sm { + min-width: 32px; + width: 32px; + height: 32px; + padding: 0.375rem; + border-radius: 0.375rem; +} + +.btn-icon-lg { + min-width: 44px; + width: 44px; + height: 44px; + padding: 0.75rem; + border-radius: 0.5rem; +} + +/* Icon Button Color Variants */ +.btn-icon-primary { + border-color: var(--brand-primary); + color: var(--brand-primary); +} + +.btn-icon-primary:hover { + background: var(--brand-primary); + color: white; +} + +.btn-icon-secondary { + border-color: var(--ui-border); + color: var(--text-secondary); +} + +.btn-icon-secondary:hover { + background: var(--hover-bg); + color: var(--text-primary); +} + +.btn-icon-success { + border-color: var(--status-success); + color: var(--status-success); +} + +.btn-icon-success:hover { + background: var(--status-success); + color: white; +} + +.btn-icon-danger { + border-color: var(--status-danger); + color: var(--status-danger); +} + +.btn-icon-danger:hover { + background: var(--status-danger); + color: white; +} + +.btn-icon-warning { + border-color: var(--status-warning); + color: #856404; +} + +.btn-icon-warning:hover { + background: var(--status-warning); + color: #000; +} + +.btn-icon-info { + border-color: var(--status-info); + color: var(--status-info); +} + +.btn-icon-info:hover { + background: var(--status-info); + color: white; +} + +/* Action Button Groups */ +.action-buttons { + display: inline-flex; + gap: 0.25rem; + align-items: center; +} + +/* Standard Button Colors */ .btn-primary { - background-color: var(--brand-color); - border-color: var(--brand-color); + background-color: var(--brand-primary); + border-color: var(--brand-primary); + color: white; } .btn-primary:hover, @@ -76,21 +312,78 @@ body { .btn-primary:active { background-color: #28286a; border-color: #28286a; + color: white; } .btn-outline-primary { - color: var(--brand-color); - border-color: var(--brand-color); + color: var(--brand-primary); + border-color: var(--brand-primary); + background: transparent; } .btn-outline-primary:hover, .btn-outline-primary:focus, .btn-outline-primary:active { - background-color: var(--brand-color); - border-color: var(--brand-color); + background-color: var(--brand-primary); + border-color: var(--brand-primary); color: #ffffff; } +.btn-success { + background-color: var(--status-success); + border-color: var(--status-success); + color: white; +} + +.btn-success:hover { + background-color: #218838; + border-color: #218838; +} + +.btn-danger { + background-color: var(--status-danger); + border-color: var(--status-danger); + color: white; +} + +.btn-danger:hover { + background-color: #c82333; + border-color: #c82333; +} + +.btn-info { + background-color: var(--status-info); + border-color: var(--status-info); + color: white; +} + +.btn-info:hover { + background-color: #138496; + border-color: #138496; +} + +.btn-warning { + background-color: var(--status-warning); + border-color: var(--status-warning); + color: #000; +} + +.btn-warning:hover { + background-color: #e0a800; + border-color: #e0a800; +} + +.btn-secondary { + background-color: var(--text-secondary); + border-color: var(--text-secondary); + color: white; +} + +.btn-secondary:hover { + background-color: #5a6268; + border-color: #5a6268; +} + /* Tables */ .table { border-radius: 8px; @@ -512,6 +805,41 @@ body { padding: 8px 12px; } +/* ============================================ + BADGE SYSTEM - Status & Sync Indicators + ============================================ */ + +/* Sync Status Badges */ +.badge-sync { + padding: 0.25rem 0.5rem; + font-size: 0.75rem; + font-weight: 600; + border-radius: 0.25rem; + display: inline-flex; + align-items: center; + gap: 0.25rem; +} + +.badge-sync-complete { + background: var(--status-success-light); + color: var(--status-success); +} + +.badge-sync-partial { + background: var(--status-warning-light); + color: #856404; +} + +.badge-sync-none { + background: var(--status-danger-light); + color: var(--status-danger); +} + +.badge-sync-empty { + background: var(--ui-bg-tertiary); + color: var(--text-secondary); +} + /* Sync Status Indicators */ .sync-indicator { font-size: 1.2rem; @@ -521,50 +849,91 @@ body { } .sync-indicator.sync-success { - color: #28a745; + color: var(--status-success); } .sync-indicator.sync-pending { - color: #dc3545; + color: var(--status-danger); } .sync-indicator.sync-error { - color: #ffc107; + color: var(--status-warning); } .sync-indicator:hover { transform: scale(1.2); } -/* Block Sync Status Badges */ +/* Block Sync Status Badges (Legacy Support) */ .block-sync-status { - font-size: 0.85rem; - padding: 0.35em 0.65em; + font-size: 0.75rem; + padding: 0.25rem 0.5rem; font-weight: 600; - border-radius: 4px; + border-radius: 0.25rem; display: inline-flex; align-items: center; - gap: 4px; + gap: 0.25rem; } .block-sync-status.block-sync-complete { - background-color: #28a745; - color: white; + background-color: var(--status-success-light); + color: var(--status-success); } .block-sync-status.block-sync-partial { - background-color: #ffc107; - color: #000; + background-color: var(--status-warning-light); + color: #856404; } .block-sync-status.block-sync-none { - background-color: #dc3545; - color: white; + background-color: var(--status-danger-light); + color: var(--status-danger); } .block-sync-status.block-sync-empty { - background-color: #6c757d; - color: white; + background-color: var(--ui-bg-tertiary); + color: var(--text-secondary); +} + +/* ============================================ + PLANNER SPECIFIC STYLES + ============================================ */ + +/* Block Header Redesign */ +.block-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: var(--space-sm) var(--space-md); + background: var(--ui-bg-secondary); + border-bottom: 1px solid var(--ui-border); + gap: var(--space-md); +} + +.block-header-left { + display: flex; + align-items: center; + gap: var(--space-sm); + flex: 1; +} + +.block-title { + margin: 0; + font-size: var(--font-h6); + font-weight: var(--font-weight-semibold); + color: var(--text-primary); +} + +.block-header-actions { + display: flex; + gap: 0.25rem; + align-items: center; +} + +.block-header-time { + font-size: var(--font-small); + color: var(--text-secondary); + white-space: nowrap; } /* Print Styles */ diff --git a/assets/js/calendar-init.js b/assets/js/calendar-init.js index 2b5989d..8a6a30d 100644 --- a/assets/js/calendar-init.js +++ b/assets/js/calendar-init.js @@ -532,7 +532,7 @@ function updateBlockInfo(blocks) { const channelColors = { 'SBS9': 'primary', 'NET5': 'danger', - 'VERONICA': 'secondary' + 'SBS6': 'secondary' }; const color = channelColors[channel] || 'secondary'; diff --git a/blocks.php b/blocks.php index 252c3e4..6d1d60b 100644 --- a/blocks.php +++ b/blocks.php @@ -162,7 +162,7 @@ $dayNames = [ - + @@ -256,24 +256,23 @@ $dayNames = [