"use client"
import { CameraIcon, FolderIcon, PaperClipIcon } from "@heroicons/react/24/outline"
import {
FileTrigger as FileTriggerPrimitive,
type FileTriggerProps as FileTriggerPrimitiveProps,
} from "react-aria-components"
import type { VariantProps } from "tailwind-variants"
import { Button, type buttonStyles } from "./button"
import { Loader } from "./loader"
export interface FileTriggerProps
extends FileTriggerPrimitiveProps,
VariantProps<typeof buttonStyles> {
isDisabled?: boolean
isPending?: boolean
ref?: React.RefObject<HTMLInputElement>
className?: string
}
export function FileTrigger({
intent = "outline",
size = "md",
isCircle = false,
ref,
className,
...props
}: FileTriggerProps) {
return (
<FileTriggerPrimitive ref={ref} {...props}>
<Button
className={className}
isDisabled={props.isDisabled}
intent={intent}
size={size}
isCircle={isCircle}
>
{!props.isPending ? (
props.defaultCamera ? (
<CameraIcon />
) : props.acceptDirectory ? (
<FolderIcon />
) : (
<PaperClipIcon />
)
) : (
<Loader />
)}
{props.children
? props.children
: ["sq-sm", "sq-xs", "sq-md", "sq-lg"].includes(size as string)
? null
: `${props.allowsMultiple ? "Browse a files" : props.acceptDirectory ? "Browse" : "Browse a file"}...`}
</Button>
</FileTriggerPrimitive>
)
}