"use client"; import { memo } from "react"; import InputLabel from "../../type/InputLabel"; import type { UploadViewProps } from "./Upload.types"; function UploadView({ state, hasLabel, label, showHelpIcon = true, hintText, uploadButtonLabel, uploadAriaLabel, previewSrc, previewAlt, fileName, onClick, className = "", }: UploadViewProps) { const isActive = state !== "disabled"; const isDisabled = state === "disabled"; const hasPreview = typeof previewSrc === "string" && previewSrc.length > 0; const buttonBgClass = isActive ? "bg-[var(--color-surface-invert-primary)]" : "bg-[var(--color-surface-default-secondary)]"; const buttonTextColor = isActive ? "text-[color:var(--color-content-invert-primary)]" : "text-[color:var(--color-content-invert-tertiary)]"; const descriptionTextColor = isActive ? "text-[color:var(--color-content-default-primary)]" : "text-[color:var(--color-content-default-tertiary)]"; const iconColor = isActive ? "text-[color:var(--color-content-invert-primary)]" : "text-[color:var(--color-content-invert-tertiary)]"; return (
{hasLabel && label ? ( ) : null}
{hasPreview ? (
{/* eslint-disable-next-line @next/next/no-img-element -- user/device file or same-origin upload URL */} {previewAlt}
) : null}

{hasPreview && fileName ? fileName : hintText}

); } UploadView.displayName = "UploadView"; export default memo(UploadView);