react-upload-pro 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +736 -0
- package/dist/UploadProgress-8cEls1YP.d.cts +145 -0
- package/dist/UploadProgress-uRdhENqW.d.ts +145 -0
- package/dist/chunk-JI2V5ITY.js +2985 -0
- package/dist/chunk-JI2V5ITY.js.map +1 -0
- package/dist/chunk-VVMPVTIX.cjs +3030 -0
- package/dist/chunk-VVMPVTIX.cjs.map +1 -0
- package/dist/cloud/index.cjs +287 -0
- package/dist/cloud/index.cjs.map +1 -0
- package/dist/cloud/index.d.cts +125 -0
- package/dist/cloud/index.d.ts +125 -0
- package/dist/cloud/index.js +279 -0
- package/dist/cloud/index.js.map +1 -0
- package/dist/index.cjs +534 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +377 -0
- package/dist/index.d.ts +377 -0
- package/dist/index.js +351 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +81 -0
- package/dist/types-BDyFUrlv.d.cts +218 -0
- package/dist/types-BDyFUrlv.d.ts +218 -0
- package/dist/variants/index.cjs +1028 -0
- package/dist/variants/index.cjs.map +1 -0
- package/dist/variants/index.d.cts +106 -0
- package/dist/variants/index.d.ts +106 -0
- package/dist/variants/index.js +1005 -0
- package/dist/variants/index.js.map +1 -0
- package/package.json +122 -0
- package/tailwind.preset.cjs +37 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/variants/types.ts","../../src/variants/minimal.tsx","../../src/variants/business.tsx","../../src/variants/creative.tsx","../../src/variants/enterprise.tsx","../../src/variants/layouts.tsx"],"names":["jsxs","jsx"],"mappings":"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","file":"index.js","sourcesContent":["import type { ProgressVariant } from '../components/UploadProgress';\nimport type { UseDropzoneReturn } from '../hooks/useDropzone';\nimport type { DropzoneOptions, FileMetadata, UploadFile } from '../types';\n\n/**\n * Common props every variant accepts. Variants are convenience presets — they\n * wrap the same `useDropzone` hook with a styled UI, so any DropzoneOptions\n * prop works on every variant.\n */\nexport interface VariantProps extends DropzoneOptions {\n className?: string;\n /** Custom label override. */\n label?: React.ReactNode;\n /** Custom sublabel/hint override. */\n hint?: React.ReactNode;\n /** Override the outer container width (any CSS value: '400px', '32rem', '60%'). */\n width?: string;\n /** Override the outer container height (any CSS value). */\n height?: string;\n /** Extra inline style merged onto the outer container. */\n style?: React.CSSProperties;\n /** Pick a progress visualization (bar / striped / circle / minimal / gradient / segmented / dots). */\n progressVariant?: ProgressVariant;\n /** Progress bar height in px (linear variants) or circle diameter (circle variant). */\n progressSize?: number;\n /** Enable the built-in fullscreen preview modal. */\n previewable?: boolean;\n /** Enable the built-in edit modal (rename + tags + metadata). */\n editable?: boolean;\n /** Called when the edit modal renames a file. Overrides the default queue.rename binding. */\n onRename?: (file: UploadFile, newName: string) => void;\n /** Called when the edit modal saves metadata. Overrides the default queue.setMetadata binding. */\n onMetadataChange?: (file: UploadFile, metadata: FileMetadata) => void;\n /** Once the file list exceeds this count, the list becomes scrollable. 0 = off. */\n scrollAfter?: number;\n /** Max CSS height for the scroll region. Default '280px'. */\n maxHeight?: string;\n}\n\n/**\n * Inline style applied to a variant's outermost container — drives the *width*\n * of the whole component (drop surface + gallery + actions). Any extra `style`\n * from the consumer is merged here so it acts as an escape hatch.\n *\n * Note: `height` is intentionally NOT applied here — see surfaceStyleFromProps.\n * Putting height on the outer wrapper conflicts with the file gallery growing\n * below the drop surface; users almost always mean \"the drop area is N tall\".\n */\nexport function containerStyleFromProps(\n props: VariantProps,\n): React.CSSProperties | undefined {\n const hasOverride = props.width !== undefined || props.style !== undefined;\n if (!hasOverride) return undefined;\n return {\n width: props.width,\n ...props.style,\n };\n}\n\n/**\n * Inline style applied to the *drop surface* itself — the inner element that\n * receives `getRootProps()`. Drives the dropzone's visible height so the file\n * list below it isn't squashed when the user sets a small value.\n */\nexport function surfaceStyleFromProps(\n props: VariantProps,\n): React.CSSProperties | undefined {\n if (props.height === undefined) return undefined;\n return { height: props.height };\n}\n\n/**\n * Extract the gallery-specific subset from VariantProps. Used by every variant\n * to forward UI options to UploadGallery without leaking them into useDropzone.\n *\n * When an `api` (UseDropzoneReturn) is provided, default rename/metadata\n * handlers are wired to the underlying queue so edits actually persist —\n * callers can still override by passing their own `onRename` / `onMetadataChange`.\n */\nexport function pickGalleryProps(props: VariantProps, api?: UseDropzoneReturn) {\n const onRename =\n props.onRename ??\n (api ? (f: UploadFile, name: string) => api.rename(f.id, name) : undefined);\n const onMetadataChange =\n props.onMetadataChange ??\n (api ? (f: UploadFile, m: FileMetadata) => api.setMetadata(f.id, m) : undefined);\n return {\n progressVariant: props.progressVariant,\n progressSize: props.progressSize,\n previewable: props.previewable,\n editable: props.editable,\n scrollAfter: props.scrollAfter,\n maxHeight: props.maxHeight,\n onRename,\n onMetadataChange,\n };\n}\n","import { useDropzone } from '../hooks/useDropzone';\nimport { useI18n } from '../i18n/I18nProvider';\nimport { cn } from '../utils/cn';\nimport { UploadIcon, FolderIcon, ImageIcon } from '../components/icons';\nimport { UploadGallery } from '../components/UploadGallery';\nimport { containerStyleFromProps, pickGalleryProps, surfaceStyleFromProps, type VariantProps } from \"./types\";\n\n/** Clean, modern card. The default look for most apps. */\nexport function MinimalModern({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div className={cn('flex flex-col gap-3', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'group flex flex-col items-center justify-center gap-2 rounded-xl border-2 border-dashed border-rup-border bg-rup-bg p-8 text-center transition-all hover:border-rup-accent/60 hover:bg-rup-accent/5',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/10 scale-[1.01]',\n )}\n >\n <input {...api.getInputProps()} />\n <div className=\"flex h-12 w-12 items-center justify-center rounded-full bg-rup-accent/10 text-rup-accent\">\n <UploadIcon width={22} height={22} />\n </div>\n <p className=\"text-sm font-medium text-rup-fg\">{label ?? t.dragOrClick}</p>\n {hint && <p className=\"text-xs text-rup-muted\">{hint}</p>}\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n onRemove={(f) => api.remove(f.id)}\n onRetry={(f) => api.retry(f.id)}\n />\n )}\n </div>\n );\n}\n\n/** Frosted-glass aesthetic with backdrop blur. */\nexport function MinimalGlass({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div className={cn('flex flex-col gap-3', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'relative overflow-hidden rounded-2xl border border-white/20 bg-white/10 p-10 text-center backdrop-blur-xl shadow-lg transition-all hover:bg-white/20',\n api.isDragAccept && 'bg-white/25 scale-[1.01]',\n )}\n >\n <input {...api.getInputProps()} />\n <div className=\"pointer-events-none absolute inset-0 bg-gradient-to-br from-rup-accent/20 via-transparent to-pink-500/20\" />\n <div className=\"relative flex flex-col items-center gap-3\">\n <div className=\"flex h-14 w-14 items-center justify-center rounded-full bg-white/30 text-white backdrop-blur\">\n <UploadIcon width={26} height={26} />\n </div>\n <p className=\"text-base font-semibold text-white\">{label ?? t.dragOrClick}</p>\n {hint && <p className=\"text-xs text-white/70\">{hint}</p>}\n </div>\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n onRemove={(f) => api.remove(f.id)}\n />\n )}\n </div>\n );\n}\n\n/** Soft, extruded shadows — the \"neumorphism\" look. */\nexport function MinimalNeumorphic({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div className={cn('flex flex-col gap-3', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'rounded-3xl bg-slate-100 p-10 text-center transition-all dark:bg-slate-800',\n '[box-shadow:inset_8px_8px_16px_rgb(0_0_0_/_0.08),inset_-8px_-8px_16px_rgb(255_255_255_/_0.7)]',\n 'dark:[box-shadow:inset_8px_8px_16px_rgb(0_0_0_/_0.4),inset_-8px_-8px_16px_rgb(255_255_255_/_0.05)]',\n api.isDragAccept && 'ring-2 ring-rup-accent/40',\n )}\n >\n <input {...api.getInputProps()} />\n <div className=\"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-slate-100 text-rup-accent shadow-[8px_8px_16px_rgb(0_0_0_/_0.08),-8px_-8px_16px_rgb(255_255_255_/_0.7)] dark:bg-slate-800 dark:shadow-[8px_8px_16px_rgb(0_0_0_/_0.4),-8px_-8px_16px_rgb(255_255_255_/_0.05)]\">\n <UploadIcon width={28} height={28} />\n </div>\n <p className=\"mt-4 text-sm font-medium text-slate-700 dark:text-slate-200\">\n {label ?? t.dragOrClick}\n </p>\n {hint && <p className=\"mt-1 text-xs text-slate-500 dark:text-slate-400\">{hint}</p>}\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n onRemove={(f) => api.remove(f.id)}\n />\n )}\n </div>\n );\n}\n\n/** Material 3-inspired card with elevation and ripple-ready bg. */\nexport function MinimalMaterial({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div className={cn('flex flex-col gap-3', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex items-center gap-4 rounded-2xl border border-rup-border bg-rup-bg p-5 shadow-rup transition-all hover:shadow-lg',\n api.isDragAccept && 'border-rup-accent ring-2 ring-rup-accent/30',\n )}\n >\n <input {...api.getInputProps()} />\n <div className=\"flex h-14 w-14 shrink-0 items-center justify-center rounded-2xl bg-rup-accent/15 text-rup-accent\">\n <FolderIcon width={26} height={26} />\n </div>\n <div className=\"flex-1 text-left\">\n <p className=\"text-base font-semibold text-rup-fg\">{label ?? t.dragOrClick}</p>\n {hint && <p className=\"text-xs text-rup-muted\">{hint}</p>}\n </div>\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n api.open();\n }}\n className=\"rounded-full bg-rup-accent px-4 py-2 text-sm font-medium text-rup-accent-fg shadow-sm hover:opacity-90\"\n >\n {t.browse}\n </button>\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n onRemove={(f) => api.remove(f.id)}\n />\n )}\n </div>\n );\n}\n\n/** A no-frills inline strip with the trigger inline. */\nexport function MinimalInline({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div className={cn('flex flex-col gap-2', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex items-center justify-between gap-3 rounded-rup border border-rup-border bg-rup-bg px-4 py-3 text-sm transition hover:border-rup-accent',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/10',\n )}\n >\n <input {...api.getInputProps()} />\n <div className=\"flex items-center gap-2 text-rup-muted\">\n <ImageIcon width={16} height={16} />\n <span>{label ?? t.dragOrClick}</span>\n </div>\n <span className=\"text-rup-accent\">{t.browse}</span>\n </div>\n {hint && <p className=\"text-xs text-rup-muted\">{hint}</p>}\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n layout=\"compact\"\n onRemove={(f) => api.remove(f.id)}\n />\n )}\n </div>\n );\n}\n","import { useDropzone } from '../hooks/useDropzone';\nimport { useI18n } from '../i18n/I18nProvider';\nimport { useUploadProgress } from '../hooks/useUploadProgress';\nimport { cn } from '../utils/cn';\nimport { formatBytes, formatEta, formatSpeed } from '../utils/format';\nimport { UploadIcon, FileIcon, CheckIcon } from '../components/icons';\nimport { UploadProgress } from '../components/UploadProgress';\nimport { UploadGallery } from '../components/UploadGallery';\nimport { containerStyleFromProps, pickGalleryProps, surfaceStyleFromProps, type VariantProps } from \"./types\";\n\n/** CRM-style: rich left rail, action buttons, summary stats. */\nexport function BusinessCRM({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n const aggregate = useUploadProgress(api.files);\n return (\n <div className={cn('grid gap-4 rounded-rup border border-rup-border bg-rup-bg p-4 md:grid-cols-[1fr_280px]', className)} style={containerStyleFromProps(opts)}>\n <div className=\"flex flex-col gap-3\">\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex flex-col items-center justify-center gap-2 rounded-rup border-2 border-dashed border-rup-border bg-rup-border/10 p-8 text-center transition-all hover:border-rup-accent',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/10',\n )}\n >\n <input {...api.getInputProps()} />\n <UploadIcon width={28} height={28} className=\"text-rup-accent\" />\n <p className=\"font-semibold text-rup-fg\">{label ?? t.dragOrClick}</p>\n {hint && <p className=\"text-xs text-rup-muted\">{hint}</p>}\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n searchable\n filterable\n onRemove={(f) => api.remove(f.id)}\n onRetry={(f) => api.retry(f.id)}\n onPause={(f) => api.pause(f.id)}\n onResume={(f) => api.resume(f.id)}\n />\n )}\n </div>\n <aside className=\"rounded-rup border border-rup-border bg-rup-bg p-4 text-sm\">\n <h3 className=\"text-xs font-semibold uppercase tracking-wide text-rup-muted\">\n Upload summary\n </h3>\n <dl className=\"mt-3 space-y-2\">\n <Stat label={t.filesText} value={`${api.files.length}`} />\n <Stat\n label=\"Uploaded\"\n value={`${formatBytes(aggregate.uploaded)} ${t.ofText} ${formatBytes(aggregate.total)}`}\n />\n <Stat label={t.speed} value={formatSpeed(aggregate.speed)} />\n <Stat label={t.eta} value={formatEta(aggregate.eta)} />\n </dl>\n <UploadProgress value={aggregate.progress} showLabel className=\"mt-4\" />\n <div className=\"mt-4 flex flex-col gap-2\">\n <button\n type=\"button\"\n onClick={() => void api.start()}\n disabled={aggregate.pending === 0}\n className=\"rounded-md bg-rup-accent px-3 py-2 text-sm font-medium text-rup-accent-fg disabled:opacity-50\"\n >\n Start upload\n </button>\n <button\n type=\"button\"\n onClick={api.removeAll}\n disabled={api.files.length === 0}\n className=\"rounded-md border border-rup-border px-3 py-2 text-sm hover:bg-rup-border/30 disabled:opacity-50\"\n >\n {t.removeAll}\n </button>\n </div>\n </aside>\n </div>\n );\n}\n\n/** Dashboard-style: compact header, list-heavy body. */\nexport function BusinessDashboard({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n const aggregate = useUploadProgress(api.files);\n return (\n <div\n className={cn(\n 'overflow-hidden rounded-rup border border-rup-border bg-rup-bg',\n className,\n )}\n style={containerStyleFromProps(opts)}\n >\n <header className=\"flex items-center justify-between gap-4 border-b border-rup-border p-4\">\n <div>\n <h3 className=\"text-sm font-semibold text-rup-fg\">{label ?? 'Asset uploads'}</h3>\n {hint && <p className=\"text-xs text-rup-muted\">{hint}</p>}\n </div>\n <div className=\"flex items-center gap-3 text-xs text-rup-muted\">\n <span>\n {aggregate.completed}/{api.files.length} {t.success.toLowerCase()}\n </span>\n <UploadProgress value={aggregate.progress} size={48} variant=\"circle\" showLabel />\n </div>\n </header>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex min-h-[120px] cursor-pointer items-center justify-center gap-3 bg-rup-border/10 p-6 text-sm text-rup-muted transition hover:bg-rup-border/20',\n api.isDragAccept && 'bg-rup-accent/10 text-rup-fg',\n )}\n >\n <input {...api.getInputProps()} />\n <UploadIcon width={18} height={18} />\n <span>{t.dragOrClick}</span>\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n layout=\"table\"\n onRemove={(f) => api.remove(f.id)}\n onRetry={(f) => api.retry(f.id)}\n onPause={(f) => api.pause(f.id)}\n onResume={(f) => api.resume(f.id)}\n />\n )}\n </div>\n );\n}\n\n/** SaaS-style hero with brand gradient and bold CTA. */\nexport function BusinessSaaS({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div\n className={cn(\n 'overflow-hidden rounded-2xl bg-gradient-to-br from-indigo-600 via-purple-600 to-pink-600 p-1',\n className,\n )}\n style={containerStyleFromProps(opts)}\n >\n <div className=\"rounded-2xl bg-rup-bg p-6\">\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex flex-col items-center justify-center gap-3 rounded-xl border-2 border-dashed border-rup-border p-10 text-center transition-all hover:border-indigo-500',\n api.isDragAccept && 'border-indigo-500 bg-indigo-500/5',\n )}\n >\n <input {...api.getInputProps()} />\n <div className=\"rounded-full bg-gradient-to-br from-indigo-500 to-purple-600 p-3 text-white shadow-lg\">\n <UploadIcon width={26} height={26} />\n </div>\n <h3 className=\"text-lg font-bold text-rup-fg\">{label ?? 'Upload your assets'}</h3>\n <p className=\"max-w-sm text-sm text-rup-muted\">{hint ?? t.dragOrClick}</p>\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n api.open();\n }}\n className=\"mt-2 rounded-full bg-gradient-to-r from-indigo-600 to-purple-600 px-6 py-2 text-sm font-semibold text-white shadow-md hover:opacity-95\"\n >\n {t.browse}\n </button>\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n className=\"mt-4\"\n files={api.files}\n onRemove={(f) => api.remove(f.id)}\n onRetry={(f) => api.retry(f.id)}\n />\n )}\n </div>\n </div>\n );\n}\n\nfunction Stat({ label, value }: { label: string; value: string }) {\n return (\n <div className=\"flex items-center justify-between gap-2\">\n <dt className=\"text-xs text-rup-muted\">{label}</dt>\n <dd className=\"text-xs font-medium tabular-nums text-rup-fg\">{value}</dd>\n </div>\n );\n}\n\nexport { CheckIcon, FileIcon };\n","import { useDropzone } from '../hooks/useDropzone';\nimport { useI18n } from '../i18n/I18nProvider';\nimport { cn } from '../utils/cn';\nimport { UploadIcon, ImageIcon } from '../components/icons';\nimport { UploadGallery } from '../components/UploadGallery';\nimport { containerStyleFromProps, pickGalleryProps, surfaceStyleFromProps, type VariantProps } from \"./types\";\n\n/** Bold gradient surface — designed to stand out. */\nexport function CreativeGradient({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div className={cn('flex flex-col gap-3', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n className={cn(\n 'group relative overflow-hidden rounded-3xl p-1 transition-transform',\n 'bg-[conic-gradient(from_var(--rup-angle,0deg),#6366f1,#ec4899,#f59e0b,#6366f1)]',\n api.isDragAccept && 'animate-[rup-pulse_1.5s_ease-in-out_infinite]',\n )}\n style={{\n ['--rup-angle' as string]: api.isDragAccept ? '180deg' : '0deg',\n ...surfaceStyleFromProps(opts),\n }}\n >\n <div\n className={cn(\n 'rounded-[calc(theme(borderRadius.3xl)-4px)] bg-rup-bg p-10 text-center transition-colors',\n api.isDragAccept && 'bg-rup-bg/95',\n )}\n >\n <input {...api.getInputProps()} />\n <div className=\"mx-auto flex h-14 w-14 items-center justify-center rounded-full bg-gradient-to-br from-indigo-500 via-pink-500 to-amber-500 text-white shadow-lg\">\n <UploadIcon width={26} height={26} />\n </div>\n <p className=\"mt-4 bg-gradient-to-r from-indigo-500 via-pink-500 to-amber-500 bg-clip-text text-lg font-bold text-transparent\">\n {label ?? t.dragOrClick}\n </p>\n {hint && <p className=\"mt-1 text-xs text-rup-muted\">{hint}</p>}\n </div>\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n layout=\"grid\"\n onRemove={(f) => api.remove(f.id)}\n />\n )}\n </div>\n );\n}\n\n/** Animated gradient border + scale on drag accept. */\nexport function CreativeAnimated({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div className={cn('flex flex-col gap-3', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'relative overflow-hidden rounded-2xl border-2 border-dashed border-rup-border bg-rup-bg p-10 text-center transition-all duration-300',\n 'hover:border-rup-accent hover:shadow-xl hover:scale-[1.02]',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/5 scale-[1.04] shadow-2xl',\n )}\n >\n <input {...api.getInputProps()} />\n <div\n className={cn(\n 'mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-full bg-rup-accent/15 text-rup-accent transition-all duration-300',\n api.isDragAccept && 'scale-125 rotate-12',\n )}\n >\n <UploadIcon width={30} height={30} />\n </div>\n <p className=\"text-base font-semibold text-rup-fg\">{label ?? t.dragOrClick}</p>\n {hint && <p className=\"mt-1 text-xs text-rup-muted\">{hint}</p>}\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n layout=\"grid\"\n onRemove={(f) => api.remove(f.id)}\n />\n )}\n </div>\n );\n}\n\n/** Premium card — looks at home on landing pages. */\nexport function CreativePremium({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div\n className={cn(\n 'overflow-hidden rounded-3xl border border-rup-border bg-gradient-to-b from-rup-bg to-rup-border/20 shadow-rup',\n className,\n )}\n style={containerStyleFromProps(opts)}\n >\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'relative flex flex-col items-center justify-center gap-3 p-12 text-center transition-all',\n api.isDragAccept && 'bg-rup-accent/5',\n )}\n >\n <input {...api.getInputProps()} />\n <div className=\"absolute inset-0 -z-10 bg-[radial-gradient(circle_at_50%_0%,rgba(99,102,241,0.18),transparent_60%)]\" />\n <div className=\"flex h-20 w-20 items-center justify-center rounded-2xl bg-gradient-to-br from-rup-accent to-purple-500 text-white shadow-2xl\">\n <ImageIcon width={36} height={36} />\n </div>\n <h3 className=\"text-xl font-bold text-rup-fg\">{label ?? 'Drop something beautiful'}</h3>\n <p className=\"max-w-md text-sm text-rup-muted\">{hint ?? t.dragOrClick}</p>\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n api.open();\n }}\n className=\"mt-2 rounded-full border border-rup-border bg-rup-bg px-5 py-2 text-sm font-medium text-rup-fg shadow-sm hover:bg-rup-border/30\"\n >\n {t.browse}\n </button>\n </div>\n {api.files.length > 0 && (\n <div className=\"border-t border-rup-border p-4\">\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n layout=\"grid\"\n onRemove={(f) => api.remove(f.id)}\n />\n </div>\n )}\n </div>\n );\n}\n\n/** Avatar/profile picker — a compact circular drop target. */\nexport function CreativeAvatar({ className, label, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone({ multiple: false, accept: 'image/*', ...opts });\n const preview = api.files[0]?.previewUrl;\n return (\n <div className={cn('flex flex-col items-center gap-2', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'group relative flex h-32 w-32 items-center justify-center overflow-hidden rounded-full border-2 border-dashed border-rup-border bg-rup-border/10 transition-all hover:border-rup-accent',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/10',\n )}\n >\n <input {...api.getInputProps()} />\n {preview ? (\n <img src={preview} alt=\"\" className=\"h-full w-full object-cover\" />\n ) : (\n <ImageIcon width={32} height={32} className=\"text-rup-muted\" />\n )}\n <span className=\"absolute inset-0 flex items-center justify-center bg-black/40 text-xs font-medium text-white opacity-0 transition-opacity group-hover:opacity-100\">\n {label ?? t.browse}\n </span>\n </div>\n </div>\n );\n}\n","import { useDropzone } from '../hooks/useDropzone';\nimport { useI18n } from '../i18n/I18nProvider';\nimport { useUploadProgress } from '../hooks/useUploadProgress';\nimport { cn } from '../utils/cn';\nimport { formatBytes, formatEta } from '../utils/format';\nimport { FolderIcon, UploadIcon } from '../components/icons';\nimport { UploadProgress } from '../components/UploadProgress';\nimport { UploadGallery } from '../components/UploadGallery';\nimport { containerStyleFromProps, pickGalleryProps, surfaceStyleFromProps, type VariantProps } from \"./types\";\n\n/** Document management — formal, dense, table-driven. */\nexport function EnterpriseDocs({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone({ multiple: true, ...opts });\n return (\n <div\n className={cn(\n 'overflow-hidden rounded-rup border border-rup-border bg-rup-bg shadow-rup',\n className,\n )}\n style={containerStyleFromProps(opts)}\n >\n <header className=\"border-b border-rup-border bg-rup-border/10 px-5 py-3\">\n <h3 className=\"text-sm font-semibold text-rup-fg\">{label ?? 'Document upload'}</h3>\n {hint && <p className=\"mt-0.5 text-xs text-rup-muted\">{hint}</p>}\n </header>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex items-center gap-3 border-b border-rup-border bg-rup-border/5 px-5 py-4 text-sm transition hover:bg-rup-border/15',\n api.isDragAccept && 'bg-rup-accent/10',\n )}\n >\n <input {...api.getInputProps()} />\n <UploadIcon width={18} height={18} className=\"text-rup-accent\" />\n <span className=\"flex-1 text-rup-fg\">{t.dragOrClick}</span>\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n api.open();\n }}\n className=\"rounded-md border border-rup-border bg-rup-bg px-3 py-1.5 text-xs hover:bg-rup-border/30\"\n >\n {t.browse}\n </button>\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n layout=\"table\"\n searchable\n filterable\n onRemove={(f) => api.remove(f.id)}\n onRetry={(f) => api.retry(f.id)}\n onPause={(f) => api.pause(f.id)}\n onResume={(f) => api.resume(f.id)}\n />\n )}\n </div>\n );\n}\n\n/** Team upload — shows uploader avatar/initial + tag chips. */\nexport function EnterpriseTeam({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n const aggregate = useUploadProgress(api.files);\n return (\n <div\n className={cn(\n 'rounded-rup border border-rup-border bg-rup-bg p-5 shadow-rup',\n className,\n )}\n style={containerStyleFromProps(opts)}\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <h3 className=\"text-sm font-semibold text-rup-fg\">{label ?? 'Team upload'}</h3>\n {hint && <p className=\"text-xs text-rup-muted\">{hint}</p>}\n </div>\n {aggregate.uploading > 0 && (\n <UploadProgress value={aggregate.progress} size={36} variant=\"circle\" />\n )}\n </div>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'mt-4 flex items-center justify-between gap-3 rounded-rup border-2 border-dashed border-rup-border px-4 py-6 transition hover:border-rup-accent/60',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/5',\n )}\n >\n <input {...api.getInputProps()} />\n <div className=\"flex items-center gap-3 text-sm text-rup-muted\">\n <FolderIcon width={20} height={20} />\n <span>{t.dragOrClick}</span>\n </div>\n <span className=\"text-xs font-medium text-rup-accent\">{t.browse}</span>\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n className=\"mt-4\"\n files={api.files}\n onRemove={(f) => api.remove(f.id)}\n onRetry={(f) => api.retry(f.id)}\n />\n )}\n {aggregate.uploading > 0 && (\n <div className=\"mt-3 flex items-center justify-between text-xs text-rup-muted\">\n <span>\n {aggregate.uploading} {t.uploading.toLowerCase()} ·{' '}\n {formatBytes(aggregate.uploaded)} {t.ofText} {formatBytes(aggregate.total)}\n </span>\n <span>{formatEta(aggregate.eta)}</span>\n </div>\n )}\n </div>\n );\n}\n\n/** Media library — grid of thumbnails with hover overlay actions. */\nexport function EnterpriseMediaLibrary({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone({ accept: 'image/*,video/*', ...opts });\n return (\n <div className={cn('flex flex-col gap-3', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex flex-col items-center justify-center gap-2 rounded-rup border-2 border-dashed border-rup-border bg-rup-bg p-8 text-center transition hover:border-rup-accent',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/5',\n )}\n >\n <input {...api.getInputProps()} />\n <UploadIcon width={22} height={22} className=\"text-rup-accent\" />\n <p className=\"font-medium text-rup-fg\">{label ?? 'Add media'}</p>\n {hint && <p className=\"text-xs text-rup-muted\">{hint}</p>}\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n layout=\"grid\"\n reorderable\n onReorder={api.reorder}\n searchable\n onRemove={(f) => api.remove(f.id)}\n onRetry={(f) => api.retry(f.id)}\n />\n )}\n </div>\n );\n}\n\n/** Fullscreen modal-style drop overlay (controlled by visibility prop). */\nexport function EnterpriseFullscreen({\n className,\n label,\n hint,\n ...opts\n}: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div className={cn('flex flex-col gap-3', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex min-h-[60vh] flex-col items-center justify-center gap-4 rounded-2xl border-2 border-dashed border-rup-border bg-rup-bg p-10 text-center transition',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/5',\n )}\n >\n <input {...api.getInputProps()} />\n <div className=\"flex h-20 w-20 items-center justify-center rounded-full bg-rup-accent/15 text-rup-accent\">\n <UploadIcon width={36} height={36} />\n </div>\n <h2 className=\"text-2xl font-bold text-rup-fg\">{label ?? t.dropHere}</h2>\n {hint && <p className=\"max-w-md text-sm text-rup-muted\">{hint}</p>}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n api.open();\n }}\n className=\"rounded-full bg-rup-accent px-6 py-3 text-sm font-semibold text-rup-accent-fg hover:opacity-90\"\n >\n {t.browse}\n </button>\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n onRemove={(f) => api.remove(f.id)}\n />\n )}\n </div>\n );\n}\n","import { useDropzone } from '../hooks/useDropzone';\nimport { useI18n } from '../i18n/I18nProvider';\nimport { cn } from '../utils/cn';\nimport { UploadIcon } from '../components/icons';\nimport { UploadGallery } from '../components/UploadGallery';\nimport { UploadModal } from '../components/UploadModal';\nimport { containerStyleFromProps, pickGalleryProps, surfaceStyleFromProps, type VariantProps } from \"./types\";\nimport { useState } from 'react';\n\n/** Box layout — squarish drop target with bold border. */\nexport function LayoutBox({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div className={cn('flex flex-col gap-3', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex aspect-square w-full flex-col items-center justify-center gap-2 rounded-2xl border-2 border-rup-border bg-rup-bg p-6 text-center transition hover:border-rup-accent',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/5',\n )}\n >\n <input {...api.getInputProps()} />\n <UploadIcon width={28} height={28} className=\"text-rup-accent\" />\n <p className=\"text-sm font-medium text-rup-fg\">{label ?? t.dragOrClick}</p>\n {hint && <p className=\"text-xs text-rup-muted\">{hint}</p>}\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n onRemove={(f) => api.remove(f.id)}\n />\n )}\n </div>\n );\n}\n\n/** Card layout — heavier shadow, more padding. */\nexport function LayoutCard({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div\n className={cn(\n 'rounded-2xl border border-rup-border bg-rup-bg p-6 shadow-rup',\n className,\n )}\n style={containerStyleFromProps(opts)}\n >\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex flex-col items-center justify-center gap-2 rounded-xl border-2 border-dashed border-rup-border p-10 text-center transition hover:border-rup-accent',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/5',\n )}\n >\n <input {...api.getInputProps()} />\n <UploadIcon width={28} height={28} className=\"text-rup-accent\" />\n <p className=\"text-base font-semibold text-rup-fg\">{label ?? t.dragOrClick}</p>\n {hint && <p className=\"text-xs text-rup-muted\">{hint}</p>}\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n className=\"mt-4\"\n files={api.files}\n onRemove={(f) => api.remove(f.id)}\n />\n )}\n </div>\n );\n}\n\n/** Sidebar layout — vertical strip on the side. */\nexport function LayoutSidebar({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const api = useDropzone(opts);\n return (\n <div className={cn('grid gap-3 md:grid-cols-[240px_1fr]', className)} style={containerStyleFromProps(opts)}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex h-full min-h-[200px] flex-col items-center justify-center gap-2 rounded-rup border-2 border-dashed border-rup-border bg-rup-bg p-4 text-center transition hover:border-rup-accent',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/5',\n )}\n >\n <input {...api.getInputProps()} />\n <UploadIcon width={22} height={22} className=\"text-rup-accent\" />\n <p className=\"text-sm font-medium text-rup-fg\">{label ?? t.dragOrClick}</p>\n {hint && <p className=\"text-xs text-rup-muted\">{hint}</p>}\n </div>\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n files={api.files}\n emptyState={<p className=\"text-sm text-rup-muted\">No files yet.</p>}\n onRemove={(f) => api.remove(f.id)}\n onRetry={(f) => api.retry(f.id)}\n />\n </div>\n );\n}\n\n/** Modal layout — trigger button opens a dedicated upload dialog. */\nexport function LayoutModal({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const [open, setOpen] = useState(false);\n const api = useDropzone(opts);\n return (\n <div className={className} style={containerStyleFromProps(opts)}>\n <button\n type=\"button\"\n onClick={() => setOpen(true)}\n className=\"inline-flex items-center gap-2 rounded-rup bg-rup-accent px-4 py-2 text-sm font-medium text-rup-accent-fg hover:opacity-90\"\n >\n <UploadIcon width={14} height={14} />\n {label ?? t.browse}\n </button>\n <UploadModal open={open} onClose={() => setOpen(false)} title={t.browse}>\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex min-h-[180px] flex-col items-center justify-center gap-2 rounded-rup border-2 border-dashed border-rup-border bg-rup-bg p-8 text-center transition hover:border-rup-accent',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/5',\n )}\n >\n <input {...api.getInputProps()} />\n <UploadIcon width={24} height={24} className=\"text-rup-accent\" />\n <p className=\"text-sm font-medium text-rup-fg\">{t.dragOrClick}</p>\n {hint && <p className=\"text-xs text-rup-muted\">{hint}</p>}\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n className=\"mt-4\"\n files={api.files}\n onRemove={(f) => api.remove(f.id)}\n />\n )}\n </UploadModal>\n </div>\n );\n}\n\n/** Floating layout — fixed bottom-right card that expands. */\nexport function LayoutFloating({ className, label, hint, ...opts }: VariantProps) {\n const { t } = useI18n();\n const [expanded, setExpanded] = useState(false);\n const api = useDropzone(opts);\n return (\n <div\n className={cn(\n 'fixed bottom-4 right-4 z-50 w-80 max-w-[calc(100vw-2rem)] overflow-hidden rounded-rup border border-rup-border bg-rup-bg shadow-rup transition-all',\n expanded ? 'h-auto' : 'h-12',\n className,\n )}\n style={containerStyleFromProps(opts)}\n >\n <button\n type=\"button\"\n onClick={() => setExpanded((e) => !e)}\n className=\"flex w-full items-center justify-between gap-2 border-b border-rup-border px-4 py-3 text-sm font-medium text-rup-fg hover:bg-rup-border/30\"\n >\n <span className=\"flex items-center gap-2\">\n <UploadIcon width={14} height={14} />\n {label ?? t.browse}\n </span>\n <span className=\"text-rup-muted\">{expanded ? '▾' : '▴'}</span>\n </button>\n {expanded && (\n <div className=\"p-3\">\n <div\n {...api.getRootProps()}\n style={surfaceStyleFromProps(opts)}\n className={cn(\n 'flex min-h-[100px] flex-col items-center justify-center gap-1 rounded-rup border-2 border-dashed border-rup-border text-center text-xs text-rup-muted transition hover:border-rup-accent',\n api.isDragAccept && 'border-rup-accent bg-rup-accent/5',\n )}\n >\n <input {...api.getInputProps()} />\n <UploadIcon width={16} height={16} />\n <span>{hint ?? t.dragOrClick}</span>\n </div>\n {api.files.length > 0 && (\n <UploadGallery\n {...pickGalleryProps(opts, api)}\n className=\"mt-2 max-h-48 overflow-y-auto\"\n files={api.files}\n layout=\"compact\"\n onRemove={(f) => api.remove(f.id)}\n />\n )}\n </div>\n )}\n </div>\n );\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "react-upload-pro",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "The most feature-rich React file upload & dropzone library. Drag & drop, chunk uploads, cloud adapters, 20+ UI variants, i18n, a11y, SSR-safe.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"react",
|
|
7
|
+
"dropzone",
|
|
8
|
+
"upload",
|
|
9
|
+
"file-upload",
|
|
10
|
+
"drag-and-drop",
|
|
11
|
+
"tailwind",
|
|
12
|
+
"nextjs",
|
|
13
|
+
"vite",
|
|
14
|
+
"typescript",
|
|
15
|
+
"s3",
|
|
16
|
+
"cloudinary",
|
|
17
|
+
"firebase",
|
|
18
|
+
"supabase"
|
|
19
|
+
],
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"author": "Yogesh Gabani",
|
|
22
|
+
"homepage": "https://github.com/react-upload-pro/react-upload-pro",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/react-upload-pro/react-upload-pro.git"
|
|
26
|
+
},
|
|
27
|
+
"type": "module",
|
|
28
|
+
"sideEffects": [
|
|
29
|
+
"**/*.css"
|
|
30
|
+
],
|
|
31
|
+
"main": "./dist/index.cjs",
|
|
32
|
+
"module": "./dist/index.js",
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"exports": {
|
|
35
|
+
".": {
|
|
36
|
+
"types": "./dist/index.d.ts",
|
|
37
|
+
"import": "./dist/index.js",
|
|
38
|
+
"require": "./dist/index.cjs"
|
|
39
|
+
},
|
|
40
|
+
"./variants": {
|
|
41
|
+
"types": "./dist/variants/index.d.ts",
|
|
42
|
+
"import": "./dist/variants/index.js",
|
|
43
|
+
"require": "./dist/variants/index.cjs"
|
|
44
|
+
},
|
|
45
|
+
"./cloud": {
|
|
46
|
+
"types": "./dist/cloud/index.d.ts",
|
|
47
|
+
"import": "./dist/cloud/index.js",
|
|
48
|
+
"require": "./dist/cloud/index.cjs"
|
|
49
|
+
},
|
|
50
|
+
"./styles.css": "./dist/styles.css",
|
|
51
|
+
"./tailwind": "./tailwind.preset.cjs"
|
|
52
|
+
},
|
|
53
|
+
"files": [
|
|
54
|
+
"dist",
|
|
55
|
+
"tailwind.preset.cjs",
|
|
56
|
+
"README.md",
|
|
57
|
+
"LICENSE"
|
|
58
|
+
],
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "tsup",
|
|
61
|
+
"dev": "vite --config demo/vite.config.ts",
|
|
62
|
+
"dev:lib": "tsup --watch",
|
|
63
|
+
"demo": "vite --config demo/vite.config.ts",
|
|
64
|
+
"demo:build": "vite build --config demo/vite.config.ts",
|
|
65
|
+
"lint": "eslint \"src/**/*.{ts,tsx}\"",
|
|
66
|
+
"typecheck": "tsc --noEmit",
|
|
67
|
+
"test": "vitest run",
|
|
68
|
+
"test:watch": "vitest",
|
|
69
|
+
"test:coverage": "vitest run --coverage",
|
|
70
|
+
"test:e2e": "playwright test",
|
|
71
|
+
"storybook": "storybook dev -p 6006",
|
|
72
|
+
"build-storybook": "storybook build",
|
|
73
|
+
"prepublishOnly": "npm run build"
|
|
74
|
+
},
|
|
75
|
+
"peerDependencies": {
|
|
76
|
+
"framer-motion": ">=10.0.0",
|
|
77
|
+
"react": ">=17.0.0",
|
|
78
|
+
"react-dom": ">=17.0.0"
|
|
79
|
+
},
|
|
80
|
+
"peerDependenciesMeta": {
|
|
81
|
+
"framer-motion": {
|
|
82
|
+
"optional": true
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"dependencies": {
|
|
86
|
+
"clsx": "^2.1.1",
|
|
87
|
+
"tailwind-merge": "^2.5.4"
|
|
88
|
+
},
|
|
89
|
+
"devDependencies": {
|
|
90
|
+
"@playwright/test": "^1.49.0",
|
|
91
|
+
"@storybook/addon-essentials": "^8.4.0",
|
|
92
|
+
"@storybook/react": "^8.4.0",
|
|
93
|
+
"@storybook/react-vite": "^8.4.0",
|
|
94
|
+
"@testing-library/jest-dom": "^6.6.0",
|
|
95
|
+
"@testing-library/react": "^16.0.0",
|
|
96
|
+
"@testing-library/user-event": "^14.5.0",
|
|
97
|
+
"@types/node": "^22.9.0",
|
|
98
|
+
"@types/react": "^18.3.0",
|
|
99
|
+
"@types/react-dom": "^18.3.0",
|
|
100
|
+
"@vitejs/plugin-react": "^4.3.0",
|
|
101
|
+
"@vitest/coverage-v8": "^2.1.0",
|
|
102
|
+
"autoprefixer": "^10.4.20",
|
|
103
|
+
"eslint": "^9.14.0",
|
|
104
|
+
"framer-motion": "^11.11.0",
|
|
105
|
+
"jsdom": "^25.0.0",
|
|
106
|
+
"postcss": "^8.4.49",
|
|
107
|
+
"react": "^18.3.1",
|
|
108
|
+
"react-dom": "^18.3.1",
|
|
109
|
+
"storybook": "^8.4.0",
|
|
110
|
+
"tailwindcss": "^3.4.14",
|
|
111
|
+
"tsup": "^8.3.0",
|
|
112
|
+
"typescript": "^5.6.0",
|
|
113
|
+
"vite": "^5.4.0",
|
|
114
|
+
"vitest": "^2.1.0"
|
|
115
|
+
},
|
|
116
|
+
"publishConfig": {
|
|
117
|
+
"access": "public"
|
|
118
|
+
},
|
|
119
|
+
"engines": {
|
|
120
|
+
"node": ">=18"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tailwind preset for react-upload-pro.
|
|
3
|
+
* Consumers can extend their tailwind.config.js with this preset to inherit
|
|
4
|
+
* the design tokens used by the built-in variants.
|
|
5
|
+
*
|
|
6
|
+
* // tailwind.config.js
|
|
7
|
+
* module.exports = {
|
|
8
|
+
* presets: [require('react-upload-pro/tailwind')],
|
|
9
|
+
* content: ['./src/**\/*.{ts,tsx}', './node_modules/react-upload-pro/dist/**\/*.{js,cjs}'],
|
|
10
|
+
* };
|
|
11
|
+
*/
|
|
12
|
+
module.exports = {
|
|
13
|
+
theme: {
|
|
14
|
+
extend: {
|
|
15
|
+
colors: {
|
|
16
|
+
rup: {
|
|
17
|
+
bg: 'rgb(var(--rup-bg) / <alpha-value>)',
|
|
18
|
+
fg: 'rgb(var(--rup-fg) / <alpha-value>)',
|
|
19
|
+
muted: 'rgb(var(--rup-muted) / <alpha-value>)',
|
|
20
|
+
border: 'rgb(var(--rup-border) / <alpha-value>)',
|
|
21
|
+
accent: 'rgb(var(--rup-accent) / <alpha-value>)',
|
|
22
|
+
'accent-fg': 'rgb(var(--rup-accent-fg) / <alpha-value>)',
|
|
23
|
+
success: 'rgb(var(--rup-success) / <alpha-value>)',
|
|
24
|
+
error: 'rgb(var(--rup-error) / <alpha-value>)',
|
|
25
|
+
warning: 'rgb(var(--rup-warning) / <alpha-value>)',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
borderRadius: {
|
|
29
|
+
rup: 'var(--rup-radius)',
|
|
30
|
+
},
|
|
31
|
+
boxShadow: {
|
|
32
|
+
rup: 'var(--rup-shadow)',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
plugins: [],
|
|
37
|
+
};
|