@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.
- package/dist/eventfullymanaged/components/PageLayout.js +44 -38
- package/dist/eventfullymanaged/components/PageLayout.js.map +1 -1
- package/dist/eventfullymanaged/pages/dashboard/DashboardPage.js +39 -27
- package/dist/eventfullymanaged/pages/dashboard/DashboardPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js +40 -41
- package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js +67 -65
- package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/CommunicationPage.js +48 -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 +55 -57
- package/dist/eventfullymanaged/pages/modules/EventsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/KioskPage.js +17 -19
- package/dist/eventfullymanaged/pages/modules/KioskPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/NetworkingPage.js +22 -22
- package/dist/eventfullymanaged/pages/modules/NetworkingPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js +90 -82
- package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.js +28 -29
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js +67 -65
- package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js +18 -20
- package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js +68 -64
- package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js +57 -60
- package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js +197 -199
- package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js +57 -39
- package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js +41 -31
- package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js +79 -62
- package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/VenueFormPage.js +185 -189
- package/dist/eventfullymanaged/pages/venues/VenueFormPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/VenueListPage.js +63 -35
- package/dist/eventfullymanaged/pages/venues/VenueListPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -4,71 +4,69 @@ import { useMemo as i, useState as a } from "react";
|
|
|
4
4
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
5
5
|
import { Megaphone as c } from "lucide-react";
|
|
6
6
|
import { useI18n as l } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
7
|
+
import { Button as u, EmphasisPanel as d, GradientText as f, Input as p } from "@burdenoff/fe-libs/ui";
|
|
7
8
|
//#region src/eventfullymanaged/pages/modules/CommunicationPage.tsx
|
|
8
|
-
function
|
|
9
|
-
let { t:
|
|
10
|
-
let n =
|
|
9
|
+
function m() {
|
|
10
|
+
let { t: m } = l(), h = (e, t) => {
|
|
11
|
+
let n = m(e);
|
|
11
12
|
return n === e ? t : n;
|
|
12
|
-
},
|
|
13
|
+
}, g = e({
|
|
13
14
|
limit: 100,
|
|
14
15
|
offset: 0
|
|
15
|
-
}),
|
|
16
|
+
}), _ = t({
|
|
16
17
|
limit: 100,
|
|
17
18
|
offset: 0
|
|
18
|
-
}), [
|
|
19
|
+
}), [v, { loading: y }] = n(), [b, x] = a(""), S = i(() => g.data?.announcements.items ?? [], [g.data]), C = i(() => _.data?.communicationCampaigns.items ?? [], [_.data]);
|
|
19
20
|
return /* @__PURE__ */ s("div", {
|
|
20
21
|
className: "space-y-6 p-6",
|
|
21
22
|
children: [
|
|
22
|
-
/* @__PURE__ */ s(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
/* @__PURE__ */ o("
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
/* @__PURE__ */
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
})
|
|
55
|
-
]
|
|
56
|
-
}),
|
|
23
|
+
/* @__PURE__ */ s(d, { children: [
|
|
24
|
+
/* @__PURE__ */ o("h1", {
|
|
25
|
+
className: "text-2xl font-bold text-text-primary",
|
|
26
|
+
children: /* @__PURE__ */ o(f, { children: h("eventfullymanaged.communication.title", "Communication") })
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ o("p", {
|
|
29
|
+
className: "mt-1 text-sm text-text-secondary",
|
|
30
|
+
children: h("eventfullymanaged.communication.description", "Announcements and campaigns managed via workspace APIs.")
|
|
31
|
+
}),
|
|
32
|
+
/* @__PURE__ */ s("div", {
|
|
33
|
+
className: "mt-4 flex flex-col gap-3 sm:flex-row",
|
|
34
|
+
children: [/* @__PURE__ */ o(p, {
|
|
35
|
+
value: b,
|
|
36
|
+
onChange: (e) => x(e.target.value),
|
|
37
|
+
placeholder: h("eventfullymanaged.communication.inputPlaceholder", "Emergency schedule update"),
|
|
38
|
+
"aria-label": h("eventfullymanaged.communication.inputPlaceholder", "Emergency schedule update"),
|
|
39
|
+
className: "flex-1"
|
|
40
|
+
}), /* @__PURE__ */ s(u, {
|
|
41
|
+
type: "button",
|
|
42
|
+
disabled: y,
|
|
43
|
+
onClick: async () => {
|
|
44
|
+
b.trim() && (await v({ variables: { input: {
|
|
45
|
+
title: b,
|
|
46
|
+
name: b,
|
|
47
|
+
status: "draft",
|
|
48
|
+
metadata: {}
|
|
49
|
+
} } }), x(""));
|
|
50
|
+
},
|
|
51
|
+
children: [/* @__PURE__ */ o(c, { className: "h-4 w-4" }), y ? h("eventfullymanaged.communication.actions.creating", "Creating...") : h("eventfullymanaged.communication.actions.createAnnouncement", "Create Announcement")]
|
|
52
|
+
})]
|
|
53
|
+
})
|
|
54
|
+
] }),
|
|
57
55
|
/* @__PURE__ */ o(r, {
|
|
58
|
-
heading:
|
|
59
|
-
emptyLabel:
|
|
60
|
-
rows:
|
|
56
|
+
heading: g.loading ? h("eventfullymanaged.communication.announcements.loading", "Loading announcements...") : `${h("eventfullymanaged.communication.announcements.heading", "Announcements")} (${S.length})`,
|
|
57
|
+
emptyLabel: h("eventfullymanaged.communication.announcements.empty", "No announcements published yet."),
|
|
58
|
+
rows: S.map((e) => ({
|
|
61
59
|
id: e.id,
|
|
62
|
-
title: e.title ?? e.name ?? `${
|
|
60
|
+
title: e.title ?? e.name ?? `${h("eventfullymanaged.communication.announcements.itemPrefix", "Announcement")} ${e.id}`,
|
|
63
61
|
status: e.status ?? void 0
|
|
64
62
|
}))
|
|
65
63
|
}),
|
|
66
64
|
/* @__PURE__ */ o(r, {
|
|
67
|
-
heading:
|
|
68
|
-
emptyLabel:
|
|
69
|
-
rows:
|
|
65
|
+
heading: _.loading ? h("eventfullymanaged.communication.campaigns.loading", "Loading campaigns...") : `${h("eventfullymanaged.communication.campaigns.heading", "Campaigns")} (${C.length})`,
|
|
66
|
+
emptyLabel: h("eventfullymanaged.communication.campaigns.empty", "No communication campaigns created yet."),
|
|
67
|
+
rows: C.map((e) => ({
|
|
70
68
|
id: e.id,
|
|
71
|
-
title: e.title ?? e.name ?? `${
|
|
69
|
+
title: e.title ?? e.name ?? `${h("eventfullymanaged.communication.campaigns.itemPrefix", "Campaign")} ${e.id}`,
|
|
72
70
|
status: e.status ?? void 0
|
|
73
71
|
}))
|
|
74
72
|
})
|
|
@@ -76,6 +74,6 @@ function u() {
|
|
|
76
74
|
});
|
|
77
75
|
}
|
|
78
76
|
//#endregion
|
|
79
|
-
export {
|
|
77
|
+
export { m as default };
|
|
80
78
|
|
|
81
79
|
//# sourceMappingURL=CommunicationPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommunicationPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/CommunicationPage.tsx"],"sourcesContent":["import { Megaphone } from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useMemo, useState } from 'react';\n\nimport {\n useAnnouncementsQuery,\n useCommunicationCampaignsQuery,\n useUpsertAnnouncementMutation,\n} 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 CommunicationPage() {\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 announcementsQuery = useAnnouncementsQuery({ limit: 100, offset: 0 });\n const campaignsQuery = useCommunicationCampaignsQuery({ limit: 100, offset: 0 });\n const [createAnnouncement, { loading: creating }] = useUpsertAnnouncementMutation();\n const [announcementTitle, setAnnouncementTitle] = useState('');\n\n const announcements = useMemo(\n () => (announcementsQuery.data?.announcements.items ?? []) as SimpleRow[],\n [announcementsQuery.data]\n );\n const campaigns = useMemo(\n () => (campaignsQuery.data?.communicationCampaigns.items ?? []) as SimpleRow[],\n [campaignsQuery.data]\n );\n\n const onCreate = async () => {\n if (!announcementTitle.trim()) return;\n await createAnnouncement({\n variables: {\n input: {\n title: announcementTitle,\n name: announcementTitle,\n status: 'draft',\n metadata: {},\n },\n },\n });\n setAnnouncementTitle('');\n };\n\n return (\n <div className=\"space-y-6 p-6\">\n <
|
|
1
|
+
{"version":3,"file":"CommunicationPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/CommunicationPage.tsx"],"sourcesContent":["import { Megaphone } from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Button, EmphasisPanel, GradientText, Input } from '@burdenoff/fe-libs/ui';\nimport { useMemo, useState } from 'react';\n\nimport {\n useAnnouncementsQuery,\n useCommunicationCampaignsQuery,\n useUpsertAnnouncementMutation,\n} 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 CommunicationPage() {\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 announcementsQuery = useAnnouncementsQuery({ limit: 100, offset: 0 });\n const campaignsQuery = useCommunicationCampaignsQuery({ limit: 100, offset: 0 });\n const [createAnnouncement, { loading: creating }] = useUpsertAnnouncementMutation();\n const [announcementTitle, setAnnouncementTitle] = useState('');\n\n const announcements = useMemo(\n () => (announcementsQuery.data?.announcements.items ?? []) as SimpleRow[],\n [announcementsQuery.data]\n );\n const campaigns = useMemo(\n () => (campaignsQuery.data?.communicationCampaigns.items ?? []) as SimpleRow[],\n [campaignsQuery.data]\n );\n\n const onCreate = async () => {\n if (!announcementTitle.trim()) return;\n await createAnnouncement({\n variables: {\n input: {\n title: announcementTitle,\n name: announcementTitle,\n status: 'draft',\n metadata: {},\n },\n },\n });\n setAnnouncementTitle('');\n };\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>{t('eventfullymanaged.communication.title', 'Communication')}</GradientText>\n </h1>\n <p className=\"mt-1 text-sm text-text-secondary\">\n {t('eventfullymanaged.communication.description', 'Announcements and campaigns managed via workspace APIs.')}\n </p>\n <div className=\"mt-4 flex flex-col gap-3 sm:flex-row\">\n <Input\n value={announcementTitle}\n onChange={(e) => setAnnouncementTitle(e.target.value)}\n placeholder={t('eventfullymanaged.communication.inputPlaceholder', 'Emergency schedule update')}\n aria-label={t('eventfullymanaged.communication.inputPlaceholder', 'Emergency schedule update')}\n className=\"flex-1\"\n />\n <Button type=\"button\" disabled={creating} onClick={onCreate}>\n <Megaphone className=\"h-4 w-4\" />\n {creating\n ? t('eventfullymanaged.communication.actions.creating', 'Creating...')\n : t('eventfullymanaged.communication.actions.createAnnouncement', 'Create Announcement')}\n </Button>\n </div>\n </EmphasisPanel>\n\n <EntityListSection\n heading={\n announcementsQuery.loading\n ? t('eventfullymanaged.communication.announcements.loading', 'Loading announcements...')\n : `${t('eventfullymanaged.communication.announcements.heading', 'Announcements')} (${announcements.length})`\n }\n emptyLabel={t('eventfullymanaged.communication.announcements.empty', 'No announcements published yet.')}\n rows={announcements.map((row) => ({\n id: row.id,\n title:\n row.title ??\n row.name ??\n `${t('eventfullymanaged.communication.announcements.itemPrefix', 'Announcement')} ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n\n <EntityListSection\n heading={\n campaignsQuery.loading\n ? t('eventfullymanaged.communication.campaigns.loading', 'Loading campaigns...')\n : `${t('eventfullymanaged.communication.campaigns.heading', 'Campaigns')} (${campaigns.length})`\n }\n emptyLabel={t('eventfullymanaged.communication.campaigns.empty', 'No communication campaigns created yet.')}\n rows={campaigns.map((row) => ({\n id: row.id,\n title:\n row.title ??\n row.name ??\n `${t('eventfullymanaged.communication.campaigns.itemPrefix', 'Campaign')} ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAmBA,SAAwB,IAAoB;CAC1C,IAAM,EAAE,GAAG,MAAc,GAAS,EAC5B,KAAK,GAAa,MAAqB;EAC3C,IAAM,IAAQ,EAAU,EAAI;AAC5B,SAAO,MAAU,IAAM,IAAW;IAE9B,IAAqB,EAAsB;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EACrE,IAAiB,EAA+B;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EAC1E,CAAC,GAAoB,EAAE,SAAS,OAAc,GAA+B,EAC7E,CAAC,GAAmB,KAAwB,EAAS,GAAG,EAExD,IAAgB,QACb,EAAmB,MAAM,cAAc,SAAS,EAAE,EACzD,CAAC,EAAmB,KAAK,CAC1B,EACK,IAAY,QACT,EAAe,MAAM,uBAAuB,SAAS,EAAE,EAC9D,CAAC,EAAe,KAAK,CACtB;AAiBD,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAe,EAAE,yCAAyC,gBAAgB,EAAgB,CAAA;KACvF,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eACV,EAAE,+CAA+C,0DAA0D;KAC1G,CAAA;IACJ,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MACE,OAAO;MACP,WAAW,MAAM,EAAqB,EAAE,OAAO,MAAM;MACrD,aAAa,EAAE,oDAAoD,4BAA4B;MAC/F,cAAY,EAAE,oDAAoD,4BAA4B;MAC9F,WAAU;MACV,CAAA,EACF,kBAAC,GAAD;MAAQ,MAAK;MAAS,UAAU;MAAU,SAhCjC,YAAY;AACtB,SAAkB,MAAM,KAC7B,MAAM,EAAmB,EACvB,WAAW,EACT,OAAO;QACL,OAAO;QACP,MAAM;QACN,QAAQ;QACR,UAAU,EAAE;QACb,EACF,EACF,CAAC,EACF,EAAqB,GAAG;;gBAoBlB,CACE,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA,EAChC,IACG,EAAE,oDAAoD,cAAc,GACpE,EAAE,8DAA8D,sBAAsB,CACnF;QACL;;IACQ,EAAA,CAAA;GAEhB,kBAAC,GAAD;IACE,SACE,EAAmB,UACf,EAAE,yDAAyD,2BAA2B,GACtF,GAAG,EAAE,yDAAyD,gBAAgB,CAAC,IAAI,EAAc,OAAO;IAE9G,YAAY,EAAE,uDAAuD,kCAAkC;IACvG,MAAM,EAAc,KAAK,OAAS;KAChC,IAAI,EAAI;KACR,OACE,EAAI,SACJ,EAAI,QACJ,GAAG,EAAE,4DAA4D,eAAe,CAAC,GAAG,EAAI;KAC1F,QAAQ,EAAI,UAAU,KAAA;KACvB,EAAE;IACH,CAAA;GAEF,kBAAC,GAAD;IACE,SACE,EAAe,UACX,EAAE,qDAAqD,uBAAuB,GAC9E,GAAG,EAAE,qDAAqD,YAAY,CAAC,IAAI,EAAU,OAAO;IAElG,YAAY,EAAE,mDAAmD,0CAA0C;IAC3G,MAAM,EAAU,KAAK,OAAS;KAC5B,IAAI,EAAI;KACR,OACE,EAAI,SACJ,EAAI,QACJ,GAAG,EAAE,wDAAwD,WAAW,CAAC,GAAG,EAAI;KAClF,QAAQ,EAAI,UAAU,KAAA;KACvB,EAAE;IACH,CAAA;GACE"}
|
|
@@ -1,36 +1,68 @@
|
|
|
1
1
|
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
2
|
+
import { Badge as n, GlassCard as r, IllustratedEmptyState as i } from "@burdenoff/fe-libs/ui";
|
|
2
3
|
//#region src/eventfullymanaged/pages/modules/EntityListSection.tsx
|
|
3
|
-
function
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
function a(e) {
|
|
5
|
+
let t = e.toLowerCase();
|
|
6
|
+
return [
|
|
7
|
+
"active",
|
|
8
|
+
"published",
|
|
9
|
+
"live",
|
|
10
|
+
"confirmed",
|
|
11
|
+
"completed",
|
|
12
|
+
"approved"
|
|
13
|
+
].includes(t) ? "success" : [
|
|
14
|
+
"inactive",
|
|
15
|
+
"cancelled",
|
|
16
|
+
"archived",
|
|
17
|
+
"closed",
|
|
18
|
+
"expired"
|
|
19
|
+
].includes(t) ? "warning" : [
|
|
20
|
+
"draft",
|
|
21
|
+
"created",
|
|
22
|
+
"pending",
|
|
23
|
+
"scheduled"
|
|
24
|
+
].includes(t) ? "info" : "secondary";
|
|
25
|
+
}
|
|
26
|
+
function o({ heading: o, rows: s, emptyLabel: c, emptyIllustration: l = "empty-data" }) {
|
|
27
|
+
return /* @__PURE__ */ t(r, {
|
|
28
|
+
treatment: "plain",
|
|
29
|
+
className: "border-border-seam p-5",
|
|
6
30
|
children: [/* @__PURE__ */ e("h2", {
|
|
7
31
|
className: "text-lg font-semibold text-text-primary",
|
|
8
|
-
children:
|
|
32
|
+
children: o
|
|
9
33
|
}), /* @__PURE__ */ e("div", {
|
|
10
|
-
className: "mt-4
|
|
11
|
-
children:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
34
|
+
className: "mt-4",
|
|
35
|
+
children: s.length === 0 ? /* @__PURE__ */ e(i, {
|
|
36
|
+
illustration: l,
|
|
37
|
+
title: c,
|
|
38
|
+
className: "py-8"
|
|
39
|
+
}) : /* @__PURE__ */ e("ul", {
|
|
40
|
+
className: "space-y-2.5",
|
|
41
|
+
children: s.map((r) => /* @__PURE__ */ e("li", {
|
|
42
|
+
className: "rounded-card border border-border-seam bg-bg-surface p-3 transition-[box-shadow,border-color] duration-200 hover:border-border-strong hover:shadow-elevation-1",
|
|
43
|
+
children: /* @__PURE__ */ t("div", {
|
|
44
|
+
className: "flex items-center justify-between gap-3",
|
|
45
|
+
children: [/* @__PURE__ */ t("div", {
|
|
46
|
+
className: "min-w-0",
|
|
47
|
+
children: [/* @__PURE__ */ e("p", {
|
|
48
|
+
className: "truncate font-medium text-text-primary",
|
|
49
|
+
children: r.title
|
|
50
|
+
}), r.subtitle ? /* @__PURE__ */ e("p", {
|
|
51
|
+
className: "mt-0.5 truncate text-sm text-text-secondary",
|
|
52
|
+
children: r.subtitle
|
|
53
|
+
}) : null]
|
|
54
|
+
}), r.status ? /* @__PURE__ */ e(n, {
|
|
55
|
+
variant: a(r.status),
|
|
56
|
+
className: "shrink-0 uppercase",
|
|
57
|
+
children: r.status
|
|
58
|
+
}) : null]
|
|
59
|
+
})
|
|
60
|
+
}, r.id))
|
|
61
|
+
})
|
|
30
62
|
})]
|
|
31
63
|
});
|
|
32
64
|
}
|
|
33
65
|
//#endregion
|
|
34
|
-
export {
|
|
66
|
+
export { o as EntityListSection };
|
|
35
67
|
|
|
36
68
|
//# sourceMappingURL=EntityListSection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityListSection.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/EntityListSection.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"EntityListSection.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/EntityListSection.tsx"],"sourcesContent":["import { Badge, GlassCard, IllustratedEmptyState } from '@burdenoff/fe-libs/ui';\n\ntype EntityRow = {\n id: string;\n title: string;\n subtitle?: string;\n status?: string;\n};\n\ninterface EntityListSectionProps {\n heading: string;\n rows: EntityRow[];\n emptyLabel: string;\n /** Illustration used for the zero-state. Defaults to a generic data illustration. */\n emptyIllustration?: string;\n}\n\nfunction statusVariant(status: string): 'success' | 'warning' | 'secondary' | 'info' {\n const value = status.toLowerCase();\n if (['active', 'published', 'live', 'confirmed', 'completed', 'approved'].includes(value)) {\n return 'success';\n }\n if (['inactive', 'cancelled', 'archived', 'closed', 'expired'].includes(value)) {\n return 'warning';\n }\n if (['draft', 'created', 'pending', 'scheduled'].includes(value)) {\n return 'info';\n }\n return 'secondary';\n}\n\nexport function EntityListSection({\n heading,\n rows,\n emptyLabel,\n emptyIllustration = 'empty-data',\n}: EntityListSectionProps) {\n return (\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-5\">\n <h2 className=\"text-lg font-semibold text-text-primary\">{heading}</h2>\n <div className=\"mt-4\">\n {rows.length === 0 ? (\n <IllustratedEmptyState illustration={emptyIllustration} title={emptyLabel} className=\"py-8\" />\n ) : (\n <ul className=\"space-y-2.5\">\n {rows.map((row) => (\n <li\n key={row.id}\n className=\"rounded-card border border-border-seam bg-bg-surface p-3 transition-[box-shadow,border-color] duration-200 hover:border-border-strong hover:shadow-elevation-1\"\n >\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"min-w-0\">\n <p className=\"truncate font-medium text-text-primary\">{row.title}</p>\n {row.subtitle ? (\n <p className=\"mt-0.5 truncate text-sm text-text-secondary\">{row.subtitle}</p>\n ) : null}\n </div>\n {row.status ? (\n <Badge variant={statusVariant(row.status)} className=\"shrink-0 uppercase\">\n {row.status}\n </Badge>\n ) : null}\n </div>\n </li>\n ))}\n </ul>\n )}\n </div>\n </GlassCard>\n );\n}\n"],"mappings":";;;AAiBA,SAAS,EAAc,GAA8D;CACnF,IAAM,IAAQ,EAAO,aAAa;AAUlC,QATI;EAAC;EAAU;EAAa;EAAQ;EAAa;EAAa;EAAW,CAAC,SAAS,EAAM,GAChF,YAEL;EAAC;EAAY;EAAa;EAAY;EAAU;EAAU,CAAC,SAAS,EAAM,GACrE,YAEL;EAAC;EAAS;EAAW;EAAW;EAAY,CAAC,SAAS,EAAM,GACvD,SAEF;;AAGT,SAAgB,EAAkB,EAChC,YACA,SACA,eACA,uBAAoB,gBACK;AACzB,QACE,kBAAC,GAAD;EAAW,WAAU;EAAQ,WAAU;YAAvC,CACE,kBAAC,MAAD;GAAI,WAAU;aAA2C;GAAa,CAAA,EACtE,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAK,WAAW,IACf,kBAAC,GAAD;IAAuB,cAAc;IAAmB,OAAO;IAAY,WAAU;IAAS,CAAA,GAE9F,kBAAC,MAAD;IAAI,WAAU;cACX,EAAK,KAAK,MACT,kBAAC,MAAD;KAEE,WAAU;eAEV,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QAAG,WAAU;kBAA0C,EAAI;QAAU,CAAA,EACpE,EAAI,WACH,kBAAC,KAAD;QAAG,WAAU;kBAA+C,EAAI;QAAa,CAAA,GAC3E,KACA;UACL,EAAI,SACH,kBAAC,GAAD;OAAO,SAAS,EAAc,EAAI,OAAO;OAAE,WAAU;iBAClD,EAAI;OACC,CAAA,GACN,KACA;;KACH,EAhBE,EAAI,GAgBN,CACL;IACC,CAAA;GAEH,CAAA,CACI"}
|
|
@@ -4,68 +4,66 @@ import { useMemo as i, useState as a } from "react";
|
|
|
4
4
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
5
5
|
import { CalendarPlus as c } from "lucide-react";
|
|
6
6
|
import { useI18n as l } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
7
|
+
import { Button as u, EmphasisPanel as d, GradientText as f, Input as p } from "@burdenoff/fe-libs/ui";
|
|
7
8
|
//#region src/eventfullymanaged/pages/modules/EventsPage.tsx
|
|
8
|
-
function
|
|
9
|
-
let { t:
|
|
10
|
-
let n =
|
|
9
|
+
function m() {
|
|
10
|
+
let { t: m } = l(), h = (e, t) => {
|
|
11
|
+
let n = m(e);
|
|
11
12
|
return n === e ? t : n;
|
|
12
|
-
}, { data:
|
|
13
|
+
}, { data: g, loading: _ } = t({
|
|
13
14
|
limit: 100,
|
|
14
15
|
offset: 0
|
|
15
|
-
}),
|
|
16
|
+
}), v = n({
|
|
16
17
|
limit: 100,
|
|
17
18
|
offset: 0
|
|
18
|
-
}), [
|
|
19
|
+
}), [y, { loading: b }] = e(), [x, S] = a(""), C = i(() => g?.events.items ?? [], [g]), w = i(() => v.data?.ticketTypes.items ?? [], [v.data]);
|
|
19
20
|
return /* @__PURE__ */ s("div", {
|
|
20
21
|
className: "space-y-6 p-6",
|
|
21
22
|
children: [
|
|
22
|
-
/* @__PURE__ */ s(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
/* @__PURE__ */ o("
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
/* @__PURE__ */
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
})
|
|
63
|
-
]
|
|
64
|
-
}),
|
|
23
|
+
/* @__PURE__ */ s(d, { children: [
|
|
24
|
+
/* @__PURE__ */ o("h1", {
|
|
25
|
+
className: "text-2xl font-bold text-text-primary",
|
|
26
|
+
children: /* @__PURE__ */ o(f, { children: h("eventfullymanaged.events.title", "Events") })
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ o("p", {
|
|
29
|
+
className: "mt-1 text-sm text-text-secondary",
|
|
30
|
+
children: h("eventfullymanaged.events.description", "Create and manage live events from the workspace graph.")
|
|
31
|
+
}),
|
|
32
|
+
/* @__PURE__ */ s("div", {
|
|
33
|
+
className: "mt-4 flex flex-col gap-3 sm:flex-row",
|
|
34
|
+
children: [/* @__PURE__ */ o(p, {
|
|
35
|
+
value: x,
|
|
36
|
+
onChange: (e) => S(e.target.value),
|
|
37
|
+
placeholder: h("eventfullymanaged.events.namePlaceholder", "Annual Innovation Summit"),
|
|
38
|
+
"aria-label": h("eventfullymanaged.events.namePlaceholder", "Annual Innovation Summit"),
|
|
39
|
+
className: "flex-1"
|
|
40
|
+
}), /* @__PURE__ */ s(u, {
|
|
41
|
+
type: "button",
|
|
42
|
+
disabled: b,
|
|
43
|
+
onClick: async () => {
|
|
44
|
+
if (!x.trim()) return;
|
|
45
|
+
let e = /* @__PURE__ */ new Date(), t = new Date(e.getTime() + 3600 * 1e3);
|
|
46
|
+
await y({ variables: { input: {
|
|
47
|
+
name: x.trim(),
|
|
48
|
+
description: "",
|
|
49
|
+
type: "IN_PERSON",
|
|
50
|
+
status: "DRAFT",
|
|
51
|
+
timezone: "Asia/Kolkata",
|
|
52
|
+
startAt: e.toISOString(),
|
|
53
|
+
endAt: t.toISOString(),
|
|
54
|
+
visibility: "private",
|
|
55
|
+
capacity: 100,
|
|
56
|
+
metadata: {}
|
|
57
|
+
} } }), S("");
|
|
58
|
+
},
|
|
59
|
+
children: [/* @__PURE__ */ o(c, { className: "h-4 w-4" }), b ? h("eventfullymanaged.events.actions.creating", "Creating...") : h("eventfullymanaged.events.actions.create", "Create Event")]
|
|
60
|
+
})]
|
|
61
|
+
})
|
|
62
|
+
] }),
|
|
65
63
|
/* @__PURE__ */ o(r, {
|
|
66
|
-
heading:
|
|
67
|
-
emptyLabel:
|
|
68
|
-
rows:
|
|
64
|
+
heading: _ ? h("eventfullymanaged.events.list.loading", "Loading events...") : `${h("eventfullymanaged.events.list.heading", "Events")} (${C.length})`,
|
|
65
|
+
emptyLabel: h("eventfullymanaged.events.list.empty", "No events found."),
|
|
66
|
+
rows: C.map((e) => ({
|
|
69
67
|
id: e.id,
|
|
70
68
|
title: e.name,
|
|
71
69
|
subtitle: [e.type, e.startAt ? new Date(e.startAt).toLocaleString() : void 0].filter(Boolean).join(" • "),
|
|
@@ -73,12 +71,12 @@ function u() {
|
|
|
73
71
|
}))
|
|
74
72
|
}),
|
|
75
73
|
/* @__PURE__ */ o(r, {
|
|
76
|
-
heading:
|
|
77
|
-
emptyLabel:
|
|
78
|
-
rows:
|
|
74
|
+
heading: v.loading ? h("eventfullymanaged.events.ticketTypes.loading", "Loading ticket types...") : `${h("eventfullymanaged.events.ticketTypes.heading", "Ticket Types")} (${w.length})`,
|
|
75
|
+
emptyLabel: h("eventfullymanaged.events.ticketTypes.empty", "No ticket types configured."),
|
|
76
|
+
rows: w.map((e) => ({
|
|
79
77
|
id: e.id,
|
|
80
78
|
title: e.name,
|
|
81
|
-
subtitle: `${e.price} ${e.currency} • ${
|
|
79
|
+
subtitle: `${e.price} ${e.currency} • ${h("eventfullymanaged.events.ticketTypes.soldPrefix", "Sold")} ${e.soldCount}`,
|
|
82
80
|
status: e.isActive ? "active" : "inactive"
|
|
83
81
|
}))
|
|
84
82
|
})
|
|
@@ -86,6 +84,6 @@ function u() {
|
|
|
86
84
|
});
|
|
87
85
|
}
|
|
88
86
|
//#endregion
|
|
89
|
-
export {
|
|
87
|
+
export { m as default };
|
|
90
88
|
|
|
91
89
|
//# sourceMappingURL=EventsPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventsPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/EventsPage.tsx"],"sourcesContent":["import { CalendarPlus } from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useMemo, useState } from 'react';\n\nimport { useCreateEventMutation, useEventsQuery, useTicketTypesQuery } from '../../api/eventApi';\nimport { EntityListSection } from './EntityListSection';\n\ntype EventRow = {\n id: string;\n name: string;\n type?: string;\n status?: string;\n startAt?: string;\n endAt?: string;\n};\n\nexport default function EventsPage() {\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 { data, loading } = useEventsQuery({ limit: 100, offset: 0 });\n const ticketTypesQuery = useTicketTypesQuery({ limit: 100, offset: 0 });\n const [createEvent, { loading: creating }] = useCreateEventMutation();\n const [name, setName] = useState('');\n\n const rows = useMemo(() => (data?.events.items ?? []) as EventRow[], [data]);\n const ticketTypes = useMemo(() => ticketTypesQuery.data?.ticketTypes.items ?? [], [ticketTypesQuery.data]);\n\n const onCreate = async () => {\n if (!name.trim()) return;\n const now = new Date();\n const nextHour = new Date(now.getTime() + 60 * 60 * 1000);\n await createEvent({\n variables: {\n input: {\n name: name.trim(),\n description: '',\n type: 'IN_PERSON',\n status: 'DRAFT',\n timezone: 'Asia/Kolkata',\n startAt: now.toISOString(),\n endAt: nextHour.toISOString(),\n visibility: 'private',\n capacity: 100,\n metadata: {},\n },\n },\n });\n setName('');\n };\n\n return (\n <div className=\"space-y-6 p-6\">\n <
|
|
1
|
+
{"version":3,"file":"EventsPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/EventsPage.tsx"],"sourcesContent":["import { CalendarPlus } from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Button, EmphasisPanel, GradientText, Input } from '@burdenoff/fe-libs/ui';\nimport { useMemo, useState } from 'react';\n\nimport { useCreateEventMutation, useEventsQuery, useTicketTypesQuery } from '../../api/eventApi';\nimport { EntityListSection } from './EntityListSection';\n\ntype EventRow = {\n id: string;\n name: string;\n type?: string;\n status?: string;\n startAt?: string;\n endAt?: string;\n};\n\nexport default function EventsPage() {\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 { data, loading } = useEventsQuery({ limit: 100, offset: 0 });\n const ticketTypesQuery = useTicketTypesQuery({ limit: 100, offset: 0 });\n const [createEvent, { loading: creating }] = useCreateEventMutation();\n const [name, setName] = useState('');\n\n const rows = useMemo(() => (data?.events.items ?? []) as EventRow[], [data]);\n const ticketTypes = useMemo(() => ticketTypesQuery.data?.ticketTypes.items ?? [], [ticketTypesQuery.data]);\n\n const onCreate = async () => {\n if (!name.trim()) return;\n const now = new Date();\n const nextHour = new Date(now.getTime() + 60 * 60 * 1000);\n await createEvent({\n variables: {\n input: {\n name: name.trim(),\n description: '',\n type: 'IN_PERSON',\n status: 'DRAFT',\n timezone: 'Asia/Kolkata',\n startAt: now.toISOString(),\n endAt: nextHour.toISOString(),\n visibility: 'private',\n capacity: 100,\n metadata: {},\n },\n },\n });\n setName('');\n };\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>{t('eventfullymanaged.events.title', 'Events')}</GradientText>\n </h1>\n <p className=\"mt-1 text-sm text-text-secondary\">\n {t('eventfullymanaged.events.description', 'Create and manage live events from the workspace graph.')}\n </p>\n <div className=\"mt-4 flex flex-col gap-3 sm:flex-row\">\n <Input\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder={t('eventfullymanaged.events.namePlaceholder', 'Annual Innovation Summit')}\n aria-label={t('eventfullymanaged.events.namePlaceholder', 'Annual Innovation Summit')}\n className=\"flex-1\"\n />\n <Button type=\"button\" disabled={creating} onClick={onCreate}>\n <CalendarPlus className=\"h-4 w-4\" />\n {creating\n ? t('eventfullymanaged.events.actions.creating', 'Creating...')\n : t('eventfullymanaged.events.actions.create', 'Create Event')}\n </Button>\n </div>\n </EmphasisPanel>\n\n <EntityListSection\n heading={\n loading\n ? t('eventfullymanaged.events.list.loading', 'Loading events...')\n : `${t('eventfullymanaged.events.list.heading', 'Events')} (${rows.length})`\n }\n emptyLabel={t('eventfullymanaged.events.list.empty', 'No events found.')}\n rows={rows.map((row) => ({\n id: row.id,\n title: row.name,\n subtitle: [row.type, row.startAt ? new Date(row.startAt).toLocaleString() : undefined]\n .filter(Boolean)\n .join(' • '),\n status: row.status,\n }))}\n />\n\n <EntityListSection\n heading={\n ticketTypesQuery.loading\n ? t('eventfullymanaged.events.ticketTypes.loading', 'Loading ticket types...')\n : `${t('eventfullymanaged.events.ticketTypes.heading', 'Ticket Types')} (${ticketTypes.length})`\n }\n emptyLabel={t('eventfullymanaged.events.ticketTypes.empty', 'No ticket types configured.')}\n rows={ticketTypes.map((row) => ({\n id: row.id,\n title: row.name,\n subtitle: `${row.price} ${row.currency} • ${t('eventfullymanaged.events.ticketTypes.soldPrefix', 'Sold')} ${row.soldCount}`,\n status: row.isActive ? 'active' : 'inactive',\n }))}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAiBA,SAAwB,IAAa;CACnC,IAAM,EAAE,GAAG,MAAc,GAAS,EAC5B,KAAK,GAAa,MAAqB;EAC3C,IAAM,IAAQ,EAAU,EAAI;AAC5B,SAAO,MAAU,IAAM,IAAW;IAE9B,EAAE,SAAM,eAAY,EAAe;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EAC7D,IAAmB,EAAoB;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EACjE,CAAC,GAAa,EAAE,SAAS,OAAc,GAAwB,EAC/D,CAAC,GAAM,KAAW,EAAS,GAAG,EAE9B,IAAO,QAAe,GAAM,OAAO,SAAS,EAAE,EAAiB,CAAC,EAAK,CAAC,EACtE,IAAc,QAAc,EAAiB,MAAM,YAAY,SAAS,EAAE,EAAE,CAAC,EAAiB,KAAK,CAAC;AAyB1G,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAe,EAAE,kCAAkC,SAAS,EAAgB,CAAA;KACzE,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eACV,EAAE,wCAAwC,0DAA0D;KACnG,CAAA;IACJ,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MACE,OAAO;MACP,WAAW,MAAM,EAAQ,EAAE,OAAO,MAAM;MACxC,aAAa,EAAE,4CAA4C,2BAA2B;MACtF,cAAY,EAAE,4CAA4C,2BAA2B;MACrF,WAAU;MACV,CAAA,EACF,kBAAC,GAAD;MAAQ,MAAK;MAAS,UAAU;MAAU,SAxCjC,YAAY;AAC3B,WAAI,CAAC,EAAK,MAAM,CAAE;OAClB,IAAM,oBAAM,IAAI,MAAM,EAChB,IAAW,IAAI,KAAK,EAAI,SAAS,GAAG,OAAU,IAAK;AAiBzD,OAhBA,MAAM,EAAY,EAChB,WAAW,EACT,OAAO;QACL,MAAM,EAAK,MAAM;QACjB,aAAa;QACb,MAAM;QACN,QAAQ;QACR,UAAU;QACV,SAAS,EAAI,aAAa;QAC1B,OAAO,EAAS,aAAa;QAC7B,YAAY;QACZ,UAAU;QACV,UAAU,EAAE;QACb,EACF,EACF,CAAC,EACF,EAAQ,GAAG;;gBAoBL,CACE,kBAAC,GAAD,EAAc,WAAU,WAAY,CAAA,EACnC,IACG,EAAE,6CAA6C,cAAc,GAC7D,EAAE,2CAA2C,eAAe,CACzD;QACL;;IACQ,EAAA,CAAA;GAEhB,kBAAC,GAAD;IACE,SACE,IACI,EAAE,yCAAyC,oBAAoB,GAC/D,GAAG,EAAE,yCAAyC,SAAS,CAAC,IAAI,EAAK,OAAO;IAE9E,YAAY,EAAE,uCAAuC,mBAAmB;IACxE,MAAM,EAAK,KAAK,OAAS;KACvB,IAAI,EAAI;KACR,OAAO,EAAI;KACX,UAAU,CAAC,EAAI,MAAM,EAAI,UAAU,IAAI,KAAK,EAAI,QAAQ,CAAC,gBAAgB,GAAG,KAAA,EAAU,CACnF,OAAO,QAAQ,CACf,KAAK,MAAM;KACd,QAAQ,EAAI;KACb,EAAE;IACH,CAAA;GAEF,kBAAC,GAAD;IACE,SACE,EAAiB,UACb,EAAE,gDAAgD,0BAA0B,GAC5E,GAAG,EAAE,gDAAgD,eAAe,CAAC,IAAI,EAAY,OAAO;IAElG,YAAY,EAAE,8CAA8C,8BAA8B;IAC1F,MAAM,EAAY,KAAK,OAAS;KAC9B,IAAI,EAAI;KACR,OAAO,EAAI;KACX,UAAU,GAAG,EAAI,MAAM,GAAG,EAAI,SAAS,KAAK,EAAE,mDAAmD,OAAO,CAAC,GAAG,EAAI;KAChH,QAAQ,EAAI,WAAW,WAAW;KACnC,EAAE;IACH,CAAA;GACE"}
|
|
@@ -2,41 +2,39 @@ import { useCheckInRecordsQuery as e, useCheckInStationsQuery as t } from "../..
|
|
|
2
2
|
import { EntityListSection as n } from "./EntityListSection.js";
|
|
3
3
|
import { useMemo as r } from "react";
|
|
4
4
|
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
|
+
import { EmphasisPanel as o, GradientText as s } from "@burdenoff/fe-libs/ui";
|
|
5
6
|
//#region src/eventfullymanaged/pages/modules/KioskPage.tsx
|
|
6
|
-
function
|
|
7
|
-
let
|
|
7
|
+
function c() {
|
|
8
|
+
let c = t({
|
|
8
9
|
limit: 100,
|
|
9
10
|
offset: 0
|
|
10
|
-
}),
|
|
11
|
+
}), l = e({
|
|
11
12
|
limit: 100,
|
|
12
13
|
offset: 0
|
|
13
|
-
}),
|
|
14
|
+
}), u = r(() => c.data?.checkInStations.items ?? [], [c.data]), d = r(() => l.data?.checkInRecords.items ?? [], [l.data]);
|
|
14
15
|
return /* @__PURE__ */ a("div", {
|
|
15
16
|
className: "space-y-6 p-6",
|
|
16
17
|
children: [
|
|
17
|
-
/* @__PURE__ */ a("
|
|
18
|
-
className: "
|
|
19
|
-
children: [/* @__PURE__ */ i("
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
children: "View configured check-in stations and station status."
|
|
25
|
-
})]
|
|
26
|
-
}),
|
|
18
|
+
/* @__PURE__ */ a(o, { children: [/* @__PURE__ */ a("h1", {
|
|
19
|
+
className: "text-2xl font-bold text-text-primary",
|
|
20
|
+
children: [/* @__PURE__ */ i(s, { children: "Kiosk" }), " & Check-In"]
|
|
21
|
+
}), /* @__PURE__ */ i("p", {
|
|
22
|
+
className: "mt-1 text-sm text-text-secondary",
|
|
23
|
+
children: "View configured check-in stations and station status."
|
|
24
|
+
})] }),
|
|
27
25
|
/* @__PURE__ */ i(n, {
|
|
28
|
-
heading:
|
|
26
|
+
heading: c.loading ? "Loading check-in stations..." : `Stations (${u.length})`,
|
|
29
27
|
emptyLabel: "No check-in stations configured yet.",
|
|
30
|
-
rows:
|
|
28
|
+
rows: u.map((e) => ({
|
|
31
29
|
id: e.id,
|
|
32
30
|
title: e.name ?? e.title ?? `Station ${e.id}`,
|
|
33
31
|
status: e.status ?? void 0
|
|
34
32
|
}))
|
|
35
33
|
}),
|
|
36
34
|
/* @__PURE__ */ i(n, {
|
|
37
|
-
heading:
|
|
35
|
+
heading: l.loading ? "Loading check-in records..." : `Check-In Records (${d.length})`,
|
|
38
36
|
emptyLabel: "No check-in records found.",
|
|
39
|
-
rows:
|
|
37
|
+
rows: d.map((e) => ({
|
|
40
38
|
id: e.id,
|
|
41
39
|
title: e.attendeeId ? `Attendee ${e.attendeeId}` : `Record ${e.id}`,
|
|
42
40
|
subtitle: `${e.method} • ${e.direction}`,
|
|
@@ -47,6 +45,6 @@ function o() {
|
|
|
47
45
|
});
|
|
48
46
|
}
|
|
49
47
|
//#endregion
|
|
50
|
-
export {
|
|
48
|
+
export { c as default };
|
|
51
49
|
|
|
52
50
|
//# sourceMappingURL=KioskPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KioskPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/KioskPage.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useCheckInRecordsQuery, useCheckInStationsQuery } from '../../api/eventApi';\nimport { EntityListSection } from './EntityListSection';\n\ntype StationRow = {\n id: string;\n name?: string;\n title?: string;\n status?: string;\n};\n\nexport default function KioskPage() {\n const stationsQuery = useCheckInStationsQuery({ limit: 100, offset: 0 });\n const recordsQuery = useCheckInRecordsQuery({ limit: 100, offset: 0 });\n const stations = useMemo(\n () => (stationsQuery.data?.checkInStations.items ?? []) as StationRow[],\n [stationsQuery.data]\n );\n const records = useMemo(() => recordsQuery.data?.checkInRecords.items ?? [], [recordsQuery.data]);\n\n return (\n <div className=\"space-y-6 p-6\">\n <
|
|
1
|
+
{"version":3,"file":"KioskPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/KioskPage.tsx"],"sourcesContent":["import { EmphasisPanel, GradientText } from '@burdenoff/fe-libs/ui';\nimport { useMemo } from 'react';\n\nimport { useCheckInRecordsQuery, useCheckInStationsQuery } from '../../api/eventApi';\nimport { EntityListSection } from './EntityListSection';\n\ntype StationRow = {\n id: string;\n name?: string;\n title?: string;\n status?: string;\n};\n\nexport default function KioskPage() {\n const stationsQuery = useCheckInStationsQuery({ limit: 100, offset: 0 });\n const recordsQuery = useCheckInRecordsQuery({ limit: 100, offset: 0 });\n const stations = useMemo(\n () => (stationsQuery.data?.checkInStations.items ?? []) as StationRow[],\n [stationsQuery.data]\n );\n const records = useMemo(() => recordsQuery.data?.checkInRecords.items ?? [], [recordsQuery.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>Kiosk</GradientText> & Check-In\n </h1>\n <p className=\"mt-1 text-sm text-text-secondary\">View configured check-in stations and station status.</p>\n </EmphasisPanel>\n\n <EntityListSection\n heading={stationsQuery.loading ? 'Loading check-in stations...' : `Stations (${stations.length})`}\n emptyLabel=\"No check-in stations configured yet.\"\n rows={stations.map((row) => ({\n id: row.id,\n title: row.name ?? row.title ?? `Station ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n\n <EntityListSection\n heading={recordsQuery.loading ? 'Loading check-in records...' : `Check-In Records (${records.length})`}\n emptyLabel=\"No check-in records found.\"\n rows={records.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 </div>\n );\n}\n"],"mappings":";;;;;;AAaA,SAAwB,IAAY;CAClC,IAAM,IAAgB,EAAwB;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EAClE,IAAe,EAAuB;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EAChE,IAAW,QACR,EAAc,MAAM,gBAAgB,SAAS,EAAE,EACtD,CAAC,EAAc,KAAK,CACrB,EACK,IAAU,QAAc,EAAa,MAAM,eAAe,SAAS,EAAE,EAAE,CAAC,EAAa,KAAK,CAAC;AAEjG,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cAAd,CACE,kBAAC,GAAD,EAAA,UAAc,SAAoB,CAAA,EAAA,cAC/B;OACL,kBAAC,KAAD;IAAG,WAAU;cAAmC;IAAyD,CAAA,CAC3F,EAAA,CAAA;GAEhB,kBAAC,GAAD;IACE,SAAS,EAAc,UAAU,iCAAiC,aAAa,EAAS,OAAO;IAC/F,YAAW;IACX,MAAM,EAAS,KAAK,OAAS;KAC3B,IAAI,EAAI;KACR,OAAO,EAAI,QAAQ,EAAI,SAAS,WAAW,EAAI;KAC/C,QAAQ,EAAI,UAAU,KAAA;KACvB,EAAE;IACH,CAAA;GAEF,kBAAC,GAAD;IACE,SAAS,EAAa,UAAU,gCAAgC,qBAAqB,EAAQ,OAAO;IACpG,YAAW;IACX,MAAM,EAAQ,KAAK,OAAS;KAC1B,IAAI,EAAI;KACR,OAAO,EAAI,aAAa,YAAY,EAAI,eAAe,UAAU,EAAI;KACrE,UAAU,GAAG,EAAI,OAAO,KAAK,EAAI;KACjC,QAAQ,EAAI;KACb,EAAE;IACH,CAAA;GACE"}
|