@geekapps/silo-elements-nextjs 0.2.65 → 0.2.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/theme.ts","../src/components/DropZone.tsx","../src/components/ProgressBar.tsx","../src/components/ImageOptions.tsx","../src/utils/format.ts","../src/ImageUploader.tsx","../src/components/VideoOptions.tsx","../src/VideoUploader.tsx","../src/FileUploader.tsx","../src/MediaUploader.tsx"],"names":["jsx","jsxs","useState","useCallback","uploadLabel","useMultipartUpload","Fragment","DEFAULT_VIDEO_OPTS","createInitialVideoOpts"],"mappings":"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","file":"MediaUploader.js","sourcesContent":["import type { SiloTheme } from \"../types.js\";\n\nexport const defaultTheme: Required<SiloTheme> = {\n borderColor: \"#e2e8f0\",\n borderColorActive: \"#6366f1\",\n backgroundColor: \"#f8fafc\",\n backgroundColorHover: \"#f1f5f9\",\n textColor: \"#0f172a\",\n textColorMuted: \"#64748b\",\n accentColor: \"#6366f1\",\n accentColorHover: \"#4f46e5\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n borderRadius: \"12px\",\n fontFamily: \"inherit\",\n};\n\nexport function resolveTheme(theme?: SiloTheme): Required<SiloTheme> {\n return { ...defaultTheme, ...theme };\n}\n\nexport function themeToVars(theme: Required<SiloTheme>): Record<string, string> {\n return {\n \"--silo-border\": theme.borderColor,\n \"--silo-border-active\": theme.borderColorActive,\n \"--silo-bg\": theme.backgroundColor,\n \"--silo-bg-hover\": theme.backgroundColorHover,\n \"--silo-text\": theme.textColor,\n \"--silo-text-muted\": theme.textColorMuted,\n \"--silo-accent\": theme.accentColor,\n \"--silo-accent-hover\": theme.accentColorHover,\n \"--silo-error\": theme.errorColor,\n \"--silo-success\": theme.successColor,\n \"--silo-radius\": theme.borderRadius,\n \"--silo-font\": theme.fontFamily,\n };\n}\n","\"use client\";\n\nimport {\n useState,\n useRef,\n useCallback,\n type DragEvent,\n type ChangeEvent,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport type { SiloTheme } from \"../types.js\";\nimport { resolveTheme, themeToVars } from \"../utils/theme.js\";\n\ninterface DropZoneProps {\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n maxSize?: number;\n onFiles: (files: File[]) => void;\n onError?: (error: Error) => void;\n className?: string;\n style?: CSSProperties;\n theme?: SiloTheme;\n children: ReactNode;\n}\n\nexport function DropZone({\n accept,\n multiple = false,\n disabled = false,\n maxSize,\n onFiles,\n onError,\n className = \"\",\n style,\n theme,\n children,\n}: DropZoneProps) {\n const [dragging, setDragging] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const validate = useCallback(\n (files: File[]): File[] => {\n return files.filter((f) => {\n if (maxSize && f.size > maxSize) {\n onError?.(new Error(`File \"${f.name}\" exceeds max size of ${maxSize} bytes`));\n return false;\n }\n return true;\n });\n },\n [maxSize, onError]\n );\n\n const handleDrop = useCallback(\n (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n setDragging(false);\n if (disabled) return;\n const files = Array.from(e.dataTransfer.files);\n const valid = validate(files);\n if (valid.length) onFiles(valid);\n },\n [disabled, validate, onFiles]\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files ?? []);\n const valid = validate(files);\n if (valid.length) onFiles(valid);\n e.target.value = \"\";\n },\n [validate, onFiles]\n );\n\n const rootStyle: CSSProperties = {\n ...vars as CSSProperties,\n border: `2px dashed ${dragging ? \"var(--silo-border-active)\" : \"var(--silo-border)\"}`,\n borderRadius: \"var(--silo-radius)\",\n background: dragging ? \"var(--silo-bg-hover)\" : \"var(--silo-bg)\",\n color: \"var(--silo-text)\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n outline: \"none\",\n transition: \"border-color 150ms, background 150ms\",\n ...style,\n };\n\n return (\n <div\n className={className}\n style={rootStyle}\n onDragOver={(e) => { e.preventDefault(); if (!disabled) setDragging(true); }}\n onDragLeave={() => setDragging(false)}\n onDrop={handleDrop}\n onClick={() => !disabled && inputRef.current?.click()}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") inputRef.current?.click(); }}\n aria-label=\"Upload area\"\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n className=\"hidden\"\n onChange={handleChange}\n disabled={disabled}\n />\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport type { CSSProperties } from \"react\";\n\ninterface ProgressBarProps {\n progress: number;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function ProgressBar({ progress, className = \"\", style }: ProgressBarProps) {\n return (\n <div\n className={className}\n style={{ height: 4, borderRadius: 9999, background: \"var(--silo-border, #e2e8f0)\", overflow: \"hidden\", ...style }}\n role=\"progressbar\"\n aria-valuenow={progress}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n style={{ height: \"100%\", borderRadius: 9999, background: \"var(--silo-accent, #6366f1)\", width: `${progress}%`, transition: \"width 200ms linear\" }}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport type { CSSProperties } from \"react\";\nimport type { ImageUploadOptions } from \"@geekapps/silo-nextjs\";\n\nconst FORMATS = [\n { value: \"webp\", label: \"WebP\", hint: \"Melhor custo-benefício\" },\n { value: \"avif\", label: \"AVIF\", hint: \"Máxima compressão\" },\n { value: \"jpeg\", label: \"JPEG\", hint: \"Compatibilidade universal\" },\n { value: \"png\", label: \"PNG\", hint: \"Sem perda\" },\n];\n\ninterface ImageOptionsProps {\n value: ImageUploadOptions;\n onChange: (opts: ImageUploadOptions) => void;\n style?: CSSProperties;\n}\n\nexport function ImageOptions({ value, onChange, style }: ImageOptionsProps) {\n const fmt = value.format ?? \"webp\";\n const optimize = value.optimize ?? true;\n\n return (\n <div className=\"flex flex-col gap-2.5\" style={style}>\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, textTransform: \"uppercase\", letterSpacing: \"0.05em\", marginBottom: 6, color: \"var(--silo-text-muted)\" }}>\n Formato de saída\n </div>\n <div className=\"flex gap-1.5 flex-wrap\">\n {FORMATS.map((f) => (\n <button\n key={f.value}\n type=\"button\"\n onClick={() => onChange({ ...value, format: f.value as NonNullable<ImageUploadOptions[\"format\"]> })}\n title={f.hint}\n style={fmt === f.value\n ? { border: \"1px solid var(--silo-accent)\", background: \"var(--silo-accent)\", color: \"#fff\", padding: \"4px 12px\", borderRadius: 6, fontSize: 12, fontWeight: 600, cursor: \"pointer\" }\n : { border: \"1px solid var(--silo-border)\", background: \"transparent\", color: \"var(--silo-text)\", padding: \"4px 12px\", borderRadius: 6, fontSize: 12, fontWeight: 600, cursor: \"pointer\" }\n }\n >\n {f.label}\n </button>\n ))}\n </div>\n </div>\n\n <label className=\"flex items-center gap-2 cursor-pointer select-none\">\n <span\n onClick={() => onChange({ ...value, optimize: !optimize })}\n style={{ position: \"relative\", display: \"inline-block\", width: 36, height: 20, borderRadius: 10, flexShrink: 0, cursor: \"pointer\", background: optimize ? \"var(--silo-accent)\" : \"var(--silo-border)\", transition: \"background 150ms\" }}\n >\n <span style={{ position: \"absolute\", top: 2, left: optimize ? 18 : 2, width: 16, height: 16, borderRadius: \"50%\", background: \"#fff\", boxShadow: \"0 1px 3px rgba(0,0,0,.2)\", transition: \"left 150ms\" }} />\n </span>\n <span style={{ fontSize: 12, fontWeight: 500, color: \"var(--silo-text)\" }}>Otimizar tamanho</span>\n <span style={{ fontSize: 11, color: \"var(--silo-text-muted)\" }}>{optimize ? \"Qualidade 85 — menor tamanho\" : \"Qualidade máxima\"}</span>\n </label>\n </div>\n );\n}\n","export function formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 ** 2) return `${(bytes / 1024).toFixed(1)} KB`;\n if (bytes < 1024 ** 3) return `${(bytes / 1024 ** 2).toFixed(1)} MB`;\n return `${(bytes / 1024 ** 3).toFixed(2)} GB`;\n}\n\nexport function getFileIcon(mimeType: string): string {\n if (mimeType.startsWith(\"image/\")) return \"🖼️\";\n if (mimeType.startsWith(\"video/\")) return \"🎬\";\n if (mimeType.startsWith(\"audio/\")) return \"🎵\";\n if (mimeType === \"application/pdf\") return \"📄\";\n if (mimeType.includes(\"spreadsheet\") || mimeType.includes(\"excel\")) return \"📊\";\n if (mimeType.includes(\"presentation\") || mimeType.includes(\"powerpoint\")) return \"📑\";\n if (mimeType.includes(\"word\") || mimeType.includes(\"document\")) return \"📝\";\n if (mimeType.includes(\"zip\") || mimeType.includes(\"tar\") || mimeType.includes(\"gzip\")) return \"📦\";\n return \"📎\";\n}\n","\"use client\";\n\nimport { useState, useCallback, type CSSProperties } from \"react\";\nimport { useMultipartUpload } from \"@geekapps/silo-nextjs\";\nimport type { ImageUploadOptions } from \"@geekapps/silo-nextjs\";\nimport type { ImageUploaderProps } from \"./types.js\";\nimport { DropZone } from \"./components/DropZone.js\";\nimport { ProgressBar } from \"./components/ProgressBar.js\";\nimport { ImageOptions } from \"./components/ImageOptions.js\";\nimport { formatBytes } from \"./utils/format.js\";\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\n\nfunction uploadLabel(status: string, progress: number): string {\n if (status === \"preparing\") return \"Preparando…\";\n if (status === \"completing\") return \"Concluindo…\";\n if (progress < 30) return \"Iniciando envio…\";\n if (progress < 70) return \"Enviando imagem…\";\n if (progress < 95) return \"Quase lá…\";\n return \"Finalizando…\";\n}\n\nexport function ImageUploader({\n bucket,\n expiresIn,\n onUpload,\n onError,\n className = \"\",\n style,\n disabled = false,\n maxSize,\n accept = \"image/*\",\n showPreview = true,\n showImageOptions = false,\n image,\n theme,\n renderIcon,\n renderProgress,\n renderSuccess,\n renderError,\n children,\n}: ImageUploaderProps) {\n const { state, upload, pause, resume, abort, reset } = useMultipartUpload(bucket);\n const [preview, setPreview] = useState<string | null>(null);\n const [imageOpts, setImageOpts] = useState<ImageUploadOptions>(image ?? { format: \"webp\", optimize: true });\n const [stagedFile, setStagedFile] = useState<File | null>(null);\n const t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const doUpload = useCallback(async (file: File, opts: ImageUploadOptions) => {\n if (showPreview) setPreview(URL.createObjectURL(file));\n try {\n const result = await upload(file, { ...(bucket !== undefined && { bucket }), image: opts });\n if (result) onUpload?.(result);\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n }, [upload, bucket, onUpload, onError, showPreview]);\n\n const handleFiles = useCallback(async (files: File[]) => {\n const file = files[0];\n if (!file) return;\n if (showImageOptions) {\n setStagedFile(file);\n if (showPreview) setPreview(URL.createObjectURL(file));\n } else {\n await doUpload(file, image ?? imageOpts);\n }\n }, [showImageOptions, image, imageOpts, doUpload, showPreview]);\n\n const containerStyle: CSSProperties = {\n ...vars as CSSProperties,\n ...style,\n };\n\n const isUploading = state.status === \"uploading\" || state.status === \"preparing\" || state.status === \"completing\";\n const progress = state.status === \"uploading\" ? state.progress : state.status === \"completing\" ? 99 : 0;\n const isPaused = state.status === \"idle\" && preview !== null && !stagedFile;\n\n if (state.status === \"error\" && renderError) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderError(state.error, reset)}</div>;\n if (state.status === \"done\" && renderSuccess) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderSuccess(state.result)}</div>;\n\n return (\n <div className={`flex flex-col gap-3 w-full${className ? ` ${className}` : \"\"}`} style={containerStyle}>\n <DropZone\n {...(accept !== undefined && { accept })}\n {...(maxSize !== undefined && { maxSize })}\n {...(onError !== undefined && { onError })}\n {...(theme !== undefined && { theme })}\n disabled={disabled || isUploading}\n onFiles={handleFiles}\n style={{ padding: \"32px 24px\", textAlign: \"center\" }}\n >\n {preview && !isUploading && !stagedFile ? (\n <div className=\"flex flex-col items-center gap-2\">\n <img src={preview} alt=\"Pré-visualização\" className=\"max-w-full max-h-[200px] rounded-lg object-contain\" />\n <span className=\"text-[12px] text-slate-400\">Clique ou arraste para trocar a imagem</span>\n </div>\n ) : (\n <div className=\"flex flex-col items-center gap-2\">\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" className=\"text-slate-400 opacity-50\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n </svg>\n )}\n {children ?? (\n <>\n <span className=\"text-slate-900 font-bold text-[15px]\">Arraste sua imagem aqui</span>\n <span className=\"text-slate-500 text-[13px]\">ou clique para escolher do seu dispositivo</span>\n {maxSize && <span className=\"text-slate-400 text-[12px]\">Tamanho máximo: {formatBytes(maxSize)}</span>}\n </>\n )}\n </div>\n )}\n </DropZone>\n\n {showImageOptions && stagedFile && !isUploading && state.status !== \"done\" && (\n <>\n {preview && (\n <div className=\"border border-slate-200 rounded-xl overflow-hidden\">\n <img src={preview} alt=\"Pré-visualização\" className=\"w-full max-h-[200px] object-contain block bg-slate-50\" />\n </div>\n )}\n <div className=\"border border-slate-200 rounded-xl overflow-hidden\">\n <div className=\"px-3.5 py-2 bg-slate-100 text-[12px] font-bold text-slate-500 tracking-[0.04em]\">🖼️ Configurações de imagem</div>\n <ImageOptions value={imageOpts} onChange={setImageOpts} style={{ padding: \"12px 14px\" }} />\n </div>\n <div className=\"flex gap-2\">\n <button\n className=\"inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border border-slate-200 bg-transparent text-slate-900 cursor-pointer transition-colors hover:bg-slate-100\"\n onClick={() => { setStagedFile(null); setPreview(null); }}\n >\n Cancelar\n </button>\n <button\n className=\"flex-1 inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border-transparent bg-indigo-500 text-white cursor-pointer transition-opacity hover:opacity-90\"\n onClick={() => { const f = stagedFile; setStagedFile(null); void doUpload(f, imageOpts); }}\n >\n Enviar imagem\n </button>\n </div>\n </>\n )}\n\n {isUploading && (\n renderProgress ? renderProgress(progress) : (\n <div className=\"flex flex-col gap-2 px-3 py-4 bg-slate-50 rounded-xl border border-slate-200\">\n <div className=\"flex justify-between items-center\">\n <span className=\"text-[13px] font-semibold text-slate-900\">{uploadLabel(state.status, progress)}</span>\n <span className=\"text-[13px] font-bold text-indigo-500\">{progress}%</span>\n </div>\n <ProgressBar progress={progress} />\n </div>\n )\n )}\n\n {isPaused && (\n <div className=\"flex gap-2\">\n <button\n className=\"flex-1 inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border-transparent bg-emerald-500 text-white cursor-pointer hover:opacity-90\"\n onClick={() => resume({ ...(bucket !== undefined && { bucket }), image: imageOpts })}\n >\n ▶ Retomar envio\n </button>\n <button\n className=\"inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border border-slate-200 bg-transparent text-slate-900 cursor-pointer hover:bg-slate-100\"\n onClick={() => { abort(); setPreview(null); }}\n >\n Cancelar\n </button>\n </div>\n )}\n\n {state.status === \"done\" && !renderSuccess && (\n <div className=\"flex items-center gap-3 px-4 py-3.5 bg-green-500/[0.08] rounded-xl border border-green-500/20\">\n <span className=\"text-2xl\">✅</span>\n <div className=\"flex-1\">\n <div className=\"font-bold text-sm text-green-700\">Imagem enviada com sucesso!</div>\n <div className=\"text-[12px] text-slate-400 mt-0.5\">{formatBytes(state.result.size)}</div>\n </div>\n <button\n className=\"inline-flex items-center justify-center text-xs font-semibold py-1 px-2.5 rounded-lg border border-green-500/30 text-green-700 bg-transparent cursor-pointer hover:bg-green-500/10 shrink-0\"\n onClick={() => { reset(); setPreview(null); }}\n >\n Enviar outra\n </button>\n </div>\n )}\n\n {state.status === \"error\" && !renderError && (\n <div className=\"flex items-center gap-3 px-4 py-3.5 bg-red-500/[0.07] rounded-xl border border-red-500/20\">\n <span className=\"text-[22px]\">⚠️</span>\n <div className=\"flex-1\">\n <div className=\"font-bold text-[13px] text-red-500\">Não foi possível enviar a imagem</div>\n <div className=\"text-[12px] text-slate-400 mt-0.5\">{state.error.message}</div>\n </div>\n <button\n className=\"inline-flex items-center justify-center text-xs font-semibold py-1 px-2.5 rounded-lg border border-red-500/30 text-red-500 bg-transparent cursor-pointer hover:bg-red-500/10 shrink-0\"\n onClick={() => { reset(); setPreview(null); }}\n >\n Tentar novamente\n </button>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport type { CSSProperties } from \"react\";\nimport type { VideoUploadOptions } from \"@geekapps/silo-nextjs\";\n\nconst CODECS = [\n { value: \"h264\", label: \"H.264 (NVENC)\", hint: \"Compatibilidade máxima — GPU accelerated\" },\n { value: \"h265\", label: \"H.265 (NVENC)\", hint: \"Melhor compressão — GPU accelerated\" },\n];\n\nconst RESOLUTIONS = [\"144\", \"240\", \"360\", \"480\", \"720\", \"1080\", \"1440\", \"2160\"] as const;\nconst RESOLUTION_LABELS: Record<string, string> = {\n \"144\": \"144p\", \"240\": \"240p\", \"360\": \"360p\", \"480\": \"480p\",\n \"720\": \"720p\", \"1080\": \"1080p\", \"1440\": \"1440p\", \"2160\": \"4K\",\n};\n\ninterface VideoOptionsProps {\n value: VideoUploadOptions;\n onChange: (opts: VideoUploadOptions) => void;\n style?: CSSProperties;\n}\n\nfunction optBtnStyle(active: boolean): CSSProperties {\n return active\n ? { border: \"1px solid var(--silo-accent)\", background: \"var(--silo-accent)\", color: \"#fff\", padding: \"4px 10px\", borderRadius: 6, fontSize: 12, fontWeight: 600, cursor: \"pointer\" }\n : { border: \"1px solid var(--silo-border)\", background: \"transparent\", color: \"var(--silo-text)\", padding: \"4px 10px\", borderRadius: 6, fontSize: 12, fontWeight: 600, cursor: \"pointer\" };\n}\n\nfunction Toggle({ checked, onToggle, label }: { checked: boolean; onToggle: () => void; label: string }) {\n return (\n <label style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6, cursor: \"pointer\", userSelect: \"none\", fontSize: 12, color: \"var(--silo-text)\", fontWeight: 500 }} onClick={onToggle}>\n <span style={{ position: \"relative\", display: \"inline-block\", width: 32, height: 18, borderRadius: 9, flexShrink: 0, cursor: \"pointer\", background: checked ? \"var(--silo-accent)\" : \"var(--silo-border)\", transition: \"background 150ms\" }}>\n <span style={{ position: \"absolute\", top: 2, left: checked ? 16 : 2, width: 14, height: 14, borderRadius: \"50%\", background: \"#fff\", boxShadow: \"0 1px 3px rgba(0,0,0,.2)\", transition: \"left 150ms\" }} />\n </span>\n {label}\n </label>\n );\n}\n\nexport function VideoOptions({ value, onChange, style }: VideoOptionsProps) {\n const codec = value.codec ?? \"h264\";\n const transcoding = value.transcoding ?? \"auto\";\n const isAuto = transcoding === \"auto\";\n const selectedRes: string[] = isAuto ? [] : (transcoding as string[]);\n\n type Res = \"360\" | \"480\" | \"720\" | \"1080\" | \"1440\" | \"2160\";\n function toggleRes(r: Res) {\n if (isAuto) { onChange({ ...value, transcoding: [r] }); return; }\n const next = selectedRes.includes(r) ? selectedRes.filter((x) => x !== r) : [...selectedRes, r];\n onChange({ ...value, transcoding: next.length === 0 ? \"auto\" : (next as Res[]) });\n }\n\n function toggleFeature(key: keyof VideoUploadOptions) {\n onChange({ ...value, [key]: !value[key] });\n }\n\n return (\n <div className=\"flex flex-col gap-3\" style={style}>\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, textTransform: \"uppercase\", letterSpacing: \"0.05em\", marginBottom: 6, color: \"var(--silo-text-muted)\" }}>Codec</div>\n <div className=\"flex gap-1.5 flex-wrap\">\n {CODECS.map((c) => (\n <button key={c.value} type=\"button\" title={c.hint}\n onClick={() => onChange({ ...value, codec: c.value as NonNullable<VideoUploadOptions[\"codec\"]> })}\n style={optBtnStyle(codec === c.value)}\n >\n {c.label}\n </button>\n ))}\n </div>\n </div>\n\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, textTransform: \"uppercase\", letterSpacing: \"0.05em\", marginBottom: 6, color: \"var(--silo-text-muted)\" }}>Resoluções</div>\n <div className=\"flex gap-1.5 flex-wrap\">\n <button type=\"button\" onClick={() => onChange({ ...value, transcoding: \"auto\" })} style={optBtnStyle(isAuto)}>Auto</button>\n {RESOLUTIONS.map((r) => (\n <button key={r} type=\"button\"\n onClick={() => toggleRes(r as \"360\" | \"480\" | \"720\" | \"1080\" | \"1440\" | \"2160\")}\n style={optBtnStyle(!isAuto && selectedRes.includes(r))}\n >\n {RESOLUTION_LABELS[r]}\n </button>\n ))}\n </div>\n </div>\n\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, textTransform: \"uppercase\", letterSpacing: \"0.05em\", marginBottom: 8, color: \"var(--silo-text-muted)\" }}>Recursos</div>\n <div className=\"flex flex-col gap-2\">\n <Toggle checked={value.thumbnails ?? true} onToggle={() => toggleFeature(\"thumbnails\")} label=\"Gerar thumbnails\" />\n <Toggle checked={value.storyboard ?? false} onToggle={() => toggleFeature(\"storyboard\")} label=\"Gerar storyboard\" />\n <Toggle checked={value.autoCaptions ?? false} onToggle={() => toggleFeature(\"autoCaptions\")} label=\"Legendas automáticas (IA)\" />\n <Toggle checked={value.separateAudio ?? false} onToggle={() => toggleFeature(\"separateAudio\")} label=\"Separar faixa de áudio\" />\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, useCallback, type CSSProperties } from \"react\";\nimport { useMultipartUpload } from \"@geekapps/silo-nextjs\";\nimport type { VideoUploadOptions } from \"@geekapps/silo-nextjs\";\nimport type { VideoUploaderProps } from \"./types.js\";\nimport { DropZone } from \"./components/DropZone.js\";\nimport { ProgressBar } from \"./components/ProgressBar.js\";\nimport { VideoOptions } from \"./components/VideoOptions.js\";\nimport { formatBytes } from \"./utils/format.js\";\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\n\nconst DEFAULT_VIDEO_OPTS: VideoUploadOptions = {\n thumbnails: true, storyboard: false, autoCaptions: false,\n separateAudio: false, codec: \"h264\", transcoding: \"auto\",\n};\n\nfunction createInitialVideoOpts(video?: VideoUploadOptions): VideoUploadOptions {\n return video ?? DEFAULT_VIDEO_OPTS;\n}\n\nfunction uploadLabel(status: string, progress: number): string {\n if (status === \"preparing\") return \"Preparando…\";\n if (status === \"completing\") return \"Concluindo envio…\";\n if (progress < 20) return \"Iniciando envio…\";\n if (progress < 50) return \"Enviando vídeo…\";\n if (progress < 80) return \"Ainda enviando…\";\n if (progress < 97) return \"Quase terminando…\";\n return \"Finalizando…\";\n}\n\nexport function VideoUploader({\n bucket,\n expiresIn,\n onUpload,\n onError,\n className = \"\",\n style,\n disabled = false,\n maxSize,\n accept = \"video/*\",\n showPreview = true,\n showVideoOptions = false,\n video,\n theme,\n renderIcon,\n renderProgress,\n renderSuccess,\n renderError,\n children,\n}: VideoUploaderProps) {\n const { state, upload, pause, resume, abort, reset } = useMultipartUpload(bucket);\n const [preview, setPreview] = useState<string | null>(null);\n const [videoOpts, setVideoOpts] = useState<VideoUploadOptions>(() => createInitialVideoOpts(video));\n const [stagedFile, setStagedFile] = useState<File | null>(null);\n const t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const doUpload = useCallback(async (file: File, opts: VideoUploadOptions) => {\n if (showPreview) setPreview(URL.createObjectURL(file));\n try {\n const result = await upload(file, { ...(bucket !== undefined && { bucket }), video: opts });\n if (result) onUpload?.(result);\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n }, [upload, bucket, onUpload, onError, showPreview]);\n\n const handleFiles = useCallback(async (files: File[]) => {\n const file = files[0];\n if (!file) return;\n if (showVideoOptions) {\n setVideoOpts(createInitialVideoOpts(video));\n setStagedFile(file);\n if (showPreview) setPreview(URL.createObjectURL(file));\n } else {\n await doUpload(file, video ?? videoOpts);\n }\n }, [showVideoOptions, video, videoOpts, doUpload, showPreview]);\n\n const containerStyle: CSSProperties = {\n ...vars as CSSProperties,\n ...style,\n };\n\n const isUploading = state.status === \"uploading\" || state.status === \"preparing\" || state.status === \"completing\";\n const progress = state.status === \"uploading\" ? state.progress : state.status === \"completing\" ? 99 : 0;\n const isPaused = state.status === \"idle\" && preview !== null && !stagedFile;\n\n if (state.status === \"error\" && renderError) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderError(state.error, reset)}</div>;\n if (state.status === \"done\" && renderSuccess) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderSuccess(state.result)}</div>;\n\n return (\n <div className={`flex flex-col gap-3 w-full${className ? ` ${className}` : \"\"}`} style={containerStyle}>\n <DropZone\n {...(accept !== undefined && { accept })}\n {...(maxSize !== undefined && { maxSize })}\n {...(onError !== undefined && { onError })}\n {...(theme !== undefined && { theme })}\n disabled={disabled || isUploading}\n onFiles={handleFiles}\n style={{ padding: \"32px 24px\", textAlign: \"center\" }}\n >\n {preview && !isUploading && !stagedFile ? (\n <div className=\"flex flex-col items-center gap-2\">\n <video src={preview} className=\"max-w-full max-h-[180px] rounded-lg\" muted playsInline />\n <span className=\"text-[12px] text-slate-400\">Clique ou arraste para trocar o vídeo</span>\n </div>\n ) : (\n <div className=\"flex flex-col items-center gap-2\">\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" className=\"text-slate-400 opacity-50\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M15 10l4.553-2.069A1 1 0 0121 8.878v6.244a1 1 0 01-1.447.894L15 14M3 8a2 2 0 012-2h8a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2V8z\" />\n </svg>\n )}\n {children ?? (\n <>\n <span className=\"text-slate-900 font-bold text-[15px]\">Arraste seu vídeo aqui</span>\n <span className=\"text-slate-500 text-[13px]\">ou clique para escolher do seu dispositivo</span>\n <span className=\"text-slate-400 text-[12px]\">\n MP4, MOV, MKV, WebM{maxSize ? ` · Máx ${formatBytes(maxSize)}` : \"\"}\n </span>\n </>\n )}\n </div>\n )}\n </DropZone>\n\n {showVideoOptions && stagedFile && !isUploading && state.status !== \"done\" && (\n <>\n {preview && (\n <div className=\"border border-slate-200 rounded-xl overflow-hidden bg-black\">\n <video src={preview} className=\"w-full max-h-[200px] block\" muted playsInline controls />\n </div>\n )}\n <div className=\"border border-slate-200 rounded-xl overflow-hidden\">\n <div className=\"px-3.5 py-2 bg-slate-100 text-[12px] font-bold text-slate-500 tracking-[0.04em]\">🎬 Configurações de vídeo</div>\n <VideoOptions value={videoOpts} onChange={setVideoOpts} style={{ padding: \"12px 14px\" }} />\n </div>\n <div className=\"flex gap-2\">\n <button\n className=\"inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border border-slate-200 bg-transparent text-slate-900 cursor-pointer hover:bg-slate-100\"\n onClick={() => { setStagedFile(null); setPreview(null); setVideoOpts(createInitialVideoOpts(video)); }}\n >\n Cancelar\n </button>\n <button\n className=\"flex-1 inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border-transparent bg-indigo-500 text-white cursor-pointer hover:opacity-90\"\n onClick={() => { const f = stagedFile; setStagedFile(null); void doUpload(f, videoOpts); setVideoOpts(createInitialVideoOpts(video)); }}\n >\n Enviar vídeo\n </button>\n </div>\n </>\n )}\n\n {isUploading && (\n renderProgress ? renderProgress(progress) : (\n <div className=\"flex flex-col gap-2 px-3 py-4 bg-slate-50 rounded-xl border border-slate-200\">\n <div className=\"flex justify-between items-center\">\n <span className=\"text-[13px] font-semibold text-slate-900\">{uploadLabel(state.status, progress)}</span>\n <div className=\"flex gap-2 items-center\">\n <span className=\"text-[13px] font-bold text-indigo-500\">{progress}%</span>\n <button\n className=\"inline-flex items-center justify-center text-[11px] font-semibold py-0.5 px-2 rounded-lg border border-slate-200 bg-transparent text-slate-900 cursor-pointer hover:bg-slate-100\"\n onClick={pause}\n >\n Pausar\n </button>\n </div>\n </div>\n <ProgressBar progress={progress} />\n <span className=\"text-[11px] text-slate-400\">O processamento do vídeo começa automaticamente após o envio</span>\n </div>\n )\n )}\n\n {isPaused && (\n <div className=\"flex gap-2\">\n <button\n className=\"flex-1 inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border-transparent bg-emerald-500 text-white cursor-pointer hover:opacity-90\"\n onClick={() => resume({ ...(bucket !== undefined && { bucket }), video: videoOpts })}\n >\n ▶ Retomar envio\n </button>\n <button\n className=\"inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border border-slate-200 bg-transparent text-slate-900 cursor-pointer hover:bg-slate-100\"\n onClick={() => { abort(); setPreview(null); }}\n >\n Cancelar\n </button>\n </div>\n )}\n\n {state.status === \"done\" && !renderSuccess && (\n <div className=\"flex flex-col gap-2 px-4 py-3.5 bg-green-500/[0.08] rounded-xl border border-green-500/20\">\n <div className=\"flex items-center gap-3\">\n <span className=\"text-2xl\">✅</span>\n <div className=\"flex-1\">\n <div className=\"font-bold text-sm text-green-700\">Vídeo enviado com sucesso!</div>\n <div className=\"text-[12px] text-slate-400 mt-0.5\">{formatBytes(state.result.size)}</div>\n </div>\n <button\n className=\"inline-flex items-center justify-center text-xs font-semibold py-1 px-2.5 rounded-lg border border-green-500/30 text-green-700 bg-transparent cursor-pointer hover:bg-green-500/10 shrink-0\"\n onClick={() => { reset(); setPreview(null); }}\n >\n Enviar outro\n </button>\n </div>\n <div className=\"text-[12px] text-slate-500 px-3 py-2 rounded-lg bg-green-500/[0.06] border border-green-500/15\">\n 🎬 Seu vídeo está sendo processado em segundo plano. Isso pode levar alguns minutos dependendo do tamanho.\n </div>\n </div>\n )}\n\n {state.status === \"error\" && !renderError && (\n <div className=\"flex items-center gap-3 px-4 py-3.5 bg-red-500/[0.07] rounded-xl border border-red-500/20\">\n <span className=\"text-[22px]\">⚠️</span>\n <div className=\"flex-1\">\n <div className=\"font-bold text-[13px] text-red-500\">Não foi possível enviar o vídeo</div>\n <div className=\"text-[12px] text-slate-400 mt-0.5\">{state.error.message}</div>\n </div>\n <button\n className=\"inline-flex items-center justify-center text-xs font-semibold py-1 px-2.5 rounded-lg border border-red-500/30 text-red-500 bg-transparent cursor-pointer hover:bg-red-500/10 shrink-0\"\n onClick={() => { reset(); setPreview(null); }}\n >\n Tentar novamente\n </button>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, useCallback, type CSSProperties } from \"react\";\nimport { useMultipartUpload, useBatchUpload } from \"@geekapps/silo-nextjs\";\nimport type { ImageUploadOptions, VideoUploadOptions } from \"@geekapps/silo-nextjs\";\nimport type { FileUploaderProps } from \"./types.js\";\nimport { DropZone } from \"./components/DropZone.js\";\nimport { ProgressBar } from \"./components/ProgressBar.js\";\nimport { ImageOptions } from \"./components/ImageOptions.js\";\nimport { VideoOptions } from \"./components/VideoOptions.js\";\nimport { formatBytes, getFileIcon } from \"./utils/format.js\";\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\n\nconst DEFAULT_VIDEO_OPTS: VideoUploadOptions = {\n thumbnails: true, storyboard: false, autoCaptions: false,\n separateAudio: false, codec: \"h264\", transcoding: \"auto\",\n};\n\nfunction createInitialImageOpts(image?: ImageUploadOptions): ImageUploadOptions {\n return image ?? { format: \"webp\", optimize: true };\n}\n\nfunction createInitialVideoOpts(video?: VideoUploadOptions): VideoUploadOptions {\n return video ?? DEFAULT_VIDEO_OPTS;\n}\n\nfunction uploadLabel(status: string, progress: number): string {\n if (status === \"preparing\") return \"Preparando…\";\n if (status === \"completing\") return \"Concluindo…\";\n if (progress < 30) return \"Iniciando envio…\";\n if (progress < 70) return \"Enviando…\";\n if (progress < 95) return \"Quase lá…\";\n return \"Finalizando…\";\n}\n\nexport function FileUploader({\n bucket,\n onUpload,\n onBatchUpload,\n onError,\n className = \"\",\n style,\n disabled = false,\n maxSize,\n accept,\n multiple = false,\n allowRename = false,\n showImageOptions = false,\n showVideoOptions = false,\n image,\n video,\n isPrivate,\n captionLanguages,\n theme,\n renderIcon,\n renderProgress,\n renderSuccess,\n renderError,\n children,\n}: FileUploaderProps) {\n const t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const containerStyle: CSSProperties = {\n ...vars as CSSProperties,\n ...style,\n };\n\n const single = useMultipartUpload(bucket);\n const batch = useBatchUpload();\n\n const [imageOpts, setImageOpts] = useState<ImageUploadOptions>(() => createInitialImageOpts(image));\n const [videoOpts, setVideoOpts] = useState<VideoUploadOptions>(() => createInitialVideoOpts(video));\n const [staged, setStaged] = useState<File[] | null>(null);\n const [renames, setRenames] = useState<Map<number, string>>(new Map());\n const [editingIndex, setEditingIndex] = useState<number | null>(null);\n\n function effectiveName(index: number, files: File[]): string {\n return renames.get(index) ?? files[index]?.name ?? \"\";\n }\n\n function setRename(index: number, name: string, files: File[]) {\n setRenames((prev) => {\n const next = new Map(prev);\n if (name.trim() && name.trim() !== files[index]?.name) next.set(index, name.trim());\n else next.delete(index);\n return next;\n });\n }\n\n function clearStaging() {\n setStaged(null);\n setRenames(new Map());\n setEditingIndex(null);\n setImageOpts(createInitialImageOpts(image));\n setVideoOpts(createInitialVideoOpts(video));\n }\n\n const doUpload = useCallback(async (files: File[], overrideImage?: ImageUploadOptions, overrideVideo?: VideoUploadOptions) => {\n const resolvedImage = overrideImage ?? imageOpts;\n const resolvedVideo = overrideVideo ?? videoOpts;\n const effectiveImage = showImageOptions ? resolvedImage : (image ?? resolvedImage);\n const effectiveVideo = showVideoOptions ? resolvedVideo : (video ?? resolvedVideo);\n if (multiple && files.length > 1) {\n try {\n const results = await batch.upload(files, {\n ...(bucket !== undefined && { bucket }),\n image: effectiveImage,\n video: effectiveVideo,\n ...(isPrivate !== undefined && { isPrivate }),\n ...(captionLanguages?.length && { captionLanguages }),\n });\n onBatchUpload?.(results);\n results.forEach((r) => onUpload?.(r));\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n } else {\n const file = files[0];\n if (!file) return;\n try {\n const result = await single.upload(file, {\n ...(bucket !== undefined && { bucket }),\n image: effectiveImage,\n video: effectiveVideo,\n ...(isPrivate !== undefined && { isPrivate }),\n });\n if (result) onUpload?.(result);\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n }\n }, [single, batch, multiple, bucket, image, video, isPrivate, captionLanguages, imageOpts, videoOpts, showImageOptions, showVideoOptions, onUpload, onBatchUpload, onError]);\n\n const handleFiles = useCallback(async (files: File[]) => {\n const needsStaging = allowRename\n || (showImageOptions && files.some((f) => f.type.startsWith(\"image/\")))\n || (showVideoOptions && files.some((f) => f.type.startsWith(\"video/\")));\n if (needsStaging) {\n setImageOpts(createInitialImageOpts(image));\n setVideoOpts(createInitialVideoOpts(video));\n setStaged(files);\n setRenames(new Map());\n }\n else await doUpload(files);\n }, [allowRename, showImageOptions, showVideoOptions, doUpload, image, video]);\n\n async function handleConfirmUpload() {\n if (!staged) return;\n const filesToUpload = staged.map((f, i) => {\n const name = effectiveName(i, staged);\n return name !== f.name ? new File([f], name, { type: f.type }) : f;\n });\n const snapshotImage = imageOpts;\n const snapshotVideo = videoOpts;\n clearStaging();\n await doUpload(filesToUpload, snapshotImage, snapshotVideo);\n }\n\n const isBatch = batch.state.files.length > 0;\n const isSingleUploading = single.state.status === \"uploading\" || single.state.status === \"preparing\" || single.state.status === \"completing\";\n const isBatchUploading = batch.state.status === \"uploading\" || batch.state.status === \"preparing\";\n const isUploading = isSingleUploading || isBatchUploading;\n const singleProgress = single.state.status === \"uploading\" ? single.state.progress : single.state.status === \"completing\" ? 99 : 0;\n\n if (single.state.status === \"error\" && renderError) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderError(single.state.error, single.reset)}</div>;\n if (single.state.status === \"done\" && renderSuccess) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderSuccess(single.state.result)}</div>;\n\n return (\n <div className={`flex flex-col gap-3 w-full${className ? ` ${className}` : \"\"}`} style={containerStyle}>\n\n {/* Drop zone */}\n {!isBatch && !staged && (\n <DropZone\n {...(accept !== undefined && { accept })}\n {...(maxSize !== undefined && { maxSize })}\n {...(onError !== undefined && { onError })}\n {...(theme !== undefined && { theme })}\n multiple={multiple}\n disabled={disabled || isUploading}\n onFiles={handleFiles}\n style={{ padding: \"28px 24px\", textAlign: \"center\" }}\n >\n <div className=\"flex flex-col items-center gap-2\">\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" className=\"text-slate-400 opacity-50\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5\" />\n </svg>\n )}\n {children ?? (\n <>\n <span style={{ color: \"var(--silo-text)\", fontWeight: 700, fontSize: 15 }}>\n {multiple ? \"Arraste seus arquivos aqui\" : \"Arraste seu arquivo aqui\"}\n </span>\n <span style={{ color: \"var(--silo-text-muted)\", fontSize: 13 }}>ou clique para escolher do seu dispositivo</span>\n {maxSize && <span style={{ color: \"var(--silo-text-muted)\", fontSize: 12 }}>Tamanho máximo: {formatBytes(maxSize)}</span>}\n </>\n )}\n </div>\n </DropZone>\n )}\n\n {/* Staging */}\n {staged && (\n <div className=\"flex flex-col gap-2\">\n <div style={{ color: \"var(--silo-text-muted)\", fontSize: 13, fontWeight: 600, marginBottom: 2 }}>\n {staged.length === 1 ? \"1 arquivo selecionado\" : `${staged.length} arquivos selecionados`}\n </div>\n\n {staged.map((f, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"10px 12px\", background: \"var(--silo-bg)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid var(--silo-border)\" }}>\n <span style={{ fontSize: 20, flexShrink: 0 }}>{getFileIcon(f.type)}</span>\n <div style={{ flex: 1, minWidth: 0 }}>\n {editingIndex === i ? (\n <input\n autoFocus\n type=\"text\"\n defaultValue={effectiveName(i, staged)}\n onBlur={(e) => { setRename(i, e.target.value, staged); setEditingIndex(null); }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") { setRename(i, e.currentTarget.value, staged); setEditingIndex(null); }\n if (e.key === \"Escape\") setEditingIndex(null);\n }}\n style={{ width: \"100%\", fontSize: 13, fontWeight: 500, border: \"1px solid var(--silo-accent)\", borderRadius: 6, padding: \"2px 8px\", outline: \"none\", background: \"var(--silo-bg)\", color: \"var(--silo-text)\" }}\n />\n ) : (\n <div\n style={{ fontSize: 13, fontWeight: 600, color: \"var(--silo-text)\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\", cursor: allowRename ? \"text\" : \"default\" }}\n onClick={() => allowRename && setEditingIndex(i)}\n title={allowRename ? \"Clique para renomear\" : undefined}\n >\n {effectiveName(i, staged)}\n {renames.has(i) && <span style={{ color: \"var(--silo-accent)\", marginLeft: 6, fontSize: 10, fontWeight: 700 }}>renomeado</span>}\n </div>\n )}\n <div style={{ fontSize: 11, color: \"var(--silo-text-muted)\", marginTop: 2 }}>{formatBytes(f.size)}</div>\n </div>\n {allowRename && (\n <button\n onClick={() => setEditingIndex(i)}\n title=\"Renomear\"\n style={{ color: \"var(--silo-text-muted)\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: 14, padding: \"0 4px\", flexShrink: 0 }}\n >\n ✏️\n </button>\n )}\n <button\n onClick={() => { const next = staged.filter((_, j) => j !== i); if (next.length === 0) clearStaging(); else setStaged(next); }}\n style={{ color: \"var(--silo-text-muted)\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: 18, padding: \"0 4px\", lineHeight: 1, flexShrink: 0 }}\n >\n ×\n </button>\n </div>\n ))}\n\n {showImageOptions && staged.some((f) => f.type.startsWith(\"image/\")) && (\n <div style={{ border: \"1px solid var(--silo-border)\", borderRadius: \"var(--silo-radius)\", overflow: \"hidden\" }}>\n <div style={{ padding: \"8px 14px\", background: \"var(--silo-bg-hover)\", fontSize: 12, fontWeight: 700, color: \"var(--silo-text-muted)\", letterSpacing: \"0.04em\" }}>🖼️ Configurações de imagem</div>\n <div style={{ padding: \"12px 14px\", background: \"var(--silo-bg)\" }}>\n <ImageOptions value={imageOpts} onChange={setImageOpts} />\n </div>\n </div>\n )}\n\n {showVideoOptions && staged.some((f) => f.type.startsWith(\"video/\")) && (\n <div style={{ border: \"1px solid var(--silo-border)\", borderRadius: \"var(--silo-radius)\", overflow: \"hidden\" }}>\n <div style={{ padding: \"8px 14px\", background: \"var(--silo-bg-hover)\", fontSize: 12, fontWeight: 700, color: \"var(--silo-text-muted)\", letterSpacing: \"0.04em\" }}>🎬 Configurações de vídeo</div>\n <div style={{ padding: \"12px 14px\", background: \"var(--silo-bg)\" }}>\n <VideoOptions value={videoOpts} onChange={setVideoOpts} />\n </div>\n </div>\n )}\n\n <div className=\"flex gap-2 mt-1\">\n <button\n onClick={clearStaging}\n style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", gap: 6, fontSize: 14, fontWeight: 700, padding: \"10px 16px\", borderRadius: \"var(--silo-radius)\", border: \"1px solid var(--silo-border)\", background: \"transparent\", color: \"var(--silo-text)\", cursor: \"pointer\" }}\n >\n Cancelar\n </button>\n <button\n onClick={handleConfirmUpload}\n style={{ flex: 1, display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", gap: 6, fontSize: 14, fontWeight: 700, padding: \"10px 16px\", borderRadius: \"var(--silo-radius)\", border: \"none\", background: \"var(--silo-accent)\", color: \"#fff\", cursor: \"pointer\" }}\n >\n {staged.length > 1 ? `Enviar ${staged.length} arquivos` : \"Enviar arquivo\"}\n </button>\n </div>\n </div>\n )}\n\n {/* Single upload progress */}\n {isSingleUploading && !isBatch && (\n renderProgress ? renderProgress(singleProgress) : (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8, padding: \"12px 16px\", background: \"var(--silo-bg)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid var(--silo-border)\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\" }}>\n <span style={{ fontSize: 13, fontWeight: 600, color: \"var(--silo-text)\" }}>{uploadLabel(single.state.status, singleProgress)}</span>\n <span style={{ fontSize: 13, fontWeight: 700, color: \"var(--silo-accent)\" }}>{singleProgress}%</span>\n </div>\n <ProgressBar progress={singleProgress} />\n </div>\n )\n )}\n\n {/* Batch upload progress */}\n {isBatch && (\n <div className=\"flex flex-col gap-2\">\n {batch.state.files.map((f, i) => {\n const st = f.status;\n const p = st.status === \"uploading\" ? st.progress : st.status === \"paused\" ? st.progress : st.status === \"done\" ? 100 : st.status === \"completing\" ? 99 : 0;\n const isPaused = st.status === \"paused\";\n const isDone = st.status === \"done\";\n const isErr = st.status === \"error\";\n\n return (\n <div key={i} style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"stretch\", gap: 8, padding: \"12px 14px\", background: \"var(--silo-bg)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid var(--silo-border)\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span style={{ fontSize: 18, flexShrink: 0 }}>{getFileIcon(f.file.type)}</span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: 13, fontWeight: 600, color: \"var(--silo-text)\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>{f.file.name}</div>\n <div style={{ fontSize: 11, color: \"var(--silo-text-muted)\" }}>{formatBytes(f.file.size)}</div>\n </div>\n {isDone && <span style={{ fontSize: 18, flexShrink: 0 }}>✅</span>}\n {isErr && <span style={{ fontSize: 12, fontWeight: 600, color: \"var(--silo-error)\", flexShrink: 0 }}>Erro no envio</span>}\n {!isDone && !isErr && (\n <span style={{ fontSize: 12, fontWeight: 700, flexShrink: 0, color: isPaused ? \"var(--silo-text-muted)\" : \"var(--silo-accent)\" }}>\n {isPaused ? \"Pausado\" : `${p}%`}\n </span>\n )}\n {!isDone && !isErr && f.fileId && (\n isPaused\n ? <button style={{ fontSize: 11, fontWeight: 600, padding: \"2px 10px\", borderRadius: 6, border: \"none\", background: \"#22c55e\", color: \"#fff\", cursor: \"pointer\" }} onClick={() => batch.resumeFile(f.fileId!)}>Retomar</button>\n : st.status === \"uploading\" ? <button style={{ fontSize: 11, fontWeight: 600, padding: \"2px 10px\", borderRadius: 6, border: \"1px solid var(--silo-border)\", background: \"transparent\", color: \"var(--silo-text)\", cursor: \"pointer\" }} onClick={() => batch.pauseFile(f.fileId!)}>Pausar</button> : null\n )}\n </div>\n {!isDone && !isErr && <ProgressBar progress={p} />}\n </div>\n );\n })}\n\n <div className=\"flex gap-2\">\n {batch.state.status !== \"done\" && (\n <button\n onClick={isBatchUploading ? batch.pauseAll : batch.resumeAll}\n style={{ flex: 1, display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", gap: 6, fontSize: 14, fontWeight: 700, padding: \"10px 16px\", borderRadius: \"var(--silo-radius)\", border: \"none\", background: isBatchUploading ? \"#f59e0b\" : \"#22c55e\", color: \"#fff\", cursor: \"pointer\" }}\n >\n {isBatchUploading ? \"⏸ Pausar tudo\" : \"▶ Retomar tudo\"}\n </button>\n )}\n <button\n onClick={batch.state.status === \"done\" ? batch.reset : batch.abortAll}\n style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", gap: 6, fontSize: 14, fontWeight: 700, padding: \"10px 16px\", borderRadius: \"var(--silo-radius)\", border: \"none\", background: batch.state.status === \"done\" ? \"var(--silo-accent)\" : \"#ef4444cc\", color: \"#fff\", cursor: \"pointer\" }}\n >\n {batch.state.status === \"done\" ? \"Enviar mais arquivos\" : \"Cancelar\"}\n </button>\n </div>\n\n {batch.state.status === \"done\" && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"10px 12px\", background: \"rgba(34,197,94,0.08)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid rgba(34,197,94,0.2)\" }}>\n <span style={{ fontSize: 20 }}>🎉</span>\n <span style={{ fontSize: 14, fontWeight: 600, color: \"#16a34a\" }}>\n {batch.state.files.length === 1 ? \"Arquivo enviado com sucesso!\" : `${batch.state.files.length} arquivos enviados com sucesso!`}\n </span>\n </div>\n )}\n </div>\n )}\n\n {/* Single done */}\n {single.state.status === \"done\" && !renderSuccess && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12, padding: \"14px 16px\", background: \"rgba(34,197,94,0.08)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid rgba(34,197,94,0.2)\" }}>\n <span style={{ fontSize: 24 }}>✅</span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 700, fontSize: 14, color: \"#16a34a\" }}>Arquivo enviado com sucesso!</div>\n <div style={{ fontSize: 12, color: \"var(--silo-text-muted)\", marginTop: 2 }}>{formatBytes(single.state.result.size)}</div>\n </div>\n <button\n onClick={single.reset}\n style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 12, fontWeight: 600, padding: \"4px 10px\", borderRadius: 6, border: \"1px solid rgba(34,197,94,0.3)\", color: \"#16a34a\", background: \"transparent\", cursor: \"pointer\", flexShrink: 0 }}\n >\n Enviar outro\n </button>\n </div>\n )}\n\n {/* Single error */}\n {single.state.status === \"error\" && !renderError && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12, padding: \"14px 16px\", background: \"rgba(239,68,68,0.07)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid rgba(239,68,68,0.2)\" }}>\n <span style={{ fontSize: 22 }}>⚠️</span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 700, fontSize: 13, color: \"var(--silo-error)\" }}>Não foi possível enviar o arquivo</div>\n <div style={{ fontSize: 12, color: \"var(--silo-text-muted)\", marginTop: 2 }}>{single.state.error.message}</div>\n </div>\n <button\n onClick={single.reset}\n style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 12, fontWeight: 600, padding: \"4px 10px\", borderRadius: 6, border: \"1px solid rgba(239,68,68,0.3)\", color: \"var(--silo-error)\", background: \"transparent\", cursor: \"pointer\", flexShrink: 0 }}\n >\n Tentar novamente\n </button>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, type CSSProperties } from \"react\";\nimport type { MediaUploaderProps } from \"./types.js\";\nimport { ImageUploader } from \"./ImageUploader.js\";\nimport { VideoUploader } from \"./VideoUploader.js\";\nimport { FileUploader } from \"./FileUploader.js\";\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\n\ntype Tab = \"image\" | \"video\" | \"file\";\n\nconst TAB_LABELS: Record<Tab, { label: string; icon: string }> = {\n image: { label: \"Imagem\", icon: \"🖼️\" },\n video: { label: \"Vídeo\", icon: \"🎬\" },\n file: { label: \"Arquivo\", icon: \"📎\" },\n};\n\nexport function MediaUploader({\n tabs = [\"image\", \"video\", \"file\"],\n defaultTab,\n imageProps,\n videoProps,\n fileProps,\n className = \"\",\n style,\n theme,\n onUpload,\n onBatchUpload,\n onError,\n ...shared\n}: MediaUploaderProps) {\n const [activeTab, setActiveTab] = useState<Tab>(defaultTab ?? tabs[0] ?? \"image\");\n const t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const containerStyle: CSSProperties = {\n ...vars as CSSProperties,\n ...style,\n };\n\n return (\n <div\n className={`flex flex-col w-full border border-slate-200 rounded-xl overflow-hidden bg-slate-50${className ? ` ${className}` : \"\"}`}\n style={containerStyle}\n >\n {/* Tab bar */}\n <div className=\"flex border-b border-slate-200\">\n {tabs.map((tab) => (\n <button\n key={tab}\n onClick={() => setActiveTab(tab)}\n className={`flex-1 flex items-center justify-center gap-1.5 py-2.5 px-2 bg-transparent border-none border-b-2 cursor-pointer text-[13px] transition-colors duration-150${\n activeTab === tab\n ? \"border-b-indigo-500 font-semibold text-indigo-500\"\n : \"border-b-transparent font-normal text-slate-400 hover:text-slate-600\"\n }`}\n style={{ borderBottom: `2px solid ${activeTab === tab ? \"#6366f1\" : \"transparent\"}` }}\n >\n <span>{TAB_LABELS[tab].icon}</span>\n <span>{TAB_LABELS[tab].label}</span>\n </button>\n ))}\n </div>\n\n {/* Tab content */}\n <div className=\"p-4\">\n {activeTab === \"image\" && (\n <ImageUploader\n {...shared}\n {...imageProps}\n {...(theme !== undefined && { theme })}\n {...(onUpload !== undefined && { onUpload })}\n {...(onError !== undefined && { onError })}\n />\n )}\n {activeTab === \"video\" && (\n <VideoUploader\n {...shared}\n {...videoProps}\n {...(theme !== undefined && { theme })}\n {...(onUpload !== undefined && { onUpload })}\n {...(onError !== undefined && { onError })}\n />\n )}\n {activeTab === \"file\" && (\n <FileUploader\n {...shared}\n {...fileProps}\n multiple\n {...(theme !== undefined && { theme })}\n {...(onUpload !== undefined && { onUpload })}\n {...(onBatchUpload !== undefined && { onBatchUpload })}\n {...(onError !== undefined && { onError })}\n />\n )}\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/utils/theme.ts","../src/components/DropZone.tsx","../src/components/ProgressBar.tsx","../src/components/ImageOptions.tsx","../src/utils/format.ts","../src/ImageUploader.tsx","../src/components/VideoOptions.tsx","../src/VideoUploader.tsx","../src/FileUploader.tsx","../src/MediaUploader.tsx"],"names":["jsx","jsxs","useState","useCallback","uploadLabel","useMultipartUpload","Fragment","DEFAULT_VIDEO_OPTS","createInitialVideoOpts"],"mappings":"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","file":"MediaUploader.js","sourcesContent":["import type { SiloTheme } from \"../types.js\";\n\nexport const defaultTheme: Required<SiloTheme> = {\n borderColor: \"#e2e8f0\",\n borderColorActive: \"#6366f1\",\n backgroundColor: \"#f8fafc\",\n backgroundColorHover: \"#f1f5f9\",\n textColor: \"#0f172a\",\n textColorMuted: \"#64748b\",\n accentColor: \"#6366f1\",\n accentColorHover: \"#4f46e5\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n borderRadius: \"12px\",\n fontFamily: \"inherit\",\n};\n\nexport function resolveTheme(theme?: SiloTheme): Required<SiloTheme> {\n return { ...defaultTheme, ...theme };\n}\n\nexport function themeToVars(theme: Required<SiloTheme>): Record<string, string> {\n return {\n \"--silo-border\": theme.borderColor,\n \"--silo-border-active\": theme.borderColorActive,\n \"--silo-bg\": theme.backgroundColor,\n \"--silo-bg-hover\": theme.backgroundColorHover,\n \"--silo-text\": theme.textColor,\n \"--silo-text-muted\": theme.textColorMuted,\n \"--silo-accent\": theme.accentColor,\n \"--silo-accent-hover\": theme.accentColorHover,\n \"--silo-error\": theme.errorColor,\n \"--silo-success\": theme.successColor,\n \"--silo-radius\": theme.borderRadius,\n \"--silo-font\": theme.fontFamily,\n };\n}\n","\"use client\";\n\nimport {\n useState,\n useRef,\n useCallback,\n type DragEvent,\n type ChangeEvent,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport type { SiloTheme } from \"../types.js\";\nimport { resolveTheme, themeToVars } from \"../utils/theme.js\";\n\ninterface DropZoneProps {\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n maxSize?: number;\n onFiles: (files: File[]) => void;\n onError?: (error: Error) => void;\n className?: string;\n style?: CSSProperties;\n theme?: SiloTheme;\n children: ReactNode;\n}\n\nexport function DropZone({\n accept,\n multiple = false,\n disabled = false,\n maxSize,\n onFiles,\n onError,\n className = \"\",\n style,\n theme,\n children,\n}: DropZoneProps) {\n const [dragging, setDragging] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const validate = useCallback(\n (files: File[]): File[] => {\n return files.filter((f) => {\n if (maxSize && f.size > maxSize) {\n onError?.(new Error(`File \"${f.name}\" exceeds max size of ${maxSize} bytes`));\n return false;\n }\n return true;\n });\n },\n [maxSize, onError]\n );\n\n const handleDrop = useCallback(\n (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n setDragging(false);\n if (disabled) return;\n const files = Array.from(e.dataTransfer.files);\n const valid = validate(files);\n if (valid.length) onFiles(valid);\n },\n [disabled, validate, onFiles]\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files ?? []);\n const valid = validate(files);\n if (valid.length) onFiles(valid);\n e.target.value = \"\";\n },\n [validate, onFiles]\n );\n\n const rootStyle: CSSProperties = {\n ...vars as CSSProperties,\n border: `2px dashed ${dragging ? \"var(--silo-border-active)\" : \"var(--silo-border)\"}`,\n borderRadius: \"var(--silo-radius)\",\n background: dragging ? \"var(--silo-bg-hover)\" : \"var(--silo-bg)\",\n color: \"var(--silo-text)\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n outline: \"none\",\n transition: \"border-color 150ms, background 150ms\",\n ...style,\n };\n\n return (\n <div\n className={className}\n style={rootStyle}\n onDragOver={(e) => { e.preventDefault(); if (!disabled) setDragging(true); }}\n onDragLeave={() => setDragging(false)}\n onDrop={handleDrop}\n onClick={() => !disabled && inputRef.current?.click()}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") inputRef.current?.click(); }}\n aria-label=\"Upload area\"\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n className=\"hidden\"\n onChange={handleChange}\n disabled={disabled}\n />\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport type { CSSProperties } from \"react\";\n\ninterface ProgressBarProps {\n progress: number;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function ProgressBar({ progress, className = \"\", style }: ProgressBarProps) {\n return (\n <div\n className={className}\n style={{ height: 4, borderRadius: 9999, background: \"var(--silo-border, #e2e8f0)\", overflow: \"hidden\", ...style }}\n role=\"progressbar\"\n aria-valuenow={progress}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n style={{ height: \"100%\", borderRadius: 9999, background: \"var(--silo-accent, #6366f1)\", width: `${progress}%`, transition: \"width 200ms linear\" }}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport type { CSSProperties } from \"react\";\nimport type { ImageUploadOptions } from \"@geekapps/silo-nextjs\";\n\nconst FORMATS = [\n { value: \"webp\", label: \"WebP\", hint: \"Melhor custo-benefício\" },\n { value: \"avif\", label: \"AVIF\", hint: \"Máxima compressão\" },\n { value: \"jpeg\", label: \"JPEG\", hint: \"Compatibilidade universal\" },\n { value: \"png\", label: \"PNG\", hint: \"Sem perda\" },\n];\n\ninterface ImageOptionsProps {\n value: ImageUploadOptions;\n onChange: (opts: ImageUploadOptions) => void;\n style?: CSSProperties;\n}\n\nexport function ImageOptions({ value, onChange, style }: ImageOptionsProps) {\n const fmt = value.format ?? \"webp\";\n const optimize = value.optimize ?? true;\n\n return (\n <div className=\"flex flex-col gap-2.5\" style={style}>\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, textTransform: \"uppercase\", letterSpacing: \"0.05em\", marginBottom: 6, color: \"rgba(255,255,255,0.4)\" }}>\n Formato de saída\n </div>\n <div className=\"flex gap-1.5 flex-wrap\">\n {FORMATS.map((f) => (\n <button\n key={f.value}\n type=\"button\"\n onClick={() => onChange({ ...value, format: f.value as NonNullable<ImageUploadOptions[\"format\"]> })}\n title={f.hint}\n style={fmt === f.value\n ? { border: \"1px solid #6366f1\", background: \"#6366f1\", color: \"#fff\", padding: \"4px 12px\", borderRadius: 6, fontSize: 12, fontWeight: 600, cursor: \"pointer\" }\n : { border: \"1px solid rgba(255,255,255,0.2)\", background: \"rgba(255,255,255,0.06)\", color: \"rgba(255,255,255,0.8)\", padding: \"4px 12px\", borderRadius: 6, fontSize: 12, fontWeight: 600, cursor: \"pointer\" }\n }\n >\n {f.label}\n </button>\n ))}\n </div>\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, cursor: \"pointer\", userSelect: \"none\" }} onClick={() => onChange({ ...value, optimize: !optimize })}>\n <span style={{ position: \"relative\", display: \"inline-block\", width: 36, height: 20, borderRadius: 10, flexShrink: 0, cursor: \"pointer\", background: optimize ? \"#6366f1\" : \"rgba(255,255,255,0.15)\", transition: \"background 150ms\" }}>\n <span style={{ position: \"absolute\", top: 2, left: optimize ? 18 : 2, width: 16, height: 16, borderRadius: \"50%\", background: \"#fff\", boxShadow: \"0 1px 3px rgba(0,0,0,.3)\", transition: \"left 150ms\" }} />\n </span>\n <span style={{ fontSize: 12, fontWeight: 500, color: \"rgba(255,255,255,0.85)\" }}>Otimizar tamanho</span>\n <span style={{ fontSize: 11, color: \"rgba(255,255,255,0.45)\" }}>{optimize ? \"Qualidade 85 — menor tamanho\" : \"Qualidade máxima\"}</span>\n </div>\n </div>\n );\n}\n","export function formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 ** 2) return `${(bytes / 1024).toFixed(1)} KB`;\n if (bytes < 1024 ** 3) return `${(bytes / 1024 ** 2).toFixed(1)} MB`;\n return `${(bytes / 1024 ** 3).toFixed(2)} GB`;\n}\n\nexport function getFileIcon(mimeType: string): string {\n if (mimeType.startsWith(\"image/\")) return \"🖼️\";\n if (mimeType.startsWith(\"video/\")) return \"🎬\";\n if (mimeType.startsWith(\"audio/\")) return \"🎵\";\n if (mimeType === \"application/pdf\") return \"📄\";\n if (mimeType.includes(\"spreadsheet\") || mimeType.includes(\"excel\")) return \"📊\";\n if (mimeType.includes(\"presentation\") || mimeType.includes(\"powerpoint\")) return \"📑\";\n if (mimeType.includes(\"word\") || mimeType.includes(\"document\")) return \"📝\";\n if (mimeType.includes(\"zip\") || mimeType.includes(\"tar\") || mimeType.includes(\"gzip\")) return \"📦\";\n return \"📎\";\n}\n","\"use client\";\n\nimport { useState, useCallback, type CSSProperties } from \"react\";\nimport { useMultipartUpload } from \"@geekapps/silo-nextjs\";\nimport type { ImageUploadOptions } from \"@geekapps/silo-nextjs\";\nimport type { ImageUploaderProps } from \"./types.js\";\nimport { DropZone } from \"./components/DropZone.js\";\nimport { ProgressBar } from \"./components/ProgressBar.js\";\nimport { ImageOptions } from \"./components/ImageOptions.js\";\nimport { formatBytes } from \"./utils/format.js\";\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\n\nfunction uploadLabel(status: string, progress: number): string {\n if (status === \"preparing\") return \"Preparando…\";\n if (status === \"completing\") return \"Concluindo…\";\n if (progress < 30) return \"Iniciando envio…\";\n if (progress < 70) return \"Enviando imagem…\";\n if (progress < 95) return \"Quase lá…\";\n return \"Finalizando…\";\n}\n\nexport function ImageUploader({\n bucket,\n expiresIn,\n onUpload,\n onError,\n className = \"\",\n style,\n disabled = false,\n maxSize,\n accept = \"image/*\",\n showPreview = true,\n showImageOptions = false,\n image,\n theme,\n renderIcon,\n renderProgress,\n renderSuccess,\n renderError,\n children,\n}: ImageUploaderProps) {\n const { state, upload, pause, resume, abort, reset } = useMultipartUpload(bucket);\n const [preview, setPreview] = useState<string | null>(null);\n const [imageOpts, setImageOpts] = useState<ImageUploadOptions>(image ?? { format: \"webp\", optimize: true });\n const [stagedFile, setStagedFile] = useState<File | null>(null);\n const t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const doUpload = useCallback(async (file: File, opts: ImageUploadOptions) => {\n if (showPreview) setPreview(URL.createObjectURL(file));\n try {\n const result = await upload(file, { ...(bucket !== undefined && { bucket }), image: opts });\n if (result) onUpload?.(result);\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n }, [upload, bucket, onUpload, onError, showPreview]);\n\n const handleFiles = useCallback(async (files: File[]) => {\n const file = files[0];\n if (!file) return;\n if (showImageOptions) {\n setStagedFile(file);\n if (showPreview) setPreview(URL.createObjectURL(file));\n } else {\n await doUpload(file, image ?? imageOpts);\n }\n }, [showImageOptions, image, imageOpts, doUpload, showPreview]);\n\n const containerStyle: CSSProperties = {\n ...vars as CSSProperties,\n ...style,\n };\n\n const isUploading = state.status === \"uploading\" || state.status === \"preparing\" || state.status === \"completing\";\n const progress = state.status === \"uploading\" ? state.progress : state.status === \"completing\" ? 99 : 0;\n const isPaused = state.status === \"idle\" && preview !== null && !stagedFile;\n\n if (state.status === \"error\" && renderError) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderError(state.error, reset)}</div>;\n if (state.status === \"done\" && renderSuccess) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderSuccess(state.result)}</div>;\n\n return (\n <div className={`flex flex-col gap-3 w-full${className ? ` ${className}` : \"\"}`} style={containerStyle}>\n <DropZone\n {...(accept !== undefined && { accept })}\n {...(maxSize !== undefined && { maxSize })}\n {...(onError !== undefined && { onError })}\n {...(theme !== undefined && { theme })}\n disabled={disabled || isUploading}\n onFiles={handleFiles}\n style={{ padding: \"32px 24px\", textAlign: \"center\" }}\n >\n {preview && !isUploading && !stagedFile ? (\n <div className=\"flex flex-col items-center gap-2\">\n <img src={preview} alt=\"Pré-visualização\" className=\"max-w-full max-h-[200px] rounded-lg object-contain\" />\n <span className=\"text-[12px] text-slate-400\">Clique ou arraste para trocar a imagem</span>\n </div>\n ) : (\n <div className=\"flex flex-col items-center gap-2\">\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" className=\"text-slate-400 opacity-50\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n </svg>\n )}\n {children ?? (\n <>\n <span className=\"text-slate-900 font-bold text-[15px]\">Arraste sua imagem aqui</span>\n <span className=\"text-slate-500 text-[13px]\">ou clique para escolher do seu dispositivo</span>\n {maxSize && <span className=\"text-slate-400 text-[12px]\">Tamanho máximo: {formatBytes(maxSize)}</span>}\n </>\n )}\n </div>\n )}\n </DropZone>\n\n {showImageOptions && stagedFile && !isUploading && state.status !== \"done\" && (\n <>\n {preview && (\n <div className=\"border border-slate-200 rounded-xl overflow-hidden\">\n <img src={preview} alt=\"Pré-visualização\" className=\"w-full max-h-[200px] object-contain block bg-slate-50\" />\n </div>\n )}\n <div className=\"border border-slate-200 rounded-xl overflow-hidden\">\n <div className=\"px-3.5 py-2 bg-slate-100 text-[12px] font-bold text-slate-500 tracking-[0.04em]\">🖼️ Configurações de imagem</div>\n <ImageOptions value={imageOpts} onChange={setImageOpts} style={{ padding: \"12px 14px\" }} />\n </div>\n <div className=\"flex gap-2\">\n <button\n className=\"inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border border-slate-200 bg-transparent text-slate-900 cursor-pointer transition-colors hover:bg-slate-100\"\n onClick={() => { setStagedFile(null); setPreview(null); }}\n >\n Cancelar\n </button>\n <button\n className=\"flex-1 inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border-transparent bg-indigo-500 text-white cursor-pointer transition-opacity hover:opacity-90\"\n onClick={() => { const f = stagedFile; setStagedFile(null); void doUpload(f, imageOpts); }}\n >\n Enviar imagem\n </button>\n </div>\n </>\n )}\n\n {isUploading && (\n renderProgress ? renderProgress(progress) : (\n <div className=\"flex flex-col gap-2 px-3 py-4 bg-slate-50 rounded-xl border border-slate-200\">\n <div className=\"flex justify-between items-center\">\n <span className=\"text-[13px] font-semibold text-slate-900\">{uploadLabel(state.status, progress)}</span>\n <span className=\"text-[13px] font-bold text-indigo-500\">{progress}%</span>\n </div>\n <ProgressBar progress={progress} />\n </div>\n )\n )}\n\n {isPaused && (\n <div className=\"flex gap-2\">\n <button\n className=\"flex-1 inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border-transparent bg-emerald-500 text-white cursor-pointer hover:opacity-90\"\n onClick={() => resume({ ...(bucket !== undefined && { bucket }), image: imageOpts })}\n >\n ▶ Retomar envio\n </button>\n <button\n className=\"inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border border-slate-200 bg-transparent text-slate-900 cursor-pointer hover:bg-slate-100\"\n onClick={() => { abort(); setPreview(null); }}\n >\n Cancelar\n </button>\n </div>\n )}\n\n {state.status === \"done\" && !renderSuccess && (\n <div className=\"flex items-center gap-3 px-4 py-3.5 bg-green-500/[0.08] rounded-xl border border-green-500/20\">\n <span className=\"text-2xl\">✅</span>\n <div className=\"flex-1\">\n <div className=\"font-bold text-sm text-green-700\">Imagem enviada com sucesso!</div>\n <div className=\"text-[12px] text-slate-400 mt-0.5\">{formatBytes(state.result.size)}</div>\n </div>\n <button\n className=\"inline-flex items-center justify-center text-xs font-semibold py-1 px-2.5 rounded-lg border border-green-500/30 text-green-700 bg-transparent cursor-pointer hover:bg-green-500/10 shrink-0\"\n onClick={() => { reset(); setPreview(null); }}\n >\n Enviar outra\n </button>\n </div>\n )}\n\n {state.status === \"error\" && !renderError && (\n <div className=\"flex items-center gap-3 px-4 py-3.5 bg-red-500/[0.07] rounded-xl border border-red-500/20\">\n <span className=\"text-[22px]\">⚠️</span>\n <div className=\"flex-1\">\n <div className=\"font-bold text-[13px] text-red-500\">Não foi possível enviar a imagem</div>\n <div className=\"text-[12px] text-slate-400 mt-0.5\">{state.error.message}</div>\n </div>\n <button\n className=\"inline-flex items-center justify-center text-xs font-semibold py-1 px-2.5 rounded-lg border border-red-500/30 text-red-500 bg-transparent cursor-pointer hover:bg-red-500/10 shrink-0\"\n onClick={() => { reset(); setPreview(null); }}\n >\n Tentar novamente\n </button>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport type { CSSProperties } from \"react\";\nimport type { VideoUploadOptions } from \"@geekapps/silo-nextjs\";\n\nconst CODECS = [\n { value: \"h264\", label: \"H.264 (NVENC)\", hint: \"Compatibilidade máxima — GPU accelerated\" },\n { value: \"h265\", label: \"H.265 (NVENC)\", hint: \"Melhor compressão — GPU accelerated\" },\n];\n\nconst RESOLUTIONS = [\"144\", \"240\", \"360\", \"480\", \"720\", \"1080\", \"1440\", \"2160\"] as const;\nconst RESOLUTION_LABELS: Record<string, string> = {\n \"144\": \"144p\", \"240\": \"240p\", \"360\": \"360p\", \"480\": \"480p\",\n \"720\": \"720p\", \"1080\": \"1080p\", \"1440\": \"1440p\", \"2160\": \"4K\",\n};\n\ninterface VideoOptionsProps {\n value: VideoUploadOptions;\n onChange: (opts: VideoUploadOptions) => void;\n style?: CSSProperties;\n}\n\nfunction optBtnStyle(active: boolean): CSSProperties {\n return active\n ? { border: \"1px solid #6366f1\", background: \"#6366f1\", color: \"#fff\", padding: \"4px 10px\", borderRadius: 6, fontSize: 12, fontWeight: 600, cursor: \"pointer\", minWidth: 36 }\n : { border: \"1px solid rgba(255,255,255,0.2)\", background: \"rgba(255,255,255,0.06)\", color: \"rgba(255,255,255,0.8)\", padding: \"4px 10px\", borderRadius: 6, fontSize: 12, fontWeight: 600, cursor: \"pointer\", minWidth: 36 };\n}\n\nfunction Toggle({ checked, onToggle, label }: { checked: boolean; onToggle: () => void; label: string }) {\n return (\n <div style={{ display: \"inline-flex\", alignItems: \"center\", gap: 8, cursor: \"pointer\", userSelect: \"none\" }} onClick={onToggle}>\n <span style={{ position: \"relative\", display: \"inline-block\", width: 32, height: 18, borderRadius: 9, flexShrink: 0, cursor: \"pointer\", background: checked ? \"#6366f1\" : \"rgba(255,255,255,0.15)\", transition: \"background 150ms\" }}>\n <span style={{ position: \"absolute\", top: 2, left: checked ? 16 : 2, width: 14, height: 14, borderRadius: \"50%\", background: \"#fff\", boxShadow: \"0 1px 3px rgba(0,0,0,.3)\", transition: \"left 150ms\" }} />\n </span>\n <span style={{ fontSize: 12, fontWeight: 500, color: \"rgba(255,255,255,0.85)\" }}>{label}</span>\n </div>\n );\n}\n\nexport function VideoOptions({ value, onChange, style }: VideoOptionsProps) {\n const codec = value.codec ?? \"h264\";\n const transcoding = value.transcoding ?? \"auto\";\n const isAuto = transcoding === \"auto\";\n const selectedRes: string[] = isAuto ? [] : (transcoding as string[]);\n\n type Res = \"360\" | \"480\" | \"720\" | \"1080\" | \"1440\" | \"2160\";\n function toggleRes(r: Res) {\n if (isAuto) { onChange({ ...value, transcoding: [r] }); return; }\n const next = selectedRes.includes(r) ? selectedRes.filter((x) => x !== r) : [...selectedRes, r];\n onChange({ ...value, transcoding: next.length === 0 ? \"auto\" : (next as Res[]) });\n }\n\n function toggleFeature(key: keyof VideoUploadOptions) {\n onChange({ ...value, [key]: !value[key] });\n }\n\n return (\n <div className=\"flex flex-col gap-3\" style={style}>\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, textTransform: \"uppercase\", letterSpacing: \"0.05em\", marginBottom: 6, color: \"rgba(255,255,255,0.4)\" }}>Codec</div>\n <div className=\"flex gap-1.5 flex-wrap\">\n {CODECS.map((c) => (\n <button key={c.value} type=\"button\" title={c.hint}\n onClick={() => onChange({ ...value, codec: c.value as NonNullable<VideoUploadOptions[\"codec\"]> })}\n style={optBtnStyle(codec === c.value)}\n >\n {c.label}\n </button>\n ))}\n </div>\n </div>\n\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, textTransform: \"uppercase\", letterSpacing: \"0.05em\", marginBottom: 6, color: \"rgba(255,255,255,0.4)\" }}>Resoluções</div>\n <div className=\"flex gap-1.5 flex-wrap\">\n <button type=\"button\" onClick={() => onChange({ ...value, transcoding: \"auto\" })} style={optBtnStyle(isAuto)}>Auto</button>\n {RESOLUTIONS.map((r) => (\n <button key={r} type=\"button\"\n onClick={() => toggleRes(r as \"360\" | \"480\" | \"720\" | \"1080\" | \"1440\" | \"2160\")}\n style={optBtnStyle(!isAuto && selectedRes.includes(r))}\n >\n {RESOLUTION_LABELS[r]}\n </button>\n ))}\n </div>\n </div>\n\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, textTransform: \"uppercase\", letterSpacing: \"0.05em\", marginBottom: 8, color: \"var(--silo-text-muted)\" }}>Recursos</div>\n <div className=\"flex flex-col gap-2\">\n <Toggle checked={value.thumbnails ?? true} onToggle={() => toggleFeature(\"thumbnails\")} label=\"Gerar thumbnails\" />\n <Toggle checked={value.storyboard ?? false} onToggle={() => toggleFeature(\"storyboard\")} label=\"Gerar storyboard\" />\n <Toggle checked={value.autoCaptions ?? false} onToggle={() => toggleFeature(\"autoCaptions\")} label=\"Legendas automáticas (IA)\" />\n <Toggle checked={value.separateAudio ?? false} onToggle={() => toggleFeature(\"separateAudio\")} label=\"Separar faixa de áudio\" />\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, useCallback, type CSSProperties } from \"react\";\nimport { useMultipartUpload } from \"@geekapps/silo-nextjs\";\nimport type { VideoUploadOptions } from \"@geekapps/silo-nextjs\";\nimport type { VideoUploaderProps } from \"./types.js\";\nimport { DropZone } from \"./components/DropZone.js\";\nimport { ProgressBar } from \"./components/ProgressBar.js\";\nimport { VideoOptions } from \"./components/VideoOptions.js\";\nimport { formatBytes } from \"./utils/format.js\";\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\n\nconst DEFAULT_VIDEO_OPTS: VideoUploadOptions = {\n thumbnails: true, storyboard: false, autoCaptions: false,\n separateAudio: false, codec: \"h264\", transcoding: \"auto\",\n};\n\nfunction createInitialVideoOpts(video?: VideoUploadOptions): VideoUploadOptions {\n return video ?? DEFAULT_VIDEO_OPTS;\n}\n\nfunction uploadLabel(status: string, progress: number): string {\n if (status === \"preparing\") return \"Preparando…\";\n if (status === \"completing\") return \"Concluindo envio…\";\n if (progress < 20) return \"Iniciando envio…\";\n if (progress < 50) return \"Enviando vídeo…\";\n if (progress < 80) return \"Ainda enviando…\";\n if (progress < 97) return \"Quase terminando…\";\n return \"Finalizando…\";\n}\n\nexport function VideoUploader({\n bucket,\n expiresIn,\n onUpload,\n onError,\n className = \"\",\n style,\n disabled = false,\n maxSize,\n accept = \"video/*\",\n showPreview = true,\n showVideoOptions = false,\n video,\n theme,\n renderIcon,\n renderProgress,\n renderSuccess,\n renderError,\n children,\n}: VideoUploaderProps) {\n const { state, upload, pause, resume, abort, reset } = useMultipartUpload(bucket);\n const [preview, setPreview] = useState<string | null>(null);\n const [videoOpts, setVideoOpts] = useState<VideoUploadOptions>(() => createInitialVideoOpts(video));\n const [stagedFile, setStagedFile] = useState<File | null>(null);\n const t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const doUpload = useCallback(async (file: File, opts: VideoUploadOptions) => {\n if (showPreview) setPreview(URL.createObjectURL(file));\n try {\n const result = await upload(file, { ...(bucket !== undefined && { bucket }), video: opts });\n if (result) onUpload?.(result);\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n }, [upload, bucket, onUpload, onError, showPreview]);\n\n const handleFiles = useCallback(async (files: File[]) => {\n const file = files[0];\n if (!file) return;\n if (showVideoOptions) {\n setVideoOpts(createInitialVideoOpts(video));\n setStagedFile(file);\n if (showPreview) setPreview(URL.createObjectURL(file));\n } else {\n await doUpload(file, video ?? videoOpts);\n }\n }, [showVideoOptions, video, videoOpts, doUpload, showPreview]);\n\n const containerStyle: CSSProperties = {\n ...vars as CSSProperties,\n ...style,\n };\n\n const isUploading = state.status === \"uploading\" || state.status === \"preparing\" || state.status === \"completing\";\n const progress = state.status === \"uploading\" ? state.progress : state.status === \"completing\" ? 99 : 0;\n const isPaused = state.status === \"idle\" && preview !== null && !stagedFile;\n\n if (state.status === \"error\" && renderError) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderError(state.error, reset)}</div>;\n if (state.status === \"done\" && renderSuccess) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderSuccess(state.result)}</div>;\n\n return (\n <div className={`flex flex-col gap-3 w-full${className ? ` ${className}` : \"\"}`} style={containerStyle}>\n <DropZone\n {...(accept !== undefined && { accept })}\n {...(maxSize !== undefined && { maxSize })}\n {...(onError !== undefined && { onError })}\n {...(theme !== undefined && { theme })}\n disabled={disabled || isUploading}\n onFiles={handleFiles}\n style={{ padding: \"32px 24px\", textAlign: \"center\" }}\n >\n {preview && !isUploading && !stagedFile ? (\n <div className=\"flex flex-col items-center gap-2\">\n <video src={preview} className=\"max-w-full max-h-[180px] rounded-lg\" muted playsInline />\n <span className=\"text-[12px] text-slate-400\">Clique ou arraste para trocar o vídeo</span>\n </div>\n ) : (\n <div className=\"flex flex-col items-center gap-2\">\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" className=\"text-slate-400 opacity-50\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M15 10l4.553-2.069A1 1 0 0121 8.878v6.244a1 1 0 01-1.447.894L15 14M3 8a2 2 0 012-2h8a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2V8z\" />\n </svg>\n )}\n {children ?? (\n <>\n <span className=\"text-slate-900 font-bold text-[15px]\">Arraste seu vídeo aqui</span>\n <span className=\"text-slate-500 text-[13px]\">ou clique para escolher do seu dispositivo</span>\n <span className=\"text-slate-400 text-[12px]\">\n MP4, MOV, MKV, WebM{maxSize ? ` · Máx ${formatBytes(maxSize)}` : \"\"}\n </span>\n </>\n )}\n </div>\n )}\n </DropZone>\n\n {showVideoOptions && stagedFile && !isUploading && state.status !== \"done\" && (\n <>\n {preview && (\n <div className=\"border border-slate-200 rounded-xl overflow-hidden bg-black\">\n <video src={preview} className=\"w-full max-h-[200px] block\" muted playsInline controls />\n </div>\n )}\n <div className=\"border border-slate-200 rounded-xl overflow-hidden\">\n <div className=\"px-3.5 py-2 bg-slate-100 text-[12px] font-bold text-slate-500 tracking-[0.04em]\">🎬 Configurações de vídeo</div>\n <VideoOptions value={videoOpts} onChange={setVideoOpts} style={{ padding: \"12px 14px\" }} />\n </div>\n <div className=\"flex gap-2\">\n <button\n className=\"inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border border-slate-200 bg-transparent text-slate-900 cursor-pointer hover:bg-slate-100\"\n onClick={() => { setStagedFile(null); setPreview(null); setVideoOpts(createInitialVideoOpts(video)); }}\n >\n Cancelar\n </button>\n <button\n className=\"flex-1 inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border-transparent bg-indigo-500 text-white cursor-pointer hover:opacity-90\"\n onClick={() => { const f = stagedFile; setStagedFile(null); void doUpload(f, videoOpts); setVideoOpts(createInitialVideoOpts(video)); }}\n >\n Enviar vídeo\n </button>\n </div>\n </>\n )}\n\n {isUploading && (\n renderProgress ? renderProgress(progress) : (\n <div className=\"flex flex-col gap-2 px-3 py-4 bg-slate-50 rounded-xl border border-slate-200\">\n <div className=\"flex justify-between items-center\">\n <span className=\"text-[13px] font-semibold text-slate-900\">{uploadLabel(state.status, progress)}</span>\n <div className=\"flex gap-2 items-center\">\n <span className=\"text-[13px] font-bold text-indigo-500\">{progress}%</span>\n <button\n className=\"inline-flex items-center justify-center text-[11px] font-semibold py-0.5 px-2 rounded-lg border border-slate-200 bg-transparent text-slate-900 cursor-pointer hover:bg-slate-100\"\n onClick={pause}\n >\n Pausar\n </button>\n </div>\n </div>\n <ProgressBar progress={progress} />\n <span className=\"text-[11px] text-slate-400\">O processamento do vídeo começa automaticamente após o envio</span>\n </div>\n )\n )}\n\n {isPaused && (\n <div className=\"flex gap-2\">\n <button\n className=\"flex-1 inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border-transparent bg-emerald-500 text-white cursor-pointer hover:opacity-90\"\n onClick={() => resume({ ...(bucket !== undefined && { bucket }), video: videoOpts })}\n >\n ▶ Retomar envio\n </button>\n <button\n className=\"inline-flex items-center justify-center gap-1.5 text-sm font-bold py-2.5 px-4 rounded-xl border border-slate-200 bg-transparent text-slate-900 cursor-pointer hover:bg-slate-100\"\n onClick={() => { abort(); setPreview(null); }}\n >\n Cancelar\n </button>\n </div>\n )}\n\n {state.status === \"done\" && !renderSuccess && (\n <div className=\"flex flex-col gap-2 px-4 py-3.5 bg-green-500/[0.08] rounded-xl border border-green-500/20\">\n <div className=\"flex items-center gap-3\">\n <span className=\"text-2xl\">✅</span>\n <div className=\"flex-1\">\n <div className=\"font-bold text-sm text-green-700\">Vídeo enviado com sucesso!</div>\n <div className=\"text-[12px] text-slate-400 mt-0.5\">{formatBytes(state.result.size)}</div>\n </div>\n <button\n className=\"inline-flex items-center justify-center text-xs font-semibold py-1 px-2.5 rounded-lg border border-green-500/30 text-green-700 bg-transparent cursor-pointer hover:bg-green-500/10 shrink-0\"\n onClick={() => { reset(); setPreview(null); }}\n >\n Enviar outro\n </button>\n </div>\n <div className=\"text-[12px] text-slate-500 px-3 py-2 rounded-lg bg-green-500/[0.06] border border-green-500/15\">\n 🎬 Seu vídeo está sendo processado em segundo plano. Isso pode levar alguns minutos dependendo do tamanho.\n </div>\n </div>\n )}\n\n {state.status === \"error\" && !renderError && (\n <div className=\"flex items-center gap-3 px-4 py-3.5 bg-red-500/[0.07] rounded-xl border border-red-500/20\">\n <span className=\"text-[22px]\">⚠️</span>\n <div className=\"flex-1\">\n <div className=\"font-bold text-[13px] text-red-500\">Não foi possível enviar o vídeo</div>\n <div className=\"text-[12px] text-slate-400 mt-0.5\">{state.error.message}</div>\n </div>\n <button\n className=\"inline-flex items-center justify-center text-xs font-semibold py-1 px-2.5 rounded-lg border border-red-500/30 text-red-500 bg-transparent cursor-pointer hover:bg-red-500/10 shrink-0\"\n onClick={() => { reset(); setPreview(null); }}\n >\n Tentar novamente\n </button>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, useCallback, type CSSProperties } from \"react\";\nimport { useMultipartUpload, useBatchUpload } from \"@geekapps/silo-nextjs\";\nimport type { ImageUploadOptions, VideoUploadOptions } from \"@geekapps/silo-nextjs\";\nimport type { FileUploaderProps } from \"./types.js\";\nimport { DropZone } from \"./components/DropZone.js\";\nimport { ProgressBar } from \"./components/ProgressBar.js\";\nimport { ImageOptions } from \"./components/ImageOptions.js\";\nimport { VideoOptions } from \"./components/VideoOptions.js\";\nimport { formatBytes, getFileIcon } from \"./utils/format.js\";\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\n\nconst DEFAULT_VIDEO_OPTS: VideoUploadOptions = {\n thumbnails: true, storyboard: false, autoCaptions: false,\n separateAudio: false, codec: \"h264\", transcoding: \"auto\",\n};\n\nfunction createInitialImageOpts(image?: ImageUploadOptions): ImageUploadOptions {\n return image ?? { format: \"webp\", optimize: true };\n}\n\nfunction createInitialVideoOpts(video?: VideoUploadOptions): VideoUploadOptions {\n return video ?? DEFAULT_VIDEO_OPTS;\n}\n\nfunction uploadLabel(status: string, progress: number): string {\n if (status === \"preparing\") return \"Preparando…\";\n if (status === \"completing\") return \"Concluindo…\";\n if (progress < 30) return \"Iniciando envio…\";\n if (progress < 70) return \"Enviando…\";\n if (progress < 95) return \"Quase lá…\";\n return \"Finalizando…\";\n}\n\nexport function FileUploader({\n bucket,\n onUpload,\n onBatchUpload,\n onError,\n className = \"\",\n style,\n disabled = false,\n maxSize,\n accept,\n multiple = false,\n allowRename = false,\n showImageOptions = false,\n showVideoOptions = false,\n image,\n video,\n isPrivate,\n captionLanguages,\n theme,\n renderIcon,\n renderProgress,\n renderSuccess,\n renderError,\n children,\n}: FileUploaderProps) {\n const t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const containerStyle: CSSProperties = {\n ...vars as CSSProperties,\n ...style,\n };\n\n const single = useMultipartUpload(bucket);\n const batch = useBatchUpload();\n\n const [imageOpts, setImageOpts] = useState<ImageUploadOptions>(() => createInitialImageOpts(image));\n const [videoOpts, setVideoOpts] = useState<VideoUploadOptions>(() => createInitialVideoOpts(video));\n const [staged, setStaged] = useState<File[] | null>(null);\n const [renames, setRenames] = useState<Map<number, string>>(new Map());\n const [editingIndex, setEditingIndex] = useState<number | null>(null);\n\n function effectiveName(index: number, files: File[]): string {\n return renames.get(index) ?? files[index]?.name ?? \"\";\n }\n\n function setRename(index: number, name: string, files: File[]) {\n setRenames((prev) => {\n const next = new Map(prev);\n if (name.trim() && name.trim() !== files[index]?.name) next.set(index, name.trim());\n else next.delete(index);\n return next;\n });\n }\n\n function clearStaging() {\n setStaged(null);\n setRenames(new Map());\n setEditingIndex(null);\n setImageOpts(createInitialImageOpts(image));\n setVideoOpts(createInitialVideoOpts(video));\n }\n\n const doUpload = useCallback(async (files: File[], overrideImage?: ImageUploadOptions, overrideVideo?: VideoUploadOptions) => {\n const resolvedImage = overrideImage ?? imageOpts;\n const resolvedVideo = overrideVideo ?? videoOpts;\n const effectiveImage = showImageOptions ? resolvedImage : (image ?? resolvedImage);\n const effectiveVideo = showVideoOptions ? resolvedVideo : (video ?? resolvedVideo);\n if (multiple && files.length > 1) {\n try {\n const results = await batch.upload(files, {\n ...(bucket !== undefined && { bucket }),\n image: effectiveImage,\n video: effectiveVideo,\n ...(isPrivate !== undefined && { isPrivate }),\n ...(captionLanguages?.length && { captionLanguages }),\n });\n onBatchUpload?.(results);\n results.forEach((r) => onUpload?.(r));\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n } else {\n const file = files[0];\n if (!file) return;\n try {\n const result = await single.upload(file, {\n ...(bucket !== undefined && { bucket }),\n image: effectiveImage,\n video: effectiveVideo,\n ...(isPrivate !== undefined && { isPrivate }),\n });\n if (result) onUpload?.(result);\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n }\n }, [single, batch, multiple, bucket, image, video, isPrivate, captionLanguages, imageOpts, videoOpts, showImageOptions, showVideoOptions, onUpload, onBatchUpload, onError]);\n\n const handleFiles = useCallback(async (files: File[]) => {\n const needsStaging = allowRename\n || (showImageOptions && files.some((f) => f.type.startsWith(\"image/\")))\n || (showVideoOptions && files.some((f) => f.type.startsWith(\"video/\")));\n if (needsStaging) {\n setImageOpts(createInitialImageOpts(image));\n setVideoOpts(createInitialVideoOpts(video));\n setStaged(files);\n setRenames(new Map());\n }\n else await doUpload(files);\n }, [allowRename, showImageOptions, showVideoOptions, doUpload, image, video]);\n\n async function handleConfirmUpload() {\n if (!staged) return;\n const filesToUpload = staged.map((f, i) => {\n const name = effectiveName(i, staged);\n return name !== f.name ? new File([f], name, { type: f.type }) : f;\n });\n const snapshotImage = imageOpts;\n const snapshotVideo = videoOpts;\n clearStaging();\n await doUpload(filesToUpload, snapshotImage, snapshotVideo);\n }\n\n const isBatch = batch.state.files.length > 0;\n const isSingleUploading = single.state.status === \"uploading\" || single.state.status === \"preparing\" || single.state.status === \"completing\";\n const isBatchUploading = batch.state.status === \"uploading\" || batch.state.status === \"preparing\";\n const isUploading = isSingleUploading || isBatchUploading;\n const singleProgress = single.state.status === \"uploading\" ? single.state.progress : single.state.status === \"completing\" ? 99 : 0;\n\n if (single.state.status === \"error\" && renderError) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderError(single.state.error, single.reset)}</div>;\n if (single.state.status === \"done\" && renderSuccess) return <div className=\"flex flex-col gap-3 w-full\" style={containerStyle}>{renderSuccess(single.state.result)}</div>;\n\n return (\n <div className={`flex flex-col gap-3 w-full${className ? ` ${className}` : \"\"}`} style={containerStyle}>\n\n {/* Drop zone */}\n {!isBatch && !staged && (\n <DropZone\n {...(accept !== undefined && { accept })}\n {...(maxSize !== undefined && { maxSize })}\n {...(onError !== undefined && { onError })}\n {...(theme !== undefined && { theme })}\n multiple={multiple}\n disabled={disabled || isUploading}\n onFiles={handleFiles}\n style={{ padding: \"28px 24px\", textAlign: \"center\" }}\n >\n <div className=\"flex flex-col items-center gap-2\">\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" className=\"text-slate-400 opacity-50\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5\" />\n </svg>\n )}\n {children ?? (\n <>\n <span style={{ color: \"var(--silo-text)\", fontWeight: 700, fontSize: 15 }}>\n {multiple ? \"Arraste seus arquivos aqui\" : \"Arraste seu arquivo aqui\"}\n </span>\n <span style={{ color: \"var(--silo-text-muted)\", fontSize: 13 }}>ou clique para escolher do seu dispositivo</span>\n {maxSize && <span style={{ color: \"var(--silo-text-muted)\", fontSize: 12 }}>Tamanho máximo: {formatBytes(maxSize)}</span>}\n </>\n )}\n </div>\n </DropZone>\n )}\n\n {/* Staging */}\n {staged && (\n <div className=\"flex flex-col gap-2\">\n <div style={{ color: \"var(--silo-text-muted)\", fontSize: 13, fontWeight: 600, marginBottom: 2 }}>\n {staged.length === 1 ? \"1 arquivo selecionado\" : `${staged.length} arquivos selecionados`}\n </div>\n\n {staged.map((f, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"10px 12px\", background: \"var(--silo-bg)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid var(--silo-border)\" }}>\n <span style={{ fontSize: 20, flexShrink: 0 }}>{getFileIcon(f.type)}</span>\n <div style={{ flex: 1, minWidth: 0 }}>\n {editingIndex === i ? (\n <input\n autoFocus\n type=\"text\"\n defaultValue={effectiveName(i, staged)}\n onBlur={(e) => { setRename(i, e.target.value, staged); setEditingIndex(null); }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") { setRename(i, e.currentTarget.value, staged); setEditingIndex(null); }\n if (e.key === \"Escape\") setEditingIndex(null);\n }}\n style={{ width: \"100%\", fontSize: 13, fontWeight: 500, border: \"1px solid var(--silo-accent)\", borderRadius: 6, padding: \"2px 8px\", outline: \"none\", background: \"var(--silo-bg)\", color: \"var(--silo-text)\" }}\n />\n ) : (\n <div\n style={{ fontSize: 13, fontWeight: 600, color: \"var(--silo-text)\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\", cursor: allowRename ? \"text\" : \"default\" }}\n onClick={() => allowRename && setEditingIndex(i)}\n title={allowRename ? \"Clique para renomear\" : undefined}\n >\n {effectiveName(i, staged)}\n {renames.has(i) && <span style={{ color: \"var(--silo-accent)\", marginLeft: 6, fontSize: 10, fontWeight: 700 }}>renomeado</span>}\n </div>\n )}\n <div style={{ fontSize: 11, color: \"var(--silo-text-muted)\", marginTop: 2 }}>{formatBytes(f.size)}</div>\n </div>\n {allowRename && (\n <button\n onClick={() => setEditingIndex(i)}\n title=\"Renomear\"\n style={{ color: \"var(--silo-text-muted)\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: 14, padding: \"0 4px\", flexShrink: 0 }}\n >\n ✏️\n </button>\n )}\n <button\n onClick={() => { const next = staged.filter((_, j) => j !== i); if (next.length === 0) clearStaging(); else setStaged(next); }}\n style={{ color: \"var(--silo-text-muted)\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: 18, padding: \"0 4px\", lineHeight: 1, flexShrink: 0 }}\n >\n ×\n </button>\n </div>\n ))}\n\n {showImageOptions && staged.some((f) => f.type.startsWith(\"image/\")) && (\n <div style={{ border: \"1px solid var(--silo-border)\", borderRadius: \"var(--silo-radius)\", overflow: \"hidden\" }}>\n <div style={{ padding: \"8px 14px\", background: \"var(--silo-bg-hover)\", fontSize: 12, fontWeight: 700, color: \"var(--silo-text-muted)\", letterSpacing: \"0.04em\" }}>🖼️ Configurações de imagem</div>\n <div style={{ padding: \"12px 14px\", background: \"var(--silo-bg)\" }}>\n <ImageOptions value={imageOpts} onChange={setImageOpts} />\n </div>\n </div>\n )}\n\n {showVideoOptions && staged.some((f) => f.type.startsWith(\"video/\")) && (\n <div style={{ border: \"1px solid var(--silo-border)\", borderRadius: \"var(--silo-radius)\", overflow: \"hidden\" }}>\n <div style={{ padding: \"8px 14px\", background: \"var(--silo-bg-hover)\", fontSize: 12, fontWeight: 700, color: \"var(--silo-text-muted)\", letterSpacing: \"0.04em\" }}>🎬 Configurações de vídeo</div>\n <div style={{ padding: \"12px 14px\", background: \"var(--silo-bg)\" }}>\n <VideoOptions value={videoOpts} onChange={setVideoOpts} />\n </div>\n </div>\n )}\n\n <div className=\"flex gap-2 mt-1\">\n <button\n onClick={clearStaging}\n style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", gap: 6, fontSize: 14, fontWeight: 700, padding: \"10px 16px\", borderRadius: \"var(--silo-radius)\", border: \"1px solid var(--silo-border)\", background: \"transparent\", color: \"var(--silo-text)\", cursor: \"pointer\" }}\n >\n Cancelar\n </button>\n <button\n onClick={handleConfirmUpload}\n style={{ flex: 1, display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", gap: 6, fontSize: 14, fontWeight: 700, padding: \"10px 16px\", borderRadius: \"var(--silo-radius)\", border: \"none\", background: \"var(--silo-accent)\", color: \"#fff\", cursor: \"pointer\" }}\n >\n {staged.length > 1 ? `Enviar ${staged.length} arquivos` : \"Enviar arquivo\"}\n </button>\n </div>\n </div>\n )}\n\n {/* Single upload progress */}\n {isSingleUploading && !isBatch && (\n renderProgress ? renderProgress(singleProgress) : (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8, padding: \"12px 16px\", background: \"var(--silo-bg)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid var(--silo-border)\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\" }}>\n <span style={{ fontSize: 13, fontWeight: 600, color: \"var(--silo-text)\" }}>{uploadLabel(single.state.status, singleProgress)}</span>\n <span style={{ fontSize: 13, fontWeight: 700, color: \"var(--silo-accent)\" }}>{singleProgress}%</span>\n </div>\n <ProgressBar progress={singleProgress} />\n </div>\n )\n )}\n\n {/* Batch upload progress */}\n {isBatch && (\n <div className=\"flex flex-col gap-2\">\n {batch.state.files.map((f, i) => {\n const st = f.status;\n const p = st.status === \"uploading\" ? st.progress : st.status === \"paused\" ? st.progress : st.status === \"done\" ? 100 : st.status === \"completing\" ? 99 : 0;\n const isPaused = st.status === \"paused\";\n const isDone = st.status === \"done\";\n const isErr = st.status === \"error\";\n\n return (\n <div key={i} style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"stretch\", gap: 8, padding: \"12px 14px\", background: \"var(--silo-bg)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid var(--silo-border)\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span style={{ fontSize: 18, flexShrink: 0 }}>{getFileIcon(f.file.type)}</span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: 13, fontWeight: 600, color: \"var(--silo-text)\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>{f.file.name}</div>\n <div style={{ fontSize: 11, color: \"var(--silo-text-muted)\" }}>{formatBytes(f.file.size)}</div>\n </div>\n {isDone && <span style={{ fontSize: 18, flexShrink: 0 }}>✅</span>}\n {isErr && <span style={{ fontSize: 12, fontWeight: 600, color: \"var(--silo-error)\", flexShrink: 0 }}>Erro no envio</span>}\n {!isDone && !isErr && (\n <span style={{ fontSize: 12, fontWeight: 700, flexShrink: 0, color: isPaused ? \"var(--silo-text-muted)\" : \"var(--silo-accent)\" }}>\n {isPaused ? \"Pausado\" : `${p}%`}\n </span>\n )}\n {!isDone && !isErr && f.fileId && (\n isPaused\n ? <button style={{ fontSize: 11, fontWeight: 600, padding: \"2px 10px\", borderRadius: 6, border: \"none\", background: \"#22c55e\", color: \"#fff\", cursor: \"pointer\" }} onClick={() => batch.resumeFile(f.fileId!)}>Retomar</button>\n : st.status === \"uploading\" ? <button style={{ fontSize: 11, fontWeight: 600, padding: \"2px 10px\", borderRadius: 6, border: \"1px solid var(--silo-border)\", background: \"transparent\", color: \"var(--silo-text)\", cursor: \"pointer\" }} onClick={() => batch.pauseFile(f.fileId!)}>Pausar</button> : null\n )}\n </div>\n {!isDone && !isErr && <ProgressBar progress={p} />}\n </div>\n );\n })}\n\n <div className=\"flex gap-2\">\n {batch.state.status !== \"done\" && (\n <button\n onClick={isBatchUploading ? batch.pauseAll : batch.resumeAll}\n style={{ flex: 1, display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", gap: 6, fontSize: 14, fontWeight: 700, padding: \"10px 16px\", borderRadius: \"var(--silo-radius)\", border: \"none\", background: isBatchUploading ? \"#f59e0b\" : \"#22c55e\", color: \"#fff\", cursor: \"pointer\" }}\n >\n {isBatchUploading ? \"⏸ Pausar tudo\" : \"▶ Retomar tudo\"}\n </button>\n )}\n <button\n onClick={batch.state.status === \"done\" ? batch.reset : batch.abortAll}\n style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", gap: 6, fontSize: 14, fontWeight: 700, padding: \"10px 16px\", borderRadius: \"var(--silo-radius)\", border: \"none\", background: batch.state.status === \"done\" ? \"var(--silo-accent)\" : \"#ef4444cc\", color: \"#fff\", cursor: \"pointer\" }}\n >\n {batch.state.status === \"done\" ? \"Enviar mais arquivos\" : \"Cancelar\"}\n </button>\n </div>\n\n {batch.state.status === \"done\" && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10, padding: \"10px 12px\", background: \"rgba(34,197,94,0.08)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid rgba(34,197,94,0.2)\" }}>\n <span style={{ fontSize: 20 }}>🎉</span>\n <span style={{ fontSize: 14, fontWeight: 600, color: \"#16a34a\" }}>\n {batch.state.files.length === 1 ? \"Arquivo enviado com sucesso!\" : `${batch.state.files.length} arquivos enviados com sucesso!`}\n </span>\n </div>\n )}\n </div>\n )}\n\n {/* Single done */}\n {single.state.status === \"done\" && !renderSuccess && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12, padding: \"14px 16px\", background: \"rgba(34,197,94,0.08)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid rgba(34,197,94,0.2)\" }}>\n <span style={{ fontSize: 24 }}>✅</span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 700, fontSize: 14, color: \"#16a34a\" }}>Arquivo enviado com sucesso!</div>\n <div style={{ fontSize: 12, color: \"var(--silo-text-muted)\", marginTop: 2 }}>{formatBytes(single.state.result.size)}</div>\n </div>\n <button\n onClick={single.reset}\n style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 12, fontWeight: 600, padding: \"4px 10px\", borderRadius: 6, border: \"1px solid rgba(34,197,94,0.3)\", color: \"#16a34a\", background: \"transparent\", cursor: \"pointer\", flexShrink: 0 }}\n >\n Enviar outro\n </button>\n </div>\n )}\n\n {/* Single error */}\n {single.state.status === \"error\" && !renderError && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12, padding: \"14px 16px\", background: \"rgba(239,68,68,0.07)\", borderRadius: \"var(--silo-radius)\", border: \"1px solid rgba(239,68,68,0.2)\" }}>\n <span style={{ fontSize: 22 }}>⚠️</span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 700, fontSize: 13, color: \"var(--silo-error)\" }}>Não foi possível enviar o arquivo</div>\n <div style={{ fontSize: 12, color: \"var(--silo-text-muted)\", marginTop: 2 }}>{single.state.error.message}</div>\n </div>\n <button\n onClick={single.reset}\n style={{ display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 12, fontWeight: 600, padding: \"4px 10px\", borderRadius: 6, border: \"1px solid rgba(239,68,68,0.3)\", color: \"var(--silo-error)\", background: \"transparent\", cursor: \"pointer\", flexShrink: 0 }}\n >\n Tentar novamente\n </button>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, type CSSProperties } from \"react\";\nimport type { MediaUploaderProps } from \"./types.js\";\nimport { ImageUploader } from \"./ImageUploader.js\";\nimport { VideoUploader } from \"./VideoUploader.js\";\nimport { FileUploader } from \"./FileUploader.js\";\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\n\ntype Tab = \"image\" | \"video\" | \"file\";\n\nconst TAB_LABELS: Record<Tab, { label: string; icon: string }> = {\n image: { label: \"Imagem\", icon: \"🖼️\" },\n video: { label: \"Vídeo\", icon: \"🎬\" },\n file: { label: \"Arquivo\", icon: \"📎\" },\n};\n\nexport function MediaUploader({\n tabs = [\"image\", \"video\", \"file\"],\n defaultTab,\n imageProps,\n videoProps,\n fileProps,\n className = \"\",\n style,\n theme,\n onUpload,\n onBatchUpload,\n onError,\n ...shared\n}: MediaUploaderProps) {\n const [activeTab, setActiveTab] = useState<Tab>(defaultTab ?? tabs[0] ?? \"image\");\n const t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const containerStyle: CSSProperties = {\n ...vars as CSSProperties,\n ...style,\n };\n\n return (\n <div\n className={`flex flex-col w-full border border-slate-200 rounded-xl overflow-hidden bg-slate-50${className ? ` ${className}` : \"\"}`}\n style={containerStyle}\n >\n {/* Tab bar */}\n <div className=\"flex border-b border-slate-200\">\n {tabs.map((tab) => (\n <button\n key={tab}\n onClick={() => setActiveTab(tab)}\n className={`flex-1 flex items-center justify-center gap-1.5 py-2.5 px-2 bg-transparent border-none border-b-2 cursor-pointer text-[13px] transition-colors duration-150${\n activeTab === tab\n ? \"border-b-indigo-500 font-semibold text-indigo-500\"\n : \"border-b-transparent font-normal text-slate-400 hover:text-slate-600\"\n }`}\n style={{ borderBottom: `2px solid ${activeTab === tab ? \"#6366f1\" : \"transparent\"}` }}\n >\n <span>{TAB_LABELS[tab].icon}</span>\n <span>{TAB_LABELS[tab].label}</span>\n </button>\n ))}\n </div>\n\n {/* Tab content */}\n <div className=\"p-4\">\n {activeTab === \"image\" && (\n <ImageUploader\n {...shared}\n {...imageProps}\n {...(theme !== undefined && { theme })}\n {...(onUpload !== undefined && { onUpload })}\n {...(onError !== undefined && { onError })}\n />\n )}\n {activeTab === \"video\" && (\n <VideoUploader\n {...shared}\n {...videoProps}\n {...(theme !== undefined && { theme })}\n {...(onUpload !== undefined && { onUpload })}\n {...(onError !== undefined && { onError })}\n />\n )}\n {activeTab === \"file\" && (\n <FileUploader\n {...shared}\n {...fileProps}\n multiple\n {...(theme !== undefined && { theme })}\n {...(onUpload !== undefined && { onUpload })}\n {...(onBatchUpload !== undefined && { onBatchUpload })}\n {...(onError !== undefined && { onError })}\n />\n )}\n </div>\n </div>\n );\n}\n"]}