@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.
Files changed (98) hide show
  1. package/dist/ggnomad/components/AvailabilityPanel.d.ts +15 -0
  2. package/dist/ggnomad/components/AvailabilityPanel.d.ts.map +1 -0
  3. package/dist/ggnomad/components/AvailabilityPanel.js +91 -0
  4. package/dist/ggnomad/components/AvailabilityPanel.js.map +1 -0
  5. package/dist/ggnomad/components/BookingPanel.d.ts +1 -3
  6. package/dist/ggnomad/components/BookingPanel.d.ts.map +1 -1
  7. package/dist/ggnomad/components/BookingPanel.js +91 -82
  8. package/dist/ggnomad/components/BookingPanel.js.map +1 -1
  9. package/dist/ggnomad/components/EcoAccessPanel.d.ts +17 -0
  10. package/dist/ggnomad/components/EcoAccessPanel.d.ts.map +1 -0
  11. package/dist/ggnomad/components/EcoAccessPanel.js +68 -0
  12. package/dist/ggnomad/components/EcoAccessPanel.js.map +1 -0
  13. package/dist/ggnomad/components/FactGrid.d.ts +18 -0
  14. package/dist/ggnomad/components/FactGrid.d.ts.map +1 -0
  15. package/dist/ggnomad/components/FactGrid.js +29 -0
  16. package/dist/ggnomad/components/FactGrid.js.map +1 -0
  17. package/dist/ggnomad/components/GroupTripPanel.d.ts +22 -0
  18. package/dist/ggnomad/components/GroupTripPanel.d.ts.map +1 -0
  19. package/dist/ggnomad/components/GroupTripPanel.js +350 -0
  20. package/dist/ggnomad/components/GroupTripPanel.js.map +1 -0
  21. package/dist/ggnomad/components/ListingFilters.d.ts +29 -0
  22. package/dist/ggnomad/components/ListingFilters.d.ts.map +1 -0
  23. package/dist/ggnomad/components/ListingFilters.js +164 -0
  24. package/dist/ggnomad/components/ListingFilters.js.map +1 -0
  25. package/dist/ggnomad/components/PhotoGallery.d.ts +15 -0
  26. package/dist/ggnomad/components/PhotoGallery.d.ts.map +1 -0
  27. package/dist/ggnomad/components/PhotoGallery.js +54 -0
  28. package/dist/ggnomad/components/PhotoGallery.js.map +1 -0
  29. package/dist/ggnomad/components/ProviderCard.d.ts +19 -0
  30. package/dist/ggnomad/components/ProviderCard.d.ts.map +1 -0
  31. package/dist/ggnomad/components/ProviderCard.js +66 -0
  32. package/dist/ggnomad/components/ProviderCard.js.map +1 -0
  33. package/dist/ggnomad/components/RatingSummary.d.ts +14 -0
  34. package/dist/ggnomad/components/RatingSummary.d.ts.map +1 -0
  35. package/dist/ggnomad/components/RatingSummary.js +32 -0
  36. package/dist/ggnomad/components/RatingSummary.js.map +1 -0
  37. package/dist/ggnomad/components/TagChips.d.ts +16 -0
  38. package/dist/ggnomad/components/TagChips.d.ts.map +1 -0
  39. package/dist/ggnomad/components/TagChips.js +20 -0
  40. package/dist/ggnomad/components/TagChips.js.map +1 -0
  41. package/dist/ggnomad/components/index.d.ts +13 -0
  42. package/dist/ggnomad/components/index.d.ts.map +1 -1
  43. package/dist/ggnomad/components/index.js +9 -0
  44. package/dist/ggnomad/graphql.d.ts +10 -0
  45. package/dist/ggnomad/graphql.d.ts.map +1 -1
  46. package/dist/ggnomad/graphql.js +308 -20
  47. package/dist/ggnomad/graphql.js.map +1 -1
  48. package/dist/ggnomad/pages/ActivityDetailsPage.d.ts.map +1 -1
  49. package/dist/ggnomad/pages/ActivityDetailsPage.js +174 -86
  50. package/dist/ggnomad/pages/ActivityDetailsPage.js.map +1 -1
  51. package/dist/ggnomad/pages/AnalyticsPage.d.ts.map +1 -1
  52. package/dist/ggnomad/pages/AnalyticsPage.js +109 -77
  53. package/dist/ggnomad/pages/AnalyticsPage.js.map +1 -1
  54. package/dist/ggnomad/pages/BookingsPage.d.ts.map +1 -1
  55. package/dist/ggnomad/pages/BookingsPage.js +188 -137
  56. package/dist/ggnomad/pages/BookingsPage.js.map +1 -1
  57. package/dist/ggnomad/pages/DashboardPage.d.ts.map +1 -1
  58. package/dist/ggnomad/pages/DashboardPage.js +245 -128
  59. package/dist/ggnomad/pages/DashboardPage.js.map +1 -1
  60. package/dist/ggnomad/pages/EntertainmentPage.d.ts.map +1 -1
  61. package/dist/ggnomad/pages/EntertainmentPage.js +115 -53
  62. package/dist/ggnomad/pages/EntertainmentPage.js.map +1 -1
  63. package/dist/ggnomad/pages/EventDetailsPage.d.ts.map +1 -1
  64. package/dist/ggnomad/pages/EventDetailsPage.js +170 -87
  65. package/dist/ggnomad/pages/EventDetailsPage.js.map +1 -1
  66. package/dist/ggnomad/pages/FavoritesPage.d.ts.map +1 -1
  67. package/dist/ggnomad/pages/FavoritesPage.js +201 -84
  68. package/dist/ggnomad/pages/FavoritesPage.js.map +1 -1
  69. package/dist/ggnomad/pages/HospitalityPage.d.ts.map +1 -1
  70. package/dist/ggnomad/pages/HospitalityPage.js +99 -56
  71. package/dist/ggnomad/pages/HospitalityPage.js.map +1 -1
  72. package/dist/ggnomad/pages/PropertyDetailsPage.d.ts.map +1 -1
  73. package/dist/ggnomad/pages/PropertyDetailsPage.js +177 -93
  74. package/dist/ggnomad/pages/PropertyDetailsPage.js.map +1 -1
  75. package/dist/ggnomad/pages/ProviderPage.d.ts.map +1 -1
  76. package/dist/ggnomad/pages/ProviderPage.js +112 -63
  77. package/dist/ggnomad/pages/ProviderPage.js.map +1 -1
  78. package/dist/ggnomad/pages/SearchPage.d.ts.map +1 -1
  79. package/dist/ggnomad/pages/SearchPage.js +236 -65
  80. package/dist/ggnomad/pages/SearchPage.js.map +1 -1
  81. package/dist/ggnomad/pages/TourDetailsPage.d.ts.map +1 -1
  82. package/dist/ggnomad/pages/TourDetailsPage.js +171 -86
  83. package/dist/ggnomad/pages/TourDetailsPage.js.map +1 -1
  84. package/dist/ggnomad/pages/TourismPage.d.ts.map +1 -1
  85. package/dist/ggnomad/pages/TourismPage.js +108 -54
  86. package/dist/ggnomad/pages/TourismPage.js.map +1 -1
  87. package/dist/ggnomad/pages/TravelPage.d.ts.map +1 -1
  88. package/dist/ggnomad/pages/TravelPage.js +406 -43
  89. package/dist/ggnomad/pages/TravelPage.js.map +1 -1
  90. package/dist/ggnomad/pages/TripPlanDetailPage.d.ts.map +1 -1
  91. package/dist/ggnomad/pages/TripPlanDetailPage.js +93 -70
  92. package/dist/ggnomad/pages/TripPlanDetailPage.js.map +1 -1
  93. package/dist/ggnomad/utils/format.d.ts +47 -0
  94. package/dist/ggnomad/utils/format.d.ts.map +1 -0
  95. package/dist/ggnomad/utils/format.js +125 -0
  96. package/dist/ggnomad/utils/format.js.map +1 -0
  97. package/dist/stories/BookingPanel.stories.d.ts.map +1 -1
  98. package/package.json +1 -1
