From 305ea41ad33ec311b42531881c57af8965f4c54f Mon Sep 17 00:00:00 2001 From: makearmy Date: Fri, 10 Jul 2026 17:25:34 -0400 Subject: [PATCH] improve utilities workspace navigation --- app/app/portal/utilities/Client.tsx | 10 +++--- app/app/styles/globals.css | 20 +++++++++++ .../portal/LaserToolkitSwitcher.tsx | 28 ++++++++++++---- app/components/portal/UtilitySwitcher.tsx | 33 +++++++++++-------- app/components/toolkit/ToolShell.tsx | 17 +++------- 5 files changed, 71 insertions(+), 37 deletions(-) diff --git a/app/app/portal/utilities/Client.tsx b/app/app/portal/utilities/Client.tsx index 0e8e1e1..5c58e3a 100644 --- a/app/app/portal/utilities/Client.tsx +++ b/app/app/portal/utilities/Client.tsx @@ -9,11 +9,13 @@ const UtilitySwitcher = dynamic(() => import("@/components/portal/UtilitySwitche export default function UtilitiesClient() { return ( -
-
-

Utilities

- +
+
+
~/utilities
+

Workshop utilities

+

Calculators and production tools in one workspace.

+
); } diff --git a/app/app/styles/globals.css b/app/app/styles/globals.css index 4841171..9ec318d 100644 --- a/app/app/styles/globals.css +++ b/app/app/styles/globals.css @@ -64,3 +64,23 @@ } } +@layer components { + /* Dense, terminal-inspired calculator workspace without nested floating cards. */ + .laser-tool-workspace [class~="rounded-lg"][class~="border"] { + @apply rounded-lg border-border/60 bg-background/20 shadow-none; + } + + .laser-tool-workspace [class~="rounded-lg"][class~="border"] > div:first-child { + @apply px-4 py-3; + } + + .laser-tool-workspace [class~="rounded-lg"][class~="border"] > div:not(:first-child) { + @apply px-4 pb-4; + } + + .laser-tool-workspace input, + .laser-tool-workspace select, + .laser-tool-workspace button[role="combobox"] { + @apply border-border/70 bg-background/70 shadow-none transition-colors focus:border-accent/70 focus:ring-1 focus:ring-accent/30; + } +} diff --git a/app/components/portal/LaserToolkitSwitcher.tsx b/app/components/portal/LaserToolkitSwitcher.tsx index 69ddfda..3448b7f 100644 --- a/app/components/portal/LaserToolkitSwitcher.tsx +++ b/app/components/portal/LaserToolkitSwitcher.tsx @@ -4,6 +4,7 @@ import { useMemo } from "react"; import { useSearchParams, useRouter } from "next/navigation"; import { cn } from "@/lib/utils"; +import { Calculator, ChevronDown } from "lucide-react"; import { TOOLKIT_TABS } from "@/components/utilities/laser-toolkit/registry"; export default function LaserToolkitSwitcher({ basePath = "/portal/utilities" }: { basePath?: string }) { @@ -34,23 +35,38 @@ export default function LaserToolkitSwitcher({ basePath = "/portal/utilities" }: const ActiveCmp = active.component; return ( -
-
+
+
+
+ + + +
+
{TOOLKIT_TABS.map(t => ( ))} -
+
-
+
diff --git a/app/components/portal/UtilitySwitcher.tsx b/app/components/portal/UtilitySwitcher.tsx index 36faf0e..86260aa 100644 --- a/app/components/portal/UtilitySwitcher.tsx +++ b/app/components/portal/UtilitySwitcher.tsx @@ -4,6 +4,7 @@ import { useEffect, useMemo, useRef, useState } from "react"; import dynamic from "next/dynamic"; import { useRouter, useSearchParams } from "next/navigation"; import { cn } from "@/lib/utils"; +import { ChevronRight, ExternalLink, TerminalSquare } from "lucide-react"; type Item = { key: string; // used in ?t= @@ -216,9 +217,13 @@ export default function UtilitySwitcher() { }, []); return ( -
- {/* top buttons unchanged */} -
+
+
- {/* ⛔️ removed the old border/padding frame here */} - +
+ +
); } diff --git a/app/components/toolkit/ToolShell.tsx b/app/components/toolkit/ToolShell.tsx index 3611a9d..28d134d 100644 --- a/app/components/toolkit/ToolShell.tsx +++ b/app/components/toolkit/ToolShell.tsx @@ -1,4 +1,3 @@ -import Link from "next/link"; import { cn } from "@/lib/utils"; type ToolShellProps = { @@ -19,31 +18,23 @@ export default function ToolShell({ subtitle, className, children, - backHref = "/laser-toolkit", - backLabel = "Back to Toolkit", }: ToolShellProps) { const desc = description ?? subtitle; return ( -
-
+
+
-

{title}

+
laser.calc
+

{title}

{desc ? (

{desc}

) : null}
- - {backLabel} -
{children}
); } -