@burdenoff/microfe-eventfullymanaged 2026.608.1 → 2026.625.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/eventfullymanaged/components/PageLayout.js +44 -38
- package/dist/eventfullymanaged/components/PageLayout.js.map +1 -1
- package/dist/eventfullymanaged/pages/dashboard/DashboardPage.js +93 -40
- package/dist/eventfullymanaged/pages/dashboard/DashboardPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js +32 -29
- package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js +85 -50
- package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/CommunicationPage.js +49 -50
- package/dist/eventfullymanaged/pages/modules/CommunicationPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/EntityListSection.js +57 -25
- package/dist/eventfullymanaged/pages/modules/EntityListSection.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/EventsPage.js +93 -66
- package/dist/eventfullymanaged/pages/modules/EventsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/KioskPage.js +18 -19
- package/dist/eventfullymanaged/pages/modules/KioskPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/NetworkingPage.js +60 -30
- package/dist/eventfullymanaged/pages/modules/NetworkingPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js +146 -108
- package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.js +67 -38
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js +84 -49
- package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js +57 -28
- package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js +106 -72
- package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js +84 -68
- package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js +202 -204
- package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js +58 -39
- package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js +53 -46
- package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js +109 -63
- package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/VenueFormPage.js +193 -197
- package/dist/eventfullymanaged/pages/venues/VenueFormPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/venues/VenueListPage.js +65 -36
- package/dist/eventfullymanaged/pages/venues/VenueListPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,91 +1,118 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { useEventfullyManaged as e } from "../../context/EventfullyManagedContext.js";
|
|
2
|
+
import { useCreateEventMutation as t, useEventsQuery as n, useTicketTypesQuery as r } from "../../api/eventApi.js";
|
|
3
|
+
import { EntityListSection as i } from "./EntityListSection.js";
|
|
4
|
+
import { useMemo as a, useState as o } from "react";
|
|
5
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
6
|
+
import { CalendarPlus as l, Ticket as u, Users as d } from "lucide-react";
|
|
7
|
+
import { useI18n as f } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
8
|
+
import { Button as p, EmphasisPanel as m, GradientText as h, Input as g, NextSteps as _, PagePurpose as v } from "@burdenoff/fe-libs/ui";
|
|
7
9
|
//#region src/eventfullymanaged/pages/modules/EventsPage.tsx
|
|
8
|
-
function
|
|
9
|
-
let { t:
|
|
10
|
-
let n =
|
|
10
|
+
function y() {
|
|
11
|
+
let { t: y } = f(), b = (e, t) => {
|
|
12
|
+
let n = y(e);
|
|
11
13
|
return n === e ? t : n;
|
|
12
|
-
}, { data:
|
|
14
|
+
}, { navigate: x } = e(), { data: S, loading: C } = n({
|
|
13
15
|
limit: 100,
|
|
14
16
|
offset: 0
|
|
15
|
-
}),
|
|
17
|
+
}), w = r({
|
|
16
18
|
limit: 100,
|
|
17
19
|
offset: 0
|
|
18
|
-
}), [
|
|
19
|
-
return /* @__PURE__ */
|
|
20
|
+
}), [T, { loading: E }] = t(), [D, O] = o(""), k = a(() => S?.events.items ?? [], [S]), A = a(() => w.data?.ticketTypes.items ?? [], [w.data]);
|
|
21
|
+
return /* @__PURE__ */ c("div", {
|
|
20
22
|
className: "space-y-6 p-6",
|
|
21
23
|
children: [
|
|
22
|
-
/* @__PURE__ */ s("
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
emptyLabel: d("eventfullymanaged.events.list.empty", "No events found."),
|
|
68
|
-
rows: y.map((e) => ({
|
|
24
|
+
/* @__PURE__ */ s(v, { children: b("eventfullymanaged.events.purpose", "Events are the heart of the platform — each one is a happening you sell tickets for, register attendees to, and run on the day. Create an event here, then attach ticket types so people can buy their way in. Use this when you are spinning up a new conference, meetup or summit.") }),
|
|
25
|
+
/* @__PURE__ */ c(m, { children: [
|
|
26
|
+
/* @__PURE__ */ s("h1", {
|
|
27
|
+
className: "text-2xl font-bold text-text-primary",
|
|
28
|
+
children: /* @__PURE__ */ s(h, { children: b("eventfullymanaged.events.title", "Events") })
|
|
29
|
+
}),
|
|
30
|
+
/* @__PURE__ */ s("p", {
|
|
31
|
+
className: "mt-1 text-sm text-text-secondary",
|
|
32
|
+
children: b("eventfullymanaged.events.description", "Create and manage live events from the workspace graph.")
|
|
33
|
+
}),
|
|
34
|
+
/* @__PURE__ */ c("div", {
|
|
35
|
+
className: "mt-4 flex flex-col gap-3 sm:flex-row",
|
|
36
|
+
children: [/* @__PURE__ */ s(g, {
|
|
37
|
+
value: D,
|
|
38
|
+
onChange: (e) => O(e.target.value),
|
|
39
|
+
placeholder: b("eventfullymanaged.events.namePlaceholder", "Annual Innovation Summit"),
|
|
40
|
+
"aria-label": b("eventfullymanaged.events.namePlaceholder", "Annual Innovation Summit"),
|
|
41
|
+
className: "flex-1"
|
|
42
|
+
}), /* @__PURE__ */ c(p, {
|
|
43
|
+
type: "button",
|
|
44
|
+
disabled: E,
|
|
45
|
+
onClick: async () => {
|
|
46
|
+
if (!D.trim()) return;
|
|
47
|
+
let e = /* @__PURE__ */ new Date(), t = new Date(e.getTime() + 3600 * 1e3);
|
|
48
|
+
await T({ variables: { input: {
|
|
49
|
+
name: D.trim(),
|
|
50
|
+
description: "",
|
|
51
|
+
type: "IN_PERSON",
|
|
52
|
+
status: "DRAFT",
|
|
53
|
+
timezone: "Asia/Kolkata",
|
|
54
|
+
startAt: e.toISOString(),
|
|
55
|
+
endAt: t.toISOString(),
|
|
56
|
+
visibility: "private",
|
|
57
|
+
capacity: 100,
|
|
58
|
+
metadata: {}
|
|
59
|
+
} } }), O("");
|
|
60
|
+
},
|
|
61
|
+
children: [/* @__PURE__ */ s(l, { className: "h-4 w-4" }), E ? b("eventfullymanaged.events.actions.creating", "Creating...") : b("eventfullymanaged.events.actions.create", "Create Event")]
|
|
62
|
+
})]
|
|
63
|
+
})
|
|
64
|
+
] }),
|
|
65
|
+
/* @__PURE__ */ s(i, {
|
|
66
|
+
heading: C ? b("eventfullymanaged.events.list.loading", "Loading events...") : `${b("eventfullymanaged.events.list.heading", "Events")} (${k.length})`,
|
|
67
|
+
emptyLabel: b("eventfullymanaged.events.list.empty", "No events found."),
|
|
68
|
+
rows: k.map((e) => ({
|
|
69
69
|
id: e.id,
|
|
70
70
|
title: e.name,
|
|
71
71
|
subtitle: [e.type, e.startAt ? new Date(e.startAt).toLocaleString() : void 0].filter(Boolean).join(" • "),
|
|
72
72
|
status: e.status
|
|
73
73
|
}))
|
|
74
74
|
}),
|
|
75
|
-
/* @__PURE__ */
|
|
76
|
-
heading:
|
|
77
|
-
emptyLabel:
|
|
78
|
-
rows:
|
|
75
|
+
/* @__PURE__ */ s(i, {
|
|
76
|
+
heading: w.loading ? b("eventfullymanaged.events.ticketTypes.loading", "Loading ticket types...") : `${b("eventfullymanaged.events.ticketTypes.heading", "Ticket Types")} (${A.length})`,
|
|
77
|
+
emptyLabel: b("eventfullymanaged.events.ticketTypes.empty", "No ticket types configured."),
|
|
78
|
+
rows: A.map((e) => ({
|
|
79
79
|
id: e.id,
|
|
80
80
|
title: e.name,
|
|
81
|
-
subtitle: `${e.price} ${e.currency} • ${
|
|
81
|
+
subtitle: `${e.price} ${e.currency} • ${b("eventfullymanaged.events.ticketTypes.soldPrefix", "Sold")} ${e.soldCount}`,
|
|
82
82
|
status: e.isActive ? "active" : "inactive"
|
|
83
83
|
}))
|
|
84
|
+
}),
|
|
85
|
+
/* @__PURE__ */ s(_, {
|
|
86
|
+
storageKey: "eventfullymanaged-events",
|
|
87
|
+
title: b("eventfullymanaged.events.nextSteps.title", "Finish setting up your event"),
|
|
88
|
+
steps: [
|
|
89
|
+
{
|
|
90
|
+
id: "configure-registration",
|
|
91
|
+
label: b("eventfullymanaged.events.nextSteps.registration", "Configure registration & tickets"),
|
|
92
|
+
description: b("eventfullymanaged.events.nextSteps.registrationDesc", "Define ticket types and open sign-ups for attendees."),
|
|
93
|
+
icon: /* @__PURE__ */ s(u, { className: "h-4 w-4" }),
|
|
94
|
+
onClick: () => x("/registration")
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
id: "plan-networking",
|
|
98
|
+
label: b("eventfullymanaged.events.nextSteps.networking", "Plan networking & sessions"),
|
|
99
|
+
description: b("eventfullymanaged.events.nextSteps.networkingDesc", "Set up attendee matchmaking and meeting schedules."),
|
|
100
|
+
icon: /* @__PURE__ */ s(d, { className: "h-4 w-4" }),
|
|
101
|
+
onClick: () => x("/networking")
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
id: "announce",
|
|
105
|
+
label: b("eventfullymanaged.events.nextSteps.announce", "Announce to attendees"),
|
|
106
|
+
description: b("eventfullymanaged.events.nextSteps.announceDesc", "Send announcements and run communication campaigns."),
|
|
107
|
+
icon: /* @__PURE__ */ s(l, { className: "h-4 w-4" }),
|
|
108
|
+
onClick: () => x("/communication")
|
|
109
|
+
}
|
|
110
|
+
]
|
|
84
111
|
})
|
|
85
112
|
]
|
|
86
113
|
});
|
|
87
114
|
}
|
|
88
115
|
//#endregion
|
|
89
|
-
export {
|
|
116
|
+
export { y as default };
|
|
90
117
|
|
|
91
118
|
//# 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, Ticket, Users } from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Button, EmphasisPanel, GradientText, Input, NextSteps, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { useMemo, useState } from 'react';\n\nimport { useCreateEventMutation, useEventsQuery, useTicketTypesQuery } from '../../api/eventApi';\nimport { useEventfullyManaged } from '../../context/EventfullyManagedContext';\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 { navigate } = useEventfullyManaged();\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 <PagePurpose>\n {t(\n 'eventfullymanaged.events.purpose',\n 'Events are the heart of the platform — each one is a happening you sell tickets for, register attendees to, and run on the day. Create an event here, then attach ticket types so people can buy their way in. Use this when you are spinning up a new conference, meetup or summit.'\n )}\n </PagePurpose>\n\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\n <NextSteps\n storageKey=\"eventfullymanaged-events\"\n title={t('eventfullymanaged.events.nextSteps.title', 'Finish setting up your event')}\n steps={[\n {\n id: 'configure-registration',\n label: t('eventfullymanaged.events.nextSteps.registration', 'Configure registration & tickets'),\n description: t(\n 'eventfullymanaged.events.nextSteps.registrationDesc',\n 'Define ticket types and open sign-ups for attendees.'\n ),\n icon: <Ticket className=\"h-4 w-4\" />,\n onClick: () => navigate('/registration'),\n },\n {\n id: 'plan-networking',\n label: t('eventfullymanaged.events.nextSteps.networking', 'Plan networking & sessions'),\n description: t(\n 'eventfullymanaged.events.nextSteps.networkingDesc',\n 'Set up attendee matchmaking and meeting schedules.'\n ),\n icon: <Users className=\"h-4 w-4\" />,\n onClick: () => navigate('/networking'),\n },\n {\n id: 'announce',\n label: t('eventfullymanaged.events.nextSteps.announce', 'Announce to attendees'),\n description: t(\n 'eventfullymanaged.events.nextSteps.announceDesc',\n 'Send announcements and run communication campaigns.'\n ),\n icon: <CalendarPlus className=\"h-4 w-4\" />,\n onClick: () => navigate('/communication'),\n },\n ]}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -2,41 +2,40 @@ 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, PagePurpose as c } from "@burdenoff/fe-libs/ui";
|
|
5
6
|
//#region src/eventfullymanaged/pages/modules/KioskPage.tsx
|
|
6
|
-
function
|
|
7
|
-
let
|
|
7
|
+
function l() {
|
|
8
|
+
let l = t({
|
|
8
9
|
limit: 100,
|
|
9
10
|
offset: 0
|
|
10
|
-
}),
|
|
11
|
+
}), u = e({
|
|
11
12
|
limit: 100,
|
|
12
13
|
offset: 0
|
|
13
|
-
}),
|
|
14
|
+
}), d = r(() => l.data?.checkInStations.items ?? [], [l.data]), f = r(() => u.data?.checkInRecords.items ?? [], [u.data]);
|
|
14
15
|
return /* @__PURE__ */ a("div", {
|
|
15
16
|
className: "space-y-6 p-6",
|
|
16
17
|
children: [
|
|
17
|
-
/* @__PURE__ */
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
})]
|
|
26
|
-
}),
|
|
18
|
+
/* @__PURE__ */ i(c, { children: "Kiosks are the front desk of your event. Each check-in station is a device or counter where attendees scan in, and check-in records are the live log of who arrived and when. Use this page to confirm your stations are online before doors open and to watch arrivals flow in on the day." }),
|
|
19
|
+
/* @__PURE__ */ a(o, { children: [/* @__PURE__ */ a("h1", {
|
|
20
|
+
className: "text-2xl font-bold text-text-primary",
|
|
21
|
+
children: [/* @__PURE__ */ i(s, { 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
|
+
})] }),
|
|
27
26
|
/* @__PURE__ */ i(n, {
|
|
28
|
-
heading:
|
|
27
|
+
heading: l.loading ? "Loading check-in stations..." : `Stations (${d.length})`,
|
|
29
28
|
emptyLabel: "No check-in stations configured yet.",
|
|
30
|
-
rows:
|
|
29
|
+
rows: d.map((e) => ({
|
|
31
30
|
id: e.id,
|
|
32
31
|
title: e.name ?? e.title ?? `Station ${e.id}`,
|
|
33
32
|
status: e.status ?? void 0
|
|
34
33
|
}))
|
|
35
34
|
}),
|
|
36
35
|
/* @__PURE__ */ i(n, {
|
|
37
|
-
heading:
|
|
36
|
+
heading: u.loading ? "Loading check-in records..." : `Check-In Records (${f.length})`,
|
|
38
37
|
emptyLabel: "No check-in records found.",
|
|
39
|
-
rows:
|
|
38
|
+
rows: f.map((e) => ({
|
|
40
39
|
id: e.id,
|
|
41
40
|
title: e.attendeeId ? `Attendee ${e.attendeeId}` : `Record ${e.id}`,
|
|
42
41
|
subtitle: `${e.method} • ${e.direction}`,
|
|
@@ -47,6 +46,6 @@ function o() {
|
|
|
47
46
|
});
|
|
48
47
|
}
|
|
49
48
|
//#endregion
|
|
50
|
-
export {
|
|
49
|
+
export { l as default };
|
|
51
50
|
|
|
52
51
|
//# 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, PagePurpose } 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 <PagePurpose>\n Kiosks are the front desk of your event. Each check-in station is a device or counter where attendees scan in,\n and check-in records are the live log of who arrived and when. Use this page to confirm your stations are\n online before doors open and to watch arrivals flow in on the day.\n </PagePurpose>\n\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,+RAIC,CAAA;GAEd,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"}
|
|
@@ -1,65 +1,95 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { useEventfullyManaged as e } from "../../context/EventfullyManagedContext.js";
|
|
2
|
+
import { useMeetingsQuery as t, useNetworkingMatchesQuery as n, useNetworkingProfilesQuery as r } from "../../api/eventApi.js";
|
|
3
|
+
import { EntityListSection as i } from "./EntityListSection.js";
|
|
4
|
+
import { useMemo as a } from "react";
|
|
5
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
6
|
+
import { CalendarDays as c, Megaphone as l, Users as u } from "lucide-react";
|
|
7
|
+
import { EmphasisPanel as d, GradientText as f, NextSteps as p, PagePurpose as m } from "@burdenoff/fe-libs/ui";
|
|
5
8
|
//#region src/eventfullymanaged/pages/modules/NetworkingPage.tsx
|
|
6
|
-
function
|
|
7
|
-
let
|
|
9
|
+
function h() {
|
|
10
|
+
let { navigate: h } = e(), g = r({
|
|
8
11
|
limit: 100,
|
|
9
12
|
offset: 0
|
|
10
|
-
}),
|
|
13
|
+
}), _ = n({
|
|
11
14
|
limit: 100,
|
|
12
15
|
offset: 0
|
|
13
|
-
}),
|
|
16
|
+
}), v = t({
|
|
14
17
|
limit: 100,
|
|
15
18
|
offset: 0
|
|
16
|
-
}),
|
|
17
|
-
return /* @__PURE__ */
|
|
19
|
+
}), y = a(() => g.data?.networkingProfiles.items ?? [], [g.data]), b = a(() => _.data?.networkingMatches.items ?? [], [_.data]), x = a(() => v.data?.meetings.items ?? [], [v.data]);
|
|
20
|
+
return /* @__PURE__ */ s("div", {
|
|
18
21
|
className: "space-y-6 p-6",
|
|
19
22
|
children: [
|
|
20
|
-
/* @__PURE__ */ o("
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
/* @__PURE__ */ a(r, {
|
|
31
|
-
heading: s.loading ? "Loading networking profiles..." : `Profiles (${u.length})`,
|
|
23
|
+
/* @__PURE__ */ o(m, { children: "Networking turns attendees into connections. Profiles describe who each attendee is and what they are looking for, matches are the suggestions the engine makes between them, and meetings are the 1:1s they book. Use this page to spot strong matches and make sure scheduled meetings are running smoothly." }),
|
|
24
|
+
/* @__PURE__ */ s(d, { children: [/* @__PURE__ */ o("h1", {
|
|
25
|
+
className: "text-2xl font-bold text-text-primary",
|
|
26
|
+
children: /* @__PURE__ */ o(f, { children: "Networking" })
|
|
27
|
+
}), /* @__PURE__ */ o("p", {
|
|
28
|
+
className: "mt-1 text-sm text-text-secondary",
|
|
29
|
+
children: "Manage networking matches and meeting schedules from live backend data."
|
|
30
|
+
})] }),
|
|
31
|
+
/* @__PURE__ */ o(i, {
|
|
32
|
+
heading: g.loading ? "Loading networking profiles..." : `Profiles (${y.length})`,
|
|
32
33
|
emptyLabel: "No networking profiles available.",
|
|
33
|
-
|
|
34
|
+
emptyIllustration: "empty-people",
|
|
35
|
+
rows: y.map((e) => ({
|
|
34
36
|
id: e.id,
|
|
35
37
|
title: e.attendeeId ? `Attendee ${e.attendeeId}` : `Profile ${e.id}`,
|
|
36
38
|
subtitle: [e.role, e.industry].filter(Boolean).join(" • "),
|
|
37
39
|
status: e.visibility
|
|
38
40
|
}))
|
|
39
41
|
}),
|
|
40
|
-
/* @__PURE__ */
|
|
41
|
-
heading:
|
|
42
|
+
/* @__PURE__ */ o(i, {
|
|
43
|
+
heading: _.loading ? "Loading networking matches..." : `Matches (${b.length})`,
|
|
42
44
|
emptyLabel: "No networking matches available.",
|
|
43
|
-
|
|
45
|
+
emptyIllustration: "empty-people",
|
|
46
|
+
rows: b.map((e) => ({
|
|
44
47
|
id: e.id,
|
|
45
48
|
title: e.name ?? e.title ?? `Match ${e.id}`,
|
|
46
49
|
subtitle: "Suggested by networking engine",
|
|
47
50
|
status: e.status ?? void 0
|
|
48
51
|
}))
|
|
49
52
|
}),
|
|
50
|
-
/* @__PURE__ */
|
|
51
|
-
heading:
|
|
53
|
+
/* @__PURE__ */ o(i, {
|
|
54
|
+
heading: v.loading ? "Loading meetings..." : `Meetings (${x.length})`,
|
|
52
55
|
emptyLabel: "No meetings scheduled.",
|
|
53
|
-
rows:
|
|
56
|
+
rows: x.map((e) => ({
|
|
54
57
|
id: e.id,
|
|
55
58
|
title: e.title ?? e.name ?? `Meeting ${e.id}`,
|
|
56
59
|
status: e.status ?? void 0
|
|
57
60
|
}))
|
|
61
|
+
}),
|
|
62
|
+
/* @__PURE__ */ o(p, {
|
|
63
|
+
storageKey: "eventfullymanaged-networking",
|
|
64
|
+
title: "Make networking land",
|
|
65
|
+
steps: [
|
|
66
|
+
{
|
|
67
|
+
id: "grow-attendees",
|
|
68
|
+
label: "Bring in more attendees",
|
|
69
|
+
description: "More registered attendees means richer matches and meetings.",
|
|
70
|
+
icon: /* @__PURE__ */ o(u, { className: "h-4 w-4" }),
|
|
71
|
+
onClick: () => h("/registration")
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: "announce-networking",
|
|
75
|
+
label: "Announce networking sessions",
|
|
76
|
+
description: "Let attendees know how and when to connect.",
|
|
77
|
+
icon: /* @__PURE__ */ o(l, { className: "h-4 w-4" }),
|
|
78
|
+
onClick: () => h("/communication")
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: "review-event",
|
|
82
|
+
label: "Review the event schedule",
|
|
83
|
+
description: "Make sure networking slots fit around your sessions.",
|
|
84
|
+
icon: /* @__PURE__ */ o(c, { className: "h-4 w-4" }),
|
|
85
|
+
onClick: () => h("/events")
|
|
86
|
+
}
|
|
87
|
+
]
|
|
58
88
|
})
|
|
59
89
|
]
|
|
60
90
|
});
|
|
61
91
|
}
|
|
62
92
|
//#endregion
|
|
63
|
-
export {
|
|
93
|
+
export { h as default };
|
|
64
94
|
|
|
65
95
|
//# sourceMappingURL=NetworkingPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkingPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/NetworkingPage.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useMeetingsQuery, useNetworkingMatchesQuery, useNetworkingProfilesQuery } from '../../api/eventApi';\nimport { EntityListSection } from './EntityListSection';\n\ntype SimpleRow = {\n id: string;\n name?: string;\n title?: string;\n status?: string;\n};\n\nexport default function NetworkingPage() {\n const profilesQuery = useNetworkingProfilesQuery({ limit: 100, offset: 0 });\n const matchesQuery = useNetworkingMatchesQuery({ limit: 100, offset: 0 });\n const meetingsQuery = useMeetingsQuery({ limit: 100, offset: 0 });\n\n const profiles = useMemo(() => profilesQuery.data?.networkingProfiles.items ?? [], [profilesQuery.data]);\n const matches = useMemo(() => (matchesQuery.data?.networkingMatches.items ?? []) as SimpleRow[], [matchesQuery.data]);\n const meetings = useMemo(() => (meetingsQuery.data?.meetings.items ?? []) as SimpleRow[], [meetingsQuery.data]);\n\n return (\n <div className=\"space-y-6 p-6\">\n <
|
|
1
|
+
{"version":3,"file":"NetworkingPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/modules/NetworkingPage.tsx"],"sourcesContent":["import { CalendarDays, Megaphone, Users } from 'lucide-react';\nimport { EmphasisPanel, GradientText, NextSteps, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { useMemo } from 'react';\n\nimport { useMeetingsQuery, useNetworkingMatchesQuery, useNetworkingProfilesQuery } from '../../api/eventApi';\nimport { useEventfullyManaged } from '../../context/EventfullyManagedContext';\nimport { EntityListSection } from './EntityListSection';\n\ntype SimpleRow = {\n id: string;\n name?: string;\n title?: string;\n status?: string;\n};\n\nexport default function NetworkingPage() {\n const { navigate } = useEventfullyManaged();\n const profilesQuery = useNetworkingProfilesQuery({ limit: 100, offset: 0 });\n const matchesQuery = useNetworkingMatchesQuery({ limit: 100, offset: 0 });\n const meetingsQuery = useMeetingsQuery({ limit: 100, offset: 0 });\n\n const profiles = useMemo(() => profilesQuery.data?.networkingProfiles.items ?? [], [profilesQuery.data]);\n const matches = useMemo(() => (matchesQuery.data?.networkingMatches.items ?? []) as SimpleRow[], [matchesQuery.data]);\n const meetings = useMemo(() => (meetingsQuery.data?.meetings.items ?? []) as SimpleRow[], [meetingsQuery.data]);\n\n return (\n <div className=\"space-y-6 p-6\">\n <PagePurpose>\n Networking turns attendees into connections. Profiles describe who each attendee is and what they are looking\n for, matches are the suggestions the engine makes between them, and meetings are the 1:1s they book. Use this\n page to spot strong matches and make sure scheduled meetings are running smoothly.\n </PagePurpose>\n\n <EmphasisPanel>\n <h1 className=\"text-2xl font-bold text-text-primary\">\n <GradientText>Networking</GradientText>\n </h1>\n <p className=\"mt-1 text-sm text-text-secondary\">\n Manage networking matches and meeting schedules from live backend data.\n </p>\n </EmphasisPanel>\n\n <EntityListSection\n heading={profilesQuery.loading ? 'Loading networking profiles...' : `Profiles (${profiles.length})`}\n emptyLabel=\"No networking profiles available.\"\n emptyIllustration=\"empty-people\"\n rows={profiles.map((row) => ({\n id: row.id,\n title: row.attendeeId ? `Attendee ${row.attendeeId}` : `Profile ${row.id}`,\n subtitle: [row.role, row.industry].filter(Boolean).join(' • '),\n status: row.visibility,\n }))}\n />\n\n <EntityListSection\n heading={matchesQuery.loading ? 'Loading networking matches...' : `Matches (${matches.length})`}\n emptyLabel=\"No networking matches available.\"\n emptyIllustration=\"empty-people\"\n rows={matches.map((row) => ({\n id: row.id,\n title: row.name ?? row.title ?? `Match ${row.id}`,\n subtitle: 'Suggested by networking engine',\n status: row.status ?? undefined,\n }))}\n />\n\n <EntityListSection\n heading={meetingsQuery.loading ? 'Loading meetings...' : `Meetings (${meetings.length})`}\n emptyLabel=\"No meetings scheduled.\"\n rows={meetings.map((row) => ({\n id: row.id,\n title: row.title ?? row.name ?? `Meeting ${row.id}`,\n status: row.status ?? undefined,\n }))}\n />\n\n <NextSteps\n storageKey=\"eventfullymanaged-networking\"\n title=\"Make networking land\"\n steps={[\n {\n id: 'grow-attendees',\n label: 'Bring in more attendees',\n description: 'More registered attendees means richer matches and meetings.',\n icon: <Users className=\"h-4 w-4\" />,\n onClick: () => navigate('/registration'),\n },\n {\n id: 'announce-networking',\n label: 'Announce networking sessions',\n description: 'Let attendees know how and when to connect.',\n icon: <Megaphone className=\"h-4 w-4\" />,\n onClick: () => navigate('/communication'),\n },\n {\n id: 'review-event',\n label: 'Review the event schedule',\n description: 'Make sure networking slots fit around your sessions.',\n icon: <CalendarDays className=\"h-4 w-4\" />,\n onClick: () => navigate('/events'),\n },\n ]}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAeA,SAAwB,IAAiB;CACvC,IAAM,EAAE,gBAAa,GAAsB,EACrC,IAAgB,EAA2B;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EACrE,IAAe,EAA0B;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EACnE,IAAgB,EAAiB;EAAE,OAAO;EAAK,QAAQ;EAAG,CAAC,EAE3D,IAAW,QAAc,EAAc,MAAM,mBAAmB,SAAS,EAAE,EAAE,CAAC,EAAc,KAAK,CAAC,EAClG,IAAU,QAAe,EAAa,MAAM,kBAAkB,SAAS,EAAE,EAAkB,CAAC,EAAa,KAAK,CAAC,EAC/G,IAAW,QAAe,EAAc,MAAM,SAAS,SAAS,EAAE,EAAkB,CAAC,EAAc,KAAK,CAAC;AAE/G,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD,EAAA,UAAa,kTAIC,CAAA;GAEd,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cACZ,kBAAC,GAAD,EAAA,UAAc,cAAyB,CAAA;IACpC,CAAA,EACL,kBAAC,KAAD;IAAG,WAAU;cAAmC;IAE5C,CAAA,CACU,EAAA,CAAA;GAEhB,kBAAC,GAAD;IACE,SAAS,EAAc,UAAU,mCAAmC,aAAa,EAAS,OAAO;IACjG,YAAW;IACX,mBAAkB;IAClB,MAAM,EAAS,KAAK,OAAS;KAC3B,IAAI,EAAI;KACR,OAAO,EAAI,aAAa,YAAY,EAAI,eAAe,WAAW,EAAI;KACtE,UAAU,CAAC,EAAI,MAAM,EAAI,SAAS,CAAC,OAAO,QAAQ,CAAC,KAAK,MAAM;KAC9D,QAAQ,EAAI;KACb,EAAE;IACH,CAAA;GAEF,kBAAC,GAAD;IACE,SAAS,EAAa,UAAU,kCAAkC,YAAY,EAAQ,OAAO;IAC7F,YAAW;IACX,mBAAkB;IAClB,MAAM,EAAQ,KAAK,OAAS;KAC1B,IAAI,EAAI;KACR,OAAO,EAAI,QAAQ,EAAI,SAAS,SAAS,EAAI;KAC7C,UAAU;KACV,QAAQ,EAAI,UAAU,KAAA;KACvB,EAAE;IACH,CAAA;GAEF,kBAAC,GAAD;IACE,SAAS,EAAc,UAAU,wBAAwB,aAAa,EAAS,OAAO;IACtF,YAAW;IACX,MAAM,EAAS,KAAK,OAAS;KAC3B,IAAI,EAAI;KACR,OAAO,EAAI,SAAS,EAAI,QAAQ,WAAW,EAAI;KAC/C,QAAQ,EAAI,UAAU,KAAA;KACvB,EAAE;IACH,CAAA;GAEF,kBAAC,GAAD;IACE,YAAW;IACX,OAAM;IACN,OAAO;KACL;MACE,IAAI;MACJ,OAAO;MACP,aAAa;MACb,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;MACnC,eAAe,EAAS,gBAAgB;MACzC;KACD;MACE,IAAI;MACJ,OAAO;MACP,aAAa;MACb,MAAM,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA;MACvC,eAAe,EAAS,iBAAiB;MAC1C;KACD;MACE,IAAI;MACJ,OAAO;MACP,aAAa;MACb,MAAM,kBAAC,GAAD,EAAc,WAAU,WAAY,CAAA;MAC1C,eAAe,EAAS,UAAU;MACnC;KACF;IACD,CAAA;GACE"}
|