feat: Adds quick calculation views, need to add buttons / links in navbar / home page.
This commit is contained in:
@@ -27,6 +27,18 @@ struct ViewControllerTests {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
func quickCalc() async throws {
|
||||
try await withDependencies {
|
||||
$0.viewController = .liveValue
|
||||
$0.auth = .failing
|
||||
} operation: {
|
||||
@Dependency(\.viewController) var viewController
|
||||
let view = try await viewController.view(.test(.quickCalc(.index)))
|
||||
assertSnapshot(of: view, as: .html)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
func login() async throws {
|
||||
try await withDependencies {
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
@@ -28,11 +29,11 @@
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between">
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<div>
|
||||
<div class="flex justify-end m-4">
|
||||
<button class="btn btn-ghost btn-secondary text-lg" hx-get="/login" hx-target="body" hx-swap="outerHTML">Login</button>
|
||||
<button class="btn btn-ghost btn-secondary text-lg" hx-get="/login" hx-target="body" hx-swap="outerHTML" hx-push-url="true">Login</button>
|
||||
</div>
|
||||
<div class="hero">
|
||||
<div class="relative hero-content text-center bg-base-300
|
||||
@@ -51,7 +52,7 @@ text-8xl font-bold my-auto space-2">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Open source residential duct design program<a class="btn btn-ghost text-md text-primary font-bold italic" href="https://git.housh.dev/michael/swift-manual-d" target="_blank"></a>
|
||||
Open source residential duct design program<a class="btn btn-ghost text-md text-primary font-bold italic" href="https://git.housh.dev/michael/swift-duct-calc" target="_blank"></a>
|
||||
<p class="text-3xl py-6">Manual-D™ speed sheet, but on the web!</p>
|
||||
<button class="btn btn-xl btn-primary mt-6" hx-get="/signup" hx-target="body" hx-swap="outerHTML">Get Started</button>
|
||||
<p class="text-xs italic mt-8">
|
||||
@@ -102,7 +103,7 @@ text-8xl font-bold my-auto space-2">
|
||||
bg-base-300 text-base-content p-4">
|
||||
<aside>
|
||||
<p>Copyright © 2026 - All rights reserved by Michael Housh</p>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-manual-d/src/branch/main/LICENSE" target="_blank"></a>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-duct-calc/src/branch/main/LICENSE" target="_blank"></a>
|
||||
</aside>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
@@ -28,7 +29,7 @@
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between">
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<dialog id="loginForm" class="modal modal-open">
|
||||
<div class="modal-box">
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
@@ -28,7 +29,7 @@
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between">
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<div class="drawer lg:drawer-open h-full">
|
||||
<input id="my-drawer-1" type="checkbox" class="drawer-toggle">
|
||||
@@ -42,8 +43,12 @@
|
||||
Duct Calc<span></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-none">
|
||||
<div class="tooltip tooltip-left" data-tip="Profile"><a href="/profile" class="btn btn-square btn-ghost hover:bg-neutral hover:text-white"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></a></div>
|
||||
<div class="flex-none dropdown dropdown-end dropdown-hover">
|
||||
<div class="btn m-1 btn btn-square btn-ghost hover:bg-neutral hover:text-white" tabindex="0" role="button"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></div>
|
||||
<ul tabindex="-1" class="dropdown-content menu bg-base-200 rounded-box z-1 w-52 py-2 shadow-sm">
|
||||
<li><a href="/profile">Profile</a></li>
|
||||
<li><a href="/logout">Logout</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="p-4">
|
||||
@@ -134,10 +139,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Project</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -153,10 +157,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Rooms</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -172,10 +175,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Equipment</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -191,10 +193,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>T.E.L.</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -210,10 +211,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Friction Rate</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -245,7 +245,7 @@ is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2
|
||||
bg-base-300 text-base-content p-4">
|
||||
<aside>
|
||||
<p>Copyright © 2026 - All rights reserved by Michael Housh</p>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-manual-d/src/branch/main/LICENSE" target="_blank"></a>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-duct-calc/src/branch/main/LICENSE" target="_blank"></a>
|
||||
</aside>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
@@ -28,7 +29,7 @@
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between">
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<div class="drawer lg:drawer-open h-full">
|
||||
<input id="my-drawer-1" type="checkbox" class="drawer-toggle">
|
||||
@@ -42,8 +43,12 @@
|
||||
Duct Calc<span></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-none">
|
||||
<div class="tooltip tooltip-left" data-tip="Profile"><a href="/profile" class="btn btn-square btn-ghost hover:bg-neutral hover:text-white"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></a></div>
|
||||
<div class="flex-none dropdown dropdown-end dropdown-hover">
|
||||
<div class="btn m-1 btn btn-square btn-ghost hover:bg-neutral hover:text-white" tabindex="0" role="button"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></div>
|
||||
<ul tabindex="-1" class="dropdown-content menu bg-base-200 rounded-box z-1 w-52 py-2 shadow-sm">
|
||||
<li><a href="/profile">Profile</a></li>
|
||||
<li><a href="/logout">Logout</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="p-4">
|
||||
@@ -564,10 +569,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Project</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -583,10 +587,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Rooms</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -602,10 +605,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Equipment</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -621,10 +623,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>T.E.L.</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -640,10 +641,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Friction Rate</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -675,7 +675,7 @@ is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2
|
||||
bg-base-300 text-base-content p-4">
|
||||
<aside>
|
||||
<p>Copyright © 2026 - All rights reserved by Michael Housh</p>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-manual-d/src/branch/main/LICENSE" target="_blank"></a>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-duct-calc/src/branch/main/LICENSE" target="_blank"></a>
|
||||
</aside>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
@@ -28,7 +29,7 @@
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between">
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<div class="drawer lg:drawer-open h-full">
|
||||
<input id="my-drawer-1" type="checkbox" class="drawer-toggle">
|
||||
@@ -42,8 +43,12 @@
|
||||
Duct Calc<span></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-none">
|
||||
<div class="tooltip tooltip-left" data-tip="Profile"><a href="/profile" class="btn btn-square btn-ghost hover:bg-neutral hover:text-white"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></a></div>
|
||||
<div class="flex-none dropdown dropdown-end dropdown-hover">
|
||||
<div class="btn m-1 btn btn-square btn-ghost hover:bg-neutral hover:text-white" tabindex="0" role="button"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></div>
|
||||
<ul tabindex="-1" class="dropdown-content menu bg-base-200 rounded-box z-1 w-52 py-2 shadow-sm">
|
||||
<li><a href="/profile">Profile</a></li>
|
||||
<li><a href="/logout">Logout</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="p-4">
|
||||
@@ -119,10 +124,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Project</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -138,10 +142,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Rooms</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -157,10 +160,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Equipment</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -176,10 +178,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>T.E.L.</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -195,10 +196,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Friction Rate</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -230,7 +230,7 @@ is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2
|
||||
bg-base-300 text-base-content p-4">
|
||||
<aside>
|
||||
<p>Copyright © 2026 - All rights reserved by Michael Housh</p>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-manual-d/src/branch/main/LICENSE" target="_blank"></a>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-duct-calc/src/branch/main/LICENSE" target="_blank"></a>
|
||||
</aside>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
@@ -28,7 +29,7 @@
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between">
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<div class="drawer lg:drawer-open h-full">
|
||||
<input id="my-drawer-1" type="checkbox" class="drawer-toggle">
|
||||
@@ -42,8 +43,12 @@
|
||||
Duct Calc<span></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-none">
|
||||
<div class="tooltip tooltip-left" data-tip="Profile"><a href="/profile" class="btn btn-square btn-ghost hover:bg-neutral hover:text-white"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></a></div>
|
||||
<div class="flex-none dropdown dropdown-end dropdown-hover">
|
||||
<div class="btn m-1 btn btn-square btn-ghost hover:bg-neutral hover:text-white" tabindex="0" role="button"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></div>
|
||||
<ul tabindex="-1" class="dropdown-content menu bg-base-200 rounded-box z-1 w-52 py-2 shadow-sm">
|
||||
<li><a href="/profile">Profile</a></li>
|
||||
<li><a href="/logout">Logout</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="p-4">
|
||||
@@ -249,10 +254,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Project</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -268,10 +272,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Rooms</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -287,10 +290,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Equipment</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -306,10 +308,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>T.E.L.</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -325,10 +326,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Friction Rate</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -360,7 +360,7 @@ is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2
|
||||
bg-base-300 text-base-content p-4">
|
||||
<aside>
|
||||
<p>Copyright © 2026 - All rights reserved by Michael Housh</p>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-manual-d/src/branch/main/LICENSE" target="_blank"></a>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-duct-calc/src/branch/main/LICENSE" target="_blank"></a>
|
||||
</aside>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
@@ -28,7 +29,7 @@
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between">
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<div class="drawer lg:drawer-open h-full">
|
||||
<input id="my-drawer-1" type="checkbox" class="drawer-toggle">
|
||||
@@ -42,8 +43,12 @@
|
||||
Duct Calc<span></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-none">
|
||||
<div class="tooltip tooltip-left" data-tip="Profile"><a href="/profile" class="btn btn-square btn-ghost hover:bg-neutral hover:text-white"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></a></div>
|
||||
<div class="flex-none dropdown dropdown-end dropdown-hover">
|
||||
<div class="btn m-1 btn btn-square btn-ghost hover:bg-neutral hover:text-white" tabindex="0" role="button"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></div>
|
||||
<ul tabindex="-1" class="dropdown-content menu bg-base-200 rounded-box z-1 w-52 py-2 shadow-sm">
|
||||
<li><a href="/profile">Profile</a></li>
|
||||
<li><a href="/logout">Logout</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="p-4">
|
||||
@@ -325,10 +330,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Project</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -344,10 +348,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Rooms</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -363,10 +366,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Equipment</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -382,10 +384,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>T.E.L.</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -401,10 +402,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Friction Rate</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -436,7 +436,7 @@ is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2
|
||||
bg-base-300 text-base-content p-4">
|
||||
<aside>
|
||||
<p>Copyright © 2026 - All rights reserved by Michael Housh</p>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-manual-d/src/branch/main/LICENSE" target="_blank"></a>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-duct-calc/src/branch/main/LICENSE" target="_blank"></a>
|
||||
</aside>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
@@ -28,7 +29,7 @@
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between">
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<div class="drawer lg:drawer-open h-full">
|
||||
<input id="my-drawer-1" type="checkbox" class="drawer-toggle">
|
||||
@@ -42,8 +43,12 @@
|
||||
Duct Calc<span></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-none">
|
||||
<div class="tooltip tooltip-left" data-tip="Profile"><a href="/profile" class="btn btn-square btn-ghost hover:bg-neutral hover:text-white"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></a></div>
|
||||
<div class="flex-none dropdown dropdown-end dropdown-hover">
|
||||
<div class="btn m-1 btn btn-square btn-ghost hover:bg-neutral hover:text-white" tabindex="0" role="button"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></div>
|
||||
<ul tabindex="-1" class="dropdown-content menu bg-base-200 rounded-box z-1 w-52 py-2 shadow-sm">
|
||||
<li><a href="/profile">Profile</a></li>
|
||||
<li><a href="/logout">Logout</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="p-4">
|
||||
@@ -926,6 +931,7 @@ p-6 w-full">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/js/daisy-multiselect.js"></script>
|
||||
<dialog id="trunkSizeForm_0000000000000000000000000000000F" class="modal">
|
||||
<div class="modal-box">
|
||||
<button class="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onclick="trunkSizeForm_0000000000000000000000000000000F.close()"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x-icon lucide-x"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg></button>
|
||||
@@ -942,131 +948,23 @@ p-6 w-full">
|
||||
<input type="text" name="height" value="" placeholder="8 (Optional)"></label>
|
||||
</div>
|
||||
Name<label class="input w-full"><span class="label"></span>
|
||||
<input type="text" name="name" value="" placeholder="Trunk-1 (Optional)"></label>
|
||||
<input type="text" name="name" value="" placeholder="Trunk-1" required></label>
|
||||
<div>
|
||||
<h2 class="label font-bold col-span-3 mb-6">Associated Supply Runs</h2>
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 justify-center items-center gap-4">
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Bed-1</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000001_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Entry</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000002_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Entry</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000002_2" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Family Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000003_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Family Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000003_2" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Family Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000003_3" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Kitchen</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000004_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Kitchen</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000004_2" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Living Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000005_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Living Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000005_2" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Master</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000006_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Master</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000006_2" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<daisy-multiselect class="z-50 bg-base-200" placeholder="Select rooms" name="rooms" chip-style show-select-all show-clear required virtual-scroll>
|
||||
<option value="00000000-0000-0000-0000-000000000001_1" selected>Bed-1</option>
|
||||
<option value="00000000-0000-0000-0000-000000000002_1" selected>Entry</option>
|
||||
<option value="00000000-0000-0000-0000-000000000002_2" selected>Entry</option>
|
||||
<option value="00000000-0000-0000-0000-000000000003_1" selected>Family Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000003_2" selected>Family Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000003_3" selected>Family Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000004_1" selected>Kitchen</option>
|
||||
<option value="00000000-0000-0000-0000-000000000004_2" selected>Kitchen</option>
|
||||
<option value="00000000-0000-0000-0000-000000000005_1" selected>Living Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000005_2" selected>Living Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000006_1" selected>Master</option>
|
||||
<option value="00000000-0000-0000-0000-000000000006_2" selected>Master</option>
|
||||
</daisy-multiselect>
|
||||
</div>
|
||||
<button class="btn btn-secondary btn-block mt-6" type="submit">Submit</button>
|
||||
</form>
|
||||
@@ -1128,6 +1026,7 @@ p-6 w-full">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/js/daisy-multiselect.js"></script>
|
||||
<dialog id="trunkSizeForm_00000000000000000000000000000010" class="modal">
|
||||
<div class="modal-box">
|
||||
<button class="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onclick="trunkSizeForm_00000000000000000000000000000010.close()"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x-icon lucide-x"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg></button>
|
||||
@@ -1144,131 +1043,23 @@ p-6 w-full">
|
||||
<input type="text" name="height" value="" placeholder="8 (Optional)"></label>
|
||||
</div>
|
||||
Name<label class="input w-full"><span class="label"></span>
|
||||
<input type="text" name="name" value="" placeholder="Trunk-1 (Optional)"></label>
|
||||
<input type="text" name="name" value="" placeholder="Trunk-1" required></label>
|
||||
<div>
|
||||
<h2 class="label font-bold col-span-3 mb-6">Associated Supply Runs</h2>
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 justify-center items-center gap-4">
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Bed-1</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000001_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Entry</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000002_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Entry</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000002_2" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Family Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000003_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Family Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000003_2" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Family Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000003_3" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Kitchen</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000004_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Kitchen</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000004_2" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Living Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000005_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Living Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000005_2" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Master</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000006_1" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Master</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000006_2" checked>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<daisy-multiselect class="z-50 bg-base-200" placeholder="Select rooms" name="rooms" chip-style show-select-all show-clear required virtual-scroll>
|
||||
<option value="00000000-0000-0000-0000-000000000001_1" selected>Bed-1</option>
|
||||
<option value="00000000-0000-0000-0000-000000000002_1" selected>Entry</option>
|
||||
<option value="00000000-0000-0000-0000-000000000002_2" selected>Entry</option>
|
||||
<option value="00000000-0000-0000-0000-000000000003_1" selected>Family Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000003_2" selected>Family Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000003_3" selected>Family Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000004_1" selected>Kitchen</option>
|
||||
<option value="00000000-0000-0000-0000-000000000004_2" selected>Kitchen</option>
|
||||
<option value="00000000-0000-0000-0000-000000000005_1" selected>Living Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000005_2" selected>Living Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000006_1" selected>Master</option>
|
||||
<option value="00000000-0000-0000-0000-000000000006_2" selected>Master</option>
|
||||
</daisy-multiselect>
|
||||
</div>
|
||||
<button class="btn btn-secondary btn-block mt-6" type="submit">Submit</button>
|
||||
</form>
|
||||
@@ -1278,6 +1069,7 @@ p-6 w-full">
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<script src="/js/daisy-multiselect.js"></script>
|
||||
<dialog id="trunkSizeForm" class="modal">
|
||||
<div class="modal-box">
|
||||
<button class="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onclick="trunkSizeForm.close()"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x-icon lucide-x"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg></button>
|
||||
@@ -1294,131 +1086,23 @@ p-6 w-full">
|
||||
<input type="text" name="height" value="" placeholder="8 (Optional)"></label>
|
||||
</div>
|
||||
Name<label class="input w-full"><span class="label"></span>
|
||||
<input type="text" name="name" value="" placeholder="Trunk-1 (Optional)"></label>
|
||||
<input type="text" name="name" value="" placeholder="Trunk-1" required></label>
|
||||
<div>
|
||||
<h2 class="label font-bold col-span-3 mb-6">Associated Supply Runs</h2>
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 justify-center items-center gap-4">
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Bed-1</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000001_1">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Entry</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000002_1">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Entry</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000002_2">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Family Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000003_1">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Family Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000003_2">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Family Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000003_3">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Kitchen</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000004_1">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Kitchen</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000004_2">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Living Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000005_1">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Living Room</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000005_2">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Master</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000006_1">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block grow">
|
||||
<div class="grid grid-cols-1 space-y-1">
|
||||
<div class="flex justify-center">
|
||||
<p class="label">Master</p>
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<input class="checkbox" type="checkbox" name="rooms" value="00000000-0000-0000-0000-000000000006_2">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<daisy-multiselect class="z-50 bg-base-200" placeholder="Select rooms" name="rooms" chip-style show-select-all show-clear required virtual-scroll>
|
||||
<option value="00000000-0000-0000-0000-000000000001_1">Bed-1</option>
|
||||
<option value="00000000-0000-0000-0000-000000000002_1">Entry</option>
|
||||
<option value="00000000-0000-0000-0000-000000000002_2">Entry</option>
|
||||
<option value="00000000-0000-0000-0000-000000000003_1">Family Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000003_2">Family Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000003_3">Family Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000004_1">Kitchen</option>
|
||||
<option value="00000000-0000-0000-0000-000000000004_2">Kitchen</option>
|
||||
<option value="00000000-0000-0000-0000-000000000005_1">Living Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000005_2">Living Room</option>
|
||||
<option value="00000000-0000-0000-0000-000000000006_1">Master</option>
|
||||
<option value="00000000-0000-0000-0000-000000000006_2">Master</option>
|
||||
</daisy-multiselect>
|
||||
</div>
|
||||
<button class="btn btn-secondary btn-block mt-6" type="submit">Submit</button>
|
||||
</form>
|
||||
@@ -1444,10 +1128,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin-icon lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Project</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -1463,10 +1146,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-door-closed-icon lucide-door-closed"><path d="M10 12h.01"/><path d="M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14"/><path d="M2 20h20"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Rooms</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -1482,10 +1164,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fan-icon lucide-fan"><path d="M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z"/><path d="M12 12v.01"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Equipment</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -1501,10 +1182,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ruler-dimension-line-icon lucide-ruler-dimension-line"><path d="M10 15v-3"/><path d="M14 15v-3"/><path d="M18 15v-3"/><path d="M2 8V4"/><path d="M22 6H2"/><path d="M22 8V4"/><path d="M6 15v-3"/><rect x="2" y="12" width="20" height="8" rx="2"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>T.E.L.</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -1520,10 +1200,9 @@ is-drawer-close:grid-cols-1">
|
||||
<div class="items-center
|
||||
is-drawer-open:justify-start is-drawer-open:flex is-drawer-open:space-x-4
|
||||
is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2">
|
||||
<div class="flex items-center justify-center is-drawer-close:text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-function-icon lucide-square-function"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/><path d="M9 11.2h5.7"/></svg></div>
|
||||
<div class="flex items-center justify-center"><span>Friction Rate</span></div>
|
||||
</div>
|
||||
<div class="flex grow justify-end items-end is-drawer-close:hidden text-green-400"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check-icon lucide-badge-check"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"/><path d="m9 12 2 2 4-4"/></svg></div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
@@ -1555,7 +1234,7 @@ is-drawer-close:justify-center is-drawer-close:mx-auto is-drawer-close:space-y-2
|
||||
bg-base-300 text-base-content p-4">
|
||||
<aside>
|
||||
<p>Copyright © 2026 - All rights reserved by Michael Housh</p>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-manual-d/src/branch/main/LICENSE" target="_blank"></a>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-duct-calc/src/branch/main/LICENSE" target="_blank"></a>
|
||||
</aside>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
@@ -28,7 +29,7 @@
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between">
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<div>
|
||||
<nav class="navbar w-full bg-base-300 text-base-content shadow-sm mb-4">
|
||||
@@ -39,8 +40,12 @@
|
||||
Duct Calc<span></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-none">
|
||||
<div class="tooltip tooltip-left" data-tip="Profile"><a href="/profile" class="btn btn-square btn-ghost hover:bg-neutral hover:text-white"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></a></div>
|
||||
<div class="flex-none dropdown dropdown-end dropdown-hover">
|
||||
<div class="btn m-1 btn btn-square btn-ghost hover:bg-neutral hover:text-white" tabindex="0" role="button"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-user-icon lucide-circle-user"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="10" r="3"/><path d="M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662"/></svg></div>
|
||||
<ul tabindex="-1" class="dropdown-content menu bg-base-200 rounded-box z-1 w-52 py-2 shadow-sm">
|
||||
<li><a href="/profile">Profile</a></li>
|
||||
<li><a href="/logout">Logout</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="m-6">
|
||||
@@ -105,7 +110,7 @@ p-6 w-full pb-6">
|
||||
bg-base-300 text-base-content p-4">
|
||||
<aside>
|
||||
<p>Copyright © 2026 - All rights reserved by Michael Housh</p>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-manual-d/src/branch/main/LICENSE" target="_blank"></a>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-duct-calc/src/branch/main/LICENSE" target="_blank"></a>
|
||||
</aside>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Duct Calc</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta content="ductcalc.com" name="og:site_name">
|
||||
<meta content="Duct Calc" name="og:title">
|
||||
<meta content="Duct sizing based on ACCA, Manual-D." name="description">
|
||||
<meta content="Duct sizing based on ACCA, Manual-D." name="og:description">
|
||||
<meta content="/images/mand_logo.png" name="og:image">
|
||||
<meta content="/images/mand_logo.png" name="twitter:image">
|
||||
<meta content="Duct Calc" name="twitter:image:alt">
|
||||
<meta content="summary_large_image" name="twitter:card">
|
||||
<meta content="1536" name="og:image:width">
|
||||
<meta content="1024" name="og:image:height">
|
||||
<meta content="duct, hvac, duct-design, duct design, manual-d, manual d, design" name="keywords">
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
<link rel="icon" href="/images/favicon-32x32.png" type="image/png">
|
||||
<link rel="icon" href="/images/favicon-16x16.png" type="image/png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<div>
|
||||
<nav class="navbar w-full bg-base-300 text-base-content shadow-sm mb-4">
|
||||
<div class="flex flex-1 space-x-4 items-center">
|
||||
<div class="tooltip tooltip-right" data-tip="Home">
|
||||
<a class="flex w-fit h-fit text-xl items-end px-4 py-2 btn btn-square btn-ghost hover:bg-neutral hover:text-white" href="/">
|
||||
<img src="/images/mand_logo_sm.webp">
|
||||
Duct Calc<span></span></a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="flex justify-center items-center px-10">
|
||||
<div class="bg-base-300 rounded-3xl shadow-3xl
|
||||
p-6 w-full">
|
||||
<div class="flex space-x-6 items-center text-4xl">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calculator-icon lucide-calculator"><rect width="16" height="20" x="4" y="2" rx="2"/><line x1="8" x2="16" y1="6" y2="6"/><line x1="16" x2="16" y1="14" y2="18"/><path d="M16 10h.01"/><path d="M12 10h.01"/><path d="M8 10h.01"/><path d="M12 14h.01"/><path d="M8 14h.01"/><path d="M12 18h.01"/><path d="M8 18h.01"/></svg>
|
||||
<h1 class="text-4xl font-bold me-10">Duct Size</h1>
|
||||
</div>
|
||||
<p class="text-primary font-bold italic">Calculate duct size for the given parameters</p>
|
||||
<form class="space-y-4 mt-6" hx-post="/duct-size" hx-target="#resultView" hx-swap="outerHTML">
|
||||
<label class="input w-full"><span class="label">CFM</span>
|
||||
<input name="cfm" type="number" placeholder="1000" required autofocus>
|
||||
Friction Rate</label><label class="input w-full"><span class="label"></span>
|
||||
<input name="frictionRate" value="0.06" required type="number" min="0.01" step="0.01">
|
||||
Height</label><label class="input w-full"><span class="label"></span>
|
||||
<input name="height" type="number" placeholder="Height (Optional)"></label>
|
||||
<button class="btn btn-secondary btn-block mt-6" type="submit">Submit</button>
|
||||
</form>
|
||||
<div id="resultView"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<div class="bottom-0 left-0 bg-error">
|
||||
<footer class="footer sm:footer-horizontal footer-center
|
||||
bg-base-300 text-base-content p-4">
|
||||
<aside>
|
||||
<p>Copyright © 2026 - All rights reserved by Michael Housh</p>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-duct-calc/src/branch/main/LICENSE" target="_blank"></a>
|
||||
</aside>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -18,6 +18,7 @@
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
@@ -28,7 +29,7 @@
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between">
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<dialog id="loginForm" class="modal modal-open">
|
||||
<div class="modal-box">
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
<script src="/js/htmx-download.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
||||
<link rel="stylesheet" href="/css/output.css">
|
||||
<link rel="stylesheet" href="/css/htmx.css">
|
||||
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
|
||||
@@ -28,13 +29,13 @@
|
||||
<script src="https://unpkg.com/htmx-remove@latest" crossorigin="anonymous" integrity="sha384-NwB2Xh66PNEYfVki0ao13UAFmdNtMIdBKZ8sNGRT6hKfCPaINuZ4ScxS6vVAycPT"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between">
|
||||
<div class="flex flex-col min-h-screen min-w-full justify-between" data-theme="default">
|
||||
<main class="flex flex-col min-h-screen min-w-full grow mb-auto">
|
||||
<div>
|
||||
<nav class="navbar w-full bg-base-300 text-base-content shadow-sm mb-4">
|
||||
<div class="flex flex-1 space-x-4 items-center">
|
||||
<div class="tooltip tooltip-right" data-tip="Home">
|
||||
<a class="flex w-fit h-fit text-xl items-end px-4 py-2 btn btn-square btn-ghost hover:bg-neutral hover:text-white" href="/projects">
|
||||
<a class="flex w-fit h-fit text-xl items-end px-4 py-2 btn btn-square btn-ghost hover:bg-neutral hover:text-white" href="/">
|
||||
<img src="/images/mand_logo_sm.webp">
|
||||
Duct Calc<span></span></a>
|
||||
</div>
|
||||
@@ -153,7 +154,7 @@
|
||||
bg-base-300 text-base-content p-4">
|
||||
<aside>
|
||||
<p>Copyright © 2026 - All rights reserved by Michael Housh</p>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-manual-d/src/branch/main/LICENSE" target="_blank"></a>
|
||||
Openly licensed via CC-BY-NC-SA 4.0<a class="btn btn-ghost" href="https://git.housh.dev/michael/swift-duct-calc/src/branch/main/LICENSE" target="_blank"></a>
|
||||
</aside>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user