feat: Adds footer with copyright info.
This commit is contained in:
@@ -6457,6 +6457,9 @@
|
|||||||
.min-h-full {
|
.min-h-full {
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
}
|
}
|
||||||
|
.min-h-screen {
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
.btn-wide {
|
.btn-wide {
|
||||||
@layer daisyui.l1.l2 {
|
@layer daisyui.l1.l2 {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -6594,6 +6597,9 @@
|
|||||||
.min-w-\[220px\] {
|
.min-w-\[220px\] {
|
||||||
min-width: 220px;
|
min-width: 220px;
|
||||||
}
|
}
|
||||||
|
.min-w-full {
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
.flex-1 {
|
.flex-1 {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
@@ -7164,6 +7170,10 @@
|
|||||||
border-style: var(--tw-border-style);
|
border-style: var(--tw-border-style);
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
}
|
}
|
||||||
|
.border-t {
|
||||||
|
border-top-style: var(--tw-border-style);
|
||||||
|
border-top-width: 1px;
|
||||||
|
}
|
||||||
.border-b {
|
.border-b {
|
||||||
border-bottom-style: var(--tw-border-style);
|
border-bottom-style: var(--tw-border-style);
|
||||||
border-bottom-width: 1px;
|
border-bottom-width: 1px;
|
||||||
@@ -7281,6 +7291,9 @@
|
|||||||
border-color: currentColor;
|
border-color: currentColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.border-base-100 {
|
||||||
|
border-color: var(--color-base-100);
|
||||||
|
}
|
||||||
.border-error {
|
.border-error {
|
||||||
border-color: var(--color-error);
|
border-color: var(--color-error);
|
||||||
}
|
}
|
||||||
@@ -7441,6 +7454,9 @@
|
|||||||
.bg-base-100 {
|
.bg-base-100 {
|
||||||
background-color: var(--color-base-100);
|
background-color: var(--color-base-100);
|
||||||
}
|
}
|
||||||
|
.bg-base-200 {
|
||||||
|
background-color: var(--color-base-200);
|
||||||
|
}
|
||||||
.bg-base-300 {
|
.bg-base-300 {
|
||||||
background-color: var(--color-base-300);
|
background-color: var(--color-base-300);
|
||||||
}
|
}
|
||||||
@@ -9481,6 +9497,16 @@
|
|||||||
color: var(--color-white);
|
color: var(--color-white);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.sm\:footer-horizontal {
|
||||||
|
@media (width >= 40rem) {
|
||||||
|
@layer daisyui.l1.l2 {
|
||||||
|
grid-auto-flow: column;
|
||||||
|
&.footer-center {
|
||||||
|
grid-auto-flow: row dense;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
.md\:grid-cols-2 {
|
.md\:grid-cols-2 {
|
||||||
@media (width >= 48rem) {
|
@media (width >= 48rem) {
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ extension ViewController.Request {
|
|||||||
let inner = await inner()
|
let inner = await inner()
|
||||||
let theme = await self.theme
|
let theme = await self.theme
|
||||||
|
|
||||||
return MainPage(theme: theme) {
|
return MainPage(displayFooter: displayFooter, theme: theme) {
|
||||||
inner
|
inner
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -98,6 +98,15 @@ extension ViewController.Request {
|
|||||||
return try? await database.userProfile.fetch(user.id)?.theme
|
return try? await database.userProfile.fetch(user.id)?.theme
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var displayFooter: Bool {
|
||||||
|
switch route {
|
||||||
|
case .login, .signup:
|
||||||
|
return false
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension SiteRoute.View.ProjectRoute {
|
extension SiteRoute.View.ProjectRoute {
|
||||||
|
|||||||
@@ -26,7 +26,9 @@ struct DuctSizingView: HTML, Sendable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Row {
|
Row {
|
||||||
h2(.class("text-2xl font-bold")) { "Trunk Sizes" }
|
h2(.class("text-2xl font-bold")) {
|
||||||
|
"Trunk / Runout Sizes"
|
||||||
|
}
|
||||||
|
|
||||||
PlusButton()
|
PlusButton()
|
||||||
.attributes(
|
.attributes(
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import Elementary
|
import Elementary
|
||||||
import ElementaryHTMX
|
import ElementaryHTMX
|
||||||
|
import Foundation
|
||||||
import ManualDCore
|
import ManualDCore
|
||||||
import Styleguide
|
import Styleguide
|
||||||
|
|
||||||
@@ -10,11 +11,14 @@ public struct MainPage<Inner: HTML>: SendableHTMLDocument where Inner: Sendable
|
|||||||
|
|
||||||
let inner: Inner
|
let inner: Inner
|
||||||
let theme: Theme?
|
let theme: Theme?
|
||||||
|
let displayFooter: Bool
|
||||||
|
|
||||||
init(
|
init(
|
||||||
|
displayFooter: Bool = true,
|
||||||
theme: Theme? = nil,
|
theme: Theme? = nil,
|
||||||
_ inner: () -> Inner
|
_ inner: () -> Inner
|
||||||
) {
|
) {
|
||||||
|
self.displayFooter = displayFooter
|
||||||
self.theme = theme
|
self.theme = theme
|
||||||
self.inner = inner()
|
self.inner = inner()
|
||||||
}
|
}
|
||||||
@@ -25,6 +29,12 @@ public struct MainPage<Inner: HTML>: SendableHTMLDocument where Inner: Sendable
|
|||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var keywords: String {
|
||||||
|
"""
|
||||||
|
duct, hvac, duct-design, duct design, manual-d, manual d, design
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
|
||||||
public var head: some HTML {
|
public var head: some HTML {
|
||||||
meta(.charset(.utf8))
|
meta(.charset(.utf8))
|
||||||
meta(.name(.viewport), .content("width=device-width, initial-scale=1.0"))
|
meta(.name(.viewport), .content("width=device-width, initial-scale=1.0"))
|
||||||
@@ -38,6 +48,7 @@ public struct MainPage<Inner: HTML>: SendableHTMLDocument where Inner: Sendable
|
|||||||
meta(.content("summary_large_image"), .name("twitter:card"))
|
meta(.content("summary_large_image"), .name("twitter:card"))
|
||||||
meta(.content("1536"), .name("og:image:width"))
|
meta(.content("1536"), .name("og:image:width"))
|
||||||
meta(.content("1024"), .name("og:image:height"))
|
meta(.content("1024"), .name("og:image:height"))
|
||||||
|
meta(.content(keywords), .name(.keywords))
|
||||||
script(.src("https://unpkg.com/htmx.org@2.0.8")) {}
|
script(.src("https://unpkg.com/htmx.org@2.0.8")) {}
|
||||||
script(.src("/js/main.js")) {}
|
script(.src("/js/main.js")) {}
|
||||||
link(.rel(.stylesheet), .href("/css/output.css"))
|
link(.rel(.stylesheet), .href("/css/output.css"))
|
||||||
@@ -70,10 +81,27 @@ public struct MainPage<Inner: HTML>: SendableHTMLDocument where Inner: Sendable
|
|||||||
}
|
}
|
||||||
|
|
||||||
public var body: some HTML {
|
public var body: some HTML {
|
||||||
div(.class("h-screen w-full")) {
|
div(.class("flex flex-col min-h-screen min-w-full")) {
|
||||||
div(.class("overflow-auto")) {
|
main(.class("overflow-auto grow")) {
|
||||||
inner
|
inner
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if displayFooter {
|
||||||
|
footer(
|
||||||
|
.class(
|
||||||
|
"""
|
||||||
|
footer sm:footer-horizontal footer-center
|
||||||
|
bg-base-300 text-base-content p-4
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
aside {
|
||||||
|
p {
|
||||||
|
"Copyright © \(Date().description.prefix(4)) - All rights reserved by Michael Housh"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.attributes(.data("theme", value: theme?.rawValue ?? "default"), when: theme != nil)
|
.attributes(.data("theme", value: theme?.rawValue ?? "default"), when: theme != nil)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,6 @@ extension ProjectView {
|
|||||||
|
|
||||||
ul(.class("w-full")) {
|
ul(.class("w-full")) {
|
||||||
|
|
||||||
|
|
||||||
li(.class("flex w-full")) {
|
li(.class("flex w-full")) {
|
||||||
row(
|
row(
|
||||||
title: "Project",
|
title: "Project",
|
||||||
|
|||||||
@@ -72,7 +72,6 @@ struct RoomsView: HTML, Sendable {
|
|||||||
|
|
||||||
SHRForm(projectID: projectID, sensibleHeatRatio: sensibleHeatRatio)
|
SHRForm(projectID: projectID, sensibleHeatRatio: sensibleHeatRatio)
|
||||||
|
|
||||||
div(.class("overflow-x-auto")) {
|
|
||||||
table(.class("table table-zebra text-lg"), .id("roomsTable")) {
|
table(.class("table table-zebra text-lg"), .id("roomsTable")) {
|
||||||
thead {
|
thead {
|
||||||
tr(.class("text-lg font-bold")) {
|
tr(.class("text-lg font-bold")) {
|
||||||
@@ -117,7 +116,6 @@ struct RoomsView: HTML, Sendable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
RoomForm(dismiss: true, projectID: projectID, room: nil)
|
RoomForm(dismiss: true, projectID: projectID, room: nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user