feat: Cleans up some file names, adds generate admin user command.

This commit is contained in:
2025-01-19 17:07:08 -05:00
parent 185ebbbc15
commit 81f0e03549
10 changed files with 159 additions and 110 deletions

View File

@@ -1,5 +1,6 @@
import Elementary
import ElementaryHTMX
import SharedModels
struct MainPage<Inner: HTML>: SendableHTMLDocument where Inner: Sendable {
@@ -12,7 +13,7 @@ struct MainPage<Inner: HTML>: SendableHTMLDocument where Inner: Sendable {
init(
displayNav: Bool = false,
route: ViewRoute,
route: RouteHeaderView.ViewRoute,
_ inner: () -> Inner
) {
self.displayNav = displayNav
@@ -39,6 +40,29 @@ struct MainPage<Inner: HTML>: SendableHTMLDocument where Inner: Sendable {
}
}
extension MainPage where Inner == LoggedIn {
static func loggedIn(next: String?) -> Self {
MainPage(displayNav: true, route: .purchaseOrders) {
LoggedIn(next: next)
}
}
}
struct LoggedIn: HTML {
let next: String?
var content: some HTML {
div(
.hx.get(next ?? ViewRoute.router.path(for: .purchaseOrder(.index))),
.hx.pushURL(true),
.hx.target("body"),
.hx.trigger(.event(.revealed)),
.hx.indicator(".hx-indicator")
) {
Img.spinner().attributes(.class("hx-indicator"))
}
}
}
struct RouteHeaderView: HTML {
let title: String
@@ -61,6 +85,38 @@ struct RouteHeaderView: HTML {
br()
}
}
enum ViewRoute: String {
case employees
case login
case purchaseOrders
case users
case vendors
var title: String {
switch self {
case .purchaseOrders:
return "Purchase Orders"
default:
return rawValue.capitalized
}
}
var description: String {
switch self {
case .employees:
return "Employees are who purchase orders can be issued to."
case .purchaseOrders, .login:
return ""
case .users:
return "Users are who can login and issue purchase orders for employees."
case .vendors:
return "Vendors are where purchase orders can be issued to."
}
}
}
}
struct Logo: HTML, Sendable {