LogoMkSaaS Docs
LogoMkSaaS Docs
Homepage

Introduction

Quick StartWhat is FumadocsComparisons

Setup

Manual InstallationStatic Export

Writing

MarkdownInternationalization

UI

OverviewThemesSearch
Components
MDX

AudioUploadDropzone

Shared drag-and-drop uploader for audio files.

Usage

import { useState } from "react";
import { useTranslations } from "next-intl";
import { AudioUploadDropzone } from "@/components/music/audio-upload-dropzone";

export function AudioUploadExample() {
  const t = useTranslations();
  const [uploadUrl, setUploadUrl] = useState<string | null>(null);
  const [isUploading, setIsUploading] = useState(false);

  return (
    <AudioUploadDropzone
      labels={{
        title: t("Cover.uploadTrack"),
        placeholder: t("Cover.uploadPlaceholder"),
        uploading: t("Cover.uploading"),
        uploadSuccess: t("Cover.uploadSuccess"),
        uploadComplete: t("Cover.uploadComplete"),
        sizeLimit: (size) => t("Cover.uploadSizeLimit", { size }),
        tooLarge: (size) => t("Cover.uploadTooLarge", { size }),
        error: t("Cover.error"),
        deleteConfirm: {
          title: t("Cover.deleteConfirmTitle"),
          description: t("Cover.deleteConfirmDescription"),
          cancel: t("Cover.deleteConfirmCancel"),
          action: t("Cover.deleteConfirmAction"),
        },
      }}
      uploadUrl={uploadUrl}
      onUploadComplete={(url) => setUploadUrl(url)}
      onUploadClear={() => setUploadUrl(null)}
      onUploadingChange={setIsUploading}
      isInvalid={!uploadUrl}
      errorText={t("Cover.sourceRequired")}
      helperText={t("Cover.uploadLimit", { minutes: 8, model: "V5" })}
    />
  );
}

Props

  • labels: 文案集合,包含 sizeLimit/tooLarge 等函数型文案。
  • uploadUrl: 当前已上传音频的 URL。
  • onUploadComplete: 上传成功回调,返回 URL。
  • onUploadClear: 用户清除已上传文件时回调。
  • onUploadingChange: 上传开始/结束时回调。
  • isInvalid: 是否显示错误态。
  • errorText: 错误文案(与 isInvalid 搭配)。
  • helperText: 额外的辅助提示(如时长限制)。
  • maxFileSize: 最大文件大小(默认 MAX_AUDIO_FILE_SIZE)。
  • accept: 允许的文件类型(默认 audio/*)。
  • disabled: 禁用上传交互。

Behavior

  • Upload endpoint: /api/storage/upload-audio.
  • Size validation: defaults to MAX_AUDIO_FILE_SIZE and validates before upload.
  • Delete behavior: only clears local form state, does not delete remote storage.
  • Audio-only: do not use for non-audio uploads.

Table of Contents

Usage
Props
Behavior