@@ -1,61 +1,123 @@
1
1
  import { GGNOMAD_EVENTS_QUERY as e } from "../graphql.js";
2
- import { PageShell as t } from "./PageShell.js";
3
- import { EntityCard as n } from "../components/EntityCard.js";
4
- import { LoadMoreButton as r } from "../components/LoadMoreButton.js";
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 i } from "react";
7
- import { Ticket as a } from "lucide-react";
8
- import { useI18n as o } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
9
- import { useQuery as s } from "@apollo/client/react";
10
- import { GlassCard as c, IllustratedEmptyState as l, PagePurpose as u } from "@burdenoff/fe-libs/ui";
11
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
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 p() {
14
- let { t: p } = o(), [m, h] = i(12), { data: g } = s(e, { variables: {
15
- limit: m,
16
- offset: 0
17
- } }), _ = g?.ggnomadEvents ?? [];
18
- return /* @__PURE__ */ f(t, {
19
- title: p("ggnomad.entertainment.title", "Entertainment"),
20
- titleAccent: p("ggnomad.entertainment.title.accent", "Entertainment"),
21
- subtitle: p("ggnomad.entertainment.subtitle", "Events and live experiences"),
22
- children: [/* @__PURE__ */ d(u, {
23
- icon: /* @__PURE__ */ d(a, { className: "size-4" }),
24
- children: p("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.")
25
- }), _.length === 0 ? /* @__PURE__ */ d(l, {
26
- illustration: "empty-data",
27
- title: p("ggnomad.entertainment.emptyTitle", "No events scheduled"),
28
- description: p("ggnomad.entertainment.emptyDescription", "Upcoming events and live experiences will be listed here.")
29
- }) : /* @__PURE__ */ f(c, {
30
- treatment: "glass",
31
- glow: !0,
32
- className: "border-border-seam p-5",
33
- children: [
34
- /* @__PURE__ */ d("h2", {
35
- className: "mb-4 text-lg font-medium tracking-tight text-text-primary",
36
- children: p("ggnomad.entertainment.upcomingEvents", "Upcoming events")
37
- }),
38
- /* @__PURE__ */ d("div", {
39
- className: "grid gap-3 sm:grid-cols-2 xl:grid-cols-3",
40
- children: _.map((e) => /* @__PURE__ */ d(n, {
41
- to: e.id,
42
- image: e.images?.[0],
43
- imageAlt: e.name,
44
- title: e.name,
45
- meta: e.category,
46
- price: `${e.currency} ${Number(e.price).toFixed(2)}`,
47
- footer: new Date(e.startsAt).toLocaleString()
48
- }, e.id))
49
- }),
50
- /* @__PURE__ */ d(r, {
51
- visible: _.length >= m,
52
- onLoadMore: () => h((e) => e + 12)
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 { p as EntertainmentPage };
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 { EntityCard, LoadMoreButton } from '../components';\n\nexport function EntertainmentPage() {\n const { t } = useI18n();\n const [limit, setLimit] = useState(12);\n const { data } = useQuery(\n GGNOMAD_EVENTS_QUERY as TypedDocumentNode<\n {\n ggnomadEvents: Array<{\n id: string;\n name: string;\n category: string;\n startsAt: string;\n price: number;\n currency: string;\n images?: string[];\n }>;\n },\n { limit: number; offset: number }\n >,\n { variables: { limit, offset: 0 } }\n );\n const events = data?.ggnomadEvents ?? [];\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 {events.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={t('ggnomad.entertainment.emptyTitle', 'No events scheduled')}\n description={t(\n 'ggnomad.entertainment.emptyDescription',\n 'Upcoming events and live experiences will be listed here.'\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 <EntityCard\n key={event.id}\n to={event.id}\n image={event.images?.[0]}\n imageAlt={event.name}\n title={event.name}\n meta={event.category}\n price={`${event.currency} ${Number(event.price).toFixed(2)}`}\n footer={new Date(event.startsAt).toLocaleString()}\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":";;;;;;;;;;;;AAWA,SAAgB,IAAoB;CAClC,IAAM,EAAE,SAAM,EAAQ,GAChB,CAAC,GAAO,KAAY,EAAS,EAAE,GAC/B,EAAE,YAAS,EACf,GAcA,EAAE,WAAW;EAAE;EAAO,QAAQ;CAAE,EAAE,CACpC,GACM,IAAS,GAAM,iBAAiB,CAAC;CAEvC,OACE,kBAAC,GAAD;EACE,OAAO,EAAE,+BAA+B,eAAe;EACvD,aAAa,EAAE,sCAAsC,eAAe;EACpE,UAAU,EAAE,kCAAkC,6BAA6B;YAH7E,CAKE,kBAAC,GAAD;GAAa,MAAM,kBAAC,GAAD,EAAQ,WAAU,SAAU,CAAA;aAC5C,EACC,iCACA,oKACF;EACW,CAAA,GAEZ,EAAO,WAAW,IACjB,kBAAC,GAAD;GACE,cAAa;GACb,OAAO,EAAE,oCAAoC,qBAAqB;GAClE,aAAa,EACX,0CACA,2DACF;EACD,CAAA,IAED,kBAAC,GAAD;GAAW,WAAU;GAAQ,MAAA;GAAK,WAAU;aAA5C;IACE,kBAAC,MAAD;KAAI,WAAU;eACX,EAAE,wCAAwC,iBAAiB;IAC1D,CAAA;IACJ,kBAAC,OAAD;KAAK,WAAU;eACZ,EAAO,KAAK,MACX,kBAAC,GAAD;MAEE,IAAI,EAAM;MACV,OAAO,EAAM,SAAS;MACtB,UAAU,EAAM;MAChB,OAAO,EAAM;MACb,MAAM,EAAM;MACZ,OAAO,GAAG,EAAM,SAAS,GAAG,OAAO,EAAM,KAAK,EAAE,QAAQ,CAAC;MACzD,QAAQ,IAAI,KAAK,EAAM,QAAQ,EAAE,eAAe;KACjD,GARM,EAAM,EAQZ,CACF;IACE,CAAA;IACL,kBAAC,GAAD;KACE,SAAS,EAAO,UAAU;KAC1B,kBAAkB,GAAU,MAAM,IAAI,EAAE;IACzC,CAAA;GACQ;IAEJ;;AAEf"}
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":"AAqBA,wBAAgB,gBAAgB,gCAyJ/B"}
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 { PageShell as t } from "./PageShell.js";
3
- import { SectionCard as n } from "../components/SectionCard.js";
4
- import { DetailRow as r } from "../components/DetailRow.js";
5
- import { DetailHero as i } from "../components/DetailHero.js";
6
- import { useGGNomad as a } from "../providers/GGNomadProvider.js";
7
- import { joinPath as o } from "../utils/navigation.js";
8
- import { BookingPanel as s } from "../components/BookingPanel.js";
9
- import { ReviewsSection as c } from "../components/ReviewsSection.js";
10
- import { ListingEditDialog as l } from "../components/ListingEditDialog.js";
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 u } from "react";
13
- import { Mic2 as d, Pencil as f, Ticket as p } from "lucide-react";
14
- import { useI18n as m } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
15
- import { useNavigate as h, useParams as g } from "react-router";
16
- import { useQuery as _ } from "@apollo/client/react";
17
- import { GlassCard as v, IllustratedEmptyState as y, NextSteps as b, PagePurpose as x } from "@burdenoff/fe-libs/ui";
18
- import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
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 T() {
21
- let { t: T } = m(), E = h(), { basePath: D = "/" } = a(), { id: O = "" } = g(), [k, A] = u(!1), { data: j, refetch: M } = _(e, {
22
- variables: { id: O },
23
- skip: !O
24
- }), N = j?.ggnomadEvent;
25
- return /* @__PURE__ */ C(t, {
26
- title: N?.name ?? T("ggnomad.event.fallbackTitle", "Event details"),
27
- subtitle: T("ggnomad.event.subtitle", "Live event details, venue and lineup"),
28
- children: N ? /* @__PURE__ */ w(S, { children: [
29
- /* @__PURE__ */ C(i, {
30
- image: N.images?.[0],
31
- alt: N.name
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__ */ C(x, {
34
- icon: /* @__PURE__ */ C(p, { className: "size-4" }),
35
- children: T("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.")
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__ */ C(b, {
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: T("ggnomad.event.next.browse", "See more events"),
42
- description: T("ggnomad.event.next.browseDesc", "Return to Entertainment for other live experiences."),
43
- icon: /* @__PURE__ */ C(p, { className: "size-4" }),
44
- onClick: () => E(o(D, "entertainment"))
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__ */ w("div", {
103
+ /* @__PURE__ */ z("div", {
48
104
  className: "grid gap-4 lg:grid-cols-3",
49
- children: [/* @__PURE__ */ w("div", {
105
+ children: [/* @__PURE__ */ z("div", {
50
106
  className: "lg:col-span-2 space-y-4",
51
107
  children: [
52
- /* @__PURE__ */ w(v, {
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__ */ w("div", {
119
+ children: [/* @__PURE__ */ z("div", {
57
120
  className: "mb-4 flex items-center justify-between gap-3",
58
- children: [/* @__PURE__ */ C("h2", {
121
+ children: [/* @__PURE__ */ R("h2", {
59
122
  className: "text-lg font-medium tracking-tight text-text-primary",
60
- children: T("ggnomad.event.details", "Details")
61
- }), /* @__PURE__ */ C("button", {
62
- onClick: () => A(!0),
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": T("ggnomad.event.editListing", "Edit listing"),
65
- title: T("ggnomad.event.editListing", "Edit listing"),
66
- children: /* @__PURE__ */ C(f, { className: "size-4" })
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__ */ w("dl", {
131
+ }), /* @__PURE__ */ z("dl", {
69
132
  className: "space-y-2 text-sm",
70
133
  children: [
71
- /* @__PURE__ */ C(r, {
72
- label: T("ggnomad.event.category", "Category"),
73
- value: N.category
134
+ /* @__PURE__ */ R(c, {
135
+ label: B("ggnomad.event.category", "Category"),
136
+ value: n(J.category)
74
137
  }),
75
- /* @__PURE__ */ C(r, {
76
- label: T("ggnomad.event.starts", "Starts"),
77
- value: new Date(N.startsAt).toLocaleString()
138
+ /* @__PURE__ */ R(c, {
139
+ label: B("ggnomad.event.starts", "Starts"),
140
+ value: t(J.startsAt) ?? J.startsAt
78
141
  }),
79
- /* @__PURE__ */ C(r, {
80
- label: T("ggnomad.event.ends", "Ends"),
81
- value: N.endsAt ? new Date(N.endsAt).toLocaleString() : T("ggnomad.event.na", "N/A")
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__ */ C(r, {
84
- label: T("ggnomad.event.price", "Price"),
85
- value: `${N.currency} ${Number(N.price).toFixed(2)}`
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__ */ C(n, {
91
- title: T("ggnomad.event.performers", "Performers"),
92
- children: /* @__PURE__ */ C("ul", {
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: (N.performers ?? []).map((e) => /* @__PURE__ */ w("li", {
167
+ children: J.performers.map((e) => /* @__PURE__ */ z("li", {
95
168
  className: "flex items-start gap-2 text-text-primary",
96
- children: [/* @__PURE__ */ C(d, {
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__ */ C(c, {
185
+ J.provider ? /* @__PURE__ */ R(y, { provider: J.provider }) : null,
186
+ /* @__PURE__ */ R(p, {
104
187
  targetType: "EVENT",
105
- targetId: N.id ?? O
188
+ targetId: J.id ?? U
106
189
  })
107
190
  ]
108
- }), /* @__PURE__ */ C("div", { children: /* @__PURE__ */ C(s, {
191
+ }), /* @__PURE__ */ R("div", { children: /* @__PURE__ */ R(f, {
109
192
  bookingType: "EVENT",
110
- itemId: N.id ?? O,
111
- itemName: N.name,
112
- unitPrice: N.price ?? 0,
113
- currency: N.currency ?? "USD",
114
- eventDate: N.startsAt
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__ */ C(l, {
118
- open: k,
119
- onOpenChange: A,
200
+ /* @__PURE__ */ R(m, {
201
+ open: W,
202
+ onOpenChange: G,
120
203
  targetType: "EVENT",
121
- id: N.id ?? O,
204
+ id: J.id ?? U,
122
205
  initial: {
123
- name: N.name,
124
- description: N.description,
125
- price: N.price,
126
- status: N.status,
127
- images: N.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: () => M()
212
+ onSaved: () => q()
130
213
  })
131
- ] }) : /* @__PURE__ */ C(y, {
214
+ ] }) : /* @__PURE__ */ R(P, {
132
215
  illustration: "empty-data",
133
- title: T("ggnomad.event.notFoundTitle", "No event found"),
134
- description: T("ggnomad.event.notFoundDescription", "This event is unavailable or may have been removed.")
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 { T as EventDetailsPage };
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":"AAyBA,wBAAgB,aAAa,gCAoL5B"}
1
+ {"version":3,"file":"FavoritesPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/FavoritesPage.tsx"],"names":[],"mappings":"AAiDA,wBAAgB,aAAa,gCA+X5B"}