@burdenoff/microfe-ggnomad 2026.825.1 → 2026.827.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ggnomad/components/AvailabilityPanel.d.ts +15 -0
- package/dist/ggnomad/components/AvailabilityPanel.d.ts.map +1 -0
- package/dist/ggnomad/components/AvailabilityPanel.js +91 -0
- package/dist/ggnomad/components/AvailabilityPanel.js.map +1 -0
- package/dist/ggnomad/components/BookingPanel.d.ts +1 -3
- package/dist/ggnomad/components/BookingPanel.d.ts.map +1 -1
- package/dist/ggnomad/components/BookingPanel.js +91 -82
- package/dist/ggnomad/components/BookingPanel.js.map +1 -1
- package/dist/ggnomad/components/EcoAccessPanel.d.ts +17 -0
- package/dist/ggnomad/components/EcoAccessPanel.d.ts.map +1 -0
- package/dist/ggnomad/components/EcoAccessPanel.js +68 -0
- package/dist/ggnomad/components/EcoAccessPanel.js.map +1 -0
- package/dist/ggnomad/components/FactGrid.d.ts +18 -0
- package/dist/ggnomad/components/FactGrid.d.ts.map +1 -0
- package/dist/ggnomad/components/FactGrid.js +29 -0
- package/dist/ggnomad/components/FactGrid.js.map +1 -0
- package/dist/ggnomad/components/GroupTripPanel.d.ts +22 -0
- package/dist/ggnomad/components/GroupTripPanel.d.ts.map +1 -0
- package/dist/ggnomad/components/GroupTripPanel.js +350 -0
- package/dist/ggnomad/components/GroupTripPanel.js.map +1 -0
- package/dist/ggnomad/components/ListingFilters.d.ts +29 -0
- package/dist/ggnomad/components/ListingFilters.d.ts.map +1 -0
- package/dist/ggnomad/components/ListingFilters.js +164 -0
- package/dist/ggnomad/components/ListingFilters.js.map +1 -0
- package/dist/ggnomad/components/PhotoGallery.d.ts +15 -0
- package/dist/ggnomad/components/PhotoGallery.d.ts.map +1 -0
- package/dist/ggnomad/components/PhotoGallery.js +54 -0
- package/dist/ggnomad/components/PhotoGallery.js.map +1 -0
- package/dist/ggnomad/components/ProviderCard.d.ts +19 -0
- package/dist/ggnomad/components/ProviderCard.d.ts.map +1 -0
- package/dist/ggnomad/components/ProviderCard.js +66 -0
- package/dist/ggnomad/components/ProviderCard.js.map +1 -0
- package/dist/ggnomad/components/RatingSummary.d.ts +14 -0
- package/dist/ggnomad/components/RatingSummary.d.ts.map +1 -0
- package/dist/ggnomad/components/RatingSummary.js +32 -0
- package/dist/ggnomad/components/RatingSummary.js.map +1 -0
- package/dist/ggnomad/components/TagChips.d.ts +16 -0
- package/dist/ggnomad/components/TagChips.d.ts.map +1 -0
- package/dist/ggnomad/components/TagChips.js +20 -0
- package/dist/ggnomad/components/TagChips.js.map +1 -0
- package/dist/ggnomad/components/index.d.ts +13 -0
- package/dist/ggnomad/components/index.d.ts.map +1 -1
- package/dist/ggnomad/components/index.js +9 -0
- package/dist/ggnomad/graphql.d.ts +10 -0
- package/dist/ggnomad/graphql.d.ts.map +1 -1
- package/dist/ggnomad/graphql.js +308 -20
- package/dist/ggnomad/graphql.js.map +1 -1
- package/dist/ggnomad/pages/ActivityDetailsPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/ActivityDetailsPage.js +174 -86
- package/dist/ggnomad/pages/ActivityDetailsPage.js.map +1 -1
- package/dist/ggnomad/pages/AnalyticsPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/AnalyticsPage.js +109 -77
- package/dist/ggnomad/pages/AnalyticsPage.js.map +1 -1
- package/dist/ggnomad/pages/BookingsPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/BookingsPage.js +188 -137
- package/dist/ggnomad/pages/BookingsPage.js.map +1 -1
- package/dist/ggnomad/pages/DashboardPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/DashboardPage.js +245 -128
- package/dist/ggnomad/pages/DashboardPage.js.map +1 -1
- package/dist/ggnomad/pages/EntertainmentPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/EntertainmentPage.js +115 -53
- package/dist/ggnomad/pages/EntertainmentPage.js.map +1 -1
- package/dist/ggnomad/pages/EventDetailsPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/EventDetailsPage.js +170 -87
- package/dist/ggnomad/pages/EventDetailsPage.js.map +1 -1
- package/dist/ggnomad/pages/FavoritesPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/FavoritesPage.js +201 -84
- package/dist/ggnomad/pages/FavoritesPage.js.map +1 -1
- package/dist/ggnomad/pages/HospitalityPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/HospitalityPage.js +99 -56
- package/dist/ggnomad/pages/HospitalityPage.js.map +1 -1
- package/dist/ggnomad/pages/PropertyDetailsPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/PropertyDetailsPage.js +177 -93
- package/dist/ggnomad/pages/PropertyDetailsPage.js.map +1 -1
- package/dist/ggnomad/pages/ProviderPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/ProviderPage.js +112 -63
- package/dist/ggnomad/pages/ProviderPage.js.map +1 -1
- package/dist/ggnomad/pages/SearchPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/SearchPage.js +236 -65
- package/dist/ggnomad/pages/SearchPage.js.map +1 -1
- package/dist/ggnomad/pages/TourDetailsPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/TourDetailsPage.js +171 -86
- package/dist/ggnomad/pages/TourDetailsPage.js.map +1 -1
- package/dist/ggnomad/pages/TourismPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/TourismPage.js +108 -54
- package/dist/ggnomad/pages/TourismPage.js.map +1 -1
- package/dist/ggnomad/pages/TravelPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/TravelPage.js +406 -43
- package/dist/ggnomad/pages/TravelPage.js.map +1 -1
- package/dist/ggnomad/pages/TripPlanDetailPage.d.ts.map +1 -1
- package/dist/ggnomad/pages/TripPlanDetailPage.js +93 -70
- package/dist/ggnomad/pages/TripPlanDetailPage.js.map +1 -1
- package/dist/ggnomad/utils/format.d.ts +47 -0
- package/dist/ggnomad/utils/format.d.ts.map +1 -0
- package/dist/ggnomad/utils/format.js +125 -0
- package/dist/ggnomad/utils/format.js.map +1 -0
- package/dist/stories/BookingPanel.stories.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,61 +1,123 @@
|
|
|
1
1
|
import { GGNOMAD_EVENTS_QUERY as e } from "../graphql.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { formatDateTime as t, humanizeEnum as n, jsonLabel as r } from "../utils/format.js";
|
|
3
|
+
import { PageShell as i } from "./PageShell.js";
|
|
4
|
+
import { EntityCard as a } from "../components/EntityCard.js";
|
|
5
|
+
import { LoadMoreButton as o } from "../components/LoadMoreButton.js";
|
|
6
|
+
import { RatingSummary as s } from "../components/RatingSummary.js";
|
|
7
|
+
import { EMPTY_LISTING_FILTERS as c, ListingFilters as l, hasActiveListingFilters as u } from "../components/ListingFilters.js";
|
|
5
8
|
import "../components/index.js";
|
|
6
|
-
import { useState as
|
|
7
|
-
import { Ticket as
|
|
8
|
-
import { useI18n as
|
|
9
|
-
import { useQuery as
|
|
10
|
-
import { GlassCard as
|
|
11
|
-
import { jsx as
|
|
9
|
+
import { useState as d } from "react";
|
|
10
|
+
import { CalendarClock as f, Leaf as p, MapPin as m, Ticket as h, Zap as g } from "lucide-react";
|
|
11
|
+
import { useI18n as _ } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
12
|
+
import { useQuery as v } from "@apollo/client/react";
|
|
13
|
+
import { GlassCard as y, IllustratedEmptyState as b, PagePurpose as x } from "@burdenoff/fe-libs/ui";
|
|
14
|
+
import { jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
12
15
|
//#region src/ggnomad/pages/EntertainmentPage.tsx
|
|
13
|
-
function
|
|
14
|
-
let { t:
|
|
15
|
-
limit:
|
|
16
|
-
offset: 0
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
16
|
+
function w() {
|
|
17
|
+
let { t: w } = _(), [T, E] = d(12), [D, O] = d(c), { data: k, loading: A, error: j } = v(e, { variables: {
|
|
18
|
+
limit: T,
|
|
19
|
+
offset: 0,
|
|
20
|
+
status: D.status,
|
|
21
|
+
minSustainabilityScore: D.minSustainabilityScore,
|
|
22
|
+
hasAccessibilityFeatures: D.accessibilityFeatures.length > 0 ? D.accessibilityFeatures : void 0
|
|
23
|
+
} }), M = k?.ggnomadEvents ?? [], N = u(D);
|
|
24
|
+
return /* @__PURE__ */ C(i, {
|
|
25
|
+
title: w("ggnomad.entertainment.title", "Entertainment"),
|
|
26
|
+
titleAccent: w("ggnomad.entertainment.title.accent", "Entertainment"),
|
|
27
|
+
subtitle: w("ggnomad.entertainment.subtitle", "Events and live experiences"),
|
|
28
|
+
children: [
|
|
29
|
+
/* @__PURE__ */ S(x, {
|
|
30
|
+
icon: /* @__PURE__ */ S(h, { className: "size-4" }),
|
|
31
|
+
children: w("ggnomad.entertainment.purpose", "Find live events and experiences — concerts, shows and local happenings. Open an event to see its lineup, venue and timing, then book tickets for your trip dates.")
|
|
32
|
+
}),
|
|
33
|
+
/* @__PURE__ */ S(l, {
|
|
34
|
+
idPrefix: "ggnomad-entertainment",
|
|
35
|
+
value: D,
|
|
36
|
+
onChange: (e) => {
|
|
37
|
+
E(12), O(e);
|
|
38
|
+
},
|
|
39
|
+
resultCount: M.length
|
|
40
|
+
}),
|
|
41
|
+
j ? /* @__PURE__ */ S(b, {
|
|
42
|
+
illustration: "empty-data",
|
|
43
|
+
title: w("ggnomad.entertainment.errorTitle", "Could not load events"),
|
|
44
|
+
description: j.message
|
|
45
|
+
}) : M.length === 0 ? /* @__PURE__ */ S(b, {
|
|
46
|
+
illustration: "empty-data",
|
|
47
|
+
title: A ? w("ggnomad.entertainment.loadingTitle", "Loading events…") : N ? w("ggnomad.entertainment.noMatchTitle", "No events match these filters") : w("ggnomad.entertainment.emptyTitle", "No events scheduled"),
|
|
48
|
+
description: A ? w("ggnomad.entertainment.loadingDescription", "Fetching the live event catalogue.") : N ? w("ggnomad.entertainment.noMatchDescription", "Try clearing a filter — status, sustainability score and accessibility all narrow the catalogue.") : w("ggnomad.entertainment.emptyDescription", "Upcoming events and live experiences will be listed here.")
|
|
49
|
+
}) : /* @__PURE__ */ C(y, {
|
|
50
|
+
treatment: "glass",
|
|
51
|
+
glow: !0,
|
|
52
|
+
className: "border-border-seam p-5",
|
|
53
|
+
children: [
|
|
54
|
+
/* @__PURE__ */ S("h2", {
|
|
55
|
+
className: "mb-4 text-lg font-medium tracking-tight text-text-primary",
|
|
56
|
+
children: w("ggnomad.entertainment.upcomingEvents", "Upcoming events")
|
|
57
|
+
}),
|
|
58
|
+
/* @__PURE__ */ S("div", {
|
|
59
|
+
className: "grid gap-3 sm:grid-cols-2 xl:grid-cols-3",
|
|
60
|
+
children: M.map((e) => {
|
|
61
|
+
let i = r(e.venue);
|
|
62
|
+
return /* @__PURE__ */ S(a, {
|
|
63
|
+
to: e.id,
|
|
64
|
+
image: e.images?.[0],
|
|
65
|
+
imageAlt: e.name,
|
|
66
|
+
title: e.name,
|
|
67
|
+
meta: n(e.category),
|
|
68
|
+
badge: e.instantBook ? /* @__PURE__ */ C("span", {
|
|
69
|
+
className: "inline-flex items-center gap-1 rounded-full bg-status-success-bg-subtle px-2.5 py-0.5 text-xs font-medium text-status-success-text",
|
|
70
|
+
children: [/* @__PURE__ */ S(g, {
|
|
71
|
+
className: "size-3",
|
|
72
|
+
"aria-hidden": "true"
|
|
73
|
+
}), w("ggnomad.listing.instantBook", "Instant book")]
|
|
74
|
+
}) : null,
|
|
75
|
+
price: `${e.currency} ${Number(e.price).toFixed(2)}`,
|
|
76
|
+
footer: /* @__PURE__ */ C("div", {
|
|
77
|
+
className: "space-y-1",
|
|
78
|
+
children: [
|
|
79
|
+
/* @__PURE__ */ C("span", {
|
|
80
|
+
className: "flex items-center gap-1",
|
|
81
|
+
children: [/* @__PURE__ */ S(f, {
|
|
82
|
+
className: "size-3.5",
|
|
83
|
+
"aria-hidden": "true"
|
|
84
|
+
}), t(e.startsAt) ?? e.startsAt]
|
|
85
|
+
}),
|
|
86
|
+
i ? /* @__PURE__ */ C("span", {
|
|
87
|
+
className: "flex items-center gap-1",
|
|
88
|
+
children: [/* @__PURE__ */ S(m, {
|
|
89
|
+
className: "size-3.5",
|
|
90
|
+
"aria-hidden": "true"
|
|
91
|
+
}), i]
|
|
92
|
+
}) : null,
|
|
93
|
+
/* @__PURE__ */ C("span", {
|
|
94
|
+
className: "flex flex-wrap items-center gap-x-3 gap-y-1",
|
|
95
|
+
children: [/* @__PURE__ */ S(s, {
|
|
96
|
+
rating: e.rating,
|
|
97
|
+
reviewCount: e.reviewCount
|
|
98
|
+
}), e.sustainabilityScore > 0 ? /* @__PURE__ */ C("span", {
|
|
99
|
+
className: "inline-flex items-center gap-1 tabular-nums text-status-success-text",
|
|
100
|
+
children: [/* @__PURE__ */ S(p, {
|
|
101
|
+
className: "size-3.5",
|
|
102
|
+
"aria-hidden": "true"
|
|
103
|
+
}), e.sustainabilityScore]
|
|
104
|
+
}) : null]
|
|
105
|
+
})
|
|
106
|
+
]
|
|
107
|
+
})
|
|
108
|
+
}, e.id);
|
|
109
|
+
})
|
|
110
|
+
}),
|
|
111
|
+
/* @__PURE__ */ S(o, {
|
|
112
|
+
visible: M.length >= T,
|
|
113
|
+
onLoadMore: () => E((e) => e + 12)
|
|
114
|
+
})
|
|
115
|
+
]
|
|
116
|
+
})
|
|
117
|
+
]
|
|
56
118
|
});
|
|
57
119
|
}
|
|
58
120
|
//#endregion
|
|
59
|
-
export {
|
|
121
|
+
export { w as EntertainmentPage };
|
|
60
122
|
|
|
61
123
|
//# sourceMappingURL=EntertainmentPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntertainmentPage.js","names":[],"sources":["../../../src/ggnomad/pages/EntertainmentPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useQuery } from '@apollo/client/react';\nimport type { TypedDocumentNode } from '@apollo/client';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Ticket } from 'lucide-react';\nimport { GlassCard, IllustratedEmptyState, PagePurpose } from '@burdenoff/fe-libs/ui';\n\nimport { GGNOMAD_EVENTS_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\nimport {
|
|
1
|
+
{"version":3,"file":"EntertainmentPage.js","names":[],"sources":["../../../src/ggnomad/pages/EntertainmentPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useQuery } from '@apollo/client/react';\nimport type { TypedDocumentNode } from '@apollo/client';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { CalendarClock, Leaf, MapPin, Ticket, Zap } from 'lucide-react';\nimport { GlassCard, IllustratedEmptyState, PagePurpose } from '@burdenoff/fe-libs/ui';\n\nimport { GGNOMAD_EVENTS_QUERY } from '../graphql';\nimport { formatDateTime, humanizeEnum, jsonLabel } from '../utils/format';\nimport { PageShell } from './PageShell';\nimport {\n EntityCard,\n EMPTY_LISTING_FILTERS,\n ListingFilters,\n LoadMoreButton,\n RatingSummary,\n hasActiveListingFilters,\n} from '../components';\nimport type { ListingFilterState } from '../components';\n\ntype EventRow = {\n id: string;\n name: string;\n category: string;\n startsAt: string;\n price: number;\n currency: string;\n rating?: number | null;\n reviewCount: number;\n images?: string[];\n venue?: unknown;\n instantBook: boolean;\n sustainabilityScore: number;\n};\n\nexport function EntertainmentPage() {\n const { t } = useI18n();\n const [limit, setLimit] = useState(12);\n const [filters, setFilters] = useState<ListingFilterState>(EMPTY_LISTING_FILTERS);\n\n const { data, loading, error } = useQuery(\n GGNOMAD_EVENTS_QUERY as TypedDocumentNode<\n { ggnomadEvents: EventRow[] },\n {\n limit: number;\n offset: number;\n status?: string;\n minSustainabilityScore?: number;\n hasAccessibilityFeatures?: string[];\n }\n >,\n {\n variables: {\n limit,\n offset: 0,\n status: filters.status,\n minSustainabilityScore: filters.minSustainabilityScore,\n hasAccessibilityFeatures:\n filters.accessibilityFeatures.length > 0 ? filters.accessibilityFeatures : undefined,\n },\n }\n );\n const events = data?.ggnomadEvents ?? [];\n const filtered = hasActiveListingFilters(filters);\n\n return (\n <PageShell\n title={t('ggnomad.entertainment.title', 'Entertainment')}\n titleAccent={t('ggnomad.entertainment.title.accent', 'Entertainment')}\n subtitle={t('ggnomad.entertainment.subtitle', 'Events and live experiences')}\n >\n <PagePurpose icon={<Ticket className=\"size-4\" />}>\n {t(\n 'ggnomad.entertainment.purpose',\n 'Find live events and experiences — concerts, shows and local happenings. Open an event to see its lineup, venue and timing, then book tickets for your trip dates.'\n )}\n </PagePurpose>\n\n <ListingFilters\n idPrefix=\"ggnomad-entertainment\"\n value={filters}\n onChange={(next) => {\n setLimit(12);\n setFilters(next);\n }}\n resultCount={events.length}\n />\n\n {error ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={t('ggnomad.entertainment.errorTitle', 'Could not load events')}\n description={error.message}\n />\n ) : events.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={\n loading\n ? t('ggnomad.entertainment.loadingTitle', 'Loading events…')\n : filtered\n ? t('ggnomad.entertainment.noMatchTitle', 'No events match these filters')\n : t('ggnomad.entertainment.emptyTitle', 'No events scheduled')\n }\n description={\n loading\n ? t('ggnomad.entertainment.loadingDescription', 'Fetching the live event catalogue.')\n : filtered\n ? t(\n 'ggnomad.entertainment.noMatchDescription',\n 'Try clearing a filter — status, sustainability score and accessibility all narrow the catalogue.'\n )\n : t(\n 'ggnomad.entertainment.emptyDescription',\n 'Upcoming events and live experiences will be listed here.'\n )\n }\n />\n ) : (\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam p-5\">\n <h2 className=\"mb-4 text-lg font-medium tracking-tight text-text-primary\">\n {t('ggnomad.entertainment.upcomingEvents', 'Upcoming events')}\n </h2>\n <div className=\"grid gap-3 sm:grid-cols-2 xl:grid-cols-3\">\n {events.map((event) => {\n const venueLabel = jsonLabel(event.venue);\n return (\n <EntityCard\n key={event.id}\n to={event.id}\n image={event.images?.[0]}\n imageAlt={event.name}\n title={event.name}\n meta={humanizeEnum(event.category)}\n badge={\n event.instantBook ? (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-status-success-bg-subtle px-2.5 py-0.5 text-xs font-medium text-status-success-text\">\n <Zap className=\"size-3\" aria-hidden=\"true\" />\n {t('ggnomad.listing.instantBook', 'Instant book')}\n </span>\n ) : null\n }\n price={`${event.currency} ${Number(event.price).toFixed(2)}`}\n footer={\n <div className=\"space-y-1\">\n <span className=\"flex items-center gap-1\">\n <CalendarClock className=\"size-3.5\" aria-hidden=\"true\" />\n {formatDateTime(event.startsAt) ?? event.startsAt}\n </span>\n {venueLabel ? (\n <span className=\"flex items-center gap-1\">\n <MapPin className=\"size-3.5\" aria-hidden=\"true\" />\n {venueLabel}\n </span>\n ) : null}\n <span className=\"flex flex-wrap items-center gap-x-3 gap-y-1\">\n <RatingSummary rating={event.rating} reviewCount={event.reviewCount} />\n {event.sustainabilityScore > 0 ? (\n <span className=\"inline-flex items-center gap-1 tabular-nums text-status-success-text\">\n <Leaf className=\"size-3.5\" aria-hidden=\"true\" />\n {event.sustainabilityScore}\n </span>\n ) : null}\n </span>\n </div>\n }\n />\n );\n })}\n </div>\n <LoadMoreButton\n visible={events.length >= limit}\n onLoadMore={() => setLimit((l) => l + 12)}\n />\n </GlassCard>\n )}\n </PageShell>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventDetailsPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/EventDetailsPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EventDetailsPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/EventDetailsPage.tsx"],"names":[],"mappings":"AA6DA,wBAAgB,gBAAgB,gCAkO/B"}
|
|
@@ -1,141 +1,224 @@
|
|
|
1
1
|
import { GGNOMAD_EVENT_QUERY as e } from "../graphql.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
2
|
+
import { formatDateTime as t, humanizeEnum as n, jsonFacts as r, jsonLabel as i } from "../utils/format.js";
|
|
3
|
+
import { PageShell as a } from "./PageShell.js";
|
|
4
|
+
import { StatusBadge as o } from "../components/StatusBadge.js";
|
|
5
|
+
import { SectionCard as s } from "../components/SectionCard.js";
|
|
6
|
+
import { DetailRow as c } from "../components/DetailRow.js";
|
|
7
|
+
import { DetailHero as l } from "../components/DetailHero.js";
|
|
8
|
+
import { useGGNomad as u } from "../providers/GGNomadProvider.js";
|
|
9
|
+
import { joinPath as d } from "../utils/navigation.js";
|
|
10
|
+
import { BookingPanel as f } from "../components/BookingPanel.js";
|
|
11
|
+
import { ReviewsSection as p } from "../components/ReviewsSection.js";
|
|
12
|
+
import { ListingEditDialog as m } from "../components/ListingEditDialog.js";
|
|
13
|
+
import { PhotoGallery as h } from "../components/PhotoGallery.js";
|
|
14
|
+
import { FactGrid as g } from "../components/FactGrid.js";
|
|
15
|
+
import { RatingSummary as _ } from "../components/RatingSummary.js";
|
|
16
|
+
import { EcoAccessPanel as v } from "../components/EcoAccessPanel.js";
|
|
17
|
+
import { ProviderCard as y } from "../components/ProviderCard.js";
|
|
18
|
+
import { AvailabilityPanel as b } from "../components/AvailabilityPanel.js";
|
|
11
19
|
import "../components/index.js";
|
|
12
|
-
import { useState as
|
|
13
|
-
import { Mic2 as
|
|
14
|
-
import { useI18n as
|
|
15
|
-
import { useNavigate as
|
|
16
|
-
import { useQuery as
|
|
17
|
-
import { GlassCard as
|
|
18
|
-
import { Fragment as
|
|
20
|
+
import { useState as x } from "react";
|
|
21
|
+
import { CalendarClock as S, CalendarX as C, MapPin as w, Mic2 as T, Pencil as E, Ticket as D, Zap as O } from "lucide-react";
|
|
22
|
+
import { useI18n as k } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
23
|
+
import { useNavigate as A, useParams as j } from "react-router";
|
|
24
|
+
import { useQuery as M } from "@apollo/client/react";
|
|
25
|
+
import { GlassCard as N, IllustratedEmptyState as P, NextSteps as F, PagePurpose as I } from "@burdenoff/fe-libs/ui";
|
|
26
|
+
import { Fragment as L, jsx as R, jsxs as z } from "react/jsx-runtime";
|
|
19
27
|
//#region src/ggnomad/pages/EventDetailsPage.tsx
|
|
20
|
-
function
|
|
21
|
-
let { t:
|
|
22
|
-
variables: { id:
|
|
23
|
-
skip: !
|
|
24
|
-
}),
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
function B() {
|
|
29
|
+
let { t: B } = k(), V = A(), { basePath: H = "/" } = u(), { id: U = "" } = j(), [W, G] = x(!1), { data: K, refetch: q } = M(e, {
|
|
30
|
+
variables: { id: U },
|
|
31
|
+
skip: !U
|
|
32
|
+
}), J = K?.ggnomadEvent, Y = i(J?.venue), X = r(J?.venue), Z = [];
|
|
33
|
+
if (J) {
|
|
34
|
+
let e = t(J.startsAt);
|
|
35
|
+
e && Z.push({
|
|
36
|
+
id: "starts",
|
|
37
|
+
label: B("ggnomad.event.starts", "Starts"),
|
|
38
|
+
value: e,
|
|
39
|
+
icon: /* @__PURE__ */ R(S, {})
|
|
40
|
+
});
|
|
41
|
+
let n = t(J.endsAt);
|
|
42
|
+
n && Z.push({
|
|
43
|
+
id: "ends",
|
|
44
|
+
label: B("ggnomad.event.ends", "Ends"),
|
|
45
|
+
value: n,
|
|
46
|
+
icon: /* @__PURE__ */ R(C, {})
|
|
47
|
+
}), Y && Z.push({
|
|
48
|
+
id: "venue",
|
|
49
|
+
label: B("ggnomad.event.venue", "Venue"),
|
|
50
|
+
value: Y,
|
|
51
|
+
icon: /* @__PURE__ */ R(w, {})
|
|
52
|
+
}), J.performers.length > 0 && Z.push({
|
|
53
|
+
id: "lineup",
|
|
54
|
+
label: B("ggnomad.event.lineupSize", "Line-up"),
|
|
55
|
+
value: B("ggnomad.event.performerCount", "{{n}} performing").replace("{{n}}", String(J.performers.length)),
|
|
56
|
+
icon: /* @__PURE__ */ R(T, {})
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return /* @__PURE__ */ R(a, {
|
|
60
|
+
title: J?.name ?? B("ggnomad.event.fallbackTitle", "Event details"),
|
|
61
|
+
subtitle: B("ggnomad.event.subtitle", "Live event details, venue and lineup"),
|
|
62
|
+
children: J ? /* @__PURE__ */ z(L, { children: [
|
|
63
|
+
J.images.length > 0 ? /* @__PURE__ */ R(h, {
|
|
64
|
+
images: J.images,
|
|
65
|
+
alt: J.name
|
|
66
|
+
}) : /* @__PURE__ */ R(l, { alt: J.name }),
|
|
67
|
+
/* @__PURE__ */ z("div", {
|
|
68
|
+
className: "flex flex-wrap items-center gap-3",
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ R("span", {
|
|
71
|
+
className: "rounded-full border border-border-seam bg-bg-sunken px-3 py-1 text-sm text-text-primary",
|
|
72
|
+
children: n(J.category)
|
|
73
|
+
}),
|
|
74
|
+
J.status ? /* @__PURE__ */ R(o, { status: J.status }) : null,
|
|
75
|
+
/* @__PURE__ */ R(_, {
|
|
76
|
+
rating: J.rating,
|
|
77
|
+
reviewCount: J.reviewCount
|
|
78
|
+
}),
|
|
79
|
+
J.instantBook ? /* @__PURE__ */ z("span", {
|
|
80
|
+
className: "inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle px-3 py-1 text-sm font-medium text-status-success-text",
|
|
81
|
+
children: [/* @__PURE__ */ R(O, {
|
|
82
|
+
className: "size-3.5",
|
|
83
|
+
"aria-hidden": "true"
|
|
84
|
+
}), B("ggnomad.listing.instantBook", "Instant book")]
|
|
85
|
+
}) : null
|
|
86
|
+
]
|
|
32
87
|
}),
|
|
33
|
-
/* @__PURE__ */
|
|
34
|
-
icon: /* @__PURE__ */
|
|
35
|
-
children:
|
|
88
|
+
/* @__PURE__ */ R(I, {
|
|
89
|
+
icon: /* @__PURE__ */ R(D, { className: "size-4" }),
|
|
90
|
+
children: B("ggnomad.event.purpose", "All the details for this live event in one place — category, start and end times, ticket price and the full lineup — so you can decide and book tickets before they sell out.")
|
|
36
91
|
}),
|
|
37
|
-
/* @__PURE__ */
|
|
92
|
+
/* @__PURE__ */ R(g, { facts: Z }),
|
|
93
|
+
/* @__PURE__ */ R(F, {
|
|
38
94
|
storageKey: "ggnomad-event-detail",
|
|
39
95
|
steps: [{
|
|
40
96
|
id: "browse",
|
|
41
|
-
label:
|
|
42
|
-
description:
|
|
43
|
-
icon: /* @__PURE__ */
|
|
44
|
-
onClick: () =>
|
|
97
|
+
label: B("ggnomad.event.next.browse", "See more events"),
|
|
98
|
+
description: B("ggnomad.event.next.browseDesc", "Return to Entertainment for other live experiences."),
|
|
99
|
+
icon: /* @__PURE__ */ R(D, { className: "size-4" }),
|
|
100
|
+
onClick: () => V(d(H, "entertainment"))
|
|
45
101
|
}]
|
|
46
102
|
}),
|
|
47
|
-
/* @__PURE__ */
|
|
103
|
+
/* @__PURE__ */ z("div", {
|
|
48
104
|
className: "grid gap-4 lg:grid-cols-3",
|
|
49
|
-
children: [/* @__PURE__ */
|
|
105
|
+
children: [/* @__PURE__ */ z("div", {
|
|
50
106
|
className: "lg:col-span-2 space-y-4",
|
|
51
107
|
children: [
|
|
52
|
-
/* @__PURE__ */
|
|
108
|
+
J.description ? /* @__PURE__ */ R(s, {
|
|
109
|
+
title: B("ggnomad.event.about", "About this event"),
|
|
110
|
+
children: /* @__PURE__ */ R("p", {
|
|
111
|
+
className: "text-text-primary",
|
|
112
|
+
children: J.description
|
|
113
|
+
})
|
|
114
|
+
}) : null,
|
|
115
|
+
/* @__PURE__ */ z(N, {
|
|
53
116
|
treatment: "glass",
|
|
54
117
|
glow: !0,
|
|
55
118
|
className: "border-border-seam p-5",
|
|
56
|
-
children: [/* @__PURE__ */
|
|
119
|
+
children: [/* @__PURE__ */ z("div", {
|
|
57
120
|
className: "mb-4 flex items-center justify-between gap-3",
|
|
58
|
-
children: [/* @__PURE__ */
|
|
121
|
+
children: [/* @__PURE__ */ R("h2", {
|
|
59
122
|
className: "text-lg font-medium tracking-tight text-text-primary",
|
|
60
|
-
children:
|
|
61
|
-
}), /* @__PURE__ */
|
|
62
|
-
onClick: () =>
|
|
123
|
+
children: B("ggnomad.event.details", "Details")
|
|
124
|
+
}), /* @__PURE__ */ R("button", {
|
|
125
|
+
onClick: () => G(!0),
|
|
63
126
|
className: "rounded-md p-2 text-text-secondary hover:bg-action-primary-bg hover:text-action-primary-text",
|
|
64
|
-
"aria-label":
|
|
65
|
-
title:
|
|
66
|
-
children: /* @__PURE__ */
|
|
127
|
+
"aria-label": B("ggnomad.event.editListing", "Edit listing"),
|
|
128
|
+
title: B("ggnomad.event.editListing", "Edit listing"),
|
|
129
|
+
children: /* @__PURE__ */ R(E, { className: "size-4" })
|
|
67
130
|
})]
|
|
68
|
-
}), /* @__PURE__ */
|
|
131
|
+
}), /* @__PURE__ */ z("dl", {
|
|
69
132
|
className: "space-y-2 text-sm",
|
|
70
133
|
children: [
|
|
71
|
-
/* @__PURE__ */
|
|
72
|
-
label:
|
|
73
|
-
value:
|
|
134
|
+
/* @__PURE__ */ R(c, {
|
|
135
|
+
label: B("ggnomad.event.category", "Category"),
|
|
136
|
+
value: n(J.category)
|
|
74
137
|
}),
|
|
75
|
-
/* @__PURE__ */
|
|
76
|
-
label:
|
|
77
|
-
value:
|
|
138
|
+
/* @__PURE__ */ R(c, {
|
|
139
|
+
label: B("ggnomad.event.starts", "Starts"),
|
|
140
|
+
value: t(J.startsAt) ?? J.startsAt
|
|
78
141
|
}),
|
|
79
|
-
/* @__PURE__ */
|
|
80
|
-
label:
|
|
81
|
-
value:
|
|
142
|
+
/* @__PURE__ */ R(c, {
|
|
143
|
+
label: B("ggnomad.event.ends", "Ends"),
|
|
144
|
+
value: t(J.endsAt) ?? B("ggnomad.event.na", "N/A")
|
|
82
145
|
}),
|
|
83
|
-
/* @__PURE__ */
|
|
84
|
-
label:
|
|
85
|
-
value: `${
|
|
146
|
+
/* @__PURE__ */ R(c, {
|
|
147
|
+
label: B("ggnomad.event.price", "Ticket price"),
|
|
148
|
+
value: `${J.currency} ${Number(J.price).toFixed(2)}`
|
|
86
149
|
})
|
|
87
150
|
]
|
|
88
151
|
})]
|
|
89
152
|
}),
|
|
90
|
-
/* @__PURE__ */
|
|
91
|
-
title:
|
|
92
|
-
children: /* @__PURE__ */
|
|
153
|
+
X.length > 0 ? /* @__PURE__ */ R(s, {
|
|
154
|
+
title: B("ggnomad.event.venueTitle", "Venue"),
|
|
155
|
+
children: /* @__PURE__ */ R("dl", {
|
|
156
|
+
className: "space-y-2 text-sm",
|
|
157
|
+
children: X.map((e) => /* @__PURE__ */ R(c, {
|
|
158
|
+
label: e.label,
|
|
159
|
+
value: e.value
|
|
160
|
+
}, e.key))
|
|
161
|
+
})
|
|
162
|
+
}) : null,
|
|
163
|
+
J.performers.length > 0 ? /* @__PURE__ */ R(s, {
|
|
164
|
+
title: B("ggnomad.event.performers", "Performers"),
|
|
165
|
+
children: /* @__PURE__ */ R("ul", {
|
|
93
166
|
className: "space-y-2 text-sm",
|
|
94
|
-
children:
|
|
167
|
+
children: J.performers.map((e) => /* @__PURE__ */ z("li", {
|
|
95
168
|
className: "flex items-start gap-2 text-text-primary",
|
|
96
|
-
children: [/* @__PURE__ */
|
|
169
|
+
children: [/* @__PURE__ */ R(T, {
|
|
97
170
|
className: "mt-0.5 size-4 flex-shrink-0 text-action-primary-bg",
|
|
98
171
|
"aria-hidden": "true"
|
|
99
172
|
}), e]
|
|
100
173
|
}, e))
|
|
101
174
|
})
|
|
175
|
+
}) : null,
|
|
176
|
+
/* @__PURE__ */ R(v, {
|
|
177
|
+
sustainabilityScore: J.sustainabilityScore,
|
|
178
|
+
sustainabilityPractices: J.sustainabilityPractices,
|
|
179
|
+
accessibilityFeatures: J.accessibilityFeatures
|
|
180
|
+
}),
|
|
181
|
+
/* @__PURE__ */ R(b, {
|
|
182
|
+
listingId: J.id ?? U,
|
|
183
|
+
listingType: "EVENT"
|
|
102
184
|
}),
|
|
103
|
-
/* @__PURE__ */
|
|
185
|
+
J.provider ? /* @__PURE__ */ R(y, { provider: J.provider }) : null,
|
|
186
|
+
/* @__PURE__ */ R(p, {
|
|
104
187
|
targetType: "EVENT",
|
|
105
|
-
targetId:
|
|
188
|
+
targetId: J.id ?? U
|
|
106
189
|
})
|
|
107
190
|
]
|
|
108
|
-
}), /* @__PURE__ */
|
|
191
|
+
}), /* @__PURE__ */ R("div", { children: /* @__PURE__ */ R(f, {
|
|
109
192
|
bookingType: "EVENT",
|
|
110
|
-
itemId:
|
|
111
|
-
itemName:
|
|
112
|
-
unitPrice:
|
|
113
|
-
currency:
|
|
114
|
-
eventDate:
|
|
193
|
+
itemId: J.id ?? U,
|
|
194
|
+
itemName: J.name,
|
|
195
|
+
unitPrice: J.price ?? 0,
|
|
196
|
+
currency: J.currency ?? "USD",
|
|
197
|
+
eventDate: J.startsAt
|
|
115
198
|
}) })]
|
|
116
199
|
}),
|
|
117
|
-
/* @__PURE__ */
|
|
118
|
-
open:
|
|
119
|
-
onOpenChange:
|
|
200
|
+
/* @__PURE__ */ R(m, {
|
|
201
|
+
open: W,
|
|
202
|
+
onOpenChange: G,
|
|
120
203
|
targetType: "EVENT",
|
|
121
|
-
id:
|
|
204
|
+
id: J.id ?? U,
|
|
122
205
|
initial: {
|
|
123
|
-
name:
|
|
124
|
-
description:
|
|
125
|
-
price:
|
|
126
|
-
status:
|
|
127
|
-
images:
|
|
206
|
+
name: J.name,
|
|
207
|
+
description: J.description ?? void 0,
|
|
208
|
+
price: J.price,
|
|
209
|
+
status: J.status,
|
|
210
|
+
images: J.images
|
|
128
211
|
},
|
|
129
|
-
onSaved: () =>
|
|
212
|
+
onSaved: () => q()
|
|
130
213
|
})
|
|
131
|
-
] }) : /* @__PURE__ */
|
|
214
|
+
] }) : /* @__PURE__ */ R(P, {
|
|
132
215
|
illustration: "empty-data",
|
|
133
|
-
title:
|
|
134
|
-
description:
|
|
216
|
+
title: B("ggnomad.event.notFoundTitle", "No event found"),
|
|
217
|
+
description: B("ggnomad.event.notFoundDescription", "This event is unavailable or may have been removed.")
|
|
135
218
|
})
|
|
136
219
|
});
|
|
137
220
|
}
|
|
138
221
|
//#endregion
|
|
139
|
-
export {
|
|
222
|
+
export { B as EventDetailsPage };
|
|
140
223
|
|
|
141
224
|
//# sourceMappingURL=EventDetailsPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventDetailsPage.js","names":[],"sources":["../../../src/ggnomad/pages/EventDetailsPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useQuery } from '@apollo/client/react';\nimport type { TypedDocumentNode } from '@apollo/client';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useNavigate, useParams } from 'react-router';\nimport { Mic2, Pencil, Ticket } from 'lucide-react';\nimport { GlassCard, IllustratedEmptyState, NextSteps, PagePurpose } from '@burdenoff/fe-libs/ui';\n\nimport { GGNOMAD_EVENT_QUERY } from '../graphql';\nimport { useGGNomad } from '../providers/GGNomadProvider';\nimport { joinPath } from '../utils/navigation';\nimport { PageShell } from './PageShell';\nimport {\n DetailRow,\n SectionCard,\n DetailHero,\n BookingPanel,\n ReviewsSection,\n ListingEditDialog,\n} from '../components';\n\nexport function EventDetailsPage() {\n const { t } = useI18n();\n const navigate = useNavigate();\n const { basePath = '/' } = useGGNomad();\n const { id = '' } = useParams();\n const [editDialogOpen, setEditDialogOpen] = useState(false);\n const { data, refetch } = useQuery(\n GGNOMAD_EVENT_QUERY as TypedDocumentNode<\n {\n ggnomadEvent: {\n id: string;\n name: string;\n description?: string;\n category: string;\n startsAt: string;\n endsAt?: string;\n currency: string;\n price: number;\n status?: string;\n performers: string[];\n images?: string[];\n } | null;\n },\n { id: string }\n >,\n { variables: { id }, skip: !id }\n );\n const event = data?.ggnomadEvent;\n\n return (\n <PageShell\n title={event?.name ?? t('ggnomad.event.fallbackTitle', 'Event details')}\n subtitle={t('ggnomad.event.subtitle', 'Live event details, venue and lineup')}\n >\n {!event ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={t('ggnomad.event.notFoundTitle', 'No event found')}\n description={t(\n 'ggnomad.event.notFoundDescription',\n 'This event is unavailable or may have been removed.'\n )}\n />\n ) : (\n <>\n <DetailHero image={event.images?.[0]} alt={event.name} />\n <PagePurpose icon={<Ticket className=\"size-4\" />}>\n {t(\n 'ggnomad.event.purpose',\n 'All the details for this live event in one place — category, start and end times, ticket price and the full lineup — so you can decide and book tickets before they sell out.'\n )}\n </PagePurpose>\n\n <NextSteps\n storageKey=\"ggnomad-event-detail\"\n steps={[\n {\n id: 'browse',\n label: t('ggnomad.event.next.browse', 'See more events'),\n description: t(\n 'ggnomad.event.next.browseDesc',\n 'Return to Entertainment for other live experiences.'\n ),\n icon: <Ticket className=\"size-4\" />,\n onClick: () => navigate(joinPath(basePath, 'entertainment')),\n },\n ]}\n />\n\n <div className=\"grid gap-4 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-4\">\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam p-5\">\n <div className=\"mb-4 flex items-center justify-between gap-3\">\n <h2 className=\"text-lg font-medium tracking-tight text-text-primary\">\n {t('ggnomad.event.details', 'Details')}\n </h2>\n <button\n onClick={() => setEditDialogOpen(true)}\n className=\"rounded-md p-2 text-text-secondary hover:bg-action-primary-bg hover:text-action-primary-text\"\n aria-label={t('ggnomad.event.editListing', 'Edit listing')}\n title={t('ggnomad.event.editListing', 'Edit listing')}\n >\n <Pencil className=\"size-4\" />\n </button>\n </div>\n <dl className=\"space-y-2 text-sm\">\n <DetailRow\n label={t('ggnomad.event.category', 'Category')}\n value={event.category}\n />\n <DetailRow\n label={t('ggnomad.event.starts', 'Starts')}\n value={new Date(event.startsAt).toLocaleString()}\n />\n <DetailRow\n label={t('ggnomad.event.ends', 'Ends')}\n value={\n event.endsAt\n ? new Date(event.endsAt).toLocaleString()\n : t('ggnomad.event.na', 'N/A')\n }\n />\n <DetailRow\n label={t('ggnomad.event.price', 'Price')}\n value={`${event.currency} ${Number(event.price).toFixed(2)}`}\n />\n </dl>\n </GlassCard>\n <SectionCard title={t('ggnomad.event.performers', 'Performers')}>\n <ul className=\"space-y-2 text-sm\">\n {(event.performers ?? []).map((performer) => (\n <li key={performer} className=\"flex items-start gap-2 text-text-primary\">\n <Mic2\n className=\"mt-0.5 size-4 flex-shrink-0 text-action-primary-bg\"\n aria-hidden=\"true\"\n />\n {performer}\n </li>\n ))}\n </ul>\n </SectionCard>\n <ReviewsSection targetType=\"EVENT\" targetId={event.id ?? id} />\n </div>\n <div>\n <BookingPanel\n bookingType=\"EVENT\"\n itemId={event.id ?? id}\n itemName={event.name}\n unitPrice={event.price ?? 0}\n currency={event.currency ?? 'USD'}\n eventDate={event.startsAt}\n />\n </div>\n </div>\n\n <ListingEditDialog\n open={editDialogOpen}\n onOpenChange={setEditDialogOpen}\n targetType=\"EVENT\"\n id={event.id ?? id}\n initial={{\n name: event.name,\n description: event.description,\n price: event.price,\n status: event.status,\n images: event.images,\n }}\n onSaved={() => refetch()}\n />\n </>\n )}\n </PageShell>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EventDetailsPage.js","names":[],"sources":["../../../src/ggnomad/pages/EventDetailsPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useQuery } from '@apollo/client/react';\nimport type { TypedDocumentNode } from '@apollo/client';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useNavigate, useParams } from 'react-router';\nimport { CalendarClock, CalendarX, MapPin, Mic2, Pencil, Ticket, Zap } from 'lucide-react';\nimport { GlassCard, IllustratedEmptyState, NextSteps, PagePurpose } from '@burdenoff/fe-libs/ui';\n\nimport { GGNOMAD_EVENT_QUERY } from '../graphql';\nimport { useGGNomad } from '../providers/GGNomadProvider';\nimport { joinPath } from '../utils/navigation';\nimport { formatDateTime, humanizeEnum, jsonFacts, jsonLabel } from '../utils/format';\nimport { PageShell } from './PageShell';\nimport {\n AvailabilityPanel,\n BookingPanel,\n DetailHero,\n DetailRow,\n EcoAccessPanel,\n FactGrid,\n ListingEditDialog,\n PhotoGallery,\n ProviderCard,\n RatingSummary,\n ReviewsSection,\n SectionCard,\n StatusBadge,\n} from '../components';\nimport type { Fact } from '../components';\n\ntype EventDetail = {\n id: string;\n name: string;\n description?: string | null;\n category: string;\n status?: string;\n startsAt: string;\n endsAt?: string | null;\n venue?: unknown;\n currency: string;\n price: number;\n rating?: number | null;\n reviewCount: number;\n performers: string[];\n images: string[];\n instantBook: boolean;\n sustainabilityScore: number;\n sustainabilityPractices: string[];\n accessibilityFeatures: string[];\n provider?: {\n id: string;\n name: string;\n type?: string | null;\n rating?: number | null;\n reviewCount?: number | null;\n listingCount?: number | null;\n contactEmail?: string | null;\n website?: string | null;\n } | null;\n};\n\nexport function EventDetailsPage() {\n const { t } = useI18n();\n const navigate = useNavigate();\n const { basePath = '/' } = useGGNomad();\n const { id = '' } = useParams();\n const [editDialogOpen, setEditDialogOpen] = useState(false);\n const { data, refetch } = useQuery(\n GGNOMAD_EVENT_QUERY as TypedDocumentNode<{ ggnomadEvent: EventDetail | null }, { id: string }>,\n { variables: { id }, skip: !id }\n );\n const event = data?.ggnomadEvent;\n const venueLabel = jsonLabel(event?.venue);\n const venueFacts = jsonFacts(event?.venue);\n\n const facts: Fact[] = [];\n if (event) {\n const starts = formatDateTime(event.startsAt);\n if (starts) {\n facts.push({\n id: 'starts',\n label: t('ggnomad.event.starts', 'Starts'),\n value: starts,\n icon: <CalendarClock />,\n });\n }\n const ends = formatDateTime(event.endsAt);\n if (ends) {\n facts.push({\n id: 'ends',\n label: t('ggnomad.event.ends', 'Ends'),\n value: ends,\n icon: <CalendarX />,\n });\n }\n if (venueLabel) {\n facts.push({\n id: 'venue',\n label: t('ggnomad.event.venue', 'Venue'),\n value: venueLabel,\n icon: <MapPin />,\n });\n }\n if (event.performers.length > 0) {\n facts.push({\n id: 'lineup',\n label: t('ggnomad.event.lineupSize', 'Line-up'),\n value: t('ggnomad.event.performerCount', '{{n}} performing').replace(\n '{{n}}',\n String(event.performers.length)\n ),\n icon: <Mic2 />,\n });\n }\n }\n\n return (\n <PageShell\n title={event?.name ?? t('ggnomad.event.fallbackTitle', 'Event details')}\n subtitle={t('ggnomad.event.subtitle', 'Live event details, venue and lineup')}\n >\n {!event ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={t('ggnomad.event.notFoundTitle', 'No event found')}\n description={t(\n 'ggnomad.event.notFoundDescription',\n 'This event is unavailable or may have been removed.'\n )}\n />\n ) : (\n <>\n {event.images.length > 0 ? (\n <PhotoGallery images={event.images} alt={event.name} />\n ) : (\n <DetailHero alt={event.name} />\n )}\n\n <div className=\"flex flex-wrap items-center gap-3\">\n <span className=\"rounded-full border border-border-seam bg-bg-sunken px-3 py-1 text-sm text-text-primary\">\n {humanizeEnum(event.category)}\n </span>\n {event.status ? <StatusBadge status={event.status} /> : null}\n <RatingSummary rating={event.rating} reviewCount={event.reviewCount} />\n {event.instantBook ? (\n <span className=\"inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle px-3 py-1 text-sm font-medium text-status-success-text\">\n <Zap className=\"size-3.5\" aria-hidden=\"true\" />\n {t('ggnomad.listing.instantBook', 'Instant book')}\n </span>\n ) : null}\n </div>\n\n <PagePurpose icon={<Ticket className=\"size-4\" />}>\n {t(\n 'ggnomad.event.purpose',\n 'All the details for this live event in one place — category, start and end times, ticket price and the full lineup — so you can decide and book tickets before they sell out.'\n )}\n </PagePurpose>\n\n <FactGrid facts={facts} />\n\n <NextSteps\n storageKey=\"ggnomad-event-detail\"\n steps={[\n {\n id: 'browse',\n label: t('ggnomad.event.next.browse', 'See more events'),\n description: t(\n 'ggnomad.event.next.browseDesc',\n 'Return to Entertainment for other live experiences.'\n ),\n icon: <Ticket className=\"size-4\" />,\n onClick: () => navigate(joinPath(basePath, 'entertainment')),\n },\n ]}\n />\n\n <div className=\"grid gap-4 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-4\">\n {event.description ? (\n <SectionCard title={t('ggnomad.event.about', 'About this event')}>\n <p className=\"text-text-primary\">{event.description}</p>\n </SectionCard>\n ) : null}\n\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam p-5\">\n <div className=\"mb-4 flex items-center justify-between gap-3\">\n <h2 className=\"text-lg font-medium tracking-tight text-text-primary\">\n {t('ggnomad.event.details', 'Details')}\n </h2>\n <button\n onClick={() => setEditDialogOpen(true)}\n className=\"rounded-md p-2 text-text-secondary hover:bg-action-primary-bg hover:text-action-primary-text\"\n aria-label={t('ggnomad.event.editListing', 'Edit listing')}\n title={t('ggnomad.event.editListing', 'Edit listing')}\n >\n <Pencil className=\"size-4\" />\n </button>\n </div>\n <dl className=\"space-y-2 text-sm\">\n <DetailRow\n label={t('ggnomad.event.category', 'Category')}\n value={humanizeEnum(event.category)}\n />\n <DetailRow\n label={t('ggnomad.event.starts', 'Starts')}\n value={formatDateTime(event.startsAt) ?? event.startsAt}\n />\n <DetailRow\n label={t('ggnomad.event.ends', 'Ends')}\n value={formatDateTime(event.endsAt) ?? t('ggnomad.event.na', 'N/A')}\n />\n <DetailRow\n label={t('ggnomad.event.price', 'Ticket price')}\n value={`${event.currency} ${Number(event.price).toFixed(2)}`}\n />\n </dl>\n </GlassCard>\n\n {venueFacts.length > 0 ? (\n <SectionCard title={t('ggnomad.event.venueTitle', 'Venue')}>\n <dl className=\"space-y-2 text-sm\">\n {venueFacts.map((fact) => (\n <DetailRow key={fact.key} label={fact.label} value={fact.value} />\n ))}\n </dl>\n </SectionCard>\n ) : null}\n\n {event.performers.length > 0 ? (\n <SectionCard title={t('ggnomad.event.performers', 'Performers')}>\n <ul className=\"space-y-2 text-sm\">\n {event.performers.map((performer) => (\n <li key={performer} className=\"flex items-start gap-2 text-text-primary\">\n <Mic2\n className=\"mt-0.5 size-4 flex-shrink-0 text-action-primary-bg\"\n aria-hidden=\"true\"\n />\n {performer}\n </li>\n ))}\n </ul>\n </SectionCard>\n ) : null}\n\n <EcoAccessPanel\n sustainabilityScore={event.sustainabilityScore}\n sustainabilityPractices={event.sustainabilityPractices}\n accessibilityFeatures={event.accessibilityFeatures}\n />\n\n <AvailabilityPanel listingId={event.id ?? id} listingType=\"EVENT\" />\n\n {event.provider ? <ProviderCard provider={event.provider} /> : null}\n\n <ReviewsSection targetType=\"EVENT\" targetId={event.id ?? id} />\n </div>\n <div>\n <BookingPanel\n bookingType=\"EVENT\"\n itemId={event.id ?? id}\n itemName={event.name}\n unitPrice={event.price ?? 0}\n currency={event.currency ?? 'USD'}\n eventDate={event.startsAt}\n />\n </div>\n </div>\n\n <ListingEditDialog\n open={editDialogOpen}\n onOpenChange={setEditDialogOpen}\n targetType=\"EVENT\"\n id={event.id ?? id}\n initial={{\n name: event.name,\n description: event.description ?? undefined,\n price: event.price,\n status: event.status,\n images: event.images,\n }}\n onSaved={() => refetch()}\n />\n </>\n )}\n </PageShell>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FavoritesPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/FavoritesPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FavoritesPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/FavoritesPage.tsx"],"names":[],"mappings":"AAiDA,wBAAgB,aAAa,gCA+X5B"}
|