@burdenoff/microfe-ggnomad 2026.510.105

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 (102) hide show
  1. package/README.md +12 -0
  2. package/dist/dev/main.d.ts +2 -0
  3. package/dist/dev/main.d.ts.map +1 -0
  4. package/dist/generated/global-operations.d.ts +2 -0
  5. package/dist/generated/global-operations.d.ts.map +1 -0
  6. package/dist/generated/global-types.d.ts +20716 -0
  7. package/dist/generated/global-types.d.ts.map +1 -0
  8. package/dist/generated/wspace-operations.d.ts +2 -0
  9. package/dist/generated/wspace-operations.d.ts.map +1 -0
  10. package/dist/generated/wspace-types.d.ts +53363 -0
  11. package/dist/generated/wspace-types.d.ts.map +1 -0
  12. package/dist/ggnomad/GGNomadRoot.d.ts +5 -0
  13. package/dist/ggnomad/GGNomadRoot.d.ts.map +1 -0
  14. package/dist/ggnomad/GGNomadRoot.js +118 -0
  15. package/dist/ggnomad/GGNomadRoot.js.map +1 -0
  16. package/dist/ggnomad/GGNomadRoutes.d.ts +2 -0
  17. package/dist/ggnomad/GGNomadRoutes.d.ts.map +1 -0
  18. package/dist/ggnomad/GGNomadRoutes.js +87 -0
  19. package/dist/ggnomad/GGNomadRoutes.js.map +1 -0
  20. package/dist/ggnomad/graphql.d.ts +17 -0
  21. package/dist/ggnomad/graphql.d.ts.map +1 -0
  22. package/dist/ggnomad/graphql.js +288 -0
  23. package/dist/ggnomad/graphql.js.map +1 -0
  24. package/dist/ggnomad/index.d.ts +4 -0
  25. package/dist/ggnomad/index.d.ts.map +1 -0
  26. package/dist/ggnomad/index.js +2 -0
  27. package/dist/ggnomad/pages/ActivityDetailsPage.d.ts +2 -0
  28. package/dist/ggnomad/pages/ActivityDetailsPage.d.ts.map +1 -0
  29. package/dist/ggnomad/pages/ActivityDetailsPage.js +46 -0
  30. package/dist/ggnomad/pages/ActivityDetailsPage.js.map +1 -0
  31. package/dist/ggnomad/pages/AnalyticsPage.d.ts +2 -0
  32. package/dist/ggnomad/pages/AnalyticsPage.d.ts.map +1 -0
  33. package/dist/ggnomad/pages/AnalyticsPage.js +64 -0
  34. package/dist/ggnomad/pages/AnalyticsPage.js.map +1 -0
  35. package/dist/ggnomad/pages/BookingsPage.d.ts +2 -0
  36. package/dist/ggnomad/pages/BookingsPage.d.ts.map +1 -0
  37. package/dist/ggnomad/pages/BookingsPage.js +71 -0
  38. package/dist/ggnomad/pages/BookingsPage.js.map +1 -0
  39. package/dist/ggnomad/pages/DashboardPage.d.ts +2 -0
  40. package/dist/ggnomad/pages/DashboardPage.d.ts.map +1 -0
  41. package/dist/ggnomad/pages/DashboardPage.js +128 -0
  42. package/dist/ggnomad/pages/DashboardPage.js.map +1 -0
  43. package/dist/ggnomad/pages/EntertainmentPage.d.ts +2 -0
  44. package/dist/ggnomad/pages/EntertainmentPage.d.ts.map +1 -0
  45. package/dist/ggnomad/pages/EntertainmentPage.js +43 -0
  46. package/dist/ggnomad/pages/EntertainmentPage.js.map +1 -0
  47. package/dist/ggnomad/pages/EventDetailsPage.d.ts +2 -0
  48. package/dist/ggnomad/pages/EventDetailsPage.d.ts.map +1 -0
  49. package/dist/ggnomad/pages/EventDetailsPage.js +49 -0
  50. package/dist/ggnomad/pages/EventDetailsPage.js.map +1 -0
  51. package/dist/ggnomad/pages/FavoritesPage.d.ts +2 -0
  52. package/dist/ggnomad/pages/FavoritesPage.d.ts.map +1 -0
  53. package/dist/ggnomad/pages/FavoritesPage.js +40 -0
  54. package/dist/ggnomad/pages/FavoritesPage.js.map +1 -0
  55. package/dist/ggnomad/pages/HospitalityPage.d.ts +2 -0
  56. package/dist/ggnomad/pages/HospitalityPage.d.ts.map +1 -0
  57. package/dist/ggnomad/pages/HospitalityPage.js +53 -0
  58. package/dist/ggnomad/pages/HospitalityPage.js.map +1 -0
  59. package/dist/ggnomad/pages/PageShell.d.ts +7 -0
  60. package/dist/ggnomad/pages/PageShell.d.ts.map +1 -0
  61. package/dist/ggnomad/pages/PageShell.js +18 -0
  62. package/dist/ggnomad/pages/PageShell.js.map +1 -0
  63. package/dist/ggnomad/pages/PropertyDetailsPage.d.ts +2 -0
  64. package/dist/ggnomad/pages/PropertyDetailsPage.d.ts.map +1 -0
  65. package/dist/ggnomad/pages/PropertyDetailsPage.js +54 -0
  66. package/dist/ggnomad/pages/PropertyDetailsPage.js.map +1 -0
  67. package/dist/ggnomad/pages/ProviderPage.d.ts +2 -0
  68. package/dist/ggnomad/pages/ProviderPage.d.ts.map +1 -0
  69. package/dist/ggnomad/pages/ProviderPage.js +42 -0
  70. package/dist/ggnomad/pages/ProviderPage.js.map +1 -0
  71. package/dist/ggnomad/pages/SearchPage.d.ts +2 -0
  72. package/dist/ggnomad/pages/SearchPage.d.ts.map +1 -0
  73. package/dist/ggnomad/pages/SearchPage.js +70 -0
  74. package/dist/ggnomad/pages/SearchPage.js.map +1 -0
  75. package/dist/ggnomad/pages/TourDetailsPage.d.ts +2 -0
  76. package/dist/ggnomad/pages/TourDetailsPage.d.ts.map +1 -0
  77. package/dist/ggnomad/pages/TourDetailsPage.js +49 -0
  78. package/dist/ggnomad/pages/TourDetailsPage.js.map +1 -0
  79. package/dist/ggnomad/pages/TourismPage.d.ts +2 -0
  80. package/dist/ggnomad/pages/TourismPage.d.ts.map +1 -0
  81. package/dist/ggnomad/pages/TourismPage.js +75 -0
  82. package/dist/ggnomad/pages/TourismPage.js.map +1 -0
  83. package/dist/ggnomad/pages/TravelPage.d.ts +2 -0
  84. package/dist/ggnomad/pages/TravelPage.d.ts.map +1 -0
  85. package/dist/ggnomad/pages/TravelPage.js +37 -0
  86. package/dist/ggnomad/pages/TravelPage.js.map +1 -0
  87. package/dist/ggnomad/providers/GGNomadProvider.d.ts +6 -0
  88. package/dist/ggnomad/providers/GGNomadProvider.d.ts.map +1 -0
  89. package/dist/ggnomad/providers/GGNomadProvider.js +62 -0
  90. package/dist/ggnomad/providers/GGNomadProvider.js.map +1 -0
  91. package/dist/ggnomad/types/index.d.ts +58 -0
  92. package/dist/ggnomad/types/index.d.ts.map +1 -0
  93. package/dist/ggnomad/utils/cn.d.ts +4 -0
  94. package/dist/ggnomad/utils/cn.d.ts.map +1 -0
  95. package/dist/ggnomad/utils/navigation.d.ts +2 -0
  96. package/dist/ggnomad/utils/navigation.d.ts.map +1 -0
  97. package/dist/ggnomad/utils/navigation.js +8 -0
  98. package/dist/ggnomad/utils/navigation.js.map +1 -0
  99. package/dist/index.d.ts +2 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +4 -0
  102. package/package.json +103 -0
