diff --git a/PointOfSale/Pos.Web/Components/Layout/MainLayout.razor b/PointOfSale/Pos.Web/Components/Layout/MainLayout.razor
index 0155e3d..6241b24 100644
--- a/PointOfSale/Pos.Web/Components/Layout/MainLayout.razor
+++ b/PointOfSale/Pos.Web/Components/Layout/MainLayout.razor
@@ -1,30 +1,11 @@
@inherits LayoutComponentBase
-
-
- Pos.Web
-
-
-
-
@Body
-
-
-
-
- Documentation and demos
-
-
-
- About Blazor
-
-
-
diff --git a/PointOfSale/Pos.Web/Components/Layout/NavMenu.razor b/PointOfSale/Pos.Web/Components/Layout/NavMenu.razor
deleted file mode 100644
index d573200..0000000
--- a/PointOfSale/Pos.Web/Components/Layout/NavMenu.razor
+++ /dev/null
@@ -1,8 +0,0 @@
-
- Home
- Counter
- Weather
-
-
-@code {
-}
diff --git a/PointOfSale/Pos.Web/Components/Pages/Counter.razor b/PointOfSale/Pos.Web/Components/Pages/Counter.razor
deleted file mode 100644
index afa2042..0000000
--- a/PointOfSale/Pos.Web/Components/Pages/Counter.razor
+++ /dev/null
@@ -1,20 +0,0 @@
-@page "/counter"
-
-
Counter
-
-
Counter
-
-
- Current count:
-
-
-
Click me
-
-@code {
- private int currentCount = 0;
-
- private void IncrementCount()
- {
- currentCount++;
- }
-}
diff --git a/PointOfSale/Pos.Web/Components/Pages/Home.razor b/PointOfSale/Pos.Web/Components/Pages/Home.razor
index 96714a2..6a7a04d 100644
--- a/PointOfSale/Pos.Web/Components/Pages/Home.razor
+++ b/PointOfSale/Pos.Web/Components/Pages/Home.razor
@@ -1,7 +1,58 @@
-@page "/"
+@rendermode InteractiveServer
+@implements IDisposable
+@using System.Globalization
+@inject NavigationManager Nav
+@page "/"
-
Home
+
+ Indstilinger
-Hello, world!
+
+
-Welcome to your new Fluent Blazor app.
\ No newline at end of file
+
+
+
+
+
+
+
+@code {
+ private readonly CultureInfo _danishCulture =
+ CultureInfo.GetCultureInfo("da-DK");
+
+ private readonly Timer _timer;
+ private DateTime _currentTime = DateTime.Now;
+
+ public Home()
+ {
+ _timer = new Timer(
+ UpdateTime,
+ null,
+ TimeSpan.FromMinutes(1),
+ TimeSpan.FromMinutes(1));
+ }
+
+ private void UpdateTime(object? state)
+ {
+ _currentTime = DateTime.Now;
+ _ = InvokeAsync(StateHasChanged);
+ }
+
+ public void Dispose()
+ {
+ _timer.Dispose();
+ }
+}
\ No newline at end of file
diff --git a/PointOfSale/Pos.Web/Components/Pages/Home.razor.css b/PointOfSale/Pos.Web/Components/Pages/Home.razor.css
new file mode 100644
index 0000000..2133250
--- /dev/null
+++ b/PointOfSale/Pos.Web/Components/Pages/Home.razor.css
@@ -0,0 +1,38 @@
+.top-nav {
+ min-height: 72px;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 24px;
+ padding: 0 32px;
+ background: var(--colorNeutralBackground1);
+ border-bottom: 1px solid var(--colorNeutralStroke2);
+}
+
+.brand {
+ color: var(--colorNeutralForeground1);
+ font-size: 26px;
+ font-weight: 600;
+}
+
+time {
+ color: var(--colorNeutralForeground2);
+ font-size: 18px;
+ white-space: nowrap;
+}
+
+.home-container {
+ width: min(100%, 1100px);
+ margin: 32px auto;
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 24px;
+}
+
+.home-container ::deep .menu-button {
+ width: 100%;
+ min-height: 220px;
+ font-size: 28px;
+ font-weight: 600;
+}
\ No newline at end of file
diff --git a/PointOfSale/Pos.Web/Components/Pages/Settings/Employees.razor b/PointOfSale/Pos.Web/Components/Pages/Settings/Employees.razor
new file mode 100644
index 0000000..e3e418b
--- /dev/null
+++ b/PointOfSale/Pos.Web/Components/Pages/Settings/Employees.razor
@@ -0,0 +1,21 @@
+@page "/settings/employees"
+@rendermode InteractiveServer
+
+
+
Medarbejder
+
+
+ Opret medarbejder
+
+
+
@_message
+
+@code {
+ private string _message = "";
+
+ public void CreateEmployee()
+ {
+ _message = "Medarbejder blev oprettet";
+ }
+}
diff --git a/PointOfSale/Pos.Web/Components/Pages/Settings/Settings.razor b/PointOfSale/Pos.Web/Components/Pages/Settings/Settings.razor
new file mode 100644
index 0000000..30af287
--- /dev/null
+++ b/PointOfSale/Pos.Web/Components/Pages/Settings/Settings.razor
@@ -0,0 +1,54 @@
+@using System.Globalization
+@rendermode InteractiveServer
+@implements IDisposable
+@page "/settings"
+
+
+ Blomster POS
+
+
+
+
+
Administer data, der bruges i kassesalget
+
+
+
+
+
+
+
+@code {
+ private readonly CultureInfo _danishCulture =
+ CultureInfo.GetCultureInfo("da-DK");
+
+ private readonly Timer _timer;
+ private DateTime _currentTime = DateTime.Now;
+
+ public Settings()
+ {
+ _timer = new Timer(
+ UpdateTime,
+ null,
+ TimeSpan.FromMinutes(1),
+ TimeSpan.FromMinutes(1));
+ }
+
+ private void UpdateTime(object? state)
+ {
+ _currentTime = DateTime.Now;
+ _ = InvokeAsync(StateHasChanged);
+ }
+
+ public void Dispose()
+ {
+ _timer.Dispose();
+ }
+}
diff --git a/PointOfSale/Pos.Web/Components/Pages/Settings/Settings.razor.css b/PointOfSale/Pos.Web/Components/Pages/Settings/Settings.razor.css
new file mode 100644
index 0000000..8366f4c
--- /dev/null
+++ b/PointOfSale/Pos.Web/Components/Pages/Settings/Settings.razor.css
@@ -0,0 +1,24 @@
+/* CSS for Settings component */
+.top-nav {
+ min-height: 72px;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 24px;
+ padding: 0 32px;
+ background: var(--colorNeutralBackground1);
+ border-bottom: 1px solid var(--colorNeutralStroke2);
+}
+
+.brand {
+ color: var(--colorNeutralForeground1);
+ font-size: 26px;
+ font-weight: 600;
+}
+
+time {
+ color: var(--colorNeutralForeground2);
+ font-size: 18px;
+ white-space: nowrap;
+}
\ No newline at end of file
diff --git a/PointOfSale/Pos.Web/Components/Pages/Weather.razor b/PointOfSale/Pos.Web/Components/Pages/Weather.razor
deleted file mode 100644
index 2641892..0000000
--- a/PointOfSale/Pos.Web/Components/Pages/Weather.razor
+++ /dev/null
@@ -1,48 +0,0 @@
-@page "/weather"
-
-
Weather
-
-
Weather
-
-
This component demonstrates showing data.
-
-@if (forecasts == null)
-{
-
Loading...
-}
-else
-{
-
-
-
-
-
-
-}
-
-@code {
- private IQueryable
? forecasts;
-
- protected override async Task OnInitializedAsync()
- {
- // Simulate asynchronous loading to demonstrate a loading indicator
- await Task.Delay(500);
-
- var startDate = DateOnly.FromDateTime(DateTime.Now);
- var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" };
- forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast
- {
- Date = startDate.AddDays(index),
- TemperatureC = Random.Shared.Next(-20, 55),
- Summary = summaries[Random.Shared.Next(summaries.Length)]
- }).AsQueryable();
- }
-
- private class WeatherForecast
- {
- public DateOnly Date { get; set; }
- public int TemperatureC { get; set; }
- public string? Summary { get; set; }
- public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
- }
-}
diff --git a/PointOfSale/Pos.Web/wwwroot/app.css b/PointOfSale/Pos.Web/wwwroot/app.css
index 3430892..c36f4fc 100644
--- a/PointOfSale/Pos.Web/wwwroot/app.css
+++ b/PointOfSale/Pos.Web/wwwroot/app.css
@@ -1,192 +1,89 @@
@import '/_content/Microsoft.FluentUI.AspNetCore.Components/css/reboot.css';
body {
- --body-font: "Segoe UI Variable", "Segoe UI", sans-serif;
- font-family: var(--body-font);
- font-size: var(--type-ramp-base-font-size);
- line-height: var(--type-ramp-base-line-height);
- margin: 0;
-}
-
-.navmenu-icon {
- display: none;
+ --body-font: "Segoe UI Variable", "Segoe UI", sans-serif;
+ margin: 0;
+ font-family: var(--body-font);
+ font-size: var(--type-ramp-base-font-size);
+ line-height: var(--type-ramp-base-line-height);
}
.main {
- min-height: calc(100dvh - 86px);
- color: var(--neutral-foreground-rest);
- align-items: stretch !important;
-}
-
-nav {
- align-self: stretch;
- height: calc(100dvh - 80px) !important;
- display: flex;
+ min-height: 100dvh;
+ color: var(--neutral-foreground-rest);
+ align-items: stretch !important;
}
.content {
- padding: 0.5rem 1.5rem;
- align-self: stretch !important;
- width: 100%;
+ box-sizing: border-box;
+ width: 100%;
+ padding: 0.5rem 1.5rem;
+ align-self: stretch !important;
}
-.manage {
- width: 100dvw;
-}
-
-.fluent-layout-item[area="footer"] {
- background: var(--neutral-layer-4);
- color: var(--neutral-foreground-rest);
- align-items: center;
- padding: 10px 10px;
-}
-
- .fluent-layout-item[area="footer"] fluent-link {
- color: var(--neutral-foreground-rest);
- text-decoration: none;
- }
-
- .fluent-layout-item[area="footer"] fluent-link:focus {
- outline: 1px dashed;
- outline-offset: 3px;
- }
-
- .fluent-layout-item[area="footer"] fluent-link:hover {
- text-decoration: underline;
- }
-
-
-.alert {
- border: 1px dashed var(--accent-fill-rest);
- padding: 5px;
-}
-
-
#blazor-error-ui {
- background: lightyellow;
- bottom: 0;
- box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
- display: none;
- left: 0;
- padding: 0.6rem 1.25rem 0.7rem 1.25rem;
- position: fixed;
- width: 100%;
- z-index: 1000;
- margin: 20px 0;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ z-index: 1000;
+ box-sizing: border-box;
+ display: none;
+ width: 100%;
+ padding: 0.6rem 1.25rem 0.7rem;
+ background: lightyellow;
+ box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
}
- #blazor-error-ui .dismiss {
+#blazor-error-ui .dismiss {
cursor: pointer;
position: absolute;
right: 0.75rem;
top: 0.5rem;
- }
+}
.blazor-error-boundary {
- background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
- padding: 1rem 1rem 1rem 3.7rem;
- color: white;
+ padding: 1rem 1rem 1rem 3.7rem;
+ color: white;
+ background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
}
- .blazor-error-boundary::before {
- content: "An error has occurred. "
- }
+.blazor-error-boundary::before {
+ content: "An error has occurred. ";
+}
.loading-progress {
- position: relative;
- display: block;
- width: 8rem;
- height: 8rem;
- margin: 20vh auto 1rem auto;
+ position: relative;
+ display: block;
+ width: 8rem;
+ height: 8rem;
+ margin: 20vh auto 1rem;
}
- .loading-progress circle {
+.loading-progress circle {
fill: none;
stroke: #e0e0e0;
stroke-width: 0.6rem;
transform-origin: 50% 50%;
transform: rotate(-90deg);
- }
+}
- .loading-progress circle:last-child {
- stroke: #1b6ec2;
- stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%;
- transition: stroke-dasharray 0.05s ease-in-out;
- }
+.loading-progress circle:last-child {
+ stroke: #1b6ec2;
+ stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%;
+ transition: stroke-dasharray 0.05s ease-in-out;
+}
.loading-progress-text {
- position: absolute;
- text-align: center;
- font-weight: bold;
- inset: calc(20vh + 3.25rem) 0 auto 0.2rem;
+ position: absolute;
+ inset: calc(20vh + 3.25rem) 0 auto 0.2rem;
+ font-weight: bold;
+ text-align: center;
}
- .loading-progress-text:after {
+.loading-progress-text::after {
content: var(--blazor-load-percentage-text, "Loading");
- }
+}
code {
- color: #c02d76;
-}
-
-@media (max-width: 600px) {
- .header-gutters {
- margin: 0.5rem 3rem 0.5rem 1.5rem !important;
- }
-
- [dir="rtl"] .header-gutters {
- margin: 0.5rem 1.5rem 0.5rem 3rem !important;
- }
-
- .main {
- flex-direction: column !important;
- row-gap: 0 !important;
- }
-
- nav.sitenav {
- width: 100%;
- height: 100%;
- }
-
- #main-menu {
- width: 100% !important;
- }
-
- #main-menu > div:first-child:is(.expander) {
- display: none;
- }
-
- .navmenu {
- width: 100%;
- }
-
- #navmenu-toggle {
- appearance: none;
- }
-
- #navmenu-toggle ~ nav {
- display: none;
- }
-
- #navmenu-toggle:checked ~ nav {
- display: block;
- }
-
- .navmenu-icon {
- cursor: pointer;
- z-index: 10;
- display: block;
- position: absolute;
- top: 15px;
- left: unset;
- right: 20px;
- width: 20px;
- height: 20px;
- border: none;
- }
-
- [dir="rtl"] .navmenu-icon {
- left: 20px;
- right: unset;
- }
+ color: #c02d76;
}
diff --git a/layout/Salg/Betaling.png b/layout/Salg/Betaling.png
deleted file mode 100644
index 55722fe..0000000
Binary files a/layout/Salg/Betaling.png and /dev/null differ