From f503b261f53c81199a396e27b71f8ca178956bb8 Mon Sep 17 00:00:00 2001 From: Khairul Hidayat Date: Sat, 17 Aug 2024 00:21:23 +0700 Subject: [PATCH] feat: fix responsive layout, add theme switcher --- src/app/app.tsx | 4 +- src/app/themes.ts | 16 +++ src/components/containers/sidebar.tsx | 29 +++++- src/components/containers/theme-provider.tsx | 15 +++ src/components/layouts/main-layout.tsx | 60 ++++++++---- src/components/ui/select.tsx | 7 +- src/components/ui/toggle.tsx | 51 ++++++++++ src/lib/utils.ts | 2 +- .../buckets/manage/components/menu-button.tsx | 2 +- .../manage/components/overview-aliases.tsx | 97 +++++++++++++++++-- .../manage/components/overview-quota.tsx | 40 ++------ .../components/overview-website-access.tsx | 29 ++---- src/pages/buckets/manage/hooks.ts | 35 ++++++- src/pages/buckets/manage/schema.ts | 6 ++ src/pages/buckets/page.tsx | 2 +- src/pages/cluster/components/nodes-list.tsx | 4 +- src/pages/cluster/page.tsx | 2 +- src/pages/home/components/stats-card.tsx | 2 +- src/pages/home/page.tsx | 17 +++- src/pages/keys/page.tsx | 2 +- src/stores/app-store.ts | 25 +++++ tailwind.config.js | 2 +- 22 files changed, 349 insertions(+), 100 deletions(-) create mode 100644 src/app/themes.ts create mode 100644 src/components/containers/theme-provider.tsx create mode 100644 src/components/ui/toggle.tsx create mode 100644 src/stores/app-store.ts diff --git a/src/app/app.tsx b/src/app/app.tsx index 8ec47b4..535a82e 100644 --- a/src/app/app.tsx +++ b/src/app/app.tsx @@ -1,9 +1,10 @@ import { PageContextProvider } from "@/context/page-context"; import Router from "./router"; -import "./styles.css"; import { Toaster } from "sonner"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { useState } from "react"; +import ThemeProvider from "@/components/containers/theme-provider"; +import "./styles.css"; const App = () => { const [queryClient] = useState(() => new QueryClient()); @@ -14,6 +15,7 @@ const App = () => { + ); }; diff --git a/src/app/themes.ts b/src/app/themes.ts new file mode 100644 index 0000000..048ce65 --- /dev/null +++ b/src/app/themes.ts @@ -0,0 +1,16 @@ +// https://daisyui.com/docs/themes/ + +export const themes = [ + "pastel", + "dark", + "dracula", + "cupcake", + "dim", + "night", + "nord", + "corporate", + "valentine", + "winter", +] as const; + +export type Themes = (typeof themes)[number]; diff --git a/src/components/containers/sidebar.tsx b/src/components/containers/sidebar.tsx index 4e46c49..f5db872 100644 --- a/src/components/containers/sidebar.tsx +++ b/src/components/containers/sidebar.tsx @@ -1,12 +1,16 @@ -import { cn } from "@/lib/utils"; +import { cn, ucfirst } from "@/lib/utils"; import { ArchiveIcon, HardDrive, KeySquare, LayoutDashboard, + Palette, } from "lucide-react"; -import { Menu } from "react-daisyui"; +import { Dropdown, Menu } from "react-daisyui"; import { Link, useLocation } from "react-router-dom"; +import Button from "../ui/button"; +import { themes } from "@/app/themes"; +import appStore from "@/stores/app-store"; const pages = [ { icon: LayoutDashboard, title: "Dashboard", path: "/", exact: true }, @@ -19,7 +23,7 @@ const Sidebar = () => { const { pathname } = useLocation(); return ( -