@medialane/ui 0.130.1 → 0.132.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/dist/components/drop-item-list.cjs +118 -0
- package/dist/components/drop-item-list.cjs.map +1 -0
- package/dist/components/drop-item-list.d.cts +19 -0
- package/dist/components/drop-item-list.d.ts +19 -0
- package/dist/components/drop-item-list.js +84 -0
- package/dist/components/drop-item-list.js.map +1 -0
- package/dist/components/sheet.d.cts +1 -1
- package/dist/components/sheet.d.ts +1 -1
- package/dist/data/drop-create-schema.cjs +85 -0
- package/dist/data/drop-create-schema.cjs.map +1 -0
- package/dist/data/drop-create-schema.d.cts +111 -0
- package/dist/data/drop-create-schema.d.ts +111 -0
- package/dist/data/drop-create-schema.js +51 -0
- package/dist/data/drop-create-schema.js.map +1 -0
- package/dist/index.cjs +18 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/launchpad-defaults.cjs +85 -0
- package/dist/utils/launchpad-defaults.cjs.map +1 -0
- package/dist/utils/launchpad-defaults.d.cts +13 -0
- package/dist/utils/launchpad-defaults.d.ts +13 -0
- package/dist/utils/launchpad-defaults.js +59 -0
- package/dist/utils/launchpad-defaults.js.map +1 -0
- package/dist/utils/use-usd-prices.cjs +65 -0
- package/dist/utils/use-usd-prices.cjs.map +1 -0
- package/dist/utils/use-usd-prices.d.cts +11 -0
- package/dist/utils/use-usd-prices.d.ts +11 -0
- package/dist/utils/use-usd-prices.js +30 -0
- package/dist/utils/use-usd-prices.js.map +1 -0
- package/package.json +5 -3
|
@@ -0,0 +1,118 @@
|
|
|
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 drop_item_list_exports = {};
|
|
31
|
+
__export(drop_item_list_exports, {
|
|
32
|
+
DropItemList: () => DropItemList
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(drop_item_list_exports);
|
|
35
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
|
+
var import_image = __toESM(require("./image.js"), 1);
|
|
37
|
+
var import_react = require("react");
|
|
38
|
+
var import_lucide_react = require("lucide-react");
|
|
39
|
+
var import_button = require("./button.js");
|
|
40
|
+
var import_input = require("./input.js");
|
|
41
|
+
function DropItemList({ items, collectionName, onAddFiles, onRemove, onEdit }) {
|
|
42
|
+
const inputRef = (0, import_react.useRef)(null);
|
|
43
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-3", children: [
|
|
44
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
45
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: "text-sm font-medium", children: [
|
|
46
|
+
"Items ",
|
|
47
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-muted-foreground font-normal", children: [
|
|
48
|
+
"(",
|
|
49
|
+
items.length,
|
|
50
|
+
")"
|
|
51
|
+
] })
|
|
52
|
+
] }),
|
|
53
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
54
|
+
"input",
|
|
55
|
+
{
|
|
56
|
+
ref: inputRef,
|
|
57
|
+
type: "file",
|
|
58
|
+
accept: "image/*",
|
|
59
|
+
multiple: true,
|
|
60
|
+
className: "hidden",
|
|
61
|
+
onChange: (e) => {
|
|
62
|
+
const f = Array.from(e.target.files ?? []);
|
|
63
|
+
if (f.length) onAddFiles(f);
|
|
64
|
+
e.target.value = "";
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
),
|
|
68
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_button.Button, { type: "button", variant: "outline", size: "sm", onClick: () => inputRef.current?.click(), children: [
|
|
69
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ImagePlus, { className: "h-3.5 w-3.5 mr-1.5" }),
|
|
70
|
+
" Add images"
|
|
71
|
+
] })
|
|
72
|
+
] }),
|
|
73
|
+
items.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "bento-cell border-dashed p-10 text-center text-sm text-muted-foreground", children: "Drag in your artwork \u2014 each image becomes a unique, licensed token. Supply = number of items." }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-2", children: items.map((it, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex gap-3 items-start bento-cell p-3", children: [
|
|
74
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative h-16 w-16 rounded-lg overflow-hidden bg-muted shrink-0", children: [
|
|
75
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_image.default, { src: it.previewUrl, alt: it.name || `Item ${i + 1}`, fill: true, className: "object-cover", unoptimized: true }),
|
|
76
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "absolute bottom-0 left-0 text-[9px] font-bold bg-black/60 text-white px-1", children: [
|
|
77
|
+
"#",
|
|
78
|
+
i + 1
|
|
79
|
+
] })
|
|
80
|
+
] }),
|
|
81
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex-1 space-y-1.5", children: [
|
|
82
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
83
|
+
import_input.Input,
|
|
84
|
+
{
|
|
85
|
+
value: it.name,
|
|
86
|
+
onChange: (e) => onEdit(it.id, { name: e.target.value }),
|
|
87
|
+
placeholder: `${collectionName || "Item"} #${i + 1}`,
|
|
88
|
+
className: "h-8 text-sm"
|
|
89
|
+
}
|
|
90
|
+
),
|
|
91
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
92
|
+
import_input.Input,
|
|
93
|
+
{
|
|
94
|
+
value: it.description,
|
|
95
|
+
onChange: (e) => onEdit(it.id, { description: e.target.value }),
|
|
96
|
+
placeholder: "Description (optional)",
|
|
97
|
+
className: "h-8 text-xs"
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
] }),
|
|
101
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
102
|
+
"button",
|
|
103
|
+
{
|
|
104
|
+
type: "button",
|
|
105
|
+
onClick: () => onRemove(it.id),
|
|
106
|
+
className: "text-muted-foreground hover:text-destructive p-1",
|
|
107
|
+
"aria-label": "Remove item",
|
|
108
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.X, { className: "h-4 w-4" })
|
|
109
|
+
}
|
|
110
|
+
)
|
|
111
|
+
] }, it.id)) })
|
|
112
|
+
] });
|
|
113
|
+
}
|
|
114
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
115
|
+
0 && (module.exports = {
|
|
116
|
+
DropItemList
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=drop-item-list.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/drop-item-list.tsx"],"sourcesContent":["\"use client\";\n\nimport Image from \"./image.js\";\nimport { useRef } from \"react\";\nimport { ImagePlus, X } from \"lucide-react\";\nimport { Button } from \"./button.js\";\nimport { Input } from \"./input.js\";\n\nexport interface DraftItem {\n id: string;\n file: File;\n previewUrl: string;\n name: string;\n description: string;\n}\n\ninterface DropItemListProps {\n items: DraftItem[];\n collectionName: string;\n onAddFiles: (files: File[]) => void;\n onRemove: (id: string) => void;\n onEdit: (id: string, patch: Partial<Pick<DraftItem, \"name\" | \"description\">>) => void;\n}\n\nexport function DropItemList({ items, collectionName, onAddFiles, onRemove, onEdit }: DropItemListProps) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n return (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm font-medium\">\n Items <span className=\"text-muted-foreground font-normal\">({items.length})</span>\n </p>\n <input\n ref={inputRef}\n type=\"file\"\n accept=\"image/*\"\n multiple\n className=\"hidden\"\n onChange={(e) => {\n const f = Array.from(e.target.files ?? []);\n if (f.length) onAddFiles(f);\n e.target.value = \"\";\n }}\n />\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={() => inputRef.current?.click()}>\n <ImagePlus className=\"h-3.5 w-3.5 mr-1.5\" /> Add images\n </Button>\n </div>\n\n {items.length === 0 ? (\n <div className=\"bento-cell border-dashed p-10 text-center text-sm text-muted-foreground\">\n Drag in your artwork — each image becomes a unique, licensed token. Supply = number of items.\n </div>\n ) : (\n <div className=\"space-y-2\">\n {items.map((it, i) => (\n <div key={it.id} className=\"flex gap-3 items-start bento-cell p-3\">\n <div className=\"relative h-16 w-16 rounded-lg overflow-hidden bg-muted shrink-0\">\n <Image src={it.previewUrl} alt={it.name || `Item ${i + 1}`} fill className=\"object-cover\" unoptimized />\n <span className=\"absolute bottom-0 left-0 text-[9px] font-bold bg-black/60 text-white px-1\">#{i + 1}</span>\n </div>\n <div className=\"flex-1 space-y-1.5\">\n <Input\n value={it.name}\n onChange={(e) => onEdit(it.id, { name: e.target.value })}\n placeholder={`${collectionName || \"Item\"} #${i + 1}`}\n className=\"h-8 text-sm\"\n />\n <Input\n value={it.description}\n onChange={(e) => onEdit(it.id, { description: e.target.value })}\n placeholder=\"Description (optional)\"\n className=\"h-8 text-xs\"\n />\n </div>\n <button\n type=\"button\"\n onClick={() => onRemove(it.id)}\n className=\"text-muted-foreground hover:text-destructive p-1\"\n aria-label=\"Remove item\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BgB;AA7BhB,mBAAkB;AAClB,mBAAuB;AACvB,0BAA6B;AAC7B,oBAAuB;AACvB,mBAAsB;AAkBf,SAAS,aAAa,EAAE,OAAO,gBAAgB,YAAY,UAAU,OAAO,GAAsB;AACvG,QAAM,eAAW,qBAAgC,IAAI;AAErD,SACE,6CAAC,SAAI,WAAU,aACb;AAAA,iDAAC,SAAI,WAAU,qCACb;AAAA,mDAAC,OAAE,WAAU,uBAAsB;AAAA;AAAA,QAC3B,6CAAC,UAAK,WAAU,qCAAoC;AAAA;AAAA,UAAE,MAAM;AAAA,UAAO;AAAA,WAAC;AAAA,SAC5E;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,MAAK;AAAA,UACL,QAAO;AAAA,UACP,UAAQ;AAAA,UACR,WAAU;AAAA,UACV,UAAU,CAAC,MAAM;AACf,kBAAM,IAAI,MAAM,KAAK,EAAE,OAAO,SAAS,CAAC,CAAC;AACzC,gBAAI,EAAE,OAAQ,YAAW,CAAC;AAC1B,cAAE,OAAO,QAAQ;AAAA,UACnB;AAAA;AAAA,MACF;AAAA,MACA,6CAAC,wBAAO,MAAK,UAAS,SAAQ,WAAU,MAAK,MAAK,SAAS,MAAM,SAAS,SAAS,MAAM,GACvF;AAAA,oDAAC,iCAAU,WAAU,sBAAqB;AAAA,QAAE;AAAA,SAC9C;AAAA,OACF;AAAA,IAEC,MAAM,WAAW,IAChB,4CAAC,SAAI,WAAU,2EAA0E,gHAEzF,IAEA,4CAAC,SAAI,WAAU,aACZ,gBAAM,IAAI,CAAC,IAAI,MACd,6CAAC,SAAgB,WAAU,yCACzB;AAAA,mDAAC,SAAI,WAAU,mEACb;AAAA,oDAAC,aAAAA,SAAA,EAAM,KAAK,GAAG,YAAY,KAAK,GAAG,QAAQ,QAAQ,IAAI,CAAC,IAAI,MAAI,MAAC,WAAU,gBAAe,aAAW,MAAC;AAAA,QACtG,6CAAC,UAAK,WAAU,6EAA4E;AAAA;AAAA,UAAE,IAAI;AAAA,WAAE;AAAA,SACtG;AAAA,MACA,6CAAC,SAAI,WAAU,sBACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,GAAG;AAAA,YACV,UAAU,CAAC,MAAM,OAAO,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,MAAM,CAAC;AAAA,YACvD,aAAa,GAAG,kBAAkB,MAAM,KAAK,IAAI,CAAC;AAAA,YAClD,WAAU;AAAA;AAAA,QACZ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,GAAG;AAAA,YACV,UAAU,CAAC,MAAM,OAAO,GAAG,IAAI,EAAE,aAAa,EAAE,OAAO,MAAM,CAAC;AAAA,YAC9D,aAAY;AAAA,YACZ,WAAU;AAAA;AAAA,QACZ;AAAA,SACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM,SAAS,GAAG,EAAE;AAAA,UAC7B,WAAU;AAAA,UACV,cAAW;AAAA,UAEX,sDAAC,yBAAE,WAAU,WAAU;AAAA;AAAA,MACzB;AAAA,SA1BQ,GAAG,EA2Bb,CACD,GACH;AAAA,KAEJ;AAEJ;","names":["Image"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface DraftItem {
|
|
4
|
+
id: string;
|
|
5
|
+
file: File;
|
|
6
|
+
previewUrl: string;
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
}
|
|
10
|
+
interface DropItemListProps {
|
|
11
|
+
items: DraftItem[];
|
|
12
|
+
collectionName: string;
|
|
13
|
+
onAddFiles: (files: File[]) => void;
|
|
14
|
+
onRemove: (id: string) => void;
|
|
15
|
+
onEdit: (id: string, patch: Partial<Pick<DraftItem, "name" | "description">>) => void;
|
|
16
|
+
}
|
|
17
|
+
declare function DropItemList({ items, collectionName, onAddFiles, onRemove, onEdit }: DropItemListProps): react_jsx_runtime.JSX.Element;
|
|
18
|
+
|
|
19
|
+
export { type DraftItem, DropItemList };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface DraftItem {
|
|
4
|
+
id: string;
|
|
5
|
+
file: File;
|
|
6
|
+
previewUrl: string;
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
}
|
|
10
|
+
interface DropItemListProps {
|
|
11
|
+
items: DraftItem[];
|
|
12
|
+
collectionName: string;
|
|
13
|
+
onAddFiles: (files: File[]) => void;
|
|
14
|
+
onRemove: (id: string) => void;
|
|
15
|
+
onEdit: (id: string, patch: Partial<Pick<DraftItem, "name" | "description">>) => void;
|
|
16
|
+
}
|
|
17
|
+
declare function DropItemList({ items, collectionName, onAddFiles, onRemove, onEdit }: DropItemListProps): react_jsx_runtime.JSX.Element;
|
|
18
|
+
|
|
19
|
+
export { type DraftItem, DropItemList };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import Image from "./image.js";
|
|
4
|
+
import { useRef } from "react";
|
|
5
|
+
import { ImagePlus, X } from "lucide-react";
|
|
6
|
+
import { Button } from "./button.js";
|
|
7
|
+
import { Input } from "./input.js";
|
|
8
|
+
function DropItemList({ items, collectionName, onAddFiles, onRemove, onEdit }) {
|
|
9
|
+
const inputRef = useRef(null);
|
|
10
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
11
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
12
|
+
/* @__PURE__ */ jsxs("p", { className: "text-sm font-medium", children: [
|
|
13
|
+
"Items ",
|
|
14
|
+
/* @__PURE__ */ jsxs("span", { className: "text-muted-foreground font-normal", children: [
|
|
15
|
+
"(",
|
|
16
|
+
items.length,
|
|
17
|
+
")"
|
|
18
|
+
] })
|
|
19
|
+
] }),
|
|
20
|
+
/* @__PURE__ */ jsx(
|
|
21
|
+
"input",
|
|
22
|
+
{
|
|
23
|
+
ref: inputRef,
|
|
24
|
+
type: "file",
|
|
25
|
+
accept: "image/*",
|
|
26
|
+
multiple: true,
|
|
27
|
+
className: "hidden",
|
|
28
|
+
onChange: (e) => {
|
|
29
|
+
const f = Array.from(e.target.files ?? []);
|
|
30
|
+
if (f.length) onAddFiles(f);
|
|
31
|
+
e.target.value = "";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
),
|
|
35
|
+
/* @__PURE__ */ jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: () => inputRef.current?.click(), children: [
|
|
36
|
+
/* @__PURE__ */ jsx(ImagePlus, { className: "h-3.5 w-3.5 mr-1.5" }),
|
|
37
|
+
" Add images"
|
|
38
|
+
] })
|
|
39
|
+
] }),
|
|
40
|
+
items.length === 0 ? /* @__PURE__ */ jsx("div", { className: "bento-cell border-dashed p-10 text-center text-sm text-muted-foreground", children: "Drag in your artwork \u2014 each image becomes a unique, licensed token. Supply = number of items." }) : /* @__PURE__ */ jsx("div", { className: "space-y-2", children: items.map((it, i) => /* @__PURE__ */ jsxs("div", { className: "flex gap-3 items-start bento-cell p-3", children: [
|
|
41
|
+
/* @__PURE__ */ jsxs("div", { className: "relative h-16 w-16 rounded-lg overflow-hidden bg-muted shrink-0", children: [
|
|
42
|
+
/* @__PURE__ */ jsx(Image, { src: it.previewUrl, alt: it.name || `Item ${i + 1}`, fill: true, className: "object-cover", unoptimized: true }),
|
|
43
|
+
/* @__PURE__ */ jsxs("span", { className: "absolute bottom-0 left-0 text-[9px] font-bold bg-black/60 text-white px-1", children: [
|
|
44
|
+
"#",
|
|
45
|
+
i + 1
|
|
46
|
+
] })
|
|
47
|
+
] }),
|
|
48
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-1.5", children: [
|
|
49
|
+
/* @__PURE__ */ jsx(
|
|
50
|
+
Input,
|
|
51
|
+
{
|
|
52
|
+
value: it.name,
|
|
53
|
+
onChange: (e) => onEdit(it.id, { name: e.target.value }),
|
|
54
|
+
placeholder: `${collectionName || "Item"} #${i + 1}`,
|
|
55
|
+
className: "h-8 text-sm"
|
|
56
|
+
}
|
|
57
|
+
),
|
|
58
|
+
/* @__PURE__ */ jsx(
|
|
59
|
+
Input,
|
|
60
|
+
{
|
|
61
|
+
value: it.description,
|
|
62
|
+
onChange: (e) => onEdit(it.id, { description: e.target.value }),
|
|
63
|
+
placeholder: "Description (optional)",
|
|
64
|
+
className: "h-8 text-xs"
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
] }),
|
|
68
|
+
/* @__PURE__ */ jsx(
|
|
69
|
+
"button",
|
|
70
|
+
{
|
|
71
|
+
type: "button",
|
|
72
|
+
onClick: () => onRemove(it.id),
|
|
73
|
+
className: "text-muted-foreground hover:text-destructive p-1",
|
|
74
|
+
"aria-label": "Remove item",
|
|
75
|
+
children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
] }, it.id)) })
|
|
79
|
+
] });
|
|
80
|
+
}
|
|
81
|
+
export {
|
|
82
|
+
DropItemList
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=drop-item-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/drop-item-list.tsx"],"sourcesContent":["\"use client\";\n\nimport Image from \"./image.js\";\nimport { useRef } from \"react\";\nimport { ImagePlus, X } from \"lucide-react\";\nimport { Button } from \"./button.js\";\nimport { Input } from \"./input.js\";\n\nexport interface DraftItem {\n id: string;\n file: File;\n previewUrl: string;\n name: string;\n description: string;\n}\n\ninterface DropItemListProps {\n items: DraftItem[];\n collectionName: string;\n onAddFiles: (files: File[]) => void;\n onRemove: (id: string) => void;\n onEdit: (id: string, patch: Partial<Pick<DraftItem, \"name\" | \"description\">>) => void;\n}\n\nexport function DropItemList({ items, collectionName, onAddFiles, onRemove, onEdit }: DropItemListProps) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n return (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm font-medium\">\n Items <span className=\"text-muted-foreground font-normal\">({items.length})</span>\n </p>\n <input\n ref={inputRef}\n type=\"file\"\n accept=\"image/*\"\n multiple\n className=\"hidden\"\n onChange={(e) => {\n const f = Array.from(e.target.files ?? []);\n if (f.length) onAddFiles(f);\n e.target.value = \"\";\n }}\n />\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={() => inputRef.current?.click()}>\n <ImagePlus className=\"h-3.5 w-3.5 mr-1.5\" /> Add images\n </Button>\n </div>\n\n {items.length === 0 ? (\n <div className=\"bento-cell border-dashed p-10 text-center text-sm text-muted-foreground\">\n Drag in your artwork — each image becomes a unique, licensed token. Supply = number of items.\n </div>\n ) : (\n <div className=\"space-y-2\">\n {items.map((it, i) => (\n <div key={it.id} className=\"flex gap-3 items-start bento-cell p-3\">\n <div className=\"relative h-16 w-16 rounded-lg overflow-hidden bg-muted shrink-0\">\n <Image src={it.previewUrl} alt={it.name || `Item ${i + 1}`} fill className=\"object-cover\" unoptimized />\n <span className=\"absolute bottom-0 left-0 text-[9px] font-bold bg-black/60 text-white px-1\">#{i + 1}</span>\n </div>\n <div className=\"flex-1 space-y-1.5\">\n <Input\n value={it.name}\n onChange={(e) => onEdit(it.id, { name: e.target.value })}\n placeholder={`${collectionName || \"Item\"} #${i + 1}`}\n className=\"h-8 text-sm\"\n />\n <Input\n value={it.description}\n onChange={(e) => onEdit(it.id, { description: e.target.value })}\n placeholder=\"Description (optional)\"\n className=\"h-8 text-xs\"\n />\n </div>\n <button\n type=\"button\"\n onClick={() => onRemove(it.id)}\n className=\"text-muted-foreground hover:text-destructive p-1\"\n aria-label=\"Remove item\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";AA+BgB,SAER,KAFQ;AA7BhB,OAAO,WAAW;AAClB,SAAS,cAAc;AACvB,SAAS,WAAW,SAAS;AAC7B,SAAS,cAAc;AACvB,SAAS,aAAa;AAkBf,SAAS,aAAa,EAAE,OAAO,gBAAgB,YAAY,UAAU,OAAO,GAAsB;AACvG,QAAM,WAAW,OAAgC,IAAI;AAErD,SACE,qBAAC,SAAI,WAAU,aACb;AAAA,yBAAC,SAAI,WAAU,qCACb;AAAA,2BAAC,OAAE,WAAU,uBAAsB;AAAA;AAAA,QAC3B,qBAAC,UAAK,WAAU,qCAAoC;AAAA;AAAA,UAAE,MAAM;AAAA,UAAO;AAAA,WAAC;AAAA,SAC5E;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,MAAK;AAAA,UACL,QAAO;AAAA,UACP,UAAQ;AAAA,UACR,WAAU;AAAA,UACV,UAAU,CAAC,MAAM;AACf,kBAAM,IAAI,MAAM,KAAK,EAAE,OAAO,SAAS,CAAC,CAAC;AACzC,gBAAI,EAAE,OAAQ,YAAW,CAAC;AAC1B,cAAE,OAAO,QAAQ;AAAA,UACnB;AAAA;AAAA,MACF;AAAA,MACA,qBAAC,UAAO,MAAK,UAAS,SAAQ,WAAU,MAAK,MAAK,SAAS,MAAM,SAAS,SAAS,MAAM,GACvF;AAAA,4BAAC,aAAU,WAAU,sBAAqB;AAAA,QAAE;AAAA,SAC9C;AAAA,OACF;AAAA,IAEC,MAAM,WAAW,IAChB,oBAAC,SAAI,WAAU,2EAA0E,gHAEzF,IAEA,oBAAC,SAAI,WAAU,aACZ,gBAAM,IAAI,CAAC,IAAI,MACd,qBAAC,SAAgB,WAAU,yCACzB;AAAA,2BAAC,SAAI,WAAU,mEACb;AAAA,4BAAC,SAAM,KAAK,GAAG,YAAY,KAAK,GAAG,QAAQ,QAAQ,IAAI,CAAC,IAAI,MAAI,MAAC,WAAU,gBAAe,aAAW,MAAC;AAAA,QACtG,qBAAC,UAAK,WAAU,6EAA4E;AAAA;AAAA,UAAE,IAAI;AAAA,WAAE;AAAA,SACtG;AAAA,MACA,qBAAC,SAAI,WAAU,sBACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,GAAG;AAAA,YACV,UAAU,CAAC,MAAM,OAAO,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,MAAM,CAAC;AAAA,YACvD,aAAa,GAAG,kBAAkB,MAAM,KAAK,IAAI,CAAC;AAAA,YAClD,WAAU;AAAA;AAAA,QACZ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,GAAG;AAAA,YACV,UAAU,CAAC,MAAM,OAAO,GAAG,IAAI,EAAE,aAAa,EAAE,OAAO,MAAM,CAAC;AAAA,YAC9D,aAAY;AAAA,YACZ,WAAU;AAAA;AAAA,QACZ;AAAA,SACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM,SAAS,GAAG,EAAE;AAAA,UAC7B,WAAU;AAAA,UACV,cAAW;AAAA,UAEX,8BAAC,KAAE,WAAU,WAAU;AAAA;AAAA,MACzB;AAAA,SA1BQ,GAAG,EA2Bb,CACD,GACH;AAAA,KAEJ;AAEJ;","names":[]}
|
|
@@ -10,7 +10,7 @@ declare const SheetClose: React.ForwardRefExoticComponent<SheetPrimitive.DialogC
|
|
|
10
10
|
declare const SheetPortal: React.FC<SheetPrimitive.DialogPortalProps>;
|
|
11
11
|
declare const SheetOverlay: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
12
12
|
declare const sheetVariants: (props?: ({
|
|
13
|
-
side?: "
|
|
13
|
+
side?: "bottom" | "left" | "right" | "top" | null | undefined;
|
|
14
14
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
15
15
|
interface SheetContentProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>, VariantProps<typeof sheetVariants> {
|
|
16
16
|
overlayClassName?: string;
|
|
@@ -10,7 +10,7 @@ declare const SheetClose: React.ForwardRefExoticComponent<SheetPrimitive.DialogC
|
|
|
10
10
|
declare const SheetPortal: React.FC<SheetPrimitive.DialogPortalProps>;
|
|
11
11
|
declare const SheetOverlay: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
12
12
|
declare const sheetVariants: (props?: ({
|
|
13
|
-
side?: "
|
|
13
|
+
side?: "bottom" | "left" | "right" | "top" | null | undefined;
|
|
14
14
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
15
15
|
interface SheetContentProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>, VariantProps<typeof sheetVariants> {
|
|
16
16
|
overlayClassName?: string;
|
|
@@ -0,0 +1,85 @@
|
|
|
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 drop_create_schema_exports = {};
|
|
31
|
+
__export(drop_create_schema_exports, {
|
|
32
|
+
dropCreateSchema: () => dropCreateSchema
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(drop_create_schema_exports);
|
|
35
|
+
var z = __toESM(require("zod"), 1);
|
|
36
|
+
var import_ip = require("./ip.js");
|
|
37
|
+
function parseDateTime(date, time) {
|
|
38
|
+
const t = (/* @__PURE__ */ new Date(`${date}T${time}:00`)).getTime();
|
|
39
|
+
return Number.isNaN(t) ? null : t;
|
|
40
|
+
}
|
|
41
|
+
const dropCreateSchema = z.object({
|
|
42
|
+
name: z.string().min(1, "Collection name required").max(100),
|
|
43
|
+
symbol: z.string().min(1, "Symbol required").max(10).regex(/^[A-Z0-9]+$/, "Uppercase letters and numbers only"),
|
|
44
|
+
ipType: z.enum(import_ip.IP_TYPES),
|
|
45
|
+
licenseType: z.string().min(1, "License required"),
|
|
46
|
+
commercialUse: z.string().default(""),
|
|
47
|
+
derivatives: z.string().default(""),
|
|
48
|
+
attribution: z.string().default(""),
|
|
49
|
+
geographicScope: z.string().default("Worldwide"),
|
|
50
|
+
aiPolicy: z.string().default(""),
|
|
51
|
+
royalty: z.coerce.number().min(0).max(50).default(0),
|
|
52
|
+
descriptionTemplate: z.string().max(500).optional(),
|
|
53
|
+
priceAmount: z.string().default("").refine((v) => v === "" || !Number.isNaN(Number(v)), "Enter a valid price").refine((v) => v === "" || Number(v) >= 0, "Price must be zero or greater"),
|
|
54
|
+
paymentToken: z.string(),
|
|
55
|
+
startDate: z.string().min(1, "Start date required"),
|
|
56
|
+
startTime: z.string().default("00:00"),
|
|
57
|
+
endDate: z.string().min(1, "End date required"),
|
|
58
|
+
endTime: z.string().default("23:59"),
|
|
59
|
+
maxPerWallet: z.string().regex(/^\d+$/, "Must be a positive integer").refine((v) => parseInt(v, 10) >= 1, "Minimum 1").default("1"),
|
|
60
|
+
whitelistEnabled: z.boolean().default(false),
|
|
61
|
+
allowlistAddresses: z.string().default("")
|
|
62
|
+
}).superRefine((values, ctx) => {
|
|
63
|
+
const start = parseDateTime(values.startDate, values.startTime);
|
|
64
|
+
const end = parseDateTime(values.endDate, values.endTime);
|
|
65
|
+
if (start === null) {
|
|
66
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ["startDate"], message: "Enter a valid start date and time" });
|
|
67
|
+
}
|
|
68
|
+
if (end === null) {
|
|
69
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ["endDate"], message: "Enter a valid end date and time" });
|
|
70
|
+
}
|
|
71
|
+
if (start !== null && end !== null && end <= start) {
|
|
72
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ["endDate"], message: "End time must be after the start time" });
|
|
73
|
+
}
|
|
74
|
+
if (values.whitelistEnabled) {
|
|
75
|
+
const addrs = values.allowlistAddresses.split(/[\n,\s]+/).map((a) => a.trim()).filter(Boolean);
|
|
76
|
+
if (addrs.length === 0) {
|
|
77
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ["allowlistAddresses"], message: "Add at least one address, or turn the whitelist off" });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
82
|
+
0 && (module.exports = {
|
|
83
|
+
dropCreateSchema
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=drop-create-schema.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/data/drop-create-schema.ts"],"sourcesContent":["\"use client\";\n\nimport * as z from \"zod\";\nimport { IP_TYPES } from \"./ip.js\";\n\nfunction parseDateTime(date: string, time: string): number | null {\n const t = new Date(`${date}T${time}:00`).getTime();\n return Number.isNaN(t) ? null : t;\n}\n\nexport const dropCreateSchema = z\n .object({\n name: z.string().min(1, \"Collection name required\").max(100),\n symbol: z\n .string()\n .min(1, \"Symbol required\")\n .max(10)\n .regex(/^[A-Z0-9]+$/, \"Uppercase letters and numbers only\"),\n\n ipType: z.enum(IP_TYPES),\n licenseType: z.string().min(1, \"License required\"),\n commercialUse: z.string().default(\"\"),\n derivatives: z.string().default(\"\"),\n attribution: z.string().default(\"\"),\n geographicScope: z.string().default(\"Worldwide\"),\n aiPolicy: z.string().default(\"\"),\n royalty: z.coerce.number().min(0).max(50).default(0),\n descriptionTemplate: z.string().max(500).optional(),\n\n priceAmount: z\n .string()\n .default(\"\")\n .refine((v: string) => v === \"\" || !Number.isNaN(Number(v)), \"Enter a valid price\")\n .refine((v: string) => v === \"\" || Number(v) >= 0, \"Price must be zero or greater\"),\n paymentToken: z.string(),\n startDate: z.string().min(1, \"Start date required\"),\n startTime: z.string().default(\"00:00\"),\n endDate: z.string().min(1, \"End date required\"),\n endTime: z.string().default(\"23:59\"),\n maxPerWallet: z\n .string()\n .regex(/^\\d+$/, \"Must be a positive integer\")\n .refine((v: string) => parseInt(v, 10) >= 1, \"Minimum 1\")\n .default(\"1\"),\n\n whitelistEnabled: z.boolean().default(false),\n allowlistAddresses: z.string().default(\"\"),\n })\n .superRefine((values, ctx) => {\n const start = parseDateTime(values.startDate, values.startTime);\n const end = parseDateTime(values.endDate, values.endTime);\n if (start === null) {\n ctx.addIssue({ code: z.ZodIssueCode.custom, path: [\"startDate\"], message: \"Enter a valid start date and time\" });\n }\n if (end === null) {\n ctx.addIssue({ code: z.ZodIssueCode.custom, path: [\"endDate\"], message: \"Enter a valid end date and time\" });\n }\n if (start !== null && end !== null && end <= start) {\n ctx.addIssue({ code: z.ZodIssueCode.custom, path: [\"endDate\"], message: \"End time must be after the start time\" });\n }\n\n if (values.whitelistEnabled) {\n const addrs = values.allowlistAddresses.split(/[\\n,\\s]+/).map((a) => a.trim()).filter(Boolean);\n if (addrs.length === 0) {\n ctx.addIssue({ code: z.ZodIssueCode.custom, path: [\"allowlistAddresses\"], message: \"Add at least one address, or turn the whitelist off\" });\n }\n }\n });\n\nexport type DropCreateFormValues = z.infer<typeof dropCreateSchema>;\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
|
|
3
|
+
declare const dropCreateSchema: z.ZodEffects<z.ZodObject<{
|
|
4
|
+
name: z.ZodString;
|
|
5
|
+
symbol: z.ZodString;
|
|
6
|
+
ipType: z.ZodEnum<["Audio", "Art", "Documents", "NFT", "Video", "Photography", "Patents", "Posts", "Publications", "RWA", "Software", "Custom"]>;
|
|
7
|
+
licenseType: z.ZodString;
|
|
8
|
+
commercialUse: z.ZodDefault<z.ZodString>;
|
|
9
|
+
derivatives: z.ZodDefault<z.ZodString>;
|
|
10
|
+
attribution: z.ZodDefault<z.ZodString>;
|
|
11
|
+
geographicScope: z.ZodDefault<z.ZodString>;
|
|
12
|
+
aiPolicy: z.ZodDefault<z.ZodString>;
|
|
13
|
+
royalty: z.ZodDefault<z.ZodNumber>;
|
|
14
|
+
descriptionTemplate: z.ZodOptional<z.ZodString>;
|
|
15
|
+
priceAmount: z.ZodEffects<z.ZodEffects<z.ZodDefault<z.ZodString>, string, string | undefined>, string, string | undefined>;
|
|
16
|
+
paymentToken: z.ZodString;
|
|
17
|
+
startDate: z.ZodString;
|
|
18
|
+
startTime: z.ZodDefault<z.ZodString>;
|
|
19
|
+
endDate: z.ZodString;
|
|
20
|
+
endTime: z.ZodDefault<z.ZodString>;
|
|
21
|
+
maxPerWallet: z.ZodDefault<z.ZodEffects<z.ZodString, string, string>>;
|
|
22
|
+
whitelistEnabled: z.ZodDefault<z.ZodBoolean>;
|
|
23
|
+
allowlistAddresses: z.ZodDefault<z.ZodString>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
symbol: string;
|
|
26
|
+
derivatives: string;
|
|
27
|
+
name: string;
|
|
28
|
+
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
29
|
+
licenseType: string;
|
|
30
|
+
commercialUse: string;
|
|
31
|
+
attribution: string;
|
|
32
|
+
aiPolicy: string;
|
|
33
|
+
geographicScope: string;
|
|
34
|
+
royalty: number;
|
|
35
|
+
priceAmount: string;
|
|
36
|
+
paymentToken: string;
|
|
37
|
+
startDate: string;
|
|
38
|
+
startTime: string;
|
|
39
|
+
endDate: string;
|
|
40
|
+
endTime: string;
|
|
41
|
+
maxPerWallet: string;
|
|
42
|
+
whitelistEnabled: boolean;
|
|
43
|
+
allowlistAddresses: string;
|
|
44
|
+
descriptionTemplate?: string | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
symbol: string;
|
|
47
|
+
name: string;
|
|
48
|
+
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
49
|
+
licenseType: string;
|
|
50
|
+
paymentToken: string;
|
|
51
|
+
startDate: string;
|
|
52
|
+
endDate: string;
|
|
53
|
+
derivatives?: string | undefined;
|
|
54
|
+
commercialUse?: string | undefined;
|
|
55
|
+
attribution?: string | undefined;
|
|
56
|
+
aiPolicy?: string | undefined;
|
|
57
|
+
geographicScope?: string | undefined;
|
|
58
|
+
royalty?: number | undefined;
|
|
59
|
+
descriptionTemplate?: string | undefined;
|
|
60
|
+
priceAmount?: string | undefined;
|
|
61
|
+
startTime?: string | undefined;
|
|
62
|
+
endTime?: string | undefined;
|
|
63
|
+
maxPerWallet?: string | undefined;
|
|
64
|
+
whitelistEnabled?: boolean | undefined;
|
|
65
|
+
allowlistAddresses?: string | undefined;
|
|
66
|
+
}>, {
|
|
67
|
+
symbol: string;
|
|
68
|
+
derivatives: string;
|
|
69
|
+
name: string;
|
|
70
|
+
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
71
|
+
licenseType: string;
|
|
72
|
+
commercialUse: string;
|
|
73
|
+
attribution: string;
|
|
74
|
+
aiPolicy: string;
|
|
75
|
+
geographicScope: string;
|
|
76
|
+
royalty: number;
|
|
77
|
+
priceAmount: string;
|
|
78
|
+
paymentToken: string;
|
|
79
|
+
startDate: string;
|
|
80
|
+
startTime: string;
|
|
81
|
+
endDate: string;
|
|
82
|
+
endTime: string;
|
|
83
|
+
maxPerWallet: string;
|
|
84
|
+
whitelistEnabled: boolean;
|
|
85
|
+
allowlistAddresses: string;
|
|
86
|
+
descriptionTemplate?: string | undefined;
|
|
87
|
+
}, {
|
|
88
|
+
symbol: string;
|
|
89
|
+
name: string;
|
|
90
|
+
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
91
|
+
licenseType: string;
|
|
92
|
+
paymentToken: string;
|
|
93
|
+
startDate: string;
|
|
94
|
+
endDate: string;
|
|
95
|
+
derivatives?: string | undefined;
|
|
96
|
+
commercialUse?: string | undefined;
|
|
97
|
+
attribution?: string | undefined;
|
|
98
|
+
aiPolicy?: string | undefined;
|
|
99
|
+
geographicScope?: string | undefined;
|
|
100
|
+
royalty?: number | undefined;
|
|
101
|
+
descriptionTemplate?: string | undefined;
|
|
102
|
+
priceAmount?: string | undefined;
|
|
103
|
+
startTime?: string | undefined;
|
|
104
|
+
endTime?: string | undefined;
|
|
105
|
+
maxPerWallet?: string | undefined;
|
|
106
|
+
whitelistEnabled?: boolean | undefined;
|
|
107
|
+
allowlistAddresses?: string | undefined;
|
|
108
|
+
}>;
|
|
109
|
+
type DropCreateFormValues = z.infer<typeof dropCreateSchema>;
|
|
110
|
+
|
|
111
|
+
export { type DropCreateFormValues, dropCreateSchema };
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
|
|
3
|
+
declare const dropCreateSchema: z.ZodEffects<z.ZodObject<{
|
|
4
|
+
name: z.ZodString;
|
|
5
|
+
symbol: z.ZodString;
|
|
6
|
+
ipType: z.ZodEnum<["Audio", "Art", "Documents", "NFT", "Video", "Photography", "Patents", "Posts", "Publications", "RWA", "Software", "Custom"]>;
|
|
7
|
+
licenseType: z.ZodString;
|
|
8
|
+
commercialUse: z.ZodDefault<z.ZodString>;
|
|
9
|
+
derivatives: z.ZodDefault<z.ZodString>;
|
|
10
|
+
attribution: z.ZodDefault<z.ZodString>;
|
|
11
|
+
geographicScope: z.ZodDefault<z.ZodString>;
|
|
12
|
+
aiPolicy: z.ZodDefault<z.ZodString>;
|
|
13
|
+
royalty: z.ZodDefault<z.ZodNumber>;
|
|
14
|
+
descriptionTemplate: z.ZodOptional<z.ZodString>;
|
|
15
|
+
priceAmount: z.ZodEffects<z.ZodEffects<z.ZodDefault<z.ZodString>, string, string | undefined>, string, string | undefined>;
|
|
16
|
+
paymentToken: z.ZodString;
|
|
17
|
+
startDate: z.ZodString;
|
|
18
|
+
startTime: z.ZodDefault<z.ZodString>;
|
|
19
|
+
endDate: z.ZodString;
|
|
20
|
+
endTime: z.ZodDefault<z.ZodString>;
|
|
21
|
+
maxPerWallet: z.ZodDefault<z.ZodEffects<z.ZodString, string, string>>;
|
|
22
|
+
whitelistEnabled: z.ZodDefault<z.ZodBoolean>;
|
|
23
|
+
allowlistAddresses: z.ZodDefault<z.ZodString>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
symbol: string;
|
|
26
|
+
derivatives: string;
|
|
27
|
+
name: string;
|
|
28
|
+
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
29
|
+
licenseType: string;
|
|
30
|
+
commercialUse: string;
|
|
31
|
+
attribution: string;
|
|
32
|
+
aiPolicy: string;
|
|
33
|
+
geographicScope: string;
|
|
34
|
+
royalty: number;
|
|
35
|
+
priceAmount: string;
|
|
36
|
+
paymentToken: string;
|
|
37
|
+
startDate: string;
|
|
38
|
+
startTime: string;
|
|
39
|
+
endDate: string;
|
|
40
|
+
endTime: string;
|
|
41
|
+
maxPerWallet: string;
|
|
42
|
+
whitelistEnabled: boolean;
|
|
43
|
+
allowlistAddresses: string;
|
|
44
|
+
descriptionTemplate?: string | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
symbol: string;
|
|
47
|
+
name: string;
|
|
48
|
+
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
49
|
+
licenseType: string;
|
|
50
|
+
paymentToken: string;
|
|
51
|
+
startDate: string;
|
|
52
|
+
endDate: string;
|
|
53
|
+
derivatives?: string | undefined;
|
|
54
|
+
commercialUse?: string | undefined;
|
|
55
|
+
attribution?: string | undefined;
|
|
56
|
+
aiPolicy?: string | undefined;
|
|
57
|
+
geographicScope?: string | undefined;
|
|
58
|
+
royalty?: number | undefined;
|
|
59
|
+
descriptionTemplate?: string | undefined;
|
|
60
|
+
priceAmount?: string | undefined;
|
|
61
|
+
startTime?: string | undefined;
|
|
62
|
+
endTime?: string | undefined;
|
|
63
|
+
maxPerWallet?: string | undefined;
|
|
64
|
+
whitelistEnabled?: boolean | undefined;
|
|
65
|
+
allowlistAddresses?: string | undefined;
|
|
66
|
+
}>, {
|
|
67
|
+
symbol: string;
|
|
68
|
+
derivatives: string;
|
|
69
|
+
name: string;
|
|
70
|
+
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
71
|
+
licenseType: string;
|
|
72
|
+
commercialUse: string;
|
|
73
|
+
attribution: string;
|
|
74
|
+
aiPolicy: string;
|
|
75
|
+
geographicScope: string;
|
|
76
|
+
royalty: number;
|
|
77
|
+
priceAmount: string;
|
|
78
|
+
paymentToken: string;
|
|
79
|
+
startDate: string;
|
|
80
|
+
startTime: string;
|
|
81
|
+
endDate: string;
|
|
82
|
+
endTime: string;
|
|
83
|
+
maxPerWallet: string;
|
|
84
|
+
whitelistEnabled: boolean;
|
|
85
|
+
allowlistAddresses: string;
|
|
86
|
+
descriptionTemplate?: string | undefined;
|
|
87
|
+
}, {
|
|
88
|
+
symbol: string;
|
|
89
|
+
name: string;
|
|
90
|
+
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
91
|
+
licenseType: string;
|
|
92
|
+
paymentToken: string;
|
|
93
|
+
startDate: string;
|
|
94
|
+
endDate: string;
|
|
95
|
+
derivatives?: string | undefined;
|
|
96
|
+
commercialUse?: string | undefined;
|
|
97
|
+
attribution?: string | undefined;
|
|
98
|
+
aiPolicy?: string | undefined;
|
|
99
|
+
geographicScope?: string | undefined;
|
|
100
|
+
royalty?: number | undefined;
|
|
101
|
+
descriptionTemplate?: string | undefined;
|
|
102
|
+
priceAmount?: string | undefined;
|
|
103
|
+
startTime?: string | undefined;
|
|
104
|
+
endTime?: string | undefined;
|
|
105
|
+
maxPerWallet?: string | undefined;
|
|
106
|
+
whitelistEnabled?: boolean | undefined;
|
|
107
|
+
allowlistAddresses?: string | undefined;
|
|
108
|
+
}>;
|
|
109
|
+
type DropCreateFormValues = z.infer<typeof dropCreateSchema>;
|
|
110
|
+
|
|
111
|
+
export { type DropCreateFormValues, dropCreateSchema };
|