@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
@@ -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 u() {
9
- let { t: u } = l(), d = (e, t) => {
10
- let n = u(e);
9
+ function m() {
10
+ let { t: m } = l(), h = (e, t) => {
11
+ let n = m(e);
11
12
  return n === e ? t : n;
12
- }, f = e({
13
+ }, g = e({
13
14
  limit: 100,
14
15
  offset: 0
15
- }), p = t({
16
+ }), _ = t({
16
17
  limit: 100,
17
18
  offset: 0
18
- }), [m, { loading: h }] = n(), [g, _] = a(""), v = i(() => f.data?.announcements.items ?? [], [f.data]), y = i(() => p.data?.communicationCampaigns.items ?? [], [p.data]);
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("section", {
23
- className: "rounded-lg border border-border-default bg-bg-surface p-5",
24
- children: [
25
- /* @__PURE__ */ o("h1", {
26
- className: "text-2xl font-bold text-text-primary",
27
- children: d("eventfullymanaged.communication.title", "Communication")
28
- }),
29
- /* @__PURE__ */ o("p", {
30
- className: "mt-1 text-sm text-text-secondary",
31
- children: d("eventfullymanaged.communication.description", "Announcements and campaigns managed via workspace APIs.")
32
- }),
33
- /* @__PURE__ */ s("div", {
34
- className: "mt-4 flex flex-col gap-3 sm:flex-row",
35
- children: [/* @__PURE__ */ o("input", {
36
- value: g,
37
- onChange: (e) => _(e.target.value),
38
- placeholder: d("eventfullymanaged.communication.inputPlaceholder", "Emergency schedule update"),
39
- className: "flex-1 rounded-md border border-border-default px-3 py-2"
40
- }), /* @__PURE__ */ s("button", {
41
- type: "button",
42
- disabled: h,
43
- onClick: async () => {
44
- g.trim() && (await m({ variables: { input: {
45
- title: g,
46
- name: g,
47
- status: "draft",
48
- metadata: {}
49
- } } }), _(""));
50
- },
51
- className: "inline-flex items-center rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90 disabled:opacity-60",
52
- children: [/* @__PURE__ */ o(c, { className: "mr-2 h-4 w-4" }), h ? d("eventfullymanaged.communication.actions.creating", "Creating...") : d("eventfullymanaged.communication.actions.createAnnouncement", "Create Announcement")]
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: f.loading ? d("eventfullymanaged.communication.announcements.loading", "Loading announcements...") : `${d("eventfullymanaged.communication.announcements.heading", "Announcements")} (${v.length})`,
59
- emptyLabel: d("eventfullymanaged.communication.announcements.empty", "No announcements published yet."),
60
- rows: v.map((e) => ({
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 ?? `${d("eventfullymanaged.communication.announcements.itemPrefix", "Announcement")} ${e.id}`,
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: p.loading ? d("eventfullymanaged.communication.campaigns.loading", "Loading campaigns...") : `${d("eventfullymanaged.communication.campaigns.heading", "Campaigns")} (${y.length})`,
68
- emptyLabel: d("eventfullymanaged.communication.campaigns.empty", "No communication campaigns created yet."),
69
- rows: y.map((e) => ({
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 ?? `${d("eventfullymanaged.communication.campaigns.itemPrefix", "Campaign")} ${e.id}`,
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 { u as default };
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 <section className=\"rounded-lg border border-border-default bg-bg-surface p-5\">\n <h1 className=\"text-2xl font-bold text-text-primary\">\n {t('eventfullymanaged.communication.title', 'Communication')}\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 className=\"flex-1 rounded-md border border-border-default px-3 py-2\"\n />\n <button\n type=\"button\"\n disabled={creating}\n onClick={onCreate}\n className=\"inline-flex items-center rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90 disabled:opacity-60\"\n >\n <Megaphone className=\"mr-2 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 </section>\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":";;;;;;;AAkBA,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,WAAD;IAAS,WAAU;cAAnB;KACE,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAE,yCAAyC,gBAAgB;MACzD,CAAA;KACL,kBAAC,KAAD;MAAG,WAAU;gBACV,EAAE,+CAA+C,0DAA0D;MAC1G,CAAA;KACJ,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,SAAD;OACE,OAAO;OACP,WAAW,MAAM,EAAqB,EAAE,OAAO,MAAM;OACrD,aAAa,EAAE,oDAAoD,4BAA4B;OAC/F,WAAU;OACV,CAAA,EACF,kBAAC,UAAD;OACE,MAAK;OACL,UAAU;OACV,SAlCO,YAAY;AACtB,UAAkB,MAAM,KAC7B,MAAM,EAAmB,EACvB,WAAW,EACT,OAAO;SACL,OAAO;SACP,MAAM;SACN,QAAQ;SACR,UAAU,EAAE;SACb,EACF,EACF,CAAC,EACF,EAAqB,GAAG;;OAuBhB,WAAU;iBAJZ,CAME,kBAAC,GAAD,EAAW,WAAU,gBAAiB,CAAA,EACrC,IACG,EAAE,oDAAoD,cAAc,GACpE,EAAE,8DAA8D,sBAAsB,CACnF;SACL;;KACE;;GAEV,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
+ {"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 n({ heading: n, rows: r, emptyLabel: i }) {
4
- return /* @__PURE__ */ t("section", {
5
- className: "rounded-lg border border-border-default bg-bg-surface p-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: n
32
+ children: o
9
33
  }), /* @__PURE__ */ e("div", {
10
- className: "mt-4 space-y-3",
11
- children: r.length === 0 ? /* @__PURE__ */ e("p", {
12
- className: "text-sm text-text-secondary",
13
- children: i
14
- }) : r.map((n) => /* @__PURE__ */ e("div", {
15
- className: "rounded-md border border-border-default p-3",
16
- children: /* @__PURE__ */ t("div", {
17
- className: "flex items-center justify-between gap-3",
18
- children: [/* @__PURE__ */ t("div", { children: [/* @__PURE__ */ e("p", {
19
- className: "font-medium text-text-primary",
20
- children: n.title
21
- }), n.subtitle ? /* @__PURE__ */ e("p", {
22
- className: "text-sm text-text-secondary",
23
- children: n.subtitle
24
- }) : null] }), n.status ? /* @__PURE__ */ e("span", {
25
- className: "rounded-full bg-gray-100 px-2 py-1 text-xs font-medium uppercase text-text-primary",
26
- children: n.status
27
- }) : null]
28
- })
29
- }, n.id))
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 { n as EntityListSection };
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":["type 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}\n\nexport function EntityListSection({ heading, rows, emptyLabel }: EntityListSectionProps) {\n return (\n <section className=\"rounded-lg border border-border-default bg-bg-surface p-5\">\n <h2 className=\"text-lg font-semibold text-text-primary\">{heading}</h2>\n <div className=\"mt-4 space-y-3\">\n {rows.length === 0 ? (\n <p className=\"text-sm text-text-secondary\">{emptyLabel}</p>\n ) : (\n rows.map((row) => (\n <div key={row.id} className=\"rounded-md border border-border-default p-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div>\n <p className=\"font-medium text-text-primary\">{row.title}</p>\n {row.subtitle ? <p className=\"text-sm text-text-secondary\">{row.subtitle}</p> : null}\n </div>\n {row.status ? (\n <span className=\"rounded-full bg-gray-100 px-2 py-1 text-xs font-medium uppercase text-text-primary\">\n {row.status}\n </span>\n ) : null}\n </div>\n </div>\n ))\n )}\n </div>\n </section>\n );\n}\n"],"mappings":";;AAaA,SAAgB,EAAkB,EAAE,YAAS,SAAM,iBAAsC;AACvF,QACE,kBAAC,WAAD;EAAS,WAAU;YAAnB,CACE,kBAAC,MAAD;GAAI,WAAU;aAA2C;GAAa,CAAA,EACtE,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAK,WAAW,IACf,kBAAC,KAAD;IAAG,WAAU;cAA+B;IAAe,CAAA,GAE3D,EAAK,KAAK,MACR,kBAAC,OAAD;IAAkB,WAAU;cAC1B,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;MAAG,WAAU;gBAAiC,EAAI;MAAU,CAAA,EAC3D,EAAI,WAAW,kBAAC,KAAD;MAAG,WAAU;gBAA+B,EAAI;MAAa,CAAA,GAAG,KAC5E,EAAA,CAAA,EACL,EAAI,SACH,kBAAC,QAAD;MAAM,WAAU;gBACb,EAAI;MACA,CAAA,GACL,KACA;;IACF,EAZI,EAAI,GAYR,CACN;GAEA,CAAA,CACE"}
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 u() {
9
- let { t: u } = l(), d = (e, t) => {
10
- let n = u(e);
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: f, loading: p } = t({
13
+ }, { data: g, loading: _ } = t({
13
14
  limit: 100,
14
15
  offset: 0
15
- }), m = n({
16
+ }), v = n({
16
17
  limit: 100,
17
18
  offset: 0
18
- }), [h, { loading: g }] = e(), [_, v] = a(""), y = i(() => f?.events.items ?? [], [f]), b = i(() => m.data?.ticketTypes.items ?? [], [m.data]);
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("section", {
23
- className: "rounded-lg border border-border-default bg-bg-surface p-5",
24
- children: [
25
- /* @__PURE__ */ o("h1", {
26
- className: "text-2xl font-bold text-text-primary",
27
- children: d("eventfullymanaged.events.title", "Events")
28
- }),
29
- /* @__PURE__ */ o("p", {
30
- className: "mt-1 text-sm text-text-secondary",
31
- children: d("eventfullymanaged.events.description", "Create and manage live events from the workspace graph.")
32
- }),
33
- /* @__PURE__ */ s("div", {
34
- className: "mt-4 flex flex-col gap-3 sm:flex-row",
35
- children: [/* @__PURE__ */ o("input", {
36
- value: _,
37
- onChange: (e) => v(e.target.value),
38
- placeholder: d("eventfullymanaged.events.namePlaceholder", "Annual Innovation Summit"),
39
- className: "flex-1 rounded-md border border-border-default px-3 py-2"
40
- }), /* @__PURE__ */ s("button", {
41
- type: "button",
42
- disabled: g,
43
- onClick: async () => {
44
- if (!_.trim()) return;
45
- let e = /* @__PURE__ */ new Date(), t = new Date(e.getTime() + 3600 * 1e3);
46
- await h({ variables: { input: {
47
- name: _.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
- } } }), v("");
58
- },
59
- className: "inline-flex items-center rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90 disabled:opacity-60",
60
- children: [/* @__PURE__ */ o(c, { className: "mr-2 h-4 w-4" }), g ? d("eventfullymanaged.events.actions.creating", "Creating...") : d("eventfullymanaged.events.actions.create", "Create Event")]
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: p ? d("eventfullymanaged.events.list.loading", "Loading events...") : `${d("eventfullymanaged.events.list.heading", "Events")} (${y.length})`,
67
- emptyLabel: d("eventfullymanaged.events.list.empty", "No events found."),
68
- rows: y.map((e) => ({
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: m.loading ? d("eventfullymanaged.events.ticketTypes.loading", "Loading ticket types...") : `${d("eventfullymanaged.events.ticketTypes.heading", "Ticket Types")} (${b.length})`,
77
- emptyLabel: d("eventfullymanaged.events.ticketTypes.empty", "No ticket types configured."),
78
- rows: b.map((e) => ({
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} • ${d("eventfullymanaged.events.ticketTypes.soldPrefix", "Sold")} ${e.soldCount}`,
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 { u as default };
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 <section className=\"rounded-lg border border-border-default bg-bg-surface p-5\">\n <h1 className=\"text-2xl font-bold text-text-primary\">{t('eventfullymanaged.events.title', 'Events')}</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 className=\"flex-1 rounded-md border border-border-default px-3 py-2\"\n />\n <button\n type=\"button\"\n disabled={creating}\n onClick={onCreate}\n className=\"inline-flex items-center rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90 disabled:opacity-60\"\n >\n <CalendarPlus className=\"mr-2 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 </section>\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":";;;;;;;AAgBA,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,WAAD;IAAS,WAAU;cAAnB;KACE,kBAAC,MAAD;MAAI,WAAU;gBAAwC,EAAE,kCAAkC,SAAS;MAAM,CAAA;KACzG,kBAAC,KAAD;MAAG,WAAU;gBACV,EAAE,wCAAwC,0DAA0D;MACnG,CAAA;KACJ,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,SAAD;OACE,OAAO;OACP,WAAW,MAAM,EAAQ,EAAE,OAAO,MAAM;OACxC,aAAa,EAAE,4CAA4C,2BAA2B;OACtF,WAAU;OACV,CAAA,EACF,kBAAC,UAAD;OACE,MAAK;OACL,UAAU;OACV,SAxCO,YAAY;AAC3B,YAAI,CAAC,EAAK,MAAM,CAAE;QAClB,IAAM,oBAAM,IAAI,MAAM,EAChB,IAAW,IAAI,KAAK,EAAI,SAAS,GAAG,OAAU,IAAK;AAiBzD,QAhBA,MAAM,EAAY,EAChB,WAAW,EACT,OAAO;SACL,MAAM,EAAK,MAAM;SACjB,aAAa;SACb,MAAM;SACN,QAAQ;SACR,UAAU;SACV,SAAS,EAAI,aAAa;SAC1B,OAAO,EAAS,aAAa;SAC7B,YAAY;SACZ,UAAU;SACV,UAAU,EAAE;SACb,EACF,EACF,CAAC,EACF,EAAQ,GAAG;;OAqBH,WAAU;iBAJZ,CAME,kBAAC,GAAD,EAAc,WAAU,gBAAiB,CAAA,EACxC,IACG,EAAE,6CAA6C,cAAc,GAC7D,EAAE,2CAA2C,eAAe,CACzD;SACL;;KACE;;GAEV,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"}
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 o() {
7
- let o = t({
7
+ function c() {
8
+ let c = t({
8
9
  limit: 100,
9
10
  offset: 0
10
- }), s = e({
11
+ }), l = e({
11
12
  limit: 100,
12
13
  offset: 0
13
- }), c = r(() => o.data?.checkInStations.items ?? [], [o.data]), l = r(() => s.data?.checkInRecords.items ?? [], [s.data]);
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("section", {
18
- className: "rounded-lg border border-border-default bg-bg-surface p-5",
19
- children: [/* @__PURE__ */ i("h1", {
20
- className: "text-2xl font-bold text-text-primary",
21
- children: "Kiosk & Check-In"
22
- }), /* @__PURE__ */ i("p", {
23
- className: "mt-1 text-sm text-text-secondary",
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: o.loading ? "Loading check-in stations..." : `Stations (${c.length})`,
26
+ heading: c.loading ? "Loading check-in stations..." : `Stations (${u.length})`,
29
27
  emptyLabel: "No check-in stations configured yet.",
30
- rows: c.map((e) => ({
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: s.loading ? "Loading check-in records..." : `Check-In Records (${l.length})`,
35
+ heading: l.loading ? "Loading check-in records..." : `Check-In Records (${d.length})`,
38
36
  emptyLabel: "No check-in records found.",
39
- rows: l.map((e) => ({
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 { o as default };
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 <section className=\"rounded-lg border border-border-default bg-bg-surface p-5\">\n <h1 className=\"text-2xl font-bold text-text-primary\">Kiosk & Check-In</h1>\n <p className=\"mt-1 text-sm text-text-secondary\">View configured check-in stations and station status.</p>\n </section>\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":";;;;;AAYA,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,WAAD;IAAS,WAAU;cAAnB,CACE,kBAAC,MAAD;KAAI,WAAU;eAAuC;KAAqB,CAAA,EAC1E,kBAAC,KAAD;KAAG,WAAU;eAAmC;KAAyD,CAAA,CACjG;;GAEV,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"}
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> &amp; 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"}