import Elementary import ElementaryHTMX struct MainPage: SendableHTMLDocument where Inner: Sendable { var title: String { "Purchase Orders" } var lang: String { "en" } let inner: Inner let displayNav: Bool let routeHeader: RouteHeaderView init( displayNav: Bool = false, route: ViewRoute, _ inner: () -> Inner ) { self.displayNav = displayNav self.routeHeader = .init(route: route) self.inner = inner() } var head: some HTML { meta(.charset(.utf8)) script(.src("https://unpkg.com/htmx.org@2.0.4")) {} script(.src("/js/main.js")) {} link(.rel(.stylesheet), .href("/css/main.css")) } var body: some HTML { header(.class("header")) { Logo() if displayNav { Navbar() } } routeHeader inner } } struct RouteHeaderView: HTML { let title: String let description: String init(title: String, description: String) { self.title = title self.description = description } init(route: ViewRoute) { self.init(title: route.title, description: route.description) } var content: some HTML { div(.class("container"), .style("padding: 20px 20px;")) { h1 { title } br() p(.class("secondary")) { i { description } } br() } } } struct Logo: HTML, Sendable { var content: some HTML { div(.id("logo")) { "HHE - Purchase Orders" } } } protocol SendableHTMLDocument: HTMLDocument, Sendable {}