@geekapps/silo-elements-nextjs 0.2.35 → 0.2.36

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.
@@ -86,20 +86,18 @@ function DropZone({
86
86
  );
87
87
  const rootStyle = {
88
88
  ...vars,
89
- fontFamily: "var(--silo-font)",
90
- border: `2px dashed ${dragging ? "var(--silo-border-active)" : "var(--silo-border)"}`,
91
- borderRadius: "var(--silo-radius)",
92
- backgroundColor: dragging ? "var(--silo-bg-hover)" : "var(--silo-bg)",
93
- color: "var(--silo-text)",
94
- cursor: disabled ? "not-allowed" : "pointer",
95
- transition: "border-color 0.15s, background-color 0.15s",
96
- opacity: disabled ? 0.5 : 1,
97
89
  ...style
98
90
  };
91
+ const cls = [
92
+ "silo-dropzone",
93
+ dragging ? "silo-dropzone--dragging" : "",
94
+ disabled ? "silo-dropzone--disabled" : "",
95
+ className
96
+ ].filter(Boolean).join(" ");
99
97
  return /* @__PURE__ */ jsxs(
100
98
  "div",
101
99
  {
102
- className: `silo-dropzone${className ? ` ${className}` : ""}`,
100
+ className: cls,
103
101
  style: rootStyle,
104
102
  onDragOver: (e) => {
105
103
  e.preventDefault();
@@ -137,30 +135,12 @@ function ProgressBar({ progress, className = "", style }) {
137
135
  "div",
138
136
  {
139
137
  className: `silo-progress-track${className ? ` ${className}` : ""}`,
140
- style: {
141
- height: "6px",
142
- borderRadius: "3px",
143
- backgroundColor: "rgba(99,102,241,0.15)",
144
- overflow: "hidden",
145
- ...style
146
- },
138
+ style,
147
139
  role: "progressbar",
148
140
  "aria-valuenow": progress,
149
141
  "aria-valuemin": 0,
150
142
  "aria-valuemax": 100,
151
- children: /* @__PURE__ */ jsx(
152
- "div",
153
- {
154
- className: "silo-progress-fill",
155
- style: {
156
- height: "100%",
157
- width: `${progress}%`,
158
- backgroundColor: "var(--silo-accent, #6366f1)",
159
- borderRadius: "3px",
160
- transition: "width 0.2s ease"
161
- }
162
- }
163
- )
143
+ children: /* @__PURE__ */ jsx("div", { className: "silo-progress-fill", style: { width: `${progress}%` } })
164
144
  }
165
145
  );
166
146
  }
@@ -383,13 +363,13 @@ function VideoUploader({
383
363
  style: { padding: "32px 24px", textAlign: "center" },
384
364
  children: preview && !isUploading && !stagedFile ? /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", alignItems: "center", gap: 8 }, children: [
385
365
  /* @__PURE__ */ jsx("video", { src: preview, style: { maxWidth: "100%", maxHeight: 180, borderRadius: 8 }, muted: true, playsInline: true }),
386
- /* @__PURE__ */ jsx("span", { style: { fontSize: 12, color: "var(--silo-text-muted)" }, children: "Clique ou arraste para trocar o v\xEDdeo" })
366
+ /* @__PURE__ */ jsx("span", { className: "silo-text-muted", style: { fontSize: 12 }, children: "Clique ou arraste para trocar o v\xEDdeo" })
387
367
  ] }) : /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", alignItems: "center", gap: 8 }, children: [
388
- renderIcon ? renderIcon() : /* @__PURE__ */ jsx("svg", { width: "40", height: "40", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", style: { color: "var(--silo-text-muted)", opacity: 0.5 }, children: /* @__PURE__ */ jsx("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" }) }),
368
+ renderIcon ? renderIcon() : /* @__PURE__ */ jsx("svg", { width: "40", height: "40", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", className: "silo-text-muted", style: { opacity: 0.5 }, children: /* @__PURE__ */ jsx("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" }) }),
389
369
  children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
390
- /* @__PURE__ */ jsx("span", { style: { fontWeight: 700, fontSize: 15, color: "var(--silo-text)" }, children: "Arraste seu v\xEDdeo aqui" }),
391
- /* @__PURE__ */ jsx("span", { style: { fontSize: 13, color: "var(--silo-text-muted)" }, children: "ou clique para escolher do seu dispositivo" }),
392
- /* @__PURE__ */ jsxs("span", { style: { fontSize: 12, color: "var(--silo-text-muted)" }, children: [
370
+ /* @__PURE__ */ jsx("span", { className: "silo-text", style: { fontWeight: 700, fontSize: 15 }, children: "Arraste seu v\xEDdeo aqui" }),
371
+ /* @__PURE__ */ jsx("span", { className: "silo-text-muted", style: { fontSize: 13 }, children: "ou clique para escolher do seu dispositivo" }),
372
+ /* @__PURE__ */ jsxs("span", { className: "silo-text-muted", style: { fontSize: 12 }, children: [
393
373
  "MP4, MOV, MKV, WebM",
394
374
  maxSize ? ` \xB7 M\xE1x ${formatBytes(maxSize)}` : ""
395
375
  ] })
@@ -398,112 +378,70 @@ function VideoUploader({
398
378
  }
399
379
  ),
400
380
  showVideoOptions && stagedFile && !isUploading && state.status !== "done" && /* @__PURE__ */ jsxs(Fragment, { children: [
401
- preview && /* @__PURE__ */ jsx("div", { style: { borderRadius: 10, overflow: "hidden", border: "1px solid var(--silo-border)", background: "#000" }, children: /* @__PURE__ */ jsx("video", { src: preview, style: { width: "100%", maxHeight: 200, display: "block" }, muted: true, playsInline: true, controls: true }) }),
402
- /* @__PURE__ */ jsxs("div", { style: { borderRadius: 10, border: "1px solid var(--silo-border)", overflow: "hidden" }, children: [
403
- /* @__PURE__ */ jsx("div", { style: { padding: "8px 14px", background: "var(--silo-bg-hover, #f1f5f9)", fontSize: 12, fontWeight: 700, color: "var(--silo-text-muted)", letterSpacing: "0.04em" }, children: "\u{1F3AC} Configura\xE7\xF5es de v\xEDdeo" }),
381
+ preview && /* @__PURE__ */ jsx("div", { className: "silo-section-body", style: { background: "#000", overflow: "hidden" }, children: /* @__PURE__ */ jsx("video", { src: preview, style: { width: "100%", maxHeight: 200, display: "block" }, muted: true, playsInline: true, controls: true }) }),
382
+ /* @__PURE__ */ jsxs("div", { className: "silo-section-body", children: [
383
+ /* @__PURE__ */ jsx("div", { className: "silo-section-header", children: "\u{1F3AC} Configura\xE7\xF5es de v\xEDdeo" }),
404
384
  /* @__PURE__ */ jsx(VideoOptions, { value: videoOpts, onChange: setVideoOpts, style: { padding: "12px 14px" } })
405
385
  ] }),
406
386
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 8 }, children: [
407
- /* @__PURE__ */ jsx(
408
- "button",
409
- {
410
- onClick: () => {
411
- setStagedFile(null);
412
- setPreview(null);
413
- setVideoOpts(createInitialVideoOpts(video));
414
- },
415
- 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" },
416
- children: "Cancelar"
417
- }
418
- ),
419
- /* @__PURE__ */ jsx(
420
- "button",
421
- {
422
- onClick: () => {
423
- const f = stagedFile;
424
- setStagedFile(null);
425
- void doUpload(f, videoOpts);
426
- setVideoOpts(createInitialVideoOpts(video));
427
- },
428
- style: { flex: 1, padding: "10px", borderRadius: 8, border: "none", background: "var(--silo-accent, #6366f1)", color: "#fff", fontSize: 14, fontWeight: 700, cursor: "pointer" },
429
- children: "Enviar v\xEDdeo"
430
- }
431
- )
387
+ /* @__PURE__ */ jsx("button", { className: "silo-btn silo-btn--lg", onClick: () => {
388
+ setStagedFile(null);
389
+ setPreview(null);
390
+ setVideoOpts(createInitialVideoOpts(video));
391
+ }, children: "Cancelar" }),
392
+ /* @__PURE__ */ jsx("button", { className: "silo-btn silo-btn--lg silo-btn--primary", style: { flex: 1 }, onClick: () => {
393
+ const f = stagedFile;
394
+ setStagedFile(null);
395
+ void doUpload(f, videoOpts);
396
+ setVideoOpts(createInitialVideoOpts(video));
397
+ }, children: "Enviar v\xEDdeo" })
432
398
  ] })
433
399
  ] }),
434
- isUploading && (renderProgress ? renderProgress(progress) : /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 8, padding: 16, borderRadius: 10, border: "1px solid var(--silo-border)", background: "var(--silo-bg)" }, children: [
400
+ isUploading && (renderProgress ? renderProgress(progress) : /* @__PURE__ */ jsxs("div", { className: "silo-card", style: { flexDirection: "column", gap: 8, padding: 16 }, children: [
435
401
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [
436
- /* @__PURE__ */ jsx("span", { style: { fontSize: 13, fontWeight: 600, color: "var(--silo-text)" }, children: uploadLabel(state.status, progress) }),
402
+ /* @__PURE__ */ jsx("span", { className: "silo-text", style: { fontSize: 13, fontWeight: 600 }, children: uploadLabel(state.status, progress) }),
437
403
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 8, alignItems: "center" }, children: [
438
- /* @__PURE__ */ jsxs("span", { style: { fontSize: 13, fontWeight: 700, color: "var(--silo-accent, #6366f1)" }, children: [
404
+ /* @__PURE__ */ jsxs("span", { className: "silo-text-accent", style: { fontSize: 13, fontWeight: 700 }, children: [
439
405
  progress,
440
406
  "%"
441
407
  ] }),
442
- /* @__PURE__ */ jsx("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" }, children: "Pausar" })
408
+ /* @__PURE__ */ jsx("button", { className: "silo-btn", style: { fontSize: 11, padding: "2px 8px" }, onClick: pause, children: "Pausar" })
443
409
  ] })
444
410
  ] }),
445
411
  /* @__PURE__ */ jsx(ProgressBar, { progress }),
446
- /* @__PURE__ */ jsx("span", { style: { fontSize: 11, color: "var(--silo-text-muted)" }, children: "O processamento do v\xEDdeo come\xE7a automaticamente ap\xF3s o envio" })
412
+ /* @__PURE__ */ jsx("span", { className: "silo-text-muted", style: { fontSize: 11 }, children: "O processamento do v\xEDdeo come\xE7a automaticamente ap\xF3s o envio" })
447
413
  ] })),
448
414
  isPaused && /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 8 }, children: [
449
- /* @__PURE__ */ jsx(
450
- "button",
451
- {
452
- onClick: () => resume({ ...bucket !== void 0 && { bucket }, video: videoOpts }),
453
- style: { flex: 1, padding: "10px", borderRadius: 8, border: "none", background: "#10b981", color: "#fff", fontSize: 13, fontWeight: 700, cursor: "pointer" },
454
- children: "\u25B6 Retomar envio"
455
- }
456
- ),
457
- /* @__PURE__ */ jsx(
458
- "button",
459
- {
460
- onClick: () => {
461
- abort();
462
- setPreview(null);
463
- },
464
- style: { padding: "10px 16px", borderRadius: 8, border: "1px solid var(--silo-border)", background: "transparent", fontSize: 13, cursor: "pointer", color: "var(--silo-text-muted)" },
465
- children: "Cancelar"
466
- }
467
- )
415
+ /* @__PURE__ */ jsx("button", { className: "silo-btn silo-btn--lg silo-btn--success", style: { flex: 1 }, onClick: () => resume({ ...bucket !== void 0 && { bucket }, video: videoOpts }), children: "\u25B6 Retomar envio" }),
416
+ /* @__PURE__ */ jsx("button", { className: "silo-btn silo-btn--lg", onClick: () => {
417
+ abort();
418
+ setPreview(null);
419
+ }, children: "Cancelar" })
468
420
  ] }),
469
- state.status === "done" && !renderSuccess && /* @__PURE__ */ jsxs("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)" }, children: [
421
+ state.status === "done" && !renderSuccess && /* @__PURE__ */ jsxs("div", { className: "silo-card silo-card--success", style: { flexDirection: "column", gap: 8, padding: "14px 16px" }, children: [
470
422
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: 12 }, children: [
471
423
  /* @__PURE__ */ jsx("span", { style: { fontSize: 24 }, children: "\u2705" }),
472
424
  /* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
473
425
  /* @__PURE__ */ jsx("div", { style: { fontWeight: 700, fontSize: 14, color: "#16a34a" }, children: "V\xEDdeo enviado com sucesso!" }),
474
- /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: "var(--silo-text-muted)", marginTop: 2 }, children: formatBytes(state.result.size) })
426
+ /* @__PURE__ */ jsx("div", { className: "silo-text-muted", style: { fontSize: 12, marginTop: 2 }, children: formatBytes(state.result.size) })
475
427
  ] }),
476
- /* @__PURE__ */ jsx(
477
- "button",
478
- {
479
- onClick: () => {
480
- reset();
481
- setPreview(null);
482
- },
483
- 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 },
484
- children: "Enviar outro"
485
- }
486
- )
428
+ /* @__PURE__ */ jsx("button", { className: "silo-btn", style: { borderColor: "rgba(34,197,94,0.3)", color: "#16a34a", padding: "4px 10px", flexShrink: 0 }, onClick: () => {
429
+ reset();
430
+ setPreview(null);
431
+ }, children: "Enviar outro" })
487
432
  ] }),
