@medialane/ui 0.141.2 → 0.142.1

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.
Files changed (35) hide show
  1. package/dist/components/fast-mint/dropzone.cjs +120 -0
  2. package/dist/components/fast-mint/dropzone.cjs.map +1 -0
  3. package/dist/components/fast-mint/dropzone.d.cts +17 -0
  4. package/dist/components/fast-mint/dropzone.d.ts +17 -0
  5. package/dist/components/fast-mint/dropzone.js +96 -0
  6. package/dist/components/fast-mint/dropzone.js.map +1 -0
  7. package/dist/components/fast-mint/fast-mint.cjs +889 -0
  8. package/dist/components/fast-mint/fast-mint.cjs.map +1 -0
  9. package/dist/components/fast-mint/fast-mint.d.cts +10 -0
  10. package/dist/components/fast-mint/fast-mint.d.ts +10 -0
  11. package/dist/components/fast-mint/fast-mint.js +875 -0
  12. package/dist/components/fast-mint/fast-mint.js.map +1 -0
  13. package/dist/components/fast-mint/success-view.cjs +113 -0
  14. package/dist/components/fast-mint/success-view.cjs.map +1 -0
  15. package/dist/components/fast-mint/success-view.d.cts +17 -0
  16. package/dist/components/fast-mint/success-view.d.ts +17 -0
  17. package/dist/components/fast-mint/success-view.js +79 -0
  18. package/dist/components/fast-mint/success-view.js.map +1 -0
  19. package/dist/data/drop-create-schema.d.cts +2 -2
  20. package/dist/data/drop-create-schema.d.ts +2 -2
  21. package/dist/index.cjs +18 -0
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +7 -1
  24. package/dist/index.d.ts +7 -1
  25. package/dist/index.js +16 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/types-BEsgYSTA.d.cts +36 -0
  28. package/dist/types-BEsgYSTA.d.ts +36 -0
  29. package/dist/utils/ipfs-upload.cjs +87 -0
  30. package/dist/utils/ipfs-upload.cjs.map +1 -0
  31. package/dist/utils/ipfs-upload.d.cts +13 -0
  32. package/dist/utils/ipfs-upload.d.ts +13 -0
  33. package/dist/utils/ipfs-upload.js +60 -0
  34. package/dist/utils/ipfs-upload.js.map +1 -0
  35. package/package.json +5 -3
