{"_id":"@adonis-agora/media-react","_rev":"7-dff3de5b02a7c1fd4b5c490130f81d64","name":"@adonis-agora/media-react","dist-tags":{"latest":"0.5.2"},"versions":{"0.1.0":{"name":"@adonis-agora/media-react","version":"0.1.0","keywords":["adonisjs","adonis","media","react","hook","upload","uploader","resumable","tus","s3","multipart","agora"],"author":"Davi Carvalho <davi@goflip.ai>","license":"MIT","_id":"@adonis-agora/media-react@0.1.0","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"dist":{"shasum":"9e0531d991ebeea981787370f477dca78fdf1a22","tarball":"https://registry.npmjs.org/@adonis-agora/media-react/-/media-react-0.1.0.tgz","fileCount":23,"integrity":"sha512-goHRdrATelG2QjAfpjbffSnV2JUqHCnROK19zKsR+UK/DeGILzMp+3Gki/WZuO/OkAslOXyH9THLqR8wnJ0Ybg==","signatures":[{"sig":"MEUCIQDXRZuhBqAoz3GCt5OtA0AaGJes/T6Q6enlqDnNoTMO4wIgfx2FyjiOgJGeCtQqcjNiv9NSZweqp26EefLRdRcYfhs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71283},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js","default":"./dist/client.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-media.git","type":"git","directory":"packages/react"},"description":"React hook + headless uploader component and a framework-free browser upload client for @adonis-agora/media — resumable TUS, direct-S3 multipart, and proxy uploads. Part of the Agora ecosystem.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","vitest":"^3.0.0","react-dom":"^19.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/react":"^19.0.0","@testing-library/react":"^16.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/media-react_0.1.0_1784153236280_0.4341838055366243","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@adonis-agora/media-react","version":"0.2.0","keywords":["adonisjs","adonis","media","react","hook","upload","uploader","resumable","tus","s3","multipart","agora"],"author":"Davi Carvalho <davi@goflip.ai>","license":"MIT","_id":"@adonis-agora/media-react@0.2.0","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"dist":{"shasum":"429ccf5ae1e15ee4aed8749806d23a5f9281926d","tarball":"https://registry.npmjs.org/@adonis-agora/media-react/-/media-react-0.2.0.tgz","fileCount":24,"integrity":"sha512-as1u/vLlkjTFpGQjNkWvSsWB9AK+Lz2p3AcKr0OmphQZZ3G76Ez8mXUOYoi4ICEz79Lc5iGj11xK1ceWgybzIw==","signatures":[{"sig":"MEYCIQDJHPR7l2wdJxbWaokRYpbSXpJ8ghKxWHr6y89MsPOdJgIhAP30rUxt2FYOUGVLSzk2pSk0bstZJu2odZTXpVhSw67o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adonis-agora%2fmedia-react@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":99016},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js","default":"./dist/client.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5e06eb69-a8f6-44c8-a753-42ac2bc536d4"}},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-media.git","type":"git","directory":"packages/react"},"description":"React hook + headless uploader component and a framework-free browser upload client for @adonis-agora/media — resumable TUS, direct-S3 multipart, and proxy uploads. Part of the Agora ecosystem.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"^19.0.0","vitest":"^3.0.0","react-dom":"^19.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/react":"^19.0.0","@testing-library/react":"^16.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/media-react_0.2.0_1785002954512_0.46536207999406254","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@adonis-agora/media-react","version":"0.3.0","keywords":["adonisjs","adonis","media","react","hook","upload","uploader","resumable","tus","s3","multipart","agora"],"author":"Davi Carvalho <davi@goflip.ai>","license":"MIT","_id":"@adonis-agora/media-react@0.3.0","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"dist":{"shasum":"88f76681416aaab40e1039513ce2e85235280b76","tarball":"https://registry.npmjs.org/@adonis-agora/media-react/-/media-react-0.3.0.tgz","fileCount":36,"integrity":"sha512-jBySh4GZzoSikk8JL0QeGf8RtgjDNcG2PvszQ9roN9FyUkzVPo7et/FAbDARLTA18WCCOAq2vnVKp5jTdZ0+ZA==","signatures":[{"sig":"MEQCIBHGkouOFEOmU8oufnDkc7AlJ5bplb24c8NAzotI3e2pAiAVf50glUcOlESHg+EZpEt0lOvyrZSU3Lc1HGbcv9DTXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adonis-agora%2fmedia-react@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":130183},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js","default":"./dist/client.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5e06eb69-a8f6-44c8-a753-42ac2bc536d4"}},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-media.git","type":"git","directory":"packages/react"},"description":"React hook + headless uploader component and a framework-free browser upload client for @adonis-agora/media — resumable TUS, direct-S3 multipart, and proxy uploads. Part of the Agora ecosystem.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"19.2.8","vitest":"3.2.7","react-dom":"19.2.8","typescript":"^5.4.0","@types/node":"^20.0.0","@types/react":"19.2.18","@testing-library/react":"^16.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/media-react_0.3.0_1786549694463_0.02205524843886919","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@adonis-agora/media-react","version":"0.4.0","keywords":["adonisjs","adonis","media","react","hook","upload","uploader","resumable","tus","s3","multipart","agora"],"author":"Davi Carvalho <davi@goflip.ai>","license":"MIT","_id":"@adonis-agora/media-react@0.4.0","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"dist":{"shasum":"2b8b877ff1483674ab4eaa6c8db1a9ac3203bf4f","tarball":"https://registry.npmjs.org/@adonis-agora/media-react/-/media-react-0.4.0.tgz","fileCount":36,"integrity":"sha512-NKmFwRSY+iMvjPzl9PAbq39iLIbJhjSbCJNYHt3uoi6zt61KRG+2q0s8orf61a/pj2mHqLcjREqjQWgRnilqtQ==","signatures":[{"sig":"MEYCIQD1V8avwSdCPp4SwyQNO9nUlOqeRvythTQaVco4ImOVFgIhAPk0dNsjHD0auzDPeoJKf/LxAm1ZOKmsOreWQJNfbn85","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adonis-agora%2fmedia-react@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":131744},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js","default":"./dist/client.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d3314c-a420-4d49-b822-f656b146cc76"}},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-agora-media.git","type":"git","directory":"packages/react"},"description":"React hook + headless uploader component and a framework-free browser upload client for @adonis-agora/media — resumable TUS, direct-S3 multipart, and proxy uploads. Part of the Agora ecosystem.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"19.2.8","vitest":"3.2.7","react-dom":"19.2.8","typescript":"^5.4.0","@types/node":"^20.0.0","@types/react":"19.2.18","@testing-library/react":"^16.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/media-react_0.4.0_1786622154438_0.03440354010036617","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@adonis-agora/media-react","version":"0.5.0","keywords":["adonisjs","adonis","media","react","hook","upload","uploader","resumable","tus","s3","multipart","agora"],"author":"Davi Carvalho <davi@goflip.ai>","license":"MIT","_id":"@adonis-agora/media-react@0.5.0","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"dist":{"shasum":"a5a9b6ead2ccf5f1cf85c498be58d03d10f76d9d","tarball":"https://registry.npmjs.org/@adonis-agora/media-react/-/media-react-0.5.0.tgz","fileCount":36,"integrity":"sha512-BEMbG9Vrxtn+nN7xRrigw72AmLB40TST0IRX8u0dbviPREruoajlmaqRXLCb1wdTvAri3khLDcUT9pTr+Ai7ZQ==","signatures":[{"sig":"MEQCIA4Xa7vL1QFYbpo54VfJgNou41o74jFwxQRLxe8jAhBaAiBUqmsqVMl8QOFJ6bePC+Z1Z3YKdiXpNzASZ2zER97h2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adonis-agora%2fmedia-react@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":137167},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js","default":"./dist/client.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d3314c-a420-4d49-b822-f656b146cc76"}},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-agora-media.git","type":"git","directory":"packages/react"},"description":"React hook + headless uploader component and a framework-free browser upload client for @adonis-agora/media — resumable TUS, direct-S3 multipart, and proxy uploads. Part of the Agora ecosystem.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"19.2.8","vitest":"3.2.7","react-dom":"19.2.8","typescript":"^5.4.0","@types/node":"^20.0.0","@types/react":"19.2.18","@testing-library/react":"^16.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/media-react_0.5.0_1787110353571_0.7277217070665267","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@adonis-agora/media-react","version":"0.5.1","keywords":["adonisjs","adonis","media","react","hook","upload","uploader","resumable","tus","s3","multipart","agora","tanstack-intent"],"author":"Davi Carvalho <davi@goflip.ai>","license":"MIT","_id":"@adonis-agora/media-react@0.5.1","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"dist":{"shasum":"425077f7f2fef22497eff9aa5b481411bf4ebc1c","tarball":"https://registry.npmjs.org/@adonis-agora/media-react/-/media-react-0.5.1.tgz","fileCount":37,"integrity":"sha512-MpZys7uQN+5b226B7OZAP+oNoZ/3sv39wI1DQd8fz0y+MuEYv7ebMLFqrZ3+iP4zStWmC7ROZ8Oys9TkJMrL7A==","signatures":[{"sig":"MEYCIQDT4L6/Zfo38ZqRvqEtULnGWu0clWCKsahiP6aB6uc31gIhAJsqI9nHy3bgn5a/C7ujl/KR5eJ0JOOGM4urmlYlrtU0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adonis-agora%2fmedia-react@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":147042},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js","default":"./dist/client.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d3314c-a420-4d49-b822-f656b146cc76"}},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-agora-media.git","type":"git","directory":"packages/react"},"description":"React hook + headless uploader component and a framework-free browser upload client for @adonis-agora/media — resumable TUS, direct-S3 multipart, and proxy uploads. Part of the Agora ecosystem.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","react":"19.2.8","vitest":"3.2.7","react-dom":"19.2.8","typescript":"^5.4.0","@types/node":"^20.0.0","@types/react":"19.2.18","@tanstack/intent":"^0.3.2","@testing-library/react":"^16.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/media-react_0.5.1_1787578635619_0.14162848710523046","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"_id":"@adonis-agora/media-react@0.5.2","bugs":{"url":"https://github.com/DavideCarvalho/adonis-agora-media/issues"},"dist":{"shasum":"86990de7e9c6ab5790bb40b7d6f6fcb30e779525","tarball":"https://registry.npmjs.org/@adonis-agora/media-react/-/media-react-0.5.2.tgz","fileCount":37,"integrity":"sha512-z0WdpLJX0KBP8qlOlP9Lxkdj0LSen600gKeLeyxyiqi87euhMCXWrB8xLRtsU8KInKYgpwYhV9qGY6+yM8M2tQ==","signatures":[{"sig":"MEUCIQC9IB4rul4HbZ10oc+TRR+JG67QCqAn60aQaPH1LT6yswIgRqLAkUADAu7rWBbXsdLOluVB1+JqSATGNXxx79ix/6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDXPc21uF+gtjKc3kRxj/cyfukzo/F/Ay4KU5Kszg8uxQIgOJrWZKgyChlBXYBnHfH9d/1hSSHWCN21uPYZ5CnaFf0="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adonis-agora%2fmedia-react@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":149036},"main":"./dist/index.js","name":"@adonis-agora/media-react","type":"module","types":"./dist/index.d.ts","author":"Davi Carvalho <davi@goflip.ai>","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js","default":"./dist/client.js"}},"license":"MIT","scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"version":"0.5.2","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:35d3314c-a420-4d49-b822-f656b146cc76"}},"homepage":"https://davidecarvalho.github.io/agora/docs/media","keywords":["adonisjs","adonis","media","react","hook","upload","uploader","resumable","tus","s3","multipart","agora","tanstack-intent"],"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-agora-media.git","type":"git","directory":"packages/react"},"description":"React hook + headless uploader component and a framework-free browser upload client for @adonis-agora/media — resumable TUS, direct-S3 multipart, and proxy uploads. Part of the Agora ecosystem.","directories":{},"maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"sideEffects":false,"_hasShrinkwrap":false,"devDependencies":{"jsdom":"30.1.0","react":"19.3.0","vitest":"5.0.1","react-dom":"19.3.0","typescript":"7.0.2","@types/node":"26.6.2","@types/react":"19.3.0","@tanstack/intent":"0.4.0","@testing-library/react":"16.3.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/media-react_0.5.2_1790242138317_0.569843046477317"}}},"time":{"created":"2026-07-15T22:07:16.104Z","modified":"2026-09-24T09:28:59.060Z","0.1.0":"2026-07-15T22:07:16.481Z","0.2.0":"2026-07-25T18:09:14.649Z","0.3.0":"2026-08-12T15:48:14.620Z","0.4.0":"2026-08-13T11:55:54.590Z","0.5.0":"2026-08-19T03:32:33.725Z","0.5.1":"2026-08-24T13:37:15.793Z","0.5.2":"2026-09-24T09:28:58.521Z"},"author":"Davi Carvalho <davi@goflip.ai>","license":"MIT","keywords":["adonisjs","adonis","media","react","hook","upload","uploader","resumable","tus","s3","multipart","agora","tanstack-intent"],"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-agora-media.git","type":"git","directory":"packages/react"},"description":"React hook + headless uploader component and a framework-free browser upload client for @adonis-agora/media — resumable TUS, direct-S3 multipart, and proxy uploads. Part of the Agora ecosystem.","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"readme":"# @adonis-agora/media-react\n\nReact hook + headless uploader component and a framework-free browser upload client for\n[`@adonis-agora/media`](../adonis). It speaks the AdonisJS provider's **actual** upload contract\nacross all three server strategies:\n\n- **TUS resumable** — `POST`/`HEAD`/`PATCH`/`DELETE` against `uploads.resumable.routes.prefix`\n  (default `/media/uploads/tus`), `Content-Type: application/offset+octet-stream`, resumes from the\n  server's `Upload-Offset`. The default strategy.\n- **Direct-S3 multipart** — `POST /direct/initiate` returns presigned part URLs; parts are `PUT`\n  straight to S3 (ETags collected) and assembled via `POST /direct/:uploadId/complete`\n  (`uploads.routes.prefix`, default `/media/uploads`).\n- **Proxy** — a single `PUT /proxy` streams the whole body through the app.\n\n## Install\n\n```bash\nnpm i @adonis-agora/media-react react\n```\n\n`react` is an (optional) peer dependency — the `./client` entry point is framework-free and needs no\nReact.\n\n## `useMediaUpload`\n\n```tsx\nimport { useMediaUpload } from '@adonis-agora/media-react'\n\nfunction Uploader() {\n  const { upload, pause, resume, abort, status, progress } = useMediaUpload({ mode: 'tus' })\n\n  return (\n    <div>\n      <input\n        type=\"file\"\n        onChange={(e) => {\n          const file = e.target.files?.[0]\n          if (file) upload(file, { filename: file.name, contentType: file.type })\n        }}\n      />\n      <progress value={progress} max={1} />\n      <span>{status}</span>\n    </div>\n  )\n}\n```\n\n- `mode`: `'tus'` (resumable, default) · `'direct'` (presigned S3 multipart) · `'proxy'`.\n- `pause()` / `resume()` — for `tus`, resume continues from the server offset; `direct`/`proxy`\n  restart.\n- `abort()` — cancels and terminates the TUS session server-side.\n- `direct`/`proxy` require a `key` in the upload `meta` (resolve it server-side in real apps).\n\n## `MediaUploader` (headless-friendly component)\n\n```tsx\nimport { MediaUploader } from '@adonis-agora/media-react'\n\n<MediaUploader mode=\"tus\" accept=\"image/*\" onUploaded={(r) => console.log(r)} />\n\n// Fully headless:\n<MediaUploader render={({ status, progress, selectFile }) => (/* your UI */)} />\n```\n\nThe default markup is a file input + progress bar, themed through **Agora design tokens**\n(`--agora-primary`, `--agora-primary-soft`, `--agora-ink`) via overridable `--agora-media-*` CSS\ncustom properties. Pass `unstyled` to drop the default stylesheet, or override any variable to\nretheme. No vendor branding.\n\n## `createMediaUploadClient` (framework-free)\n\n```ts\nimport { createMediaUploadClient } from '@adonis-agora/media-react/client'\n\nconst client = createMediaUploadClient({ baseUrl: 'https://api.example.com' })\nawait client.uploadTus(file, { filename: 'a.png', contentType: 'image/png' })\nawait client.uploadDirect(file, { filename: 'a.png', key: 'u/1/a.png' })\nawait client.uploadProxy(file, { filename: 'a.png', key: 'u/1/a.png' })\n```\n\nStatic `headers` and a fresh-per-request `getHeaders()` (for short-lived tokens) are merged into\nevery **app** request; presigned S3 `PUT`s deliberately receive neither, so the SigV4 signature\nstays intact.\n","readmeFilename":"","homepage":"https://davidecarvalho.github.io/agora/docs/media","bugs":{"url":"https://github.com/DavideCarvalho/adonis-agora-media/issues"}}