@burdenoff/microfe-eventfullymanaged 2026.529.1 → 2026.625.1

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 +39 -27
  4. package/dist/eventfullymanaged/pages/dashboard/DashboardPage.js.map +1 -1
  5. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js +40 -41
  6. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js.map +1 -1
  7. package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js +67 -65
  8. package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js.map +1 -1
  9. package/dist/eventfullymanaged/pages/modules/CommunicationPage.js +48 -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 +55 -57
  14. package/dist/eventfullymanaged/pages/modules/EventsPage.js.map +1 -1
  15. package/dist/eventfullymanaged/pages/modules/KioskPage.js +17 -19
  16. package/dist/eventfullymanaged/pages/modules/KioskPage.js.map +1 -1
  17. package/dist/eventfullymanaged/pages/modules/NetworkingPage.js +22 -22
  18. package/dist/eventfullymanaged/pages/modules/NetworkingPage.js.map +1 -1
  19. package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js +90 -82
  20. package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js.map +1 -1
  21. package/dist/eventfullymanaged/pages/modules/RegistrationPage.js +28 -29
  22. package/dist/eventfullymanaged/pages/modules/RegistrationPage.js.map +1 -1
  23. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js +67 -65
  24. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js.map +1 -1
  25. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js +18 -20
  26. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js.map +1 -1
  27. package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js +68 -64
  28. package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js.map +1 -1
  29. package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js +57 -60
  30. package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js.map +1 -1
  31. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js +197 -199
  32. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js.map +1 -1
  33. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js +57 -39
  34. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js.map +1 -1
  35. package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js +41 -31
  36. package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js.map +1 -1
  37. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js +79 -62
  38. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js.map +1 -1
  39. package/dist/eventfullymanaged/pages/venues/VenueFormPage.js +185 -189
  40. package/dist/eventfullymanaged/pages/venues/VenueFormPage.js.map +1 -1
  41. package/dist/eventfullymanaged/pages/venues/VenueListPage.js +63 -35
  42. package/dist/eventfullymanaged/pages/venues/VenueListPage.js.map +1 -1
  43. package/package.json +2 -2
