@geekapps/silo-elements-nextjs 0.1.3 → 0.1.5

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/utils/format.ts","../src/ImageUploader.tsx","../src/VideoUploader.tsx","../src/FileUploader.tsx","../src/MediaUploader.tsx"],"names":["jsx","useState","useCallback","jsxs","useMultipartUpload","Fragment"],"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 fontFamily: \"var(--silo-font)\",\n border: `2px dashed ${dragging ? \"var(--silo-border-active)\" : \"var(--silo-border)\"}`,\n borderRadius: \"var(--silo-radius)\",\n backgroundColor: dragging ? \"var(--silo-bg-hover)\" : \"var(--silo-bg)\",\n color: \"var(--silo-text)\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n transition: \"border-color 0.15s, background-color 0.15s\",\n opacity: disabled ? 0.5 : 1,\n ...style,\n };\n\n return (\n <div\n className={`silo-dropzone${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 style={{ display: \"none\" }}\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={`silo-progress-track${className ? ` ${className}` : \"\"}`}\n style={{\n height: \"6px\",\n borderRadius: \"3px\",\n backgroundColor: \"rgba(99,102,241,0.15)\",\n overflow: \"hidden\",\n ...style,\n }}\n role=\"progressbar\"\n aria-valuenow={progress}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className=\"silo-progress-fill\"\n style={{\n height: \"100%\",\n width: `${progress}%`,\n backgroundColor: \"var(--silo-accent, #6366f1)\",\n borderRadius: \"3px\",\n transition: \"width 0.2s ease\",\n }}\n />\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 { ImageUploaderProps } from \"./types.js\";\nimport { DropZone } from \"./components/DropZone.js\";\nimport { ProgressBar } from \"./components/ProgressBar.js\";\nimport { formatBytes } from \"./utils/format.js\";\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\n\nexport function ImageUploader({\n bucket,\n expiresIn,\n visibility = \"private\",\n onUpload,\n onError,\n className = \"\",\n style,\n disabled = false,\n maxSize,\n accept = \"image/*\",\n showPreview = true,\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 t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const handleFiles = useCallback(async (files: File[]) => {\n const file = files[0];\n if (!file) return;\n if (showPreview) setPreview(URL.createObjectURL(file));\n try {\n const result = await upload(file, {\n ...(bucket !== undefined && { bucket }),\n visibility,\n ...(image && { image }),\n });\n if (result) onUpload?.(result);\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n }, [upload, bucket, visibility, image, onUpload, onError, showPreview]);\n\n const containerStyle: CSSProperties = {\n ...vars as CSSProperties,\n display: \"flex\", flexDirection: \"column\", gap: \"12px\",\n width: \"100%\", fontFamily: \"var(--silo-font)\", ...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;\n\n if (state.status === \"error\" && renderError) return <div style={containerStyle}>{renderError(state.error, reset)}</div>;\n if (state.status === \"done\" && renderSuccess) return <div style={containerStyle}>{renderSuccess(state.result)}</div>;\n\n return (\n <div className={`silo-image-uploader${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 ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"8px\" }}>\n <img src={preview} alt=\"Preview\" style={{ maxWidth: \"100%\", maxHeight: \"200px\", borderRadius: \"8px\", objectFit: \"contain\" }} />\n <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Clique ou arraste para substituir</span>\n </div>\n ) : (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"8px\" }}>\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" style={{ color: \"var(--silo-text-muted)\", opacity: 0.6 }}>\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 style={{ fontWeight: 600, color: \"var(--silo-text)\" }}>Arraste a imagem aqui</span>\n <span style={{ fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>ou clique para selecionar</span>\n {maxSize && <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Máx {formatBytes(maxSize)}</span>}\n </>\n )}\n </div>\n )}\n </DropZone>\n\n {isUploading && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n {renderProgress ? renderProgress(progress) : (\n <>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>\n <span>{state.status === \"completing\" ? \"Finalizando…\" : state.status === \"preparing\" ? \"Preparando…\" : `Parte ${(state as { part: number }).part} de ${(state as { totalParts: number }).totalParts}`}</span>\n <div style={{ display: \"flex\", gap: \"8px\", alignItems: \"center\" }}>\n <span>{progress}%</span>\n <button onClick={pause} style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Pausar</button>\n </div>\n </div>\n <ProgressBar progress={progress} />\n </>\n )}\n </div>\n )}\n\n {isPaused && (\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <button onClick={() => resume({ ...(bucket !== undefined && { bucket }), visibility, ...(image && { image }) })} style={{ flex: 1, padding: \"8px\", borderRadius: \"6px\", border: \"none\", backgroundColor: \"#10b981\", color: \"#fff\", fontSize: \"13px\", fontWeight: 600, cursor: \"pointer\" }}>\n Retomar upload\n </button>\n <button onClick={() => { abort(); setPreview(null); }} style={{ padding: \"8px 12px\", borderRadius: \"6px\", border: \"1px solid #e2e8f0\", background: \"#f8fafc\", fontSize: \"13px\", cursor: \"pointer\", color: \"var(--silo-text-muted)\" }}>\n Cancelar\n </button>\n </div>\n )}\n\n {state.status === \"done\" && !renderSuccess && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(34,197,94,0.08)\", border: \"1px solid rgba(34,197,94,0.2)\", fontSize: \"14px\" }}>\n <svg width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" style={{ color: \"#22c55e\", flexShrink: 0 }}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 500, color: \"var(--silo-text)\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>{state.result.key}</div>\n <div style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>{formatBytes(state.result.size)}</div>\n </div>\n <button onClick={() => { reset(); setPreview(null); }} style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--silo-text-muted)\", flexShrink: 0 }}>Enviar outro</button>\n </div>\n )}\n\n {state.status === \"error\" && !renderError && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(239,68,68,0.1)\", color: \"var(--silo-error, #ef4444)\", fontSize: \"14px\" }}>\n <span>{state.error.message}</span>\n <button onClick={() => { reset(); setPreview(null); }} style={{ marginLeft: \"auto\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\" }}>Tentar novamente</button>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, useCallback, type CSSProperties } from \"react\";\nimport { useMultipartUpload } from \"@geekapps/silo-nextjs\";\nimport type { VideoUploaderProps } from \"./types.js\";\nimport { DropZone } from \"./components/DropZone.js\";\nimport { ProgressBar } from \"./components/ProgressBar.js\";\nimport { formatBytes } from \"./utils/format.js\";\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\n\nexport function VideoUploader({\n bucket,\n expiresIn,\n visibility = \"private\",\n onUpload,\n onError,\n className = \"\",\n style,\n disabled = false,\n maxSize,\n accept = \"video/*\",\n showPreview = true,\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 t = resolveTheme(theme);\n const vars = themeToVars(t);\n\n const handleFiles = useCallback(async (files: File[]) => {\n const file = files[0];\n if (!file) return;\n if (showPreview) setPreview(URL.createObjectURL(file));\n try {\n const result = await upload(file, {\n ...(bucket !== undefined && { bucket }),\n visibility,\n ...(video && { video }),\n });\n if (result) onUpload?.(result);\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n }, [upload, bucket, visibility, video, onUpload, onError, showPreview]);\n\n const containerStyle: CSSProperties = {\n ...vars as CSSProperties,\n display: \"flex\", flexDirection: \"column\", gap: \"12px\",\n width: \"100%\", fontFamily: \"var(--silo-font)\", ...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;\n\n if (state.status === \"error\" && renderError) return <div style={containerStyle}>{renderError(state.error, reset)}</div>;\n if (state.status === \"done\" && renderSuccess) return <div style={containerStyle}>{renderSuccess(state.result)}</div>;\n\n return (\n <div className={`silo-video-uploader${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 ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"8px\" }}>\n <video src={preview} style={{ maxWidth: \"100%\", maxHeight: \"180px\", borderRadius: \"8px\" }} controls={false} muted playsInline />\n <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Clique ou arraste para substituir</span>\n </div>\n ) : (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"8px\" }}>\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" style={{ color: \"var(--silo-text-muted)\", opacity: 0.6 }}>\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 style={{ fontWeight: 600, color: \"var(--silo-text)\" }}>Arraste o vídeo aqui</span>\n <span style={{ fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>ou clique para selecionar</span>\n <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>\n MP4, MOV, MKV, WebM{maxSize ? ` · Máx ${formatBytes(maxSize)}` : \"\"}\n </span>\n </>\n )}\n </div>\n )}\n </DropZone>\n\n {isUploading && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n {renderProgress ? renderProgress(progress) : (\n <>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>\n <span>\n {state.status === \"completing\" ? \"Finalizando…\"\n : state.status === \"preparing\" ? \"Preparando…\"\n : `Parte ${(state as { part: number }).part} de ${(state as { totalParts: number }).totalParts}`}\n </span>\n <div style={{ display: \"flex\", gap: \"8px\", alignItems: \"center\" }}>\n <span>{progress}%</span>\n <button onClick={pause} style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Pausar</button>\n </div>\n </div>\n <ProgressBar progress={progress} />\n <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>O processamento inicia após o upload</span>\n </>\n )}\n </div>\n )}\n\n {isPaused && (\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <button onClick={() => resume({ ...(bucket !== undefined && { bucket }), visibility, ...(video && { video }) })} style={{ flex: 1, padding: \"8px\", borderRadius: \"6px\", border: \"none\", backgroundColor: \"#10b981\", color: \"#fff\", fontSize: \"13px\", fontWeight: 600, cursor: \"pointer\" }}>\n Retomar upload\n </button>\n <button onClick={() => { abort(); setPreview(null); }} style={{ padding: \"8px 12px\", borderRadius: \"6px\", border: \"1px solid #e2e8f0\", background: \"#f8fafc\", fontSize: \"13px\", cursor: \"pointer\", color: \"var(--silo-text-muted)\" }}>\n Cancelar\n </button>\n </div>\n )}\n\n {state.status === \"done\" && !renderSuccess && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(34,197,94,0.1)\", color: \"var(--silo-success, #22c55e)\", fontSize: \"14px\" }}>\n <svg width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n <span>Vídeo enviado — processando em segundo plano</span>\n <button onClick={() => { reset(); setPreview(null); }} style={{ marginLeft: \"auto\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Enviar outro</button>\n </div>\n )}\n\n {state.status === \"error\" && !renderError && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(239,68,68,0.1)\", color: \"var(--silo-error, #ef4444)\", fontSize: \"14px\" }}>\n <span>{state.error.message}</span>\n <button onClick={() => { reset(); setPreview(null); }} style={{ marginLeft: \"auto\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\" }}>Tentar novamente</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 { FileUploaderProps } from \"./types.js\";\nimport { DropZone } from \"./components/DropZone.js\";\nimport { ProgressBar } from \"./components/ProgressBar.js\";\nimport { formatBytes, getFileIcon } from \"./utils/format.js\";\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\n\nexport function FileUploader({\n bucket,\n visibility = \"private\",\n onUpload,\n onBatchUpload,\n onError,\n className = \"\",\n style,\n disabled = false,\n maxSize,\n accept,\n multiple = false,\n allowRename = false,\n image,\n video,\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 display: \"flex\", flexDirection: \"column\", gap: \"12px\",\n width: \"100%\", fontFamily: \"var(--silo-font)\", ...style,\n };\n\n const single = useMultipartUpload(bucket);\n const batch = useBatchUpload();\n\n // Staging state for rename\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) {\n next.set(index, name.trim());\n } else {\n next.delete(index);\n }\n return next;\n });\n }\n\n function clearStaging() {\n setStaged(null);\n setRenames(new Map());\n setEditingIndex(null);\n }\n\n const doUpload = useCallback(async (files: File[]) => {\n if (multiple && files.length > 1) {\n try {\n const opts = { ...(bucket !== undefined && { bucket }), visibility, ...(image && { image }), ...(video && { video }) };\n const results = await batch.upload(files, opts);\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 opts = { ...(bucket !== undefined && { bucket }), visibility, ...(image && { image }), ...(video && { video }) };\n const result = await single.upload(file, opts);\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, visibility, image, video, onUpload, onBatchUpload, onError]);\n\n const handleFiles = useCallback(async (files: File[]) => {\n if (allowRename) {\n setStaged(files);\n setRenames(new Map());\n } else {\n await doUpload(files);\n }\n }, [allowRename, doUpload]);\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 clearStaging();\n await doUpload(filesToUpload);\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 style={containerStyle}>{renderError(single.state.error, single.reset)}</div>;\n if (single.state.status === \"done\" && renderSuccess) return <div style={containerStyle}>{renderSuccess(single.state.result)}</div>;\n\n return (\n <div className={`silo-file-uploader${className ? ` ${className}` : \"\"}`} style={containerStyle}>\n\n {/* Drop zone — hidden during batch or staging */}\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 style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"8px\" }}>\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" style={{ color: \"var(--silo-text-muted)\", opacity: 0.6 }}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M9 13h6m-3-3v6m5 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\" />\n </svg>\n )}\n {children ?? (\n <>\n <span style={{ fontWeight: 600, color: \"var(--silo-text)\" }}>\n {multiple ? \"Arraste arquivos aqui\" : \"Arraste o arquivo aqui\"}\n </span>\n <span style={{ fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>ou clique para selecionar</span>\n {maxSize && <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Máx {formatBytes(maxSize)}</span>}\n </>\n )}\n </div>\n </DropZone>\n )}\n\n {/* Staging / rename list */}\n {staged && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n {staged.map((f, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\", padding: \"8px 10px\", backgroundColor: \"var(--silo-bg)\", borderRadius: \"8px\", border: \"1px solid var(--silo-border)\" }}>\n <span style={{ fontSize: \"16px\", 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: \"13px\", fontWeight: 500, border: \"1px solid var(--silo-border-active, #6366f1)\", borderRadius: \"5px\", padding: \"2px 6px\", outline: \"none\", background: \"var(--silo-bg)\", color: \"var(--silo-text)\", fontFamily: \"var(--silo-font)\" }}\n />\n ) : (\n <div\n onClick={() => setEditingIndex(i)}\n title=\"Clique para renomear\"\n style={{ fontSize: \"13px\", fontWeight: 500, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\", cursor: \"text\", color: \"var(--silo-text)\" }}\n >\n {effectiveName(i, staged)}\n {renames.has(i) && (\n <span style={{ marginLeft: 6, fontSize: 10, color: \"var(--silo-accent)\", fontWeight: 700 }}>renomeado</span>\n )}\n </div>\n )}\n <div style={{ fontSize: \"11px\", color: \"var(--silo-text-muted)\" }}>{formatBytes(f.size)}</div>\n </div>\n <button\n onClick={() => setEditingIndex(i)}\n title=\"Renomear\"\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"13px\", color: \"var(--silo-text-muted)\", padding: \"0 2px\", flexShrink: 0 }}\n >\n ✏️\n </button>\n <button\n onClick={() => {\n const next = staged.filter((_, j) => j !== i);\n if (next.length === 0) { clearStaging(); } else { setStaged(next); }\n }}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"16px\", color: \"var(--silo-text-muted)\", padding: \"0 4px\", lineHeight: 1, flexShrink: 0 }}\n >\n ×\n </button>\n </div>\n ))}\n\n <div style={{ display: \"flex\", gap: \"8px\", marginTop: \"4px\" }}>\n <button\n onClick={clearStaging}\n style={{ padding: \"8px 14px\", borderRadius: \"6px\", border: \"1px solid var(--silo-border)\", background: \"transparent\", color: \"var(--silo-text-muted)\", fontSize: \"13px\", fontWeight: 600, cursor: \"pointer\" }}\n >\n Cancelar\n </button>\n <button\n onClick={handleConfirmUpload}\n style={{ flex: 1, padding: \"8px\", borderRadius: \"6px\", border: \"none\", backgroundColor: \"var(--silo-accent)\", color: \"#fff\", fontSize: \"13px\", fontWeight: 600, 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 <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n {renderProgress ? renderProgress(singleProgress) : (\n <>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>\n <span>{single.state.status === \"completing\" ? \"Finalizando…\" : single.state.status === \"preparing\" ? \"Preparando…\" : `Parte ${(single.state as { part: number }).part} de ${(single.state as { totalParts: number }).totalParts}`}</span>\n <span>{singleProgress}%</span>\n </div>\n <ProgressBar progress={singleProgress} />\n </>\n )}\n </div>\n )}\n\n {/* Batch upload progress */}\n {isBatch && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}>\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={{ padding: \"10px 12px\", backgroundColor: \"var(--silo-bg)\", borderRadius: \"8px\", border: \"1px solid var(--silo-border)\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", marginBottom: isDone || isErr ? 0 : \"6px\" }}>\n <span style={{ fontSize: \"16px\" }}>{getFileIcon(f.file.type)}</span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: \"13px\", fontWeight: 500, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>{f.file.name}</div>\n <div style={{ fontSize: \"11px\", color: \"var(--silo-text-muted)\" }}>{formatBytes(f.file.size)}</div>\n </div>\n <span style={{ fontSize: \"11px\", fontWeight: 600, color: isDone ? \"#16a34a\" : isErr ? \"#ef4444\" : isPaused ? \"#f59e0b\" : \"var(--silo-accent)\", flexShrink: 0 }}>\n {isDone ? \"✓\" : isErr ? \"Erro\" : isPaused ? `Pausado ${p}%` : `${p}%`}\n </span>\n {!isDone && !isErr && f.fileId && (\n isPaused\n ? <button onClick={() => batch.resumeFile(f.fileId!)} style={{ fontSize: \"11px\", padding: \"2px 8px\", borderRadius: \"4px\", border: \"none\", backgroundColor: \"#10b981\", color: \"#fff\", cursor: \"pointer\" }}>Retomar</button>\n : st.status === \"uploading\" ? <button onClick={() => batch.pauseFile(f.fileId!)} style={{ fontSize: \"11px\", padding: \"2px 8px\", borderRadius: \"4px\", border: \"none\", backgroundColor: \"#f59e0b\", color: \"#fff\", cursor: \"pointer\" }}>Pausar</button> : null\n )}\n </div>\n {!isDone && !isErr && <ProgressBar progress={p} />}\n </div>\n );\n })}\n\n <div style={{ display: \"flex\", gap: \"8px\", marginTop: \"4px\" }}>\n {batch.state.status !== \"done\" && (\n <button\n onClick={isBatchUploading ? batch.pauseAll : batch.resumeAll}\n style={{ flex: 1, padding: \"8px\", borderRadius: \"6px\", border: \"none\", backgroundColor: isBatchUploading ? \"#f59e0b\" : \"#10b981\", color: \"#fff\", fontSize: \"13px\", fontWeight: 600, 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={{ padding: \"8px 14px\", borderRadius: \"6px\", border: \"none\", backgroundColor: batch.state.status === \"done\" ? \"var(--silo-accent)\" : \"rgba(239,68,68,0.1)\", color: batch.state.status === \"done\" ? \"#fff\" : \"#ef4444\", fontSize: \"13px\", fontWeight: 600, cursor: \"pointer\" }}\n >\n {batch.state.status === \"done\" ? \"Novo upload\" : \"Cancelar\"}\n </button>\n </div>\n </div>\n )}\n\n {/* Single done */}\n {single.state.status === \"done\" && !renderSuccess && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(34,197,94,0.08)\", border: \"1px solid rgba(34,197,94,0.2)\", fontSize: \"14px\" }}>\n <svg width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" style={{ color: \"#22c55e\", flexShrink: 0 }}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 500, color: \"var(--silo-text)\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>{single.state.result.key}</div>\n <div style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>{formatBytes(single.state.result.size)}</div>\n </div>\n <button onClick={single.reset} style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--silo-text-muted)\", flexShrink: 0 }}>Enviar outro</button>\n </div>\n )}\n\n {/* Single error */}\n {single.state.status === \"error\" && !renderError && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(239,68,68,0.1)\", color: \"var(--silo-error, #ef4444)\", fontSize: \"14px\" }}>\n <span>{single.state.error.message}</span>\n <button onClick={single.reset} style={{ marginLeft: \"auto\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\" }}>Tentar novamente</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 display: \"flex\", flexDirection: \"column\", gap: \"0\",\n width: \"100%\", fontFamily: \"var(--silo-font)\",\n border: \"1px solid var(--silo-border)\",\n borderRadius: \"var(--silo-radius)\",\n overflow: \"hidden\",\n backgroundColor: \"var(--silo-bg)\",\n ...style,\n };\n\n return (\n <div className={`silo-media-uploader${className ? ` ${className}` : \"\"}`} style={containerStyle}>\n {/* Tab bar */}\n <div style={{ display: \"flex\", borderBottom: \"1px solid var(--silo-border)\" }}>\n {tabs.map((tab) => (\n <button\n key={tab}\n onClick={() => setActiveTab(tab)}\n style={{\n flex: 1, padding: \"10px 8px\",\n background: \"none\", border: \"none\",\n borderBottom: `2px solid ${activeTab === tab ? \"var(--silo-accent)\" : \"transparent\"}`,\n cursor: \"pointer\", fontSize: \"13px\",\n fontWeight: activeTab === tab ? 600 : 400,\n color: activeTab === tab ? \"var(--silo-accent)\" : \"var(--silo-text-muted)\",\n transition: \"color 0.15s, border-color 0.15s\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\", gap: \"6px\",\n }}\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 style={{ padding: \"16px\" }}>\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","useMultipartUpload","Fragment","DEFAULT_VIDEO_OPTS"],"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 fontFamily: \"var(--silo-font)\",\n border: `2px dashed ${dragging ? \"var(--silo-border-active)\" : \"var(--silo-border)\"}`,\n borderRadius: \"var(--silo-radius)\",\n backgroundColor: dragging ? \"var(--silo-bg-hover)\" : \"var(--silo-bg)\",\n color: \"var(--silo-text)\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n transition: \"border-color 0.15s, background-color 0.15s\",\n opacity: disabled ? 0.5 : 1,\n ...style,\n };\n\n return (\n <div\n className={`silo-dropzone${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 style={{ display: \"none\" }}\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={`silo-progress-track${className ? ` ${className}` : \"\"}`}\n style={{\n height: \"6px\",\n borderRadius: \"3px\",\n backgroundColor: \"rgba(99,102,241,0.15)\",\n overflow: \"hidden\",\n ...style,\n }}\n role=\"progressbar\"\n aria-valuenow={progress}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className=\"silo-progress-fill\"\n style={{\n height: \"100%\",\n width: `${progress}%`,\n backgroundColor: \"var(--silo-accent, #6366f1)\",\n borderRadius: \"3px\",\n transition: \"width 0.2s ease\",\n }}\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 style={{ display: \"flex\", flexDirection: \"column\", gap: 10, ...style }}>\n {/* Format */}\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, color: \"var(--silo-text-muted, #64748b)\", letterSpacing: \"0.05em\", textTransform: \"uppercase\", marginBottom: 6 }}>\n Formato de saída\n </div>\n <div style={{ display: \"flex\", gap: 6, flexWrap: \"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={{\n padding: \"4px 12px\",\n borderRadius: 6,\n border: `1px solid ${fmt === f.value ? \"var(--silo-accent, #6366f1)\" : \"var(--silo-border, #e2e8f0)\"}`,\n background: fmt === f.value ? \"var(--silo-accent, #6366f1)\" : \"transparent\",\n color: fmt === f.value ? \"#fff\" : \"var(--silo-text, #0f172a)\",\n fontSize: 12,\n fontWeight: 600,\n cursor: \"pointer\",\n }}\n >\n {f.label}\n </button>\n ))}\n </div>\n </div>\n\n {/* Optimize toggle */}\n <label style={{ display: \"flex\", alignItems: \"center\", gap: 8, cursor: \"pointer\", userSelect: \"none\" }}>\n <span\n onClick={() => onChange({ ...value, optimize: !optimize })}\n style={{\n width: 36,\n height: 20,\n borderRadius: 10,\n background: optimize ? \"var(--silo-accent, #6366f1)\" : \"var(--silo-border, #e2e8f0)\",\n position: \"relative\",\n flexShrink: 0,\n transition: \"background 0.15s\",\n cursor: \"pointer\",\n }}\n >\n <span style={{\n position: \"absolute\",\n top: 2,\n left: optimize ? 18 : 2,\n width: 16,\n height: 16,\n borderRadius: \"50%\",\n background: \"#fff\",\n transition: \"left 0.15s\",\n boxShadow: \"0 1px 3px rgba(0,0,0,0.2)\",\n }} />\n </span>\n <span style={{ fontSize: 12, color: \"var(--silo-text, #0f172a)\", fontWeight: 500 }}>\n Otimizar tamanho\n </span>\n <span style={{ fontSize: 11, color: \"var(--silo-text-muted, #94a3b8)\" }}>\n {optimize ? \"Qualidade 85 — menor tamanho\" : \"Qualidade máxima\"}\n </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\nexport function ImageUploader({\n bucket,\n expiresIn,\n visibility = \"private\",\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, {\n ...(bucket !== undefined && { bucket }),\n visibility,\n image: opts,\n });\n if (result) onUpload?.(result);\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n }, [upload, bucket, visibility, onUpload, onError, showPreview]);\n\n const handleFiles = useCallback(async (files: File[]) => {\n const file = files[0];\n if (!file) return;\n if (showImageOptions) {\n // Stage file so user can configure options before uploading\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 display: \"flex\", flexDirection: \"column\", gap: \"12px\",\n width: \"100%\", fontFamily: \"var(--silo-font)\", ...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;\n\n if (state.status === \"error\" && renderError) return <div style={containerStyle}>{renderError(state.error, reset)}</div>;\n if (state.status === \"done\" && renderSuccess) return <div style={containerStyle}>{renderSuccess(state.result)}</div>;\n\n return (\n <div className={`silo-image-uploader${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 ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"8px\" }}>\n <img src={preview} alt=\"Preview\" style={{ maxWidth: \"100%\", maxHeight: \"200px\", borderRadius: \"8px\", objectFit: \"contain\" }} />\n <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Clique ou arraste para substituir</span>\n </div>\n ) : (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"8px\" }}>\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" style={{ color: \"var(--silo-text-muted)\", opacity: 0.6 }}>\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 style={{ fontWeight: 600, color: \"var(--silo-text)\" }}>Arraste a imagem aqui</span>\n <span style={{ fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>ou clique para selecionar</span>\n {maxSize && <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Máx {formatBytes(maxSize)}</span>}\n </>\n )}\n </div>\n )}\n </DropZone>\n\n {/* Staging: options + confirm when showImageOptions is active */}\n {showImageOptions && stagedFile && !isUploading && state.status !== \"done\" && (\n <>\n <ImageOptions\n value={imageOpts}\n onChange={setImageOpts}\n style={{ padding: \"12px 14px\", borderRadius: 8, border: \"1px solid var(--silo-border, #e2e8f0)\", background: \"var(--silo-bg-hover, #f8fafc)\" }}\n />\n <div style={{ display: \"flex\", gap: 8 }}>\n <button\n onClick={() => { setStagedFile(null); setPreview(null); }}\n style={{ padding: \"8px 14px\", borderRadius: 6, border: \"1px solid var(--silo-border, #e2e8f0)\", background: \"transparent\", color: \"var(--silo-text-muted, #94a3b8)\", fontSize: 13, fontWeight: 600, cursor: \"pointer\" }}\n >\n Cancelar\n </button>\n <button\n onClick={() => { const f = stagedFile; setStagedFile(null); void doUpload(f, imageOpts); }}\n style={{ flex: 1, padding: \"8px\", borderRadius: 6, border: \"none\", background: \"var(--silo-accent, #6366f1)\", color: \"#fff\", fontSize: 13, fontWeight: 600, cursor: \"pointer\" }}\n >\n Enviar imagem\n </button>\n </div>\n </>\n )}\n\n {isUploading && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n {renderProgress ? renderProgress(progress) : (\n <>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>\n <span>{state.status === \"completing\" ? \"Finalizando…\" : state.status === \"preparing\" ? \"Preparando…\" : `Parte ${(state as { part: number }).part} de ${(state as { totalParts: number }).totalParts}`}</span>\n <div style={{ display: \"flex\", gap: \"8px\", alignItems: \"center\" }}>\n <span>{progress}%</span>\n <button onClick={pause} style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Pausar</button>\n </div>\n </div>\n <ProgressBar progress={progress} />\n </>\n )}\n </div>\n )}\n\n {isPaused && (\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <button onClick={() => resume({ ...(bucket !== undefined && { bucket }), visibility, ...(image && { image }) })} style={{ flex: 1, padding: \"8px\", borderRadius: \"6px\", border: \"none\", backgroundColor: \"#10b981\", color: \"#fff\", fontSize: \"13px\", fontWeight: 600, cursor: \"pointer\" }}>\n Retomar upload\n </button>\n <button onClick={() => { abort(); setPreview(null); }} style={{ padding: \"8px 12px\", borderRadius: \"6px\", border: \"1px solid #e2e8f0\", background: \"#f8fafc\", fontSize: \"13px\", cursor: \"pointer\", color: \"var(--silo-text-muted)\" }}>\n Cancelar\n </button>\n </div>\n )}\n\n {state.status === \"done\" && !renderSuccess && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(34,197,94,0.08)\", border: \"1px solid rgba(34,197,94,0.2)\", fontSize: \"14px\" }}>\n <svg width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" style={{ color: \"#22c55e\", flexShrink: 0 }}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 500, color: \"var(--silo-text)\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>{state.result.key}</div>\n <div style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>{formatBytes(state.result.size)}</div>\n </div>\n <button onClick={() => { reset(); setPreview(null); }} style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--silo-text-muted)\", flexShrink: 0 }}>Enviar outro</button>\n </div>\n )}\n\n {state.status === \"error\" && !renderError && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(239,68,68,0.1)\", color: \"var(--silo-error, #ef4444)\", fontSize: \"14px\" }}>\n <span>{state.error.message}</span>\n <button onClick={() => { reset(); setPreview(null); }} style={{ marginLeft: \"auto\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\" }}>Tentar novamente</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\", hint: \"Compatibilidade máxima\" },\n { value: \"h265\", label: \"H.265\", hint: \"Melhor compressão\" },\n { value: \"av1\", label: \"AV1\", hint: \"Futuro — menor tamanho\" },\n { value: \"vp9\", label: \"VP9\", hint: \"Open source\" },\n];\n\nconst RESOLUTIONS = [\"360\", \"480\", \"720\", \"1080\", \"1440\", \"2160\"] as const;\nconst RESOLUTION_LABELS: Record<string, string> = {\n \"360\": \"360p\", \"480\": \"480p\", \"720\": \"720p\",\n \"1080\": \"1080p\", \"1440\": \"1440p\", \"2160\": \"4K\",\n};\n\ninterface VideoOptionsProps {\n value: VideoUploadOptions;\n onChange: (opts: VideoUploadOptions) => void;\n style?: CSSProperties;\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) {\n onChange({ ...value, transcoding: [r] });\n return;\n }\n const next = selectedRes.includes(r)\n ? selectedRes.filter((x) => x !== r)\n : [...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 const btn = (active: boolean): CSSProperties => ({\n padding: \"4px 10px\",\n borderRadius: 6,\n border: `1px solid ${active ? \"var(--silo-accent, #6366f1)\" : \"var(--silo-border, #e2e8f0)\"}`,\n background: active ? \"var(--silo-accent, #6366f1)\" : \"transparent\",\n color: active ? \"#fff\" : \"var(--silo-text, #0f172a)\",\n fontSize: 12,\n fontWeight: 600,\n cursor: \"pointer\",\n });\n\n const toggle = (on: boolean): CSSProperties => ({\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 6,\n cursor: \"pointer\",\n userSelect: \"none\",\n fontSize: 12,\n color: \"var(--silo-text, #0f172a)\",\n fontWeight: 500,\n });\n\n function Toggle({ checked, onToggle, label }: { checked: boolean; onToggle: () => void; label: string }) {\n return (\n <label style={toggle(checked)} onClick={onToggle}>\n <span style={{\n width: 32, height: 18, borderRadius: 9, flexShrink: 0,\n background: checked ? \"var(--silo-accent, #6366f1)\" : \"var(--silo-border, #e2e8f0)\",\n position: \"relative\", transition: \"background 0.15s\", cursor: \"pointer\",\n }}>\n <span style={{\n position: \"absolute\", top: 2, left: checked ? 16 : 2,\n width: 14, height: 14, borderRadius: \"50%\", background: \"#fff\",\n transition: \"left 0.15s\", boxShadow: \"0 1px 3px rgba(0,0,0,0.2)\",\n }} />\n </span>\n {label}\n </label>\n );\n }\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 12, ...style }}>\n\n {/* Codec */}\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, color: \"var(--silo-text-muted, #64748b)\", letterSpacing: \"0.05em\", textTransform: \"uppercase\", marginBottom: 6 }}>Codec</div>\n <div style={{ display: \"flex\", gap: 6, flexWrap: \"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={btn(codec === c.value)}\n >\n {c.label}\n </button>\n ))}\n </div>\n </div>\n\n {/* Resolutions */}\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, color: \"var(--silo-text-muted, #64748b)\", letterSpacing: \"0.05em\", textTransform: \"uppercase\", marginBottom: 6 }}>\n Resoluções\n </div>\n <div style={{ display: \"flex\", gap: 6, flexWrap: \"wrap\" }}>\n <button type=\"button\" onClick={() => onChange({ ...value, transcoding: \"auto\" })} style={btn(isAuto)}>\n Auto\n </button>\n {RESOLUTIONS.map((r) => (\n <button key={r} type=\"button\"\n onClick={() => toggleRes(r as \"360\" | \"480\" | \"720\" | \"1080\" | \"1440\" | \"2160\")}\n style={btn(!isAuto && selectedRes.includes(r))}\n >\n {RESOLUTION_LABELS[r]}\n </button>\n ))}\n </div>\n </div>\n\n {/* Features */}\n <div>\n <div style={{ fontSize: 11, fontWeight: 700, color: \"var(--silo-text-muted, #64748b)\", letterSpacing: \"0.05em\", textTransform: \"uppercase\", marginBottom: 8 }}>Recursos</div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\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,\n storyboard: false,\n autoCaptions: false,\n separateAudio: false,\n codec: \"h264\",\n transcoding: \"auto\",\n};\n\nexport function VideoUploader({\n bucket,\n expiresIn,\n visibility = \"private\",\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>(video ?? DEFAULT_VIDEO_OPTS);\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, {\n ...(bucket !== undefined && { bucket }),\n visibility,\n video: opts,\n });\n if (result) onUpload?.(result);\n } catch (err) {\n onError?.(err instanceof Error ? err : new Error(String(err)));\n }\n }, [upload, bucket, visibility, onUpload, onError, showPreview]);\n\n const handleFiles = useCallback(async (files: File[]) => {\n const file = files[0];\n if (!file) return;\n if (showVideoOptions) {\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 display: \"flex\", flexDirection: \"column\", gap: \"12px\",\n width: \"100%\", fontFamily: \"var(--silo-font)\", ...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;\n\n if (state.status === \"error\" && renderError) return <div style={containerStyle}>{renderError(state.error, reset)}</div>;\n if (state.status === \"done\" && renderSuccess) return <div style={containerStyle}>{renderSuccess(state.result)}</div>;\n\n return (\n <div className={`silo-video-uploader${className ? ` ${className}` : \"\"}`} style={containerStyle}>\n\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 ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"8px\" }}>\n <video src={preview} style={{ maxWidth: \"100%\", maxHeight: \"180px\", borderRadius: \"8px\" }} controls={false} muted playsInline />\n <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Clique ou arraste para substituir</span>\n </div>\n ) : (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"8px\" }}>\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" style={{ color: \"var(--silo-text-muted)\", opacity: 0.6 }}>\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 style={{ fontWeight: 600, color: \"var(--silo-text)\" }}>Arraste o vídeo aqui</span>\n <span style={{ fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>ou clique para selecionar</span>\n <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>\n MP4, MOV, MKV, WebM{maxSize ? ` · Máx ${formatBytes(maxSize)}` : \"\"}\n </span>\n </>\n )}\n </div>\n )}\n </DropZone>\n\n {/* Staging: options + confirm when showVideoOptions is active */}\n {showVideoOptions && stagedFile && !isUploading && state.status !== \"done\" && (\n <>\n <VideoOptions\n value={videoOpts}\n onChange={setVideoOpts}\n style={{ padding: \"12px 14px\", borderRadius: 8, border: \"1px solid var(--silo-border, #e2e8f0)\", background: \"var(--silo-bg-hover, #f8fafc)\" }}\n />\n <div style={{ display: \"flex\", gap: 8 }}>\n <button\n onClick={() => { setStagedFile(null); setPreview(null); }}\n style={{ padding: \"8px 14px\", borderRadius: 6, border: \"1px solid var(--silo-border, #e2e8f0)\", background: \"transparent\", color: \"var(--silo-text-muted, #94a3b8)\", fontSize: 13, fontWeight: 600, cursor: \"pointer\" }}\n >\n Cancelar\n </button>\n <button\n onClick={() => { const f = stagedFile; setStagedFile(null); void doUpload(f, videoOpts); }}\n style={{ flex: 1, padding: \"8px\", borderRadius: 6, border: \"none\", background: \"var(--silo-accent, #6366f1)\", color: \"#fff\", fontSize: 13, fontWeight: 600, cursor: \"pointer\" }}\n >\n Enviar vídeo\n </button>\n </div>\n </>\n )}\n\n {isUploading && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n {renderProgress ? renderProgress(progress) : (\n <>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>\n <span>\n {state.status === \"completing\" ? \"Finalizando…\"\n : state.status === \"preparing\" ? \"Preparando…\"\n : `Parte ${(state as { part: number }).part} de ${(state as { totalParts: number }).totalParts}`}\n </span>\n <div style={{ display: \"flex\", gap: \"8px\", alignItems: \"center\" }}>\n <span>{progress}%</span>\n <button onClick={pause} style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Pausar</button>\n </div>\n </div>\n <ProgressBar progress={progress} />\n <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>O processamento inicia após o upload</span>\n </>\n )}\n </div>\n )}\n\n {isPaused && (\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <button\n onClick={() => resume({ ...(bucket !== undefined && { bucket }), visibility, video: showVideoOptions ? videoOpts : (video ?? videoOpts) })}\n style={{ flex: 1, padding: \"8px\", borderRadius: \"6px\", border: \"none\", backgroundColor: \"#10b981\", color: \"#fff\", fontSize: \"13px\", fontWeight: 600, cursor: \"pointer\" }}\n >\n Retomar upload\n </button>\n <button onClick={() => { abort(); setPreview(null); }} style={{ padding: \"8px 12px\", borderRadius: \"6px\", border: \"1px solid #e2e8f0\", background: \"#f8fafc\", fontSize: \"13px\", cursor: \"pointer\", color: \"var(--silo-text-muted)\" }}>\n Cancelar\n </button>\n </div>\n )}\n\n {state.status === \"done\" && !renderSuccess && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(34,197,94,0.1)\", color: \"var(--silo-success, #22c55e)\", fontSize: \"14px\" }}>\n <svg width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n <span>Vídeo enviado — processando em segundo plano</span>\n <button onClick={() => { reset(); setPreview(null); }} style={{ marginLeft: \"auto\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Enviar outro</button>\n </div>\n )}\n\n {state.status === \"error\" && !renderError && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(239,68,68,0.1)\", color: \"var(--silo-error, #ef4444)\", fontSize: \"14px\" }}>\n <span>{state.error.message}</span>\n <button onClick={() => { reset(); setPreview(null); }} style={{ marginLeft: \"auto\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\" }}>Tentar novamente</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\nexport function FileUploader({\n bucket,\n visibility = \"private\",\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 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 display: \"flex\", flexDirection: \"column\", gap: \"12px\",\n width: \"100%\", fontFamily: \"var(--silo-font)\", ...style,\n };\n\n const single = useMultipartUpload(bucket);\n const batch = useBatchUpload();\n\n const [imageOpts, setImageOpts] = useState<ImageUploadOptions>(image ?? { format: \"webp\", optimize: true });\n const [videoOpts, setVideoOpts] = useState<VideoUploadOptions>(video ?? DEFAULT_VIDEO_OPTS);\n\n // Staging state for rename\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) {\n next.set(index, name.trim());\n } else {\n next.delete(index);\n }\n return next;\n });\n }\n\n function clearStaging() {\n setStaged(null);\n setRenames(new Map());\n setEditingIndex(null);\n }\n\n const doUpload = useCallback(async (files: File[]) => {\n const effectiveImage = showImageOptions ? imageOpts : (image ?? imageOpts);\n const effectiveVideo = showVideoOptions ? videoOpts : (video ?? videoOpts);\n if (multiple && files.length > 1) {\n try {\n const opts = { ...(bucket !== undefined && { bucket }), visibility, image: effectiveImage, video: effectiveVideo };\n const results = await batch.upload(files, opts);\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 opts = { ...(bucket !== undefined && { bucket }), visibility, image: effectiveImage, video: effectiveVideo };\n const result = await single.upload(file, opts);\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, visibility, image, video, 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 setStaged(files);\n setRenames(new Map());\n } else {\n await doUpload(files);\n }\n }, [allowRename, doUpload]);\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 clearStaging();\n await doUpload(filesToUpload);\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 style={containerStyle}>{renderError(single.state.error, single.reset)}</div>;\n if (single.state.status === \"done\" && renderSuccess) return <div style={containerStyle}>{renderSuccess(single.state.result)}</div>;\n\n return (\n <div className={`silo-file-uploader${className ? ` ${className}` : \"\"}`} style={containerStyle}>\n\n {/* Drop zone — hidden during batch or staging */}\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 style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"8px\" }}>\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" style={{ color: \"var(--silo-text-muted)\", opacity: 0.6 }}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M9 13h6m-3-3v6m5 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\" />\n </svg>\n )}\n {children ?? (\n <>\n <span style={{ fontWeight: 600, color: \"var(--silo-text)\" }}>\n {multiple ? \"Arraste arquivos aqui\" : \"Arraste o arquivo aqui\"}\n </span>\n <span style={{ fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>ou clique para selecionar</span>\n {maxSize && <span style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>Máx {formatBytes(maxSize)}</span>}\n </>\n )}\n </div>\n </DropZone>\n )}\n\n {/* Staging / rename list */}\n {staged && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n {staged.map((f, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\", padding: \"8px 10px\", backgroundColor: \"var(--silo-bg)\", borderRadius: \"8px\", border: \"1px solid var(--silo-border)\" }}>\n <span style={{ fontSize: \"16px\", 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: \"13px\", fontWeight: 500, border: \"1px solid var(--silo-border-active, #6366f1)\", borderRadius: \"5px\", padding: \"2px 6px\", outline: \"none\", background: \"var(--silo-bg)\", color: \"var(--silo-text)\", fontFamily: \"var(--silo-font)\" }}\n />\n ) : (\n <div\n onClick={() => setEditingIndex(i)}\n title=\"Clique para renomear\"\n style={{ fontSize: \"13px\", fontWeight: 500, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\", cursor: \"text\", color: \"var(--silo-text)\" }}\n >\n {effectiveName(i, staged)}\n {renames.has(i) && (\n <span style={{ marginLeft: 6, fontSize: 10, color: \"var(--silo-accent)\", fontWeight: 700 }}>renomeado</span>\n )}\n </div>\n )}\n <div style={{ fontSize: \"11px\", color: \"var(--silo-text-muted)\" }}>{formatBytes(f.size)}</div>\n </div>\n <button\n onClick={() => setEditingIndex(i)}\n title=\"Renomear\"\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"13px\", color: \"var(--silo-text-muted)\", padding: \"0 2px\", flexShrink: 0 }}\n >\n ✏️\n </button>\n <button\n onClick={() => {\n const next = staged.filter((_, j) => j !== i);\n if (next.length === 0) { clearStaging(); } else { setStaged(next); }\n }}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"16px\", color: \"var(--silo-text-muted)\", 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 <ImageOptions\n value={imageOpts}\n onChange={setImageOpts}\n style={{ padding: \"12px 14px\", borderRadius: 8, border: \"1px solid var(--silo-border)\", background: \"var(--silo-bg-hover, #f8fafc)\", marginTop: 4 }}\n />\n )}\n\n {showVideoOptions && staged.some((f) => f.type.startsWith(\"video/\")) && (\n <VideoOptions\n value={videoOpts}\n onChange={setVideoOpts}\n style={{ padding: \"12px 14px\", borderRadius: 8, border: \"1px solid var(--silo-border)\", background: \"var(--silo-bg-hover, #f8fafc)\", marginTop: 4 }}\n />\n )}\n\n <div style={{ display: \"flex\", gap: \"8px\", marginTop: \"4px\" }}>\n <button\n onClick={clearStaging}\n style={{ padding: \"8px 14px\", borderRadius: \"6px\", border: \"1px solid var(--silo-border)\", background: \"transparent\", color: \"var(--silo-text-muted)\", fontSize: \"13px\", fontWeight: 600, cursor: \"pointer\" }}\n >\n Cancelar\n </button>\n <button\n onClick={handleConfirmUpload}\n style={{ flex: 1, padding: \"8px\", borderRadius: \"6px\", border: \"none\", backgroundColor: \"var(--silo-accent)\", color: \"#fff\", fontSize: \"13px\", fontWeight: 600, 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 <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n {renderProgress ? renderProgress(singleProgress) : (\n <>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", fontSize: \"13px\", color: \"var(--silo-text-muted)\" }}>\n <span>{single.state.status === \"completing\" ? \"Finalizando…\" : single.state.status === \"preparing\" ? \"Preparando…\" : `Parte ${(single.state as { part: number }).part} de ${(single.state as { totalParts: number }).totalParts}`}</span>\n <span>{singleProgress}%</span>\n </div>\n <ProgressBar progress={singleProgress} />\n </>\n )}\n </div>\n )}\n\n {/* Batch upload progress */}\n {isBatch && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}>\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={{ padding: \"10px 12px\", backgroundColor: \"var(--silo-bg)\", borderRadius: \"8px\", border: \"1px solid var(--silo-border)\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", marginBottom: isDone || isErr ? 0 : \"6px\" }}>\n <span style={{ fontSize: \"16px\" }}>{getFileIcon(f.file.type)}</span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: \"13px\", fontWeight: 500, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>{f.file.name}</div>\n <div style={{ fontSize: \"11px\", color: \"var(--silo-text-muted)\" }}>{formatBytes(f.file.size)}</div>\n </div>\n <span style={{ fontSize: \"11px\", fontWeight: 600, color: isDone ? \"#16a34a\" : isErr ? \"#ef4444\" : isPaused ? \"#f59e0b\" : \"var(--silo-accent)\", flexShrink: 0 }}>\n {isDone ? \"✓\" : isErr ? \"Erro\" : isPaused ? `Pausado ${p}%` : `${p}%`}\n </span>\n {!isDone && !isErr && f.fileId && (\n isPaused\n ? <button onClick={() => batch.resumeFile(f.fileId!)} style={{ fontSize: \"11px\", padding: \"2px 8px\", borderRadius: \"4px\", border: \"none\", backgroundColor: \"#10b981\", color: \"#fff\", cursor: \"pointer\" }}>Retomar</button>\n : st.status === \"uploading\" ? <button onClick={() => batch.pauseFile(f.fileId!)} style={{ fontSize: \"11px\", padding: \"2px 8px\", borderRadius: \"4px\", border: \"none\", backgroundColor: \"#f59e0b\", color: \"#fff\", cursor: \"pointer\" }}>Pausar</button> : null\n )}\n </div>\n {!isDone && !isErr && <ProgressBar progress={p} />}\n </div>\n );\n })}\n\n <div style={{ display: \"flex\", gap: \"8px\", marginTop: \"4px\" }}>\n {batch.state.status !== \"done\" && (\n <button\n onClick={isBatchUploading ? batch.pauseAll : batch.resumeAll}\n style={{ flex: 1, padding: \"8px\", borderRadius: \"6px\", border: \"none\", backgroundColor: isBatchUploading ? \"#f59e0b\" : \"#10b981\", color: \"#fff\", fontSize: \"13px\", fontWeight: 600, 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={{ padding: \"8px 14px\", borderRadius: \"6px\", border: \"none\", backgroundColor: batch.state.status === \"done\" ? \"var(--silo-accent)\" : \"rgba(239,68,68,0.1)\", color: batch.state.status === \"done\" ? \"#fff\" : \"#ef4444\", fontSize: \"13px\", fontWeight: 600, cursor: \"pointer\" }}\n >\n {batch.state.status === \"done\" ? \"Novo upload\" : \"Cancelar\"}\n </button>\n </div>\n </div>\n )}\n\n {/* Single done */}\n {single.state.status === \"done\" && !renderSuccess && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(34,197,94,0.08)\", border: \"1px solid rgba(34,197,94,0.2)\", fontSize: \"14px\" }}>\n <svg width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" style={{ color: \"#22c55e\", flexShrink: 0 }}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 500, color: \"var(--silo-text)\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>{single.state.result.key}</div>\n <div style={{ fontSize: \"12px\", color: \"var(--silo-text-muted)\" }}>{formatBytes(single.state.result.size)}</div>\n </div>\n <button onClick={single.reset} style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--silo-text-muted)\", flexShrink: 0 }}>Enviar outro</button>\n </div>\n )}\n\n {/* Single error */}\n {single.state.status === \"error\" && !renderError && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", padding: \"10px 14px\", borderRadius: \"8px\", backgroundColor: \"rgba(239,68,68,0.1)\", color: \"var(--silo-error, #ef4444)\", fontSize: \"14px\" }}>\n <span>{single.state.error.message}</span>\n <button onClick={single.reset} style={{ marginLeft: \"auto\", background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\" }}>Tentar novamente</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 display: \"flex\", flexDirection: \"column\", gap: \"0\",\n width: \"100%\", fontFamily: \"var(--silo-font)\",\n border: \"1px solid var(--silo-border)\",\n borderRadius: \"var(--silo-radius)\",\n overflow: \"hidden\",\n backgroundColor: \"var(--silo-bg)\",\n ...style,\n };\n\n return (\n <div className={`silo-media-uploader${className ? ` ${className}` : \"\"}`} style={containerStyle}>\n {/* Tab bar */}\n <div style={{ display: \"flex\", borderBottom: \"1px solid var(--silo-border)\" }}>\n {tabs.map((tab) => (\n <button\n key={tab}\n onClick={() => setActiveTab(tab)}\n style={{\n flex: 1, padding: \"10px 8px\",\n background: \"none\", border: \"none\",\n borderBottom: `2px solid ${activeTab === tab ? \"var(--silo-accent)\" : \"transparent\"}`,\n cursor: \"pointer\", fontSize: \"13px\",\n fontWeight: activeTab === tab ? 600 : 400,\n color: activeTab === tab ? \"var(--silo-accent)\" : \"var(--silo-text-muted)\",\n transition: \"color 0.15s, border-color 0.15s\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\", gap: \"6px\",\n }}\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 style={{ padding: \"16px\" }}>\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"]}
@@ -2,6 +2,6 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { VideoUploaderProps } from './types.js';
3
3
  import '@geekapps/silo-nextjs';
4
4
 
5
- declare function VideoUploader({ bucket, expiresIn, visibility, onUpload, onError, className, style, disabled, maxSize, accept, showPreview, video, theme, renderIcon, renderProgress, renderSuccess, renderError, children, }: VideoUploaderProps): react_jsx_runtime.JSX.Element;
5
+ declare function VideoUploader({ bucket, expiresIn, visibility, onUpload, onError, className, style, disabled, maxSize, accept, showPreview, showVideoOptions, video, theme, renderIcon, renderProgress, renderSuccess, renderError, children, }: VideoUploaderProps): react_jsx_runtime.JSX.Element;
6
6
 
7
7
  export { VideoUploader };