@@ -0,0 +1,13 @@
1
+ interface UploadedIpfsFile {
2
+ cid: string;
3
+ uri: string;
4
+ }
5
+ declare function uploadFileToIpfs(file: File, token: string | null, kind?: "image" | "document" | "media"): Promise<UploadedIpfsFile>;
6
+ declare function uploadJsonToIpfs(payload: unknown, token: string | null): Promise<string>;
7
+ declare function isUserRejection(err: unknown): boolean;
8
+ declare function uploadFailureToast(err: unknown): {
9
+ title: string;
10
+ description?: string;
11
+ };
12
+
13
+ export { type UploadedIpfsFile, isUserRejection, uploadFailureToast, uploadFileToIpfs, uploadJsonToIpfs };
@@ -0,0 +1,60 @@
1
+ function authHeaders(token) {
2
+ return token ? { Authorization: `Bearer ${token}` } : {};
3
+ }
4
+ async function uploadFileToIpfs(file, token, kind = "image") {
5
+ const signedRes = await fetch("/api/pinata/signed-url", {
6
+ method: "POST",
7
+ headers: { "Content-Type": "application/json", ...authHeaders(token) },
8
+ body: JSON.stringify({ kind })
9
+ });
10
+ const signed = await signedRes.json().catch(() => ({}));
11
+ if (!signedRes.ok || !signed.url) {
12
+ throw new Error(signed.error ?? "Failed to prepare the upload");
13
+ }
14
+ const formData = new FormData();
15
+ formData.append("file", file, file.name);
16
+ formData.append("network", "public");
17
+ formData.append("name", file.name);
18
+ const uploadRes = await fetch(signed.url, { method: "POST", body: formData });
19
+ const uploadJson = await uploadRes.json().catch(() => ({}));
20
+ const cid = uploadJson.data?.cid;
21
+ if (!uploadRes.ok || !cid) {
22
+ throw new Error("Upload to IPFS failed");
23
+ }
24
+ return { cid, uri: `ipfs://${cid}` };
25
+ }
26
+ async function uploadJsonToIpfs(payload, token) {
27
+ const res = await fetch("/api/pinata/json", {
28
+ method: "POST",
29
+ headers: { "Content-Type": "application/json", ...authHeaders(token) },
30
+ body: JSON.stringify(payload)
31
+ });
32
+ const data = await res.json().catch(() => ({}));
33
+ if (!res.ok || !data.uri) {
34
+ throw new Error(data.error ?? "Metadata upload failed");
35
+ }
36
+ return data.uri;
37
+ }
38
+ function isUserRejection(err) {
39
+ const msg = err instanceof Error ? err.message : String(err ?? "");
40
+ return /reject|denied|declin|abort|cancel|refus/i.test(msg);
41
+ }
42
+ function uploadFailureToast(err) {
43
+ if (isUserRejection(err)) {
44
+ return {
45
+ title: "Signature declined",
46
+ description: "Uploads need a one-time, free sign-in signature \u2014 it's not a transaction and costs nothing. Try again and approve the request in your wallet."
47
+ };
48
+ }
49
+ return {
50
+ title: "Upload failed",
51
+ description: err instanceof Error ? err.message : void 0
52
+ };
53
+ }
54
+ export {
55
+ isUserRejection,
56
+ uploadFailureToast,
57
+ uploadFileToIpfs,
58
+ uploadJsonToIpfs
59
+ };
60
+ //# sourceMappingURL=ipfs-upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/ipfs-upload.ts"],"sourcesContent":["export interface UploadedIpfsFile {\n cid: string;\n uri: string;\n}\n\nfunction authHeaders(token: string | null): Record<string, string> {\n return token ? { Authorization: `Bearer ${token}` } : {};\n}\n\nexport async function uploadFileToIpfs(\n file: File,\n token: string | null,\n kind: \"image\" | \"document\" | \"media\" = \"image\",\n): Promise<UploadedIpfsFile> {\n const signedRes = await fetch(\"/api/pinata/signed-url\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...authHeaders(token) },\n body: JSON.stringify({ kind }),\n });\n const signed = (await signedRes.json().catch(() => ({}))) as { url?: string; error?: string };\n if (!signedRes.ok || !signed.url) {\n throw new Error(signed.error ?? \"Failed to prepare the upload\");\n }\n\n const formData = new FormData();\n formData.append(\"file\", file, file.name);\n formData.append(\"network\", \"public\");\n formData.append(\"name\", file.name);\n\n const uploadRes = await fetch(signed.url, { method: \"POST\", body: formData });\n const uploadJson = (await uploadRes.json().catch(() => ({}))) as { data?: { cid?: string } };\n const cid = uploadJson.data?.cid;\n if (!uploadRes.ok || !cid) {\n throw new Error(\"Upload to IPFS failed\");\n }\n\n return { cid, uri: `ipfs://${cid}` };\n}\n\nexport async function uploadJsonToIpfs(payload: unknown, token: string | null): Promise<string> {\n const res = await fetch(\"/api/pinata/json\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...authHeaders(token) },\n body: JSON.stringify(payload),\n });\n const data = (await res.json().catch(() => ({}))) as { uri?: string; error?: string };\n\n if (!res.ok || !data.uri) {\n throw new Error(data.error ?? \"Metadata upload failed\");\n }\n\n return data.uri;\n}\n\nexport function isUserRejection(err: unknown): boolean {\n const msg = err instanceof Error ? err.message : String(err ?? \"\");\n return /reject|denied|declin|abort|cancel|refus/i.test(msg);\n}\n\nexport function uploadFailureToast(err: unknown): { title: string; description?: string } {\n if (isUserRejection(err)) {\n return {\n title: \"Signature declined\",\n description:\n \"Uploads need a one-time, free sign-in signature — it's not a transaction and costs nothing. Try again and approve the request in your wallet.\",\n };\n }\n return {\n title: \"Upload failed\",\n description: err instanceof Error ? err.message : undefined,\n };\n}\n"],"mappings":"AAKA,SAAS,YAAY,OAA8C;AACjE,SAAO,QAAQ,EAAE,eAAe,UAAU,KAAK,GAAG,IAAI,CAAC;AACzD;AAEA,eAAsB,iBACpB,MACA,OACA,OAAuC,SACZ;AAC3B,QAAM,YAAY,MAAM,MAAM,0BAA0B;AAAA,IACtD,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,oBAAoB,GAAG,YAAY,KAAK,EAAE;AAAA,IACrE,MAAM,KAAK,UAAU,EAAE,KAAK,CAAC;AAAA,EAC/B,CAAC;AACD,QAAM,SAAU,MAAM,UAAU,KAAK,EAAE,MAAM,OAAO,CAAC,EAAE;AACvD,MAAI,CAAC,UAAU,MAAM,CAAC,OAAO,KAAK;AAChC,UAAM,IAAI,MAAM,OAAO,SAAS,8BAA8B;AAAA,EAChE;AAEA,QAAM,WAAW,IAAI,SAAS;AAC9B,WAAS,OAAO,QAAQ,MAAM,KAAK,IAAI;AACvC,WAAS,OAAO,WAAW,QAAQ;AACnC,WAAS,OAAO,QAAQ,KAAK,IAAI;AAEjC,QAAM,YAAY,MAAM,MAAM,OAAO,KAAK,EAAE,QAAQ,QAAQ,MAAM,SAAS,CAAC;AAC5E,QAAM,aAAc,MAAM,UAAU,KAAK,EAAE,MAAM,OAAO,CAAC,EAAE;AAC3D,QAAM,MAAM,WAAW,MAAM;AAC7B,MAAI,CAAC,UAAU,MAAM,CAAC,KAAK;AACzB,UAAM,IAAI,MAAM,uBAAuB;AAAA,EACzC;AAEA,SAAO,EAAE,KAAK,KAAK,UAAU,GAAG,GAAG;AACrC;AAEA,eAAsB,iBAAiB,SAAkB,OAAuC;AAC9F,QAAM,MAAM,MAAM,MAAM,oBAAoB;AAAA,IAC1C,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,oBAAoB,GAAG,YAAY,KAAK,EAAE;AAAA,IACrE,MAAM,KAAK,UAAU,OAAO;AAAA,EAC9B,CAAC;AACD,QAAM,OAAQ,MAAM,IAAI,KAAK,EAAE,MAAM,OAAO,CAAC,EAAE;AAE/C,MAAI,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK;AACxB,UAAM,IAAI,MAAM,KAAK,SAAS,wBAAwB;AAAA,EACxD;AAEA,SAAO,KAAK;AACd;AAEO,SAAS,gBAAgB,KAAuB;AACrD,QAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,OAAO,EAAE;AACjE,SAAO,2CAA2C,KAAK,GAAG;AAC5D;AAEO,SAAS,mBAAmB,KAAuD;AACxF,MAAI,gBAAgB,GAAG,GAAG;AACxB,WAAO;AAAA,MACL,OAAO;AAAA,MACP,aACE;AAAA,IACJ;AAAA,EACF;AACA,SAAO;AAAA,IACL,OAAO;AAAA,IACP,aAAa,eAAe,QAAQ,IAAI,UAAU;AAAA,EACpD;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medialane/ui",
3
- "version": "0.141.2",
3
+ "version": "0.142.1",
4
4
  "description": "Shared UI components for Medialane apps",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -51,7 +51,7 @@