@@ -2,35 +2,34 @@ import { useMeetingsQuery as e, useNetworkingMatchesQuery as t, useNetworkingPro
2
2
  import { EntityListSection as r } from "./EntityListSection.js";
3
3
  import { useMemo as i } from "react";
4
4
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
+ import { EmphasisPanel as s, GradientText as c } from "@burdenoff/fe-libs/ui";
5
6
  //#region src/eventfullymanaged/pages/modules/NetworkingPage.tsx
6
- function s() {
7
- let s = n({
7
+ function l() {
8
+ let l = n({
8
9
  limit: 100,
9
10
  offset: 0
10
- }), c = t({
11
+ }), u = t({
11
12
  limit: 100,
12
13
  offset: 0
13
- }), l = e({
14
+ }), d = e({
14
15
  limit: 100,
15
16
  offset: 0
16
- }), u = i(() => s.data?.networkingProfiles.items ?? [], [s.data]), d = i(() => c.data?.networkingMatches.items ?? [], [c.data]), f = i(() => l.data?.meetings.items ?? [], [l.data]);
17
+ }), f = i(() => l.data?.networkingProfiles.items ?? [], [l.data]), p = i(() => u.data?.networkingMatches.items ?? [], [u.data]), m = i(() => d.data?.meetings.items ?? [], [d.data]);
17
18
  return /* @__PURE__ */ o("div", {
18
19
  className: "space-y-6 p-6",
19
20
  children: [
20
- /* @__PURE__ */ o("section", {
21
- className: "rounded-lg border border-border-default bg-bg-surface p-5",
22
- children: [/* @__PURE__ */ a("h1", {
23
- className: "text-2xl font-bold text-text-primary",
24
- children: "Networking"
25
- }), /* @__PURE__ */ a("p", {
26
- className: "mt-1 text-sm text-text-secondary",
27
- children: "Manage networking matches and meeting schedules from live backend data."
28
- })]
29
- }),
21
+ /* @__PURE__ */ o(s, { children: [/* @__PURE__ */ a("h1", {
22
+ className: "text-2xl font-bold text-text-primary",
23
+ children: /* @__PURE__ */ a(c, { children: "Networking" })
24
+ }), /* @__PURE__ */ a("p", {
25
+ className: "mt-1 text-sm text-text-secondary",
26
+ children: "Manage networking matches and meeting schedules from live backend data."
27
+ })] }),
30
28
  /* @__PURE__ */ a(r, {
31
- heading: s.loading ? "Loading networking profiles..." : `Profiles (${u.length})`,
29
+ heading: l.loading ? "Loading networking profiles..." : `Profiles (${f.length})`,
32
30
  emptyLabel: "No networking profiles available.",
33
- rows: u.map((e) => ({
31
+ emptyIllustration: "empty-people",
32
+ rows: f.map((e) => ({
34
33
  id: e.id,
35
34
  title: e.attendeeId ? `Attendee ${e.attendeeId}` : `Profile ${e.id}`,
36
35
  subtitle: [e.role, e.industry].filter(Boolean).join(" • "),
@@ -38,9 +37,10 @@ function s() {
38
37
  }))
39
38
  }),
40
39
  /* @__PURE__ */ a(r, {
41
- heading: c.loading ? "Loading networking matches..." : `Matches (${d.length})`,
40
+ heading: u.loading ? "Loading networking matches..." : `Matches (${p.length})`,
42
41
  emptyLabel: "No networking matches available.",
43
- rows: d.map((e) => ({
42
+ emptyIllustration: "empty-people",
43
+ rows: p.map((e) => ({
44
44
  id: e.id,
45
45
  title: e.name ?? e.title ?? `Match ${e.id}`,
46
46
  subtitle: "Suggested by networking engine",
@@ -48,9 +48,9 @@ function s() {
48
48
  }))
49
49
  }),
50
50
  /* @__PURE__ */ a(r, {
51
- heading: l.loading ? "Loading meetings..." : `Meetings (${f.length})`,
51
+ heading: d.loading ? "Loading meetings..." : `Meetings (${m.length})`,
52
52
  emptyLabel: "No meetings scheduled.",
53
- rows: f.map((e) => ({
53
+ rows: m.map((e) => ({
54
54
  id: e.id,
55
55
  title: e.title ?? e.name ?? `Meeting ${e.id}`,
56
56
  status: e.status ?? void 0
@@ -60,6 +60,6 @@ function s() {
60
60
  });
61
61
  }
62
62
  //#endregion
63
- export { s as default };
63
+ export { l as default };
64
64
 
65
65
  //# sourceMappingURL=NetworkingPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkingPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/NetworkingPage.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useMeetingsQuery, useNetworkingMatchesQuery, useNetworkingProfilesQuery } from '../../api/eventApi';\nimport { EntityListSection } from './EntityListSection';\n\ntype SimpleRow = {\n id: string;\n name?: string;\n title?: string;\n status?: string;\n};\n\nexport default function NetworkingPage() {\n const profilesQuery = useNetworkingProfilesQuery({ limit: 100, offset: 0 });\n const matchesQuery = useNetworkingMatchesQuery({ limit: 100, offset: 0 });\n const meetingsQuery = useMeetingsQuery({ limit: 100, offset: 0 });\n\n const profiles = useMemo(() => profilesQuery.data?.networkingProfiles.items ?? [], [profilesQuery.data]);\n const matches = useMemo(() => (matchesQuery.data?.networkingMatches.items ?? []) as SimpleRow[], [matchesQuery.data]);\n const meetings = useMemo(() => (meetingsQuery.data?.meetings.items ?? []) as SimpleRow[], [meetingsQuery.data]);\n\n return (\n <div className=\"space-y-6 p-6\">\n <section className=\"rounded-lg border border-border-default bg-bg-surface p-5\">\n <h1 className=\"text-2xl font-bold text-text-primary\">Networking</h1>\n <p className=\"mt-1 text-sm text-text-secondary\">\n Manage networking matches and meeting schedules from live backend data.\n </p>\n </section>\n\n <EntityListSection\n heading={profilesQuery.loading ? 'Loading networking profiles...' : `Profiles (${profiles.length})`}\n emptyLabel=\"No networking profiles available.\"\n rows={profiles.map((row) => ({\n id: row.id,\n title: row.attendeeId ? `Attendee ${row.attendeeId}` : `Profile ${row.id}`,\n subtitle: [row.role, row.industry].filter(Boolean).join(' • '),\n status: row.visibility,\n }))}\n />\n\n <EntityListSection\n heading={matchesQuery.loading ? 'Loading networking matches...' : `Matches (${matches.length})`}\n emptyLabel=\"No networking matches available.\"\n rows={matches.map((row) => ({\n id: row.id,\n title: row.name ?? row.title ?? `Match ${row.id}`,\n subtitle: 'Suggested by networking engine',\n status: row.status ?? undefined,\n }))}\n />\n\n <EntityListSection\n heading={meetingsQuery.loading ? 'Loading meetings...' : `Meetings (${meetings.length})`}\n emptyLabel=\"No meetings scheduled.\"\n rows={meetings.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Meeting ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n </div>\n );\n}\n"],"mappings":";;;;;AAYA,SAAwB,IAAiB;CACvC,IAAM,IAAgB,EAA2B;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EACrE,IAAe,EAA0B;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EACnE,IAAgB,EAAiB;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EAE3D,IAAW,QAAc,EAAc,MAAM,mBAAmB,SAAS,EAAE,EAAE,CAAC,EAAc,KAAK,CAAC,EAClG,IAAU,QAAe,EAAa,MAAM,kBAAkB,SAAS,EAAE,EAAkB,CAAC,EAAa,KAAK,CAAC,EAC/G,IAAW,QAAe,EAAc,MAAM,SAAS,SAAS,EAAE,EAAkB,CAAC,EAAc,KAAK,CAAC;AAE/G,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,WAAD;IAAS,WAAU;cAAnB,CACE,kBAAC,MAAD;KAAI,WAAU;eAAuC;KAAe,CAAA,EACpE,kBAAC,KAAD;KAAG,WAAU;eAAmC;KAE5C,CAAA,CACI;;GAEV,kBAAC,GAAD;IACE,SAAS,EAAc,UAAU,mCAAmC,aAAa,EAAS,OAAO;IACjG,YAAW;IACX,MAAM,EAAS,KAAK,OAAS;KAC3B,IAAI,EAAI;KACR,OAAO,EAAI,aAAa,YAAY,EAAI,eAAe,WAAW,EAAI;KACtE,UAAU,CAAC,EAAI,MAAM,EAAI,SAAS,CAAC,OAAO,QAAQ,CAAC,KAAK,MAAM;KAC9D,QAAQ,EAAI;KACb,EAAE;IACH,CAAA;GAEF,kBAAC,GAAD;IACE,SAAS,EAAa,UAAU,kCAAkC,YAAY,EAAQ,OAAO;IAC7F,YAAW;IACX,MAAM,EAAQ,KAAK,OAAS;KAC1B,IAAI,EAAI;KACR,OAAO,EAAI,QAAQ,EAAI,SAAS,SAAS,EAAI;KAC7C,UAAU;KACV,QAAQ,EAAI,UAAU,KAAA;KACvB,EAAE;IACH,CAAA;GAEF,kBAAC,GAAD;IACE,SAAS,EAAc,UAAU,wBAAwB,aAAa,EAAS,OAAO;IACtF,YAAW;IACX,MAAM,EAAS,KAAK,OAAS;KAC3B,IAAI,EAAI;KACR,OAAO,EAAI,SAAS,EAAI,QAAQ,WAAW,EAAI;KAC/C,QAAQ,EAAI,UAAU,KAAA;KACvB,EAAE;IACH,CAAA;GACE"}
1
+ {"version":3,"file":"NetworkingPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/NetworkingPage.tsx"],"sourcesContent":["import { EmphasisPanel, GradientText } from '@burdenoff/fe-libs/ui';\nimport { useMemo } from 'react';\n\nimport { useMeetingsQuery, useNetworkingMatchesQuery, useNetworkingProfilesQuery } from '../../api/eventApi';\nimport { EntityListSection } from './EntityListSection';\n\ntype SimpleRow = {\n id: string;\n name?: string;\n title?: string;\n status?: string;\n};\n\nexport default function NetworkingPage() {\n const profilesQuery = useNetworkingProfilesQuery({ limit: 100, offset: 0 });\n const matchesQuery = useNetworkingMatchesQuery({ limit: 100, offset: 0 });\n const meetingsQuery = useMeetingsQuery({ limit: 100, offset: 0 });\n\n const profiles = useMemo(() => profilesQuery.data?.networkingProfiles.items ?? [], [profilesQuery.data]);\n const matches = useMemo(() => (matchesQuery.data?.networkingMatches.items ?? []) as SimpleRow[], [matchesQuery.data]);\n const meetings = useMemo(() => (meetingsQuery.data?.meetings.items ?? []) as SimpleRow[], [meetingsQuery.data]);\n\n return (\n <div className=\"space-y-6 p-6\">\n <EmphasisPanel>\n <h1 className=\"text-2xl font-bold text-text-primary\">\n <GradientText>Networking</GradientText>\n </h1>\n <p className=\"mt-1 text-sm text-text-secondary\">\n Manage networking matches and meeting schedules from live backend data.\n </p>\n </EmphasisPanel>\n\n <EntityListSection\n heading={profilesQuery.loading ? 'Loading networking profiles...' : `Profiles (${profiles.length})`}\n emptyLabel=\"No networking profiles available.\"\n emptyIllustration=\"empty-people\"\n rows={profiles.map((row) => ({\n id: row.id,\n title: row.attendeeId ? `Attendee ${row.attendeeId}` : `Profile ${row.id}`,\n subtitle: [row.role, row.industry].filter(Boolean).join(' • '),\n status: row.visibility,\n }))}\n />\n\n <EntityListSection\n heading={matchesQuery.loading ? 'Loading networking matches...' : `Matches (${matches.length})`}\n emptyLabel=\"No networking matches available.\"\n emptyIllustration=\"empty-people\"\n rows={matches.map((row) => ({\n id: row.id,\n title: row.name ?? row.title ?? `Match ${row.id}`,\n subtitle: 'Suggested by networking engine',\n status: row.status ?? undefined,\n }))}\n />\n\n <EntityListSection\n heading={meetingsQuery.loading ? 'Loading meetings...' : `Meetings (${meetings.length})`}\n emptyLabel=\"No meetings scheduled.\"\n rows={meetings.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Meeting ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;AAaA,SAAwB,IAAiB;CACvC,IAAM,IAAgB,EAA2B;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EACrE,IAAe,EAA0B;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EACnE,IAAgB,EAAiB;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EAE3D,IAAW,QAAc,EAAc,MAAM,mBAAmB,SAAS,EAAE,EAAE,CAAC,EAAc,KAAK,CAAC,EAClG,IAAU,QAAe,EAAa,MAAM,kBAAkB,SAAS,EAAE,EAAkB,CAAC,EAAa,KAAK,CAAC,EAC/G,IAAW,QAAe,EAAc,MAAM,SAAS,SAAS,EAAE,EAAkB,CAAC,EAAc,KAAK,CAAC;AAE/G,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cACZ,kBAAC,GAAD,EAAA,UAAc,cAAyB,CAAA;IACpC,CAAA,EACL,kBAAC,KAAD;IAAG,WAAU;cAAmC;IAE5C,CAAA,CACU,EAAA,CAAA;GAEhB,kBAAC,GAAD;IACE,SAAS,EAAc,UAAU,mCAAmC,aAAa,EAAS,OAAO;IACjG,YAAW;IACX,mBAAkB;IAClB,MAAM,EAAS,KAAK,OAAS;KAC3B,IAAI,EAAI;KACR,OAAO,EAAI,aAAa,YAAY,EAAI,eAAe,WAAW,EAAI;KACtE,UAAU,CAAC,EAAI,MAAM,EAAI,SAAS,CAAC,OAAO,QAAQ,CAAC,KAAK,MAAM;KAC9D,QAAQ,EAAI;KACb,EAAE;IACH,CAAA;GAEF,kBAAC,GAAD;IACE,SAAS,EAAa,UAAU,kCAAkC,YAAY,EAAQ,OAAO;IAC7F,YAAW;IACX,mBAAkB;IAClB,MAAM,EAAQ,KAAK,OAAS;KAC1B,IAAI,EAAI;KACR,OAAO,EAAI,QAAQ,EAAI,SAAS,SAAS,EAAI;KAC7C,UAAU;KACV,QAAQ,EAAI,UAAU,KAAA;KACvB,EAAE;IACH,CAAA;GAEF,kBAAC,GAAD;IACE,SAAS,EAAc,UAAU,wBAAwB,aAAa,EAAS,OAAO;IACtF,YAAW;IACX,MAAM,EAAS,KAAK,OAAS;KAC3B,IAAI,EAAI;KACR,OAAO,EAAI,SAAS,EAAI,QAAQ,WAAW,EAAI;KAC/C,QAAQ,EAAI,UAAU,KAAA;KACvB,EAAE;IACH,CAAA;GACE"}
@@ -2,90 +2,91 @@ import { useAnalyticsSnapshotsQuery as e, useAnnouncementsQuery as t, useAutomat
2
2
  import { EntityListSection as g } from "./EntityListSection.js";
3
3
  import { useMemo as _ } from "react";
4
4
  import { jsx as v, jsxs as y } from "react/jsx-runtime";
5
+ import { EmphasisPanel as b, GlassCard as x, GradientText as S, ShowMore as C } from "@burdenoff/fe-libs/ui";
5
6
  //#region src/eventfullymanaged/pages/modules/OperationsHubPage.tsx
6
- function b({ title: b, description: x, sectionKeys: S }) {
7
- let C = a(), w = t({
7
+ function w({ title: w, description: T, sectionKeys: E }) {
8
+ let D = a(), O = t({
8
9
  limit: 100,
9
10
  offset: 0
10
- }), T = i({
11
+ }), k = i({
11
12
  limit: 100,
12
13
  offset: 0
13
- }), E = h({
14
+ }), A = h({
14
15
  limit: 100,
15
16
  offset: 0
16
- }), D = n({
17
+ }), j = n({
17
18
  limit: 100,
18
19
  offset: 0
19
- }), O = e({
20
+ }), M = e({
20
21
  limit: 100,
21
22
  offset: 0
22
- }), k = d({
23
+ }), N = d({
23
24
  limit: 100,
24
25
  offset: 0
25
- }), A = p({
26
+ }), P = p({
26
27
  limit: 100,
27
28
  offset: 0
28
- }), j = u({
29
+ }), F = u({
29
30
  limit: 100,
30
31
  offset: 0
31
- }), M = f({
32
+ }), I = f({
32
33
  limit: 100,
33
34
  offset: 0
34
- }), N = s({
35
+ }), L = s({
35
36
  limit: 100,
36
37
  offset: 0
37
- }), P = c({
38
+ }), R = c({
38
39
  limit: 100,
39
40
  offset: 0
40
- }), F = m({
41
+ }), z = m({
41
42
  limit: 100,
42
43
  offset: 0
43
- }), I = o({
44
+ }), B = o({
44
45
  limit: 100,
45
46
  offset: 0
46
- }), L = r({
47
+ }), V = r({
47
48
  limit: 100,
48
49
  offset: 0
49
- }), R = l({
50
+ }), H = l({
50
51
  limit: 100,
51
52
  offset: 0
52
- }), z = C.data?.dashboardSummary, B = _(() => k.data?.registrations.items ?? [], [k.data]), V = _(() => B.reduce((e, t) => {
53
+ }), U = D.data?.dashboardSummary, W = _(() => N.data?.registrations.items ?? [], [N.data]), G = _(() => W.reduce((e, t) => {
53
54
  let n = Number(t.totalAmount ?? 0);
54
55
  return Number.isFinite(n) ? e + n : e;
55
- }, 0), [B]), H = [
56
+ }, 0), [W]), K = [
56
57
  {
57
58
  label: "Events",
58
- value: z?.totalEvents ?? 0
59
+ value: U?.totalEvents ?? 0
59
60
  },
60
61
  {
61
62
  label: "Active",
62
- value: z?.activeEvents ?? 0
63
+ value: U?.activeEvents ?? 0
63
64
  },
64
65
  {
65
66
  label: "Registrations",
66
- value: z?.totalRegistrations ?? 0
67
+ value: U?.totalRegistrations ?? 0
67
68
  },
68
69
  {
69
70
  label: "Attendees",
70
- value: z?.totalAttendees ?? 0
71
+ value: U?.totalAttendees ?? 0
71
72
  },
72
73
  {
73
74
  label: "Venues",
74
- value: z?.totalVenues ?? 0
75
+ value: U?.totalVenues ?? 0
75
76
  },
76
77
  {
77
78
  label: "Sponsors",
78
- value: z?.totalSponsors ?? 0
79
+ value: U?.totalSponsors ?? 0
79
80
  },
80
81
  {
81
82
  label: "Tracked Revenue",
82
- value: V.toFixed(2)
83
+ value: G.toFixed(2)
83
84
  }
84
- ], U = (e) => {
85
+ ], q = (e) => {
85
86
  if (e === "announcements") {
86
- let e = w.data?.announcements.items ?? [];
87
+ let e = O.data?.announcements.items ?? [];
87
88
  return /* @__PURE__ */ v(g, {
88
- heading: w.loading ? "Loading announcements..." : `Announcements (${e.length})`,
89
+ heading: O.loading ? "Loading announcements..." : `Announcements (${e.length})`,
89
90
  emptyLabel: "No announcements recorded.",
90
91
  rows: e.map((e) => ({
91
92
  id: e.id,
@@ -95,9 +96,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
95
96
  });
96
97
  }
97
98
  if (e === "campaigns") {
98
- let e = T.data?.communicationCampaigns.items ?? [];
99
+ let e = k.data?.communicationCampaigns.items ?? [];
99
100
  return /* @__PURE__ */ v(g, {
100
- heading: T.loading ? "Loading campaigns..." : `Campaigns (${e.length})`,
101
+ heading: k.loading ? "Loading campaigns..." : `Campaigns (${e.length})`,
101
102
  emptyLabel: "No communication campaigns available.",
102
103
  rows: e.map((e) => ({
103
104
  id: e.id,
@@ -107,9 +108,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
107
108
  });
108
109
  }
109
110
  if (e === "templates") {
110
- let e = E.data?.workflowTemplates.items ?? [];
111
+ let e = A.data?.workflowTemplates.items ?? [];
111
112
  return /* @__PURE__ */ v(g, {
112
- heading: E.loading ? "Loading templates..." : `Workflow Templates (${e.length})`,
113
+ heading: A.loading ? "Loading templates..." : `Workflow Templates (${e.length})`,
113
114
  emptyLabel: "No workflow templates configured.",
114
115
  rows: e.map((e) => ({
115
116
  id: e.id,
@@ -119,9 +120,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
119
120
  });
120
121
  }
121
122
  if (e === "rules") {
122
- let e = D.data?.automationRules.items ?? [];
123
+ let e = j.data?.automationRules.items ?? [];
123
124
  return /* @__PURE__ */ v(g, {
124
- heading: D.loading ? "Loading rules..." : `Automation Rules (${e.length})`,
125
+ heading: j.loading ? "Loading rules..." : `Automation Rules (${e.length})`,
125
126
  emptyLabel: "No automation rules configured.",
126
127
  rows: e.map((e) => ({
127
128
  id: e.id,
@@ -131,9 +132,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
131
132
  });
132
133
  }
133
134
  if (e === "snapshots") {
134
- let e = O.data?.analyticsSnapshots.items ?? [];
135
+ let e = M.data?.analyticsSnapshots.items ?? [];
135
136
  return /* @__PURE__ */ v(g, {
136
- heading: O.loading ? "Loading analytics snapshots..." : `Snapshots (${e.length})`,
137
+ heading: M.loading ? "Loading analytics snapshots..." : `Snapshots (${e.length})`,
137
138
  emptyLabel: "No analytics snapshots generated.",
138
139
  rows: e.map((e) => ({
139
140
  id: e.id,
@@ -143,9 +144,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
143
144
  });
144
145
  }
145
146
  if (e === "registrations") return /* @__PURE__ */ v(g, {
146
- heading: k.loading ? "Loading registrations..." : `Registrations (${B.length})`,
147
+ heading: N.loading ? "Loading registrations..." : `Registrations (${W.length})`,
147
148
  emptyLabel: "No registrations available.",
148
- rows: B.map((e) => ({
149
+ rows: W.map((e) => ({
149
150
  id: e.id,
150
151
  title: e.attendeeId ? `Attendee ${e.attendeeId}` : `Registration ${e.id}`,
151
152
  subtitle: e.totalAmount ? `${e.totalAmount} ${e.currency ?? ""}`.trim() : void 0,
@@ -153,9 +154,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
153
154
  }))
154
155
  });
155
156
  if (e === "ticketTypes") {
156
- let e = A.data?.ticketTypes.items ?? [];
157
+ let e = P.data?.ticketTypes.items ?? [];
157
158
  return /* @__PURE__ */ v(g, {
158
- heading: A.loading ? "Loading ticket types..." : `Ticket Types (${e.length})`,
159
+ heading: P.loading ? "Loading ticket types..." : `Ticket Types (${e.length})`,
159
160
  emptyLabel: "No ticket types configured.",
160
161
  rows: e.map((e) => ({
161
162
  id: e.id,
@@ -166,9 +167,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
166
167
  });
167
168
  }
168
169
  if (e === "promoCodes") {
169
- let e = j.data?.promoCodes.items ?? [];
170
+ let e = F.data?.promoCodes.items ?? [];
170
171
  return /* @__PURE__ */ v(g, {
171
- heading: j.loading ? "Loading promo codes..." : `Promo Codes (${e.length})`,
172
+ heading: F.loading ? "Loading promo codes..." : `Promo Codes (${e.length})`,
172
173
  emptyLabel: "No promo codes configured.",
173
174
  rows: e.map((e) => ({
174
175
  id: e.id,
@@ -179,9 +180,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
179
180
  });
180
181
  }
181
182
  if (e === "sponsors") {
182
- let e = M.data?.sponsors.items ?? [];
183
+ let e = I.data?.sponsors.items ?? [];
183
184
  return /* @__PURE__ */ v(g, {
184
- heading: M.loading ? "Loading sponsors..." : `Sponsors (${e.length})`,
185
+ heading: I.loading ? "Loading sponsors..." : `Sponsors (${e.length})`,
185
186
  emptyLabel: "No sponsors onboarded.",
186
187
  rows: e.map((e) => ({
187
188
  id: e.id,
@@ -191,9 +192,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
191
192
  });
192
193
  }
193
194
  if (e === "exhibitors") {
194
- let e = N.data?.exhibitors.items ?? [];
195
+ let e = L.data?.exhibitors.items ?? [];
195
196
  return /* @__PURE__ */ v(g, {
196
- heading: N.loading ? "Loading exhibitors..." : `Exhibitors (${e.length})`,
197
+ heading: L.loading ? "Loading exhibitors..." : `Exhibitors (${e.length})`,
197
198
  emptyLabel: "No exhibitors onboarded.",
198
199
  rows: e.map((e) => ({
199
200
  id: e.id,
@@ -204,9 +205,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
204
205
  });
205
206
  }
206
207
  if (e === "leads") {
207
- let e = P.data?.leads.items ?? [];
208
+ let e = R.data?.leads.items ?? [];
208
209
  return /* @__PURE__ */ v(g, {
209
- heading: P.loading ? "Loading leads..." : `Leads (${e.length})`,
210
+ heading: R.loading ? "Loading leads..." : `Leads (${e.length})`,
210
211
  emptyLabel: "No leads captured.",
211
212
  rows: e.map((e) => ({
212
213
  id: e.id,
@@ -217,9 +218,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
217
218
  });
218
219
  }
219
220
  if (e === "venues") {
220
- let e = F.data?.venues.items ?? [];
221
+ let e = z.data?.venues.items ?? [];
221
222
  return /* @__PURE__ */ v(g, {
222
- heading: F.loading ? "Loading venues..." : `Venues (${e.length})`,
223
+ heading: z.loading ? "Loading venues..." : `Venues (${e.length})`,
223
224
  emptyLabel: "No venues configured.",
224
225
  rows: e.map((e) => ({
225
226
  id: e.id,
@@ -230,9 +231,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
230
231
  });
231
232
  }
232
233
  if (e === "checkInRecords") {
233
- let e = L.data?.checkInRecords.items ?? [];
234
+ let e = V.data?.checkInRecords.items ?? [];
234
235
  return /* @__PURE__ */ v(g, {
235
- heading: L.loading ? "Loading check-in records..." : `Check-In Records (${e.length})`,
236
+ heading: V.loading ? "Loading check-in records..." : `Check-In Records (${e.length})`,
236
237
  emptyLabel: "No check-in records found.",
237
238
  rows: e.map((e) => ({
238
239
  id: e.id,
@@ -243,9 +244,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
243
244
  });
244
245
  }
245
246
  if (e === "networkingProfiles") {
246
- let e = R.data?.networkingProfiles.items ?? [];
247
+ let e = H.data?.networkingProfiles.items ?? [];
247
248
  return /* @__PURE__ */ v(g, {
248
- heading: R.loading ? "Loading networking profiles..." : `Profiles (${e.length})`,
249
+ heading: H.loading ? "Loading networking profiles..." : `Profiles (${e.length})`,
249
250
  emptyLabel: "No networking profiles available.",
250
251
  rows: e.map((e) => ({
251
252
  id: e.id,
@@ -255,9 +256,9 @@ function b({ title: b, description: x, sectionKeys: S }) {
255
256
  }))
256
257
  });
257
258
  }
258
- let t = I.data?.eventSessions.items ?? [];
259
+ let t = B.data?.eventSessions.items ?? [];
259
260
  return /* @__PURE__ */ v(g, {
260
- heading: I.loading ? "Loading sessions..." : `Sessions (${t.length})`,
261
+ heading: B.loading ? "Loading sessions..." : `Sessions (${t.length})`,
261
262
  emptyLabel: "No sessions scheduled.",
262
263
  rows: t.map((e) => ({
263
264
  id: e.id,
@@ -266,44 +267,51 @@ function b({ title: b, description: x, sectionKeys: S }) {
266
267
  status: e.status ?? void 0
267
268
  }))
268
269
  });
269
- };
270
+ }, J = E.slice(0, 3), Y = E.slice(3);
270
271
  return /* @__PURE__ */ y("div", {
271
272
  className: "space-y-6 p-6",
272
273
  children: [
273
- /* @__PURE__ */ y("section", {
274
- className: "rounded-lg border border-border-default bg-bg-surface p-5",
275
- children: [/* @__PURE__ */ v("h1", {
276
- className: "text-2xl font-bold text-text-primary",
277
- children: b
278
- }), /* @__PURE__ */ v("p", {
279
- className: "mt-1 text-sm text-text-secondary",
280
- children: x
281
- })]
282
- }),
283
- /* @__PURE__ */ y("section", {
284
- className: "rounded-lg border border-border-default bg-bg-surface p-5",
285
- children: [/* @__PURE__ */ v("h2", {
286
- className: "text-lg font-semibold text-text-primary",
287
- children: "Operational Metrics"
288
- }), /* @__PURE__ */ v("div", {
289
- className: "mt-4 grid grid-cols-1 gap-3 sm:grid-cols-2 xl:grid-cols-4",
290
- children: H.map((e) => /* @__PURE__ */ y("div", {
291
- className: "rounded-md border border-border-default p-3",
274
+ /* @__PURE__ */ y(b, { children: [/* @__PURE__ */ v("h1", {
275
+ className: "text-2xl font-bold text-text-primary",
276
+ children: /* @__PURE__ */ v(S, { children: w })
277
+ }), /* @__PURE__ */ v("p", {
278
+ className: "mt-1 text-sm text-text-secondary",
279
+ children: T
280
+ })] }),
281
+ /* @__PURE__ */ y("section", { children: [/* @__PURE__ */ v("h2", {
282
+ className: "text-lg font-semibold text-text-primary",
283
+ children: "Operational Metrics"
284
+ }), /* @__PURE__ */ v("div", {
285
+ className: "mt-4 grid grid-cols-1 gap-3 sm:grid-cols-2 xl:grid-cols-4",
286
+ children: K.map((e, t) => {
287
+ let n = t === 0;
288
+ return /* @__PURE__ */ y(x, {
289
+ treatment: n ? "glass" : "metric",
290
+ glow: n,
291
+ className: "p-3",
292
292
  children: [/* @__PURE__ */ v("p", {
293
293
  className: "text-xs uppercase tracking-wide text-text-secondary",
294
294
  children: e.label
295
295
  }), /* @__PURE__ */ v("p", {
296
- className: "mt-1 text-xl font-semibold text-text-primary",
296
+ className: "mt-1 text-xl font-semibold tabular-nums text-text-primary",
297
297
  children: e.value
298
298
  })]
299
- }, e.label))
300
- })]
301
- }),
302
- S.map((e) => /* @__PURE__ */ v("div", { children: U(e) }, e))
299
+ }, e.label);
300
+ })
301
+ })] }),
302
+ J.map((e) => /* @__PURE__ */ v("div", { children: q(e) }, e)),
303
+ Y.length > 0 ? /* @__PURE__ */ v(C, {
304
+ collapsedHeight: 160,
305
+ label: "Show all sections",
306
+ children: /* @__PURE__ */ v("div", {
307
+ className: "space-y-6",
308
+ children: Y.map((e) => /* @__PURE__ */ v("div", { children: q(e) }, e))
309
+ })
310
+ }) : null
303
311
  ]
304
312
  });
305
313
  }
306
314
  //#endregion
307
- export { b as default };
315
+ export { w as default };
308
316
 
309
317
  //# sourceMappingURL=OperationsHubPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OperationsHubPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/OperationsHubPage.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport {\n useExhibitorsQuery,\n useLeadsQuery,\n useCheckInRecordsQuery,\n useNetworkingProfilesQuery,\n usePromoCodesQuery,\n useTicketTypesQuery,\n useAnalyticsSnapshotsQuery,\n useAnnouncementsQuery,\n useAutomationRulesQuery,\n useCommunicationCampaignsQuery,\n useDashboardSummaryQuery,\n useEventSessionsQuery,\n useRegistrationsQuery,\n useSponsorsQuery,\n useVenuesQuery,\n useWorkflowTemplatesQuery,\n} from '../../api/eventApi';\nimport { EntityListSection } from './EntityListSection';\n\ntype SectionKey =\n | 'announcements'\n | 'campaigns'\n | 'templates'\n | 'rules'\n | 'snapshots'\n | 'registrations'\n | 'ticketTypes'\n | 'promoCodes'\n | 'sponsors'\n | 'exhibitors'\n | 'leads'\n | 'venues'\n | 'sessions'\n | 'checkInRecords'\n | 'networkingProfiles';\n\ninterface OperationsHubPageProps {\n title: string;\n description: string;\n sectionKeys: SectionKey[];\n}\n\ntype NamedEntity = {\n id: string;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n};\n\ntype RegistrationEntity = {\n id: string;\n attendeeId?: string | null;\n status?: string | null;\n totalAmount?: string | null;\n currency?: string | null;\n};\n\ntype SponsorEntity = {\n id: string;\n name: string;\n level: string;\n};\n\ntype VenueEntity = {\n id: string;\n name: string;\n city?: string | null;\n status: string;\n};\n\ntype SessionEntity = {\n id: string;\n title?: string | null;\n sessionType?: string | null;\n status?: string | null;\n};\n\ntype ExhibitorEntity = {\n id: string;\n name: string;\n boothCode?: string | null;\n category?: string | null;\n status: string;\n};\n\ntype LeadEntity = {\n id: string;\n attendeeName: string;\n attendeeEmail: string;\n status: string;\n score?: number | null;\n};\n\nexport default function OperationsHubPage({ title, description, sectionKeys }: OperationsHubPageProps) {\n const summaryQuery = useDashboardSummaryQuery();\n const announcementsQuery = useAnnouncementsQuery({ limit: 100, offset: 0 });\n const campaignsQuery = useCommunicationCampaignsQuery({ limit: 100, offset: 0 });\n const templatesQuery = useWorkflowTemplatesQuery({ limit: 100, offset: 0 });\n const rulesQuery = useAutomationRulesQuery({ limit: 100, offset: 0 });\n const snapshotsQuery = useAnalyticsSnapshotsQuery({ limit: 100, offset: 0 });\n const registrationsQuery = useRegistrationsQuery({ limit: 100, offset: 0 });\n const ticketTypesQuery = useTicketTypesQuery({ limit: 100, offset: 0 });\n const promoCodesQuery = usePromoCodesQuery({ limit: 100, offset: 0 });\n const sponsorsQuery = useSponsorsQuery({ limit: 100, offset: 0 });\n const exhibitorsQuery = useExhibitorsQuery({ limit: 100, offset: 0 });\n const leadsQuery = useLeadsQuery({ limit: 100, offset: 0 });\n const venuesQuery = useVenuesQuery({ limit: 100, offset: 0 });\n const sessionsQuery = useEventSessionsQuery({ limit: 100, offset: 0 });\n const checkInRecordsQuery = useCheckInRecordsQuery({ limit: 100, offset: 0 });\n const networkingProfilesQuery = useNetworkingProfilesQuery({ limit: 100, offset: 0 });\n\n const summary = summaryQuery.data?.dashboardSummary;\n\n const registrations = useMemo(\n () => (registrationsQuery.data?.registrations.items ?? []) as RegistrationEntity[],\n [registrationsQuery.data]\n );\n\n const trackedRevenue = useMemo(\n () =>\n registrations.reduce((total, registration) => {\n const value = Number(registration.totalAmount ?? 0);\n return Number.isFinite(value) ? total + value : total;\n }, 0),\n [registrations]\n );\n\n const cards = [\n { label: 'Events', value: summary?.totalEvents ?? 0 },\n { label: 'Active', value: summary?.activeEvents ?? 0 },\n { label: 'Registrations', value: summary?.totalRegistrations ?? 0 },\n { label: 'Attendees', value: summary?.totalAttendees ?? 0 },\n { label: 'Venues', value: summary?.totalVenues ?? 0 },\n { label: 'Sponsors', value: summary?.totalSponsors ?? 0 },\n { label: 'Tracked Revenue', value: trackedRevenue.toFixed(2) },\n ];\n\n const renderSection = (sectionKey: SectionKey) => {\n if (sectionKey === 'announcements') {\n const rows = (announcementsQuery.data?.announcements.items ?? []) as NamedEntity[];\n return (\n <EntityListSection\n heading={announcementsQuery.loading ? 'Loading announcements...' : `Announcements (${rows.length})`}\n emptyLabel=\"No announcements recorded.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Announcement ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'campaigns') {\n const rows = (campaignsQuery.data?.communicationCampaigns.items ?? []) as NamedEntity[];\n return (\n <EntityListSection\n heading={campaignsQuery.loading ? 'Loading campaigns...' : `Campaigns (${rows.length})`}\n emptyLabel=\"No communication campaigns available.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Campaign ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'templates') {\n const rows = (templatesQuery.data?.workflowTemplates.items ?? []) as NamedEntity[];\n return (\n <EntityListSection\n heading={templatesQuery.loading ? 'Loading templates...' : `Workflow Templates (${rows.length})`}\n emptyLabel=\"No workflow templates configured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Template ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'rules') {\n const rows = (rulesQuery.data?.automationRules.items ?? []) as NamedEntity[];\n return (\n <EntityListSection\n heading={rulesQuery.loading ? 'Loading rules...' : `Automation Rules (${rows.length})`}\n emptyLabel=\"No automation rules configured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Rule ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'snapshots') {\n const rows = (snapshotsQuery.data?.analyticsSnapshots.items ?? []) as NamedEntity[];\n return (\n <EntityListSection\n heading={snapshotsQuery.loading ? 'Loading analytics snapshots...' : `Snapshots (${rows.length})`}\n emptyLabel=\"No analytics snapshots generated.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Snapshot ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'registrations') {\n return (\n <EntityListSection\n heading={registrationsQuery.loading ? 'Loading registrations...' : `Registrations (${registrations.length})`}\n emptyLabel=\"No registrations available.\"\n rows={registrations.map((row) => ({\n id: row.id,\n title: row.attendeeId ? `Attendee ${row.attendeeId}` : `Registration ${row.id}`,\n subtitle: row.totalAmount ? `${row.totalAmount} ${row.currency ?? ''}`.trim() : undefined,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'ticketTypes') {\n const rows = ticketTypesQuery.data?.ticketTypes.items ?? [];\n return (\n <EntityListSection\n heading={ticketTypesQuery.loading ? 'Loading ticket types...' : `Ticket Types (${rows.length})`}\n emptyLabel=\"No ticket types configured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.name,\n subtitle: `${row.price} ${row.currency} • Sold ${row.soldCount}`,\n status: row.isActive ? 'active' : 'inactive',\n }))}\n />\n );\n }\n\n if (sectionKey === 'promoCodes') {\n const rows = promoCodesQuery.data?.promoCodes.items ?? [];\n return (\n <EntityListSection\n heading={promoCodesQuery.loading ? 'Loading promo codes...' : `Promo Codes (${rows.length})`}\n emptyLabel=\"No promo codes configured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.code,\n subtitle: `${row.discountType} ${row.discountValue}`,\n status: row.isActive ? 'active' : 'inactive',\n }))}\n />\n );\n }\n\n if (sectionKey === 'sponsors') {\n const rows = (sponsorsQuery.data?.sponsors.items ?? []) as SponsorEntity[];\n return (\n <EntityListSection\n heading={sponsorsQuery.loading ? 'Loading sponsors...' : `Sponsors (${rows.length})`}\n emptyLabel=\"No sponsors onboarded.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.name,\n subtitle: row.level,\n }))}\n />\n );\n }\n\n if (sectionKey === 'exhibitors') {\n const rows = (exhibitorsQuery.data?.exhibitors.items ?? []) as ExhibitorEntity[];\n return (\n <EntityListSection\n heading={exhibitorsQuery.loading ? 'Loading exhibitors...' : `Exhibitors (${rows.length})`}\n emptyLabel=\"No exhibitors onboarded.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.name,\n subtitle: [row.boothCode, row.category].filter(Boolean).join(' • '),\n status: row.status,\n }))}\n />\n );\n }\n\n if (sectionKey === 'leads') {\n const rows = (leadsQuery.data?.leads.items ?? []) as LeadEntity[];\n return (\n <EntityListSection\n heading={leadsQuery.loading ? 'Loading leads...' : `Leads (${rows.length})`}\n emptyLabel=\"No leads captured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.attendeeName,\n subtitle: [row.attendeeEmail, row.score != null ? `Score ${row.score}` : undefined]\n .filter(Boolean)\n .join(' • '),\n status: row.status,\n }))}\n />\n );\n }\n\n if (sectionKey === 'venues') {\n const rows = (venuesQuery.data?.venues.items ?? []) as VenueEntity[];\n return (\n <EntityListSection\n heading={venuesQuery.loading ? 'Loading venues...' : `Venues (${rows.length})`}\n emptyLabel=\"No venues configured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.name,\n subtitle: row.city ?? undefined,\n status: row.status,\n }))}\n />\n );\n }\n\n if (sectionKey === 'checkInRecords') {\n const rows = checkInRecordsQuery.data?.checkInRecords.items ?? [];\n return (\n <EntityListSection\n heading={checkInRecordsQuery.loading ? 'Loading check-in records...' : `Check-In Records (${rows.length})`}\n emptyLabel=\"No check-in records found.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.attendeeId ? `Attendee ${row.attendeeId}` : `Record ${row.id}`,\n subtitle: `${row.method} • ${row.direction}`,\n status: row.status,\n }))}\n />\n );\n }\n\n if (sectionKey === 'networkingProfiles') {\n const rows = networkingProfilesQuery.data?.networkingProfiles.items ?? [];\n return (\n <EntityListSection\n heading={networkingProfilesQuery.loading ? 'Loading networking profiles...' : `Profiles (${rows.length})`}\n emptyLabel=\"No networking profiles available.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.attendeeId ? `Attendee ${row.attendeeId}` : `Profile ${row.id}`,\n subtitle: [row.role, row.industry].filter(Boolean).join(' • '),\n status: row.visibility,\n }))}\n />\n );\n }\n\n const rows = (sessionsQuery.data?.eventSessions.items ?? []) as SessionEntity[];\n return (\n <EntityListSection\n heading={sessionsQuery.loading ? 'Loading sessions...' : `Sessions (${rows.length})`}\n emptyLabel=\"No sessions scheduled.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? `Session ${row.id}`,\n subtitle: row.sessionType ?? undefined,\n status: row.status ?? undefined,\n }))}\n />\n );\n };\n\n return (\n <div className=\"space-y-6 p-6\">\n <section className=\"rounded-lg border border-border-default bg-bg-surface p-5\">\n <h1 className=\"text-2xl font-bold text-text-primary\">{title}</h1>\n <p className=\"mt-1 text-sm text-text-secondary\">{description}</p>\n </section>\n\n <section className=\"rounded-lg border border-border-default bg-bg-surface p-5\">\n <h2 className=\"text-lg font-semibold text-text-primary\">Operational Metrics</h2>\n <div className=\"mt-4 grid grid-cols-1 gap-3 sm:grid-cols-2 xl:grid-cols-4\">\n {cards.map((card) => (\n <div key={card.label} className=\"rounded-md border border-border-default p-3\">\n <p className=\"text-xs uppercase tracking-wide text-text-secondary\">{card.label}</p>\n <p className=\"mt-1 text-xl font-semibold text-text-primary\">{card.value}</p>\n </div>\n ))}\n </div>\n </section>\n\n {sectionKeys.map((sectionKey) => (\n <div key={sectionKey}>{renderSection(sectionKey)}</div>\n ))}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"OperationsHubPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/OperationsHubPage.tsx"],"sourcesContent":["import { EmphasisPanel, GlassCard, GradientText, ShowMore } from '@burdenoff/fe-libs/ui';\nimport { useMemo } from 'react';\n\nimport {\n useExhibitorsQuery,\n useLeadsQuery,\n useCheckInRecordsQuery,\n useNetworkingProfilesQuery,\n usePromoCodesQuery,\n useTicketTypesQuery,\n useAnalyticsSnapshotsQuery,\n useAnnouncementsQuery,\n useAutomationRulesQuery,\n useCommunicationCampaignsQuery,\n useDashboardSummaryQuery,\n useEventSessionsQuery,\n useRegistrationsQuery,\n useSponsorsQuery,\n useVenuesQuery,\n useWorkflowTemplatesQuery,\n} from '../../api/eventApi';\nimport { EntityListSection } from './EntityListSection';\n\ntype SectionKey =\n | 'announcements'\n | 'campaigns'\n | 'templates'\n | 'rules'\n | 'snapshots'\n | 'registrations'\n | 'ticketTypes'\n | 'promoCodes'\n | 'sponsors'\n | 'exhibitors'\n | 'leads'\n | 'venues'\n | 'sessions'\n | 'checkInRecords'\n | 'networkingProfiles';\n\ninterface OperationsHubPageProps {\n title: string;\n description: string;\n sectionKeys: SectionKey[];\n}\n\ntype NamedEntity = {\n id: string;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n};\n\ntype RegistrationEntity = {\n id: string;\n attendeeId?: string | null;\n status?: string | null;\n totalAmount?: string | null;\n currency?: string | null;\n};\n\ntype SponsorEntity = {\n id: string;\n name: string;\n level: string;\n};\n\ntype VenueEntity = {\n id: string;\n name: string;\n city?: string | null;\n status: string;\n};\n\ntype SessionEntity = {\n id: string;\n title?: string | null;\n sessionType?: string | null;\n status?: string | null;\n};\n\ntype ExhibitorEntity = {\n id: string;\n name: string;\n boothCode?: string | null;\n category?: string | null;\n status: string;\n};\n\ntype LeadEntity = {\n id: string;\n attendeeName: string;\n attendeeEmail: string;\n status: string;\n score?: number | null;\n};\n\nexport default function OperationsHubPage({ title, description, sectionKeys }: OperationsHubPageProps) {\n const summaryQuery = useDashboardSummaryQuery();\n const announcementsQuery = useAnnouncementsQuery({ limit: 100, offset: 0 });\n const campaignsQuery = useCommunicationCampaignsQuery({ limit: 100, offset: 0 });\n const templatesQuery = useWorkflowTemplatesQuery({ limit: 100, offset: 0 });\n const rulesQuery = useAutomationRulesQuery({ limit: 100, offset: 0 });\n const snapshotsQuery = useAnalyticsSnapshotsQuery({ limit: 100, offset: 0 });\n const registrationsQuery = useRegistrationsQuery({ limit: 100, offset: 0 });\n const ticketTypesQuery = useTicketTypesQuery({ limit: 100, offset: 0 });\n const promoCodesQuery = usePromoCodesQuery({ limit: 100, offset: 0 });\n const sponsorsQuery = useSponsorsQuery({ limit: 100, offset: 0 });\n const exhibitorsQuery = useExhibitorsQuery({ limit: 100, offset: 0 });\n const leadsQuery = useLeadsQuery({ limit: 100, offset: 0 });\n const venuesQuery = useVenuesQuery({ limit: 100, offset: 0 });\n const sessionsQuery = useEventSessionsQuery({ limit: 100, offset: 0 });\n const checkInRecordsQuery = useCheckInRecordsQuery({ limit: 100, offset: 0 });\n const networkingProfilesQuery = useNetworkingProfilesQuery({ limit: 100, offset: 0 });\n\n const summary = summaryQuery.data?.dashboardSummary;\n\n const registrations = useMemo(\n () => (registrationsQuery.data?.registrations.items ?? []) as RegistrationEntity[],\n [registrationsQuery.data]\n );\n\n const trackedRevenue = useMemo(\n () =>\n registrations.reduce((total, registration) => {\n const value = Number(registration.totalAmount ?? 0);\n return Number.isFinite(value) ? total + value : total;\n }, 0),\n [registrations]\n );\n\n const cards = [\n { label: 'Events', value: summary?.totalEvents ?? 0 },\n { label: 'Active', value: summary?.activeEvents ?? 0 },\n { label: 'Registrations', value: summary?.totalRegistrations ?? 0 },\n { label: 'Attendees', value: summary?.totalAttendees ?? 0 },\n { label: 'Venues', value: summary?.totalVenues ?? 0 },\n { label: 'Sponsors', value: summary?.totalSponsors ?? 0 },\n { label: 'Tracked Revenue', value: trackedRevenue.toFixed(2) },\n ];\n\n const renderSection = (sectionKey: SectionKey) => {\n if (sectionKey === 'announcements') {\n const rows = (announcementsQuery.data?.announcements.items ?? []) as NamedEntity[];\n return (\n <EntityListSection\n heading={announcementsQuery.loading ? 'Loading announcements...' : `Announcements (${rows.length})`}\n emptyLabel=\"No announcements recorded.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Announcement ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'campaigns') {\n const rows = (campaignsQuery.data?.communicationCampaigns.items ?? []) as NamedEntity[];\n return (\n <EntityListSection\n heading={campaignsQuery.loading ? 'Loading campaigns...' : `Campaigns (${rows.length})`}\n emptyLabel=\"No communication campaigns available.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Campaign ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'templates') {\n const rows = (templatesQuery.data?.workflowTemplates.items ?? []) as NamedEntity[];\n return (\n <EntityListSection\n heading={templatesQuery.loading ? 'Loading templates...' : `Workflow Templates (${rows.length})`}\n emptyLabel=\"No workflow templates configured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Template ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'rules') {\n const rows = (rulesQuery.data?.automationRules.items ?? []) as NamedEntity[];\n return (\n <EntityListSection\n heading={rulesQuery.loading ? 'Loading rules...' : `Automation Rules (${rows.length})`}\n emptyLabel=\"No automation rules configured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Rule ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'snapshots') {\n const rows = (snapshotsQuery.data?.analyticsSnapshots.items ?? []) as NamedEntity[];\n return (\n <EntityListSection\n heading={snapshotsQuery.loading ? 'Loading analytics snapshots...' : `Snapshots (${rows.length})`}\n emptyLabel=\"No analytics snapshots generated.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Snapshot ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'registrations') {\n return (\n <EntityListSection\n heading={registrationsQuery.loading ? 'Loading registrations...' : `Registrations (${registrations.length})`}\n emptyLabel=\"No registrations available.\"\n rows={registrations.map((row) => ({\n id: row.id,\n title: row.attendeeId ? `Attendee ${row.attendeeId}` : `Registration ${row.id}`,\n subtitle: row.totalAmount ? `${row.totalAmount} ${row.currency ?? ''}`.trim() : undefined,\n status: row.status ?? undefined,\n }))}\n />\n );\n }\n\n if (sectionKey === 'ticketTypes') {\n const rows = ticketTypesQuery.data?.ticketTypes.items ?? [];\n return (\n <EntityListSection\n heading={ticketTypesQuery.loading ? 'Loading ticket types...' : `Ticket Types (${rows.length})`}\n emptyLabel=\"No ticket types configured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.name,\n subtitle: `${row.price} ${row.currency} • Sold ${row.soldCount}`,\n status: row.isActive ? 'active' : 'inactive',\n }))}\n />\n );\n }\n\n if (sectionKey === 'promoCodes') {\n const rows = promoCodesQuery.data?.promoCodes.items ?? [];\n return (\n <EntityListSection\n heading={promoCodesQuery.loading ? 'Loading promo codes...' : `Promo Codes (${rows.length})`}\n emptyLabel=\"No promo codes configured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.code,\n subtitle: `${row.discountType} ${row.discountValue}`,\n status: row.isActive ? 'active' : 'inactive',\n }))}\n />\n );\n }\n\n if (sectionKey === 'sponsors') {\n const rows = (sponsorsQuery.data?.sponsors.items ?? []) as SponsorEntity[];\n return (\n <EntityListSection\n heading={sponsorsQuery.loading ? 'Loading sponsors...' : `Sponsors (${rows.length})`}\n emptyLabel=\"No sponsors onboarded.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.name,\n subtitle: row.level,\n }))}\n />\n );\n }\n\n if (sectionKey === 'exhibitors') {\n const rows = (exhibitorsQuery.data?.exhibitors.items ?? []) as ExhibitorEntity[];\n return (\n <EntityListSection\n heading={exhibitorsQuery.loading ? 'Loading exhibitors...' : `Exhibitors (${rows.length})`}\n emptyLabel=\"No exhibitors onboarded.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.name,\n subtitle: [row.boothCode, row.category].filter(Boolean).join(' • '),\n status: row.status,\n }))}\n />\n );\n }\n\n if (sectionKey === 'leads') {\n const rows = (leadsQuery.data?.leads.items ?? []) as LeadEntity[];\n return (\n <EntityListSection\n heading={leadsQuery.loading ? 'Loading leads...' : `Leads (${rows.length})`}\n emptyLabel=\"No leads captured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.attendeeName,\n subtitle: [row.attendeeEmail, row.score != null ? `Score ${row.score}` : undefined]\n .filter(Boolean)\n .join(' • '),\n status: row.status,\n }))}\n />\n );\n }\n\n if (sectionKey === 'venues') {\n const rows = (venuesQuery.data?.venues.items ?? []) as VenueEntity[];\n return (\n <EntityListSection\n heading={venuesQuery.loading ? 'Loading venues...' : `Venues (${rows.length})`}\n emptyLabel=\"No venues configured.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.name,\n subtitle: row.city ?? undefined,\n status: row.status,\n }))}\n />\n );\n }\n\n if (sectionKey === 'checkInRecords') {\n const rows = checkInRecordsQuery.data?.checkInRecords.items ?? [];\n return (\n <EntityListSection\n heading={checkInRecordsQuery.loading ? 'Loading check-in records...' : `Check-In Records (${rows.length})`}\n emptyLabel=\"No check-in records found.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.attendeeId ? `Attendee ${row.attendeeId}` : `Record ${row.id}`,\n subtitle: `${row.method} • ${row.direction}`,\n status: row.status,\n }))}\n />\n );\n }\n\n if (sectionKey === 'networkingProfiles') {\n const rows = networkingProfilesQuery.data?.networkingProfiles.items ?? [];\n return (\n <EntityListSection\n heading={networkingProfilesQuery.loading ? 'Loading networking profiles...' : `Profiles (${rows.length})`}\n emptyLabel=\"No networking profiles available.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.attendeeId ? `Attendee ${row.attendeeId}` : `Profile ${row.id}`,\n subtitle: [row.role, row.industry].filter(Boolean).join(' • '),\n status: row.visibility,\n }))}\n />\n );\n }\n\n const rows = (sessionsQuery.data?.eventSessions.items ?? []) as SessionEntity[];\n return (\n <EntityListSection\n heading={sessionsQuery.loading ? 'Loading sessions...' : `Sessions (${rows.length})`}\n emptyLabel=\"No sessions scheduled.\"\n rows={rows.map((row) => ({\n id: row.id,\n title: row.title ?? `Session ${row.id}`,\n subtitle: row.sessionType ?? undefined,\n status: row.status ?? undefined,\n }))}\n />\n );\n };\n\n const primarySections = sectionKeys.slice(0, 3);\n const secondarySections = sectionKeys.slice(3);\n\n return (\n <div className=\"space-y-6 p-6\">\n <EmphasisPanel>\n <h1 className=\"text-2xl font-bold text-text-primary\">\n <GradientText>{title}</GradientText>\n </h1>\n <p className=\"mt-1 text-sm text-text-secondary\">{description}</p>\n </EmphasisPanel>\n\n <section>\n <h2 className=\"text-lg font-semibold text-text-primary\">Operational Metrics</h2>\n <div className=\"mt-4 grid grid-cols-1 gap-3 sm:grid-cols-2 xl:grid-cols-4\">\n {cards.map((card, index) => {\n const featured = index === 0;\n return (\n <GlassCard key={card.label} treatment={featured ? 'glass' : 'metric'} glow={featured} className=\"p-3\">\n <p className=\"text-xs uppercase tracking-wide text-text-secondary\">{card.label}</p>\n <p className=\"mt-1 text-xl font-semibold tabular-nums text-text-primary\">{card.value}</p>\n </GlassCard>\n );\n })}\n </div>\n </section>\n\n {primarySections.map((sectionKey) => (\n <div key={sectionKey}>{renderSection(sectionKey)}</div>\n ))}\n\n {secondarySections.length > 0 ? (\n <ShowMore collapsedHeight={160} label=\"Show all sections\">\n <div className=\"space-y-6\">\n {secondarySections.map((sectionKey) => (\n <div key={sectionKey}>{renderSection(sectionKey)}</div>\n ))}\n </div>\n </ShowMore>\n ) : null}\n </div>\n );\n}\n"],"mappings":"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"}