@geekapps/silo-elements-nextjs 0.2.35 → 0.2.37

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/VideoOptions.tsx","../src/utils/format.ts","../src/VideoUploader.tsx"],"names":["jsx","jsxs","useState","useCallback"],"mappings":"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","file":"VideoUploader.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 { 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\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","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\";\r\n\r\nimport { useState, useCallback, type CSSProperties } from \"react\";\r\nimport { useMultipartUpload } from \"@geekapps/silo-nextjs\";\r\nimport type { VideoUploadOptions } from \"@geekapps/silo-nextjs\";\r\nimport type { VideoUploaderProps } from \"./types.js\";\r\nimport { DropZone } from \"./components/DropZone.js\";\r\nimport { ProgressBar } from \"./components/ProgressBar.js\";\r\nimport { VideoOptions } from \"./components/VideoOptions.js\";\r\nimport { formatBytes } from \"./utils/format.js\";\r\nimport { resolveTheme, themeToVars } from \"./utils/theme.js\";\r\n\r\nconst DEFAULT_VIDEO_OPTS: VideoUploadOptions = {\r\n thumbnails: true, storyboard: false, autoCaptions: false,\r\n separateAudio: false, codec: \"h264\", transcoding: \"auto\",\r\n};\r\n\r\nfunction createInitialVideoOpts(video?: VideoUploadOptions): VideoUploadOptions {\r\n return video ?? DEFAULT_VIDEO_OPTS;\r\n}\r\n\r\nfunction uploadLabel(status: string, progress: number): string {\r\n if (status === \"preparing\") return \"Preparando…\";\r\n if (status === \"completing\") return \"Concluindo envio…\";\r\n if (progress < 20) return \"Iniciando envio…\";\r\n if (progress < 50) return \"Enviando vídeo…\";\r\n if (progress < 80) return \"Ainda enviando…\";\r\n if (progress < 97) return \"Quase terminando…\";\r\n return \"Finalizando…\";\r\n}\r\n\r\nexport function VideoUploader({\r\n bucket,\r\n expiresIn,\r\n onUpload,\r\n onError,\r\n className = \"\",\r\n style,\r\n disabled = false,\r\n maxSize,\r\n accept = \"video/*\",\r\n showPreview = true,\r\n showVideoOptions = false,\r\n video,\r\n theme,\r\n renderIcon,\r\n renderProgress,\r\n renderSuccess,\r\n renderError,\r\n children,\r\n}: VideoUploaderProps) {\r\n const { state, upload, pause, resume, abort, reset } = useMultipartUpload(bucket);\r\n const [preview, setPreview] = useState<string | null>(null);\r\n const [videoOpts, setVideoOpts] = useState<VideoUploadOptions>(() => createInitialVideoOpts(video));\r\n const [stagedFile, setStagedFile] = useState<File | null>(null);\r\n const t = resolveTheme(theme);\r\n const vars = themeToVars(t);\r\n\r\n const doUpload = useCallback(async (file: File, opts: VideoUploadOptions) => {\r\n if (showPreview) setPreview(URL.createObjectURL(file));\r\n try {\r\n const result = await upload(file, { ...(bucket !== undefined && { bucket }), video: opts });\r\n if (result) onUpload?.(result);\r\n } catch (err) {\r\n onError?.(err instanceof Error ? err : new Error(String(err)));\r\n }\r\n }, [upload, bucket, onUpload, onError, showPreview]);\r\n\r\n const handleFiles = useCallback(async (files: File[]) => {\r\n const file = files[0];\r\n if (!file) return;\r\n if (showVideoOptions) {\r\n setVideoOpts(createInitialVideoOpts(video));\r\n setStagedFile(file);\r\n if (showPreview) setPreview(URL.createObjectURL(file));\r\n } else {\r\n await doUpload(file, video ?? videoOpts);\r\n }\r\n }, [showVideoOptions, video, videoOpts, doUpload, showPreview]);\r\n\r\n const containerStyle: CSSProperties = {\r\n ...vars as CSSProperties,\r\n display: \"flex\", flexDirection: \"column\", gap: \"12px\",\r\n width: \"100%\", fontFamily: \"var(--silo-font)\", ...style,\r\n };\r\n\r\n const isUploading = state.status === \"uploading\" || state.status === \"preparing\" || state.status === \"completing\";\r\n const progress = state.status === \"uploading\" ? state.progress : state.status === \"completing\" ? 99 : 0;\r\n const isPaused = state.status === \"idle\" && preview !== null && !stagedFile;\r\n\r\n if (state.status === \"error\" && renderError) return <div style={containerStyle}>{renderError(state.error, reset)}</div>;\r\n if (state.status === \"done\" && renderSuccess) return <div style={containerStyle}>{renderSuccess(state.result)}</div>;\r\n\r\n return (\r\n <div className={`silo-video-uploader${className ? ` ${className}` : \"\"}`} style={containerStyle}>\r\n <DropZone\r\n {...(accept !== undefined && { accept })}\r\n {...(maxSize !== undefined && { maxSize })}\r\n {...(onError !== undefined && { onError })}\r\n {...(theme !== undefined && { theme })}\r\n disabled={disabled || isUploading}\r\n onFiles={handleFiles}\r\n style={{ padding: \"32px 24px\", textAlign: \"center\" }}\r\n >\r\n {preview && !isUploading && !stagedFile ? (\r\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: 8 }}>\r\n <video src={preview} style={{ maxWidth: \"100%\", maxHeight: 180, borderRadius: 8 }} muted playsInline />\r\n <span style={{ fontSize: 12, color: \"var(--silo-text-muted)\" }}>Clique ou arraste para trocar o vídeo</span>\r\n </div>\r\n ) : (\r\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: 8 }}>\r\n {renderIcon ? renderIcon() : (\r\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" style={{ color: \"var(--silo-text-muted)\", opacity: 0.5 }}>\r\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\" />\r\n </svg>\r\n )}\r\n {children ?? (\r\n <>\r\n <span style={{ fontWeight: 700, fontSize: 15, color: \"var(--silo-text)\" }}>Arraste seu vídeo aqui</span>\r\n <span style={{ fontSize: 13, color: \"var(--silo-text-muted)\" }}>ou clique para escolher do seu dispositivo</span>\r\n <span style={{ fontSize: 12, color: \"var(--silo-text-muted)\" }}>\r\n MP4, MOV, MKV, WebM{maxSize ? ` · Máx ${formatBytes(maxSize)}` : \"\"}\r\n </span>\r\n </>\r\n )}\r\n </div>\r\n )}\r\n </DropZone>\r\n\r\n {/* Staging */}\r\n {showVideoOptions && stagedFile && !isUploading && state.status !== \"done\" && (\r\n <>\r\n {preview && (\r\n <div style={{ borderRadius: 10, overflow: \"hidden\", border: \"1px solid var(--silo-border)\", background: \"#000\" }}>\r\n <video src={preview} style={{ width: \"100%\", maxHeight: 200, display: \"block\" }} muted playsInline controls />\r\n </div>\r\n )}\r\n <div style={{ borderRadius: 10, border: \"1px solid var(--silo-border)\", overflow: \"hidden\" }}>\r\n <div style={{ padding: \"8px 14px\", background: \"var(--silo-bg-hover, #f1f5f9)\", fontSize: 12, fontWeight: 700, color: \"var(--silo-text-muted)\", letterSpacing: \"0.04em\" }}>\r\n 🎬 Configurações de vídeo\r\n </div>\r\n <VideoOptions value={videoOpts} onChange={setVideoOpts} style={{ padding: \"12px 14px\" }} />\r\n </div>\r\n <div style={{ display: \"flex\", gap: 8 }}>\r\n <button onClick={() => { setStagedFile(null); setPreview(null); setVideoOpts(createInitialVideoOpts(video)); }}\r\n style={{ padding: \"10px 16px\", borderRadius: 8, border: \"1px solid var(--silo-border)\", background: \"transparent\", color: \"var(--silo-text-muted)\", fontSize: 13, fontWeight: 600, cursor: \"pointer\" }}>\r\n Cancelar\r\n </button>\r\n <button onClick={() => { const f = stagedFile; setStagedFile(null); void doUpload(f, videoOpts); setVideoOpts(createInitialVideoOpts(video)); }}\r\n style={{ flex: 1, padding: \"10px\", borderRadius: 8, border: \"none\", background: \"var(--silo-accent, #6366f1)\", color: \"#fff\", fontSize: 14, fontWeight: 700, cursor: \"pointer\" }}>\r\n Enviar vídeo\r\n </button>\r\n </div>\r\n </>\r\n )}\r\n\r\n {/* Progress */}\r\n {isUploading && (\r\n renderProgress ? renderProgress(progress) : (\r\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8, padding: 16, borderRadius: 10, border: \"1px solid var(--silo-border)\", background: \"var(--silo-bg)\" }}>\r\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\" }}>\r\n <span style={{ fontSize: 13, fontWeight: 600, color: \"var(--silo-text)\" }}>{uploadLabel(state.status, progress)}</span>\r\n <div style={{ display: \"flex\", gap: 8, alignItems: \"center\" }}>\r\n <span style={{ fontSize: 13, fontWeight: 700, color: \"var(--silo-accent, #6366f1)\" }}>{progress}%</span>\r\n <button onClick={pause} style={{ background: \"none\", border: \"1px solid var(--silo-border)\", borderRadius: 6, cursor: \"pointer\", fontSize: 11, color: \"var(--silo-text-muted)\", padding: \"2px 8px\" }}>Pausar</button>\r\n </div>\r\n </div>\r\n <ProgressBar progress={progress} />\r\n <span style={{ fontSize: 11, color: \"var(--silo-text-muted)\" }}>O processamento do vídeo começa automaticamente após o envio</span>\r\n </div>\r\n )\r\n )}\r\n\r\n {isPaused && (\r\n <div style={{ display: \"flex\", gap: 8 }}>\r\n <button onClick={() => resume({ ...(bucket !== undefined && { bucket }), video: videoOpts })}\r\n style={{ flex: 1, padding: \"10px\", borderRadius: 8, border: \"none\", background: \"#10b981\", color: \"#fff\", fontSize: 13, fontWeight: 700, cursor: \"pointer\" }}>\r\n ▶ Retomar envio\r\n </button>\r\n <button onClick={() => { abort(); setPreview(null); }}\r\n style={{ padding: \"10px 16px\", borderRadius: 8, border: \"1px solid var(--silo-border)\", background: \"transparent\", fontSize: 13, cursor: \"pointer\", color: \"var(--silo-text-muted)\" }}>\r\n Cancelar\r\n </button>\r\n </div>\r\n )}\r\n\r\n {/* Done */}\r\n {state.status === \"done\" && !renderSuccess && (\r\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8, padding: \"14px 16px\", borderRadius: 10, background: \"rgba(34,197,94,0.08)\", border: \"1px solid rgba(34,197,94,0.2)\" }}>\r\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\r\n <span style={{ fontSize: 24 }}>✅</span>\r\n <div style={{ flex: 1 }}>\r\n <div style={{ fontWeight: 700, fontSize: 14, color: \"#16a34a\" }}>Vídeo enviado com sucesso!</div>\r\n <div style={{ fontSize: 12, color: \"var(--silo-text-muted)\", marginTop: 2 }}>{formatBytes(state.result.size)}</div>\r\n </div>\r\n <button onClick={() => { reset(); setPreview(null); }}\r\n style={{ background: \"none\", border: \"1px solid rgba(34,197,94,0.3)\", borderRadius: 6, cursor: \"pointer\", fontSize: 12, fontWeight: 600, color: \"#16a34a\", padding: \"4px 10px\", flexShrink: 0 }}>\r\n Enviar outro\r\n </button>\r\n </div>\r\n <div style={{ fontSize: 12, color: \"var(--silo-text-muted)\", padding: \"8px 12px\", borderRadius: 8, background: \"rgba(34,197,94,0.06)\", border: \"1px solid rgba(34,197,94,0.15)\" }}>\r\n 🎬 Seu vídeo está sendo processado em segundo plano. Isso pode levar alguns minutos dependendo do tamanho.\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Error */}\r\n {state.status === \"error\" && !renderError && (\r\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12, padding: \"14px 16px\", borderRadius: 10, background: \"rgba(239,68,68,0.07)\", border: \"1px solid rgba(239,68,68,0.2)\" }}>\r\n <span style={{ fontSize: 22 }}>⚠️</span>\r\n <div style={{ flex: 1 }}>\r\n <div style={{ fontWeight: 700, fontSize: 13, color: \"#ef4444\" }}>Não foi possível enviar o vídeo</div>\r\n <div style={{ fontSize: 12, color: \"var(--silo-text-muted)\", marginTop: 2 }}>{state.error.message}</div>\r\n </div>\r\n <button onClick={() => { reset(); setPreview(null); }}\r\n style={{ background: \"none\", border: \"1px solid rgba(239,68,68,0.3)\", borderRadius: 6, cursor: \"pointer\", fontSize: 12, fontWeight: 600, color: \"#ef4444\", padding: \"4px 10px\", flexShrink: 0 }}>\r\n Tentar novamente\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/utils/theme.ts","../src/components/DropZone.tsx","../src/components/ProgressBar.tsx","../src/components/VideoOptions.tsx","../src/utils/format.ts","../src/VideoUploader.tsx"],"names":["jsx","jsxs","useState","useCallback"],"mappings":"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","file":"VideoUploader.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 ...style,\n };\n\n const cls = [\n \"border-2 border-dashed border-slate-200 rounded-xl bg-slate-50 text-slate-900 cursor-pointer outline-none transition-colors duration-150\",\n dragging ? \"border-indigo-500 bg-slate-100\" : \"hover:border-indigo-500 hover:bg-slate-100\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"\",\n className,\n ].filter(Boolean).join(\" \");\n\n return (\n <div\n className={cls}\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={`h-1 rounded-full bg-slate-200 overflow-hidden${className ? ` ${className}` : \"\"}`}\n style={style}\n role=\"progressbar\"\n aria-valuenow={progress}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className=\"h-full rounded-full bg-indigo-500 transition-[width] duration-200 ease-linear\"\n style={{ width: `${progress}%` }}\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 optionBtnCls(active: boolean): string {\n return `py-1 px-2.5 rounded-md text-xs font-semibold cursor-pointer transition-colors border ${\n active\n ? \"border-indigo-500 bg-indigo-500 text-white\"\n : \"border-slate-200 bg-transparent text-slate-900 hover:bg-slate-100\"\n }`;\n}\n\nfunction Toggle({ checked, onToggle, label }: { checked: boolean; onToggle: () => void; label: string }) {\n return (\n <label className=\"inline-flex items-center gap-1.5 cursor-pointer select-none text-xs text-slate-900 font-medium\" onClick={onToggle}>\n <span\n className={`relative inline-block w-8 h-[18px] rounded-full shrink-0 cursor-pointer transition-colors duration-150 ${\n checked ? \"bg-indigo-500\" : \"bg-slate-200\"\n }`}\n >\n <span\n className=\"absolute top-0.5 w-3.5 h-3.5 rounded-full bg-white shadow-sm transition-[left] duration-150\"\n style={{ left: checked ? \"16px\" : \"2px\" }}\n />\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) {\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 return (\n <div className=\"flex flex-col gap-3\" style={style}>\n\n {/* Codec */}\n <div>\n <div className=\"text-[11px] font-bold text-slate-500 uppercase tracking-[0.05em] mb-1.5\">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 className={optionBtnCls(codec === c.value)}\n >\n {c.label}\n </button>\n ))}\n </div>\n </div>\n\n {/* Resolutions */}\n <div>\n <div className=\"text-[11px] font-bold text-slate-500 uppercase tracking-[0.05em] mb-1.5\">\n Resoluções\n </div>\n <div className=\"flex gap-1.5 flex-wrap\">\n <button type=\"button\" onClick={() => onChange({ ...value, transcoding: \"auto\" })} className={optionBtnCls(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 className={optionBtnCls(!isAuto && selectedRes.includes(r))}\n >\n {RESOLUTION_LABELS[r]}\n </button>\n ))}\n </div>\n </div>\n\n {/* Features */}\n <div>\n <div className=\"text-[11px] font-bold text-slate-500 uppercase tracking-[0.05em] mb-2\">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","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 { 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"]}
@@ -85,20 +85,18 @@ function DropZone({
85
85
  );
86
86
  const rootStyle = {
87
87
  ...vars,
88
- fontFamily: "var(--silo-font)",
89
- border: `2px dashed ${dragging ? "var(--silo-border-active)" : "var(--silo-border)"}`,
90
- borderRadius: "var(--silo-radius)",
91
- backgroundColor: dragging ? "var(--silo-bg-hover)" : "var(--silo-bg)",
92
- color: "var(--silo-text)",
93
- cursor: disabled ? "not-allowed" : "pointer",
94
- transition: "border-color 0.15s, background-color 0.15s",
95
- opacity: disabled ? 0.5 : 1,
96
88
  ...style
97
89
  };
90
+ const cls = [
91
+ "border-2 border-dashed border-slate-200 rounded-xl bg-slate-50 text-slate-900 cursor-pointer outline-none transition-colors duration-150",
92
+ dragging ? "border-indigo-500 bg-slate-100" : "hover:border-indigo-500 hover:bg-slate-100",
93
+ disabled ? "opacity-50 cursor-not-allowed" : "",
94
+ className
95
+ ].filter(Boolean).join(" ");
98
96
  return /* @__PURE__ */ jsxs(
99
97
  "div",
100
98
  {
101
- className: `silo-dropzone${className ? ` ${className}` : ""}`,
99
+ className: cls,
102
100
  style: rootStyle,
103
101
  onDragOver: (e) => {
104
102
  e.preventDefault();
@@ -121,7 +119,7 @@ function DropZone({
121
119
  type: "file",
122
120
  accept,
123
121
  multiple,
124
- style: { display: "none" },
122
+ className: "hidden",
125
123
  onChange: handleChange,
126
124
  disabled
127
125
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/theme.ts","../../src/components/DropZone.tsx"],"names":[],"mappings":"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","file":"DropZone.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"]}
1
+ {"version":3,"sources":["../../src/utils/theme.ts","../../src/components/DropZone.tsx"],"names":[],"mappings":"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","file":"DropZone.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 ...style,\n };\n\n const cls = [\n \"border-2 border-dashed border-slate-200 rounded-xl bg-slate-50 text-slate-900 cursor-pointer outline-none transition-colors duration-150\",\n dragging ? \"border-indigo-500 bg-slate-100\" : \"hover:border-indigo-500 hover:bg-slate-100\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"\",\n className,\n ].filter(Boolean).join(\" \");\n\n return (\n <div\n className={cls}\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"]}
@@ -4,14 +4,8 @@ function ProgressBar({ progress, className = "", style }) {
4
4
  return /* @__PURE__ */ jsx(
5
5
  "div",
6
6
  {
7
- className: `silo-progress-track${className ? ` ${className}` : ""}`,
8
- style: {
9
- height: "6px",
10
- borderRadius: "3px",
11
- backgroundColor: "rgba(99,102,241,0.15)",
12
- overflow: "hidden",
13
- ...style
14
- },
7
+ className: `h-1 rounded-full bg-slate-200 overflow-hidden${className ? ` ${className}` : ""}`,
8
+ style,
15
9
  role: "progressbar",
16
10
  "aria-valuenow": progress,
17
11
  "aria-valuemin": 0,
@@ -19,14 +13,8 @@ function ProgressBar({ progress, className = "", style }) {
19
13
  children: /* @__PURE__ */ jsx(
20
14
  "div",
21
15
  {
22
- className: "silo-progress-fill",
23
- style: {
24
- height: "100%",
25
- width: `${progress}%`,
26
- backgroundColor: "var(--silo-accent, #6366f1)",
27
- borderRadius: "3px",
28
- transition: "width 0.2s ease"
29
- }
16
+ className: "h-full rounded-full bg-indigo-500 transition-[width] duration-200 ease-linear",
17
+ style: { width: `${progress}%` }
30
18
  }
31
19
  )
32
20
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":";;AAUO,SAAS,YAAY,EAAE,QAAA,EAAU,SAAA,GAAY,EAAA,EAAI,OAAM,EAAqB;AACjF,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,CAAA,mBAAA,EAAsB,SAAA,GAAY,CAAA,CAAA,EAAI,SAAS,KAAK,EAAE,CAAA,CAAA;AAAA,MACjE,KAAA,EAAO;AAAA,QACL,MAAA,EAAQ,KAAA;AAAA,QACR,YAAA,EAAc,KAAA;AAAA,QACd,eAAA,EAAiB,uBAAA;AAAA,QACjB,QAAA,EAAU,QAAA;AAAA,QACV,GAAG;AAAA,OACL;AAAA,MACA,IAAA,EAAK,aAAA;AAAA,MACL,eAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAe,CAAA;AAAA,MACf,eAAA,EAAe,GAAA;AAAA,MAEf,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,oBAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACL,MAAA,EAAQ,MAAA;AAAA,YACR,KAAA,EAAO,GAAG,QAAQ,CAAA,CAAA,CAAA;AAAA,YAClB,eAAA,EAAiB,6BAAA;AAAA,YACjB,YAAA,EAAc,KAAA;AAAA,YACd,UAAA,EAAY;AAAA;AACd;AAAA;AACF;AAAA,GACF;AAEJ","file":"ProgressBar.js","sourcesContent":["\"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"]}
1
+ {"version":3,"sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":";;AAUO,SAAS,YAAY,EAAE,QAAA,EAAU,SAAA,GAAY,EAAA,EAAI,OAAM,EAAqB;AACjF,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,CAAA,6CAAA,EAAgD,SAAA,GAAY,CAAA,CAAA,EAAI,SAAS,KAAK,EAAE,CAAA,CAAA;AAAA,MAC3F,KAAA;AAAA,MACA,IAAA,EAAK,aAAA;AAAA,MACL,eAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAe,CAAA;AAAA,MACf,eAAA,EAAe,GAAA;AAAA,MAEf,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,+EAAA;AAAA,UACV,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAA;AAAI;AAAA;AACjC;AAAA,GACF;AAEJ","file":"ProgressBar.js","sourcesContent":["\"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={`h-1 rounded-full bg-slate-200 overflow-hidden${className ? ` ${className}` : \"\"}`}\n style={style}\n role=\"progressbar\"\n aria-valuenow={progress}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className=\"h-full rounded-full bg-indigo-500 transition-[width] duration-200 ease-linear\"\n style={{ width: `${progress}%` }}\n />\n </div>\n );\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -58,7 +58,7 @@ interface ThumbnailProps {
58
58
  height?: number | string;
59
59
  /** Object fit (default: "cover") */
60
60
  fit?: CSSProperties["objectFit"];
61
- /** Border radius (default: "var(--silo-radius, 12px)") */
61
+ /** Border radius (default: "12px") */
62
62
  borderRadius?: string;
63
63
  /** Rendered while the URL is loading */
64
64
  placeholder?: React.ReactNode;
@@ -105,9 +105,7 @@ declare function FileIcon({ mimeType, name, size, iconSize, showName, showSize,
105
105
 
106
106
  interface FileCardProps {
107
107
  fileId: string;
108
- /** Poll for status updates while processing (ms, default: 3000) */
109
108
  pollInterval?: number;
110
- /** Show action buttons */
111
109
  actions?: Array<"preview" | "copy-url" | "download" | "delete">;
112
110
  onPreview?: (fileId: string) => void;
113
111
  onCopyUrl?: (url: string) => void;
@@ -120,7 +118,6 @@ declare function FileCard({ fileId, pollInterval, actions, onPreview, onCopyUrl,
120
118
  interface FilePreviewProps {
121
119
  fileId: string | null;
122
120
  onClose: () => void;
123
- /** Poll interval while processing (ms, default: 3000) */
124
121
  pollInterval?: number;
125
122
  }
126
123
  declare function FilePreview({ fileId, onClose, pollInterval }: FilePreviewProps): react.JSX.Element | null;