diff --git a/app/client/components/ui/color-mode.tsx b/app/client/components/ui/color-mode.tsx index a34b968..b8231ef 100644 --- a/app/client/components/ui/color-mode.tsx +++ b/app/client/components/ui/color-mode.tsx @@ -1,67 +1,65 @@ -"use client" +'use client'; -import type { IconButtonProps } from "@chakra-ui/react" -import { ClientOnly, IconButton, Skeleton } from "@chakra-ui/react" -import { ThemeProvider, useTheme } from "next-themes" -import type { ThemeProviderProps } from "next-themes" -import * as React from "react" -import { LuMoon, LuSun } from "react-icons/lu" +import type { IconButtonProps } from '@chakra-ui/react'; +import { ClientOnly, IconButton, Skeleton } from '@chakra-ui/react'; +import { ThemeProvider, useTheme } from 'next-themes'; +import type { ThemeProviderProps } from 'next-themes'; +import * as React from 'react'; +import { LuMoon, LuSun } from 'react-icons/lu'; export interface ColorModeProviderProps extends ThemeProviderProps {} export function ColorModeProvider(props: ColorModeProviderProps) { - return ( - - ) + return ; } export function useColorMode() { - const { resolvedTheme, setTheme } = useTheme() + const { resolvedTheme, setTheme } = useTheme(); + console.log(resolvedTheme); const toggleColorMode = () => { - setTheme(resolvedTheme === "light" ? "dark" : "light") - } + setTheme(resolvedTheme === 'light' ? 'dark' : 'light'); + }; return { colorMode: resolvedTheme, setColorMode: setTheme, - toggleColorMode, - } + toggleColorMode + }; } export function useColorModeValue(light: T, dark: T) { - const { colorMode } = useColorMode() - return colorMode === "light" ? light : dark + const { colorMode } = useColorMode(); + return colorMode === 'light' ? light : dark; } export function ColorModeIcon() { - const { colorMode } = useColorMode() - return colorMode === "light" ? : + const { colorMode } = useColorMode(); + return colorMode === 'light' ? : ; } -interface ColorModeButtonProps extends Omit {} +interface ColorModeButtonProps extends Omit {} -export const ColorModeButton = React.forwardRef< - HTMLButtonElement, - ColorModeButtonProps ->(function ColorModeButton(props, ref) { - const { toggleColorMode } = useColorMode() - return ( - }> - - - - - ) -}) +export const ColorModeButton = React.forwardRef( + function ColorModeButton(props, ref) { + const { toggleColorMode } = useColorMode(); + return ( + }> + + + + + ); + } +); diff --git a/app/client/components/ui/provider.tsx b/app/client/components/ui/provider.tsx index bd5636b..9a5fa9b 100644 --- a/app/client/components/ui/provider.tsx +++ b/app/client/components/ui/provider.tsx @@ -6,8 +6,9 @@ import { ColorModeProvider, type ColorModeProviderProps } from './color-mode'; export function Provider(props: ColorModeProviderProps) { return ( - - {props.children} + + {props.children} + ); } diff --git a/app/client/hooks/useIdentity.tsx b/app/client/hooks/identity.tsx similarity index 100% rename from app/client/hooks/useIdentity.tsx rename to app/client/hooks/identity.tsx diff --git a/app/client/pages/__root.tsx b/app/client/pages/__root.tsx index c1e32de..cd1fc55 100644 --- a/app/client/pages/__root.tsx +++ b/app/client/pages/__root.tsx @@ -1,10 +1,12 @@ -import { Icon, Stack, Text } from '@chakra-ui/react'; +import { Separator, Icon, Menu, Stack, Text } from '@chakra-ui/react'; import { createRootRouteWithContext, Link, Outlet } from '@tanstack/react-router'; import React from 'react'; +import { Avatar } from '../components/ui/avatar'; import { Button } from '../components/ui/button'; import { Tooltip } from '../components/ui/tooltip'; import { useAuth } from '../hooks/auth'; import { appName } from '../main'; +import { ColorModeButton } from '../components/ui/color-mode'; const TanStackRouterDevtools = process.env.NODE_ENV === 'production' @@ -41,8 +43,47 @@ export const Route = createRootRouteWithContext()({ - - {!isAuthenticated ? ( + + + + {isAuthenticated ? ( + + + + + + + <> + logout()}> + + + + + + Log out + + + + + + + + ) : ( + <> + + + + + + + + + )} + + {/* {!isAuthenticated ? ( <> @@ -57,10 +98,10 @@ export const Route = createRootRouteWithContext()({ - )} + )} */} -
+ diff --git a/app/client/pages/login.tsx b/app/client/pages/login.tsx index faad333..9952b53 100644 --- a/app/client/pages/login.tsx +++ b/app/client/pages/login.tsx @@ -1,10 +1,11 @@ -import { Heading, Input, Stack } from '@chakra-ui/react'; +import { Heading, Input, Stack, Text } from '@chakra-ui/react'; import { Button } from '@client/components/ui/button'; import { Field } from '@client/components/ui/field'; import { valibotResolver } from '@hookform/resolvers/valibot'; import { createFileRoute, redirect } from '@tanstack/react-router'; import { useForm } from 'react-hook-form'; import * as v from 'valibot'; +import { Link } from '../components/ui/link'; import { PasswordInput } from '../components/ui/password-input'; import { useAuth } from '../hooks/auth'; @@ -20,6 +21,12 @@ function LoginComponent() { Login + + Don't have an account?{' '} + + Sign up + + ); } diff --git a/app/client/pages/register.tsx b/app/client/pages/register.tsx index b137044..3e75ec2 100644 --- a/app/client/pages/register.tsx +++ b/app/client/pages/register.tsx @@ -1,5 +1,5 @@ import { gql } from '@apollo/client'; -import { Heading, Input, Stack } from '@chakra-ui/react'; +import { Heading, Input, Stack, Text } from '@chakra-ui/react'; import { Button } from '@client/components/ui/button'; import { Field } from '@client/components/ui/field'; import { PasswordInput } from '@client/components/ui/password-input'; @@ -8,6 +8,7 @@ import { valibotResolver } from '@hookform/resolvers/valibot'; import { createFileRoute, redirect, useNavigate } from '@tanstack/react-router'; import { useForm } from 'react-hook-form'; import * as v from 'valibot'; +import { Link } from '../components/ui/link'; import { useToastMutation } from '../hooks/useToastMutation'; export const Route = createFileRoute('/register')({ @@ -22,6 +23,12 @@ function RegisterComponent() { Sign up + + Already have an account?{' '} + + Sign in + + ); }