488
- /* @__PURE__ */ jsx("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)" }, children: "\u{1F3AC} Seu v\xEDdeo est\xE1 sendo processado em segundo plano. Isso pode levar alguns minutos dependendo do tamanho." })
433
+ /* @__PURE__ */ jsx("div", { className: "silo-text-muted", style: { fontSize: 12, padding: "8px 12px", borderRadius: 8, background: "rgba(34,197,94,0.06)", border: "1px solid rgba(34,197,94,0.15)" }, children: "\u{1F3AC} Seu v\xEDdeo est\xE1 sendo processado em segundo plano. Isso pode levar alguns minutos dependendo do tamanho." })
489
434
  ] }),
490
- state.status === "error" && !renderError && /* @__PURE__ */ jsxs("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)" }, children: [
435
+ state.status === "error" && !renderError && /* @__PURE__ */ jsxs("div", { className: "silo-card silo-card--error", style: { gap: 12, padding: "14px 16px" }, children: [
491
436
  /* @__PURE__ */ jsx("span", { style: { fontSize: 22 }, children: "\u26A0\uFE0F" }),
492
437
  /* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
493
- /* @__PURE__ */ jsx("div", { style: { fontWeight: 700, fontSize: 13, color: "#ef4444" }, children: "N\xE3o foi poss\xEDvel enviar o v\xEDdeo" }),
494
- /* @__PURE__ */ jsx("div", { style: { fontSize: 12, color: "var(--silo-text-muted)", marginTop: 2 }, children: state.error.message })
438
+ /* @__PURE__ */ jsx("div", { className: "silo-text-error", style: { fontWeight: 700, fontSize: 13 }, children: "N\xE3o foi poss\xEDvel enviar o v\xEDdeo" }),
439
+ /* @__PURE__ */ jsx("div", { className: "silo-text-muted", style: { fontSize: 12, marginTop: 2 }, children: state.error.message })
495
440
  ] }),
496
- /* @__PURE__ */ jsx(
497
- "button",
498
- {
499
- onClick: () => {
500
- reset();
501
- setPreview(null);
502
- },
503
- 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 },
504
- children: "Tentar novamente"
505
- }
506
- )
441
+ /* @__PURE__ */ jsx("button", { className: "silo-btn", style: { borderColor: "rgba(239,68,68,0.3)", color: "#ef4444", padding: "4px 10px", flexShrink: 0 }, onClick: () => {
442
+ reset();
443
+ setPreview(null);
444
+ }, children: "Tentar novamente" })
507
445
  ] })
