Update dependencies. (#225)
This commit is contained in:
commit
ce374ceccb
21 changed files with 621 additions and 629 deletions
|
|
@ -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}
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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 />
|
||||||
|
|
|
||||||
|
|
@ -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'
|
||||||
|
|
|
||||||
|
|
@ -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} />
|
||||||
) : (
|
) : (
|
||||||
|
|
|
||||||
|
|
@ -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 />
|
||||||
|
|
|
||||||
|
|
@ -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)}
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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: {
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
module.exports = {
|
module.exports = {
|
||||||
experimental: {
|
|
||||||
windowHistorySupport: true
|
|
||||||
},
|
|
||||||
images: {
|
images: {
|
||||||
remotePatterns: [
|
remotePatterns: [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
28
package.json
28
package.json
|
|
@ -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
1108
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue