@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.
Files changed (43) hide show
  1. package/dist/eventfullymanaged/components/PageLayout.js +44 -38
  2. package/dist/eventfullymanaged/components/PageLayout.js.map +1 -1
  3. package/dist/eventfullymanaged/pages/dashboard/DashboardPage.js +93 -40
  4. package/dist/eventfullymanaged/pages/dashboard/DashboardPage.js.map +1 -1
  5. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js +32 -29
  6. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js.map +1 -1
  7. package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js +85 -50
  8. package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js.map +1 -1
  9. package/dist/eventfullymanaged/pages/modules/CommunicationPage.js +49 -50
  10. package/dist/eventfullymanaged/pages/modules/CommunicationPage.js.map +1 -1
  11. package/dist/eventfullymanaged/pages/modules/EntityListSection.js +57 -25
  12. package/dist/eventfullymanaged/pages/modules/EntityListSection.js.map +1 -1
  13. package/dist/eventfullymanaged/pages/modules/EventsPage.js +93 -66
  14. package/dist/eventfullymanaged/pages/modules/EventsPage.js.map +1 -1
  15. package/dist/eventfullymanaged/pages/modules/KioskPage.js +18 -19
  16. package/dist/eventfullymanaged/pages/modules/KioskPage.js.map +1 -1
  17. package/dist/eventfullymanaged/pages/modules/NetworkingPage.js +60 -30
  18. package/dist/eventfullymanaged/pages/modules/NetworkingPage.js.map +1 -1
  19. package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js +146 -108
  20. package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js.map +1 -1
  21. package/dist/eventfullymanaged/pages/modules/RegistrationPage.js +67 -38
  22. package/dist/eventfullymanaged/pages/modules/RegistrationPage.js.map +1 -1
  23. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js +84 -49
  24. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js.map +1 -1
  25. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js +57 -28
  26. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js.map +1 -1
  27. package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js +106 -72
  28. package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js.map +1 -1
  29. package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js +84 -68
  30. package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js.map +1 -1
  31. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js +202 -204
  32. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js.map +1 -1
  33. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js +58 -39
  34. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js.map +1 -1
  35. package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js +53 -46
  36. package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js.map +1 -1
  37. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js +109 -63
  38. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js.map +1 -1
  39. package/dist/eventfullymanaged/pages/venues/VenueFormPage.js +193 -197
  40. package/dist/eventfullymanaged/pages/venues/VenueFormPage.js.map +1 -1
  41. package/dist/eventfullymanaged/pages/venues/VenueListPage.js +65 -36
  42. package/dist/eventfullymanaged/pages/venues/VenueListPage.js.map +1 -1
  43. 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 p = {
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 m() {
20
- let { id: m = "" } = c(), h = o(() => !!m, [m]), { navigate: g } = e(), { data: _ } = n({
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: v } = r({
24
+ }), { data: S } = r({
24
25
  limit: 100,
25
26
  offset: 0
26
- }), y = o(() => (v?.sponsors?.items ?? []).find((e) => e.id === m), [m, v]), [b, { loading: x }] = t(), [S, { loading: C }] = i(), [w, T] = s(() => y ? {
27
- eventId: y.eventId ?? "",
28
- name: y.name ?? "",
29
- level: y.level ?? "BRONZE",
30
- website: y.website ?? "",
31
- contactName: y.contactName ?? "",
32
- contactEmail: y.contactEmail ?? "",
33
- contactPhone: y.contactPhone ?? "",
34
- value: String(y.metrics?.value ?? 0),
35
- leads: String(y.metrics?.leads ?? 0)
36
- } : p);
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
- y && T({
39
- eventId: y.eventId ?? "",
40
- name: y.name ?? "",
41
- level: y.level ?? "BRONZE",
42
- website: y.website ?? "",
43
- contactName: y.contactName ?? "",
44
- contactEmail: y.contactEmail ?? "",
45
- contactPhone: y.contactPhone ?? "",
46
- value: String(y.metrics?.value ?? 0),
47
- leads: String(y.metrics?.leads ?? 0)
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
- }, [y]);
50
- let E = (e, t) => {
51
- T((n) => ({
50
+ }, [C]);
51
+ let A = (e, t) => {
52
+ k((n) => ({
52
53
  ...n,
53
54
  [e]: t
54
55
  }));
55
- }, D = async (e) => {
56
+ }, j = async (e) => {
56
57
  e.preventDefault();
57
58
  let t = {
58
- eventId: w.eventId,
59
- name: w.name,
60
- level: w.level,
61
- website: w.website,
62
- contactName: w.contactName,
63
- contactEmail: w.contactEmail,
64
- contactPhone: w.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(w.value || 0),
67
- leads: Number(w.leads || 0)
67
+ value: Number(O.value || 0),
68
+ leads: Number(O.leads || 0)
68
69
  },
69
70
  metadata: {}
70
71
  };
71
- if (h) {
72
- await S({ variables: {
73
- id: m,
72
+ if (y) {
73
+ await E({ variables: {
74
+ id: v,
74
75
  input: t
75
- } }), g("/sponsors");
76
+ } }), b("/sponsors");
76
77
  return;
77
78
  }
78
- await b({ variables: { input: t } }), g("/sponsors");
79
- }, O = x || C, k = _?.events?.items ?? [];
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: [/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ u("button", {
83
- type: "button",
84
- onClick: () => g("/sponsors"),
85
- className: "inline-flex items-center gap-2 text-sm text-text-secondary hover:text-text-primary",
86
- children: [/* @__PURE__ */ l(d, { className: "h-4 w-4" }), "Back to Sponsors"]
87
- }), /* @__PURE__ */ l("h1", {
88
- className: "mt-3 text-2xl font-bold text-text-primary",
89
- children: h ? "Edit Sponsor" : "Create Sponsor"
90
- })] }), /* @__PURE__ */ u("form", {
91
- onSubmit: D,
92
- className: "space-y-4 rounded-lg border border-border-default bg-bg-surface p-5",
93
- children: [
94
- /* @__PURE__ */ u("div", {
95
- className: "grid grid-cols-1 gap-4 md:grid-cols-2",
96
- children: [/* @__PURE__ */ u("label", {
97
- className: "space-y-1 text-sm",
98
- children: [/* @__PURE__ */ l("span", {
99
- className: "font-medium text-text-primary",
100
- children: "Event"
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: "Level"
105
+ children: "Event"
135
106
  }), /* @__PURE__ */ u("select", {
136
- value: w.level,
137
- onChange: (e) => E("level", e.target.value),
138
- className: "w-full rounded-md border border-border-default px-3 py-2",
139
- children: [
140
- /* @__PURE__ */ l("option", {
141
- value: "PLATINUM",
142
- children: "Platinum"
143
- }),
144
- /* @__PURE__ */ l("option", {
145
- value: "GOLD",
146
- children: "Gold"
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: "Leads"
181
- }), /* @__PURE__ */ l("input", {
182
- type: "number",
183
- min: "0",
184
- value: w.leads,
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 { m as default };
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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"}