diff --git a/.workbench/image.png b/.workbench/image.png
index 477113e..b84e12f 100644
Binary files a/.workbench/image.png and b/.workbench/image.png differ
diff --git a/wwwroot/poc-gavekort-detail.html b/wwwroot/poc-gavekort-detail.html
new file mode 100644
index 0000000..013d74c
--- /dev/null
+++ b/wwwroot/poc-gavekort-detail.html
@@ -0,0 +1,1221 @@
+
+
+
+
+
+ Gavekort GC-A7X2-9KM4 - Salon OS
+
+
+
+
+
+
+
+
+
+
+ Gavekort
+
+ GC-A7X2-9KM4
+
+
+
+
+
+
+
+
+
+
+
+ Saldo
+
+ 350 DKK
+ af 500 DKK
+
+
+
+
+ 70% tilbage
+
+
+
+
+ Udløbsdato
+ 31. december 2025
+
+
+
+ Forlæng
+
+
+
+ Deaktiver
+
+
+
+
+
+
+ Tilføj værdi
+
+
+
+ Send på email
+
+
+
+
+
+
+ Gavekort info
+
+
+ Kode
+
+ GC-A7X2-9KM4
+
+
+
+
+
+
+ Status
+
+ Delvist brugt
+
+
+
+ Oprettet
+ 15. januar 2024
+
+
+ Original værdi
+ 500 DKK
+
+
+
+
+
+
+ Transaktioner
+
+
+ Dato
+ Beskrivelse
+ Beløb
+ Saldo
+
+
+ 22/2-24
+
+
+ Indløst ved booking
+
+ Faktura #1847 · Maria Hansen
+
+
+
+ -150 DKK
+ 350 DKK
+
+
+ 15/1-24
+
+
+ Gavekort oprettet
+
+ Faktura #1652 · Signe Larsen
+
+
+
+ +500 DKK
+ 500 DKK
+
+
+
+
+
+
+
+
+
+ Modtager
+
+
+ Maria Hansen
+
+
+
+ maria@example.com
+
+
+
+ +45 12 34 56 78
+
+
+
+ Send gavekort på email
+
+
+
+
+
+ Intern note
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Email preview
+
+
+
+
+
+
+
+ Du har modtaget et gavekort!
+
+ 500 DKK
+ GC-A7X2-9KM4
+
+ Din besked vises her...
+
+ Med venlig hilsen
+ Salon Glamour
+
+
+
+ Gyldig til: 31. december 2025
+ Kan bruges hos: Salon Glamour
+
+
+
+
+
+
+
+
+ Send gavekort
+
+
+
+
+
+
+
+ Modtager email
+
+
+
+
+ Personlig besked
+
+
+
+
+ Afsender navn
+
+
+
+
+
+ Annuller
+
+
+ Send email
+
+
+
+
+
+
+
diff --git a/wwwroot/poc-gavekort.html b/wwwroot/poc-gavekort.html
new file mode 100644
index 0000000..2338e8d
--- /dev/null
+++ b/wwwroot/poc-gavekort.html
@@ -0,0 +1,1203 @@
+
+
+
+
+
+ Gavekort - Salon OS
+
+
+
+
+
+
+
+
+ Gavekort
+
+
+
+
+ Opret gavekort
+
+
+
+
+
+
+
+
+ 47
+ Aktive gavekort
+
+
+ 23.500 DKK
+ Samlet saldo
+
+
+ 18.230 DKK
+ Indløst i år
+
+
+ 5
+ Udløber inden 30 dage
+
+
+
+
+
+
+
+
+
+
+ Status
+
+
+
+ Sortering
+
+
+
+
+
+
+
+ Gavekort
+ Modtager
+ Original
+ Saldo
+ Status
+ Udløber
+
+
+
+
+
+
+ GC-A7X2-9KM4
+ Oprettet 15. jan 2024
+
+
+
+
+ Maria Hansen
+ maria@example.com
+
+
+ 500 DKK
+
+
+ 350 DKK
+
+
+
+
+
+ Delvist brugt
+ 31. dec 2025
+
+
+
+
+
+
+ GC-B3K9-2LM7
+ Oprettet 20. dec 2024
+
+
+
+
+ Ikke tildelt
+
+
+ 1.000 DKK
+
+
+ 1.000 DKK
+
+
+
+
+
+ Aktiv
+ 15. jun 2025
+
+
+
+
+
+
+ GC-C5P1-8NQ3
+ Oprettet 10. nov 2024
+
+
+
+
+ Jonas Petersen
+ jonas.p@mail.dk
+
+
+ 250 DKK
+
+
+ 0 DKK
+
+
+
+
+
+ Opbrugt
+ 1. mar 2025
+
+
+
+
+
+
+ GC-D2R4-6TY9
+ Oprettet 5. sep 2024
+
+
+
+
+ Anne Nielsen
+ anne.nielsen@email.dk
+
+
+ 750 DKK
+
+
+ 200 DKK
+
+
+
+
+
+ Delvist brugt
+ 20. jan 2025
+
+
+
+
+
+
+ GC-E8W3-4VX1
+ Oprettet 1. jun 2024
+
+
+
+
+ Ikke tildelt
+
+
+ 500 DKK
+
+
+ 500 DKK
+
+
+
+
+
+ Udløbet
+ 1. dec 2024
+
+
+
+
+
+
+ GC-F9Q7-3WK5
+ Oprettet 28. dec 2024
+
+
+
+
+ Sofie Larsen
+ sofie.l@gmail.com
+
+
+ 300 DKK
+
+
+ 300 DKK
+
+
+
+
+
+ Aktiv
+ 28. dec 2025
+
+
+
+
+ Viser 6 af 47 gavekort
+ Side 1 af 8
+
+
+
+
+
+
+
+
+
+
+ Opret gavekort
+
+
+
+
+
+
+
+ Gavekortkode
+
+
+
+
+
+
+ Lad mig vælge egen kode
+
+
+
+
+ Værdi
+
+
+ 100 DKK
+ 250 DKK
+ 500 DKK
+ 1.000 DKK
+
+
+
+
+ Udløbsdato
+
+ Standard: 1 år fra oprettelse
+
+
+ Modtager (valgfri)
+
+
+ Søg eksisterende kunde
+
+
+
+
+
+
+ eller indtast manuelt
+
+
+ Modtagers navn
+
+
+
+
+ Email
+
+
+
+
+ Intern note
+
+
+
+
+
+ Annuller
+ Opret gavekort
+
+
+
+
+
+
diff --git a/wwwroot/poc-layout.html b/wwwroot/poc-layout.html
index b025832..a24a9a2 100644
--- a/wwwroot/poc-layout.html
+++ b/wwwroot/poc-layout.html
@@ -61,6 +61,7 @@
/* Layout */
--side-menu-width: 240px;
+ --side-menu-width-collapsed: 64px;
--topbar-height: 56px;
}
@@ -172,6 +173,32 @@
color: var(--color-text);
}
+ swp-menu-toggle {
+ margin-left: auto;
+ width: 28px;
+ height: 28px;
+ 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-menu-toggle:hover {
+ background: var(--color-background-hover);
+ color: var(--color-text);
+ }
+
+ swp-menu-toggle i {
+ font-size: 18px;
+ color: inherit;
+ transition: transform 200ms ease;
+ }
+
swp-side-menu-nav {
flex: 1;
padding: 12px 0;
@@ -265,6 +292,79 @@
font-size: 18px;
}
+ /* ==========================================
+ SIDE MENU - COLLAPSED STATE
+ ========================================== */
+ swp-app-layout {
+ transition: grid-template-columns 200ms ease;
+ }
+
+ swp-app-layout.menu-collapsed {
+ grid-template-columns: var(--side-menu-width-collapsed) 1fr;
+ }
+
+ swp-app-layout.menu-collapsed swp-side-menu {
+ overflow: visible;
+ }
+
+ swp-app-layout.menu-collapsed swp-side-menu-logo,
+ swp-app-layout.menu-collapsed swp-side-menu-label,
+ swp-app-layout.menu-collapsed swp-side-menu-item span,
+ swp-app-layout.menu-collapsed swp-side-menu-action span {
+ display: none;
+ }
+
+ swp-app-layout.menu-collapsed swp-side-menu-header {
+ justify-content: center;
+ padding: 0;
+ }
+
+ swp-app-layout.menu-collapsed swp-menu-toggle {
+ margin-left: 0;
+ }
+
+ swp-app-layout.menu-collapsed swp-menu-toggle i {
+ transform: rotate(180deg);
+ }
+
+ swp-app-layout.menu-collapsed swp-side-menu-item {
+ justify-content: center;
+ padding: 12px;
+ border-left: none;
+ position: relative;
+ }
+
+ swp-app-layout.menu-collapsed swp-side-menu-item[data-active="true"] {
+ border-left: none;
+ border-radius: 8px;
+ margin: 0 8px;
+ }
+
+ swp-app-layout.menu-collapsed swp-side-menu-action {
+ justify-content: center;
+ padding: 12px;
+ }
+
+ swp-app-layout.menu-collapsed swp-side-menu-footer {
+ padding: 12px 8px;
+ }
+
+ /* Popover tooltip for collapsed menu */
+ .swp-menu-tooltip {
+ position: fixed;
+ margin: 0;
+ padding: 6px 12px;
+ background: var(--color-surface);
+ border: 1px solid var(--color-border);
+ border-radius: 6px;
+ font-size: 13px;
+ font-family: var(--font-family);
+ color: var(--color-text);
+ white-space: nowrap;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+ pointer-events: none;
+ }
+
/* ==========================================
TOP BAR
========================================== */
@@ -598,55 +698,45 @@
color: var(--color-text-secondary);
}
- /* Theme toggle in drawer */
- swp-drawer-theme-toggle {
+ /* Theme toggle in drawer - two icons */
+ swp-theme-toggle {
+ display: flex;
+ border: 1px solid var(--color-border);
+ border-radius: 8px;
+ overflow: hidden;
+ }
+
+ swp-theme-option {
+ flex: 1;
display: flex;
align-items: center;
- justify-content: space-between;
+ justify-content: center;
padding: 12px;
background: var(--color-background-alt);
- border-radius: 8px;
+ cursor: pointer;
+ transition: all 150ms ease;
}
- swp-drawer-theme-toggle swp-drawer-item-text {
- display: flex;
- align-items: center;
- gap: 12px;
+ swp-theme-option:first-child {
+ border-right: 1px solid var(--color-border);
}
- swp-drawer-theme-toggle i {
+ swp-theme-option i {
font-size: 20px;
color: var(--color-text-secondary);
+ transition: color 150ms ease;
}
- swp-theme-switch {
- width: 44px;
- height: 24px;
- background: var(--color-border);
- border-radius: 12px;
- position: relative;
- cursor: pointer;
- transition: background 200ms ease;
+ swp-theme-option:hover {
+ background: var(--color-background-hover);
}
- swp-theme-switch::after {
- content: '';
- position: absolute;
- top: 2px;
- left: 2px;
- width: 20px;
- height: 20px;
- background: white;
- border-radius: 50%;
- transition: transform 200ms ease;
+ swp-theme-option.active {
+ background: color-mix(in srgb, var(--color-teal) 12%, transparent);
}
- swp-theme-switch.active {
- background: var(--color-teal);
- }
-
- swp-theme-switch.active::after {
- transform: translateX(20px);
+ swp-theme-option.active i {
+ color: var(--color-teal);
}
/* Drawer footer */
@@ -692,6 +782,628 @@
font-size: 18px;
}
+ /* ==========================================
+ NOTIFICATION DRAWER
+ ========================================== */
+ swp-notification-drawer {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ width: 380px;
+ background: var(--color-surface);
+ border-left: 1px solid var(--color-border);
+ box-shadow: -2px 0 8px rgba(0, 0, 0, 0.1);
+ transform: translateX(100%);
+ transition: transform 200ms ease;
+ display: flex;
+ flex-direction: column;
+ z-index: 1000;
+ }
+
+ swp-notification-drawer.open {
+ transform: translateX(0);
+ }
+
+ swp-notification-drawer swp-drawer-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 14px 16px;
+ border-bottom: 1px solid var(--color-border);
+ background: var(--color-background-alt);
+ }
+
+ swp-drawer-header-actions {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ }
+
+ swp-mark-read-btn {
+ padding: 6px 12px;
+ font-size: 12px;
+ font-family: var(--font-family);
+ color: var(--color-teal);
+ background: transparent;
+ border: 1px solid var(--color-teal);
+ border-radius: 6px;
+ cursor: pointer;
+ transition: all 150ms ease;
+ }
+
+ swp-mark-read-btn:hover {
+ background: var(--color-teal);
+ color: white;
+ }
+
+ swp-notification-drawer swp-drawer-content {
+ flex: 1;
+ overflow-y: auto;
+ padding: 12px;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ }
+
+ swp-notification-item {
+ display: flex;
+ gap: 12px;
+ padding: 12px;
+ border-radius: 8px;
+ cursor: pointer;
+ transition: background 150ms ease;
+ background: transparent;
+ }
+
+ swp-notification-item:hover {
+ background: var(--color-background-hover);
+ }
+
+ swp-notification-item[data-unread="true"] {
+ background: var(--color-background-alt);
+ }
+
+ swp-notification-item[data-unread="true"]::before {
+ content: '';
+ position: absolute;
+ left: 4px;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 6px;
+ height: 6px;
+ background: var(--color-teal);
+ border-radius: 50%;
+ }
+
+ swp-notification-icon {
+ width: 40px;
+ height: 40px;
+ border-radius: 10px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-shrink: 0;
+ }
+
+ swp-notification-icon i {
+ font-size: 20px;
+ }
+
+ swp-notification-icon.booking {
+ background: color-mix(in srgb, var(--color-teal) 15%, transparent);
+ color: var(--color-teal);
+ }
+
+ swp-notification-icon.smiley {
+ background: color-mix(in srgb, var(--color-amber) 15%, transparent);
+ color: var(--color-amber);
+ }
+
+ swp-notification-icon.call {
+ background: color-mix(in srgb, var(--color-blue) 15%, transparent);
+ color: var(--color-blue);
+ }
+
+ swp-notification-icon.mail {
+ background: color-mix(in srgb, var(--color-purple) 15%, transparent);
+ color: var(--color-purple);
+ }
+
+ swp-notification-icon.chat {
+ background: color-mix(in srgb, var(--color-green) 15%, transparent);
+ color: var(--color-green);
+ }
+
+ swp-notification-icon.reminder {
+ background: color-mix(in srgb, var(--color-red) 15%, transparent);
+ color: var(--color-red);
+ }
+
+ swp-notification-content {
+ flex: 1;
+ min-width: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+ }
+
+ swp-notification-title {
+ font-weight: 500;
+ font-size: 14px;
+ color: var(--color-text);
+ }
+
+ swp-notification-text {
+ font-size: 13px;
+ color: var(--color-text-secondary);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ swp-notification-time {
+ font-size: 11px;
+ color: var(--color-text-secondary);
+ margin-top: 2px;
+ }
+
+ swp-notification-empty {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 48px 24px;
+ text-align: center;
+ color: var(--color-text-secondary);
+ }
+
+ swp-notification-empty i {
+ font-size: 48px;
+ margin-bottom: 12px;
+ opacity: 0.5;
+ }
+
+ /* ==========================================
+ TODO DRAWER
+ ========================================== */
+ swp-todo-drawer {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ width: 380px;
+ background: var(--color-surface);
+ border-left: 1px solid var(--color-border);
+ box-shadow: -2px 0 8px rgba(0, 0, 0, 0.1);
+ transform: translateX(100%);
+ transition: transform 200ms ease;
+ display: flex;
+ flex-direction: column;
+ z-index: 1001;
+ }
+
+ swp-todo-drawer.open {
+ transform: translateX(0);
+ }
+
+ /* New Todo Drawer - slides from left of todo drawer */
+ swp-new-todo-drawer {
+ position: fixed;
+ top: 0;
+ right: 380px;
+ bottom: 0;
+ width: 340px;
+ background: var(--color-surface);
+ border-left: 1px solid var(--color-border);
+ box-shadow: -2px 0 8px rgba(0, 0, 0, 0.1);
+ transform: translateX(100%);
+ opacity: 0;
+ pointer-events: none;
+ transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1),
+ opacity 200ms ease;
+ display: flex;
+ flex-direction: column;
+ z-index: 1000;
+ }
+
+ swp-new-todo-drawer.open {
+ transform: translateX(0);
+ opacity: 1;
+ pointer-events: auto;
+ }
+
+ swp-todo-drawer swp-drawer-header {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 14px 16px;
+ border-bottom: 1px solid var(--color-border);
+ background: var(--color-background-alt);
+ }
+
+ swp-todo-drawer swp-drawer-title {
+ flex: 1;
+ }
+
+ swp-drawer-back {
+ 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-drawer-back:hover {
+ background: var(--color-background-hover);
+ color: var(--color-text);
+ }
+
+ swp-drawer-back i {
+ font-size: 20px;
+ }
+
+ swp-add-todo-btn {
+ width: 32px;
+ height: 32px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--color-teal);
+ color: white;
+ border: none;
+ border-radius: 6px;
+ cursor: pointer;
+ transition: all 150ms ease;
+ }
+
+ swp-add-todo-btn:hover {
+ background: color-mix(in srgb, var(--color-teal) 85%, black);
+ }
+
+ swp-add-todo-btn i {
+ font-size: 18px;
+ }
+
+ swp-todo-drawer swp-drawer-content {
+ flex: 1;
+ overflow-y: auto;
+ padding: 16px;
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+ }
+
+ swp-todo-section {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ }
+
+ swp-todo-section-header {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 4px 0;
+ cursor: pointer;
+ }
+
+ swp-todo-section-header i {
+ font-size: 14px;
+ color: var(--color-text-secondary);
+ transition: transform 200ms ease;
+ }
+
+ swp-todo-section.collapsed swp-todo-section-header i {
+ transform: rotate(-90deg);
+ }
+
+ swp-todo-section.collapsed swp-todo-items {
+ display: none;
+ }
+
+ swp-todo-section-title {
+ font-size: 12px;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+ color: var(--color-text-secondary);
+ }
+
+ swp-todo-section-count {
+ font-size: 11px;
+ padding: 2px 6px;
+ background: var(--color-background);
+ border-radius: 10px;
+ color: var(--color-text-secondary);
+ }
+
+ swp-todo-items {
+ display: flex;
+ flex-direction: column;
+ gap: 6px;
+ }
+
+ swp-todo-item {
+ display: flex;
+ align-items: flex-start;
+ gap: 12px;
+ padding: 10px 12px;
+ background: var(--color-background-alt);
+ border-radius: 8px;
+ cursor: pointer;
+ transition: all 150ms ease;
+ }
+
+ swp-todo-item:hover {
+ background: var(--color-background-hover);
+ }
+
+ swp-todo-item[data-completed="true"] {
+ opacity: 0.6;
+ }
+
+ swp-todo-item[data-completed="true"] swp-todo-title {
+ text-decoration: line-through;
+ color: var(--color-text-secondary);
+ }
+
+ swp-todo-checkbox {
+ width: 20px;
+ height: 20px;
+ border: 2px solid var(--color-border);
+ border-radius: 4px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-shrink: 0;
+ margin-top: 1px;
+ transition: all 150ms ease;
+ }
+
+ swp-todo-checkbox i {
+ font-size: 14px;
+ color: white;
+ opacity: 0;
+ }
+
+ swp-todo-item[data-completed="true"] swp-todo-checkbox {
+ background: var(--color-teal);
+ border-color: var(--color-teal);
+ }
+
+ swp-todo-item[data-completed="true"] swp-todo-checkbox i {
+ opacity: 1;
+ }
+
+ swp-todo-content {
+ flex: 1;
+ min-width: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ }
+
+ swp-todo-title {
+ font-size: 14px;
+ color: var(--color-text);
+ }
+
+ swp-todo-meta {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ font-size: 12px;
+ color: var(--color-text-secondary);
+ }
+
+ swp-todo-meta i {
+ font-size: 14px;
+ }
+
+ swp-todo-time {
+ display: flex;
+ align-items: center;
+ gap: 4px;
+ }
+
+ swp-todo-priority {
+ display: flex;
+ align-items: center;
+ gap: 4px;
+ }
+
+ swp-todo-priority.high {
+ color: var(--color-red);
+ }
+
+ swp-todo-priority.low {
+ color: var(--color-text-secondary);
+ opacity: 0.7;
+ }
+
+ swp-todo-date {
+ display: flex;
+ align-items: center;
+ gap: 4px;
+ }
+
+ /* New Todo Drawer - Header */
+ swp-new-todo-drawer swp-drawer-header {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 14px 16px;
+ border-bottom: 1px solid var(--color-border);
+ background: var(--color-background-alt);
+ }
+
+ swp-new-todo-drawer swp-drawer-title {
+ flex: 1;
+ }
+
+ swp-new-todo-drawer swp-drawer-content {
+ flex: 1;
+ overflow-y: auto;
+ padding: 16px;
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+ }
+
+ /* Form Elements - matches detail-drawer patterns */
+ swp-new-todo-drawer swp-section-label {
+ display: block;
+ font-size: 11px;
+ font-weight: 400;
+ color: var(--color-text-secondary);
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+ margin-bottom: 8px;
+ }
+
+ swp-new-todo-drawer swp-form-field {
+ display: block;
+ }
+
+ swp-new-todo-drawer swp-form-row {
+ display: flex;
+ gap: 12px;
+ }
+
+ swp-new-todo-drawer swp-form-row swp-form-field {
+ flex: 1;
+ }
+
+ swp-new-todo-drawer input[type="text"],
+ swp-new-todo-drawer input[type="date"],
+ swp-new-todo-drawer input[type="time"],
+ swp-new-todo-drawer select,
+ swp-new-todo-drawer textarea {
+ width: 100%;
+ padding: 10px 12px;
+ font-size: 14px;
+ font-family: var(--font-family);
+ color: var(--color-text);
+ background: var(--color-background-alt);
+ border: 1px solid var(--color-border);
+ border-radius: 4px;
+ outline: none;
+ transition: border-color 150ms ease;
+ }
+
+ swp-new-todo-drawer input:focus,
+ swp-new-todo-drawer select:focus,
+ swp-new-todo-drawer textarea:focus {
+ border-color: var(--color-teal);
+ }
+
+ swp-new-todo-drawer input::placeholder,
+ swp-new-todo-drawer textarea::placeholder {
+ color: var(--color-text-secondary);
+ }
+
+ swp-new-todo-drawer select {
+ cursor: pointer;
+ 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 11.32-11.32L128 164.69l74.34-74.35a8 8 0 0 1 11.32 11.32Z'/%3E%3C/svg%3E");
+ background-repeat: no-repeat;
+ background-position: right 10px center;
+ padding-right: 36px;
+ }
+
+ swp-new-todo-drawer textarea {
+ resize: none;
+ min-height: 80px;
+ }
+
+ /* Visibility toggle */
+ swp-visibility-toggle {
+ display: flex;
+ border: 1px solid var(--color-border);
+ border-radius: 4px;
+ overflow: hidden;
+ }
+
+ swp-visibility-option {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 6px;
+ padding: 10px 12px;
+ font-size: 13px;
+ color: var(--color-text-secondary);
+ background: var(--color-background-alt);
+ cursor: pointer;
+ transition: all 150ms ease;
+ border: none;
+ }
+
+ swp-visibility-option:first-child {
+ border-right: 1px solid var(--color-border);
+ }
+
+ swp-visibility-option i {
+ font-size: 16px;
+ }
+
+ swp-visibility-option:hover {
+ background: var(--color-background-hover);
+ }
+
+ swp-visibility-option.active {
+ background: color-mix(in srgb, var(--color-teal) 12%, transparent);
+ color: var(--color-teal);
+ }
+
+ /* Footer with buttons */
+ swp-new-todo-drawer swp-drawer-footer {
+ padding: 16px;
+ border-top: 1px solid var(--color-border);
+ display: flex;
+ gap: 12px;
+ }
+
+ swp-new-todo-drawer swp-btn {
+ flex: 1;
+ padding: 10px 16px;
+ font-size: 14px;
+ font-weight: 500;
+ font-family: var(--font-family);
+ border-radius: 6px;
+ cursor: pointer;
+ transition: all 150ms ease;
+ text-align: center;
+ border: none;
+ }
+
+ swp-new-todo-drawer swp-btn.secondary {
+ background: transparent;
+ border: 1px solid var(--color-border);
+ color: var(--color-text-secondary);
+ }
+
+ swp-new-todo-drawer swp-btn.secondary:hover {
+ background: var(--color-background-hover);
+ color: var(--color-text);
+ }
+
+ swp-new-todo-drawer swp-btn.primary {
+ background: var(--color-teal);
+ color: white;
+ }
+
+ swp-new-todo-drawer swp-btn.primary:hover {
+ background: color-mix(in srgb, var(--color-teal) 85%, black);
+ }
+
/* ==========================================
LOCK SCREEN
========================================== */
@@ -899,74 +1611,77 @@
Salon OS
+
Dashboard
-
+
- Dashboard
+ Dashboard
-
+
- Kalender
+ Kalender
-
+
- Kasse
+ Kasse
Data
-
+
- Produkter & Lager
+ Produkter & Lager
-
+
- Leverandører
+ Leverandører
-
+
- Kunder
+ Kunder
-
+
- Medarbejdere
+ Medarbejdere
Analyse
-
+
- Statistik & Rapporter
+ Statistik & Rapporter
System
-
+
- Indstillinger
+ Indstillinger
-
+
- Abonnement & Konto
+ Abonnement & Konto
-
+
- Lås skærm
+ Lås skærm
@@ -1048,17 +1763,23 @@
Notifikationer
3 ulæste
+
+
+ Mine opgaver
+ 2 i dag
+
Udseende
-
-
+
+
+
+
+
- Mørkt tema
-
-
-
+
+
@@ -1084,6 +1805,301 @@
+
+
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+ Udført
+ 3
+
+
+
+
+
+
+
+ Send faktura til kunde
+
+
+
+
+
+
+
+ Opdater åbningstider på Google
+
+
+
+
+
+
+
+ Bestil nye håndklæder
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ny opgave
+
+
+
+
+
+ Opgave
+
+
+
+
+
+
+ Dato
+
+
+
+ Tid
+
+
+
+
+
+
+ Prioritet
+
+
+
+
+
+ Synlighed
+
+
+
+ Kun mig
+
+
+
+ Alle
+
+
+
+
+
+
+ Noter
+
+
+
+
+
+ Annuller
+ Gem opgave
+
+
+
@@ -1123,6 +2139,9 @@
+
+
+