@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
|
@@ -5,8 +5,9 @@ import { useParams as s } from "react-router-dom";
|
|
|
5
5
|
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
6
6
|
import { ArrowLeft as u, Save as d } from "lucide-react";
|
|
7
7
|
import { useI18n as f } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
8
|
+
import { Button as p, EmphasisPanel as m, Input as h, PagePurpose as g, Textarea as _ } from "@burdenoff/fe-libs/ui";
|
|
8
9
|
//#region src/eventfullymanaged/pages/venues/VenueFormPage.tsx
|
|
9
|
-
var
|
|
10
|
+
var v = {
|
|
10
11
|
name: "",
|
|
11
12
|
description: "",
|
|
12
13
|
addressLine1: "",
|
|
@@ -18,233 +19,228 @@ var p = {
|
|
|
18
19
|
amenities: "",
|
|
19
20
|
status: "ACTIVE"
|
|
20
21
|
};
|
|
21
|
-
function
|
|
22
|
-
let { t:
|
|
23
|
-
let n =
|
|
22
|
+
function y() {
|
|
23
|
+
let { t: y } = f(), b = (e, t) => {
|
|
24
|
+
let n = y(e);
|
|
24
25
|
return n === e ? t : n;
|
|
25
|
-
}, { id:
|
|
26
|
+
}, { id: x = "" } = s(), S = a(() => !!x, [x]), { navigate: C } = e(), { data: w } = r(x), [T, { loading: E }] = t(), [D, { loading: O }] = n(), [k, A] = o(v);
|
|
26
27
|
i(() => {
|
|
27
|
-
!
|
|
28
|
-
name:
|
|
29
|
-
description:
|
|
30
|
-
addressLine1:
|
|
31
|
-
city:
|
|
32
|
-
state:
|
|
33
|
-
country:
|
|
34
|
-
postalCode:
|
|
35
|
-
capacity:
|
|
36
|
-
amenities: (
|
|
37
|
-
status:
|
|
28
|
+
!S || !w?.venue || A({
|
|
29
|
+
name: w.venue.name ?? "",
|
|
30
|
+
description: w.venue.description ?? "",
|
|
31
|
+
addressLine1: w.venue.addressLine1 ?? "",
|
|
32
|
+
city: w.venue.city ?? "",
|
|
33
|
+
state: w.venue.state ?? "",
|
|
34
|
+
country: w.venue.country ?? "India",
|
|
35
|
+
postalCode: w.venue.postalCode ?? "",
|
|
36
|
+
capacity: w.venue.capacity ? String(w.venue.capacity) : "",
|
|
37
|
+
amenities: (w.venue.amenities ?? []).join(", "),
|
|
38
|
+
status: w.venue.status ?? "ACTIVE"
|
|
38
39
|
});
|
|
39
|
-
}, [
|
|
40
|
-
let
|
|
41
|
-
|
|
40
|
+
}, [w, S]);
|
|
41
|
+
let j = (e, t) => {
|
|
42
|
+
A((n) => ({
|
|
42
43
|
...n,
|
|
43
44
|
[e]: t
|
|
44
45
|
}));
|
|
45
|
-
},
|
|
46
|
+
}, M = async (e) => {
|
|
46
47
|
e.preventDefault();
|
|
47
48
|
let t = {
|
|
48
|
-
name:
|
|
49
|
-
description:
|
|
50
|
-
addressLine1:
|
|
51
|
-
city:
|
|
52
|
-
state:
|
|
53
|
-
country:
|
|
54
|
-
postalCode:
|
|
55
|
-
capacity:
|
|
56
|
-
amenities:
|
|
57
|
-
status:
|
|
49
|
+
name: k.name,
|
|
50
|
+
description: k.description,
|
|
51
|
+
addressLine1: k.addressLine1,
|
|
52
|
+
city: k.city,
|
|
53
|
+
state: k.state,
|
|
54
|
+
country: k.country,
|
|
55
|
+
postalCode: k.postalCode,
|
|
56
|
+
capacity: k.capacity ? Number(k.capacity) : null,
|
|
57
|
+
amenities: k.amenities.split(",").map((e) => e.trim()).filter(Boolean),
|
|
58
|
+
status: k.status,
|
|
58
59
|
pricing: {},
|
|
59
60
|
openingHours: {},
|
|
60
61
|
metadata: {}
|
|
61
62
|
};
|
|
62
|
-
if (
|
|
63
|
-
await
|
|
64
|
-
id:
|
|
63
|
+
if (S) {
|
|
64
|
+
await D({ variables: {
|
|
65
|
+
id: x,
|
|
65
66
|
input: t
|
|
66
|
-
} }),
|
|
67
|
+
} }), C(`/venues/${x}`);
|
|
67
68
|
return;
|
|
68
69
|
}
|
|
69
|
-
let n = (await
|
|
70
|
-
|
|
71
|
-
},
|
|
70
|
+
let n = (await T({ variables: { input: t } })).data?.createVenue?.id;
|
|
71
|
+
C(n ? `/venues/${n}` : "/venues");
|
|
72
|
+
}, N = E || O;
|
|
72
73
|
return /* @__PURE__ */ l("div", {
|
|
73
74
|
className: "space-y-6 p-6",
|
|
74
|
-
children: [
|
|
75
|
-
/* @__PURE__ */ l("
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
className: "mt-3 text-2xl font-bold text-text-primary",
|
|
83
|
-
children: _ ? h("eventfullymanaged.venues.form.editTitle", "Edit Venue") : h("eventfullymanaged.venues.form.createTitle", "Create Venue")
|
|
84
|
-
}),
|
|
85
|
-
/* @__PURE__ */ c("p", {
|
|
86
|
-
className: "mt-1 text-sm text-text-secondary",
|
|
87
|
-
children: h("eventfullymanaged.venues.form.description", "Manage venue details with live backend persistence.")
|
|
88
|
-
})
|
|
89
|
-
] }), /* @__PURE__ */ l("form", {
|
|
90
|
-
onSubmit: D,
|
|
91
|
-
className: "space-y-4 rounded-lg border border-border-default bg-bg-surface p-5",
|
|
92
|
-
children: [
|
|
93
|
-
/* @__PURE__ */ l("div", {
|
|
94
|
-
className: "grid grid-cols-1 gap-4 md:grid-cols-2",
|
|
95
|
-
children: [/* @__PURE__ */ l("label", {
|
|
96
|
-
className: "space-y-1 text-sm",
|
|
97
|
-
children: [/* @__PURE__ */ c("span", {
|
|
98
|
-
className: "font-medium text-text-primary",
|
|
99
|
-
children: h("eventfullymanaged.venues.form.fields.name", "Name")
|
|
100
|
-
}), /* @__PURE__ */ c("input", {
|
|
101
|
-
value: w.name,
|
|
102
|
-
onChange: (e) => E("name", e.target.value),
|
|
103
|
-
required: !0,
|
|
104
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
105
|
-
})]
|
|
106
|
-
}), /* @__PURE__ */ l("label", {
|
|
107
|
-
className: "space-y-1 text-sm",
|
|
108
|
-
children: [/* @__PURE__ */ c("span", {
|
|
109
|
-
className: "font-medium text-text-primary",
|
|
110
|
-
children: h("eventfullymanaged.venues.form.fields.capacity", "Capacity")
|
|
111
|
-
}), /* @__PURE__ */ c("input", {
|
|
112
|
-
value: w.capacity,
|
|
113
|
-
onChange: (e) => E("capacity", e.target.value),
|
|
114
|
-
type: "number",
|
|
115
|
-
min: "0",
|
|
116
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
117
|
-
})]
|
|
118
|
-
})]
|
|
119
|
-
}),
|
|
120
|
-
/* @__PURE__ */ l("label", {
|
|
121
|
-
className: "block space-y-1 text-sm",
|
|
122
|
-
children: [/* @__PURE__ */ c("span", {
|
|
123
|
-
className: "font-medium text-text-primary",
|
|
124
|
-
children: h("eventfullymanaged.venues.form.fields.description", "Description")
|
|
125
|
-
}), /* @__PURE__ */ c("textarea", {
|
|
126
|
-
value: w.description,
|
|
127
|
-
onChange: (e) => E("description", e.target.value),
|
|
128
|
-
rows: 3,
|
|
129
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
130
|
-
})]
|
|
75
|
+
children: [
|
|
76
|
+
/* @__PURE__ */ l("div", { children: [
|
|
77
|
+
/* @__PURE__ */ l(p, {
|
|
78
|
+
type: "button",
|
|
79
|
+
variant: "ghost",
|
|
80
|
+
size: "sm",
|
|
81
|
+
onClick: () => C("/venues"),
|
|
82
|
+
children: [/* @__PURE__ */ c(u, { className: "h-4 w-4" }), b("eventfullymanaged.venues.form.backToVenues", "Back to Venues")]
|
|
131
83
|
}),
|
|
132
|
-
/* @__PURE__ */
|
|
133
|
-
className: "
|
|
134
|
-
children:
|
|
135
|
-
/* @__PURE__ */ l("label", {
|
|
136
|
-
className: "space-y-1 text-sm md:col-span-2",
|
|
137
|
-
children: [/* @__PURE__ */ c("span", {
|
|
138
|
-
className: "font-medium text-text-primary",
|
|
139
|
-
children: h("eventfullymanaged.venues.form.fields.address", "Address")
|
|
140
|
-
}), /* @__PURE__ */ c("input", {
|
|
141
|
-
value: w.addressLine1,
|
|
142
|
-
onChange: (e) => E("addressLine1", e.target.value),
|
|
143
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
144
|
-
})]
|
|
145
|
-
}),
|
|
146
|
-
/* @__PURE__ */ l("label", {
|
|
147
|
-
className: "space-y-1 text-sm",
|
|
148
|
-
children: [/* @__PURE__ */ c("span", {
|
|
149
|
-
className: "font-medium text-text-primary",
|
|
150
|
-
children: h("eventfullymanaged.venues.form.fields.city", "City")
|
|
151
|
-
}), /* @__PURE__ */ c("input", {
|
|
152
|
-
value: w.city,
|
|
153
|
-
onChange: (e) => E("city", e.target.value),
|
|
154
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
155
|
-
})]
|
|
156
|
-
}),
|
|
157
|
-
/* @__PURE__ */ l("label", {
|
|
158
|
-
className: "space-y-1 text-sm",
|
|
159
|
-
children: [/* @__PURE__ */ c("span", {
|
|
160
|
-
className: "font-medium text-text-primary",
|
|
161
|
-
children: h("eventfullymanaged.venues.form.fields.state", "State")
|
|
162
|
-
}), /* @__PURE__ */ c("input", {
|
|
163
|
-
value: w.state,
|
|
164
|
-
onChange: (e) => E("state", e.target.value),
|
|
165
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
166
|
-
})]
|
|
167
|
-
})
|
|
168
|
-
]
|
|
84
|
+
/* @__PURE__ */ c("h1", {
|
|
85
|
+
className: "mt-3 text-2xl font-bold text-text-primary",
|
|
86
|
+
children: S ? b("eventfullymanaged.venues.form.editTitle", "Edit Venue") : b("eventfullymanaged.venues.form.createTitle", "Create Venue")
|
|
169
87
|
}),
|
|
170
|
-
/* @__PURE__ */
|
|
171
|
-
className: "
|
|
172
|
-
children:
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
}),
|
|
184
|
-
/* @__PURE__ */ l("label", {
|
|
88
|
+
/* @__PURE__ */ c("p", {
|
|
89
|
+
className: "mt-1 text-sm text-text-secondary",
|
|
90
|
+
children: b("eventfullymanaged.venues.form.description", "Manage venue details with live backend persistence.")
|
|
91
|
+
})
|
|
92
|
+
] }),
|
|
93
|
+
/* @__PURE__ */ c(g, { children: b("eventfullymanaged.venues.form.purpose", "Describe a space so you can reuse it across events. Capacity drives how many attendees you can register, the address helps people find it, and amenities tell organizers what is already provided. Fill this in once and every future event can simply point at this venue.") }),
|
|
94
|
+
/* @__PURE__ */ c(m, { children: /* @__PURE__ */ l("form", {
|
|
95
|
+
onSubmit: M,
|
|
96
|
+
className: "space-y-4",
|
|
97
|
+
children: [
|
|
98
|
+
/* @__PURE__ */ l("div", {
|
|
99
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-2",
|
|
100
|
+
children: [/* @__PURE__ */ l("label", {
|
|
185
101
|
className: "space-y-1 text-sm",
|
|
186
102
|
children: [/* @__PURE__ */ c("span", {
|
|
187
103
|
className: "font-medium text-text-primary",
|
|
188
|
-
children:
|
|
189
|
-
}), /* @__PURE__ */ c(
|
|
190
|
-
value:
|
|
191
|
-
onChange: (e) =>
|
|
192
|
-
|
|
104
|
+
children: b("eventfullymanaged.venues.form.fields.name", "Name")
|
|
105
|
+
}), /* @__PURE__ */ c(h, {
|
|
106
|
+
value: k.name,
|
|
107
|
+
onChange: (e) => j("name", e.target.value),
|
|
108
|
+
required: !0
|
|
193
109
|
})]
|
|
194
|
-
}),
|
|
195
|
-
/* @__PURE__ */ l("label", {
|
|
110
|
+
}), /* @__PURE__ */ l("label", {
|
|
196
111
|
className: "space-y-1 text-sm",
|
|
197
112
|
children: [/* @__PURE__ */ c("span", {
|
|
198
113
|
className: "font-medium text-text-primary",
|
|
199
|
-
children:
|
|
200
|
-
}), /* @__PURE__ */
|
|
201
|
-
value:
|
|
202
|
-
onChange: (e) =>
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
/* @__PURE__ */ c("option", {
|
|
206
|
-
value: "ACTIVE",
|
|
207
|
-
children: h("eventfullymanaged.venues.form.statusOptions.active", "Active")
|
|
208
|
-
}),
|
|
209
|
-
/* @__PURE__ */ c("option", {
|
|
210
|
-
value: "INACTIVE",
|
|
211
|
-
children: h("eventfullymanaged.venues.form.statusOptions.inactive", "Inactive")
|
|
212
|
-
}),
|
|
213
|
-
/* @__PURE__ */ c("option", {
|
|
214
|
-
value: "MAINTENANCE",
|
|
215
|
-
children: h("eventfullymanaged.venues.form.statusOptions.maintenance", "Maintenance")
|
|
216
|
-
})
|
|
217
|
-
]
|
|
114
|
+
children: b("eventfullymanaged.venues.form.fields.capacity", "Capacity")
|
|
115
|
+
}), /* @__PURE__ */ c(h, {
|
|
116
|
+
value: k.capacity,
|
|
117
|
+
onChange: (e) => j("capacity", e.target.value),
|
|
118
|
+
type: "number",
|
|
119
|
+
min: "0"
|
|
218
120
|
})]
|
|
121
|
+
})]
|
|
122
|
+
}),
|
|
123
|
+
/* @__PURE__ */ l("label", {
|
|
124
|
+
className: "block space-y-1 text-sm",
|
|
125
|
+
children: [/* @__PURE__ */ c("span", {
|
|
126
|
+
className: "font-medium text-text-primary",
|
|
127
|
+
children: b("eventfullymanaged.venues.form.fields.description", "Description")
|
|
128
|
+
}), /* @__PURE__ */ c(_, {
|
|
129
|
+
value: k.description,
|
|
130
|
+
onChange: (e) => j("description", e.target.value),
|
|
131
|
+
rows: 3
|
|
132
|
+
})]
|
|
133
|
+
}),
|
|
134
|
+
/* @__PURE__ */ l("div", {
|
|
135
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-4",
|
|
136
|
+
children: [
|
|
137
|
+
/* @__PURE__ */ l("label", {
|
|
138
|
+
className: "space-y-1 text-sm md:col-span-2",
|
|
139
|
+
children: [/* @__PURE__ */ c("span", {
|
|
140
|
+
className: "font-medium text-text-primary",
|
|
141
|
+
children: b("eventfullymanaged.venues.form.fields.address", "Address")
|
|
142
|
+
}), /* @__PURE__ */ c(h, {
|
|
143
|
+
value: k.addressLine1,
|
|
144
|
+
onChange: (e) => j("addressLine1", e.target.value)
|
|
145
|
+
})]
|
|
146
|
+
}),
|
|
147
|
+
/* @__PURE__ */ l("label", {
|
|
148
|
+
className: "space-y-1 text-sm",
|
|
149
|
+
children: [/* @__PURE__ */ c("span", {
|
|
150
|
+
className: "font-medium text-text-primary",
|
|
151
|
+
children: b("eventfullymanaged.venues.form.fields.city", "City")
|
|
152
|
+
}), /* @__PURE__ */ c(h, {
|
|
153
|
+
value: k.city,
|
|
154
|
+
onChange: (e) => j("city", e.target.value)
|
|
155
|
+
})]
|
|
156
|
+
}),
|
|
157
|
+
/* @__PURE__ */ l("label", {
|
|
158
|
+
className: "space-y-1 text-sm",
|
|
159
|
+
children: [/* @__PURE__ */ c("span", {
|
|
160
|
+
className: "font-medium text-text-primary",
|
|
161
|
+
children: b("eventfullymanaged.venues.form.fields.state", "State")
|
|
162
|
+
}), /* @__PURE__ */ c(h, {
|
|
163
|
+
value: k.state,
|
|
164
|
+
onChange: (e) => j("state", e.target.value)
|
|
165
|
+
})]
|
|
166
|
+
})
|
|
167
|
+
]
|
|
168
|
+
}),
|
|
169
|
+
/* @__PURE__ */ l("div", {
|
|
170
|
+
className: "grid grid-cols-1 gap-4 md:grid-cols-3",
|
|
171
|
+
children: [
|
|
172
|
+
/* @__PURE__ */ l("label", {
|
|
173
|
+
className: "space-y-1 text-sm",
|
|
174
|
+
children: [/* @__PURE__ */ c("span", {
|
|
175
|
+
className: "font-medium text-text-primary",
|
|
176
|
+
children: b("eventfullymanaged.venues.form.fields.country", "Country")
|
|
177
|
+
}), /* @__PURE__ */ c(h, {
|
|
178
|
+
value: k.country,
|
|
179
|
+
onChange: (e) => j("country", e.target.value)
|
|
180
|
+
})]
|
|
181
|
+
}),
|
|
182
|
+
/* @__PURE__ */ l("label", {
|
|
183
|
+
className: "space-y-1 text-sm",
|
|
184
|
+
children: [/* @__PURE__ */ c("span", {
|
|
185
|
+
className: "font-medium text-text-primary",
|
|
186
|
+
children: b("eventfullymanaged.venues.form.fields.postalCode", "Postal Code")
|
|
187
|
+
}), /* @__PURE__ */ c(h, {
|
|
188
|
+
value: k.postalCode,
|
|
189
|
+
onChange: (e) => j("postalCode", e.target.value)
|
|
190
|
+
})]
|
|
191
|
+
}),
|
|
192
|
+
/* @__PURE__ */ l("label", {
|
|
193
|
+
className: "space-y-1 text-sm",
|
|
194
|
+
children: [/* @__PURE__ */ c("span", {
|
|
195
|
+
className: "font-medium text-text-primary",
|
|
196
|
+
children: b("eventfullymanaged.venues.form.fields.status", "Status")
|
|
197
|
+
}), /* @__PURE__ */ l("select", {
|
|
198
|
+
value: k.status,
|
|
199
|
+
onChange: (e) => j("status", e.target.value),
|
|
200
|
+
className: "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)]",
|
|
201
|
+
children: [
|
|
202
|
+
/* @__PURE__ */ c("option", {
|
|
203
|
+
value: "ACTIVE",
|
|
204
|
+
children: b("eventfullymanaged.venues.form.statusOptions.active", "Active")
|
|
205
|
+
}),
|
|
206
|
+
/* @__PURE__ */ c("option", {
|
|
207
|
+
value: "INACTIVE",
|
|
208
|
+
children: b("eventfullymanaged.venues.form.statusOptions.inactive", "Inactive")
|
|
209
|
+
}),
|
|
210
|
+
/* @__PURE__ */ c("option", {
|
|
211
|
+
value: "MAINTENANCE",
|
|
212
|
+
children: b("eventfullymanaged.venues.form.statusOptions.maintenance", "Maintenance")
|
|
213
|
+
})
|
|
214
|
+
]
|
|
215
|
+
})]
|
|
216
|
+
})
|
|
217
|
+
]
|
|
218
|
+
}),
|
|
219
|
+
/* @__PURE__ */ l("label", {
|
|
220
|
+
className: "block space-y-1 text-sm",
|
|
221
|
+
children: [/* @__PURE__ */ c("span", {
|
|
222
|
+
className: "font-medium text-text-primary",
|
|
223
|
+
children: b("eventfullymanaged.venues.form.fields.amenities", "Amenities (comma separated)")
|
|
224
|
+
}), /* @__PURE__ */ c(h, {
|
|
225
|
+
value: k.amenities,
|
|
226
|
+
onChange: (e) => j("amenities", e.target.value),
|
|
227
|
+
placeholder: b("eventfullymanaged.venues.form.amenitiesPlaceholder", "wifi, parking, catering")
|
|
228
|
+
})]
|
|
229
|
+
}),
|
|
230
|
+
/* @__PURE__ */ c("div", {
|
|
231
|
+
className: "flex justify-end",
|
|
232
|
+
children: /* @__PURE__ */ l(p, {
|
|
233
|
+
type: "submit",
|
|
234
|
+
disabled: N,
|
|
235
|
+
children: [/* @__PURE__ */ c(d, { className: "h-4 w-4" }), N ? b("eventfullymanaged.venues.form.actions.saving", "Saving...") : b("eventfullymanaged.venues.form.actions.save", "Save Venue")]
|
|
219
236
|
})
|
|
220
|
-
]
|
|
221
|
-
}),
|
|
222
|
-
/* @__PURE__ */ l("label", {
|
|
223
|
-
className: "block space-y-1 text-sm",
|
|
224
|
-
children: [/* @__PURE__ */ c("span", {
|
|
225
|
-
className: "font-medium text-text-primary",
|
|
226
|
-
children: h("eventfullymanaged.venues.form.fields.amenities", "Amenities (comma separated)")
|
|
227
|
-
}), /* @__PURE__ */ c("input", {
|
|
228
|
-
value: w.amenities,
|
|
229
|
-
onChange: (e) => E("amenities", e.target.value),
|
|
230
|
-
placeholder: h("eventfullymanaged.venues.form.amenitiesPlaceholder", "wifi, parking, catering"),
|
|
231
|
-
className: "w-full rounded-md border border-border-default px-3 py-2"
|
|
232
|
-
})]
|
|
233
|
-
}),
|
|
234
|
-
/* @__PURE__ */ c("div", {
|
|
235
|
-
className: "flex justify-end",
|
|
236
|
-
children: /* @__PURE__ */ l("button", {
|
|
237
|
-
type: "submit",
|
|
238
|
-
disabled: O,
|
|
239
|
-
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",
|
|
240
|
-
children: [/* @__PURE__ */ c(d, { className: "mr-2 h-4 w-4" }), O ? h("eventfullymanaged.venues.form.actions.saving", "Saving...") : h("eventfullymanaged.venues.form.actions.save", "Save Venue")]
|
|
241
237
|
})
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
238
|
+
]
|
|
239
|
+
}) })
|
|
240
|
+
]
|
|
245
241
|
});
|
|
246
242
|
}
|
|
247
243
|
//#endregion
|
|
248
|
-
export {
|
|
244
|
+
export { y as default };
|
|
249
245
|
|
|
250
246
|
//# sourceMappingURL=VenueFormPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VenueFormPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/venues/VenueFormPage.tsx"],"sourcesContent":["/* eslint-disable react-hooks/set-state-in-effect */\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { ArrowLeft, Save } from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport { useCreateVenueMutation, useUpdateVenueMutation, useVenueQuery } from '../../api/eventApi';\nimport { useEventfullyManaged } from '../../context/EventfullyManagedContext';\n\ntype VenueFormState = {\n name: string;\n description: string;\n addressLine1: string;\n city: string;\n state: string;\n country: string;\n postalCode: string;\n capacity: string;\n amenities: string;\n status: string;\n};\n\nconst initialState: VenueFormState = {\n name: '',\n description: '',\n addressLine1: '',\n city: '',\n state: '',\n country: 'India',\n postalCode: '',\n capacity: '',\n amenities: '',\n status: 'ACTIVE',\n};\n\nexport default function VenueFormPage() {\n const { t: translate } = useI18n();\n const t = (key: string, fallback: string) => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\n const { id = '' } = useParams<{ id: string }>();\n const isEdit = useMemo(() => Boolean(id), [id]);\n const { navigate } = useEventfullyManaged();\n const { data } = useVenueQuery(id);\n const [createVenue, { loading: creating }] = useCreateVenueMutation();\n const [updateVenue, { loading: updating }] = useUpdateVenueMutation();\n const [form, setForm] = useState<VenueFormState>(initialState);\n\n useEffect(() => {\n if (!isEdit || !data?.venue) {\n return;\n }\n setForm({\n name: data.venue.name ?? '',\n description: data.venue.description ?? '',\n addressLine1: data.venue.addressLine1 ?? '',\n city: data.venue.city ?? '',\n state: data.venue.state ?? '',\n country: data.venue.country ?? 'India',\n postalCode: data.venue.postalCode ?? '',\n capacity: data.venue.capacity ? String(data.venue.capacity) : '',\n amenities: (data.venue.amenities ?? []).join(', '),\n status: data.venue.status ?? 'ACTIVE',\n });\n }, [data, isEdit]);\n\n const onChange = (field: keyof VenueFormState, value: string) => {\n setForm((prev) => ({ ...prev, [field]: value }));\n };\n\n const onSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const payload = {\n name: form.name,\n description: form.description,\n addressLine1: form.addressLine1,\n city: form.city,\n state: form.state,\n country: form.country,\n postalCode: form.postalCode,\n capacity: form.capacity ? Number(form.capacity) : null,\n amenities: form.amenities\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean),\n status: form.status,\n pricing: {},\n openingHours: {},\n metadata: {},\n };\n\n if (isEdit) {\n await updateVenue({ variables: { id, input: payload } });\n navigate(`/venues/${id}`);\n return;\n }\n\n const response = await createVenue({ variables: { input: payload } });\n const createdId = response.data?.createVenue?.id;\n navigate(createdId ? `/venues/${createdId}` : '/venues');\n };\n\n const isSaving = creating || updating;\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <button\n type=\"button\"\n onClick={() => navigate('/venues')}\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 {t('eventfullymanaged.venues.form.backToVenues', 'Back to Venues')}\n </button>\n <h1 className=\"mt-3 text-2xl font-bold text-text-primary\">\n {isEdit\n ? t('eventfullymanaged.venues.form.editTitle', 'Edit Venue')\n : t('eventfullymanaged.venues.form.createTitle', 'Create Venue')}\n </h1>\n <p className=\"mt-1 text-sm text-text-secondary\">\n {t('eventfullymanaged.venues.form.description', 'Manage venue details with live backend persistence.')}\n </p>\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\">\n {t('eventfullymanaged.venues.form.fields.name', 'Name')}\n </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 <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">\n {t('eventfullymanaged.venues.form.fields.capacity', 'Capacity')}\n </span>\n <input\n value={form.capacity}\n onChange={(e) => onChange('capacity', e.target.value)}\n type=\"number\"\n min=\"0\"\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\">\n {t('eventfullymanaged.venues.form.fields.description', 'Description')}\n </span>\n <textarea\n value={form.description}\n onChange={(e) => onChange('description', e.target.value)}\n rows={3}\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-4\">\n <label className=\"space-y-1 text-sm md:col-span-2\">\n <span className=\"font-medium text-text-primary\">\n {t('eventfullymanaged.venues.form.fields.address', 'Address')}\n </span>\n <input\n value={form.addressLine1}\n onChange={(e) => onChange('addressLine1', 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\">\n {t('eventfullymanaged.venues.form.fields.city', 'City')}\n </span>\n <input\n value={form.city}\n onChange={(e) => onChange('city', 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\">\n {t('eventfullymanaged.venues.form.fields.state', 'State')}\n </span>\n <input\n value={form.state}\n onChange={(e) => onChange('state', 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=\"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\">\n {t('eventfullymanaged.venues.form.fields.country', 'Country')}\n </span>\n <input\n value={form.country}\n onChange={(e) => onChange('country', 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\">\n {t('eventfullymanaged.venues.form.fields.postalCode', 'Postal Code')}\n </span>\n <input\n value={form.postalCode}\n onChange={(e) => onChange('postalCode', 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\">\n {t('eventfullymanaged.venues.form.fields.status', 'Status')}\n </span>\n <select\n value={form.status}\n onChange={(e) => onChange('status', e.target.value)}\n className=\"w-full rounded-md border border-border-default px-3 py-2\"\n >\n <option value=\"ACTIVE\">{t('eventfullymanaged.venues.form.statusOptions.active', 'Active')}</option>\n <option value=\"INACTIVE\">{t('eventfullymanaged.venues.form.statusOptions.inactive', 'Inactive')}</option>\n <option value=\"MAINTENANCE\">\n {t('eventfullymanaged.venues.form.statusOptions.maintenance', 'Maintenance')}\n </option>\n </select>\n </label>\n </div>\n\n <label className=\"block space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">\n {t('eventfullymanaged.venues.form.fields.amenities', 'Amenities (comma separated)')}\n </span>\n <input\n value={form.amenities}\n onChange={(e) => onChange('amenities', e.target.value)}\n placeholder={t('eventfullymanaged.venues.form.amenitiesPlaceholder', 'wifi, parking, catering')}\n className=\"w-full rounded-md border border-border-default px-3 py-2\"\n />\n </label>\n\n <div className=\"flex justify-end\">\n <button\n type=\"submit\"\n disabled={isSaving}\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 {isSaving\n ? t('eventfullymanaged.venues.form.actions.saving', 'Saving...')\n : t('eventfullymanaged.venues.form.actions.save', 'Save Venue')}\n </button>\n </div>\n </form>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VenueFormPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/venues/VenueFormPage.tsx"],"sourcesContent":["/* eslint-disable react-hooks/set-state-in-effect */\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { ArrowLeft, Save } from 'lucide-react';\nimport { Button, EmphasisPanel, Input, PagePurpose, Textarea } from '@burdenoff/fe-libs/ui';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport { useCreateVenueMutation, useUpdateVenueMutation, useVenueQuery } from '../../api/eventApi';\nimport { useEventfullyManaged } from '../../context/EventfullyManagedContext';\n\ntype VenueFormState = {\n name: string;\n description: string;\n addressLine1: string;\n city: string;\n state: string;\n country: string;\n postalCode: string;\n capacity: string;\n amenities: string;\n status: string;\n};\n\nconst initialState: VenueFormState = {\n name: '',\n description: '',\n addressLine1: '',\n city: '',\n state: '',\n country: 'India',\n postalCode: '',\n capacity: '',\n amenities: '',\n status: 'ACTIVE',\n};\n\nexport default function VenueFormPage() {\n const { t: translate } = useI18n();\n const t = (key: string, fallback: string) => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\n const { id = '' } = useParams<{ id: string }>();\n const isEdit = useMemo(() => Boolean(id), [id]);\n const { navigate } = useEventfullyManaged();\n const { data } = useVenueQuery(id);\n const [createVenue, { loading: creating }] = useCreateVenueMutation();\n const [updateVenue, { loading: updating }] = useUpdateVenueMutation();\n const [form, setForm] = useState<VenueFormState>(initialState);\n\n useEffect(() => {\n if (!isEdit || !data?.venue) {\n return;\n }\n setForm({\n name: data.venue.name ?? '',\n description: data.venue.description ?? '',\n addressLine1: data.venue.addressLine1 ?? '',\n city: data.venue.city ?? '',\n state: data.venue.state ?? '',\n country: data.venue.country ?? 'India',\n postalCode: data.venue.postalCode ?? '',\n capacity: data.venue.capacity ? String(data.venue.capacity) : '',\n amenities: (data.venue.amenities ?? []).join(', '),\n status: data.venue.status ?? 'ACTIVE',\n });\n }, [data, isEdit]);\n\n const onChange = (field: keyof VenueFormState, value: string) => {\n setForm((prev) => ({ ...prev, [field]: value }));\n };\n\n const onSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const payload = {\n name: form.name,\n description: form.description,\n addressLine1: form.addressLine1,\n city: form.city,\n state: form.state,\n country: form.country,\n postalCode: form.postalCode,\n capacity: form.capacity ? Number(form.capacity) : null,\n amenities: form.amenities\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean),\n status: form.status,\n pricing: {},\n openingHours: {},\n metadata: {},\n };\n\n if (isEdit) {\n await updateVenue({ variables: { id, input: payload } });\n navigate(`/venues/${id}`);\n return;\n }\n\n const response = await createVenue({ variables: { input: payload } });\n const createdId = response.data?.createVenue?.id;\n navigate(createdId ? `/venues/${createdId}` : '/venues');\n };\n\n const isSaving = creating || updating;\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('/venues')}>\n <ArrowLeft className=\"h-4 w-4\" />\n {t('eventfullymanaged.venues.form.backToVenues', 'Back to Venues')}\n </Button>\n <h1 className=\"mt-3 text-2xl font-bold text-text-primary\">\n {isEdit\n ? t('eventfullymanaged.venues.form.editTitle', 'Edit Venue')\n : t('eventfullymanaged.venues.form.createTitle', 'Create Venue')}\n </h1>\n <p className=\"mt-1 text-sm text-text-secondary\">\n {t('eventfullymanaged.venues.form.description', 'Manage venue details with live backend persistence.')}\n </p>\n </div>\n\n <PagePurpose>\n {t(\n 'eventfullymanaged.venues.form.purpose',\n 'Describe a space so you can reuse it across events. Capacity drives how many attendees you can register, the address helps people find it, and amenities tell organizers what is already provided. Fill this in once and every future event can simply point at this venue.'\n )}\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\">\n {t('eventfullymanaged.venues.form.fields.name', 'Name')}\n </span>\n <Input value={form.name} onChange={(e) => onChange('name', e.target.value)} required />\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">\n {t('eventfullymanaged.venues.form.fields.capacity', 'Capacity')}\n </span>\n <Input\n value={form.capacity}\n onChange={(e) => onChange('capacity', e.target.value)}\n type=\"number\"\n min=\"0\"\n />\n </label>\n </div>\n\n <label className=\"block space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">\n {t('eventfullymanaged.venues.form.fields.description', 'Description')}\n </span>\n <Textarea value={form.description} onChange={(e) => onChange('description', e.target.value)} rows={3} />\n </label>\n\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-4\">\n <label className=\"space-y-1 text-sm md:col-span-2\">\n <span className=\"font-medium text-text-primary\">\n {t('eventfullymanaged.venues.form.fields.address', 'Address')}\n </span>\n <Input value={form.addressLine1} onChange={(e) => onChange('addressLine1', e.target.value)} />\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">\n {t('eventfullymanaged.venues.form.fields.city', 'City')}\n </span>\n <Input value={form.city} onChange={(e) => onChange('city', e.target.value)} />\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">\n {t('eventfullymanaged.venues.form.fields.state', 'State')}\n </span>\n <Input value={form.state} onChange={(e) => onChange('state', e.target.value)} />\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\">\n {t('eventfullymanaged.venues.form.fields.country', 'Country')}\n </span>\n <Input value={form.country} onChange={(e) => onChange('country', e.target.value)} />\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">\n {t('eventfullymanaged.venues.form.fields.postalCode', 'Postal Code')}\n </span>\n <Input value={form.postalCode} onChange={(e) => onChange('postalCode', e.target.value)} />\n </label>\n <label className=\"space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">\n {t('eventfullymanaged.venues.form.fields.status', 'Status')}\n </span>\n <select value={form.status} onChange={(e) => onChange('status', e.target.value)} className={selectClass}>\n <option value=\"ACTIVE\">{t('eventfullymanaged.venues.form.statusOptions.active', 'Active')}</option>\n <option value=\"INACTIVE\">\n {t('eventfullymanaged.venues.form.statusOptions.inactive', 'Inactive')}\n </option>\n <option value=\"MAINTENANCE\">\n {t('eventfullymanaged.venues.form.statusOptions.maintenance', 'Maintenance')}\n </option>\n </select>\n </label>\n </div>\n\n <label className=\"block space-y-1 text-sm\">\n <span className=\"font-medium text-text-primary\">\n {t('eventfullymanaged.venues.form.fields.amenities', 'Amenities (comma separated)')}\n </span>\n <Input\n value={form.amenities}\n onChange={(e) => onChange('amenities', e.target.value)}\n placeholder={t('eventfullymanaged.venues.form.amenitiesPlaceholder', 'wifi, parking, catering')}\n />\n </label>\n\n <div className=\"flex justify-end\">\n <Button type=\"submit\" disabled={isSaving}>\n <Save className=\"h-4 w-4\" />\n {isSaving\n ? t('eventfullymanaged.venues.form.actions.saving', 'Saving...')\n : t('eventfullymanaged.venues.form.actions.save', 'Save Venue')}\n </Button>\n </div>\n </form>\n </EmphasisPanel>\n </div>\n );\n}\n"],"mappings":"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"}
|