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 + + + + + + + + + + + + + + + + + + + Ny opgave + + + + + + Opgave + + + + + + + Dato + + + + Tid + + + + + + + Prioritet + + + + + + Synlighed + + + + Kun mig + + + + Alle + + + + + + + Noter + + + + + + Annuller + Gem opgave + + + @@ -1123,6 +2139,9 @@ + + +