From 1a2241c40e10193c5ff7008a7b7b36cc1d855d96 Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Tue, 25 Mar 2025 15:55:45 +0900 Subject: initial commit --- components/ui/file-list.tsx | 173 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 components/ui/file-list.tsx (limited to 'components/ui/file-list.tsx') diff --git a/components/ui/file-list.tsx b/components/ui/file-list.tsx new file mode 100644 index 00000000..b6ade7f5 --- /dev/null +++ b/components/ui/file-list.tsx @@ -0,0 +1,173 @@ +"use client" + +import * as React from "react" +import { FileText } from "lucide-react" +import prettyBytes from "pretty-bytes" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" +import { Progress } from "@/components/ui/progress" + +export const FileList = React.forwardRef< + React.ElementRef<"div">, + React.ComponentPropsWithoutRef<"div"> +>(({ className, ...props }, ref) => ( +
+)) +FileList.displayName = "FileList" + +export const FileListItem = React.forwardRef< + React.ElementRef<"div">, + React.ComponentPropsWithoutRef<"div"> +>(({ className, ...props }, ref) => ( +
+)) +FileListItem.displayName = "FileListItem" + +export const FileListHeader = React.forwardRef< + React.ElementRef<"div">, + React.ComponentPropsWithoutRef<"div"> +>(({ className, ...props }, ref) => ( +
+)) +FileListHeader.displayName = "FileListHeader" + +export const FileListIcon = React.forwardRef< + React.ElementRef<"div">, + React.ComponentPropsWithoutRef<"div"> +>(({ className, children, ...props }, ref) => ( +
svg]:size-5", + className + )} + {...props} + > + {children ?? } +
+)) +FileListIcon.displayName = "FileListIcon" + +export const FileListInfo = React.forwardRef< + React.ElementRef<"div">, + React.ComponentPropsWithoutRef<"div"> +>(({ className, ...props }, ref) => ( +
+)) +FileListInfo.displayName = "FileListInfo" + +export const FileListName = React.forwardRef< + React.ElementRef<"p">, + React.ComponentPropsWithoutRef<"p"> +>(({ className, ...props }, ref) => ( +

+)) +FileListName.displayName = "FileListName" + +export const FileListDescription = React.forwardRef< + React.ElementRef<"div">, + React.ComponentPropsWithoutRef<"div"> +>(({ className, ...props }, ref) => ( +

+)) +FileListDescription.displayName = "FileListDescription" + +export const FileListDescriptionSeparator = React.forwardRef< + React.ElementRef<"span">, + React.ComponentPropsWithoutRef<"span"> +>(({ children, ...props }, ref) => ( + + {children ?? "•"} + +)) +FileListDescriptionSeparator.displayName = "FileListDescriptionSeparator" + +export interface FileListSizeProps + extends React.ComponentPropsWithoutRef<"span"> { + children: number +} + +export const FileListSize = React.forwardRef< + React.ElementRef<"span">, + FileListSizeProps +>(({ children, ...props }, ref) => ( + + {prettyBytes(children)} + +)) +FileListSize.displayName = "FileListSize" + +export const FileListProgress = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +FileListProgress.displayName = "FileListProgress" + +export const FileListDescriptionText = React.forwardRef< + React.ElementRef<"span">, + React.ComponentPropsWithoutRef<"span"> +>(({ className, ...props }, ref) => ( + svg]:size-3", className)} + {...props} + /> +)) +FileListDescriptionText.displayName = "FileListDescriptionText" + +export const FileListContent = React.forwardRef< + React.ElementRef<"div">, + React.ComponentPropsWithoutRef<"div"> +>((props, ref) =>
) +FileListContent.displayName = "FileListContent" + +export const FileListActions = React.forwardRef< + React.ElementRef<"div">, + React.ComponentPropsWithoutRef<"div"> +>(({ className, ...props }, ref) => ( +
+)) +FileListActions.displayName = "FileListActions" + +export const FileListAction = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, variant = "outline", size = "icon", ...props }, ref) => ( +