From ba5c24600ab4a8b3b8597a0cbf701b77bbd0d23c Mon Sep 17 00:00:00 2001 From: Brayden Wilmoth Date: Sat, 19 Oct 2024 10:53:10 -0400 Subject: [PATCH 1/8] Visual touch-ups --- src/components/gui/database-gui.tsx | 6 +++--- src/components/gui/sidebar-tab.tsx | 23 +++++------------------ 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/src/components/gui/database-gui.tsx b/src/components/gui/database-gui.tsx index aa79eb9..afff22f 100644 --- a/src/components/gui/database-gui.tsx +++ b/src/components/gui/database-gui.tsx @@ -88,14 +88,14 @@ export default function DatabaseGui() { key: "database", name: "Schema", content: , - icon: , + icon:
, }, docDriver ? { key: "saved", name: "Queries", content: , - icon: , + icon: , } : undefined, collaborationDriver @@ -103,7 +103,7 @@ export default function DatabaseGui() { key: "setting", name: "Setting", content: , - icon: , + icon: , } : undefined, ].filter(Boolean) as SidebarTabItem[]; diff --git a/src/components/gui/sidebar-tab.tsx b/src/components/gui/sidebar-tab.tsx index 1fca4ff..d1372f2 100644 --- a/src/components/gui/sidebar-tab.tsx +++ b/src/components/gui/sidebar-tab.tsx @@ -35,26 +35,13 @@ export default function SidebarTab({ tabs }: Readonly) { const config = useConfig(); - const color = config.color; - let bgPrimary = "border-l-gray-500 dark:border-l-gray-600"; - - if (color === "red") { - bgPrimary = "border-l-red-500 dark:border-l-red-600"; - } else if (color === "yellow") { - bgPrimary = "border-l-yellow-500 dark:border-l-yellow-600"; - } else if (color === "green") { - bgPrimary = "border-l-green-500 dark:border-l-green-600"; - } else if (color === "gray") { - bgPrimary = "border-l-gray-500 dark:border-l-gray-600"; - } - return ( -
+
-
+
-
+
) { } }} className={cn( - "cursor cursor-pointer h-12 w-12 flex flex-col gap-0.5 justify-center items-center rounded-t hover:text-primary", + "cursor cursor-pointer h-10 w-10 flex flex-col gap-0.5 justify-center items-center hover:text-neutral-900 dark:hover:text-neutral-100 text-neutral-400 dark:text-neutral-600", selectedIndex === idx - ? "bg-secondary rounded-lg text-primary" + ? "bg-neutral-200 dark:bg-neutral-800 rounded-xl text-neutral-900 dark:text-neutral-100" : undefined )} > From 288229fc3ecf29bdbd428033a1dbf5343170a7e7 Mon Sep 17 00:00:00 2001 From: Brayden Wilmoth Date: Sat, 19 Oct 2024 13:38:03 -0400 Subject: [PATCH 2/8] Touch up the sidebar options area --- src/app/globals.css | 4 ++-- src/components/gui/database-gui.tsx | 2 +- src/components/gui/schema-sidebar.tsx | 21 ++++++++++++--------- src/components/listview/index.tsx | 6 +++--- src/components/ui/tooltip.tsx | 2 +- tailwind.config.ts | 5 +++++ 6 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/app/globals.css b/src/app/globals.css index 9debf4f..18e8663 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -53,7 +53,7 @@ body { --destructive: #f1f5f9; --destructive-foreground: red; - --border: #e2e8f0; + --border: #e5e5e5; --input: #e2e8f0; --ring: #ccc; @@ -91,7 +91,7 @@ body { --destructive: red; --destructive-foreground: white; - --border: #313131; + --border: #262626; --input: #333; --ring: #444; diff --git a/src/components/gui/database-gui.tsx b/src/components/gui/database-gui.tsx index afff22f..9f805f8 100644 --- a/src/components/gui/database-gui.tsx +++ b/src/components/gui/database-gui.tsx @@ -23,7 +23,7 @@ import { Binoculars, GearSix, Table } from "@phosphor-icons/react"; export default function DatabaseGui() { const DEFAULT_WIDTH = 300; - const [defaultWidthPercentage, setDefaultWidthPercentage] = useState(20); + const [defaultWidthPercentage, setDefaultWidthPercentage] = useState(25); useEffect(() => { setDefaultWidthPercentage((DEFAULT_WIDTH / window.innerWidth) * 100); diff --git a/src/components/gui/schema-sidebar.tsx b/src/components/gui/schema-sidebar.tsx index e3a386f..ce0b78d 100644 --- a/src/components/gui/schema-sidebar.tsx +++ b/src/components/gui/schema-sidebar.tsx @@ -20,15 +20,15 @@ export default function SchemaView() { return (
-
-
-

Tables

+
+
+

Tables

-
-
- +
+
+
{ setSearch(e.currentTarget.value); }} diff --git a/src/components/listview/index.tsx b/src/components/listview/index.tsx index 39d3d67..0a0f9f2 100644 --- a/src/components/listview/index.tsx +++ b/src/components/listview/index.tsx @@ -189,10 +189,10 @@ function renderList(props: ListViewRendererProps): React.ReactElement { >
Date: Sat, 19 Oct 2024 14:04:43 -0400 Subject: [PATCH 3/8] Update resize handler styles --- src/components/gui/tabs/query-tab.tsx | 2 +- src/components/ui/resizable.tsx | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/components/gui/tabs/query-tab.tsx b/src/components/gui/tabs/query-tab.tsx index 2a8cf3a..7c7c9a1 100644 --- a/src/components/gui/tabs/query-tab.tsx +++ b/src/components/gui/tabs/query-tab.tsx @@ -340,7 +340,7 @@ export default function QueryWindow({
- + {windowTab} diff --git a/src/components/ui/resizable.tsx b/src/components/ui/resizable.tsx index 46eef11..4a95d0d 100644 --- a/src/components/ui/resizable.tsx +++ b/src/components/ui/resizable.tsx @@ -23,9 +23,11 @@ const ResizablePanel = ResizablePrimitive.Panel; const ResizableHandle = ({ withHandle, className, + orientation = "vertical", ...props }: React.ComponentProps & { withHandle?: boolean; + orientation?: "vertical" | "horizontal"; }) => ( {withHandle && ( -
- +
+
)} From 91778f1ef8ca80ee19e88f4a353470125bb76420 Mon Sep 17 00:00:00 2001 From: Brayden Wilmoth Date: Sat, 19 Oct 2024 14:28:18 -0400 Subject: [PATCH 4/8] Tab bar style updates --- ...K3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2 | Bin 0 -> 17040 bytes ...wrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2 | Bin 0 -> 37780 bytes ...K3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2 | Bin 0 -> 21960 bytes ...K3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2 | Bin 0 -> 57244 bytes ...K3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2 | Bin 0 -> 26728 bytes ...K3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2 | Bin 0 -> 11924 bytes ...K3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2 | Bin 0 -> 8652 bytes src/app/fonts/a | Bin 0 -> 41056 bytes src/app/fonts/d.woff | Bin 0 -> 21332 bytes src/app/fonts/l | Bin 0 -> 18180 bytes src/app/inter-font.css | 304 ++++++++++++++++++ src/app/layout.tsx | 1 + src/components/gui/sortable-tab.tsx | 14 +- src/components/gui/windows-tab.tsx | 2 +- 14 files changed, 310 insertions(+), 11 deletions(-) create mode 100644 src/app/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2 create mode 100644 src/app/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2 create mode 100644 src/app/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2 create mode 100644 src/app/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2 create mode 100644 src/app/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2 create mode 100644 src/app/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2 create mode 100644 src/app/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2 create mode 100644 src/app/fonts/a create mode 100644 src/app/fonts/d.woff create mode 100644 src/app/fonts/l create mode 100644 src/app/inter-font.css diff --git a/src/app/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2 b/src/app/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c974fecaa2f8304b62c079a68c9a3b1edc916a52 GIT binary patch literal 17040 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