@@ -0,0 +1,64 @@
1
+ import { GGNOMAD_OVERVIEW_QUERY as e } from "../graphql.js";
2
+ import { PageShell as t } from "./PageShell.js";
3
+ import { useQuery as n } from "@apollo/client/react";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
+ //#region src/ggnomad/pages/AnalyticsPage.tsx
6
+ function a() {
7
+ let { data: a } = n(e), o = a?.ggnomadAnalytics;
8
+ return /* @__PURE__ */ i(t, {
9
+ title: "Analytics",
10
+ subtitle: "GGNomad performance and growth analytics",
11
+ children: [/* @__PURE__ */ i("div", {
12
+ className: "grid gap-4 md:grid-cols-4",
13
+ children: [
14
+ /* @__PURE__ */ i("div", {
15
+ className: "rounded-lg border p-4",
16
+ children: [/* @__PURE__ */ r("p", {
17
+ className: "text-sm text-muted-foreground",
18
+ children: "Revenue"
19
+ }), /* @__PURE__ */ i("p", {
20
+ className: "text-xl font-semibold",
21
+ children: ["$", Number(o?.totalRevenue ?? 0).toLocaleString()]
22
+ })]
23
+ }),
24
+ /* @__PURE__ */ i("div", {
25
+ className: "rounded-lg border p-4",
26
+ children: [/* @__PURE__ */ r("p", {
27
+ className: "text-sm text-muted-foreground",
28
+ children: "Bookings"
29
+ }), /* @__PURE__ */ r("p", {
30
+ className: "text-xl font-semibold",
31
+ children: o?.totalBookings ?? 0
32
+ })]
33
+ }),
34
+ /* @__PURE__ */ i("div", {
35
+ className: "rounded-lg border p-4",
36
+ children: [/* @__PURE__ */ r("p", {
37
+ className: "text-sm text-muted-foreground",
38
+ children: "Users"
39
+ }), /* @__PURE__ */ r("p", {
40
+ className: "text-xl font-semibold",
41
+ children: o?.totalUsers ?? 0
42
+ })]
43
+ }),
44
+ /* @__PURE__ */ i("div", {
45
+ className: "rounded-lg border p-4",
46
+ children: [/* @__PURE__ */ r("p", {
47
+ className: "text-sm text-muted-foreground",
48
+ children: "Conversion"
49
+ }), /* @__PURE__ */ i("p", {
50
+ className: "text-xl font-semibold",
51
+ children: [Number(o?.conversionRate ?? 0).toFixed(2), "%"]
52
+ })]
53
+ })
54
+ ]
55
+ }), /* @__PURE__ */ r("pre", {
56
+ className: "overflow-auto rounded-lg border p-4 text-xs",
57
+ children: JSON.stringify(o?.revenueByCategory ?? {}, null, 2)
58
+ })]
59
+ });
60
+ }
61
+ //#endregion
62
+ export { a as AnalyticsPage };
63
+
64
+ //# sourceMappingURL=AnalyticsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsPage.js","names":[],"sources":["../../../src/ggnomad/pages/AnalyticsPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\n\nimport { GGNOMAD_OVERVIEW_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function AnalyticsPage() {\n const { data } = useQuery<{\n ggnomadAnalytics: {\n totalRevenue: number;\n totalBookings: number;\n totalUsers: number;\n conversionRate: number;\n revenueByCategory: Record<string, unknown>;\n };\n }>(GGNOMAD_OVERVIEW_QUERY);\n const analytics = data?.ggnomadAnalytics;\n\n return (\n <PageShell title=\"Analytics\" subtitle=\"GGNomad performance and growth analytics\">\n <div className=\"grid gap-4 md:grid-cols-4\">\n <div className=\"rounded-lg border p-4\">\n <p className=\"text-sm text-muted-foreground\">Revenue</p>\n <p className=\"text-xl font-semibold\">\n ${Number(analytics?.totalRevenue ?? 0).toLocaleString()}\n </p>\n </div>\n <div className=\"rounded-lg border p-4\">\n <p className=\"text-sm text-muted-foreground\">Bookings</p>\n <p className=\"text-xl font-semibold\">{analytics?.totalBookings ?? 0}</p>\n </div>\n <div className=\"rounded-lg border p-4\">\n <p className=\"text-sm text-muted-foreground\">Users</p>\n <p className=\"text-xl font-semibold\">{analytics?.totalUsers ?? 0}</p>\n </div>\n <div className=\"rounded-lg border p-4\">\n <p className=\"text-sm text-muted-foreground\">Conversion</p>\n <p className=\"text-xl font-semibold\">\n {Number(analytics?.conversionRate ?? 0).toFixed(2)}%\n </p>\n </div>\n </div>\n <pre className=\"overflow-auto rounded-lg border p-4 text-xs\">\n {JSON.stringify(analytics?.revenueByCategory ?? {}, null, 2)}\n </pre>\n </PageShell>\n );\n}\n"],"mappings":";;;;;AAKA,SAAgB,IAAgB;CAC9B,IAAM,EAAE,YAAS,EAQd,EAAuB,EACpB,IAAY,GAAM;AAExB,QACE,kBAAC,GAAD;EAAW,OAAM;EAAY,UAAS;YAAtC,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAAW,CAAA,EACxD,kBAAC,KAAD;MAAG,WAAU;gBAAb,CAAqC,KACjC,OAAO,GAAW,gBAAgB,EAAE,CAAC,gBAAgB,CACrD;QACA;;IACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAAY,CAAA,EACzD,kBAAC,KAAD;MAAG,WAAU;gBAAyB,GAAW,iBAAiB;MAAM,CAAA,CACpE;;IACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAAS,CAAA,EACtD,kBAAC,KAAD;MAAG,WAAU;gBAAyB,GAAW,cAAc;MAAM,CAAA,CACjE;;IACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAAc,CAAA,EAC3D,kBAAC,KAAD;MAAG,WAAU;gBAAb,CACG,OAAO,GAAW,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAC,IACjD;QACA;;IACF;MACN,kBAAC,OAAD;GAAK,WAAU;aACZ,KAAK,UAAU,GAAW,qBAAqB,EAAE,EAAE,MAAM,EAAE;GACxD,CAAA,CACI"}
@@ -0,0 +1,2 @@
1
+ export declare function BookingsPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=BookingsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BookingsPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/BookingsPage.tsx"],"names":[],"mappings":"AAUA,wBAAgB,YAAY,4CAsG3B"}
@@ -0,0 +1,71 @@
1
+ import { CANCEL_GGNOMAD_BOOKING_MUTATION as e, CREATE_GGNOMAD_BOOKING_MUTATION as t, GGNOMAD_BOOKINGS_QUERY as n } from "../graphql.js";
2
+ import { PageShell as r } from "./PageShell.js";
3
+ import { useI18n as i } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
4
+ import { useMutation as a, useQuery as o } from "@apollo/client/react";
5
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
6
+ //#region src/ggnomad/pages/BookingsPage.tsx
7
+ function l() {
8
+ let { t: l } = i(), { data: u, refetch: d } = o(n, { variables: {
9
+ first: 20,
10
+ skip: 0
11
+ } }), [f, { loading: p }] = a(t, { onCompleted: () => void d() }), [m] = a(e, { onCompleted: () => void d() }), h = u?.ggnomadBookings ?? [];
12
+ return /* @__PURE__ */ c(r, {
13
+ title: l("ggnomad.bookings.title", "Bookings"),
14
+ subtitle: l("ggnomad.bookings.subtitle", "End-to-end booking operations with real API mutations"),
15
+ children: [/* @__PURE__ */ s("div", {
16
+ className: "flex gap-2",
17
+ children: /* @__PURE__ */ s("button", {
18
+ className: "rounded-md border px-3 py-2 text-sm",
19
+ disabled: p,
20
+ onClick: () => {
21
+ f({ variables: { input: {
22
+ bookingType: "PROPERTY",
23
+ itemId: "demo-property",
24
+ itemName: "Demo Property",
25
+ guestName: "Demo Guest",
26
+ guestEmail: "demo@burdenoff.com",
27
+ guestPhone: "+910000000000",
28
+ guests: 2,
29
+ totalPrice: 299,
30
+ currency: "USD",
31
+ paymentMethod: "card"
32
+ } } });
33
+ },
34
+ type: "button",
35
+ children: l("ggnomad.bookings.actions.createDemoBooking", "Create demo booking")
36
+ })
37
+ }), /* @__PURE__ */ s("div", {
38
+ className: "space-y-2",
39
+ children: h.map((e) => /* @__PURE__ */ c("div", {
40
+ className: "flex items-center justify-between rounded-lg border p-3 text-sm",
41
+ children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
42
+ className: "font-medium",
43
+ children: e.referenceCode
44
+ }), /* @__PURE__ */ s("p", { children: e.itemName })] }), /* @__PURE__ */ c("div", {
45
+ className: "flex items-center gap-2",
46
+ children: [/* @__PURE__ */ c("span", { children: [
47
+ e.status,
48
+ " - ",
49
+ e.currency,
50
+ " ",
51
+ Number(e.totalPrice).toFixed(2)
52
+ ] }), e.status === "CANCELLED" ? null : /* @__PURE__ */ s("button", {
53
+ className: "rounded border px-2 py-1",
54
+ onClick: () => {
55
+ m({ variables: {
56
+ id: e.id,
57
+ reason: l("ggnomad.bookings.actions.cancelReason", "Cancelled via UI")
58
+ } });
59
+ },
60
+ type: "button",
61
+ children: l("ggnomad.bookings.actions.cancel", "Cancel")
62
+ })]
63
+ })]
64
+ }, e.id))
65
+ })]
66
+ });
67
+ }
68
+ //#endregion
69
+ export { l as BookingsPage };
70
+
71
+ //# sourceMappingURL=BookingsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BookingsPage.js","names":[],"sources":["../../../src/ggnomad/pages/BookingsPage.tsx"],"sourcesContent":["import { useMutation, useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nimport {\n CANCEL_GGNOMAD_BOOKING_MUTATION,\n CREATE_GGNOMAD_BOOKING_MUTATION,\n GGNOMAD_BOOKINGS_QUERY,\n} from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function BookingsPage() {\n const { t } = useI18n();\n const { data, refetch } = useQuery<{\n ggnomadBookings: Array<{\n id: string;\n referenceCode: string;\n itemName: string;\n status: string;\n totalPrice: number;\n currency: string;\n }>;\n }>(GGNOMAD_BOOKINGS_QUERY, { variables: { first: 20, skip: 0 } });\n const [createBooking, { loading: creating }] = useMutation(CREATE_GGNOMAD_BOOKING_MUTATION, {\n onCompleted: () => void refetch(),\n });\n const [cancelBooking] = useMutation(CANCEL_GGNOMAD_BOOKING_MUTATION, {\n onCompleted: () => void refetch(),\n });\n\n const bookings = data?.ggnomadBookings ?? [];\n\n return (\n <PageShell\n title={t('ggnomad.bookings.title', 'Bookings')}\n subtitle={t(\n 'ggnomad.bookings.subtitle',\n 'End-to-end booking operations with real API mutations'\n )}\n >\n <div className=\"flex gap-2\">\n <button\n className=\"rounded-md border px-3 py-2 text-sm\"\n disabled={creating}\n onClick={() => {\n void createBooking({\n variables: {\n input: {\n bookingType: 'PROPERTY',\n itemId: 'demo-property',\n itemName: 'Demo Property',\n guestName: 'Demo Guest',\n guestEmail: 'demo@burdenoff.com',\n guestPhone: '+910000000000',\n guests: 2,\n totalPrice: 299,\n currency: 'USD',\n paymentMethod: 'card',\n },\n },\n });\n }}\n type=\"button\"\n >\n {t('ggnomad.bookings.actions.createDemoBooking', 'Create demo booking')}\n </button>\n </div>\n\n <div className=\"space-y-2\">\n {bookings.map(\n (booking: {\n id: string;\n referenceCode: string;\n itemName: string;\n status: string;\n totalPrice: number;\n currency: string;\n }) => (\n <div\n key={booking.id}\n className=\"flex items-center justify-between rounded-lg border p-3 text-sm\"\n >\n <div>\n <p className=\"font-medium\">{booking.referenceCode}</p>\n <p>{booking.itemName}</p>\n </div>\n <div className=\"flex items-center gap-2\">\n <span>\n {booking.status} - {booking.currency} {Number(booking.totalPrice).toFixed(2)}\n </span>\n {booking.status !== 'CANCELLED' ? (\n <button\n className=\"rounded border px-2 py-1\"\n onClick={() => {\n void cancelBooking({\n variables: {\n id: booking.id,\n reason: t('ggnomad.bookings.actions.cancelReason', 'Cancelled via UI'),\n },\n });\n }}\n type=\"button\"\n >\n {t('ggnomad.bookings.actions.cancel', 'Cancel')}\n </button>\n ) : null}\n </div>\n </div>\n )\n )}\n </div>\n </PageShell>\n );\n}\n"],"mappings":";;;;;;AAUA,SAAgB,IAAe;CAC7B,IAAM,EAAE,SAAM,GAAS,EACjB,EAAE,SAAM,eAAY,EASvB,GAAwB,EAAE,WAAW;EAAE,OAAO;EAAI,MAAM;EAAG,EAAE,CAAC,EAC3D,CAAC,GAAe,EAAE,SAAS,OAAc,EAAY,GAAiC,EAC1F,mBAAmB,KAAK,GAAS,EAClC,CAAC,EACI,CAAC,KAAiB,EAAY,GAAiC,EACnE,mBAAmB,KAAK,GAAS,EAClC,CAAC,EAEI,IAAW,GAAM,mBAAmB,EAAE;AAE5C,QACE,kBAAC,GAAD;EACE,OAAO,EAAE,0BAA0B,WAAW;EAC9C,UAAU,EACR,6BACA,wDACD;YALH,CAOE,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,UAAD;IACE,WAAU;IACV,UAAU;IACV,eAAe;AACR,OAAc,EACjB,WAAW,EACT,OAAO;MACL,aAAa;MACb,QAAQ;MACR,UAAU;MACV,WAAW;MACX,YAAY;MACZ,YAAY;MACZ,QAAQ;MACR,YAAY;MACZ,UAAU;MACV,eAAe;MAChB,EACF,EACF,CAAC;;IAEJ,MAAK;cAEJ,EAAE,8CAA8C,sBAAsB;IAChE,CAAA;GACL,CAAA,EAEN,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAS,KACP,MAQC,kBAAC,OAAD;IAEE,WAAU;cAFZ,CAIE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;KAAG,WAAU;eAAe,EAAQ;KAAkB,CAAA,EACtD,kBAAC,KAAD,EAAA,UAAI,EAAQ,UAAa,CAAA,CACrB,EAAA,CAAA,EACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,QAAD,EAAA,UAAA;MACG,EAAQ;MAAO;MAAI,EAAQ;MAAS;MAAE,OAAO,EAAQ,WAAW,CAAC,QAAQ,EAAE;MACvE,EAAA,CAAA,EACN,EAAQ,WAAW,cAehB,OAdF,kBAAC,UAAD;MACE,WAAU;MACV,eAAe;AACR,SAAc,EACjB,WAAW;QACT,IAAI,EAAQ;QACZ,QAAQ,EAAE,yCAAyC,mBAAmB;QACvE,EACF,CAAC;;MAEJ,MAAK;gBAEJ,EAAE,mCAAmC,SAAS;MACxC,CAAA,CAEP;OACF;MA5BC,EAAQ,GA4BT,CAET;GACG,CAAA,CACI"}
@@ -0,0 +1,2 @@
1
+ export declare function DashboardPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=DashboardPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/DashboardPage.tsx"],"names":[],"mappings":"AAYA,wBAAgB,aAAa,4CAuH5B"}
@@ -0,0 +1,128 @@
1
+ import { GGNOMAD_BOOKINGS_QUERY as e, GGNOMAD_EVENTS_QUERY as t, GGNOMAD_OVERVIEW_QUERY as n, GGNOMAD_PROPERTIES_QUERY as r, GGNOMAD_TOURS_QUERY as i } from "../graphql.js";
2
+ import { PageShell as a } from "./PageShell.js";
3
+ import { useI18n as o } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
4
+ import { useQuery as s } from "@apollo/client/react";
5
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
6
+ //#region src/ggnomad/pages/DashboardPage.tsx
7
+ function u() {
8
+ let { t: u } = o(), d = s(n), f = s(e, { variables: {
9
+ first: 5,
10
+ skip: 0
11
+ } }), p = s(r, { variables: {
12
+ first: 4,
13
+ skip: 0
14
+ } }), m = s(i, { variables: {
15
+ first: 4,
16
+ skip: 0
17
+ } }), h = s(t, { variables: {
18
+ first: 4,
19
+ skip: 0
20
+ } }), g = d.data?.ggnomadOverviewStats;
21
+ return /* @__PURE__ */ l(a, {
22
+ title: u("ggnomad.dashboard.title", "GGNomad Dashboard"),
23
+ subtitle: u("ggnomad.dashboard.subtitle", "Unified travel, hospitality, tourism and entertainment operations"),
24
+ children: [/* @__PURE__ */ l("section", {
25
+ className: "grid gap-4 md:grid-cols-4",
26
+ children: [
27
+ /* @__PURE__ */ l("div", {
28
+ className: "rounded-lg border p-4",
29
+ children: [/* @__PURE__ */ c("p", {
30
+ className: "text-sm text-muted-foreground",
31
+ children: u("ggnomad.dashboard.stats.users", "Users")
32
+ }), /* @__PURE__ */ c("p", {
33
+ className: "text-2xl font-semibold",
34
+ children: g?.users ?? 0
35
+ })]
36
+ }),
37
+ /* @__PURE__ */ l("div", {
38
+ className: "rounded-lg border p-4",
39
+ children: [/* @__PURE__ */ c("p", {
40
+ className: "text-sm text-muted-foreground",
41
+ children: u("ggnomad.dashboard.stats.listings", "Listings")
42
+ }), /* @__PURE__ */ c("p", {
43
+ className: "text-2xl font-semibold",
44
+ children: g?.listings ?? 0
45
+ })]
46
+ }),
47
+ /* @__PURE__ */ l("div", {
48
+ className: "rounded-lg border p-4",
49
+ children: [/* @__PURE__ */ c("p", {
50
+ className: "text-sm text-muted-foreground",
51
+ children: u("ggnomad.dashboard.stats.bookings", "Bookings")
52
+ }), /* @__PURE__ */ c("p", {
53
+ className: "text-2xl font-semibold",
54
+ children: g?.bookings ?? 0
55
+ })]
56
+ }),
57
+ /* @__PURE__ */ l("div", {
58
+ className: "rounded-lg border p-4",
59
+ children: [/* @__PURE__ */ c("p", {
60
+ className: "text-sm text-muted-foreground",
61
+ children: u("ggnomad.dashboard.stats.monthlyRevenue", "Monthly Revenue")
62
+ }), /* @__PURE__ */ l("p", {
63
+ className: "text-2xl font-semibold",
64
+ children: ["$", Number(g?.monthlyRevenue ?? 0).toLocaleString()]
65
+ })]
66
+ })
67
+ ]
68
+ }), /* @__PURE__ */ l("section", {
69
+ className: "grid gap-4 lg:grid-cols-2",
70
+ children: [/* @__PURE__ */ l("div", {
71
+ className: "rounded-lg border p-4",
72
+ children: [/* @__PURE__ */ c("h2", {
73
+ className: "mb-3 text-lg font-medium",
74
+ children: u("ggnomad.dashboard.sections.recentBookings", "Recent bookings")
75
+ }), /* @__PURE__ */ c("ul", {
76
+ className: "space-y-2 text-sm",
77
+ children: (f.data?.ggnomadBookings ?? []).map((e) => /* @__PURE__ */ l("li", {
78
+ className: "flex items-center justify-between rounded border p-2",
79
+ children: [/* @__PURE__ */ l("span", { children: [
80
+ e.referenceCode,
81
+ " - ",
82
+ e.itemName
83
+ ] }), /* @__PURE__ */ c("span", {
84
+ className: "text-muted-foreground",
85
+ children: e.status
86
+ })]
87
+ }, e.id))
88
+ })]
89
+ }), /* @__PURE__ */ l("div", {
90
+ className: "rounded-lg border p-4",
91
+ children: [/* @__PURE__ */ c("h2", {
92
+ className: "mb-3 text-lg font-medium",
93
+ children: u("ggnomad.dashboard.sections.featuredInventory", "Featured inventory")
94
+ }), /* @__PURE__ */ l("div", {
95
+ className: "grid gap-2 text-sm",
96
+ children: [
97
+ /* @__PURE__ */ l("p", { children: [
98
+ u("ggnomad.dashboard.inventory.properties", "Properties"),
99
+ ":",
100
+ " ",
101
+ p.data?.ggnomadProperties?.length ?? 0
102
+ ] }),
103
+ /* @__PURE__ */ l("p", { children: [
104
+ u("ggnomad.dashboard.inventory.tours", "Tours"),
105
+ ":",
106
+ " ",
107
+ m.data?.ggnomadTours?.length ?? 0
108
+ ] }),
109
+ /* @__PURE__ */ l("p", { children: [
110
+ u("ggnomad.dashboard.inventory.events", "Events"),
111
+ ":",
112
+ " ",
113
+ h.data?.ggnomadEvents?.length ?? 0
114
+ ] }),
115
+ /* @__PURE__ */ c("p", {
116
+ className: "text-muted-foreground",
117
+ children: u("ggnomad.dashboard.inventory.liveDataNotice", "Data is live from `wspace-ggnomad-svc` GraphQL APIs.")
118
+ })
119
+ ]
120
+ })]
121
+ })]
122
+ })]
123
+ });
124
+ }
125
+ //#endregion
126
+ export { u as DashboardPage };
127
+
128
+ //# sourceMappingURL=DashboardPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardPage.js","names":[],"sources":["../../../src/ggnomad/pages/DashboardPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nimport {\n GGNOMAD_OVERVIEW_QUERY,\n GGNOMAD_BOOKINGS_QUERY,\n GGNOMAD_PROPERTIES_QUERY,\n GGNOMAD_TOURS_QUERY,\n GGNOMAD_EVENTS_QUERY,\n} from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function DashboardPage() {\n const { t } = useI18n();\n const overview = useQuery<{\n ggnomadOverviewStats: {\n users: number;\n listings: number;\n bookings: number;\n monthlyRevenue: number;\n };\n }>(GGNOMAD_OVERVIEW_QUERY);\n const bookings = useQuery<{\n ggnomadBookings: Array<{ id: string; referenceCode: string; itemName: string; status: string }>;\n }>(GGNOMAD_BOOKINGS_QUERY, {\n variables: { first: 5, skip: 0 },\n });\n const properties = useQuery<{ ggnomadProperties: Array<{ id: string }> }>(\n GGNOMAD_PROPERTIES_QUERY,\n { variables: { first: 4, skip: 0 } }\n );\n const tours = useQuery<{ ggnomadTours: Array<{ id: string }> }>(GGNOMAD_TOURS_QUERY, {\n variables: { first: 4, skip: 0 },\n });\n const events = useQuery<{ ggnomadEvents: Array<{ id: string }> }>(GGNOMAD_EVENTS_QUERY, {\n variables: { first: 4, skip: 0 },\n });\n\n const stats = overview.data?.ggnomadOverviewStats;\n\n return (\n <PageShell\n title={t('ggnomad.dashboard.title', 'GGNomad Dashboard')}\n subtitle={t(\n 'ggnomad.dashboard.subtitle',\n 'Unified travel, hospitality, tourism and entertainment operations'\n )}\n >\n <section className=\"grid gap-4 md:grid-cols-4\">\n <div className=\"rounded-lg border p-4\">\n <p className=\"text-sm text-muted-foreground\">\n {t('ggnomad.dashboard.stats.users', 'Users')}\n </p>\n <p className=\"text-2xl font-semibold\">{stats?.users ?? 0}</p>\n </div>\n <div className=\"rounded-lg border p-4\">\n <p className=\"text-sm text-muted-foreground\">\n {t('ggnomad.dashboard.stats.listings', 'Listings')}\n </p>\n <p className=\"text-2xl font-semibold\">{stats?.listings ?? 0}</p>\n </div>\n <div className=\"rounded-lg border p-4\">\n <p className=\"text-sm text-muted-foreground\">\n {t('ggnomad.dashboard.stats.bookings', 'Bookings')}\n </p>\n <p className=\"text-2xl font-semibold\">{stats?.bookings ?? 0}</p>\n </div>\n <div className=\"rounded-lg border p-4\">\n <p className=\"text-sm text-muted-foreground\">\n {t('ggnomad.dashboard.stats.monthlyRevenue', 'Monthly Revenue')}\n </p>\n <p className=\"text-2xl font-semibold\">\n ${Number(stats?.monthlyRevenue ?? 0).toLocaleString()}\n </p>\n </div>\n </section>\n\n <section className=\"grid gap-4 lg:grid-cols-2\">\n <div className=\"rounded-lg border p-4\">\n <h2 className=\"mb-3 text-lg font-medium\">\n {t('ggnomad.dashboard.sections.recentBookings', 'Recent bookings')}\n </h2>\n <ul className=\"space-y-2 text-sm\">\n {(bookings.data?.ggnomadBookings ?? []).map(\n (booking: {\n id: string;\n referenceCode: string;\n itemName: string;\n status: string;\n }) => (\n <li\n key={booking.id}\n className=\"flex items-center justify-between rounded border p-2\"\n >\n <span>\n {booking.referenceCode} - {booking.itemName}\n </span>\n <span className=\"text-muted-foreground\">{booking.status}</span>\n </li>\n )\n )}\n </ul>\n </div>\n <div className=\"rounded-lg border p-4\">\n <h2 className=\"mb-3 text-lg font-medium\">\n {t('ggnomad.dashboard.sections.featuredInventory', 'Featured inventory')}\n </h2>\n <div className=\"grid gap-2 text-sm\">\n <p>\n {t('ggnomad.dashboard.inventory.properties', 'Properties')}:{' '}\n {properties.data?.ggnomadProperties?.length ?? 0}\n </p>\n <p>\n {t('ggnomad.dashboard.inventory.tours', 'Tours')}:{' '}\n {tours.data?.ggnomadTours?.length ?? 0}\n </p>\n <p>\n {t('ggnomad.dashboard.inventory.events', 'Events')}:{' '}\n {events.data?.ggnomadEvents?.length ?? 0}\n </p>\n <p className=\"text-muted-foreground\">\n {t(\n 'ggnomad.dashboard.inventory.liveDataNotice',\n 'Data is live from `wspace-ggnomad-svc` GraphQL APIs.'\n )}\n </p>\n </div>\n </div>\n </section>\n </PageShell>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function EntertainmentPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=EntertainmentPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntertainmentPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/EntertainmentPage.tsx"],"names":[],"mappings":"AAMA,wBAAgB,iBAAiB,4CA0ChC"}
@@ -0,0 +1,43 @@
1
+ import { GGNOMAD_EVENTS_QUERY as e } from "../graphql.js";
2
+ import { PageShell as t } from "./PageShell.js";
3
+ import { Link as n } from "react-router-dom";
4
+ import { useQuery as r } from "@apollo/client/react";
5
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
+ //#region src/ggnomad/pages/EntertainmentPage.tsx
7
+ function o() {
8
+ let { data: o } = r(e, { variables: {
9
+ first: 20,
10
+ skip: 0
11
+ } });
12
+ return /* @__PURE__ */ i(t, {
13
+ title: "Entertainment",
14
+ subtitle: "Events and live experiences",
15
+ children: /* @__PURE__ */ i("div", {
16
+ className: "grid gap-3 md:grid-cols-2",
17
+ children: (o?.ggnomadEvents ?? []).map((e) => /* @__PURE__ */ a(n, {
18
+ to: e.id,
19
+ className: "rounded-lg border p-4 text-sm hover:bg-muted/30",
20
+ children: [
21
+ /* @__PURE__ */ i("p", {
22
+ className: "font-medium",
23
+ children: e.name
24
+ }),
25
+ /* @__PURE__ */ i("p", {
26
+ className: "text-muted-foreground",
27
+ children: e.category
28
+ }),
29
+ /* @__PURE__ */ i("p", { children: new Date(e.startsAt).toLocaleString() }),
30
+ /* @__PURE__ */ a("p", { children: [
31
+ e.currency,
32
+ " ",
33
+ Number(e.price).toFixed(2)
34
+ ] })
35
+ ]
36
+ }, e.id))
37
+ })
38
+ });
39
+ }
40
+ //#endregion
41
+ export { o as EntertainmentPage };
42
+
43
+ //# sourceMappingURL=EntertainmentPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntertainmentPage.js","names":[],"sources":["../../../src/ggnomad/pages/EntertainmentPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { Link } from 'react-router-dom';\n\nimport { GGNOMAD_EVENTS_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function EntertainmentPage() {\n const { data } = useQuery<{\n ggnomadEvents: Array<{\n id: string;\n name: string;\n category: string;\n startsAt: string;\n price: number;\n currency: string;\n }>;\n }>(GGNOMAD_EVENTS_QUERY, { variables: { first: 20, skip: 0 } });\n const events = data?.ggnomadEvents ?? [];\n\n return (\n <PageShell title=\"Entertainment\" subtitle=\"Events and live experiences\">\n <div className=\"grid gap-3 md:grid-cols-2\">\n {events.map(\n (event: {\n id: string;\n name: string;\n category: string;\n startsAt: string;\n price: number;\n currency: string;\n }) => (\n <Link\n key={event.id}\n to={event.id}\n className=\"rounded-lg border p-4 text-sm hover:bg-muted/30\"\n >\n <p className=\"font-medium\">{event.name}</p>\n <p className=\"text-muted-foreground\">{event.category}</p>\n <p>{new Date(event.startsAt).toLocaleString()}</p>\n <p>\n {event.currency} {Number(event.price).toFixed(2)}\n </p>\n </Link>\n )\n )}\n </div>\n </PageShell>\n );\n}\n"],"mappings":";;;;;;AAMA,SAAgB,IAAoB;CAClC,IAAM,EAAE,YAAS,EASd,GAAsB,EAAE,WAAW;EAAE,OAAO;EAAI,MAAM;EAAG,EAAE,CAAC;AAG/D,QACE,kBAAC,GAAD;EAAW,OAAM;EAAgB,UAAS;YACxC,kBAAC,OAAD;GAAK,WAAU;cAJJ,GAAM,iBAAiB,EAAE,EAK1B,KACL,MAQC,kBAAC,GAAD;IAEE,IAAI,EAAM;IACV,WAAU;cAHZ;KAKE,kBAAC,KAAD;MAAG,WAAU;gBAAe,EAAM;MAAS,CAAA;KAC3C,kBAAC,KAAD;MAAG,WAAU;gBAAyB,EAAM;MAAa,CAAA;KACzD,kBAAC,KAAD,EAAA,UAAI,IAAI,KAAK,EAAM,SAAS,CAAC,gBAAgB,EAAK,CAAA;KAClD,kBAAC,KAAD,EAAA,UAAA;MACG,EAAM;MAAS;MAAE,OAAO,EAAM,MAAM,CAAC,QAAQ,EAAE;MAC9C,EAAA,CAAA;KACC;MAVA,EAAM,GAUN,CAEV;GACG,CAAA;EACI,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function EventDetailsPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=EventDetailsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventDetailsPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/EventDetailsPage.tsx"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,4CA4C/B"}
@@ -0,0 +1,49 @@
1
+ import { GGNOMAD_EVENT_QUERY as e } from "../graphql.js";
2
+ import { PageShell as t } from "./PageShell.js";
3
+ import { useParams as n } from "react-router-dom";
4
+ import { useQuery as r } from "@apollo/client/react";
5
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
+ //#region src/ggnomad/pages/EventDetailsPage.tsx
7
+ function o() {
8
+ let { id: o = "" } = n(), { data: s } = r(e, {
9
+ variables: { id: o },
10
+ skip: !o
11
+ }), c = s?.ggnomadEvent;
12
+ return /* @__PURE__ */ i(t, {
13
+ title: c?.name ?? "Event details",
14
+ subtitle: "Live event details, venue and lineup",
15
+ children: c ? /* @__PURE__ */ a("div", {
16
+ className: "grid gap-4 md:grid-cols-2 text-sm",
17
+ children: [/* @__PURE__ */ a("div", {
18
+ className: "rounded-lg border p-4",
19
+ children: [
20
+ /* @__PURE__ */ a("p", { children: ["Category: ", c.category] }),
21
+ /* @__PURE__ */ a("p", { children: ["Starts: ", new Date(c.startsAt).toLocaleString()] }),
22
+ /* @__PURE__ */ a("p", { children: ["Ends: ", c.endsAt ? new Date(c.endsAt).toLocaleString() : "N/A"] }),
23
+ /* @__PURE__ */ a("p", { children: [
24
+ "Price: ",
25
+ c.currency,
26
+ " ",
27
+ Number(c.price).toFixed(2)
28
+ ] })
29
+ ]
30
+ }), /* @__PURE__ */ a("div", {
31
+ className: "rounded-lg border p-4",
32
+ children: [/* @__PURE__ */ i("p", {
33
+ className: "font-medium",
34
+ children: "Performers"
35
+ }), /* @__PURE__ */ i("ul", {
36
+ className: "list-inside list-disc",
37
+ children: (c.performers ?? []).map((e) => /* @__PURE__ */ i("li", { children: e }, e))
38
+ })]
39
+ })]
40
+ }) : /* @__PURE__ */ i("div", {
41
+ className: "rounded-lg border p-4 text-muted-foreground",
42
+ children: "No event found."
43
+ })
44
+ });
45
+ }
46
+ //#endregion
47
+ export { o as EventDetailsPage };
48
+
49
+ //# sourceMappingURL=EventDetailsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventDetailsPage.js","names":[],"sources":["../../../src/ggnomad/pages/EventDetailsPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { useParams } from 'react-router-dom';\n\nimport { GGNOMAD_EVENT_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function EventDetailsPage() {\n const { id = '' } = useParams();\n const { data } = useQuery<{\n ggnomadEvent: {\n name: string;\n category: string;\n startsAt: string;\n endsAt?: string;\n currency: string;\n price: number;\n performers: string[];\n } | null;\n }>(GGNOMAD_EVENT_QUERY, { variables: { id }, skip: !id });\n const event = data?.ggnomadEvent;\n\n return (\n <PageShell\n title={event?.name ?? 'Event details'}\n subtitle=\"Live event details, venue and lineup\"\n >\n {!event ? (\n <div className=\"rounded-lg border p-4 text-muted-foreground\">No event found.</div>\n ) : (\n <div className=\"grid gap-4 md:grid-cols-2 text-sm\">\n <div className=\"rounded-lg border p-4\">\n <p>Category: {event.category}</p>\n <p>Starts: {new Date(event.startsAt).toLocaleString()}</p>\n <p>Ends: {event.endsAt ? new Date(event.endsAt).toLocaleString() : 'N/A'}</p>\n <p>\n Price: {event.currency} {Number(event.price).toFixed(2)}\n </p>\n </div>\n <div className=\"rounded-lg border p-4\">\n <p className=\"font-medium\">Performers</p>\n <ul className=\"list-inside list-disc\">\n {(event.performers ?? []).map((performer: string) => (\n <li key={performer}>{performer}</li>\n ))}\n </ul>\n </div>\n </div>\n )}\n </PageShell>\n );\n}\n"],"mappings":";;;;;;AAMA,SAAgB,IAAmB;CACjC,IAAM,EAAE,QAAK,OAAO,GAAW,EACzB,EAAE,YAAS,EAUd,GAAqB;EAAE,WAAW,EAAE,OAAI;EAAE,MAAM,CAAC;EAAI,CAAC,EACnD,IAAQ,GAAM;AAEpB,QACE,kBAAC,GAAD;EACE,OAAO,GAAO,QAAQ;EACtB,UAAS;YAEP,IAGA,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,KAAD,EAAA,UAAA,CAAG,cAAW,EAAM,SAAa,EAAA,CAAA;KACjC,kBAAC,KAAD,EAAA,UAAA,CAAG,YAAS,IAAI,KAAK,EAAM,SAAS,CAAC,gBAAgB,CAAK,EAAA,CAAA;KAC1D,kBAAC,KAAD,EAAA,UAAA,CAAG,UAAO,EAAM,SAAS,IAAI,KAAK,EAAM,OAAO,CAAC,gBAAgB,GAAG,MAAU,EAAA,CAAA;KAC7E,kBAAC,KAAD,EAAA,UAAA;MAAG;MACO,EAAM;MAAS;MAAE,OAAO,EAAM,MAAM,CAAC,QAAQ,EAAE;MACrD,EAAA,CAAA;KACA;OACN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,KAAD;KAAG,WAAU;eAAc;KAAc,CAAA,EACzC,kBAAC,MAAD;KAAI,WAAU;gBACV,EAAM,cAAc,EAAE,EAAE,KAAK,MAC7B,kBAAC,MAAD,EAAA,UAAqB,GAAe,EAA3B,EAA2B,CACpC;KACC,CAAA,CACD;MACF;OAnBN,kBAAC,OAAD;GAAK,WAAU;aAA8C;GAAqB,CAAA;EAqB1E,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function FavoritesPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=FavoritesPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FavoritesPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/FavoritesPage.tsx"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,4CAqC5B"}
@@ -0,0 +1,40 @@
1
+ import { GGNOMAD_FAVORITES_QUERY as e, TOGGLE_GGNOMAD_FAVORITE_MUTATION as t } from "../graphql.js";
2
+ import { PageShell as n } from "./PageShell.js";
3
+ import { useMutation as r, useQuery as i } from "@apollo/client/react";
4
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
+ //#region src/ggnomad/pages/FavoritesPage.tsx
6
+ function s() {
7
+ let { data: s, refetch: c } = i(e), [l] = r(t, { onCompleted: () => void c() }), u = s?.ggnomadFavorites ?? [];
8
+ return /* @__PURE__ */ o(n, {
9
+ title: "Favorites",
10
+ subtitle: "Social ecosystem: saved entities across GGNomad domains",
11
+ children: [/* @__PURE__ */ a("div", {
12
+ className: "flex gap-2",
13
+ children: /* @__PURE__ */ a("button", {
14
+ className: "rounded-md border px-3 py-2 text-sm",
15
+ onClick: () => {
16
+ l({ variables: { input: {
17
+ targetType: "PROPERTY",
18
+ targetId: "demo-property"
19
+ } } });
20
+ },
21
+ type: "button",
22
+ children: "Toggle demo favorite"
23
+ })
24
+ }), /* @__PURE__ */ a("div", {
25
+ className: "space-y-2",
26
+ children: u.map((e) => /* @__PURE__ */ o("div", {
27
+ className: "rounded-lg border p-3 text-sm",
28
+ children: [
29
+ e.targetType,
30
+ " - ",
31
+ e.targetId
32
+ ]
33
+ }, e.id))
34
+ })]
35
+ });
36
+ }
37
+ //#endregion
38
+ export { s as FavoritesPage };
39
+
40
+ //# sourceMappingURL=FavoritesPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FavoritesPage.js","names":[],"sources":["../../../src/ggnomad/pages/FavoritesPage.tsx"],"sourcesContent":["import { useMutation, useQuery } from '@apollo/client/react';\n\nimport { GGNOMAD_FAVORITES_QUERY, TOGGLE_GGNOMAD_FAVORITE_MUTATION } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function FavoritesPage() {\n const { data, refetch } = useQuery<{\n ggnomadFavorites: Array<{ id: string; targetType: string; targetId: string }>;\n }>(GGNOMAD_FAVORITES_QUERY);\n const [toggleFavorite] = useMutation(TOGGLE_GGNOMAD_FAVORITE_MUTATION, {\n onCompleted: () => void refetch(),\n });\n const favorites = (data?.ggnomadFavorites ?? []) as Array<{\n id: string;\n targetType: string;\n targetId: string;\n }>;\n\n return (\n <PageShell title=\"Favorites\" subtitle=\"Social ecosystem: saved entities across GGNomad domains\">\n <div className=\"flex gap-2\">\n <button\n className=\"rounded-md border px-3 py-2 text-sm\"\n onClick={() => {\n void toggleFavorite({\n variables: { input: { targetType: 'PROPERTY', targetId: 'demo-property' } },\n });\n }}\n type=\"button\"\n >\n Toggle demo favorite\n </button>\n </div>\n <div className=\"space-y-2\">\n {favorites.map((favorite) => (\n <div key={favorite.id} className=\"rounded-lg border p-3 text-sm\">\n {favorite.targetType} - {favorite.targetId}\n </div>\n ))}\n </div>\n </PageShell>\n );\n}\n"],"mappings":";;;;;AAKA,SAAgB,IAAgB;CAC9B,IAAM,EAAE,SAAM,eAAY,EAEvB,EAAwB,EACrB,CAAC,KAAkB,EAAY,GAAkC,EACrE,mBAAmB,KAAK,GAAS,EAClC,CAAC,EACI,IAAa,GAAM,oBAAoB,EAAE;AAM/C,QACE,kBAAC,GAAD;EAAW,OAAM;EAAY,UAAS;YAAtC,CACE,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,UAAD;IACE,WAAU;IACV,eAAe;AACR,OAAe,EAClB,WAAW,EAAE,OAAO;MAAE,YAAY;MAAY,UAAU;MAAiB,EAAE,EAC5E,CAAC;;IAEJ,MAAK;cACN;IAEQ,CAAA;GACL,CAAA,EACN,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAU,KAAK,MACd,kBAAC,OAAD;IAAuB,WAAU;cAAjC;KACG,EAAS;KAAW;KAAI,EAAS;KAC9B;MAFI,EAAS,GAEb,CACN;GACE,CAAA,CACI"}
@@ -0,0 +1,2 @@
1
+ export declare function HospitalityPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=HospitalityPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HospitalityPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/HospitalityPage.tsx"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,4CAoD9B"}
@@ -0,0 +1,53 @@
1
+ import { GGNOMAD_PROPERTIES_QUERY as e } from "../graphql.js";
2
+ import { PageShell as t } from "./PageShell.js";
3
+ import { useI18n as n } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
4
+ import { Link as r } from "react-router-dom";
5
+ import { useQuery as i } from "@apollo/client/react";
6
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
7
+ //#region src/ggnomad/pages/HospitalityPage.tsx
8
+ function s() {
9
+ let { t: s } = n(), { data: c } = i(e, { variables: {
10
+ first: 20,
11
+ skip: 0
12
+ } }), l = c?.ggnomadProperties ?? [];
13
+ return /* @__PURE__ */ a(t, {
14
+ title: s("ggnomad.hospitality.title", "Hospitality"),
15
+ subtitle: s("ggnomad.hospitality.subtitle", "Property discovery powered by live GraphQL data"),
16
+ children: /* @__PURE__ */ a("div", {
17
+ className: "grid gap-3 md:grid-cols-2",
18
+ children: l.map((e) => /* @__PURE__ */ o(r, {
19
+ to: e.id,
20
+ className: "rounded-lg border p-4 text-sm hover:bg-muted/30",
21
+ children: [
22
+ /* @__PURE__ */ a("p", {
23
+ className: "font-medium",
24
+ children: e.name
25
+ }),
26
+ /* @__PURE__ */ a("p", {
27
+ className: "text-muted-foreground",
28
+ children: e.type
29
+ }),
30
+ /* @__PURE__ */ o("p", { children: [
31
+ e.currency,
32
+ " ",
33
+ Number(e.pricePerNight).toFixed(2),
34
+ " ",
35
+ s("ggnomad.hospitality.card.perNight", "per night")
36
+ ] }),
37
+ /* @__PURE__ */ o("p", {
38
+ className: "text-muted-foreground",
39
+ children: [
40
+ s("ggnomad.hospitality.card.rating", "Rating"),
41
+ ": ",
42
+ e.rating ?? "N/A"
43
+ ]
44
+ })
45
+ ]
46
+ }, e.id))
47
+ })
48
+ });
49
+ }
50
+ //#endregion
51
+ export { s as HospitalityPage };
52
+
53
+ //# sourceMappingURL=HospitalityPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HospitalityPage.js","names":[],"sources":["../../../src/ggnomad/pages/HospitalityPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Link } from 'react-router-dom';\n\nimport { GGNOMAD_PROPERTIES_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function HospitalityPage() {\n const { t } = useI18n();\n const { data } = useQuery<{\n ggnomadProperties: Array<{\n id: string;\n name: string;\n type: string;\n pricePerNight: number;\n currency: string;\n rating?: number;\n }>;\n }>(GGNOMAD_PROPERTIES_QUERY, { variables: { first: 20, skip: 0 } });\n const properties = data?.ggnomadProperties ?? [];\n\n return (\n <PageShell\n title={t('ggnomad.hospitality.title', 'Hospitality')}\n subtitle={t(\n 'ggnomad.hospitality.subtitle',\n 'Property discovery powered by live GraphQL data'\n )}\n >\n <div className=\"grid gap-3 md:grid-cols-2\">\n {properties.map(\n (property: {\n id: string;\n name: string;\n type: string;\n pricePerNight: number;\n currency: string;\n rating?: number;\n }) => (\n <Link\n key={property.id}\n to={property.id}\n className=\"rounded-lg border p-4 text-sm hover:bg-muted/30\"\n >\n <p className=\"font-medium\">{property.name}</p>\n <p className=\"text-muted-foreground\">{property.type}</p>\n <p>\n {property.currency} {Number(property.pricePerNight).toFixed(2)}{' '}\n {t('ggnomad.hospitality.card.perNight', 'per night')}\n </p>\n <p className=\"text-muted-foreground\">\n {t('ggnomad.hospitality.card.rating', 'Rating')}: {property.rating ?? 'N/A'}\n </p>\n </Link>\n )\n )}\n </div>\n </PageShell>\n );\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,IAAkB;CAChC,IAAM,EAAE,SAAM,GAAS,EACjB,EAAE,YAAS,EASd,GAA0B,EAAE,WAAW;EAAE,OAAO;EAAI,MAAM;EAAG,EAAE,CAAC,EAC7D,IAAa,GAAM,qBAAqB,EAAE;AAEhD,QACE,kBAAC,GAAD;EACE,OAAO,EAAE,6BAA6B,cAAc;EACpD,UAAU,EACR,gCACA,kDACD;YAED,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAW,KACT,MAQC,kBAAC,GAAD;IAEE,IAAI,EAAS;IACb,WAAU;cAHZ;KAKE,kBAAC,KAAD;MAAG,WAAU;gBAAe,EAAS;MAAS,CAAA;KAC9C,kBAAC,KAAD;MAAG,WAAU;gBAAyB,EAAS;MAAS,CAAA;KACxD,kBAAC,KAAD,EAAA,UAAA;MACG,EAAS;MAAS;MAAE,OAAO,EAAS,cAAc,CAAC,QAAQ,EAAE;MAAE;MAC/D,EAAE,qCAAqC,YAAY;MAClD,EAAA,CAAA;KACJ,kBAAC,KAAD;MAAG,WAAU;gBAAb;OACG,EAAE,mCAAmC,SAAS;OAAC;OAAG,EAAS,UAAU;OACpE;;KACC;MAbA,EAAS,GAaT,CAEV;GACG,CAAA;EACI,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { PropsWithChildren } from 'react';
2
+
3
+ export declare function PageShell({ title, subtitle, children, }: PropsWithChildren<{
4
+ title: string;
5
+ subtitle: string;
6
+ }>): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=PageShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageShell.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/PageShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/C,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE,iBAAiB,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,2CAUxD"}
@@ -0,0 +1,18 @@
1
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
+ //#region src/ggnomad/pages/PageShell.tsx
3
+ function n({ title: n, subtitle: r, children: i }) {
4
+ return /* @__PURE__ */ t("div", {
5
+ className: "space-y-6 p-6",
6
+ children: [/* @__PURE__ */ t("header", { children: [/* @__PURE__ */ e("h1", {
7
+ className: "text-3xl font-semibold tracking-tight",
8
+ children: n
9
+ }), /* @__PURE__ */ e("p", {
10
+ className: "text-sm text-muted-foreground",
11
+ children: r
12
+ })] }), i]
13
+ });
14
+ }
15
+ //#endregion
16
+ export { n as PageShell };
17
+
18
+ //# sourceMappingURL=PageShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageShell.js","names":[],"sources":["../../../src/ggnomad/pages/PageShell.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react';\n\nexport function PageShell({\n title,\n subtitle,\n children,\n}: PropsWithChildren<{ title: string; subtitle: string }>) {\n return (\n <div className=\"space-y-6 p-6\">\n <header>\n <h1 className=\"text-3xl font-semibold tracking-tight\">{title}</h1>\n <p className=\"text-sm text-muted-foreground\">{subtitle}</p>\n </header>\n {children}\n </div>\n );\n}\n"],"mappings":";;AAEA,SAAgB,EAAU,EACxB,UACA,aACA,eACyD;AACzD,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,UAAD,EAAA,UAAA,CACE,kBAAC,MAAD;GAAI,WAAU;aAAyC;GAAW,CAAA,EAClE,kBAAC,KAAD;GAAG,WAAU;aAAiC;GAAa,CAAA,CACpD,EAAA,CAAA,EACR,EACG"}
@@ -0,0 +1,2 @@
1
+ export declare function PropertyDetailsPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=PropertyDetailsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyDetailsPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/PropertyDetailsPage.tsx"],"names":[],"mappings":"AAMA,wBAAgB,mBAAmB,4CA6ClC"}