Update dependencies. (#225)

This commit is contained in:
Lee Robinson 2024-01-20 11:01:29 -06:00 committed by GitHub
commit ce374ceccb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 621 additions and 629 deletions

View file

@ -7,7 +7,6 @@ interface ChatLayoutProps {
export default async function ChatLayout({ children }: ChatLayoutProps) { export default async function ChatLayout({ children }: ChatLayoutProps) {
return ( return (
<div className="relative flex h-[calc(100vh_-_theme(spacing.16))] overflow-hidden"> <div className="relative flex h-[calc(100vh_-_theme(spacing.16))] overflow-hidden">
{/* @ts-ignore */}
<SidebarDesktop /> <SidebarDesktop />
<div className="group w-full overflow-auto pl-0 animate-in duration-300 ease-in-out peer-[[data-state=open]]:lg:pl-[250px] peer-[[data-state=open]]:xl:pl-[300px]"> <div className="group w-full overflow-auto pl-0 animate-in duration-300 ease-in-out peer-[[data-state=open]]:lg:pl-[250px] peer-[[data-state=open]]:xl:pl-[300px]">
{children} {children}

View file

@ -51,7 +51,6 @@ export default function RootLayout({ children }: RootLayoutProps) {
disableTransitionOnChange disableTransitionOnChange
> >
<div className="flex flex-col min-h-screen"> <div className="flex flex-col min-h-screen">
{/* @ts-ignore */}
<Header /> <Header />
<main className="flex flex-col flex-1 bg-muted/50">{children}</main> <main className="flex flex-col flex-1 bg-muted/50">{children}</main>
</div> </div>

View file

@ -8,6 +8,7 @@ export default async function SignInPage() {
if (session?.user) { if (session?.user) {
redirect('/') redirect('/')
} }
return ( return (
<div className="flex h-[calc(100vh-theme(spacing.16))] items-center justify-center py-10"> <div className="flex h-[calc(100vh-theme(spacing.16))] items-center justify-center py-10">
<LoginButton /> <LoginButton />

View file

@ -23,7 +23,7 @@ export function ChatMessage({ message, ...props }: ChatMessageProps) {
> >
<div <div
className={cn( className={cn(
'flex h-8 w-8 shrink-0 select-none items-center justify-center rounded-md border shadow', 'flex size-8 shrink-0 select-none items-center justify-center rounded-md border shadow',
message.role === 'user' message.role === 'user'
? 'bg-background' ? 'bg-background'
: 'bg-primary text-primary-foreground' : 'bg-primary text-primary-foreground'

View file

@ -28,12 +28,12 @@ async function UserOrLogin() {
</> </>
) : ( ) : (
<Link href="/" target="_blank" rel="nofollow"> <Link href="/" target="_blank" rel="nofollow">
<IconNextChat className="w-6 h-6 mr-2 dark:hidden" inverted /> <IconNextChat className="size-6 mr-2 dark:hidden" inverted />
<IconNextChat className="hidden w-6 h-6 mr-2 dark:block" /> <IconNextChat className="hidden size-6 mr-2 dark:block" />
</Link> </Link>
)} )}
<div className="flex items-center"> <div className="flex items-center">
<IconSeparator className="w-6 h-6 text-muted-foreground/50" /> <IconSeparator className="size-6 text-muted-foreground/50" />
{session?.user ? ( {session?.user ? (
<UserMenu user={session.user} /> <UserMenu user={session.user} />
) : ( ) : (

View file

@ -56,7 +56,7 @@ export function PromptForm({
}} }}
className={cn( className={cn(
buttonVariants({ size: 'sm', variant: 'outline' }), buttonVariants({ size: 'sm', variant: 'outline' }),
'absolute left-0 top-4 h-8 w-8 rounded-full bg-background p-0 sm:left-4' 'absolute left-0 top-4 size-8 rounded-full bg-background p-0 sm:left-4'
)} )}
> >
<IconPlus /> <IconPlus />

View file

@ -47,7 +47,7 @@ export function SidebarActions({
<TooltipTrigger asChild> <TooltipTrigger asChild>
<Button <Button
variant="ghost" variant="ghost"
className="w-6 h-6 p-0 hover:bg-background" className="size-6 p-0 hover:bg-background"
onClick={() => setShareDialogOpen(true)} onClick={() => setShareDialogOpen(true)}
> >
<IconShare /> <IconShare />
@ -60,7 +60,7 @@ export function SidebarActions({
<TooltipTrigger asChild> <TooltipTrigger asChild>
<Button <Button
variant="ghost" variant="ghost"
className="w-6 h-6 p-0 hover:bg-background" className="size-6 p-0 hover:bg-background"
disabled={isRemovePending} disabled={isRemovePending}
onClick={() => setDeleteDialogOpen(true)} onClick={() => setDeleteDialogOpen(true)}
> >

View file

@ -53,7 +53,7 @@ export function SidebarItem({ index, chat, children }: SidebarItemProps) {
ease: 'easeIn' ease: 'easeIn'
}} }}
> >
<div className="absolute left-2 top-1 flex h-6 w-6 items-center justify-center"> <div className="absolute left-2 top-1 flex size-6 items-center justify-center">
{chat.sharePath ? ( {chat.sharePath ? (
<Tooltip delayDuration={1000}> <Tooltip delayDuration={1000}>
<TooltipTrigger <TooltipTrigger

View file

@ -15,8 +15,8 @@ export function SidebarMobile({ children }: SidebarMobileProps) {
return ( return (
<Sheet> <Sheet>
<SheetTrigger asChild> <SheetTrigger asChild>
<Button variant="ghost" className="-ml-2 flex h-9 w-9 p-0 lg:hidden"> <Button variant="ghost" className="-ml-2 flex size-9 p-0 lg:hidden">
<IconSidebar className="h-6 w-6" /> <IconSidebar className="size-6" />
<span className="sr-only">Toggle Sidebar</span> <span className="sr-only">Toggle Sidebar</span>
</Button> </Button>
</SheetTrigger> </SheetTrigger>

View file

@ -12,12 +12,12 @@ export function SidebarToggle() {
return ( return (
<Button <Button
variant="ghost" variant="ghost"
className="-ml-2 hidden h-9 w-9 p-0 lg:flex" className="-ml-2 hidden size-9 p-0 lg:flex"
onClick={() => { onClick={() => {
toggleSidebar() toggleSidebar()
}} }}
> >
<IconSidebar className="h-6 w-6" /> <IconSidebar className="size-6" />
<span className="sr-only">Toggle Sidebar</span> <span className="sr-only">Toggle Sidebar</span>
</Button> </Button>
) )

View file

@ -2,7 +2,7 @@ export function TailwindIndicator() {
if (process.env.NODE_ENV === 'production') return null if (process.env.NODE_ENV === 'production') return null
return ( return (
<div className="fixed bottom-1 left-1 z-50 flex h-6 w-6 items-center justify-center rounded-full bg-gray-800 p-3 font-mono text-xs text-white"> <div className="fixed bottom-1 left-1 z-50 flex size-6 items-center justify-center rounded-full bg-gray-800 p-3 font-mono text-xs text-white">
<div className="block sm:hidden">xs</div> <div className="block sm:hidden">xs</div>
<div className="hidden sm:block md:hidden">sm</div> <div className="hidden sm:block md:hidden">sm</div>
<div className="hidden md:block lg:hidden">md</div> <div className="hidden md:block lg:hidden">md</div>

View file

@ -24,7 +24,7 @@ const buttonVariants = cva(
default: 'h-8 px-4 py-2', default: 'h-8 px-4 py-2',
sm: 'h-8 rounded-md px-3', sm: 'h-8 rounded-md px-3',
lg: 'h-11 rounded-md px-8', lg: 'h-11 rounded-md px-8',
icon: 'h-8 w-8 p-0' icon: 'size-8 p-0'
} }
}, },
defaultVariants: { defaultVariants: {

View file

@ -45,7 +45,7 @@ const DialogContent = React.forwardRef<
> >
{children} {children}
<DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground"> <DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
<IconClose className="h-4 w-4" /> <IconClose className="size-4" />
<span className="sr-only">Close</span> <span className="sr-only">Close</span>
</DialogPrimitive.Close> </DialogPrimitive.Close>
</DialogPrimitive.Content> </DialogPrimitive.Content>

View file

@ -16,7 +16,7 @@ function IconNextChat({
viewBox="0 0 17 17" viewBox="0 0 17 17"
fill="none" fill="none"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<defs> <defs>
@ -95,7 +95,7 @@ function IconOpenAI({ className, ...props }: React.ComponentProps<'svg'>) {
viewBox="0 0 24 24" viewBox="0 0 24 24"
role="img" role="img"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<title>OpenAI icon</title> <title>OpenAI icon</title>
@ -110,7 +110,7 @@ function IconVercel({ className, ...props }: React.ComponentProps<'svg'>) {
aria-label="Vercel logomark" aria-label="Vercel logomark"
role="img" role="img"
viewBox="0 0 74 64" viewBox="0 0 74 64"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path <path
@ -128,7 +128,7 @@ function IconGitHub({ className, ...props }: React.ComponentProps<'svg'>) {
viewBox="0 0 24 24" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<title>GitHub</title> <title>GitHub</title>
@ -148,7 +148,7 @@ function IconSeparator({ className, ...props }: React.ComponentProps<'svg'>) {
strokeWidth="1" strokeWidth="1"
viewBox="0 0 24 24" viewBox="0 0 24 24"
aria-hidden="true" aria-hidden="true"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M16.88 3.549L7.12 20.451"></path> <path d="M16.88 3.549L7.12 20.451"></path>
@ -162,7 +162,7 @@ function IconArrowDown({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="m205.66 149.66-72 72a8 8 0 0 1-11.32 0l-72-72a8 8 0 0 1 11.32-11.32L120 196.69V40a8 8 0 0 1 16 0v156.69l58.34-58.35a8 8 0 0 1 11.32 11.32Z" /> <path d="m205.66 149.66-72 72a8 8 0 0 1-11.32 0l-72-72a8 8 0 0 1 11.32-11.32L120 196.69V40a8 8 0 0 1 16 0v156.69l58.34-58.35a8 8 0 0 1 11.32 11.32Z" />
@ -176,7 +176,7 @@ function IconArrowRight({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="m221.66 133.66-72 72a8 8 0 0 1-11.32-11.32L196.69 136H40a8 8 0 0 1 0-16h156.69l-58.35-58.34a8 8 0 0 1 11.32-11.32l72 72a8 8 0 0 1 0 11.32Z" /> <path d="m221.66 133.66-72 72a8 8 0 0 1-11.32-11.32L196.69 136H40a8 8 0 0 1 0-16h156.69l-58.35-58.34a8 8 0 0 1 11.32-11.32l72 72a8 8 0 0 1 0 11.32Z" />
@ -190,7 +190,7 @@ function IconUser({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M230.92 212c-15.23-26.33-38.7-45.21-66.09-54.16a72 72 0 1 0-73.66 0c-27.39 8.94-50.86 27.82-66.09 54.16a8 8 0 1 0 13.85 8c18.84-32.56 52.14-52 89.07-52s70.23 19.44 89.07 52a8 8 0 1 0 13.85-8ZM72 96a56 56 0 1 1 56 56 56.06 56.06 0 0 1-56-56Z" /> <path d="M230.92 212c-15.23-26.33-38.7-45.21-66.09-54.16a72 72 0 1 0-73.66 0c-27.39 8.94-50.86 27.82-66.09 54.16a8 8 0 1 0 13.85 8c18.84-32.56 52.14-52 89.07-52s70.23 19.44 89.07 52a8 8 0 1 0 13.85-8ZM72 96a56 56 0 1 1 56 56 56.06 56.06 0 0 1-56-56Z" />
@ -204,7 +204,7 @@ function IconPlus({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M224 128a8 8 0 0 1-8 8h-80v80a8 8 0 0 1-16 0v-80H40a8 8 0 0 1 0-16h80V40a8 8 0 0 1 16 0v80h80a8 8 0 0 1 8 8Z" /> <path d="M224 128a8 8 0 0 1-8 8h-80v80a8 8 0 0 1-16 0v-80H40a8 8 0 0 1 0-16h80V40a8 8 0 0 1 16 0v80h80a8 8 0 0 1 8 8Z" />
@ -218,7 +218,7 @@ function IconArrowElbow({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M200 32v144a8 8 0 0 1-8 8H67.31l34.35 34.34a8 8 0 0 1-11.32 11.32l-48-48a8 8 0 0 1 0-11.32l48-48a8 8 0 0 1 11.32 11.32L67.31 168H184V32a8 8 0 0 1 16 0Z" /> <path d="M200 32v144a8 8 0 0 1-8 8H67.31l34.35 34.34a8 8 0 0 1-11.32 11.32l-48-48a8 8 0 0 1 0-11.32l48-48a8 8 0 0 1 11.32 11.32L67.31 168H184V32a8 8 0 0 1 16 0Z" />
@ -232,7 +232,7 @@ function IconSpinner({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4 animate-spin', className)} className={cn('size-4 animate-spin', className)}
{...props} {...props}
> >
<path d="M232 128a104 104 0 0 1-208 0c0-41 23.81-78.36 60.66-95.27a8 8 0 0 1 6.68 14.54C60.15 61.59 40 93.27 40 128a88 88 0 0 0 176 0c0-34.73-20.15-66.41-51.34-80.73a8 8 0 0 1 6.68-14.54C208.19 49.64 232 87 232 128Z" /> <path d="M232 128a104 104 0 0 1-208 0c0-41 23.81-78.36 60.66-95.27a8 8 0 0 1 6.68 14.54C60.15 61.59 40 93.27 40 128a88 88 0 0 0 176 0c0-34.73-20.15-66.41-51.34-80.73a8 8 0 0 1 6.68-14.54C208.19 49.64 232 87 232 128Z" />
@ -246,7 +246,7 @@ function IconMessage({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M216 48H40a16 16 0 0 0-16 16v160a15.84 15.84 0 0 0 9.25 14.5A16.05 16.05 0 0 0 40 240a15.89 15.89 0 0 0 10.25-3.78.69.69 0 0 0 .13-.11L82.5 208H216a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16ZM40 224Zm176-32H82.5a16 16 0 0 0-10.3 3.75l-.12.11L40 224V64h176Z" /> <path d="M216 48H40a16 16 0 0 0-16 16v160a15.84 15.84 0 0 0 9.25 14.5A16.05 16.05 0 0 0 40 240a15.89 15.89 0 0 0 10.25-3.78.69.69 0 0 0 .13-.11L82.5 208H216a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16ZM40 224Zm176-32H82.5a16 16 0 0 0-10.3 3.75l-.12.11L40 224V64h176Z" />
@ -260,7 +260,7 @@ function IconTrash({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M216 48h-40v-8a24 24 0 0 0-24-24h-48a24 24 0 0 0-24 24v8H40a8 8 0 0 0 0 16h8v144a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16V64h8a8 8 0 0 0 0-16ZM96 40a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v8H96Zm96 168H64V64h128Zm-80-104v64a8 8 0 0 1-16 0v-64a8 8 0 0 1 16 0Zm48 0v64a8 8 0 0 1-16 0v-64a8 8 0 0 1 16 0Z" /> <path d="M216 48h-40v-8a24 24 0 0 0-24-24h-48a24 24 0 0 0-24 24v8H40a8 8 0 0 0 0 16h8v144a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16V64h8a8 8 0 0 0 0-16ZM96 40a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v8H96Zm96 168H64V64h128Zm-80-104v64a8 8 0 0 1-16 0v-64a8 8 0 0 1 16 0Zm48 0v64a8 8 0 0 1-16 0v-64a8 8 0 0 1 16 0Z" />
@ -274,7 +274,7 @@ function IconRefresh({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M197.67 186.37a8 8 0 0 1 0 11.29C196.58 198.73 170.82 224 128 224c-37.39 0-64.53-22.4-80-39.85V208a8 8 0 0 1-16 0v-48a8 8 0 0 1 8-8h48a8 8 0 0 1 0 16H55.44C67.76 183.35 93 208 128 208c36 0 58.14-21.46 58.36-21.68a8 8 0 0 1 11.31.05ZM216 40a8 8 0 0 0-8 8v23.85C192.53 54.4 165.39 32 128 32c-42.82 0-68.58 25.27-69.66 26.34a8 8 0 0 0 11.3 11.34C69.86 69.46 92 48 128 48c35 0 60.24 24.65 72.56 40H168a8 8 0 0 0 0 16h48a8 8 0 0 0 8-8V48a8 8 0 0 0-8-8Z" /> <path d="M197.67 186.37a8 8 0 0 1 0 11.29C196.58 198.73 170.82 224 128 224c-37.39 0-64.53-22.4-80-39.85V208a8 8 0 0 1-16 0v-48a8 8 0 0 1 8-8h48a8 8 0 0 1 0 16H55.44C67.76 183.35 93 208 128 208c36 0 58.14-21.46 58.36-21.68a8 8 0 0 1 11.31.05ZM216 40a8 8 0 0 0-8 8v23.85C192.53 54.4 165.39 32 128 32c-42.82 0-68.58 25.27-69.66 26.34a8 8 0 0 0 11.3 11.34C69.86 69.46 92 48 128 48c35 0 60.24 24.65 72.56 40H168a8 8 0 0 0 0 16h48a8 8 0 0 0 8-8V48a8 8 0 0 0-8-8Z" />
@ -288,7 +288,7 @@ function IconStop({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24Zm0 192a88 88 0 1 1 88-88 88.1 88.1 0 0 1-88 88Zm24-120h-48a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8Zm-8 48h-32v-32h32Z" /> <path d="M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24Zm0 192a88 88 0 1 1 88-88 88.1 88.1 0 0 1-88 88Zm24-120h-48a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8Zm-8 48h-32v-32h32Z" />
@ -302,7 +302,7 @@ function IconSidebar({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16ZM40 56h40v144H40Zm176 144H96V56h120v144Z" /> <path d="M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16ZM40 56h40v144H40Zm176 144H96V56h120v144Z" />
@ -316,7 +316,7 @@ function IconMoon({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M233.54 142.23a8 8 0 0 0-8-2 88.08 88.08 0 0 1-109.8-109.8 8 8 0 0 0-10-10 104.84 104.84 0 0 0-52.91 37A104 104 0 0 0 136 224a103.09 103.09 0 0 0 62.52-20.88 104.84 104.84 0 0 0 37-52.91 8 8 0 0 0-1.98-7.98Zm-44.64 48.11A88 88 0 0 1 65.66 67.11a89 89 0 0 1 31.4-26A106 106 0 0 0 96 56a104.11 104.11 0 0 0 104 104 106 106 0 0 0 14.92-1.06 89 89 0 0 1-26.02 31.4Z" /> <path d="M233.54 142.23a8 8 0 0 0-8-2 88.08 88.08 0 0 1-109.8-109.8 8 8 0 0 0-10-10 104.84 104.84 0 0 0-52.91 37A104 104 0 0 0 136 224a103.09 103.09 0 0 0 62.52-20.88 104.84 104.84 0 0 0 37-52.91 8 8 0 0 0-1.98-7.98Zm-44.64 48.11A88 88 0 0 1 65.66 67.11a89 89 0 0 1 31.4-26A106 106 0 0 0 96 56a104.11 104.11 0 0 0 104 104 106 106 0 0 0 14.92-1.06 89 89 0 0 1-26.02 31.4Z" />
@ -330,7 +330,7 @@ function IconSun({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M120 40V16a8 8 0 0 1 16 0v24a8 8 0 0 1-16 0Zm72 88a64 64 0 1 1-64-64 64.07 64.07 0 0 1 64 64Zm-16 0a48 48 0 1 0-48 48 48.05 48.05 0 0 0 48-48ZM58.34 69.66a8 8 0 0 0 11.32-11.32l-16-16a8 8 0 0 0-11.32 11.32Zm0 116.68-16 16a8 8 0 0 0 11.32 11.32l16-16a8 8 0 0 0-11.32-11.32ZM192 72a8 8 0 0 0 5.66-2.34l16-16a8 8 0 0 0-11.32-11.32l-16 16A8 8 0 0 0 192 72Zm5.66 114.34a8 8 0 0 0-11.32 11.32l16 16a8 8 0 0 0 11.32-11.32ZM48 128a8 8 0 0 0-8-8H16a8 8 0 0 0 0 16h24a8 8 0 0 0 8-8Zm80 80a8 8 0 0 0-8 8v24a8 8 0 0 0 16 0v-24a8 8 0 0 0-8-8Zm112-88h-24a8 8 0 0 0 0 16h24a8 8 0 0 0 0-16Z" /> <path d="M120 40V16a8 8 0 0 1 16 0v24a8 8 0 0 1-16 0Zm72 88a64 64 0 1 1-64-64 64.07 64.07 0 0 1 64 64Zm-16 0a48 48 0 1 0-48 48 48.05 48.05 0 0 0 48-48ZM58.34 69.66a8 8 0 0 0 11.32-11.32l-16-16a8 8 0 0 0-11.32 11.32Zm0 116.68-16 16a8 8 0 0 0 11.32 11.32l16-16a8 8 0 0 0-11.32-11.32ZM192 72a8 8 0 0 0 5.66-2.34l16-16a8 8 0 0 0-11.32-11.32l-16 16A8 8 0 0 0 192 72Zm5.66 114.34a8 8 0 0 0-11.32 11.32l16 16a8 8 0 0 0 11.32-11.32ZM48 128a8 8 0 0 0-8-8H16a8 8 0 0 0 0 16h24a8 8 0 0 0 8-8Zm80 80a8 8 0 0 0-8 8v24a8 8 0 0 0 16 0v-24a8 8 0 0 0-8-8Zm112-88h-24a8 8 0 0 0 0 16h24a8 8 0 0 0 0-16Z" />
@ -344,7 +344,7 @@ function IconCopy({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8Zm-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z" /> <path d="M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8Zm-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z" />
@ -358,7 +358,7 @@ function IconCheck({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="m229.66 77.66-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69 218.34 66.34a8 8 0 0 1 11.32 11.32Z" /> <path d="m229.66 77.66-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69 218.34 66.34a8 8 0 0 1 11.32 11.32Z" />
@ -372,7 +372,7 @@ function IconDownload({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M224 152v56a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16v-56a8 8 0 0 1 16 0v56h160v-56a8 8 0 0 1 16 0Zm-101.66 5.66a8 8 0 0 0 11.32 0l40-40a8 8 0 0 0-11.32-11.32L136 132.69V40a8 8 0 0 0-16 0v92.69l-26.34-26.35a8 8 0 0 0-11.32 11.32Z" /> <path d="M224 152v56a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16v-56a8 8 0 0 1 16 0v56h160v-56a8 8 0 0 1 16 0Zm-101.66 5.66a8 8 0 0 0 11.32 0l40-40a8 8 0 0 0-11.32-11.32L136 132.69V40a8 8 0 0 0-16 0v92.69l-26.34-26.35a8 8 0 0 0-11.32 11.32Z" />
@ -386,7 +386,7 @@ function IconClose({ className, ...props }: React.ComponentProps<'svg'>) {
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 256 256" viewBox="0 0 256 256"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path d="M205.66 194.34a8 8 0 0 1-11.32 11.32L128 139.31l-66.34 66.35a8 8 0 0 1-11.32-11.32L116.69 128 50.34 61.66a8 8 0 0 1 11.32-11.32L128 116.69l66.34-66.35a8 8 0 0 1 11.32 11.32L139.31 128Z" /> <path d="M205.66 194.34a8 8 0 0 1-11.32 11.32L128 139.31l-66.34 66.35a8 8 0 0 1-11.32-11.32L116.69 128 50.34 61.66a8 8 0 0 1 11.32-11.32L128 116.69l66.34-66.35a8 8 0 0 1 11.32 11.32L139.31 128Z" />
@ -402,7 +402,7 @@ function IconEdit({ className, ...props }: React.ComponentProps<'svg'>) {
viewBox="0 0 24 24" viewBox="0 0 24 24"
strokeWidth={1.5} strokeWidth={1.5}
stroke="currentColor" stroke="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
{...props} {...props}
> >
<path <path
@ -419,7 +419,7 @@ function IconShare({ className, ...props }: React.ComponentProps<'svg'>) {
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
viewBox="0 0 256 256" viewBox="0 0 256 256"
{...props} {...props}
> >
@ -433,7 +433,7 @@ function IconUsers({ className, ...props }: React.ComponentProps<'svg'>) {
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
viewBox="0 0 256 256" viewBox="0 0 256 256"
{...props} {...props}
> >
@ -450,7 +450,7 @@ function IconExternalLink({
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
viewBox="0 0 256 256" viewBox="0 0 256 256"
{...props} {...props}
> >
@ -467,7 +467,7 @@ function IconChevronUpDown({
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
fill="currentColor" fill="currentColor"
className={cn('h-4 w-4', className)} className={cn('size-4', className)}
viewBox="0 0 256 256" viewBox="0 0 256 256"
{...props} {...props}
> >

View file

@ -89,9 +89,9 @@ const SelectItem = React.forwardRef<
)} )}
{...props} {...props}
> >
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center"> <span className="absolute left-2 flex size-3.5 items-center justify-center">
<SelectPrimitive.ItemIndicator> <SelectPrimitive.ItemIndicator>
<IconCheck className="h-4 w-4" /> <IconCheck className="size-4" />
</SelectPrimitive.ItemIndicator> </SelectPrimitive.ItemIndicator>
</span> </span>
<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText> <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>

View file

@ -66,7 +66,7 @@ const SheetContent = React.forwardRef<
> >
{children} {children}
<SheetPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary"> <SheetPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary">
<IconClose className="h-4 w-4" /> <IconClose className="size-4" />
<span className="sr-only">Close</span> <span className="sr-only">Close</span>
</SheetPrimitive.Close> </SheetPrimitive.Close>
</SheetPrimitive.Content> </SheetPrimitive.Content>

View file

@ -1,9 +1,9 @@
"use client" 'use client'
import * as React from "react" import * as React from 'react'
import * as SwitchPrimitives from "@radix-ui/react-switch" import * as SwitchPrimitives from '@radix-ui/react-switch'
import { cn } from "@/lib/utils" import { cn } from '@/lib/utils'
const Switch = React.forwardRef< const Switch = React.forwardRef<
React.ElementRef<typeof SwitchPrimitives.Root>, React.ElementRef<typeof SwitchPrimitives.Root>,
@ -11,7 +11,7 @@ const Switch = React.forwardRef<
>(({ className, ...props }, ref) => ( >(({ className, ...props }, ref) => (
<SwitchPrimitives.Root <SwitchPrimitives.Root
className={cn( className={cn(
"peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input", 'peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',
className className
)} )}
{...props} {...props}
@ -19,7 +19,7 @@ const Switch = React.forwardRef<
> >
<SwitchPrimitives.Thumb <SwitchPrimitives.Thumb
className={cn( className={cn(
"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0" 'pointer-events-none block size-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0'
)} )}
/> />
</SwitchPrimitives.Root> </SwitchPrimitives.Root>

View file

@ -31,14 +31,14 @@ export function UserMenu({ user }: UserMenuProps) {
<Button variant="ghost" className="pl-0"> <Button variant="ghost" className="pl-0">
{user?.image ? ( {user?.image ? (
<Image <Image
className="w-6 h-6 transition-opacity duration-300 rounded-full select-none ring-1 ring-zinc-100/10 hover:opacity-80" className="size-6 transition-opacity duration-300 rounded-full select-none ring-1 ring-zinc-100/10 hover:opacity-80"
src={user?.image ? `${user.image}&s=60` : ''} src={user?.image ? `${user.image}&s=60` : ''}
alt={user.name ?? 'Avatar'} alt={user.name ?? 'Avatar'}
height={48} height={48}
width={48} width={48}
/> />
) : ( ) : (
<div className="flex items-center justify-center text-xs font-medium uppercase rounded-full select-none h-7 w-7 shrink-0 bg-muted/50 text-muted-foreground"> <div className="flex items-center justify-center text-xs font-medium uppercase rounded-full select-none size-7 shrink-0 bg-muted/50 text-muted-foreground">
{user?.name ? getUserInitials(user?.name) : null} {user?.name ? getUserInitials(user?.name) : null}
</div> </div>
)} )}
@ -59,7 +59,7 @@ export function UserMenu({ user }: UserMenuProps) {
className="inline-flex items-center justify-between w-full text-xs" className="inline-flex items-center justify-between w-full text-xs"
> >
Vercel Homepage Vercel Homepage
<IconExternalLink className="w-3 h-3 ml-auto" /> <IconExternalLink className="size-3 ml-auto" />
</a> </a>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem <DropdownMenuItem

View file

@ -1,8 +1,5 @@
/** @type {import('next').NextConfig} */ /** @type {import('next').NextConfig} */
module.exports = { module.exports = {
experimental: {
windowHistorySupport: true
},
images: { images: {
remotePatterns: [ remotePatterns: [
{ {

View file

@ -21,20 +21,20 @@
"@radix-ui/react-slot": "^1.0.2", "@radix-ui/react-slot": "^1.0.2",
"@radix-ui/react-switch": "^1.0.3", "@radix-ui/react-switch": "^1.0.3",
"@radix-ui/react-tooltip": "^1.0.7", "@radix-ui/react-tooltip": "^1.0.7",
"@vercel/analytics": "^1.1.1", "@vercel/analytics": "^1.1.2",
"@vercel/kv": "^1.0.1", "@vercel/kv": "^1.0.1",
"@vercel/og": "^0.6.2", "@vercel/og": "^0.6.2",
"ai": "^2.2.31", "ai": "^2.2.31",
"class-variance-authority": "^0.7.0", "class-variance-authority": "^0.7.0",
"clsx": "^2.1.0", "clsx": "^2.1.0",
"focus-trap-react": "^10.2.3", "focus-trap-react": "^10.2.3",
"framer-motion": "^10.16.12", "framer-motion": "^10.18.0",
"geist": "^1.2.0", "geist": "^1.2.1",
"nanoid": "^5.0.4", "nanoid": "^5.0.4",
"next": "14.0.5-canary.38", "next": "14.1.0",
"next-auth": "5.0.0-beta.4", "next-auth": "5.0.0-beta.4",
"next-themes": "^0.2.1", "next-themes": "^0.2.1",
"openai": "^4.24.1", "openai": "^4.24.7",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-hot-toast": "^2.4.1", "react-hot-toast": "^2.4.1",
@ -47,20 +47,20 @@
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/typography": "^0.5.10", "@tailwindcss/typography": "^0.5.10",
"@types/node": "^20.10.6", "@types/node": "^20.11.5",
"@types/react": "^18.2.46", "@types/react": "^18.2.48",
"@types/react-dom": "^18.2.18", "@types/react-dom": "^18.2.18",
"@types/react-syntax-highlighter": "^15.5.11", "@types/react-syntax-highlighter": "^15.5.11",
"@typescript-eslint/parser": "^6.17.0", "@typescript-eslint/parser": "^6.19.0",
"autoprefixer": "^10.4.16", "autoprefixer": "^10.4.17",
"eslint": "^8.56.0", "eslint": "^8.56.0",
"eslint-config-next": "14.0.4", "eslint-config-next": "14.1.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-tailwindcss": "^3.13.1", "eslint-plugin-tailwindcss": "^3.14.0",
"postcss": "^8.4.32", "postcss": "^8.4.33",
"prettier": "^3.1.1", "prettier": "^3.2.4",
"tailwind-merge": "^2.2.0", "tailwind-merge": "^2.2.0",
"tailwindcss": "^3.4.0", "tailwindcss": "^3.4.1",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"typescript": "^5.3.3" "typescript": "^5.3.3"
}, },

1108
pnpm-lock.yaml generated

File diff suppressed because it is too large Load diff