From 7b2080a7bf2119cf36340c0a10fd5bae583f8f32 Mon Sep 17 00:00:00 2001 From: "Janus C. H. Knudsen" Date: Wed, 31 Dec 2025 00:36:32 +0100 Subject: [PATCH] Refactors dashboard to use external CSS file Moves inline styles to dedicated dashboard.css Updates HTML to reference external stylesheet Improves code organization and maintainability Relates to refac branch --- .workbench/image.png | Bin 43496 -> 64812 bytes wwwroot/css/dashboard.css | 869 +++++++++++ wwwroot/css/indstillinger.css | 576 +++++++ wwwroot/css/konto.css | 684 +++++++++ wwwroot/poc-dashboard copy.html | 1385 +++++++++++++++++ wwwroot/poc-dashboard.html | 898 +---------- wwwroot/poc-indstillinger.html | 2319 ++++++++++++++++++++++++++++ wwwroot/poc-konto.html | 635 ++++++++ wwwroot/poc-layout copy.html | 2509 +++++++++++++++++++++++++++++++ wwwroot/poc-layout.html | 505 ++++++- 10 files changed, 9481 insertions(+), 899 deletions(-) create mode 100644 wwwroot/css/dashboard.css create mode 100644 wwwroot/css/indstillinger.css create mode 100644 wwwroot/css/konto.css create mode 100644 wwwroot/poc-dashboard copy.html create mode 100644 wwwroot/poc-indstillinger.html create mode 100644 wwwroot/poc-konto.html create mode 100644 wwwroot/poc-layout copy.html diff --git a/.workbench/image.png b/.workbench/image.png index b84e12fdaa4b61d65eade3a173527c6bed469a02..cbecbe406b2b8056954972914fa92984782ece31 100644 GIT binary patch literal 64812 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 literal 43496 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 PfIl^5?b{_cEua1$G#-c} diff --git a/wwwroot/css/dashboard.css b/wwwroot/css/dashboard.css new file mode 100644 index 0000000..81b78bf --- /dev/null +++ b/wwwroot/css/dashboard.css @@ -0,0 +1,869 @@ +/* ========================================== + DASHBOARD STYLES + ========================================== */ + +/* ========================================== + FONT FACE (Poppins) + ========================================== */ +@font-face { + font-family: 'Poppins'; + src: url('../fonts/Poppins-Regular.woff') format('woff'); + font-weight: 400; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Poppins'; + src: url('../fonts/Poppins-Medium.woff') format('woff'); + font-weight: 500; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Poppins'; + src: url('../fonts/Poppins-SemiBold.woff') format('woff'); + font-weight: 600; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: 'Poppins'; + src: url('../fonts/Poppins-Bold.woff') format('woff'); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +/* ========================================== + CSS VARIABLES + ========================================== */ +:root { + --color-surface: #fff; + --color-background: #f5f5f5; + --color-background-hover: #f0f0f0; + --color-background-alt: #fafafa; + --color-border: #e0e0e0; + --color-text: #333; + --color-text-secondary: #666; + --color-teal: #00897b; + --color-blue: #1976d2; + --color-red: #e53935; + --color-amber: #f59e0b; + --color-purple: #8b5cf6; + --color-green: #43a047; + --font-family: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --font-mono: 'JetBrains Mono', monospace; +} + +/* Dark mode */ +@media (prefers-color-scheme: dark) { + :root:not(.light-mode) { + --color-surface: #1e1e1e; + --color-background: #121212; + --color-background-hover: #2a2a2a; + --color-background-alt: #1a1a1a; + --color-border: #333; + --color-text: #e0e0e0; + --color-text-secondary: #999; + --color-teal: #26a69a; + --color-blue: #42a5f5; + --color-red: #ef5350; + --color-amber: #ffb74d; + --color-purple: #a78bfa; + --color-green: #66bb6a; + } +} + +:root.dark-mode { + --color-surface: #1e1e1e; + --color-background: #121212; + --color-background-hover: #2a2a2a; + --color-background-alt: #1a1a1a; + --color-border: #333; + --color-text: #e0e0e0; + --color-text-secondary: #999; + --color-teal: #26a69a; + --color-blue: #42a5f5; + --color-red: #ef5350; + --color-amber: #ffb74d; + --color-purple: #a78bfa; + --color-green: #66bb6a; +} + +/* ========================================== + RESET & BASE + ========================================== */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: var(--font-family); + font-size: 14px; + color: var(--color-text); + background: var(--color-background); + line-height: 1.5; +} + +/* ========================================== + LAYOUT + ========================================== */ +swp-page-container { + display: block; + max-width: 1400px; + margin: 0 auto; + padding: 24px; +} + +swp-dashboard-grid { + display: grid; + grid-template-columns: 1fr 380px; + gap: 24px; +} + +swp-main-column { + display: flex; + flex-direction: column; + gap: 20px; +} + +swp-side-column { + display: flex; + flex-direction: column; + gap: 20px; +} + +/* ========================================== + BUTTONS + ========================================== */ +swp-btn { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 10px 18px; + font-size: 13px; + font-weight: 500; + font-family: var(--font-family); + border-radius: 6px; + cursor: pointer; + transition: all 150ms ease; + border: none; +} + +swp-btn i { + font-size: 18px; +} + +swp-btn.primary { + background: var(--color-teal); + color: white; +} + +swp-btn.primary:hover { + background: #00796b; +} + +swp-btn.secondary { + background: var(--color-surface); + border: 1px solid var(--color-border); + color: var(--color-text); +} + +swp-btn.secondary:hover { + background: var(--color-background-hover); +} + +/* ========================================== + CARDS + ========================================== */ +swp-card { + display: block; + background: var(--color-surface); + border-radius: 8px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); + padding: 20px; +} + +swp-card-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 16px; +} + +swp-card-title { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + font-weight: 600; + color: var(--color-text); +} + +swp-card-title i { + font-size: 20px; + color: var(--color-teal); +} + +swp-card-action { + font-size: 12px; + color: var(--color-teal); + cursor: pointer; + text-decoration: none; +} + +swp-card-action:hover { + text-decoration: underline; +} + +swp-section-label { + display: block; + font-size: 11px; + font-weight: 600; + color: var(--color-text-secondary); + text-transform: uppercase; + letter-spacing: 0.5px; + margin-bottom: 12px; +} + +/* ========================================== + STATS BAR + ========================================== */ +swp-stats-bar { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 16px; + margin-bottom: 24px; +} + +swp-stat-card { + display: flex; + flex-direction: column; + gap: 4px; + padding: 16px 20px; + background: var(--color-surface); + border-radius: 8px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); +} + +swp-stat-card swp-stat-value { + font-size: 28px; + font-weight: 700; + font-family: var(--font-mono); + color: var(--color-text); +} + +swp-stat-card swp-stat-label { + font-size: 12px; + color: var(--color-text-secondary); +} + +swp-stat-card swp-stat-trend { + display: flex; + align-items: center; + gap: 4px; + font-size: 11px; + margin-top: 4px; +} + +swp-stat-card swp-stat-trend.up { + color: var(--color-green); +} + +swp-stat-card swp-stat-trend.down { + color: var(--color-red); +} + +swp-stat-card.highlight swp-stat-value { + color: var(--color-teal); +} + +swp-stat-card.success swp-stat-value { + color: var(--color-green); +} + +swp-stat-card.warning swp-stat-value { + color: var(--color-amber); +} + +/* ========================================== + AI INSIGHT + ========================================== */ +swp-ai-insight { + display: block; + padding: 16px; + background: linear-gradient(135deg, color-mix(in srgb, var(--color-purple) 8%, transparent), color-mix(in srgb, var(--color-teal) 8%, transparent)); + border: 1px solid color-mix(in srgb, var(--color-purple) 20%, transparent); + border-radius: 8px; +} + +swp-ai-header { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 10px; +} + +swp-ai-header i { + font-size: 20px; + color: var(--color-purple); +} + +swp-ai-header span { + font-size: 12px; + font-weight: 600; + color: var(--color-purple); + text-transform: uppercase; + letter-spacing: 0.5px; +} + +swp-ai-text { + display: block; + font-size: 14px; + line-height: 1.6; + color: var(--color-text); +} + +swp-ai-text strong { + color: var(--color-purple); +} + +/* ========================================== + OCCUPANCY BAR + ========================================== */ +swp-occupancy-bar { + display: block; + margin-top: 16px; +} + +swp-occupancy-header { + display: flex; + justify-content: space-between; + align-items: baseline; + margin-bottom: 8px; +} + +swp-occupancy-label { + font-size: 13px; + color: var(--color-text-secondary); +} + +swp-occupancy-value { + font-size: 14px; + font-weight: 600; + font-family: var(--font-mono); + color: var(--color-text); +} + +swp-occupancy-track { + height: 8px; + background: var(--color-border); + border-radius: 4px; + overflow: hidden; +} + +swp-occupancy-fill { + display: block; + height: 100%; + background: var(--color-teal); + border-radius: 4px; + transition: width 500ms ease; +} + +swp-occupancy-fill.high { + background: var(--color-green); +} + +swp-occupancy-fill.medium { + background: var(--color-amber); +} + +swp-occupancy-fill.low { + background: var(--color-red); +} + +/* ========================================== + TIMELINE / BOOKINGS + ========================================== */ +swp-booking-list { + display: flex; + flex-direction: column; + gap: 8px; +} + +swp-booking-item { + display: flex; + align-items: center; + gap: 12px; + padding: 12px; + background: var(--color-background-alt); + border-radius: 6px; + cursor: pointer; + transition: background 150ms ease; +} + +swp-booking-item:hover { + background: var(--color-background-hover); +} + +swp-booking-time { + display: flex; + flex-direction: column; + align-items: center; + min-width: 50px; +} + +swp-booking-time swp-time-start { + font-size: 14px; + font-weight: 600; + font-family: var(--font-mono); + color: var(--color-text); +} + +swp-booking-time swp-time-end { + font-size: 11px; + color: var(--color-text-secondary); + font-family: var(--font-mono); +} + +swp-booking-indicator { + width: 4px; + height: 40px; + border-radius: 2px; + flex-shrink: 0; +} + +swp-booking-indicator.teal { background: var(--color-teal); } +swp-booking-indicator.blue { background: var(--color-blue); } +swp-booking-indicator.purple { background: var(--color-purple); } +swp-booking-indicator.amber { background: var(--color-amber); } +swp-booking-indicator.green { background: var(--color-green); } + +swp-booking-details { + flex: 1; + min-width: 0; +} + +swp-booking-service { + font-size: 14px; + font-weight: 500; + color: var(--color-text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +swp-booking-customer { + font-size: 12px; + color: var(--color-text-secondary); +} + +swp-booking-employee { + display: flex; + align-items: center; + gap: 6px; +} + +swp-booking-employee swp-avatar-small { + width: 24px; + height: 24px; + border-radius: 50%; + background: var(--color-teal); + color: white; + display: flex; + align-items: center; + justify-content: center; + font-size: 10px; + font-weight: 600; +} + +swp-booking-employee span { + font-size: 12px; + color: var(--color-text-secondary); +} + +swp-booking-status { + padding: 4px 8px; + border-radius: 4px; + font-size: 11px; + font-weight: 500; +} + +swp-booking-status.confirmed { + background: color-mix(in srgb, var(--color-green) 15%, transparent); + color: var(--color-green); +} + +swp-booking-status.pending { + background: color-mix(in srgb, var(--color-amber) 15%, transparent); + color: var(--color-amber); +} + +swp-booking-status.inprogress { + background: color-mix(in srgb, var(--color-blue) 15%, transparent); + color: var(--color-blue); +} + +swp-booking-status.completed { + background: var(--color-background-hover); + color: var(--color-text-secondary); +} + +swp-booking-item.completed { + opacity: 0.6; +} + +swp-booking-item.completed swp-booking-indicator { + background: var(--color-border); +} + +/* ========================================== + ATTENTION LIST + ========================================== */ +swp-attention-list { + display: flex; + flex-direction: column; + gap: 8px; +} + +swp-attention-item { + display: flex; + align-items: flex-start; + gap: 12px; + padding: 12px; + background: var(--color-background-alt); + border-radius: 6px; + border-left: 3px solid var(--color-border); +} + +swp-attention-item.urgent { + border-left-color: var(--color-red); + background: color-mix(in srgb, var(--color-red) 5%, var(--color-background-alt)); +} + +swp-attention-item.warning { + border-left-color: var(--color-amber); + background: color-mix(in srgb, var(--color-amber) 5%, var(--color-background-alt)); +} + +swp-attention-item.info { + border-left-color: var(--color-blue); +} + +swp-attention-icon { + width: 32px; + height: 32px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +swp-attention-item.urgent swp-attention-icon { + background: color-mix(in srgb, var(--color-red) 15%, transparent); + color: var(--color-red); +} + +swp-attention-item.warning swp-attention-icon { + background: color-mix(in srgb, var(--color-amber) 15%, transparent); + color: var(--color-amber); +} + +swp-attention-item.info swp-attention-icon { + background: color-mix(in srgb, var(--color-blue) 15%, transparent); + color: var(--color-blue); +} + +swp-attention-icon i { + font-size: 16px; +} + +swp-attention-content { + flex: 1; +} + +swp-attention-title { + font-size: 13px; + font-weight: 500; + color: var(--color-text); + margin-bottom: 2px; +} + +swp-attention-desc { + font-size: 12px; + color: var(--color-text-secondary); +} + +swp-attention-action { + font-size: 12px; + color: var(--color-teal); + cursor: pointer; + white-space: nowrap; +} + +swp-attention-action:hover { + text-decoration: underline; +} + +/* ========================================== + EMPLOYEE STATUS + ========================================== */ +swp-employee-list { + display: flex; + flex-direction: column; + gap: 8px; +} + +swp-employee-status-item { + display: flex; + align-items: center; + gap: 12px; + padding: 10px 12px; + background: var(--color-background-alt); + border-radius: 6px; +} + +swp-employee-avatar { + width: 36px; + height: 36px; + border-radius: 50%; + background: var(--color-teal); + color: white; + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + font-weight: 600; + flex-shrink: 0; +} + +swp-employee-info { + flex: 1; + min-width: 0; +} + +swp-employee-name { + font-size: 14px; + font-weight: 500; + color: var(--color-text); +} + +swp-employee-current { + font-size: 12px; + color: var(--color-text-secondary); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +swp-employee-status-badge { + padding: 4px 10px; + border-radius: 12px; + font-size: 11px; + font-weight: 500; +} + +swp-employee-status-badge.busy { + background: color-mix(in srgb, var(--color-teal) 15%, transparent); + color: var(--color-teal); +} + +swp-employee-status-badge.available { + background: color-mix(in srgb, var(--color-green) 15%, transparent); + color: var(--color-green); +} + +swp-employee-status-badge.away { + background: color-mix(in srgb, var(--color-amber) 15%, transparent); + color: var(--color-amber); +} + +swp-employee-status-badge.off { + background: var(--color-background-hover); + color: var(--color-text-secondary); +} + +/* ========================================== + QUICK STATS MINI + ========================================== */ +swp-quick-stats { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 12px; +} + +swp-quick-stat { + display: flex; + flex-direction: column; + gap: 2px; + padding: 12px; + background: var(--color-background-alt); + border-radius: 6px; +} + +swp-quick-stat swp-stat-value { + font-size: 20px; + font-weight: 600; + font-family: var(--font-mono); + color: var(--color-text); +} + +swp-quick-stat swp-stat-label { + font-size: 11px; + color: var(--color-text-secondary); +} + +/* ========================================== + NOTIFICATIONS + ========================================== */ +swp-notification-list { + display: flex; + flex-direction: column; + gap: 8px; +} + +swp-notification-item { + display: flex; + align-items: flex-start; + gap: 10px; + padding: 10px 12px; + background: var(--color-background-alt); + border-radius: 6px; + cursor: pointer; + transition: background 150ms ease; +} + +swp-notification-item:hover { + background: var(--color-background-hover); +} + +swp-notification-item.unread { + background: color-mix(in srgb, var(--color-teal) 5%, var(--color-background-alt)); +} + +swp-notification-icon { + width: 28px; + height: 28px; + border-radius: 50%; + background: var(--color-background-hover); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + color: var(--color-text-secondary); +} + +swp-notification-icon i { + font-size: 14px; +} + +swp-notification-content { + flex: 1; + min-width: 0; +} + +swp-notification-text { + font-size: 13px; + color: var(--color-text); + line-height: 1.4; +} + +swp-notification-text strong { + font-weight: 600; +} + +swp-notification-time { + font-size: 11px; + color: var(--color-text-secondary); + margin-top: 2px; +} + +swp-notification-item.unread swp-notification-icon { + background: color-mix(in srgb, var(--color-teal) 15%, transparent); + color: var(--color-teal); +} + +/* ========================================== + TIME INDICATOR + ========================================== */ +swp-current-time { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 12px; + background: color-mix(in srgb, var(--color-teal) 10%, transparent); + border-radius: 6px; + margin-bottom: 12px; +} + +swp-current-time i { + font-size: 16px; + color: var(--color-teal); +} + +swp-current-time span { + font-size: 13px; + color: var(--color-teal); + font-weight: 500; +} + +swp-current-time swp-time { + font-family: var(--font-mono); + font-weight: 600; +} + +/* ========================================== + PAGE HEADER (for content modules) + ========================================== */ +swp-page-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 24px; +} + +swp-page-header swp-page-title { + font-size: 18px; + font-weight: 600; + color: var(--color-text); +} + +swp-page-header swp-page-actions { + display: flex; + align-items: center; + gap: 12px; +} + +swp-date-display { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + color: var(--color-text-secondary); +} + +swp-date-display i { + font-size: 18px; +} + +/* ========================================== + RESPONSIVE + ========================================== */ +@media (max-width: 1100px) { + swp-dashboard-grid { + grid-template-columns: 1fr; + } + + swp-stats-bar { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 600px) { + swp-stats-bar { + grid-template-columns: 1fr; + } +} diff --git a/wwwroot/css/indstillinger.css b/wwwroot/css/indstillinger.css new file mode 100644 index 0000000..31bec2a --- /dev/null +++ b/wwwroot/css/indstillinger.css @@ -0,0 +1,576 @@ +/* ========================================== + INDSTILLINGER (SETTINGS) STYLES + ========================================== */ + +/* ========================================== + PAGE LAYOUT + ========================================== */ +swp-page-container { + display: block; + max-width: 900px; + margin: 0 auto; + padding: 24px; +} + +swp-page-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 32px; +} + +swp-page-title { + display: flex; + flex-direction: column; + gap: 4px; +} + +swp-page-title h1 { + font-size: 22px; + font-weight: 600; + color: var(--color-text); + margin: 0; +} + +swp-page-title p { + font-size: 13px; + color: var(--color-text-secondary); + margin: 0; +} + +/* ========================================== + SETTINGS SECTIONS + ========================================== */ +swp-settings-section { + display: block; + background: var(--color-surface); + border-radius: 8px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); + margin-bottom: 24px; +} + +swp-section-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 20px 24px; + border-bottom: 1px solid var(--color-border); +} + +swp-section-title { + display: flex; + align-items: center; + gap: 12px; +} + +swp-section-title i { + font-size: 22px; + color: var(--color-teal); +} + +swp-section-title h2 { + font-size: 16px; + font-weight: 600; + color: var(--color-text); + margin: 0; +} + +swp-section-content { + display: block; + padding: 24px; +} + +swp-section-footer { + display: flex; + justify-content: flex-end; + padding: 16px 24px; + border-top: 1px solid var(--color-border); + background: var(--color-background-alt); + border-radius: 0 0 8px 8px; +} + +/* ========================================== + FORM ELEMENTS + ========================================== */ +swp-form-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 20px; +} + +swp-form-grid.single-column { + grid-template-columns: 1fr; +} + +swp-form-row { + display: flex; + flex-direction: column; + gap: 6px; +} + +swp-form-row.full-width { + grid-column: 1 / -1; +} + +swp-form-label { + display: block; + font-size: 13px; + font-weight: 500; + color: var(--color-text); +} + +swp-form-label span.optional { + font-weight: 400; + color: var(--color-text-secondary); + margin-left: 4px; +} + +swp-form-input { + display: block; + width: 100%; + padding: 10px 14px; + font-size: 14px; + font-family: var(--font-family); + color: var(--color-text); + background: var(--color-background); + border: 1px solid var(--color-border); + border-radius: 6px; + transition: all 150ms ease; +} + +swp-form-input:focus { + outline: none; + border-color: var(--color-teal); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-teal) 15%, transparent); +} + +swp-form-input::placeholder { + color: var(--color-text-secondary); +} + +swp-form-input[type="time"] { + padding: 8px 14px; +} + +swp-form-textarea { + display: block; + width: 100%; + padding: 10px 14px; + font-size: 14px; + font-family: var(--font-family); + color: var(--color-text); + background: var(--color-background); + border: 1px solid var(--color-border); + border-radius: 6px; + resize: vertical; + min-height: 80px; + transition: all 150ms ease; +} + +swp-form-textarea:focus { + outline: none; + border-color: var(--color-teal); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-teal) 15%, transparent); +} + +swp-form-select { + display: block; + width: 100%; + padding: 10px 14px; + font-size: 14px; + font-family: var(--font-family); + color: var(--color-text); + background: var(--color-background); + border: 1px solid var(--color-border); + border-radius: 6px; + cursor: pointer; + transition: all 150ms ease; + appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 256 256'%3E%3Cpath fill='%23666' d='M213.66 101.66l-80 80a8 8 0 0 1-11.32 0l-80-80A8 8 0 0 1 48 88h160a8 8 0 0 1 5.66 13.66z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 12px center; + padding-right: 40px; +} + +swp-form-select:focus { + outline: none; + border-color: var(--color-teal); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-teal) 15%, transparent); +} + +swp-form-hint { + display: block; + font-size: 12px; + color: var(--color-text-secondary); + margin-top: 4px; +} + +/* ========================================== + TOGGLE SWITCH + ========================================== */ +swp-toggle-row { + display: flex; + align-items: center; + justify-content: space-between; + padding: 12px 0; + border-bottom: 1px solid var(--color-border); +} + +swp-toggle-row:last-child { + border-bottom: none; +} + +swp-toggle-info { + display: flex; + flex-direction: column; + gap: 2px; +} + +swp-toggle-label { + font-size: 14px; + font-weight: 500; + color: var(--color-text); +} + +swp-toggle-desc { + font-size: 12px; + color: var(--color-text-secondary); +} + +swp-toggle { + position: relative; + width: 44px; + height: 24px; + background: var(--color-border); + border-radius: 12px; + cursor: pointer; + transition: background 200ms ease; + flex-shrink: 0; +} + +swp-toggle.active { + background: var(--color-teal); +} + +swp-toggle-knob { + position: absolute; + top: 2px; + left: 2px; + width: 20px; + height: 20px; + background: white; + border-radius: 50%; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + transition: transform 200ms ease; +} + +swp-toggle.active swp-toggle-knob { + transform: translateX(20px); +} + +/* ========================================== + OPENING HOURS TABLE + ========================================== */ +swp-hours-table { + display: flex; + flex-direction: column; + gap: 0; +} + +swp-hours-row { + display: grid; + grid-template-columns: 100px 80px 1fr 1fr auto; + gap: 16px; + align-items: center; + padding: 12px 0; + border-bottom: 1px solid var(--color-border); +} + +swp-hours-row:last-child { + border-bottom: none; +} + +swp-hours-day { + font-size: 14px; + font-weight: 500; + color: var(--color-text); +} + +swp-hours-status { + display: flex; + align-items: center; + gap: 8px; +} + +swp-hours-badge { + display: inline-flex; + align-items: center; + padding: 4px 10px; + font-size: 12px; + font-weight: 500; + border-radius: 4px; + background: color-mix(in srgb, var(--color-green) 15%, transparent); + color: var(--color-green); +} + +swp-hours-badge.closed { + background: var(--color-background); + color: var(--color-text-secondary); +} + +swp-hours-time { + display: flex; + align-items: center; + gap: 8px; +} + +swp-hours-time span { + font-size: 13px; + color: var(--color-text-secondary); +} + +swp-hours-time swp-form-input { + width: 100px; + padding: 8px 12px; + font-size: 13px; + text-align: center; +} + +swp-hours-actions { + display: flex; + align-items: center; + gap: 8px; +} + +/* ========================================== + LOGO UPLOAD + ========================================== */ +swp-logo-upload { + display: flex; + align-items: center; + gap: 20px; +} + +swp-logo-preview { + width: 80px; + height: 80px; + background: var(--color-background); + border: 2px dashed var(--color-border); + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; +} + +swp-logo-preview.has-logo { + border-style: solid; +} + +swp-logo-preview img { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} + +swp-logo-preview i { + font-size: 32px; + color: var(--color-text-secondary); + opacity: 0.5; +} + +swp-logo-actions { + display: flex; + flex-direction: column; + gap: 8px; +} + +swp-logo-actions swp-btn { + justify-content: center; +} + +/* ========================================== + URL FIELD WITH COPY + ========================================== */ +swp-url-field { + display: flex; + align-items: stretch; + border: 1px solid var(--color-border); + border-radius: 6px; + overflow: hidden; + background: var(--color-background); +} + +swp-url-field swp-form-input { + border: none; + border-radius: 0; + background: transparent; +} + +swp-url-field swp-form-input:focus { + box-shadow: none; +} + +swp-url-copy { + display: flex; + align-items: center; + justify-content: center; + padding: 0 14px; + background: var(--color-surface); + border-left: 1px solid var(--color-border); + cursor: pointer; + transition: all 150ms ease; + color: var(--color-text-secondary); +} + +swp-url-copy:hover { + background: var(--color-background-hover); + color: var(--color-teal); +} + +swp-url-copy i { + font-size: 18px; +} + +/* ========================================== + BUTTONS + ========================================== */ +swp-btn { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 10px 18px; + font-size: 13px; + font-weight: 500; + font-family: var(--font-family); + border-radius: 6px; + cursor: pointer; + transition: all 150ms ease; + border: none; +} + +swp-btn i { + font-size: 18px; +} + +swp-btn.primary { + background: var(--color-teal); + color: white; +} + +swp-btn.primary:hover { + background: #00796b; +} + +swp-btn.secondary { + background: var(--color-surface); + border: 1px solid var(--color-border); + color: var(--color-text); +} + +swp-btn.secondary:hover { + background: var(--color-background-hover); +} + +swp-btn.small { + padding: 6px 12px; + font-size: 12px; +} + +swp-btn.small i { + font-size: 16px; +} + +swp-btn.danger { + background: transparent; + border: 1px solid var(--color-border); + color: var(--color-text-secondary); +} + +swp-btn.danger:hover { + background: color-mix(in srgb, var(--color-red) 10%, transparent); + border-color: var(--color-red); + color: var(--color-red); +} + +/* ========================================== + ICON BUTTON + ========================================== */ +swp-icon-btn { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border: none; + background: transparent; + border-radius: 6px; + cursor: pointer; + color: var(--color-text-secondary); + transition: all 150ms ease; +} + +swp-icon-btn:hover { + background: var(--color-background-hover); + color: var(--color-text); +} + +swp-icon-btn i { + font-size: 18px; +} + +/* ========================================== + INFO BOX + ========================================== */ +swp-info-box { + display: flex; + align-items: flex-start; + gap: 12px; + padding: 14px 16px; + background: color-mix(in srgb, var(--color-blue) 8%, transparent); + border: 1px solid color-mix(in srgb, var(--color-blue) 20%, transparent); + border-radius: 6px; + margin-bottom: 20px; +} + +swp-info-box i { + font-size: 20px; + color: var(--color-blue); + flex-shrink: 0; + margin-top: 1px; +} + +swp-info-box p { + font-size: 13px; + color: var(--color-text); + margin: 0; + line-height: 1.5; +} + +/* ========================================== + RESPONSIVE + ========================================== */ +@media (max-width: 768px) { + swp-page-container { + padding: 16px; + } + + swp-form-grid { + grid-template-columns: 1fr; + } + + swp-hours-row { + grid-template-columns: 1fr; + gap: 12px; + } + + swp-hours-time { + flex-wrap: wrap; + } + + swp-section-header { + flex-direction: column; + align-items: flex-start; + gap: 12px; + } +} diff --git a/wwwroot/css/konto.css b/wwwroot/css/konto.css new file mode 100644 index 0000000..69fd7d7 --- /dev/null +++ b/wwwroot/css/konto.css @@ -0,0 +1,684 @@ +/* ========================================== + KONTO & ABONNEMENT STYLES + ========================================== */ + +/* ========================================== + PAGE LAYOUT + ========================================== */ +swp-page-container { + display: block; + max-width: 1200px; + margin: 0 auto; + padding: 24px; +} + +swp-page-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 24px; +} + +swp-page-title { + display: flex; + flex-direction: column; + gap: 4px; +} + +swp-page-title h1 { + font-size: 22px; + font-weight: 600; + color: var(--color-text); + margin: 0; +} + +swp-page-title p { + font-size: 13px; + color: var(--color-text-secondary); + margin: 0; +} + +/* ========================================== + SECTIONS + ========================================== */ +swp-section { + display: block; + margin-bottom: 32px; +} + +swp-section-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 16px; +} + +swp-section-title { + display: flex; + align-items: center; + gap: 10px; + font-size: 16px; + font-weight: 600; + color: var(--color-text); +} + +swp-section-title i { + font-size: 22px; + color: var(--color-teal); +} + +/* ========================================== + PLAN CARDS + ========================================== */ +swp-plan-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 20px; +} + +swp-plan-card { + display: flex; + flex-direction: column; + background: var(--color-surface); + border: 2px solid var(--color-border); + border-radius: 12px; + padding: 24px; + transition: all 200ms ease; +} + +swp-plan-card.current { + border-color: var(--color-teal); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-teal) 15%, transparent); +} + +swp-plan-card.enterprise { + background: linear-gradient(135deg, var(--color-surface) 0%, color-mix(in srgb, var(--color-purple) 5%, var(--color-surface)) 100%); + border-color: var(--color-purple); +} + +swp-plan-badge { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 4px 10px; + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; + border-radius: 20px; + width: fit-content; + margin-bottom: 12px; +} + +swp-plan-badge.current { + background: color-mix(in srgb, var(--color-teal) 15%, transparent); + color: var(--color-teal); +} + +swp-plan-badge.popular { + background: color-mix(in srgb, var(--color-amber) 15%, transparent); + color: var(--color-amber); +} + +swp-plan-name { + font-size: 20px; + font-weight: 700; + color: var(--color-text); + margin-bottom: 4px; +} + +swp-plan-users { + font-size: 13px; + color: var(--color-text-secondary); + margin-bottom: 16px; +} + +swp-plan-price { + display: flex; + align-items: baseline; + gap: 4px; + margin-bottom: 20px; +} + +swp-plan-price-amount { + font-size: 36px; + font-weight: 700; + color: var(--color-text); +} + +swp-plan-price-period { + font-size: 14px; + color: var(--color-text-secondary); +} + +swp-plan-features { + display: flex; + flex-direction: column; + gap: 10px; + flex: 1; + margin-bottom: 20px; +} + +swp-plan-feature { + display: flex; + align-items: center; + gap: 10px; + font-size: 13px; + color: var(--color-text); +} + +swp-plan-feature i { + font-size: 18px; + color: var(--color-green); +} + +swp-plan-action { + margin-top: auto; +} + +swp-plan-action swp-btn { + width: 100%; + justify-content: center; +} + +swp-plan-card.current swp-btn.secondary { + background: var(--color-background-alt); + color: var(--color-text-secondary); + cursor: default; +} + +/* ========================================== + USERS TABLE + ========================================== */ +swp-users-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 16px; +} + +swp-users-count { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + color: var(--color-text-secondary); +} + +swp-users-count strong { + color: var(--color-text); + font-weight: 600; +} + +swp-users-progress { + width: 100px; + height: 6px; + background: var(--color-border); + border-radius: 3px; + overflow: hidden; +} + +swp-users-progress-bar { + height: 100%; + background: var(--color-teal); + border-radius: 3px; + transition: width 300ms ease; +} + +swp-users-progress-bar.warning { + background: var(--color-amber); +} + +swp-users-progress-bar.full { + background: var(--color-red); +} + +swp-table-card { + display: block; + background: var(--color-surface); + border-radius: 8px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); + overflow: hidden; +} + +swp-table { + display: table; + width: 100%; + border-collapse: collapse; +} + +swp-table-header { + display: table-header-group; + background: var(--color-background-alt); +} + +swp-table-body { + display: table-row-group; +} + +swp-table-row { + display: table-row; + transition: background 150ms ease; +} + +swp-table-body swp-table-row:hover { + background: var(--color-background-hover); +} + +swp-table-cell { + display: table-cell; + padding: 14px 16px; + font-size: 13px; + color: var(--color-text); + border-bottom: 1px solid var(--color-border); + vertical-align: middle; +} + +swp-table-header swp-table-cell { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; + color: var(--color-text-secondary); + border-bottom: 1px solid var(--color-border); +} + +swp-table-cell:first-child { + padding-left: 20px; +} + +swp-table-cell:last-child { + padding-right: 20px; +} + +/* User row specific */ +swp-user-info { + display: flex; + align-items: center; + gap: 12px; +} + +swp-user-avatar { + width: 36px; + height: 36px; + border-radius: 50%; + background: var(--color-teal); + color: white; + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + font-weight: 600; + flex-shrink: 0; +} + +swp-user-avatar.purple { background: var(--color-purple); } +swp-user-avatar.blue { background: var(--color-blue); } +swp-user-avatar.amber { background: var(--color-amber); } + +swp-user-details { + display: flex; + flex-direction: column; + gap: 2px; +} + +swp-user-name { + font-weight: 500; + color: var(--color-text); +} + +swp-user-email { + font-size: 12px; + color: var(--color-text-secondary); +} + +swp-role-badge { + display: inline-flex; + align-items: center; + padding: 4px 10px; + font-size: 12px; + font-weight: 500; + border-radius: 4px; + background: var(--color-background); + color: var(--color-text-secondary); +} + +swp-role-badge.admin { + background: color-mix(in srgb, var(--color-purple) 15%, transparent); + color: var(--color-purple); +} + +swp-role-badge.owner { + background: color-mix(in srgb, var(--color-teal) 15%, transparent); + color: var(--color-teal); +} + +swp-status-badge { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 4px 10px; + font-size: 12px; + font-weight: 500; + border-radius: 4px; +} + +swp-status-badge.active { + background: color-mix(in srgb, var(--color-green) 15%, transparent); + color: var(--color-green); +} + +swp-status-badge.invited { + background: color-mix(in srgb, var(--color-amber) 15%, transparent); + color: var(--color-amber); +} + +swp-status-badge.inactive { + background: var(--color-background); + color: var(--color-text-secondary); +} + +swp-status-dot { + width: 6px; + height: 6px; + border-radius: 50%; + background: currentColor; +} + +swp-table-actions { + display: flex; + align-items: center; + gap: 8px; +} + +swp-icon-btn { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border: none; + background: transparent; + border-radius: 6px; + cursor: pointer; + color: var(--color-text-secondary); + transition: all 150ms ease; +} + +swp-icon-btn:hover { + background: var(--color-background-hover); + color: var(--color-text); +} + +swp-icon-btn.danger:hover { + background: color-mix(in srgb, var(--color-red) 15%, transparent); + color: var(--color-red); +} + +swp-icon-btn i { + font-size: 18px; +} + +/* ========================================== + BILLING GRID + ========================================== */ +swp-billing-grid { + display: grid; + grid-template-columns: 380px 1fr; + gap: 24px; +} + +/* ========================================== + PAYMENT CARD + ========================================== */ +swp-payment-card { + display: flex; + flex-direction: column; + gap: 20px; + background: var(--color-surface); + border-radius: 8px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); + padding: 24px; +} + +swp-payment-method { + display: flex; + align-items: center; + gap: 16px; + padding: 16px; + background: var(--color-background-alt); + border-radius: 8px; +} + +swp-payment-icon { + width: 48px; + height: 32px; + background: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: 4px; + display: flex; + align-items: center; + justify-content: center; +} + +swp-payment-icon i { + font-size: 24px; + color: var(--color-blue); +} + +swp-payment-info { + flex: 1; +} + +swp-payment-type { + font-size: 14px; + font-weight: 600; + color: var(--color-text); + margin-bottom: 2px; +} + +swp-payment-number { + font-size: 13px; + color: var(--color-text-secondary); + font-family: var(--font-mono); +} + +swp-payment-detail { + display: flex; + justify-content: space-between; + align-items: center; + padding: 12px 0; + border-bottom: 1px solid var(--color-border); +} + +swp-payment-detail:last-of-type { + border-bottom: none; +} + +swp-payment-label { + font-size: 13px; + color: var(--color-text-secondary); +} + +swp-payment-value { + font-size: 14px; + font-weight: 500; + color: var(--color-text); +} + +swp-payment-value.highlight { + color: var(--color-teal); +} + +/* ========================================== + INVOICES + ========================================== */ +swp-invoices-card { + display: block; + background: var(--color-surface); + border-radius: 8px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); +} + +swp-invoices-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px 20px; + border-bottom: 1px solid var(--color-border); +} + +swp-invoices-title { + font-size: 14px; + font-weight: 600; + color: var(--color-text); +} + +swp-invoice-status { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 4px 10px; + font-size: 12px; + font-weight: 500; + border-radius: 4px; +} + +swp-invoice-status.paid { + background: color-mix(in srgb, var(--color-green) 15%, transparent); + color: var(--color-green); +} + +swp-invoice-status.pending { + background: color-mix(in srgb, var(--color-amber) 15%, transparent); + color: var(--color-amber); +} + +swp-invoice-status.overdue { + background: color-mix(in srgb, var(--color-red) 15%, transparent); + color: var(--color-red); +} + +swp-download-btn { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 6px 12px; + font-size: 12px; + font-weight: 500; + color: var(--color-teal); + background: transparent; + border: 1px solid var(--color-teal); + border-radius: 4px; + cursor: pointer; + transition: all 150ms ease; +} + +swp-download-btn:hover { + background: color-mix(in srgb, var(--color-teal) 10%, transparent); +} + +swp-download-btn i { + font-size: 14px; +} + +/* ========================================== + BUTTONS + ========================================== */ +swp-btn { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 10px 18px; + font-size: 13px; + font-weight: 500; + font-family: var(--font-family); + border-radius: 6px; + cursor: pointer; + transition: all 150ms ease; + border: none; +} + +swp-btn i { + font-size: 18px; +} + +swp-btn.primary { + background: var(--color-teal); + color: white; +} + +swp-btn.primary:hover { + background: #00796b; +} + +swp-btn.secondary { + background: var(--color-surface); + border: 1px solid var(--color-border); + color: var(--color-text); +} + +swp-btn.secondary:hover { + background: var(--color-background-hover); +} + +swp-btn.outline { + background: transparent; + border: 1px solid var(--color-teal); + color: var(--color-teal); +} + +swp-btn.outline:hover { + background: color-mix(in srgb, var(--color-teal) 10%, transparent); +} + +/* ========================================== + EMPTY STATE + ========================================== */ +swp-empty-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 48px 24px; + text-align: center; +} + +swp-empty-state i { + font-size: 48px; + color: var(--color-text-secondary); + margin-bottom: 16px; + opacity: 0.5; +} + +swp-empty-state p { + font-size: 14px; + color: var(--color-text-secondary); +} + +/* ========================================== + RESPONSIVE + ========================================== */ +@media (max-width: 1024px) { + swp-plan-grid { + grid-template-columns: 1fr; + } + + swp-billing-grid { + grid-template-columns: 1fr; + } +} + +@media (max-width: 768px) { + swp-page-container { + padding: 16px; + } + + swp-table-card { + overflow-x: auto; + } + + swp-table { + min-width: 600px; + } +} diff --git a/wwwroot/poc-dashboard copy.html b/wwwroot/poc-dashboard copy.html new file mode 100644 index 0000000..5f93f61 --- /dev/null +++ b/wwwroot/poc-dashboard copy.html @@ -0,0 +1,1385 @@ + + + + + + Dashboard - Salon OS + + + + + + + + + Dashboard + + + + + Mandag, 30. december 2024 + + + + Ny booking + + + + + + + + + 12 + Bookinger i dag + + + 4 gennemført, 2 i gang + + + + 8.450 kr + Forventet omsætning + + + +12% vs. gennemsnit + + + + 78% + Belægningsgrad + + + God kapacitet + + + + 3 + Kræver opmærksomhed + + + + + + + + + + + + AI Analyse + + + Godt i gang! 4 af 12 bookinger er gennemført. 2 er i gang nu, og 6 venter. + Forventet omsætning: 8.450 kr – allerede realiseret 2.150 kr. + Tip: Ida Rasmussen (11:30) har ikke bekræftet – overvej at sende en påmindelse. + + + + + + + + + + Dagens bookinger + + Se alle + + + + + Nu: 10:45 + + + + + + + 08:00 + 08:30 + + + + Herreklip + Thomas Berg + + + MH + Maria + + Gennemført + + + + + 08:30 + 09:00 + + + + Dameklip + Katrine Holm + + + AS + Anna + + Gennemført + + + + + 09:00 + 09:30 + + + + Skægtrimning + Mikkel Skov + + + PK + Peter + + Gennemført + + + + + 09:00 + 10:30 + + + + Dameklip + Farve + Sofie Nielsen + + + AS + Anna + + Gennemført + + + + + + 10:30 + 11:00 + + + + Herreklip + Jonas Petersen + + + MH + Maria + + I gang + + + + + 10:00 + 11:00 + + + + Føn + Styling + Rikke Dam + + + LJ + Louise + + I gang + + + + + + 11:00 + 12:00 + + + + Balayage + Emma Christensen + + + AS + Anna + + Bekræftet + + + + + 11:30 + 12:00 + + + + Dameklip + Ida Rasmussen + + + MH + Maria + + Afventer + + + + + 13:00 + 14:00 + + + + Farve + Føn + Louise Andersen + + + AS + Anna + + Bekræftet + + + + + 14:00 + 14:30 + + + + Herreklip + Anders Møller + + + PK + Peter + + Bekræftet + + + + + 15:30 + 16:30 + + + + Extensions + Julie Lund + + + LJ + Louise + + Bekræftet + + + + + + + + + + Opmærksomheder + + + + + + + + + + Aflyst booking + Mette Hansen aflyste kl. 15:00 – tid nu ledig + + Fyld tid + + + + + + + + Ubekræftet booking + Ida Rasmussen har ikke bekræftet kl. 11:30 + + Send påmindelse + + + + + + + + Gavekort udløber snart + GC-D2R4-6TY9 udløber om 3 uger (200 DKK) + + Se gavekort + + + + + + + + + + + + + Notifikationer + + Marker alle som læst + + + + + + + + + + Ny booking fra Emma Christensen til Balayage + + For 15 min. siden + + + + + + + + + + Ny anmeldelse – 5 stjerner fra Sofie Nielsen + + For 1 time siden + + + + + + + + + + Aflysning – Mette Hansen aflyste kl. 15:00 + + For 2 timer siden + + + + + + + + + + Bekræftet – Louise Andersen bekræftede kl. 13:00 + + I går kl. 18:30 + + + + + + + + + + + Denne uge + + + + + + 47 + Bookinger + + + 38.200 kr + Omsætning + + + 8 + Nye kunder + + + 72% + Gns. belægning + + + + + + + + + + Medarbejdere + + + + + + AS + + Anna Sørensen + Ledig til kl. 11:00 (Balayage) + + Ledig + + + + MH + + Maria Hansen + Herreklip med Jonas + + Optaget + + + + LJ + + Louise Jensen + Føn + Styling med Rikke + + Optaget + + + + PK + + Peter Kristensen + Ledig til kl. 14:00 + + Ledig + + + + + + + + + + diff --git a/wwwroot/poc-dashboard.html b/wwwroot/poc-dashboard.html index e0132bd..dda530a 100644 --- a/wwwroot/poc-dashboard.html +++ b/wwwroot/poc-dashboard.html @@ -6,891 +6,13 @@ Dashboard - Salon OS - + - - - - Dashboard - - + + + Dashboard + Mandag, 30. december 2024 @@ -899,18 +21,18 @@ Ny booking - - + + - 4 / 12 - Bookinger gennemført + 12 + Bookinger i dag - 8 tilbage i dag + 4 gennemført, 2 i gang diff --git a/wwwroot/poc-indstillinger.html b/wwwroot/poc-indstillinger.html new file mode 100644 index 0000000..7252e03 --- /dev/null +++ b/wwwroot/poc-indstillinger.html @@ -0,0 +1,2319 @@ + + + + + + Indstillinger - Salon Beauty + + + + + + + + + + Indstillinger + + + + + Gem alle ændringer + + + + + + + + + Virksomhed + + + + Åbningstider + + + + Kalender + + + + Online Booking + + + + Faktura & Kvittering + + + + Påmindelser + + + + + + + + + + Grundlæggende oplysninger + + + + + + Virksomhedsnavn + Salon Beauty + + + CVR-nummer + 12345678 + + + Adresse + Hovedgaden 123 + + + Postnummer + 2100 + + + By + København Ø + + + Telefon + 70 20 30 40 + + + Email + info@salonbeauty.dk + + + Website (valgfri) + https://salonbeauty.dk + + + + + + + + + + + + + Åbningstider + + + + + + Mandag + + Ja + Nej + + + + til + + + + + Tirsdag + + Ja + Nej + + + + til + + + + + Onsdag + + Ja + Nej + + + + til + + + + + Torsdag + + Ja + Nej + + + + til + + + + + Fredag + + Ja + Nej + + + + til + + + + + Lørdag + + Ja + Nej + + + + til + + + + + Søndag + + Ja + Nej + + Lukket + + + + + + + + + + + + + Kalenderindstillinger + + + + + + Standard visning + + + + + + Første dag i ugen + + + + + + Tidsinterval + + + + + + Vis weekender + + Ja + Nej + + + + Arbejdstid fra + + + + + + Arbejdstid til + + + + + + + + + + + + + +

Din booking-side er tilgængelig for kunder. Del linket på din hjemmeside, sociale medier eller i din email-signatur.

+
+ + + + + + Booking URL + + + + + + + + + + + + + + + + + Booking-indstillinger + + + + + + Aktivér online booking + Tillad kunder at booke tider online + + + Ja + Nej + + + + + Tillad online aflysning + Kunder kan selv aflyse deres booking + + + Ja + Nej + + + + + + + + Book frem i tiden + + + + + + Minimum tid før booking + + + + + + Aflysningsfrist + + + + + + + +
+ + + + + +

Kvittering printes efter betaling i butikken. Faktura sendes til kunder der betaler senere.

+
+ + + + + + Virksomhedsoplysninger + + + + + + Firmanavn (juridisk) + Salon Beauty ApS + + + CVR-nummer + 12345678 + + + Adresse + Hovedgaden 123, 2100 København Ø + + + + + + + + + + Bankoplysninger (kun faktura) + + + + + + Registreringsnr. + 1234 + + + Kontonummer + 12345678 + + + IBAN (valgfri) + DK00 0000 0000 0000 00 + + + MobilePay (valgfri) + 12345678 + + + Betalingsbetingelser + + + + + + + + + + + + + Vis på print + + + + + Vis CVR-nummer + + Ja + Nej + + + + Vis telefonnummer + + Ja + Nej + + + + Vis website + + Ja + Nej + + + + Vis logo + + Ja + Nej + + + + + + + + + + Tekster + + + + + + Header-tekst + Tak for dit besøg! + + +
+ Footer-tekst + Åbningstider: Man-Fre 9-18, Lør 10-14 +Vi glæder os til at se dig igen! +
+
+ Faktura-tekst + Ved betaling bedes fakturanummer angivet. +Tak for din handel! +
+
+
+
+ + + + + + + + + + Email + + + + + + + + Ja + Nej + + + Bekræftelse + Sendes når en aftale er booket + + + Rediger + + + + + + Ja + Nej + + + Påmindelse + Sendes inden aftalen + + + Rediger + + + + + + Ja + Nej + + + Aflysning + Sendes når en aftale er aflyst + + + Rediger + + + + + + Ja + Nej + + + Flytning + Sendes når en aftale er flyttet + + + Rediger + + + + Email-påmindelser er gratis. + + + + + + + + + SMS + + + + + + + + Ja + Nej + + + + Bekræftelse online + (0,49 kr.) + + Sendes ved online booking + + + Rediger + + + + + + Ja + Nej + + + + Bekræftelse manuelt + (0,49 kr.) + + Ved oprettelse i kalender + + + Rediger + + + + + + Ja + Nej + + + + Påmindelse + (Premium) + + Sendes inden aftalen + + + Rediger + + + + + + + + Påmindelse sendes + + + + + + Sendes mellem + + + + + + + + + + + + + + + + + +

Bekræftelse

+ SMS · Sendes ved booking +
+ + + +
+ + + + Besked + Hej {kunde_navn}! + +Din tid er bekræftet: +{behandling} +{dato} kl. {tid} + +Hos {medarbejder} +{firma_navn}, {firma_adresse} + +Vil du ændre din tid? {booking_link} + + + + Indsæt variabel + + kunde_navn + behandling + dato + tid + medarbejder + firma_navn + firma_adresse + firma_tlf + booking_link + + + + + Forhåndsvisning + + Hej Anna Jensen!

+ Din tid er bekræftet:
+ Dameklip + Føn
+ Torsdag d. 2. januar kl. 14:30

+ Hos Maria
+ Salon Beauty, Hovedgaden 123

+ Vil du ændre din tid? book.plantempus.dk/x7k2 +
+ + 312 tegn + 2 SMS (0,98 kr.) + +
+
+ + + Annuller + + + Gem besked + + +
+ + + + + + +

Bekræftelse

+ Email · Sendes når en aftale er booket +
+ + + +
+ + + + + + + + Email emne + Din tid hos Salon Beauty er bekræftet + + + + Overskrift + Tid bekræftet! + + + + Velkomst + Hej {kunde_navn}, + + + + Brødtekst + Vi glæder os til at se dig! Her er detaljerne for din aftale. + + + + Knap tekst + Se eller ændr din tid + + + + Primær farve + + + #00897b + + + + + + Variabler + + kunde_navn + behandling + dato + tid + medarbejder + + + + + + + + + SB +

Tid bekræftet!

+

Salon Beauty

+
+ + + Hej Anna, + + Vi glæder os til at se dig! Her er detaljerne for din aftale. + + + + + Dameklip + Føn + + + + Torsdag d. 2. januar 2025 + + + + Kl. 14:3015:15 + + + + Hos Maria + + + + Hovedgaden 123, 2100 København Ø + + + + + Se eller ændr din tid + + + + + Salon Beauty +

Hovedgaden 123, 2100 København Ø

+

Tlf: 70 20 30 40 · info@salonbeauty.dk

+

+ Afmeld emails +

+
+
+
+
+
+ + + Annuller + + + Gem skabelon + + +
+ + + + + diff --git a/wwwroot/poc-konto.html b/wwwroot/poc-konto.html new file mode 100644 index 0000000..35442d1 --- /dev/null +++ b/wwwroot/poc-konto.html @@ -0,0 +1,635 @@ + + + + + + Abonnement & Konto - Salon OS + + + + + + + + + + + + +

Abonnement & Konto

+

Administrer dit abonnement, brugere og betalingsinfo

+
+
+ + + + + + + Dit abonnement + + + + + + + Basis + 1-3 brugere + + 299 + kr/md + + + + + Op til 3 brugere + + + + Online booking + + + + Kalender & aftalestyring + + + + Kundekartotek + + + + SMS-påmindelser + + + + Skift til Basis + + + + + + + + Nuværende plan + + Pro + 4-8 brugere + + 599 + kr/md + + + + + Op til 8 brugere + + + + Alt fra Basis + + + + Lagerstyring + + + + Avancerede rapporter + + + + Gavekort & klippekort + + + + Prioriteret support + + + + Nuværende plan + + + + + + + + Til større saloner + + Enterprise + 8+ brugere + + Kontakt os + + + + + Ubegrænset antal brugere + + + + Alt fra Pro + + + + Flere lokationer + + + + Tilpasset integration + + + + Dedikeret kontaktperson + + + + SLA & uptime garanti + + + + Kontakt salg + + + + + + + + + + + Brugere + + + + + + 5 af 8 brugere + + + + + + + Inviter bruger + + + + + + + + Bruger + Rolle + Status + Sidst aktiv + + + + + + + + + MJ + + Maria Jensen + maria@salonbeauty.dk + + + + + Ejer + + + + + Aktiv + + + I dag, 14:32 + + + + + + + + + + + + + + AS + + Anna Sørensen + anna@salonbeauty.dk + + + + + Admin + + + + + Aktiv + + + I dag, 12:15 + + + + + + + + + + + + + + + + + LP + + Louise Pedersen + louise@salonbeauty.dk + + + + + Medarbejder + + + + + Aktiv + + + I går, 17:45 + + + + + + + + + + + + + + + + + KN + + Katrine Nielsen + katrine@salonbeauty.dk + + + + + Medarbejder + + + + + Aktiv + + + 27. dec, 09:30 + + + + + + + + + + + + + + + + + SH + + Sofie Hansen + sofie@salonbeauty.dk + + + + + Medarbejder + + + + + Invitation sendt + + + - + + + + + + + + + + + + + + + + + + + + + + Betaling & Fakturaer + + + + + + + + + + + + Visa + **** **** **** 4582 + + + + Skift + + + + + Betalingsfrekvens + Månedlig + + + + Næste betaling + 1. januar 2026 + + + + Beløb + 599,00 kr + + + + Kortudløb + 08/2027 + + + + + Skift til årlig betaling (spar 15%) + + + + + + + Faktura-historik + + + + + + Dato + Fakturanr. + Beløb + Status + + + + + + 1. dec 2025 + INV-2025-0012 + 599,00 kr + + + + + + + PDF + + + + + + 1. nov 2025 + INV-2025-0011 + 599,00 kr + + + + + + + PDF + + + + + + 1. okt 2025 + INV-2025-0010 + 599,00 kr + + + + + + + PDF + + + + + + 1. sep 2025 + INV-2025-0009 + 599,00 kr + + + + + + + PDF + + + + + + 1. aug 2025 + INV-2025-0008 + 599,00 kr + + + + + + + PDF + + + + + + + + + +
+ + + diff --git a/wwwroot/poc-layout copy.html b/wwwroot/poc-layout copy.html new file mode 100644 index 0000000..a24a9a2 --- /dev/null +++ b/wwwroot/poc-layout copy.html @@ -0,0 +1,2509 @@ + + + + + + Salon OS + + + + + + + + + + + Salon OS + + + + + + + + + Dashboard + + + Dashboard + + + + Kalender + + + + Kasse + + + + + + Data + + + Produkter & Lager + + + + Leverandører + + + + Kunder + + + + Medarbejdere + + + + + + Analyse + + + Statistik & Rapporter + + + + + + System + + + Indstillinger + + + + Abonnement & Konto + + + + + + + + Lås skærm + + + + + + + + + + ⌘K + + + + + + + 3 + + + + + + + MJ + + Maria Jensen + Administrator + + + + + + + + + + Dashboard + + Vælg et menupunkt i venstre side for at navigere til den ønskede sektion. +

+ Prøv f.eks. Produkter & Lager eller Leverandører. +
+
+
+
+ + + + + + Min profil + + + + + + + + MJ + Maria Jensen + Administrator + maria@salon.dk + + + + Konto + + + Rediger profil + + + + + Skift adgangskode + + + + + Notifikationer + 3 ulæste + + + + Mine opgaver + 2 i dag + + + + + Udseende + + + + + + + + + + + + Support + + + Hjælp & Support + + + + + Om Salon OS + v2.1.0 + + + + + + + + Log ud + + + + + + + + Notifikationer + + Marker alle læst + + + + + + + + + + + + + + Ny booking + Maria Hansen har booket klipning kl. 14:00 + For 5 min siden + + + + + + + + + + Kunde feedback + 5 stjerner fra Jonas Petersen + For 15 min siden + + + + + + + + + + Misset opkald + +45 12 34 56 78 + For 1 time siden + + + + + + + + + + Ny mail + Fra: leverandoer@produkt.dk - Ordrebekræftelse + For 2 timer siden + + + + + + + + + + Ny besked i chat + Kunde: "Hej, kan jeg ændre min tid?" + For 3 timer siden + + + + + + + + + + Påmindelse + Bestil varer fra Wella inden fredag + I går + + + + + + + + + + + + Mine opgaver + + + + + + + + + + + + + I dag + 3 + + + + + + + + Ring til leverandør om ordre + + + + 10:00 + + + + + + + + + + Bestil shampoo fra Wella + + + + + + + + Opdater prisliste for 2025 + + + + Høj + + + + + + + + + + + + Denne uge + 2 + + + + + + + + Rengør og vedligehold udstyr + + + + Onsdag + + + + + + + + + + Medarbejdersamtale med Jonas + + + + Fredag + + + + 14:00 + + + + + + + + + + + + + + + + + + + Ny opgave + + + + + + Opgave + + + + + + + Dato + + + + Tid + + + + + + + Prioritet + + + + + + Synlighed + + + + Kun mig + + + + Alle + + + + + + + Noter + + + + + + Annuller + Gem opgave + + + + + + + + + + Skærm låst + Indtast PIN for at fortsætte + + Låst kl. 14:32 + + + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + + 0 + + + + + + Indtast 4 cifre for at låse op + + + + + + + + + diff --git a/wwwroot/poc-layout.html b/wwwroot/poc-layout.html index a24a9a2..362e29b 100644 --- a/wwwroot/poc-layout.html +++ b/wwwroot/poc-layout.html @@ -6,6 +6,7 @@ Salon OS +