diff --git a/StandManager/Components/AppHeader.razor b/StandManager/Components/AppHeader.razor index ca0044c..b22fd73 100644 --- a/StandManager/Components/AppHeader.razor +++ b/StandManager/Components/AppHeader.razor @@ -14,6 +14,9 @@ + diff --git a/StandManager/Components/Layout/PublicLayout.razor b/StandManager/Components/Layout/PublicLayout.razor index ea596d5..2224f25 100644 --- a/StandManager/Components/Layout/PublicLayout.razor +++ b/StandManager/Components/Layout/PublicLayout.razor @@ -1,5 +1,4 @@ @inherits LayoutComponentBase -@using StandManager.Components.Pages.Management @Body diff --git a/StandManager/Components/Pages/ScanNew.razor b/StandManager/Components/Pages/ScanNew.razor new file mode 100644 index 0000000..a75a6c0 --- /dev/null +++ b/StandManager/Components/Pages/ScanNew.razor @@ -0,0 +1,104 @@ +@page "/activate-qr-scan" +@using StandManager.Components.Layout +@inject NavigationManager Nav + +@layout PublicLayout + +
+
+
+ + +
+ + +
+ + +
+ + +
+
+
+ + + + + + + +
+
+ +
+

Scan QR Code

+

+ Align the QR code within the frame to automatically detect and identify the client. +

+
+
+ + +
+
+ + + +
+ +
+
+ +
+
+
+ +@code { + [Parameter] public EventCallback Close { get; set; } + [Parameter] public EventCallback Help { get; set; } + [Parameter] public EventCallback Scan { get; set; } + [Parameter] public EventCallback Manual { get; set; } + + private async Task OnClose() + { + if (Close.HasDelegate) await Close.InvokeAsync(); + else Nav.NavigateTo("/"); + } + + private async Task OnHelp() + { + if (Help.HasDelegate) await Help.InvokeAsync(); + } + + private async Task OnScan() + { + if (Scan.HasDelegate) await Scan.InvokeAsync(); + // qui poi ci attacchi la logica di attivazione camera/scan + } + + private async Task OnManual() + { + if (Manual.HasDelegate) await Manual.InvokeAsync(); + // es: Nav.NavigateTo("/enter-code"); + } +} diff --git a/StandManager/Components/Pages/ScanNew.razor.css b/StandManager/Components/Pages/ScanNew.razor.css new file mode 100644 index 0000000..131b5cd --- /dev/null +++ b/StandManager/Components/Pages/ScanNew.razor.css @@ -0,0 +1,65 @@ +:root { + --sm-primary: #D63939; +} + +/* Override "primary" in modo locale (senza toccare tutto il tema) */ +.btn-primary { + background-color: var(--sm-primary) !important; + border-color: var(--sm-primary) !important; +} + +.btn-primary:hover { + filter: brightness(0.92); +} + +.qr-shell { + position: relative; + width: 160px; + height: 160px; + border-radius: 2.5rem; + display: grid; + place-items: center; + + background: color-mix(in srgb, var(--sm-primary) 10%, transparent); + box-shadow: 0 0 0 1px color-mix(in srgb, var(--sm-primary) 20%, transparent) inset; + color: var(--sm-primary); +} + +.qr-icon { + font-size: 80px; + line-height: 1; +} + +.qr-corner { + position: absolute; + width: 24px; + height: 24px; +} + +.qr-corner.tl { + top: -4px; left: -4px; + border-left: 4px solid var(--sm-primary); + border-top: 4px solid var(--sm-primary); + border-top-left-radius: 0.75rem; +} + +.qr-corner.tr { + top: -4px; right: -4px; + border-right: 4px solid var(--sm-primary); + border-top: 4px solid var(--sm-primary); + border-top-right-radius: 0.75rem; +} + +.qr-corner.bl { + bottom: -4px; left: -4px; + border-left: 4px solid var(--sm-primary); + border-bottom: 4px solid var(--sm-primary); + border-bottom-left-radius: 0.75rem; +} + +.qr-corner.br { + bottom: -4px; right: -4px; + border-right: 4px solid var(--sm-primary); + border-bottom: 4px solid var(--sm-primary); + border-bottom-right-radius: 0.75rem; +}