@medialane/ui 0.105.0 → 0.106.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.
Files changed (87) hide show
  1. package/dist/components/asset-lightbox.cjs +66 -0
  2. package/dist/components/asset-lightbox.cjs.map +1 -0
  3. package/dist/components/asset-lightbox.d.cts +11 -0
  4. package/dist/components/asset-lightbox.d.ts +11 -0
  5. package/dist/components/asset-lightbox.js +42 -0
  6. package/dist/components/asset-lightbox.js.map +1 -0
  7. package/dist/components/club-owner-actions.cjs +56 -0
  8. package/dist/components/club-owner-actions.cjs.map +1 -0
  9. package/dist/components/club-owner-actions.d.cts +11 -0
  10. package/dist/components/club-owner-actions.d.ts +11 -0
  11. package/dist/components/club-owner-actions.js +22 -0
  12. package/dist/components/club-owner-actions.js.map +1 -0
  13. package/dist/components/create-form-primitives.cjs +61 -0
  14. package/dist/components/create-form-primitives.cjs.map +1 -0
  15. package/dist/components/create-form-primitives.d.cts +16 -0
  16. package/dist/components/create-form-primitives.d.ts +16 -0
  17. package/dist/components/create-form-primitives.js +36 -0
  18. package/dist/components/create-form-primitives.js.map +1 -0
  19. package/dist/components/creation-record.cjs +86 -0
  20. package/dist/components/creation-record.cjs.map +1 -0
  21. package/dist/components/creation-record.d.cts +14 -0
  22. package/dist/components/creation-record.d.ts +14 -0
  23. package/dist/components/creation-record.js +52 -0
  24. package/dist/components/creation-record.js.map +1 -0
  25. package/dist/components/dialog.d.cts +9 -9
  26. package/dist/components/dialog.d.ts +9 -9
  27. package/dist/components/ip-type-fields.cjs +307 -0
  28. package/dist/components/ip-type-fields.cjs.map +1 -0
  29. package/dist/components/ip-type-fields.d.cts +17 -0
  30. package/dist/components/ip-type-fields.d.ts +17 -0
  31. package/dist/components/ip-type-fields.js +293 -0
  32. package/dist/components/ip-type-fields.js.map +1 -0
  33. package/dist/components/json-ld.cjs +39 -0
  34. package/dist/components/json-ld.cjs.map +1 -0
  35. package/dist/components/json-ld.d.cts +8 -0
  36. package/dist/components/json-ld.d.ts +8 -0
  37. package/dist/components/json-ld.js +15 -0
  38. package/dist/components/json-ld.js.map +1 -0
  39. package/dist/components/nav-theme-toggle.cjs +66 -0
  40. package/dist/components/nav-theme-toggle.cjs.map +1 -0
  41. package/dist/components/nav-theme-toggle.d.cts +9 -0
  42. package/dist/components/nav-theme-toggle.d.ts +9 -0
  43. package/dist/components/nav-theme-toggle.js +42 -0
  44. package/dist/components/nav-theme-toggle.js.map +1 -0
  45. package/dist/components/order-sort-control.cjs +58 -0
  46. package/dist/components/order-sort-control.cjs.map +1 -0
  47. package/dist/components/order-sort-control.d.cts +13 -0
  48. package/dist/components/order-sort-control.d.ts +13 -0
  49. package/dist/components/order-sort-control.js +39 -0
  50. package/dist/components/order-sort-control.js.map +1 -0
  51. package/dist/components/price-history-chart.cjs +130 -0
  52. package/dist/components/price-history-chart.cjs.map +1 -0
  53. package/dist/components/price-history-chart.d.cts +9 -0
  54. package/dist/components/price-history-chart.d.ts +9 -0
  55. package/dist/components/price-history-chart.js +114 -0
  56. package/dist/components/price-history-chart.js.map +1 -0
  57. package/dist/components/sheet.cjs +160 -0
  58. package/dist/components/sheet.cjs.map +1 -0
  59. package/dist/components/sheet.d.cts +30 -0
  60. package/dist/components/sheet.d.ts +30 -0
  61. package/dist/components/sheet.js +117 -0
  62. package/dist/components/sheet.js.map +1 -0
  63. package/dist/components/textarea.cjs +57 -0
  64. package/dist/components/textarea.cjs.map +1 -0
  65. package/dist/components/textarea.d.cts +6 -0
  66. package/dist/components/textarea.d.ts +6 -0
  67. package/dist/components/textarea.js +23 -0
  68. package/dist/components/textarea.js.map +1 -0
  69. package/dist/index.cjs +67 -0
  70. package/dist/index.cjs.map +1 -1
  71. package/dist/index.d.cts +14 -1
  72. package/dist/index.d.ts +14 -1
  73. package/dist/index.js +56 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/utils/format-activity.cjs +143 -0
  76. package/dist/utils/format-activity.cjs.map +1 -0
  77. package/dist/utils/format-activity.d.cts +14 -0
  78. package/dist/utils/format-activity.d.ts +14 -0
  79. package/dist/utils/format-activity.js +116 -0
  80. package/dist/utils/format-activity.js.map +1 -0
  81. package/dist/utils/proxy-body.cjs +60 -0
  82. package/dist/utils/proxy-body.cjs.map +1 -0
  83. package/dist/utils/proxy-body.d.cts +22 -0
  84. package/dist/utils/proxy-body.d.ts +22 -0
  85. package/dist/utils/proxy-body.js +36 -0
  86. package/dist/utils/proxy-body.js.map +1 -0
  87. package/package.json +1 -1
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var asset_lightbox_exports = {};
21
+ __export(asset_lightbox_exports, {
22
+ AssetLightbox: () => AssetLightbox
23
+ });
24
+ module.exports = __toCommonJS(asset_lightbox_exports);
25
+ var import_jsx_runtime = require("react/jsx-runtime");
26
+ var import_lucide_react = require("lucide-react");
27
+ var import_dialog = require("./dialog.js");
28
+ function AssetLightbox({ open, onOpenChange, image, alt }) {
29
+ if (!image) return null;
30
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dialog.Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
31
+ import_dialog.DialogContent,
32
+ {
33
+ hideClose: true,
34
+ className: "max-w-[96vw] w-fit max-h-none overflow-visible border-0 bg-transparent p-0 shadow-none",
35
+ children: [
36
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dialog.DialogTitle, { className: "sr-only", children: alt }),
37
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative", children: [
38
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
39
+ "img",
40
+ {
41
+ src: image,
42
+ alt,
43
+ crossOrigin: "anonymous",
44
+ style: { maxHeight: "92svh", maxWidth: "96vw" },
45
+ className: "block h-auto w-auto object-contain rounded-2xl"
46
+ }
47
+ ),
48
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
49
+ "button",
50
+ {
51
+ onClick: () => onOpenChange(false),
52
+ "aria-label": "Close",
53
+ className: "absolute top-3 right-3 h-8 w-8 rounded-full bg-black/55 backdrop-blur-sm border border-white/10 flex items-center justify-center text-white/75 hover:text-white hover:bg-black/80 transition-all",
54
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.X, { className: "h-4 w-4" })
55
+ }
56
+ )
57
+ ] })
58
+ ]
59
+ }
60
+ ) });
61
+ }
62
+ // Annotate the CommonJS export names for ESM import in node:
63
+ 0 && (module.exports = {
64
+ AssetLightbox
65
+ });
66
+ //# sourceMappingURL=asset-lightbox.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/asset-lightbox.tsx"],"sourcesContent":["\"use client\";\n\nimport { X } from \"lucide-react\";\nimport { Dialog, DialogContent, DialogTitle } from \"./dialog.js\";\n\nexport interface AssetLightboxProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n image: string | null;\n alt: string;\n}\n\nexport function AssetLightbox({ open, onOpenChange, image, alt }: AssetLightboxProps) {\n if (!image) return null;\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n hideClose\n className=\"max-w-[96vw] w-fit max-h-none overflow-visible border-0 bg-transparent p-0 shadow-none\"\n >\n <DialogTitle className=\"sr-only\">{alt}</DialogTitle>\n <div className=\"relative\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image}\n alt={alt}\n crossOrigin=\"anonymous\"\n style={{ maxHeight: \"92svh\", maxWidth: \"96vw\" }}\n className=\"block h-auto w-auto object-contain rounded-2xl\"\n />\n <button\n onClick={() => onOpenChange(false)}\n aria-label=\"Close\"\n className=\"absolute top-3 right-3 h-8 w-8 rounded-full bg-black/55 backdrop-blur-sm border border-white/10 flex items-center justify-center text-white/75 hover:text-white hover:bg-black/80 transition-all\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBQ;AAnBR,0BAAkB;AAClB,oBAAmD;AAS5C,SAAS,cAAc,EAAE,MAAM,cAAc,OAAO,IAAI,GAAuB;AACpF,MAAI,CAAC,MAAO,QAAO;AAEnB,SACE,4CAAC,wBAAO,MAAY,cAClB;AAAA,IAAC;AAAA;AAAA,MACC,WAAS;AAAA,MACT,WAAU;AAAA,MAEV;AAAA,oDAAC,6BAAY,WAAU,WAAW,eAAI;AAAA,QACtC,6CAAC,SAAI,WAAU,YAEb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL;AAAA,cACA,aAAY;AAAA,cACZ,OAAO,EAAE,WAAW,SAAS,UAAU,OAAO;AAAA,cAC9C,WAAU;AAAA;AAAA,UACZ;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM,aAAa,KAAK;AAAA,cACjC,cAAW;AAAA,cACX,WAAU;AAAA,cAEV,sDAAC,yBAAE,WAAU,WAAU;AAAA;AAAA,UACzB;AAAA,WACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;","names":[]}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface AssetLightboxProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ image: string | null;
7
+ alt: string;
8
+ }
9
+ declare function AssetLightbox({ open, onOpenChange, image, alt }: AssetLightboxProps): react_jsx_runtime.JSX.Element | null;
10
+
11
+ export { AssetLightbox, type AssetLightboxProps };
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface AssetLightboxProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ image: string | null;
7
+ alt: string;
8
+ }
9
+ declare function AssetLightbox({ open, onOpenChange, image, alt }: AssetLightboxProps): react_jsx_runtime.JSX.Element | null;
10
+
11
+ export { AssetLightbox, type AssetLightboxProps };
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { X } from "lucide-react";
4
+ import { Dialog, DialogContent, DialogTitle } from "./dialog.js";
5
+ function AssetLightbox({ open, onOpenChange, image, alt }) {
6
+ if (!image) return null;
7
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(
8
+ DialogContent,
9
+ {
10
+ hideClose: true,
11
+ className: "max-w-[96vw] w-fit max-h-none overflow-visible border-0 bg-transparent p-0 shadow-none",
12
+ children: [
13
+ /* @__PURE__ */ jsx(DialogTitle, { className: "sr-only", children: alt }),
14
+ /* @__PURE__ */ jsxs("div", { className: "relative", children: [
15
+ /* @__PURE__ */ jsx(
16
+ "img",
17
+ {
18
+ src: image,
19
+ alt,
20
+ crossOrigin: "anonymous",
21
+ style: { maxHeight: "92svh", maxWidth: "96vw" },
22
+ className: "block h-auto w-auto object-contain rounded-2xl"
23
+ }
24
+ ),
25
+ /* @__PURE__ */ jsx(
26
+ "button",
27
+ {
28
+ onClick: () => onOpenChange(false),
29
+ "aria-label": "Close",
30
+ className: "absolute top-3 right-3 h-8 w-8 rounded-full bg-black/55 backdrop-blur-sm border border-white/10 flex items-center justify-center text-white/75 hover:text-white hover:bg-black/80 transition-all",
31
+ children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
32
+ }
33
+ )
34
+ ] })
35
+ ]
36
+ }
37
+ ) });
38
+ }
39
+ export {
40
+ AssetLightbox
41
+ };
42
+ //# sourceMappingURL=asset-lightbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/asset-lightbox.tsx"],"sourcesContent":["\"use client\";\n\nimport { X } from \"lucide-react\";\nimport { Dialog, DialogContent, DialogTitle } from \"./dialog.js\";\n\nexport interface AssetLightboxProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n image: string | null;\n alt: string;\n}\n\nexport function AssetLightbox({ open, onOpenChange, image, alt }: AssetLightboxProps) {\n if (!image) return null;\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n hideClose\n className=\"max-w-[96vw] w-fit max-h-none overflow-visible border-0 bg-transparent p-0 shadow-none\"\n >\n <DialogTitle className=\"sr-only\">{alt}</DialogTitle>\n <div className=\"relative\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image}\n alt={alt}\n crossOrigin=\"anonymous\"\n style={{ maxHeight: \"92svh\", maxWidth: \"96vw\" }}\n className=\"block h-auto w-auto object-contain rounded-2xl\"\n />\n <button\n onClick={() => onOpenChange(false)}\n aria-label=\"Close\"\n className=\"absolute top-3 right-3 h-8 w-8 rounded-full bg-black/55 backdrop-blur-sm border border-white/10 flex items-center justify-center text-white/75 hover:text-white hover:bg-black/80 transition-all\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":";AAqBQ,cACA,YADA;AAnBR,SAAS,SAAS;AAClB,SAAS,QAAQ,eAAe,mBAAmB;AAS5C,SAAS,cAAc,EAAE,MAAM,cAAc,OAAO,IAAI,GAAuB;AACpF,MAAI,CAAC,MAAO,QAAO;AAEnB,SACE,oBAAC,UAAO,MAAY,cAClB;AAAA,IAAC;AAAA;AAAA,MACC,WAAS;AAAA,MACT,WAAU;AAAA,MAEV;AAAA,4BAAC,eAAY,WAAU,WAAW,eAAI;AAAA,QACtC,qBAAC,SAAI,WAAU,YAEb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL;AAAA,cACA,aAAY;AAAA,cACZ,OAAO,EAAE,WAAW,SAAS,UAAU,OAAO;AAAA,cAC9C,WAAU;AAAA;AAAA,UACZ;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM,aAAa,KAAK;AAAA,cACjC,cAAW;AAAA,cACX,WAAU;AAAA,cAEV,8BAAC,KAAE,WAAU,WAAU;AAAA;AAAA,UACzB;AAAA,WACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;","names":[]}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var club_owner_actions_exports = {};
31
+ __export(club_owner_actions_exports, {
32
+ ClubOwnerActions: () => ClubOwnerActions
33
+ });
34
+ module.exports = __toCommonJS(club_owner_actions_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_link = __toESM(require("next/link"), 1);
37
+ var import_lucide_react = require("lucide-react");
38
+ function ClubOwnerActions({ contractAddress, isOwner }) {
39
+ if (!isOwner) return null;
40
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "btn-border-animated p-[1px] rounded-xl", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
41
+ import_link.default,
42
+ {
43
+ href: `/launchpad/club/${contractAddress}/mint`,
44
+ className: "flex items-center gap-2 h-10 px-5 rounded-[11px] text-sm font-semibold text-white bg-transparent hover:brightness-110 active:scale-[0.98] transition",
45
+ children: [
46
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Users, { className: "h-4 w-4" }),
47
+ "Create membership"
48
+ ]
49
+ }
50
+ ) });
51
+ }
52
+ // Annotate the CommonJS export names for ESM import in node:
53
+ 0 && (module.exports = {
54
+ ClubOwnerActions
55
+ });
56
+ //# sourceMappingURL=club-owner-actions.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/club-owner-actions.tsx"],"sourcesContent":["\"use client\";\n\n// The ip-club service action on the collection page — one featured button,\n// visible only to the collection owner, in the right owner cluster (the same\n// slot erc1155 collections use for \"Mint editions\"). Links to the dedicated\n// mint page (create a membership tier + mint its supply, same shape as the\n// IP Tickets mint page).\n\nimport Link from \"next/link\";\nimport { Users } from \"lucide-react\";\n\nexport interface ClubOwnerActionsProps {\n contractAddress: string;\n /** Caller computes this from its own wallet session — the wallet model\n * differs per app, so this component stays purely presentational. */\n isOwner: boolean;\n}\n\nexport function ClubOwnerActions({ contractAddress, isOwner }: ClubOwnerActionsProps) {\n if (!isOwner) return null;\n\n return (\n <div className=\"btn-border-animated p-[1px] rounded-xl\">\n <Link\n href={`/launchpad/club/${contractAddress}/mint`}\n className=\"flex items-center gap-2 h-10 px-5 rounded-[11px] text-sm font-semibold text-white bg-transparent hover:brightness-110 active:scale-[0.98] transition\"\n >\n <Users className=\"h-4 w-4\" />\n Create membership\n </Link>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBM;AAfN,kBAAiB;AACjB,0BAAsB;AASf,SAAS,iBAAiB,EAAE,iBAAiB,QAAQ,GAA0B;AACpF,MAAI,CAAC,QAAS,QAAO;AAErB,SACE,4CAAC,SAAI,WAAU,0CACb;AAAA,IAAC,YAAAA;AAAA,IAAA;AAAA,MACC,MAAM,mBAAmB,eAAe;AAAA,MACxC,WAAU;AAAA,MAEV;AAAA,oDAAC,6BAAM,WAAU,WAAU;AAAA,QAAE;AAAA;AAAA;AAAA,EAE/B,GACF;AAEJ;","names":["Link"]}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface ClubOwnerActionsProps {
4
+ contractAddress: string;
5
+ /** Caller computes this from its own wallet session — the wallet model
6
+ * differs per app, so this component stays purely presentational. */
7
+ isOwner: boolean;
8
+ }
9
+ declare function ClubOwnerActions({ contractAddress, isOwner }: ClubOwnerActionsProps): react_jsx_runtime.JSX.Element | null;
10
+
11
+ export { ClubOwnerActions, type ClubOwnerActionsProps };
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface ClubOwnerActionsProps {
4
+ contractAddress: string;
5
+ /** Caller computes this from its own wallet session — the wallet model
6
+ * differs per app, so this component stays purely presentational. */
7
+ isOwner: boolean;
8
+ }
9
+ declare function ClubOwnerActions({ contractAddress, isOwner }: ClubOwnerActionsProps): react_jsx_runtime.JSX.Element | null;
10
+
11
+ export { ClubOwnerActions, type ClubOwnerActionsProps };
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import Link from "next/link";
4
+ import { Users } from "lucide-react";
5
+ function ClubOwnerActions({ contractAddress, isOwner }) {
6
+ if (!isOwner) return null;
7
+ return /* @__PURE__ */ jsx("div", { className: "btn-border-animated p-[1px] rounded-xl", children: /* @__PURE__ */ jsxs(
8
+ Link,
9
+ {
10
+ href: `/launchpad/club/${contractAddress}/mint`,
11
+ className: "flex items-center gap-2 h-10 px-5 rounded-[11px] text-sm font-semibold text-white bg-transparent hover:brightness-110 active:scale-[0.98] transition",
12
+ children: [
13
+ /* @__PURE__ */ jsx(Users, { className: "h-4 w-4" }),
14
+ "Create membership"
15
+ ]
16
+ }
17
+ ) });
18
+ }
19
+ export {
20
+ ClubOwnerActions
21
+ };
22
+ //# sourceMappingURL=club-owner-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/club-owner-actions.tsx"],"sourcesContent":["\"use client\";\n\n// The ip-club service action on the collection page — one featured button,\n// visible only to the collection owner, in the right owner cluster (the same\n// slot erc1155 collections use for \"Mint editions\"). Links to the dedicated\n// mint page (create a membership tier + mint its supply, same shape as the\n// IP Tickets mint page).\n\nimport Link from \"next/link\";\nimport { Users } from \"lucide-react\";\n\nexport interface ClubOwnerActionsProps {\n contractAddress: string;\n /** Caller computes this from its own wallet session — the wallet model\n * differs per app, so this component stays purely presentational. */\n isOwner: boolean;\n}\n\nexport function ClubOwnerActions({ contractAddress, isOwner }: ClubOwnerActionsProps) {\n if (!isOwner) return null;\n\n return (\n <div className=\"btn-border-animated p-[1px] rounded-xl\">\n <Link\n href={`/launchpad/club/${contractAddress}/mint`}\n className=\"flex items-center gap-2 h-10 px-5 rounded-[11px] text-sm font-semibold text-white bg-transparent hover:brightness-110 active:scale-[0.98] transition\"\n >\n <Users className=\"h-4 w-4\" />\n Create membership\n </Link>\n </div>\n );\n}\n"],"mappings":";AAuBM,SAIE,KAJF;AAfN,OAAO,UAAU;AACjB,SAAS,aAAa;AASf,SAAS,iBAAiB,EAAE,iBAAiB,QAAQ,GAA0B;AACpF,MAAI,CAAC,QAAS,QAAO;AAErB,SACE,oBAAC,SAAI,WAAU,0CACb;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,mBAAmB,eAAe;AAAA,MACxC,WAAU;AAAA,MAEV;AAAA,4BAAC,SAAM,WAAU,WAAU;AAAA,QAAE;AAAA;AAAA;AAAA,EAE/B,GACF;AAEJ;","names":[]}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var create_form_primitives_exports = {};
20
+ __export(create_form_primitives_exports, {
21
+ Section: () => Section,
22
+ ToggleGroup: () => ToggleGroup
23
+ });
24
+ module.exports = __toCommonJS(create_form_primitives_exports);
25
+ var import_jsx_runtime = require("react/jsx-runtime");
26
+ var import_cn = require("../utils/cn.js");
27
+ function ToggleGroup({
28
+ value,
29
+ options,
30
+ onChange
31
+ }) {
32
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex rounded-lg border border-border overflow-hidden w-full", children: options.map((opt, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
33
+ "button",
34
+ {
35
+ type: "button",
36
+ onClick: () => onChange(opt),
37
+ className: (0, import_cn.cn)(
38
+ "flex-1 px-3 py-2 text-sm transition-colors",
39
+ i > 0 && "border-l border-border",
40
+ value === opt ? "bg-primary text-primary-foreground font-medium" : "bg-background hover:bg-muted text-muted-foreground"
41
+ ),
42
+ children: opt
43
+ },
44
+ opt
45
+ )) });
46
+ }
47
+ function Section({ title, icon, children }) {
48
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-xl border border-border bg-card p-5 space-y-4", children: [
49
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2 text-sm font-semibold", children: [
50
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-primary", children: icon }),
51
+ title
52
+ ] }),
53
+ children
54
+ ] });
55
+ }
56
+ // Annotate the CommonJS export names for ESM import in node:
57
+ 0 && (module.exports = {
58
+ Section,
59
+ ToggleGroup
60
+ });
61
+ //# sourceMappingURL=create-form-primitives.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/create-form-primitives.tsx"],"sourcesContent":["import { cn } from \"../utils/cn.js\";\n\n/** Segmented two/three-option toggle used across the create flows. */\nexport function ToggleGroup({\n value, options, onChange,\n}: { value: string; options: readonly string[]; onChange: (v: string) => void }) {\n return (\n <div className=\"flex rounded-lg border border-border overflow-hidden w-full\">\n {options.map((opt, i) => (\n <button\n key={opt}\n type=\"button\"\n onClick={() => onChange(opt)}\n className={cn(\n \"flex-1 px-3 py-2 text-sm transition-colors\",\n i > 0 && \"border-l border-border\",\n value === opt\n ? \"bg-primary text-primary-foreground font-medium\"\n : \"bg-background hover:bg-muted text-muted-foreground\",\n )}\n >\n {opt}\n </button>\n ))}\n </div>\n );\n}\n\n/** Titled card section wrapper for the create forms. */\nexport function Section({ title, icon, children }: {\n title: string; icon: React.ReactNode; children: React.ReactNode;\n}) {\n return (\n <div className=\"rounded-xl border border-border bg-card p-5 space-y-4\">\n <div className=\"flex items-center gap-2 text-sm font-semibold\">\n <span className=\"text-primary\">{icon}</span>\n {title}\n </div>\n {children}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASQ;AATR,gBAAmB;AAGZ,SAAS,YAAY;AAAA,EAC1B;AAAA,EAAO;AAAA,EAAS;AAClB,GAAiF;AAC/E,SACE,4CAAC,SAAI,WAAU,+DACZ,kBAAQ,IAAI,CAAC,KAAK,MACjB;AAAA,IAAC;AAAA;AAAA,MAEC,MAAK;AAAA,MACL,SAAS,MAAM,SAAS,GAAG;AAAA,MAC3B,eAAW;AAAA,QACT;AAAA,QACA,IAAI,KAAK;AAAA,QACT,UAAU,MACN,mDACA;AAAA,MACN;AAAA,MAEC;AAAA;AAAA,IAXI;AAAA,EAYP,CACD,GACH;AAEJ;AAGO,SAAS,QAAQ,EAAE,OAAO,MAAM,SAAS,GAE7C;AACD,SACE,6CAAC,SAAI,WAAU,yDACb;AAAA,iDAAC,SAAI,WAAU,iDACb;AAAA,kDAAC,UAAK,WAAU,gBAAgB,gBAAK;AAAA,MACpC;AAAA,OACH;AAAA,IACC;AAAA,KACH;AAEJ;","names":[]}
@@ -0,0 +1,16 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ /** Segmented two/three-option toggle used across the create flows. */
4
+ declare function ToggleGroup({ value, options, onChange, }: {
5
+ value: string;
6
+ options: readonly string[];
7
+ onChange: (v: string) => void;
8
+ }): react_jsx_runtime.JSX.Element;
9
+ /** Titled card section wrapper for the create forms. */
10
+ declare function Section({ title, icon, children }: {
11
+ title: string;
12
+ icon: React.ReactNode;
13
+ children: React.ReactNode;
14
+ }): react_jsx_runtime.JSX.Element;
15
+
16
+ export { Section, ToggleGroup };
@@ -0,0 +1,16 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ /** Segmented two/three-option toggle used across the create flows. */
4
+ declare function ToggleGroup({ value, options, onChange, }: {
5
+ value: string;
6
+ options: readonly string[];
7
+ onChange: (v: string) => void;
8
+ }): react_jsx_runtime.JSX.Element;
9
+ /** Titled card section wrapper for the create forms. */
10
+ declare function Section({ title, icon, children }: {
11
+ title: string;
12
+ icon: React.ReactNode;
13
+ children: React.ReactNode;
14
+ }): react_jsx_runtime.JSX.Element;
15
+
16
+ export { Section, ToggleGroup };
@@ -0,0 +1,36 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../utils/cn.js";
3
+ function ToggleGroup({
4
+ value,
5
+ options,
6
+ onChange
7
+ }) {
8
+ return /* @__PURE__ */ jsx("div", { className: "flex rounded-lg border border-border overflow-hidden w-full", children: options.map((opt, i) => /* @__PURE__ */ jsx(
9
+ "button",
10
+ {
11
+ type: "button",
12
+ onClick: () => onChange(opt),
13
+ className: cn(
14
+ "flex-1 px-3 py-2 text-sm transition-colors",
15
+ i > 0 && "border-l border-border",
16
+ value === opt ? "bg-primary text-primary-foreground font-medium" : "bg-background hover:bg-muted text-muted-foreground"
17
+ ),
18
+ children: opt
19
+ },
20
+ opt
21
+ )) });
22
+ }
23
+ function Section({ title, icon, children }) {
24
+ return /* @__PURE__ */ jsxs("div", { className: "rounded-xl border border-border bg-card p-5 space-y-4", children: [
25
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm font-semibold", children: [
26
+ /* @__PURE__ */ jsx("span", { className: "text-primary", children: icon }),
27
+ title
28
+ ] }),
29
+ children
30
+ ] });
31
+ }
32
+ export {
33
+ Section,
34
+ ToggleGroup
35
+ };
36
+ //# sourceMappingURL=create-form-primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/create-form-primitives.tsx"],"sourcesContent":["import { cn } from \"../utils/cn.js\";\n\n/** Segmented two/three-option toggle used across the create flows. */\nexport function ToggleGroup({\n value, options, onChange,\n}: { value: string; options: readonly string[]; onChange: (v: string) => void }) {\n return (\n <div className=\"flex rounded-lg border border-border overflow-hidden w-full\">\n {options.map((opt, i) => (\n <button\n key={opt}\n type=\"button\"\n onClick={() => onChange(opt)}\n className={cn(\n \"flex-1 px-3 py-2 text-sm transition-colors\",\n i > 0 && \"border-l border-border\",\n value === opt\n ? \"bg-primary text-primary-foreground font-medium\"\n : \"bg-background hover:bg-muted text-muted-foreground\",\n )}\n >\n {opt}\n </button>\n ))}\n </div>\n );\n}\n\n/** Titled card section wrapper for the create forms. */\nexport function Section({ title, icon, children }: {\n title: string; icon: React.ReactNode; children: React.ReactNode;\n}) {\n return (\n <div className=\"rounded-xl border border-border bg-card p-5 space-y-4\">\n <div className=\"flex items-center gap-2 text-sm font-semibold\">\n <span className=\"text-primary\">{icon}</span>\n {title}\n </div>\n {children}\n </div>\n );\n}\n"],"mappings":"AASQ,cAyBF,YAzBE;AATR,SAAS,UAAU;AAGZ,SAAS,YAAY;AAAA,EAC1B;AAAA,EAAO;AAAA,EAAS;AAClB,GAAiF;AAC/E,SACE,oBAAC,SAAI,WAAU,+DACZ,kBAAQ,IAAI,CAAC,KAAK,MACjB;AAAA,IAAC;AAAA;AAAA,MAEC,MAAK;AAAA,MACL,SAAS,MAAM,SAAS,GAAG;AAAA,MAC3B,WAAW;AAAA,QACT;AAAA,QACA,IAAI,KAAK;AAAA,QACT,UAAU,MACN,mDACA;AAAA,MACN;AAAA,MAEC;AAAA;AAAA,IAXI;AAAA,EAYP,CACD,GACH;AAEJ;AAGO,SAAS,QAAQ,EAAE,OAAO,MAAM,SAAS,GAE7C;AACD,SACE,qBAAC,SAAI,WAAU,yDACb;AAAA,yBAAC,SAAI,WAAU,iDACb;AAAA,0BAAC,UAAK,WAAU,gBAAgB,gBAAK;AAAA,MACpC;AAAA,OACH;AAAA,IACC;AAAA,KACH;AAEJ;","names":[]}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var creation_record_exports = {};
31
+ __export(creation_record_exports, {
32
+ CreationRecord: () => CreationRecord
33
+ });
34
+ module.exports = __toCommonJS(creation_record_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_lucide_react = require("lucide-react");
37
+ var import_link = __toESM(require("next/link"), 1);
38
+ var import_sdk = require("@medialane/sdk");
39
+ const EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || "https://voyager.online";
40
+ function CreationRecord({ originalCreator, registeredAt }) {
41
+ const creator = originalCreator ? (0, import_sdk.normalizeAddress)("STARKNET", originalCreator) : "";
42
+ const date = new Date(registeredAt * 1e3);
43
+ const formatted = date.toLocaleDateString(void 0, {
44
+ year: "numeric",
45
+ month: "long",
46
+ day: "numeric"
47
+ });
48
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-lg bg-amber-500/5 p-4", children: [
49
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2 mb-3", children: [
50
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Award, { className: "h-4 w-4 text-amber-500" }),
51
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm font-semibold text-amber-500", children: "Creation Record" })
52
+ ] }),
53
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-xs text-muted-foreground mb-3", children: "Immutable on-chain authorship record set at mint and stored permanently for legal evidence of creation (Berne Convention)." }),
54
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("dl", { className: "space-y-2 text-sm", children: [
55
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between", children: [
56
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dt", { className: "text-muted-foreground", children: "Original creator" }),
57
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dd", { className: "tabular-nums", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_link.default, { href: `/creator/${creator}`, className: "hover:underline", children: [
58
+ creator.slice(0, 6),
59
+ "\u2026",
60
+ creator.slice(-4)
61
+ ] }) })
62
+ ] }),
63
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between", children: [
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dt", { className: "text-muted-foreground", children: "Registered at" }),
65
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dd", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
66
+ "a",
67
+ {
68
+ href: `${EXPLORER_URL}/contract/${creator}`,
69
+ target: "_blank",
70
+ rel: "noreferrer",
71
+ className: "inline-flex items-center gap-1 hover:underline",
72
+ children: [
73
+ formatted,
74
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ExternalLink, { className: "h-3 w-3" })
75
+ ]
76
+ }
77
+ ) })
78
+ ] })
79
+ ] })
80
+ ] });
81
+ }
82
+ // Annotate the CommonJS export names for ESM import in node:
83
+ 0 && (module.exports = {
84
+ CreationRecord
85
+ });
86
+ //# sourceMappingURL=creation-record.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/creation-record.tsx"],"sourcesContent":["\"use client\";\n\nimport { Award, ExternalLink } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { normalizeAddress } from \"@medialane/sdk\";\n\nconst EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || \"https://voyager.online\";\n\nexport interface CreationRecordProps {\n originalCreator: string;\n registeredAt: number; // unix seconds\n}\n\n/**\n * Berne Convention authorship record surfaced from IPNft.get_full_token_data.\n * Both fields are immutable on-chain — original_creator is set at mint time\n * and never changes regardless of subsequent ownership transfers.\n */\nexport function CreationRecord({ originalCreator, registeredAt }: CreationRecordProps) {\n const creator = originalCreator ? normalizeAddress(\"STARKNET\", originalCreator) : \"\";\n const date = new Date(registeredAt * 1000);\n const formatted = date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n\n return (\n <div className=\"rounded-lg bg-amber-500/5 p-4\">\n <div className=\"flex items-center gap-2 mb-3\">\n <Award className=\"h-4 w-4 text-amber-500\" />\n <p className=\"text-sm font-semibold text-amber-500\">Creation Record</p>\n </div>\n <p className=\"text-xs text-muted-foreground mb-3\">\n Immutable on-chain authorship record set at mint and stored permanently\n for legal evidence of creation (Berne Convention).\n </p>\n <dl className=\"space-y-2 text-sm\">\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Original creator</dt>\n <dd className=\"tabular-nums\">\n <Link href={`/creator/${creator}`} className=\"hover:underline\">\n {creator.slice(0, 6)}…{creator.slice(-4)}\n </Link>\n </dd>\n </div>\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Registered at</dt>\n <dd>\n <a\n href={`${EXPLORER_URL}/contract/${creator}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-1 hover:underline\"\n >\n {formatted}\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n </dd>\n </div>\n </dl>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BM;AA3BN,0BAAoC;AACpC,kBAAiB;AACjB,iBAAiC;AAEjC,MAAM,eAAe,QAAQ,IAAI,4BAA4B;AAYtD,SAAS,eAAe,EAAE,iBAAiB,aAAa,GAAwB;AACrF,QAAM,UAAU,sBAAkB,6BAAiB,YAAY,eAAe,IAAI;AAClF,QAAM,OAAO,IAAI,KAAK,eAAe,GAAI;AACzC,QAAM,YAAY,KAAK,mBAAmB,QAAW;AAAA,IACnD,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACP,CAAC;AAED,SACE,6CAAC,SAAI,WAAU,iCACb;AAAA,iDAAC,SAAI,WAAU,gCACb;AAAA,kDAAC,6BAAM,WAAU,0BAAyB;AAAA,MAC1C,4CAAC,OAAE,WAAU,wCAAuC,6BAAe;AAAA,OACrE;AAAA,IACA,4CAAC,OAAE,WAAU,sCAAqC,wIAGlD;AAAA,IACA,6CAAC,QAAG,WAAU,qBACZ;AAAA,mDAAC,SAAI,WAAU,qCACb;AAAA,oDAAC,QAAG,WAAU,yBAAwB,8BAAgB;AAAA,QACtD,4CAAC,QAAG,WAAU,gBACZ,uDAAC,YAAAA,SAAA,EAAK,MAAM,YAAY,OAAO,IAAI,WAAU,mBAC1C;AAAA,kBAAQ,MAAM,GAAG,CAAC;AAAA,UAAE;AAAA,UAAE,QAAQ,MAAM,EAAE;AAAA,WACzC,GACF;AAAA,SACF;AAAA,MACA,6CAAC,SAAI,WAAU,qCACb;AAAA,oDAAC,QAAG,WAAU,yBAAwB,2BAAa;AAAA,QACnD,4CAAC,QACC;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,GAAG,YAAY,aAAa,OAAO;AAAA,YACzC,QAAO;AAAA,YACP,KAAI;AAAA,YACJ,WAAU;AAAA,YAET;AAAA;AAAA,cACD,4CAAC,oCAAa,WAAU,WAAU;AAAA;AAAA;AAAA,QACpC,GACF;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":["Link"]}
@@ -0,0 +1,14 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface CreationRecordProps {
4
+ originalCreator: string;
5
+ registeredAt: number;
6
+ }
7
+ /**
8
+ * Berne Convention authorship record surfaced from IPNft.get_full_token_data.
9
+ * Both fields are immutable on-chain — original_creator is set at mint time
10
+ * and never changes regardless of subsequent ownership transfers.
11
+ */
12
+ declare function CreationRecord({ originalCreator, registeredAt }: CreationRecordProps): react_jsx_runtime.JSX.Element;
13
+
14
+ export { CreationRecord, type CreationRecordProps };
@@ -0,0 +1,14 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface CreationRecordProps {
4
+ originalCreator: string;
5
+ registeredAt: number;
6
+ }
7
+ /**
8
+ * Berne Convention authorship record surfaced from IPNft.get_full_token_data.
9
+ * Both fields are immutable on-chain — original_creator is set at mint time
10
+ * and never changes regardless of subsequent ownership transfers.
11
+ */
12
+ declare function CreationRecord({ originalCreator, registeredAt }: CreationRecordProps): react_jsx_runtime.JSX.Element;
13
+
14
+ export { CreationRecord, type CreationRecordProps };
@@ -0,0 +1,52 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Award, ExternalLink } from "lucide-react";
4
+ import Link from "next/link";
5
+ import { normalizeAddress } from "@medialane/sdk";
6
+ const EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || "https://voyager.online";
7
+ function CreationRecord({ originalCreator, registeredAt }) {
8
+ const creator = originalCreator ? normalizeAddress("STARKNET", originalCreator) : "";
9
+ const date = new Date(registeredAt * 1e3);
10
+ const formatted = date.toLocaleDateString(void 0, {
11
+ year: "numeric",
12
+ month: "long",
13
+ day: "numeric"
14
+ });
15
+ return /* @__PURE__ */ jsxs("div", { className: "rounded-lg bg-amber-500/5 p-4", children: [
16
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-3", children: [
17
+ /* @__PURE__ */ jsx(Award, { className: "h-4 w-4 text-amber-500" }),
18
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-amber-500", children: "Creation Record" })
19
+ ] }),
20
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground mb-3", children: "Immutable on-chain authorship record set at mint and stored permanently for legal evidence of creation (Berne Convention)." }),
21
+ /* @__PURE__ */ jsxs("dl", { className: "space-y-2 text-sm", children: [
22
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
23
+ /* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "Original creator" }),
24
+ /* @__PURE__ */ jsx("dd", { className: "tabular-nums", children: /* @__PURE__ */ jsxs(Link, { href: `/creator/${creator}`, className: "hover:underline", children: [
25
+ creator.slice(0, 6),
26
+ "\u2026",
27
+ creator.slice(-4)
28
+ ] }) })
29
+ ] }),
30
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
31
+ /* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "Registered at" }),
32
+ /* @__PURE__ */ jsx("dd", { children: /* @__PURE__ */ jsxs(
33
+ "a",
34
+ {
35
+ href: `${EXPLORER_URL}/contract/${creator}`,
36
+ target: "_blank",
37
+ rel: "noreferrer",
38
+ className: "inline-flex items-center gap-1 hover:underline",
39
+ children: [
40
+ formatted,
41
+ /* @__PURE__ */ jsx(ExternalLink, { className: "h-3 w-3" })
42
+ ]
43
+ }
44
+ ) })
45
+ ] })
46
+ ] })
47
+ ] });
48
+ }
49
+ export {
50
+ CreationRecord
51
+ };
52
+ //# sourceMappingURL=creation-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/creation-record.tsx"],"sourcesContent":["\"use client\";\n\nimport { Award, ExternalLink } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { normalizeAddress } from \"@medialane/sdk\";\n\nconst EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || \"https://voyager.online\";\n\nexport interface CreationRecordProps {\n originalCreator: string;\n registeredAt: number; // unix seconds\n}\n\n/**\n * Berne Convention authorship record surfaced from IPNft.get_full_token_data.\n * Both fields are immutable on-chain — original_creator is set at mint time\n * and never changes regardless of subsequent ownership transfers.\n */\nexport function CreationRecord({ originalCreator, registeredAt }: CreationRecordProps) {\n const creator = originalCreator ? normalizeAddress(\"STARKNET\", originalCreator) : \"\";\n const date = new Date(registeredAt * 1000);\n const formatted = date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n\n return (\n <div className=\"rounded-lg bg-amber-500/5 p-4\">\n <div className=\"flex items-center gap-2 mb-3\">\n <Award className=\"h-4 w-4 text-amber-500\" />\n <p className=\"text-sm font-semibold text-amber-500\">Creation Record</p>\n </div>\n <p className=\"text-xs text-muted-foreground mb-3\">\n Immutable on-chain authorship record set at mint and stored permanently\n for legal evidence of creation (Berne Convention).\n </p>\n <dl className=\"space-y-2 text-sm\">\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Original creator</dt>\n <dd className=\"tabular-nums\">\n <Link href={`/creator/${creator}`} className=\"hover:underline\">\n {creator.slice(0, 6)}…{creator.slice(-4)}\n </Link>\n </dd>\n </div>\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Registered at</dt>\n <dd>\n <a\n href={`${EXPLORER_URL}/contract/${creator}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-1 hover:underline\"\n >\n {formatted}\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n </dd>\n </div>\n </dl>\n </div>\n );\n}\n"],"mappings":";AA6BM,SACE,KADF;AA3BN,SAAS,OAAO,oBAAoB;AACpC,OAAO,UAAU;AACjB,SAAS,wBAAwB;AAEjC,MAAM,eAAe,QAAQ,IAAI,4BAA4B;AAYtD,SAAS,eAAe,EAAE,iBAAiB,aAAa,GAAwB;AACrF,QAAM,UAAU,kBAAkB,iBAAiB,YAAY,eAAe,IAAI;AAClF,QAAM,OAAO,IAAI,KAAK,eAAe,GAAI;AACzC,QAAM,YAAY,KAAK,mBAAmB,QAAW;AAAA,IACnD,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACP,CAAC;AAED,SACE,qBAAC,SAAI,WAAU,iCACb;AAAA,yBAAC,SAAI,WAAU,gCACb;AAAA,0BAAC,SAAM,WAAU,0BAAyB;AAAA,MAC1C,oBAAC,OAAE,WAAU,wCAAuC,6BAAe;AAAA,OACrE;AAAA,IACA,oBAAC,OAAE,WAAU,sCAAqC,wIAGlD;AAAA,IACA,qBAAC,QAAG,WAAU,qBACZ;AAAA,2BAAC,SAAI,WAAU,qCACb;AAAA,4BAAC,QAAG,WAAU,yBAAwB,8BAAgB;AAAA,QACtD,oBAAC,QAAG,WAAU,gBACZ,+BAAC,QAAK,MAAM,YAAY,OAAO,IAAI,WAAU,mBAC1C;AAAA,kBAAQ,MAAM,GAAG,CAAC;AAAA,UAAE;AAAA,UAAE,QAAQ,MAAM,EAAE;AAAA,WACzC,GACF;AAAA,SACF;AAAA,MACA,qBAAC,SAAI,WAAU,qCACb;AAAA,4BAAC,QAAG,WAAU,yBAAwB,2BAAa;AAAA,QACnD,oBAAC,QACC;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,GAAG,YAAY,aAAa,OAAO;AAAA,YACzC,QAAO;AAAA,YACP,KAAI;AAAA,YACJ,WAAU;AAAA,YAET;AAAA;AAAA,cACD,oBAAC,gBAAa,WAAU,WAAU;AAAA;AAAA;AAAA,QACpC,GACF;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}