@burdenoff/microfe-eventfullymanaged 2026.608.1 → 2026.625.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.
- package/dist/eventfullymanaged/components/PageLayout.js +44 -38
- package/dist/eventfullymanaged/components/PageLayout.js.map +1 -1
- package/dist/eventfullymanaged/pages/dashboard/DashboardPage.js +93 -40
- package/dist/eventfullymanaged/pages/dashboard/DashboardPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js +32 -29
- package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js +85 -50
- package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/CommunicationPage.js +49 -50
- package/dist/eventfullymanaged/pages/modules/CommunicationPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/EntityListSection.js +57 -25
- package/dist/eventfullymanaged/pages/modules/EntityListSection.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/EventsPage.js +93 -66
- package/dist/eventfullymanaged/pages/modules/EventsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/KioskPage.js +18 -19
- package/dist/eventfullymanaged/pages/modules/KioskPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/NetworkingPage.js +60 -30
- package/dist/eventfullymanaged/pages/modules/NetworkingPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js +146 -108
- package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.js +67 -38
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js +84 -49
- package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js +57 -28
- package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js +106 -72
- package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js +84 -68
- package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js +202 -204
- package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js +58 -39
- package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js +53 -46
- package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js +109 -63
- package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/VenueFormPage.js +193 -197
- package/dist/eventfullymanaged/pages/venues/VenueFormPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/VenueListPage.js +65 -36
- package/dist/eventfullymanaged/pages/venues/VenueListPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -4,8 +4,9 @@ import { useEffect as a, useMemo as o, useState as s } from "react";
|
|
|
4
4
|
import { useParams as c } from "react-router-dom";
|
|
5
5
|
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
6
|
import { ArrowLeft as d, Save as f } from "lucide-react";
|
|
7
|
+
import { Button as p, EmphasisPanel as m, Input as h, PagePurpose as g } from "@burdenoff/fe-libs/ui";
|
|
7
8
|
//#region src/eventfullymanaged/pages/sponsors/SponsorFormPage.tsx
|
|
8
|
-
var
|
|
9
|
+
var _ = {
|
|
9
10
|
eventId: "",
|
|
10
11
|
name: "",
|
|
11
12
|
level: "BRONZE",
|
|
@@ -16,242 +17,239 @@ var p = {
|
|
|
16
17
|
value: "0",
|
|
17
18
|
leads: "0"
|
|
18
19
|
};
|
|
19
|
-
function
|
|
20
|
-
let { id:
|
|
20
|
+
function v() {
|
|
21
|
+
let { id: v = "" } = c(), y = o(() => !!v, [v]), { navigate: b } = e(), { data: x } = n({
|
|
21
22
|
limit: 100,
|
|
22
23
|
offset: 0
|
|
23
|
-
}), { data:
|
|
24
|
+
}), { data: S } = r({
|
|
24
25
|
limit: 100,
|
|
25
26
|
offset: 0
|
|
26
|
-
}),
|
|
27
|
-
eventId:
|
|
28
|
-
name:
|
|
29
|
-
level:
|
|
30
|
-
website:
|
|
31
|
-
contactName:
|
|
32
|
-
contactEmail:
|
|
33
|
-
contactPhone:
|
|
34
|
-
value: String(
|
|
35
|
-
leads: String(
|
|
36
|
-
} :
|
|
27
|
+
}), C = o(() => (S?.sponsors?.items ?? []).find((e) => e.id === v), [v, S]), [w, { loading: T }] = t(), [E, { loading: D }] = i(), [O, k] = s(() => C ? {
|
|
28
|
+
eventId: C.eventId ?? "",
|
|
29
|
+
name: C.name ?? "",
|
|
30
|
+
level: C.level ?? "BRONZE",
|
|
31
|
+
website: C.website ?? "",
|
|
32
|
+
contactName: C.contactName ?? "",
|
|
33
|
+
contactEmail: C.contactEmail ?? "",
|
|
34
|
+
contactPhone: C.contactPhone ?? "",
|
|
35
|
+
value: String(C.metrics?.value ?? 0),
|
|
36
|
+
leads: String(C.metrics?.leads ?? 0)
|
|
37
|
+
} : _);
|
|
37
38
|
a(() => {
|
|
38
|
-
|
|
39
|
-
eventId:
|
|
40
|
-
name:
|
|
41
|
-
level:
|
|
42
|
-
website:
|
|
43
|
-
contactName:
|
|
44
|
-
contactEmail:
|
|
45
|
-
contactPhone:
|
|
46
|
-
value: String(
|
|
47
|
-
leads: String(
|
|
39
|
+
C && k({
|
|
40
|
+
eventId: C.eventId ?? "",
|
|
41
|
+
name: C.name ?? "",
|
|
42
|
+
level: C.level ?? "BRONZE",
|
|
43
|
+
website: C.website ?? "",
|
|
44
|
+
contactName: C.contactName ?? "",
|
|
45
|
+
contactEmail: C.contactEmail ?? "",
|
|
46
|
+
contactPhone: C.contactPhone ?? "",
|
|
47
|
+
value: String(C.metrics?.value ?? 0),
|
|
48
|
+
leads: String(C.metrics?.leads ?? 0)
|
|
48
49
|
});
|
|
49
|
-
}, [
|
|
50
|
-
let
|
|
51
|
-
|
|
50
|
+
}, [C]);
|
|
51
|
+
let A = (e, t) => {
|
|
52
|
+
k((n) => ({
|
|
52
53
|
...n,
|
|
53
54
|
[e]: t
|
|
54
55
|
}));
|
|
55
|
-
},
|
|
56
|
+
}, j = async (e) => {
|
|
56
57
|
e.preventDefault();
|
|
57
58
|
let t = {
|
|
58
|
-
eventId:
|
|
59
|
-
name:
|
|
60
|
-
level:
|
|
61
|
-
website:
|
|
62
|
-
contactName:
|
|
63
|
-
contactEmail:
|
|
64
|
-
contactPhone:
|
|
59
|
+
eventId: O.eventId,
|
|
60
|
+
name: O.name,
|
|
61
|
+
level: O.level,
|
|
62
|
+
website: O.website,
|
|
63
|
+
contactName: O.contactName,
|
|
64
|
+
contactEmail: O.contactEmail,
|
|
65
|
+
contactPhone: O.contactPhone,
|
|
65
66
|
metrics: {
|
|
66
|
-
value: Number(
|
|
67
|
-
leads: Number(
|
|
67
|
+
value: Number(O.value || 0),
|
|
68
|
+
leads: Number(O.leads || 0)
|
|
68
69
|
},
|
|
69
70
|
metadata: {}
|
|
70
71
|
};
|
|
71
|
-
if (
|
|
72
|
-
await
|
|
73
|
-
id:
|
|
72
|
+
if (y) {
|
|
73
|
+
await E({ variables: {
|
|
74
|
+
id: v,
|
|
74
75
|
input: t
|
|
75
|
-
} }),
|
|
76
|
+
} }), b("/sponsors");
|
|
76
77
|
return;
|
|
77
78
|
}
|
|
78
|
-
await
|
|
79
|
-
},
|
|
79
|
+
await w({ variables: { input: t } }), b("/sponsors");
|
|
80
|
+
}, M = T || D, N = x?.events?.items ?? [], P = "w-full rounded-input border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary transition-colors focus-visible:border-border-focus focus-visible:outline-none focus-visible:shadow-[var(--shadow-focus)] focus-visible:ring-1 focus-visible:ring-[var(--color-focus-ring)]";
|
|
80
81
|
return /* @__PURE__ */ u("div", {
|
|
81
82
|
className: "space-y-6 p-6",
|
|
82
|
-
children: [
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
children:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}), /* @__PURE__ */ u("select", {
|
|
102
|
-
value: w.eventId,
|
|
103
|
-
onChange: (e) => E("eventId", e.target.value),
|
|
104
|
-
required: !0,
|
|
105
|
-
className: "w-full rounded-md border border-border-default px-3 py-2",
|
|
106
|
-
children: [/* @__PURE__ */ l("option", {
|
|
107
|
-
value: "",
|
|
108
|
-
children: "Select Event"
|
|
109
|
-
}), k.map((e) => /* @__PURE__ */ l("option", {
|
|
110
|
-
value: e.id,
|
|
111
|
-
children: e.name
|
|
112
|
-
}, e.id))]
|
|
113
|
-
})]
|
|
114
|
-
}), /* @__PURE__ */ u("label", {
|
|
115
|
-
className: "space-y-1 text-sm",
|
|
116
|
-
children: [/* @__PURE__ */ l("span", {
|
|
117
|
-
className: "font-medium text-text-primary",
|
|
118
|
-
children: "Sponsor Name"
|
|
119
|
-
}), /* @__PURE__ */ l("input", {
|
|
120
|
-
value: w.name,
|
|
121
|
-
onChange: (e) => E("name", e.target.value),
|
|
122
|
-
required: !0,
|
|
123
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
124
|
-
})]
|
|
125
|
-
})]
|
|
126
|
-
}),
|
|
127
|
-
/* @__PURE__ */ u("div", {
|
|
128
|
-
className: "grid grid-cols-1 gap-4 md:grid-cols-3",
|
|
129
|
-
children: [
|
|
130
|
-
/* @__PURE__ */ u("label", {
|
|
83
|
+
children: [
|
|
84
|
+
/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ u(p, {
|
|
85
|
+
type: "button",
|
|
86
|
+
variant: "ghost",
|
|
87
|
+
size: "sm",
|
|
88
|
+
onClick: () => b("/sponsors"),
|
|
89
|
+
children: [/* @__PURE__ */ l(d, { className: "h-4 w-4" }), "Back to Sponsors"]
|
|
90
|
+
}), /* @__PURE__ */ l("h1", {
|
|
91
|
+
className: "mt-3 text-2xl font-bold text-text-primary",
|
|
92
|
+
children: y ? "Edit Sponsor" : "Create Sponsor"
|
|
93
|
+
})] }),
|
|
94
|
+
/* @__PURE__ */ l(g, { children: "Capture a sponsor and the deal behind it. Link them to an event, set their tier, and record the contract value and leads target so you can measure ROI later. The contact fields are who you will work with day to day, so keep them accurate." }),
|
|
95
|
+
/* @__PURE__ */ l(m, { children: /* @__PURE__ */ u("form", {
|
|
96
|
+
onSubmit: j,
|
|
97
|
+
className: "space-y-4",
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ u("div", {
|
|
100
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-2",
|
|
101
|
+
children: [/* @__PURE__ */ u("label", {
|
|
131
102
|
className: "space-y-1 text-sm",
|
|
132
103
|
children: [/* @__PURE__ */ l("span", {
|
|
133
104
|
className: "font-medium text-text-primary",
|
|
134
|
-
children: "
|
|
105
|
+
children: "Event"
|
|
135
106
|
}), /* @__PURE__ */ u("select", {
|
|
136
|
-
value:
|
|
137
|
-
onChange: (e) =>
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}),
|
|
148
|
-
/* @__PURE__ */ l("option", {
|
|
149
|
-
value: "SILVER",
|
|
150
|
-
children: "Silver"
|
|
151
|
-
}),
|
|
152
|
-
/* @__PURE__ */ l("option", {
|
|
153
|
-
value: "BRONZE",
|
|
154
|
-
children: "Bronze"
|
|
155
|
-
}),
|
|
156
|
-
/* @__PURE__ */ l("option", {
|
|
157
|
-
value: "COMMUNITY",
|
|
158
|
-
children: "Community"
|
|
159
|
-
})
|
|
160
|
-
]
|
|
161
|
-
})]
|
|
162
|
-
}),
|
|
163
|
-
/* @__PURE__ */ u("label", {
|
|
164
|
-
className: "space-y-1 text-sm",
|
|
165
|
-
children: [/* @__PURE__ */ l("span", {
|
|
166
|
-
className: "font-medium text-text-primary",
|
|
167
|
-
children: "Value"
|
|
168
|
-
}), /* @__PURE__ */ l("input", {
|
|
169
|
-
type: "number",
|
|
170
|
-
min: "0",
|
|
171
|
-
value: w.value,
|
|
172
|
-
onChange: (e) => E("value", e.target.value),
|
|
173
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
107
|
+
value: O.eventId,
|
|
108
|
+
onChange: (e) => A("eventId", e.target.value),
|
|
109
|
+
required: !0,
|
|
110
|
+
className: P,
|
|
111
|
+
children: [/* @__PURE__ */ l("option", {
|
|
112
|
+
value: "",
|
|
113
|
+
children: "Select Event"
|
|
114
|
+
}), N.map((e) => /* @__PURE__ */ l("option", {
|
|
115
|
+
value: e.id,
|
|
116
|
+
children: e.name
|
|
117
|
+
}, e.id))]
|
|
174
118
|
})]
|
|
175
|
-
}),
|
|
176
|
-
/* @__PURE__ */ u("label", {
|
|
119
|
+
}), /* @__PURE__ */ u("label", {
|
|
177
120
|
className: "space-y-1 text-sm",
|
|
178
121
|
children: [/* @__PURE__ */ l("span", {
|
|
179
122
|
className: "font-medium text-text-primary",
|
|
180
|
-
children: "
|
|
181
|
-
}), /* @__PURE__ */ l(
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
onChange: (e) => E("leads", e.target.value),
|
|
186
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
187
|
-
})]
|
|
188
|
-
})
|
|
189
|
-
]
|
|
190
|
-
}),
|
|
191
|
-
/* @__PURE__ */ u("label", {
|
|
192
|
-
className: "block space-y-1 text-sm",
|
|
193
|
-
children: [/* @__PURE__ */ l("span", {
|
|
194
|
-
className: "font-medium text-text-primary",
|
|
195
|
-
children: "Website"
|
|
196
|
-
}), /* @__PURE__ */ l("input", {
|
|
197
|
-
value: w.website,
|
|
198
|
-
onChange: (e) => E("website", e.target.value),
|
|
199
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
200
|
-
})]
|
|
201
|
-
}),
|
|
202
|
-
/* @__PURE__ */ u("div", {
|
|
203
|
-
className: "grid grid-cols-1 gap-4 md:grid-cols-3",
|
|
204
|
-
children: [
|
|
205
|
-
/* @__PURE__ */ u("label", {
|
|
206
|
-
className: "space-y-1 text-sm",
|
|
207
|
-
children: [/* @__PURE__ */ l("span", {
|
|
208
|
-
className: "font-medium text-text-primary",
|
|
209
|
-
children: "Contact Name"
|
|
210
|
-
}), /* @__PURE__ */ l("input", {
|
|
211
|
-
value: w.contactName,
|
|
212
|
-
onChange: (e) => E("contactName", e.target.value),
|
|
213
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
214
|
-
})]
|
|
215
|
-
}),
|
|
216
|
-
/* @__PURE__ */ u("label", {
|
|
217
|
-
className: "space-y-1 text-sm",
|
|
218
|
-
children: [/* @__PURE__ */ l("span", {
|
|
219
|
-
className: "font-medium text-text-primary",
|
|
220
|
-
children: "Contact Email"
|
|
221
|
-
}), /* @__PURE__ */ l("input", {
|
|
222
|
-
type: "email",
|
|
223
|
-
value: w.contactEmail,
|
|
224
|
-
onChange: (e) => E("contactEmail", e.target.value),
|
|
225
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
226
|
-
})]
|
|
227
|
-
}),
|
|
228
|
-
/* @__PURE__ */ u("label", {
|
|
229
|
-
className: "space-y-1 text-sm",
|
|
230
|
-
children: [/* @__PURE__ */ l("span", {
|
|
231
|
-
className: "font-medium text-text-primary",
|
|
232
|
-
children: "Contact Phone"
|
|
233
|
-
}), /* @__PURE__ */ l("input", {
|
|
234
|
-
value: w.contactPhone,
|
|
235
|
-
onChange: (e) => E("contactPhone", e.target.value),
|
|
236
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
123
|
+
children: "Sponsor Name"
|
|
124
|
+
}), /* @__PURE__ */ l(h, {
|
|
125
|
+
value: O.name,
|
|
126
|
+
onChange: (e) => A("name", e.target.value),
|
|
127
|
+
required: !0
|
|
237
128
|
})]
|
|
129
|
+
})]
|
|
130
|
+
}),
|
|
131
|
+
/* @__PURE__ */ u("div", {
|
|
132
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-3",
|
|
133
|
+
children: [
|
|
134
|
+
/* @__PURE__ */ u("label", {
|
|
135
|
+
className: "space-y-1 text-sm",
|
|
136
|
+
children: [/* @__PURE__ */ l("span", {
|
|
137
|
+
className: "font-medium text-text-primary",
|
|
138
|
+
children: "Level"
|
|
139
|
+
}), /* @__PURE__ */ u("select", {
|
|
140
|
+
value: O.level,
|
|
141
|
+
onChange: (e) => A("level", e.target.value),
|
|
142
|
+
className: P,
|
|
143
|
+
children: [
|
|
144
|
+
/* @__PURE__ */ l("option", {
|
|
145
|
+
value: "PLATINUM",
|
|
146
|
+
children: "Platinum"
|
|
147
|
+
}),
|
|
148
|
+
/* @__PURE__ */ l("option", {
|
|
149
|
+
value: "GOLD",
|
|
150
|
+
children: "Gold"
|
|
151
|
+
}),
|
|
152
|
+
/* @__PURE__ */ l("option", {
|
|
153
|
+
value: "SILVER",
|
|
154
|
+
children: "Silver"
|
|
155
|
+
}),
|
|
156
|
+
/* @__PURE__ */ l("option", {
|
|
157
|
+
value: "BRONZE",
|
|
158
|
+
children: "Bronze"
|
|
159
|
+
}),
|
|
160
|
+
/* @__PURE__ */ l("option", {
|
|
161
|
+
value: "COMMUNITY",
|
|
162
|
+
children: "Community"
|
|
163
|
+
})
|
|
164
|
+
]
|
|
165
|
+
})]
|
|
166
|
+
}),
|
|
167
|
+
/* @__PURE__ */ u("label", {
|
|
168
|
+
className: "space-y-1 text-sm",
|
|
169
|
+
children: [/* @__PURE__ */ l("span", {
|
|
170
|
+
className: "font-medium text-text-primary",
|
|
171
|
+
children: "Value"
|
|
172
|
+
}), /* @__PURE__ */ l(h, {
|
|
173
|
+
type: "number",
|
|
174
|
+
min: "0",
|
|
175
|
+
value: O.value,
|
|
176
|
+
onChange: (e) => A("value", e.target.value)
|
|
177
|
+
})]
|
|
178
|
+
}),
|
|
179
|
+
/* @__PURE__ */ u("label", {
|
|
180
|
+
className: "space-y-1 text-sm",
|
|
181
|
+
children: [/* @__PURE__ */ l("span", {
|
|
182
|
+
className: "font-medium text-text-primary",
|
|
183
|
+
children: "Leads"
|
|
184
|
+
}), /* @__PURE__ */ l(h, {
|
|
185
|
+
type: "number",
|
|
186
|
+
min: "0",
|
|
187
|
+
value: O.leads,
|
|
188
|
+
onChange: (e) => A("leads", e.target.value)
|
|
189
|
+
})]
|
|
190
|
+
})
|
|
191
|
+
]
|
|
192
|
+
}),
|
|
193
|
+
/* @__PURE__ */ u("label", {
|
|
194
|
+
className: "block space-y-1 text-sm",
|
|
195
|
+
children: [/* @__PURE__ */ l("span", {
|
|
196
|
+
className: "font-medium text-text-primary",
|
|
197
|
+
children: "Website"
|
|
198
|
+
}), /* @__PURE__ */ l(h, {
|
|
199
|
+
value: O.website,
|
|
200
|
+
onChange: (e) => A("website", e.target.value)
|
|
201
|
+
})]
|
|
202
|
+
}),
|
|
203
|
+
/* @__PURE__ */ u("div", {
|
|
204
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-3",
|
|
205
|
+
children: [
|
|
206
|
+
/* @__PURE__ */ u("label", {
|
|
207
|
+
className: "space-y-1 text-sm",
|
|
208
|
+
children: [/* @__PURE__ */ l("span", {
|
|
209
|
+
className: "font-medium text-text-primary",
|
|
210
|
+
children: "Contact Name"
|
|
211
|
+
}), /* @__PURE__ */ l(h, {
|
|
212
|
+
value: O.contactName,
|
|
213
|
+
onChange: (e) => A("contactName", e.target.value)
|
|
214
|
+
})]
|
|
215
|
+
}),
|
|
216
|
+
/* @__PURE__ */ u("label", {
|
|
217
|
+
className: "space-y-1 text-sm",
|
|
218
|
+
children: [/* @__PURE__ */ l("span", {
|
|
219
|
+
className: "font-medium text-text-primary",
|
|
220
|
+
children: "Contact Email"
|
|
221
|
+
}), /* @__PURE__ */ l(h, {
|
|
222
|
+
type: "email",
|
|
223
|
+
value: O.contactEmail,
|
|
224
|
+
onChange: (e) => A("contactEmail", e.target.value)
|
|
225
|
+
})]
|
|
226
|
+
}),
|
|
227
|
+
/* @__PURE__ */ u("label", {
|
|
228
|
+
className: "space-y-1 text-sm",
|
|
229
|
+
children: [/* @__PURE__ */ l("span", {
|
|
230
|
+
className: "font-medium text-text-primary",
|
|
231
|
+
children: "Contact Phone"
|
|
232
|
+
}), /* @__PURE__ */ l(h, {
|
|
233
|
+
value: O.contactPhone,
|
|
234
|
+
onChange: (e) => A("contactPhone", e.target.value)
|
|
235
|
+
})]
|
|
236
|
+
})
|
|
237
|
+
]
|
|
238
|
+
}),
|
|
239
|
+
/* @__PURE__ */ l("div", {
|
|
240
|
+
className: "flex justify-end",
|
|
241
|
+
children: /* @__PURE__ */ u(p, {
|
|
242
|
+
type: "submit",
|
|
243
|
+
disabled: M,
|
|
244
|
+
children: [/* @__PURE__ */ l(f, { className: "h-4 w-4" }), M ? "Saving..." : "Save Sponsor"]
|
|
238
245
|
})
|
|
239
|
-
]
|
|
240
|
-
}),
|
|
241
|
-
/* @__PURE__ */ l("div", {
|
|
242
|
-
className: "flex justify-end",
|
|
243
|
-
children: /* @__PURE__ */ u("button", {
|
|
244
|
-
type: "submit",
|
|
245
|
-
disabled: O,
|
|
246
|
-
className: "inline-flex items-center rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90 disabled:opacity-60",
|
|
247
|
-
children: [/* @__PURE__ */ l(f, { className: "mr-2 h-4 w-4" }), O ? "Saving..." : "Save Sponsor"]
|
|
248
246
|
})
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
247
|
+
]
|
|
248
|
+
}) })
|
|
249
|
+
]
|
|
252
250
|
});
|
|
253
251
|
}
|
|
254
252
|
//#endregion
|
|
255
|
-
export {
|
|
253
|
+
export { v as default };
|
|
256
254
|
|
|
257
255
|
//# sourceMappingURL=SponsorFormPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SponsorFormPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/sponsors/SponsorFormPage.tsx"],"sourcesContent":["/* eslint-disable react-hooks/set-state-in-effect */\nimport { ArrowLeft, Save } from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport {\n useCreateSponsorMutation,\n useEventsQuery,\n useSponsorsQuery,\n useUpdateSponsorMutation,\n} from '../../api/eventApi';\nimport { useEventfullyManaged } from '../../context/EventfullyManagedContext';\n\ntype SponsorFormState = {\n eventId: string;\n name: string;\n level: string;\n website: string;\n contactName: string;\n contactEmail: string;\n contactPhone: string;\n value: string;\n leads: string;\n};\n\nconst initialState: SponsorFormState = {\n eventId: '',\n name: '',\n level: 'BRONZE',\n website: '',\n contactName: '',\n contactEmail: '',\n contactPhone: '',\n value: '0',\n leads: '0',\n};\n\nexport default function SponsorFormPage() {\n const { id = '' } = useParams<{ id: string }>();\n const isEdit = useMemo(() => Boolean(id), [id]);\n const { navigate } = useEventfullyManaged();\n\n const { data: eventsData } = useEventsQuery({ limit: 100, offset: 0 });\n const { data: sponsorsData } = useSponsorsQuery({ limit: 100, offset: 0 });\n\n const existingSponsor = useMemo(\n () => (sponsorsData?.sponsors?.items ?? []).find((item: { id: string }) => item.id === id),\n [id, sponsorsData]\n );\n\n const [createSponsor, { loading: creating }] = useCreateSponsorMutation();\n const [updateSponsor, { loading: updating }] = useUpdateSponsorMutation();\n const [form, setForm] = useState<SponsorFormState>(() => {\n if (!existingSponsor) {\n return initialState;\n }\n return {\n eventId: existingSponsor.eventId ?? '',\n name: existingSponsor.name ?? '',\n level: existingSponsor.level ?? 'BRONZE',\n website: existingSponsor.website ?? '',\n contactName: existingSponsor.contactName ?? '',\n contactEmail: existingSponsor.contactEmail ?? '',\n contactPhone: existingSponsor.contactPhone ?? '',\n value: String(existingSponsor.metrics?.value ?? 0),\n leads: String(existingSponsor.metrics?.leads ?? 0),\n };\n });\n\n useEffect(() => {\n if (!existingSponsor) {\n return;\n }\n setForm({\n eventId: existingSponsor.eventId ?? '',\n name: existingSponsor.name ?? '',\n level: existingSponsor.level ?? 'BRONZE',\n website: existingSponsor.website ?? '',\n contactName: existingSponsor.contactName ?? '',\n contactEmail: existingSponsor.contactEmail ?? '',\n contactPhone: existingSponsor.contactPhone ?? '',\n value: String(existingSponsor.metrics?.value ?? 0),\n leads: String(existingSponsor.metrics?.leads ?? 0),\n });\n }, [existingSponsor]);\n\n const onChange = (field: keyof SponsorFormState, value: string) => {\n setForm((prev) => ({ ...prev, [field]: value }));\n };\n\n const onSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const input = {\n eventId: form.eventId,\n name: form.name,\n level: form.level,\n website: form.website,\n contactName: form.contactName,\n contactEmail: form.contactEmail,\n contactPhone: form.contactPhone,\n metrics: {\n value: Number(form.value || 0),\n leads: Number(form.leads || 0),\n },\n metadata: {},\n };\n\n if (isEdit) {\n await updateSponsor({ variables: { id, input } });\n navigate('/sponsors');\n return;\n }\n\n await createSponsor({ variables: { input } });\n navigate('/sponsors');\n };\n\n const saving = creating || updating;\n const events = eventsData?.events?.items ?? [];\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <button\n type=\"button\"\n onClick={() => navigate('/sponsors')}\n className=\"inline-flex items-center gap-2 text-sm text-text-secondary hover:text-text-primary\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Sponsors\n </button>\n <h1 className=\"mt-3 text-2xl font-bold text-text-primary\">{isEdit ? 'Edit Sponsor' : 'Create Sponsor'}</h1>\n </div>\n\n <form onSubmit={onSubmit} className=\"space-y-4 rounded-lg border border-border-default bg-bg-surface p-5\">\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2\">\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Event</span>\n <select\n value={form.eventId}\n onChange={(e) => onChange('eventId', e.target.value)}\n required\n className=\"w-full rounded-md border border-border-default px-3 py-2\"\n >\n <option value=\"\">Select Event</option>\n {events.map((eventItem: { id: string; name: string }) => (\n <option key={eventItem.id} value={eventItem.id}>\n {eventItem.name}\n </option>\n ))}\n </select>\n </label>\n\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Sponsor Name</span>\n <input\n value={form.name}\n onChange={(e) => onChange('name', e.target.value)}\n required\n className=\"w-full rounded-md border border-border-default px-3 py-2\"\n />\n </label>\n </div>\n\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-3\">\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Level</span>\n <select\n value={form.level}\n onChange={(e) => onChange('level', e.target.value)}\n className=\"w-full rounded-md border border-border-default px-3 py-2\"\n >\n <option value=\"PLATINUM\">Platinum</option>\n <option value=\"GOLD\">Gold</option>\n <option value=\"SILVER\">Silver</option>\n <option value=\"BRONZE\">Bronze</option>\n <option value=\"COMMUNITY\">Community</option>\n </select>\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Value</span>\n <input\n type=\"number\"\n min=\"0\"\n value={form.value}\n onChange={(e) => onChange('value', e.target.value)}\n className=\"w-full rounded-md border border-border-default px-3 py-2\"\n />\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Leads</span>\n <input\n type=\"number\"\n min=\"0\"\n value={form.leads}\n onChange={(e) => onChange('leads', e.target.value)}\n className=\"w-full rounded-md border border-border-default px-3 py-2\"\n />\n </label>\n </div>\n\n <label className=\"block space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Website</span>\n <input\n value={form.website}\n onChange={(e) => onChange('website', e.target.value)}\n className=\"w-full rounded-md border border-border-default px-3 py-2\"\n />\n </label>\n\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-3\">\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Contact Name</span>\n <input\n value={form.contactName}\n onChange={(e) => onChange('contactName', e.target.value)}\n className=\"w-full rounded-md border border-border-default px-3 py-2\"\n />\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Contact Email</span>\n <input\n type=\"email\"\n value={form.contactEmail}\n onChange={(e) => onChange('contactEmail', e.target.value)}\n className=\"w-full rounded-md border border-border-default px-3 py-2\"\n />\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Contact Phone</span>\n <input\n value={form.contactPhone}\n onChange={(e) => onChange('contactPhone', e.target.value)}\n className=\"w-full rounded-md border border-border-default px-3 py-2\"\n />\n </label>\n </div>\n\n <div className=\"flex justify-end\">\n <button\n type=\"submit\"\n disabled={saving}\n className=\"inline-flex items-center rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90 disabled:opacity-60\"\n >\n <Save className=\"mr-2 h-4 w-4\" />\n {saving ? 'Saving...' : 'Save Sponsor'}\n </button>\n </div>\n </form>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SponsorFormPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/sponsors/SponsorFormPage.tsx"],"sourcesContent":["/* eslint-disable react-hooks/set-state-in-effect */\nimport { ArrowLeft, Save } from 'lucide-react';\nimport { Button, EmphasisPanel, Input, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport {\n useCreateSponsorMutation,\n useEventsQuery,\n useSponsorsQuery,\n useUpdateSponsorMutation,\n} from '../../api/eventApi';\nimport { useEventfullyManaged } from '../../context/EventfullyManagedContext';\n\ntype SponsorFormState = {\n eventId: string;\n name: string;\n level: string;\n website: string;\n contactName: string;\n contactEmail: string;\n contactPhone: string;\n value: string;\n leads: string;\n};\n\nconst initialState: SponsorFormState = {\n eventId: '',\n name: '',\n level: 'BRONZE',\n website: '',\n contactName: '',\n contactEmail: '',\n contactPhone: '',\n value: '0',\n leads: '0',\n};\n\nexport default function SponsorFormPage() {\n const { id = '' } = useParams<{ id: string }>();\n const isEdit = useMemo(() => Boolean(id), [id]);\n const { navigate } = useEventfullyManaged();\n\n const { data: eventsData } = useEventsQuery({ limit: 100, offset: 0 });\n const { data: sponsorsData } = useSponsorsQuery({ limit: 100, offset: 0 });\n\n const existingSponsor = useMemo(\n () => (sponsorsData?.sponsors?.items ?? []).find((item: { id: string }) => item.id === id),\n [id, sponsorsData]\n );\n\n const [createSponsor, { loading: creating }] = useCreateSponsorMutation();\n const [updateSponsor, { loading: updating }] = useUpdateSponsorMutation();\n const [form, setForm] = useState<SponsorFormState>(() => {\n if (!existingSponsor) {\n return initialState;\n }\n return {\n eventId: existingSponsor.eventId ?? '',\n name: existingSponsor.name ?? '',\n level: existingSponsor.level ?? 'BRONZE',\n website: existingSponsor.website ?? '',\n contactName: existingSponsor.contactName ?? '',\n contactEmail: existingSponsor.contactEmail ?? '',\n contactPhone: existingSponsor.contactPhone ?? '',\n value: String(existingSponsor.metrics?.value ?? 0),\n leads: String(existingSponsor.metrics?.leads ?? 0),\n };\n });\n\n useEffect(() => {\n if (!existingSponsor) {\n return;\n }\n setForm({\n eventId: existingSponsor.eventId ?? '',\n name: existingSponsor.name ?? '',\n level: existingSponsor.level ?? 'BRONZE',\n website: existingSponsor.website ?? '',\n contactName: existingSponsor.contactName ?? '',\n contactEmail: existingSponsor.contactEmail ?? '',\n contactPhone: existingSponsor.contactPhone ?? '',\n value: String(existingSponsor.metrics?.value ?? 0),\n leads: String(existingSponsor.metrics?.leads ?? 0),\n });\n }, [existingSponsor]);\n\n const onChange = (field: keyof SponsorFormState, value: string) => {\n setForm((prev) => ({ ...prev, [field]: value }));\n };\n\n const onSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const input = {\n eventId: form.eventId,\n name: form.name,\n level: form.level,\n website: form.website,\n contactName: form.contactName,\n contactEmail: form.contactEmail,\n contactPhone: form.contactPhone,\n metrics: {\n value: Number(form.value || 0),\n leads: Number(form.leads || 0),\n },\n metadata: {},\n };\n\n if (isEdit) {\n await updateSponsor({ variables: { id, input } });\n navigate('/sponsors');\n return;\n }\n\n await createSponsor({ variables: { input } });\n navigate('/sponsors');\n };\n\n const saving = creating || updating;\n const events = eventsData?.events?.items ?? [];\n const selectClass =\n 'w-full rounded-input border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary transition-colors focus-visible:border-border-focus focus-visible:outline-none focus-visible:shadow-[var(--shadow-focus)] focus-visible:ring-1 focus-visible:ring-[var(--color-focus-ring)]';\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={() => navigate('/sponsors')}>\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Sponsors\n </Button>\n <h1 className=\"mt-3 text-2xl font-bold text-text-primary\">{isEdit ? 'Edit Sponsor' : 'Create Sponsor'}</h1>\n </div>\n\n <PagePurpose>\n Capture a sponsor and the deal behind it. Link them to an event, set their tier, and record the contract value\n and leads target so you can measure ROI later. The contact fields are who you will work with day to day, so\n keep them accurate.\n </PagePurpose>\n\n <EmphasisPanel>\n <form onSubmit={onSubmit} className=\"space-y-4\">\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2\">\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Event</span>\n <select\n value={form.eventId}\n onChange={(e) => onChange('eventId', e.target.value)}\n required\n className={selectClass}\n >\n <option value=\"\">Select Event</option>\n {events.map((eventItem: { id: string; name: string }) => (\n <option key={eventItem.id} value={eventItem.id}>\n {eventItem.name}\n </option>\n ))}\n </select>\n </label>\n\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Sponsor Name</span>\n <Input value={form.name} onChange={(e) => onChange('name', e.target.value)} required />\n </label>\n </div>\n\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-3\">\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Level</span>\n <select value={form.level} onChange={(e) => onChange('level', e.target.value)} className={selectClass}>\n <option value=\"PLATINUM\">Platinum</option>\n <option value=\"GOLD\">Gold</option>\n <option value=\"SILVER\">Silver</option>\n <option value=\"BRONZE\">Bronze</option>\n <option value=\"COMMUNITY\">Community</option>\n </select>\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Value</span>\n <Input type=\"number\" min=\"0\" value={form.value} onChange={(e) => onChange('value', e.target.value)} />\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Leads</span>\n <Input type=\"number\" min=\"0\" value={form.leads} onChange={(e) => onChange('leads', e.target.value)} />\n </label>\n </div>\n\n <label className=\"block space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Website</span>\n <Input value={form.website} onChange={(e) => onChange('website', e.target.value)} />\n </label>\n\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-3\">\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Contact Name</span>\n <Input value={form.contactName} onChange={(e) => onChange('contactName', e.target.value)} />\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Contact Email</span>\n <Input\n type=\"email\"\n value={form.contactEmail}\n onChange={(e) => onChange('contactEmail', e.target.value)}\n />\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">Contact Phone</span>\n <Input value={form.contactPhone} onChange={(e) => onChange('contactPhone', e.target.value)} />\n </label>\n </div>\n\n <div className=\"flex justify-end\">\n <Button type=\"submit\" disabled={saving}>\n <Save className=\"h-4 w-4\" />\n {saving ? 'Saving...' : 'Save Sponsor'}\n </Button>\n </div>\n </form>\n </EmphasisPanel>\n </div>\n );\n}\n"],"mappings":"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"}
|