@burdenoff/microfe-store 2026.626.1 → 2026.626.2

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.
@@ -1,243 +0,0 @@
1
- import { CreateProductForPublisherDocument as e } from "../generated/global-operations.js";
2
- import { useMemo as t, useState as n } from "react";
3
- import { useApolloClient as r } from "@apollo/client/react";
4
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
- import { GlassCard as o, PagePurpose as s } from "@burdenoff/fe-libs/ui";
6
- //#region src/pages/PublisherSubmitPage.tsx
7
- var c = JSON.stringify({
8
- schemaVersion: "1.0.0",
9
- itemType: "app",
10
- author: { name: "Publisher Team" },
11
- compatibility: {
12
- minVersion: "2026.1.0",
13
- products: ["workspaces"]
14
- },
15
- permissions: ["workspace:read"],
16
- dependencies: { integrations: [] }
17
- }, null, 2), l = () => {
18
- let l = r(), [u, d] = n(""), [f, p] = n(""), [m, h] = n(""), [g, _] = n("APP"), [v, y] = n("0"), [b, x] = n(c), [S, C] = n(!1), [w, T] = n(null), [E, D] = n(null), O = t(() => {
19
- try {
20
- return {
21
- value: JSON.parse(b),
22
- error: null
23
- };
24
- } catch {
25
- return {
26
- value: null,
27
- error: "Manifest JSON is invalid."
28
- };
29
- }
30
- }, [b]);
31
- return /* @__PURE__ */ a("main", {
32
- className: "mx-auto max-w-4xl p-6",
33
- children: [
34
- /* @__PURE__ */ a("header", {
35
- className: "mb-6",
36
- children: [/* @__PURE__ */ i("h1", {
37
- className: "text-2xl font-semibold text-text-primary",
38
- children: "Submit Product"
39
- }), /* @__PURE__ */ i("p", {
40
- className: "mt-1 text-sm text-text-muted",
41
- children: "Create a store product with manifest JSON (raw mode)."
42
- })]
43
- }),
44
- /* @__PURE__ */ i(s, {
45
- className: "mb-6",
46
- children: "List your own app, agent, node, widget, or workflow on the marketplace so other users can discover and install it. Fill in the basics, set a price (use 0 for free), and provide a manifest describing what it does and needs. After you submit, it enters review — track it from your Submissions page."
47
- }),
48
- /* @__PURE__ */ i(o, {
49
- treatment: "glass",
50
- glow: !0,
51
- className: "p-5",
52
- children: /* @__PURE__ */ a("form", {
53
- onSubmit: async (t) => {
54
- if (t.preventDefault(), T(null), D(null), !u.trim()) {
55
- T("Product name is required.");
56
- return;
57
- }
58
- if (!f.trim()) {
59
- T("Product slug is required.");
60
- return;
61
- }
62
- if (O.error || !O.value) {
63
- T(O.error || "Manifest JSON is required.");
64
- return;
65
- }
66
- let n = Number(v);
67
- if (!Number.isFinite(n) || n < 0) {
68
- T("Price must be a valid non-negative number.");
69
- return;
70
- }
71
- C(!0);
72
- try {
73
- let t = (await l.mutate({
74
- mutation: e,
75
- variables: { input: {
76
- name: u.trim(),
77
- slug: f.trim(),
78
- type: g,
79
- price: n,
80
- pricingModel: n === 0 ? "FREE" : "PAID_ONETIME",
81
- description: m.trim() || void 0,
82
- manifest: O.value
83
- } }
84
- })).data?.createProduct;
85
- if (!t) {
86
- T("Product creation failed: no product returned by API.");
87
- return;
88
- }
89
- D(`Created ${t.slug} (${t.status})`), d(""), p(""), h("");
90
- } catch (e) {
91
- T(e instanceof Error ? e.message : "Unknown error");
92
- } finally {
93
- C(!1);
94
- }
95
- },
96
- className: "space-y-4",
97
- "aria-label": "Submit Product",
98
- children: [
99
- /* @__PURE__ */ a("div", {
100
- className: "grid gap-4 md:grid-cols-2",
101
- children: [
102
- /* @__PURE__ */ a("label", {
103
- className: "space-y-1",
104
- children: [/* @__PURE__ */ i("span", {
105
- className: "text-sm text-text-secondary",
106
- children: "Product Name"
107
- }), /* @__PURE__ */ i("input", {
108
- "aria-label": "Product Name",
109
- value: u,
110
- onChange: (e) => d(e.target.value),
111
- required: !0,
112
- "aria-required": "true",
113
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary",
114
- placeholder: "Acme Automation"
115
- })]
116
- }),
117
- /* @__PURE__ */ a("label", {
118
- className: "space-y-1",
119
- children: [/* @__PURE__ */ i("span", {
120
- className: "text-sm text-text-secondary",
121
- children: "Slug"
122
- }), /* @__PURE__ */ i("input", {
123
- "aria-label": "Slug",
124
- value: f,
125
- onChange: (e) => p(e.target.value),
126
- required: !0,
127
- "aria-required": "true",
128
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary",
129
- placeholder: "acme-automation"
130
- })]
131
- }),
132
- /* @__PURE__ */ a("label", {
133
- className: "space-y-1",
134
- children: [/* @__PURE__ */ i("span", {
135
- className: "text-sm text-text-secondary",
136
- children: "Type"
137
- }), /* @__PURE__ */ a("select", {
138
- "aria-label": "Product type",
139
- value: g,
140
- onChange: (e) => _(e.target.value),
141
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary",
142
- children: [
143
- /* @__PURE__ */ i("option", {
144
- value: "APP",
145
- children: "APP"
146
- }),
147
- /* @__PURE__ */ i("option", {
148
- value: "AGENT",
149
- children: "AGENT"
150
- }),
151
- /* @__PURE__ */ i("option", {
152
- value: "NODE",
153
- children: "NODE"
154
- }),
155
- /* @__PURE__ */ i("option", {
156
- value: "WIDGET",
157
- children: "WIDGET"
158
- }),
159
- /* @__PURE__ */ i("option", {
160
- value: "WORKFLOW",
161
- children: "WORKFLOW"
162
- })
163
- ]
164
- })]
165
- }),
166
- /* @__PURE__ */ a("label", {
167
- className: "space-y-1",
168
- children: [/* @__PURE__ */ i("span", {
169
- className: "text-sm text-text-secondary",
170
- children: "Price"
171
- }), /* @__PURE__ */ i("input", {
172
- type: "number",
173
- "aria-label": "Price",
174
- min: "0",
175
- step: "0.01",
176
- value: v,
177
- onChange: (e) => y(e.target.value),
178
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary"
179
- })]
180
- })
181
- ]
182
- }),
183
- /* @__PURE__ */ a("label", {
184
- className: "block space-y-1",
185
- children: [/* @__PURE__ */ i("span", {
186
- className: "text-sm text-text-secondary",
187
- children: "Description"
188
- }), /* @__PURE__ */ i("textarea", {
189
- "aria-label": "Description",
190
- value: m,
191
- onChange: (e) => h(e.target.value),
192
- rows: 3,
193
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary"
194
- })]
195
- }),
196
- /* @__PURE__ */ a("label", {
197
- className: "block space-y-1",
198
- children: [
199
- /* @__PURE__ */ i("span", {
200
- className: "text-sm text-text-secondary",
201
- children: "Manifest (JSON)"
202
- }),
203
- /* @__PURE__ */ i("textarea", {
204
- "aria-label": "Manifest JSON",
205
- value: b,
206
- onChange: (e) => x(e.target.value),
207
- rows: 16,
208
- required: !0,
209
- "aria-required": "true",
210
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 font-mono text-xs text-text-primary"
211
- }),
212
- O.error && /* @__PURE__ */ i("p", {
213
- className: "text-xs text-status-error-text",
214
- children: O.error
215
- })
216
- ]
217
- }),
218
- w && /* @__PURE__ */ i("p", {
219
- role: "alert",
220
- className: "rounded-md bg-status-error-bg-subtle px-3 py-2 text-sm text-status-error-text",
221
- children: w
222
- }),
223
- E && /* @__PURE__ */ i("p", {
224
- role: "status",
225
- className: "rounded-md bg-status-success-bg-subtle px-3 py-2 text-sm text-status-success-text",
226
- children: E
227
- }),
228
- /* @__PURE__ */ i("button", {
229
- type: "submit",
230
- disabled: S,
231
- className: "rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text disabled:cursor-not-allowed disabled:opacity-60",
232
- children: S ? "Submitting..." : "Submit Product"
233
- })
234
- ]
235
- })
236
- })
237
- ]
238
- });
239
- };
240
- //#endregion
241
- export { l as PublisherSubmitPage };
242
-
243
- //# sourceMappingURL=PublisherSubmitPage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PublisherSubmitPage.js","names":[],"sources":["../../src/pages/PublisherSubmitPage.tsx"],"sourcesContent":["import { useApolloClient } from '@apollo/client/react';\nimport { useMemo, useState, type FC, type FormEvent } from 'react';\n\nimport { GlassCard, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { CreateProductForPublisherDocument } from '../generated/global-operations';\n\nconst DEFAULT_MANIFEST = JSON.stringify(\n {\n schemaVersion: '1.0.0',\n itemType: 'app',\n author: { name: 'Publisher Team' },\n compatibility: {\n minVersion: '2026.1.0',\n products: ['workspaces'],\n },\n permissions: ['workspace:read'],\n dependencies: {\n integrations: [],\n },\n },\n null,\n 2\n);\n\nexport const PublisherSubmitPage: FC = () => {\n const client = useApolloClient();\n\n const [name, setName] = useState('');\n const [slug, setSlug] = useState('');\n const [description, setDescription] = useState('');\n const [type, setType] = useState('APP');\n const [price, setPrice] = useState('0');\n const [manifestText, setManifestText] = useState(DEFAULT_MANIFEST);\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [success, setSuccess] = useState<string | null>(null);\n\n const parsedManifest = useMemo(() => {\n try {\n return { value: JSON.parse(manifestText), error: null as string | null };\n } catch {\n return { value: null, error: 'Manifest JSON is invalid.' };\n }\n }, [manifestText]);\n\n const submitProduct = async (event: FormEvent) => {\n event.preventDefault();\n setError(null);\n setSuccess(null);\n\n if (!name.trim()) {\n setError('Product name is required.');\n return;\n }\n if (!slug.trim()) {\n setError('Product slug is required.');\n return;\n }\n if (parsedManifest.error || !parsedManifest.value) {\n setError(parsedManifest.error || 'Manifest JSON is required.');\n return;\n }\n\n const numericPrice = Number(price);\n if (!Number.isFinite(numericPrice) || numericPrice < 0) {\n setError('Price must be a valid non-negative number.');\n return;\n }\n\n setSubmitting(true);\n try {\n const result = await client.mutate<{\n createProduct?: { id: string; slug: string; status: string };\n }>({\n mutation: CreateProductForPublisherDocument,\n variables: {\n input: {\n name: name.trim(),\n slug: slug.trim(),\n type,\n price: numericPrice,\n pricingModel: numericPrice === 0 ? 'FREE' : 'PAID_ONETIME',\n description: description.trim() || undefined,\n manifest: parsedManifest.value,\n },\n },\n });\n\n const created = result.data?.createProduct;\n if (!created) {\n setError('Product creation failed: no product returned by API.');\n return;\n }\n\n setSuccess(`Created ${created.slug} (${created.status})`);\n setName('');\n setSlug('');\n setDescription('');\n } catch (mutationError) {\n const message = mutationError instanceof Error ? mutationError.message : 'Unknown error';\n setError(message);\n } finally {\n setSubmitting(false);\n }\n };\n\n return (\n <main className=\"mx-auto max-w-4xl p-6\">\n <header className=\"mb-6\">\n <h1 className=\"text-2xl font-semibold text-text-primary\">Submit Product</h1>\n <p className=\"mt-1 text-sm text-text-muted\">\n Create a store product with manifest JSON (raw mode).\n </p>\n </header>\n\n <PagePurpose className=\"mb-6\">\n List your own app, agent, node, widget, or workflow on the marketplace so other users can\n discover and install it. Fill in the basics, set a price (use 0 for free), and provide a\n manifest describing what it does and needs. After you submit, it enters review — track it\n from your Submissions page.\n </PagePurpose>\n\n <GlassCard treatment=\"glass\" glow className=\"p-5\">\n <form onSubmit={submitProduct} className=\"space-y-4\" aria-label=\"Submit Product\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n <label className=\"space-y-1\">\n <span className=\"text-sm text-text-secondary\">Product Name</span>\n <input\n aria-label=\"Product Name\"\n value={name}\n onChange={(event) => setName(event.target.value)}\n required\n aria-required=\"true\"\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n placeholder=\"Acme Automation\"\n />\n </label>\n\n <label className=\"space-y-1\">\n <span className=\"text-sm text-text-secondary\">Slug</span>\n <input\n aria-label=\"Slug\"\n value={slug}\n onChange={(event) => setSlug(event.target.value)}\n required\n aria-required=\"true\"\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n placeholder=\"acme-automation\"\n />\n </label>\n\n <label className=\"space-y-1\">\n <span className=\"text-sm text-text-secondary\">Type</span>\n <select\n aria-label=\"Product type\"\n value={type}\n onChange={(event) => setType(event.target.value)}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n <option value=\"APP\">APP</option>\n <option value=\"AGENT\">AGENT</option>\n <option value=\"NODE\">NODE</option>\n <option value=\"WIDGET\">WIDGET</option>\n <option value=\"WORKFLOW\">WORKFLOW</option>\n </select>\n </label>\n\n <label className=\"space-y-1\">\n <span className=\"text-sm text-text-secondary\">Price</span>\n <input\n type=\"number\"\n aria-label=\"Price\"\n min=\"0\"\n step=\"0.01\"\n value={price}\n onChange={(event) => setPrice(event.target.value)}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </label>\n </div>\n\n <label className=\"block space-y-1\">\n <span className=\"text-sm text-text-secondary\">Description</span>\n <textarea\n aria-label=\"Description\"\n value={description}\n onChange={(event) => setDescription(event.target.value)}\n rows={3}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </label>\n\n <label className=\"block space-y-1\">\n <span className=\"text-sm text-text-secondary\">Manifest (JSON)</span>\n <textarea\n aria-label=\"Manifest JSON\"\n value={manifestText}\n onChange={(event) => setManifestText(event.target.value)}\n rows={16}\n required\n aria-required=\"true\"\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 font-mono text-xs text-text-primary\"\n />\n {parsedManifest.error && (\n <p className=\"text-xs text-status-error-text\">{parsedManifest.error}</p>\n )}\n </label>\n\n {error && (\n <p\n role=\"alert\"\n className=\"rounded-md bg-status-error-bg-subtle px-3 py-2 text-sm text-status-error-text\"\n >\n {error}\n </p>\n )}\n {success && (\n <p\n role=\"status\"\n className=\"rounded-md bg-status-success-bg-subtle px-3 py-2 text-sm text-status-success-text\"\n >\n {success}\n </p>\n )}\n\n <button\n type=\"submit\"\n disabled={submitting}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text disabled:cursor-not-allowed disabled:opacity-60\"\n >\n {submitting ? 'Submitting...' : 'Submit Product'}\n </button>\n </form>\n </GlassCard>\n </main>\n );\n};\n"],"mappings":"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"}