51
51
  "preview": "vite --config preview/vite.config.ts"
52
52
  },
53
53
  "peerDependencies": {
54
- "@medialane/sdk": ">=0.95.0",
54
+ "@medialane/sdk": ">=0.102.0",
55
55
  "@radix-ui/react-checkbox": ">=1.1.0",
56
56
  "@radix-ui/react-collapsible": ">=1.1.0",
57
57
  "@radix-ui/react-dialog": ">=1.1.0",
@@ -74,12 +74,13 @@
74
74
  "react-hook-form": ">=7.50.0",
75
75
  "recharts": ">=2.0.0",
76
76
  "sonner": ">=1.0.0",
77
+ "starknet": ">=8.0.0",
77
78
  "swr": ">=2.0.0",
78
79
  "tailwind-merge": ">=2.0.0",
79
80
  "zod": "^3.25.0"
80
81
  },
81
82
  "devDependencies": {
82
- "@medialane/sdk": "0.95.0",
83
+ "@medialane/sdk": "0.102.0",
83
84
  "@radix-ui/react-checkbox": "^1.3.8",
84
85
  "@radix-ui/react-collapsible": "^1.1.17",
85
86
  "@radix-ui/react-dialog": "^1.1.20",
@@ -107,6 +108,7 @@
107
108
  "react-hook-form": "^7.82.0",
108
109
  "recharts": "^3.8.1",
109
110
  "sonner": "^1.5.0",
111
+ "starknet": "^10.0.2",
110
112
  "swr": "^2.4.1",
111
113
  "tailwind-merge": "^2.0.0",
112
114
  "tailwindcss": "^3.0.0",