508
446
  ] });
509
447
  }
@@ -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 \"silo-dropzone\",\n dragging ? \"silo-dropzone--dragging\" : \"\",\n disabled ? \"silo-dropzone--disabled\" : \"\",\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 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={style}\n role=\"progressbar\"\n aria-valuenow={progress}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div className=\"silo-progress-fill\" style={{ width: `${progress}%` }} />\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\";\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 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 && !stagedFile;\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 && !stagedFile ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: 8 }}>\n <video src={preview} style={{ maxWidth: \"100%\", maxHeight: 180, borderRadius: 8 }} muted playsInline />\n <span className=\"silo-text-muted\" style={{ fontSize: 12 }}>Clique ou arraste para trocar o vídeo</span>\n </div>\n ) : (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: 8 }}>\n {renderIcon ? renderIcon() : (\n <svg width=\"40\" height=\"40\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" className=\"silo-text-muted\" style={{ opacity: 0.5 }}>\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=\"silo-text\" style={{ fontWeight: 700, fontSize: 15 }}>Arraste seu vídeo aqui</span>\n <span className=\"silo-text-muted\" style={{ fontSize: 13 }}>ou clique para escolher do seu dispositivo</span>\n <span className=\"silo-text-muted\" style={{ fontSize: 12 }}>\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=\"silo-section-body\" style={{ background: \"#000\", overflow: \"hidden\" }}>\n <video src={preview} style={{ width: \"100%\", maxHeight: 200, display: \"block\" }} muted playsInline controls />\n </div>\n )}\n <div className=\"silo-section-body\">\n <div className=\"silo-section-header\">🎬 Configurações de vídeo</div>\n <VideoOptions value={videoOpts} onChange={setVideoOpts} style={{ padding: \"12px 14px\" }} />\n </div>\n <div style={{ display: \"flex\", gap: 8 }}>\n <button className=\"silo-btn silo-btn--lg\" onClick={() => { setStagedFile(null); setPreview(null); setVideoOpts(createInitialVideoOpts(video)); }}>Cancelar</button>\n <button className=\"silo-btn silo-btn--lg silo-btn--primary\" style={{ flex: 1 }} onClick={() => { const f = stagedFile; setStagedFile(null); void doUpload(f, videoOpts); setVideoOpts(createInitialVideoOpts(video)); }}>\n Enviar vídeo\n </button>\n </div>\n </>\n )}\n\n {isUploading && (\n renderProgress ? renderProgress(progress) : (\n <div className=\"silo-card\" style={{ flexDirection: \"column\", gap: 8, padding: 16 }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\" }}>\n <span className=\"silo-text\" style={{ fontSize: 13, fontWeight: 600 }}>{uploadLabel(state.status, progress)}</span>\n <div style={{ display: \"flex\", gap: 8, alignItems: \"center\" }}>\n <span className=\"silo-text-accent\" style={{ fontSize: 13, fontWeight: 700 }}>{progress}%</span>\n <button className=\"silo-btn\" style={{ fontSize: 11, padding: \"2px 8px\" }} onClick={pause}>Pausar</button>\n </div>\n </div>\n <ProgressBar progress={progress} />\n <span className=\"silo-text-muted\" style={{ fontSize: 11 }}>O processamento do vídeo começa automaticamente após o envio</span>\n </div>\n )\n )}\n\n {isPaused && (\n <div style={{ display: \"flex\", gap: 8 }}>\n <button className=\"silo-btn silo-btn--lg silo-btn--success\" style={{ flex: 1 }} onClick={() => resume({ ...(bucket !== undefined && { bucket }), video: videoOpts })}>\n ▶ Retomar envio\n </button>\n <button className=\"silo-btn silo-btn--lg\" onClick={() => { abort(); setPreview(null); }}>Cancelar</button>\n </div>\n )}\n\n {state.status === \"done\" && !renderSuccess && (\n <div className=\"silo-card silo-card--success\" style={{ flexDirection: \"column\", gap: 8, padding: \"14px 16px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <span style={{ fontSize: 24 }}>✅</span>\n <div style={{ flex: 1 }}>\n <div style={{ fontWeight: 700, fontSize: 14, color: \"#16a34a\" }}>Vídeo enviado com sucesso!</div>\n <div className=\"silo-text-muted\" style={{ fontSize: 12, marginTop: 2 }}>{formatBytes(state.result.size)}</div>\n </div>\n <button className=\"silo-btn\" style={{ borderColor: \"rgba(34,197,94,0.3)\", color: \"#16a34a\", padding: \"4px 10px\", flexShrink: 0 }} onClick={() => { reset(); setPreview(null); }}>\n Enviar outro\n </button>\n </div>\n <div className=\"silo-text-muted\" style={{ fontSize: 12, padding: \"8px 12px\", borderRadius: 8, background: \"rgba(34,197,94,0.06)\", border: \"1px solid rgba(34,197,94,0.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=\"silo-card silo-card--error\" style={{ gap: 12, padding: \"14px 16px\" }}>\n <span style={{ fontSize: 22 }}>⚠️</span>\n <div style={{ flex: 1 }}>\n <div className=\"silo-text-error\" style={{ fontWeight: 700, fontSize: 13 }}>Não foi possível enviar o vídeo</div>\n <div className=\"silo-text-muted\" style={{ fontSize: 12, marginTop: 2 }}>{state.error.message}</div>\n </div>\n <button className=\"silo-btn\" style={{ borderColor: \"rgba(239,68,68,0.3)\", color: \"#ef4444\", padding: \"4px 10px\", flexShrink: 0 }} onClick={() => { reset(); setPreview(null); }}>\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
+ "silo-dropzone",
92
+ dragging ? "silo-dropzone--dragging" : "",
93
+ disabled ? "silo-dropzone--disabled" : "",
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();
@@ -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 \"silo-dropzone\",\n dragging ? \"silo-dropzone--dragging\" : \"\",\n disabled ? \"silo-dropzone--disabled\" : \"\",\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 style={{ display: \"none\" }}\n onChange={handleChange}\n disabled={disabled}\n />\n {children}\n </div>\n );\n}\n"]}
@@ -5,30 +5,12 @@ function ProgressBar({ progress, className = "", style }) {
5
5
  "div",
6
6
  {
7
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
- },
8
+ style,
15
9
  role: "progressbar",
16
10
  "aria-valuenow": progress,
17
11
  "aria-valuemin": 0,
18
12
  "aria-valuemax": 100,
19
- children: /* @__PURE__ */ jsx(
20
- "div",
21
- {
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
- }
30
- }
31
- )
13
+ children: /* @__PURE__ */ jsx("div", { className: "silo-progress-fill", style: { width: `${progress}%` } })
32
14
  }
33
15
  );
34
16
  }
@@ -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,mBAAA,EAAsB,SAAA,GAAY,CAAA,CAAA,EAAI,SAAS,KAAK,EAAE,CAAA,CAAA;AAAA,MACjE,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,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EAAqB,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAA,EAAI,EAAG;AAAA;AAAA,GACxE;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={style}\n role=\"progressbar\"\n aria-valuenow={progress}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div className=\"silo-progress-fill\" style={{ width: `${progress}%` }} />\n </div>\n );\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -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;