@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,54 @@
1
+ import { GGNOMAD_PROPERTY_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/PropertyDetailsPage.tsx
7
+ function o() {
8
+ let { id: o = "" } = n(), { data: s } = r(e, {
9
+ variables: { id: o },
10
+ skip: !o
11
+ }), c = s?.ggnomadProperty;
12
+ return /* @__PURE__ */ i(t, {
13
+ title: c?.name ?? "Property details",
14
+ subtitle: "Detailed hospitality listing view",
15
+ children: c ? /* @__PURE__ */ a("div", {
16
+ className: "grid gap-4 md:grid-cols-2",
17
+ children: [/* @__PURE__ */ a("div", {
18
+ className: "rounded-lg border p-4",
19
+ children: [
20
+ /* @__PURE__ */ i("p", {
21
+ className: "text-sm text-muted-foreground",
22
+ children: "Type"
23
+ }),
24
+ /* @__PURE__ */ i("p", { children: c.type }),
25
+ /* @__PURE__ */ i("p", {
26
+ className: "mt-2 text-sm text-muted-foreground",
27
+ children: "Description"
28
+ }),
29
+ /* @__PURE__ */ i("p", { children: c.description ?? "No description" })
30
+ ]
31
+ }), /* @__PURE__ */ a("div", {
32
+ className: "rounded-lg border p-4",
33
+ children: [
34
+ /* @__PURE__ */ a("p", { children: [
35
+ "Price: ",
36
+ c.currency,
37
+ " ",
38
+ Number(c.pricePerNight).toFixed(2)
39
+ ] }),
40
+ /* @__PURE__ */ a("p", { children: ["Guests: ", c.maxGuests] }),
41
+ /* @__PURE__ */ a("p", { children: ["Rating: ", c.rating ?? "N/A"] }),
42
+ /* @__PURE__ */ a("p", { children: ["Provider: ", c.provider?.name ?? "Unassigned"] })
43
+ ]
44
+ })]
45
+ }) : /* @__PURE__ */ i("div", {
46
+ className: "rounded-lg border p-4 text-sm text-muted-foreground",
47
+ children: "No property found."
48
+ })
49
+ });
50
+ }
51
+ //#endregion
52
+ export { o as PropertyDetailsPage };
53
+
54
+ //# sourceMappingURL=PropertyDetailsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyDetailsPage.js","names":[],"sources":["../../../src/ggnomad/pages/PropertyDetailsPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { useParams } from 'react-router-dom';\n\nimport { GGNOMAD_PROPERTY_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function PropertyDetailsPage() {\n const { id = '' } = useParams();\n const { data } = useQuery<{\n ggnomadProperty: {\n name: string;\n type: string;\n description?: string;\n currency: string;\n pricePerNight: number;\n maxGuests: number;\n rating?: number;\n provider?: { name: string };\n } | null;\n }>(GGNOMAD_PROPERTY_QUERY, { variables: { id }, skip: !id });\n const property = data?.ggnomadProperty;\n\n return (\n <PageShell\n title={property?.name ?? 'Property details'}\n subtitle=\"Detailed hospitality listing view\"\n >\n {!property ? (\n <div className=\"rounded-lg border p-4 text-sm text-muted-foreground\">\n No property found.\n </div>\n ) : (\n <div className=\"grid gap-4 md:grid-cols-2\">\n <div className=\"rounded-lg border p-4\">\n <p className=\"text-sm text-muted-foreground\">Type</p>\n <p>{property.type}</p>\n <p className=\"mt-2 text-sm text-muted-foreground\">Description</p>\n <p>{property.description ?? 'No description'}</p>\n </div>\n <div className=\"rounded-lg border p-4\">\n <p>\n Price: {property.currency} {Number(property.pricePerNight).toFixed(2)}\n </p>\n <p>Guests: {property.maxGuests}</p>\n <p>Rating: {property.rating ?? 'N/A'}</p>\n <p>Provider: {property.provider?.name ?? 'Unassigned'}</p>\n </div>\n </div>\n )}\n </PageShell>\n );\n}\n"],"mappings":";;;;;;AAMA,SAAgB,IAAsB;CACpC,IAAM,EAAE,QAAK,OAAO,GAAW,EACzB,EAAE,YAAS,EAWd,GAAwB;EAAE,WAAW,EAAE,OAAI;EAAE,MAAM,CAAC;EAAI,CAAC,EACtD,IAAW,GAAM;AAEvB,QACE,kBAAC,GAAD;EACE,OAAO,GAAU,QAAQ;EACzB,UAAS;YAEP,IAKA,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAAQ,CAAA;KACrD,kBAAC,KAAD,EAAA,UAAI,EAAS,MAAS,CAAA;KACtB,kBAAC,KAAD;MAAG,WAAU;gBAAqC;MAAe,CAAA;KACjE,kBAAC,KAAD,EAAA,UAAI,EAAS,eAAe,kBAAqB,CAAA;KAC7C;OACN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,KAAD,EAAA,UAAA;MAAG;MACO,EAAS;MAAS;MAAE,OAAO,EAAS,cAAc,CAAC,QAAQ,EAAE;MACnE,EAAA,CAAA;KACJ,kBAAC,KAAD,EAAA,UAAA,CAAG,YAAS,EAAS,UAAc,EAAA,CAAA;KACnC,kBAAC,KAAD,EAAA,UAAA,CAAG,YAAS,EAAS,UAAU,MAAU,EAAA,CAAA;KACzC,kBAAC,KAAD,EAAA,UAAA,CAAG,cAAW,EAAS,UAAU,QAAQ,aAAiB,EAAA,CAAA;KACtD;MACF;OAnBN,kBAAC,OAAD;GAAK,WAAU;aAAsD;GAE/D,CAAA;EAmBE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function ProviderPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProviderPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/ProviderPage.tsx"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,4CAyC3B"}
@@ -0,0 +1,42 @@
1
+ import { GGNOMAD_PROVIDERS_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/ProviderPage.tsx
6
+ function a() {
7
+ let { data: a } = n(e, { variables: {
8
+ first: 20,
9
+ skip: 0
10
+ } });
11
+ return /* @__PURE__ */ r(t, {
12
+ title: "Provider Dashboard",
13
+ subtitle: "B2B provider operations and onboarding metrics",
14
+ children: /* @__PURE__ */ r("div", {
15
+ className: "grid gap-3 md:grid-cols-2",
16
+ children: (a?.ggnomadProviders ?? []).map((e) => /* @__PURE__ */ i("div", {
17
+ className: "rounded-lg border p-4 text-sm",
18
+ children: [
19
+ /* @__PURE__ */ r("p", {
20
+ className: "font-medium",
21
+ children: e.name
22
+ }),
23
+ /* @__PURE__ */ i("p", {
24
+ className: "text-muted-foreground",
25
+ children: [
26
+ e.type,
27
+ " - ",
28
+ e.status
29
+ ]
30
+ }),
31
+ /* @__PURE__ */ i("p", { children: ["Listings: ", e.listingCount] }),
32
+ /* @__PURE__ */ i("p", { children: ["Revenue: $", Number(e.totalRevenue).toLocaleString()] }),
33
+ /* @__PURE__ */ i("p", { children: ["Rating: ", e.rating ?? "N/A"] })
34
+ ]
35
+ }, e.id))
36
+ })
37
+ });
38
+ }
39
+ //#endregion
40
+ export { a as ProviderPage };
41
+
42
+ //# sourceMappingURL=ProviderPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderPage.js","names":[],"sources":["../../../src/ggnomad/pages/ProviderPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\n\nimport { GGNOMAD_PROVIDERS_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function ProviderPage() {\n const { data } = useQuery<{\n ggnomadProviders: Array<{\n id: string;\n name: string;\n type: string;\n status: string;\n listingCount: number;\n totalRevenue: number;\n rating?: number;\n }>;\n }>(GGNOMAD_PROVIDERS_QUERY, { variables: { first: 20, skip: 0 } });\n const providers = data?.ggnomadProviders ?? [];\n\n return (\n <PageShell title=\"Provider Dashboard\" subtitle=\"B2B provider operations and onboarding metrics\">\n <div className=\"grid gap-3 md:grid-cols-2\">\n {providers.map(\n (provider: {\n id: string;\n name: string;\n type: string;\n status: string;\n listingCount: number;\n totalRevenue: number;\n rating?: number;\n }) => (\n <div key={provider.id} className=\"rounded-lg border p-4 text-sm\">\n <p className=\"font-medium\">{provider.name}</p>\n <p className=\"text-muted-foreground\">\n {provider.type} - {provider.status}\n </p>\n <p>Listings: {provider.listingCount}</p>\n <p>Revenue: ${Number(provider.totalRevenue).toLocaleString()}</p>\n <p>Rating: {provider.rating ?? 'N/A'}</p>\n </div>\n )\n )}\n </div>\n </PageShell>\n );\n}\n"],"mappings":";;;;;AAKA,SAAgB,IAAe;CAC7B,IAAM,EAAE,YAAS,EAUd,GAAyB,EAAE,WAAW;EAAE,OAAO;EAAI,MAAM;EAAG,EAAE,CAAC;AAGlE,QACE,kBAAC,GAAD;EAAW,OAAM;EAAqB,UAAS;YAC7C,kBAAC,OAAD;GAAK,WAAU;cAJD,GAAM,oBAAoB,EAAE,EAK7B,KACR,MASC,kBAAC,OAAD;IAAuB,WAAU;cAAjC;KACE,kBAAC,KAAD;MAAG,WAAU;gBAAe,EAAS;MAAS,CAAA;KAC9C,kBAAC,KAAD;MAAG,WAAU;gBAAb;OACG,EAAS;OAAK;OAAI,EAAS;OAC1B;;KACJ,kBAAC,KAAD,EAAA,UAAA,CAAG,cAAW,EAAS,aAAiB,EAAA,CAAA;KACxC,kBAAC,KAAD,EAAA,UAAA,CAAG,cAAW,OAAO,EAAS,aAAa,CAAC,gBAAgB,CAAK,EAAA,CAAA;KACjE,kBAAC,KAAD,EAAA,UAAA,CAAG,YAAS,EAAS,UAAU,MAAU,EAAA,CAAA;KACrC;MARI,EAAS,GAQb,CAET;GACG,CAAA;EACI,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function SearchPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=SearchPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/SearchPage.tsx"],"names":[],"mappings":"AAWA,wBAAgB,UAAU,4CA0CzB"}
@@ -0,0 +1,70 @@
1
+ import { GGNOMAD_ACTIVITIES_QUERY as e, GGNOMAD_EVENTS_QUERY as t, GGNOMAD_PROPERTIES_QUERY as n, GGNOMAD_TOURS_QUERY as r } from "../graphql.js";
2
+ import { PageShell as i } from "./PageShell.js";
3
+ import { useI18n as a } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
4
+ import { useQuery as o } from "@apollo/client/react";
5
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
6
+ //#region src/ggnomad/pages/SearchPage.tsx
7
+ function l() {
8
+ let { t: l } = a(), u = o(n, { variables: {
9
+ first: 5,
10
+ skip: 0
11
+ } }), d = o(r, { variables: {
12
+ first: 5,
13
+ skip: 0
14
+ } }), f = o(t, { variables: {
15
+ first: 5,
16
+ skip: 0
17
+ } }), p = o(e, { variables: {
18
+ first: 5,
19
+ skip: 0
20
+ } });
21
+ return /* @__PURE__ */ s(i, {
22
+ title: l("ggnomad.search.title", "Global Search"),
23
+ subtitle: l("ggnomad.search.subtitle", "Cross-domain search across all GGNomad inventory"),
24
+ children: /* @__PURE__ */ c("div", {
25
+ className: "grid gap-4 md:grid-cols-2",
26
+ children: [
27
+ /* @__PURE__ */ c("div", {
28
+ className: "rounded-lg border p-4",
29
+ children: [
30
+ l("ggnomad.search.results.propertiesFound", "Properties found"),
31
+ ":",
32
+ " ",
33
+ u.data?.ggnomadProperties?.length ?? 0
34
+ ]
35
+ }),
36
+ /* @__PURE__ */ c("div", {
37
+ className: "rounded-lg border p-4",
38
+ children: [
39
+ l("ggnomad.search.results.toursFound", "Tours found"),
40
+ ":",
41
+ " ",
42
+ d.data?.ggnomadTours?.length ?? 0
43
+ ]
44
+ }),
45
+ /* @__PURE__ */ c("div", {
46
+ className: "rounded-lg border p-4",
47
+ children: [
48
+ l("ggnomad.search.results.eventsFound", "Events found"),
49
+ ":",
50
+ " ",
51
+ f.data?.ggnomadEvents?.length ?? 0
52
+ ]
53
+ }),
54
+ /* @__PURE__ */ c("div", {
55
+ className: "rounded-lg border p-4",
56
+ children: [
57
+ l("ggnomad.search.results.activitiesFound", "Activities found"),
58
+ ":",
59
+ " ",
60
+ p.data?.ggnomadActivities?.length ?? 0
61
+ ]
62
+ })
63
+ ]
64
+ })
65
+ });
66
+ }
67
+ //#endregion
68
+ export { l as SearchPage };
69
+
70
+ //# sourceMappingURL=SearchPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchPage.js","names":[],"sources":["../../../src/ggnomad/pages/SearchPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nimport {\n GGNOMAD_PROPERTIES_QUERY,\n GGNOMAD_TOURS_QUERY,\n GGNOMAD_EVENTS_QUERY,\n GGNOMAD_ACTIVITIES_QUERY,\n} from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function SearchPage() {\n const { t } = useI18n();\n const properties = useQuery<{ ggnomadProperties: Array<{ id: string }> }>(\n GGNOMAD_PROPERTIES_QUERY,\n { variables: { first: 5, skip: 0 } }\n );\n const tours = useQuery<{ ggnomadTours: Array<{ id: string }> }>(GGNOMAD_TOURS_QUERY, {\n variables: { first: 5, skip: 0 },\n });\n const events = useQuery<{ ggnomadEvents: Array<{ id: string }> }>(GGNOMAD_EVENTS_QUERY, {\n variables: { first: 5, skip: 0 },\n });\n const activities = useQuery<{ ggnomadActivities: Array<{ id: string }> }>(\n GGNOMAD_ACTIVITIES_QUERY,\n { variables: { first: 5, skip: 0 } }\n );\n\n return (\n <PageShell\n title={t('ggnomad.search.title', 'Global Search')}\n subtitle={t('ggnomad.search.subtitle', 'Cross-domain search across all GGNomad inventory')}\n >\n <div className=\"grid gap-4 md:grid-cols-2\">\n <div className=\"rounded-lg border p-4\">\n {t('ggnomad.search.results.propertiesFound', 'Properties found')}:{' '}\n {properties.data?.ggnomadProperties?.length ?? 0}\n </div>\n <div className=\"rounded-lg border p-4\">\n {t('ggnomad.search.results.toursFound', 'Tours found')}:{' '}\n {tours.data?.ggnomadTours?.length ?? 0}\n </div>\n <div className=\"rounded-lg border p-4\">\n {t('ggnomad.search.results.eventsFound', 'Events found')}:{' '}\n {events.data?.ggnomadEvents?.length ?? 0}\n </div>\n <div className=\"rounded-lg border p-4\">\n {t('ggnomad.search.results.activitiesFound', 'Activities found')}:{' '}\n {activities.data?.ggnomadActivities?.length ?? 0}\n </div>\n </div>\n </PageShell>\n );\n}\n"],"mappings":";;;;;;AAWA,SAAgB,IAAa;CAC3B,IAAM,EAAE,SAAM,GAAS,EACjB,IAAa,EACjB,GACA,EAAE,WAAW;EAAE,OAAO;EAAG,MAAM;EAAG,EAAE,CACrC,EACK,IAAQ,EAAkD,GAAqB,EACnF,WAAW;EAAE,OAAO;EAAG,MAAM;EAAG,EACjC,CAAC,EACI,IAAS,EAAmD,GAAsB,EACtF,WAAW;EAAE,OAAO;EAAG,MAAM;EAAG,EACjC,CAAC,EACI,IAAa,EACjB,GACA,EAAE,WAAW;EAAE,OAAO;EAAG,MAAM;EAAG,EAAE,CACrC;AAED,QACE,kBAAC,GAAD;EACE,OAAO,EAAE,wBAAwB,gBAAgB;EACjD,UAAU,EAAE,2BAA2B,mDAAmD;YAE1F,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,OAAD;KAAK,WAAU;eAAf;MACG,EAAE,0CAA0C,mBAAmB;MAAC;MAAE;MAClE,EAAW,MAAM,mBAAmB,UAAU;MAC3C;;IACN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACG,EAAE,qCAAqC,cAAc;MAAC;MAAE;MACxD,EAAM,MAAM,cAAc,UAAU;MACjC;;IACN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACG,EAAE,sCAAsC,eAAe;MAAC;MAAE;MAC1D,EAAO,MAAM,eAAe,UAAU;MACnC;;IACN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACG,EAAE,0CAA0C,mBAAmB;MAAC;MAAE;MAClE,EAAW,MAAM,mBAAmB,UAAU;MAC3C;;IACF;;EACI,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function TourDetailsPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=TourDetailsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TourDetailsPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/TourDetailsPage.tsx"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,4CA4C9B"}
@@ -0,0 +1,49 @@
1
+ import { GGNOMAD_TOUR_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/TourDetailsPage.tsx
7
+ function o() {
8
+ let { id: o = "" } = n(), { data: s } = r(e, {
9
+ variables: { id: o },
10
+ skip: !o
11
+ }), c = s?.ggnomadTour;
12
+ return /* @__PURE__ */ i(t, {
13
+ title: c?.name ?? "Tour details",
14
+ subtitle: "Tour package details and booking context",
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: ["Duration: ", c.duration] }),
21
+ /* @__PURE__ */ a("p", { children: ["Difficulty: ", c.difficulty ?? "N/A"] }),
22
+ /* @__PURE__ */ a("p", { children: ["Guide: ", c.guideName ?? "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: "mb-2 font-medium",
34
+ children: "Highlights"
35
+ }), /* @__PURE__ */ i("ul", {
36
+ className: "list-inside list-disc",
37
+ children: (c.highlights ?? []).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 tour found."
43
+ })
44
+ });
45
+ }
46
+ //#endregion
47
+ export { o as TourDetailsPage };
48
+
49
+ //# sourceMappingURL=TourDetailsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TourDetailsPage.js","names":[],"sources":["../../../src/ggnomad/pages/TourDetailsPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { useParams } from 'react-router-dom';\n\nimport { GGNOMAD_TOUR_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function TourDetailsPage() {\n const { id = '' } = useParams();\n const { data } = useQuery<{\n ggnomadTour: {\n name: string;\n duration: string;\n difficulty?: string;\n guideName?: string;\n currency: string;\n price: number;\n highlights: string[];\n } | null;\n }>(GGNOMAD_TOUR_QUERY, { variables: { id }, skip: !id });\n const tour = data?.ggnomadTour;\n\n return (\n <PageShell\n title={tour?.name ?? 'Tour details'}\n subtitle=\"Tour package details and booking context\"\n >\n {!tour ? (\n <div className=\"rounded-lg border p-4 text-muted-foreground\">No tour 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>Duration: {tour.duration}</p>\n <p>Difficulty: {tour.difficulty ?? 'N/A'}</p>\n <p>Guide: {tour.guideName ?? 'N/A'}</p>\n <p>\n Price: {tour.currency} {Number(tour.price).toFixed(2)}\n </p>\n </div>\n <div className=\"rounded-lg border p-4\">\n <p className=\"mb-2 font-medium\">Highlights</p>\n <ul className=\"list-inside list-disc\">\n {(tour.highlights ?? []).map((highlight: string) => (\n <li key={highlight}>{highlight}</li>\n ))}\n </ul>\n </div>\n </div>\n )}\n </PageShell>\n );\n}\n"],"mappings":";;;;;;AAMA,SAAgB,IAAkB;CAChC,IAAM,EAAE,QAAK,OAAO,GAAW,EACzB,EAAE,YAAS,EAUd,GAAoB;EAAE,WAAW,EAAE,OAAI;EAAE,MAAM,CAAC;EAAI,CAAC,EAClD,IAAO,GAAM;AAEnB,QACE,kBAAC,GAAD;EACE,OAAO,GAAM,QAAQ;EACrB,UAAS;YAEP,IAGA,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,KAAD,EAAA,UAAA,CAAG,cAAW,EAAK,SAAa,EAAA,CAAA;KAChC,kBAAC,KAAD,EAAA,UAAA,CAAG,gBAAa,EAAK,cAAc,MAAU,EAAA,CAAA;KAC7C,kBAAC,KAAD,EAAA,UAAA,CAAG,WAAQ,EAAK,aAAa,MAAU,EAAA,CAAA;KACvC,kBAAC,KAAD,EAAA,UAAA;MAAG;MACO,EAAK;MAAS;MAAE,OAAO,EAAK,MAAM,CAAC,QAAQ,EAAE;MACnD,EAAA,CAAA;KACA;OACN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,KAAD;KAAG,WAAU;eAAmB;KAAc,CAAA,EAC9C,kBAAC,MAAD;KAAI,WAAU;gBACV,EAAK,cAAc,EAAE,EAAE,KAAK,MAC5B,kBAAC,MAAD,EAAA,UAAqB,GAAe,EAA3B,EAA2B,CACpC;KACC,CAAA,CACD;MACF;OAnBN,kBAAC,OAAD;GAAK,WAAU;aAA8C;GAAoB,CAAA;EAqBzE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function TourismPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=TourismPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TourismPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/TourismPage.tsx"],"names":[],"mappings":"AAMA,wBAAgB,WAAW,4CA8E1B"}
@@ -0,0 +1,75 @@
1
+ import { GGNOMAD_ACTIVITIES_QUERY as e, GGNOMAD_TOURS_QUERY as t } from "../graphql.js";
2
+ import { PageShell as n } from "./PageShell.js";
3
+ import { Link as r } from "react-router-dom";
4
+ import { useQuery as i } from "@apollo/client/react";
5
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
+ //#region src/ggnomad/pages/TourismPage.tsx
7
+ function s() {
8
+ let { data: s } = i(t, { variables: {
9
+ first: 12,
10
+ skip: 0
11
+ } }), { data: c } = i(e, { variables: {
12
+ first: 12,
13
+ skip: 0
14
+ } }), l = s?.ggnomadTours ?? [], u = c?.ggnomadActivities ?? [];
15
+ return /* @__PURE__ */ a(n, {
16
+ title: "Tourism",
17
+ subtitle: "Tours and curated activity experiences",
18
+ children: /* @__PURE__ */ o("div", {
19
+ className: "grid gap-6 md:grid-cols-2",
20
+ children: [/* @__PURE__ */ o("div", {
21
+ className: "space-y-2",
22
+ children: [/* @__PURE__ */ a("h2", {
23
+ className: "text-lg font-medium",
24
+ children: "Tours"
25
+ }), l.map((e) => /* @__PURE__ */ o(r, {
26
+ to: `tours/${e.id}`,
27
+ className: "block rounded-lg border p-3 text-sm hover:bg-muted/30",
28
+ children: [
29
+ /* @__PURE__ */ a("p", {
30
+ className: "font-medium",
31
+ children: e.name
32
+ }),
33
+ /* @__PURE__ */ a("p", {
34
+ className: "text-muted-foreground",
35
+ children: e.duration
36
+ }),
37
+ /* @__PURE__ */ o("p", { children: [
38
+ e.currency,
39
+ " ",
40
+ Number(e.price).toFixed(2)
41
+ ] })
42
+ ]
43
+ }, e.id))]
44
+ }), /* @__PURE__ */ o("div", {
45
+ className: "space-y-2",
46
+ children: [/* @__PURE__ */ a("h2", {
47
+ className: "text-lg font-medium",
48
+ children: "Activities"
49
+ }), u.map((e) => /* @__PURE__ */ o(r, {
50
+ to: `activities/${e.id}`,
51
+ className: "block rounded-lg border p-3 text-sm hover:bg-muted/30",
52
+ children: [
53
+ /* @__PURE__ */ a("p", {
54
+ className: "font-medium",
55
+ children: e.name
56
+ }),
57
+ /* @__PURE__ */ a("p", {
58
+ className: "text-muted-foreground",
59
+ children: e.duration
60
+ }),
61
+ /* @__PURE__ */ o("p", { children: [
62
+ e.currency,
63
+ " ",
64
+ Number(e.price).toFixed(2)
65
+ ] })
66
+ ]
67
+ }, e.id))]
68
+ })]
69
+ })
70
+ });
71
+ }
72
+ //#endregion
73
+ export { s as TourismPage };
74
+
75
+ //# sourceMappingURL=TourismPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TourismPage.js","names":[],"sources":["../../../src/ggnomad/pages/TourismPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { Link } from 'react-router-dom';\n\nimport { GGNOMAD_ACTIVITIES_QUERY, GGNOMAD_TOURS_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function TourismPage() {\n const { data: toursData } = useQuery<{\n ggnomadTours: Array<{\n id: string;\n name: string;\n duration: string;\n price: number;\n currency: string;\n }>;\n }>(GGNOMAD_TOURS_QUERY, {\n variables: { first: 12, skip: 0 },\n });\n const { data: activitiesData } = useQuery<{\n ggnomadActivities: Array<{\n id: string;\n name: string;\n duration: string;\n price: number;\n currency: string;\n }>;\n }>(GGNOMAD_ACTIVITIES_QUERY, { variables: { first: 12, skip: 0 } });\n const tours = toursData?.ggnomadTours ?? [];\n const activities = activitiesData?.ggnomadActivities ?? [];\n\n return (\n <PageShell title=\"Tourism\" subtitle=\"Tours and curated activity experiences\">\n <div className=\"grid gap-6 md:grid-cols-2\">\n <div className=\"space-y-2\">\n <h2 className=\"text-lg font-medium\">Tours</h2>\n {tours.map(\n (tour: {\n id: string;\n name: string;\n duration: string;\n price: number;\n currency: string;\n }) => (\n <Link\n key={tour.id}\n to={`tours/${tour.id}`}\n className=\"block rounded-lg border p-3 text-sm hover:bg-muted/30\"\n >\n <p className=\"font-medium\">{tour.name}</p>\n <p className=\"text-muted-foreground\">{tour.duration}</p>\n <p>\n {tour.currency} {Number(tour.price).toFixed(2)}\n </p>\n </Link>\n )\n )}\n </div>\n <div className=\"space-y-2\">\n <h2 className=\"text-lg font-medium\">Activities</h2>\n {activities.map(\n (activity: {\n id: string;\n name: string;\n duration: string;\n price: number;\n currency: string;\n }) => (\n <Link\n key={activity.id}\n to={`activities/${activity.id}`}\n className=\"block rounded-lg border p-3 text-sm hover:bg-muted/30\"\n >\n <p className=\"font-medium\">{activity.name}</p>\n <p className=\"text-muted-foreground\">{activity.duration}</p>\n <p>\n {activity.currency} {Number(activity.price).toFixed(2)}\n </p>\n </Link>\n )\n )}\n </div>\n </div>\n </PageShell>\n );\n}\n"],"mappings":";;;;;;AAMA,SAAgB,IAAc;CAC5B,IAAM,EAAE,MAAM,MAAc,EAQzB,GAAqB,EACtB,WAAW;EAAE,OAAO;EAAI,MAAM;EAAG,EAClC,CAAC,EACI,EAAE,MAAM,MAAmB,EAQ9B,GAA0B,EAAE,WAAW;EAAE,OAAO;EAAI,MAAM;EAAG,EAAE,CAAC,EAC7D,IAAQ,GAAW,gBAAgB,EAAE,EACrC,IAAa,GAAgB,qBAAqB,EAAE;AAE1D,QACE,kBAAC,GAAD;EAAW,OAAM;EAAU,UAAS;YAClC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,MAAD;KAAI,WAAU;eAAsB;KAAU,CAAA,EAC7C,EAAM,KACJ,MAOC,kBAAC,GAAD;KAEE,IAAI,SAAS,EAAK;KAClB,WAAU;eAHZ;MAKE,kBAAC,KAAD;OAAG,WAAU;iBAAe,EAAK;OAAS,CAAA;MAC1C,kBAAC,KAAD;OAAG,WAAU;iBAAyB,EAAK;OAAa,CAAA;MACxD,kBAAC,KAAD,EAAA,UAAA;OACG,EAAK;OAAS;OAAE,OAAO,EAAK,MAAM,CAAC,QAAQ,EAAE;OAC5C,EAAA,CAAA;MACC;OATA,EAAK,GASL,CAEV,CACG;OACN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,MAAD;KAAI,WAAU;eAAsB;KAAe,CAAA,EAClD,EAAW,KACT,MAOC,kBAAC,GAAD;KAEE,IAAI,cAAc,EAAS;KAC3B,WAAU;eAHZ;MAKE,kBAAC,KAAD;OAAG,WAAU;iBAAe,EAAS;OAAS,CAAA;MAC9C,kBAAC,KAAD;OAAG,WAAU;iBAAyB,EAAS;OAAa,CAAA;MAC5D,kBAAC,KAAD,EAAA,UAAA;OACG,EAAS;OAAS;OAAE,OAAO,EAAS,MAAM,CAAC,QAAQ,EAAE;OACpD,EAAA,CAAA;MACC;OATA,EAAS,GAST,CAEV,CACG;MACF;;EACI,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function TravelPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=TravelPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TravelPage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/TravelPage.tsx"],"names":[],"mappings":"AAKA,wBAAgB,UAAU,4CA2CzB"}
@@ -0,0 +1,37 @@
1
+ import { GGNOMAD_TRIPS_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/TravelPage.tsx
6
+ function a() {
7
+ let { data: a } = n(e, { variables: {
8
+ first: 20,
9
+ skip: 0
10
+ } });
11
+ return /* @__PURE__ */ r(t, {
12
+ title: "Travel",
13
+ subtitle: "Live trip inventory and route management",
14
+ children: /* @__PURE__ */ r("div", {
15
+ className: "space-y-2",
16
+ children: (a?.ggnomadTrips ?? []).map((e) => /* @__PURE__ */ i("div", {
17
+ className: "flex items-center justify-between rounded-lg border p-3 text-sm",
18
+ children: [/* @__PURE__ */ i("span", { children: [
19
+ e.name,
20
+ " (",
21
+ e.transportMode,
22
+ ")"
23
+ ] }), /* @__PURE__ */ i("span", { children: [
24
+ e.status,
25
+ " - ",
26
+ e.currency,
27
+ " ",
28
+ Number(e.price).toFixed(2)
29
+ ] })]
30
+ }, e.id))
31
+ })
32
+ });
33
+ }
34
+ //#endregion
35
+ export { a as TravelPage };
36
+
37
+ //# sourceMappingURL=TravelPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TravelPage.js","names":[],"sources":["../../../src/ggnomad/pages/TravelPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\n\nimport { GGNOMAD_TRIPS_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function TravelPage() {\n const { data } = useQuery<{\n ggnomadTrips: Array<{\n id: string;\n name: string;\n transportMode: string;\n status: string;\n price: number;\n currency: string;\n }>;\n }>(GGNOMAD_TRIPS_QUERY, {\n variables: { first: 20, skip: 0 },\n });\n const trips = data?.ggnomadTrips ?? [];\n\n return (\n <PageShell title=\"Travel\" subtitle=\"Live trip inventory and route management\">\n <div className=\"space-y-2\">\n {trips.map(\n (trip: {\n id: string;\n name: string;\n transportMode: string;\n status: string;\n price: number;\n currency: string;\n }) => (\n <div\n key={trip.id}\n className=\"flex items-center justify-between rounded-lg border p-3 text-sm\"\n >\n <span>\n {trip.name} ({trip.transportMode})\n </span>\n <span>\n {trip.status} - {trip.currency} {Number(trip.price).toFixed(2)}\n </span>\n </div>\n )\n )}\n </div>\n </PageShell>\n );\n}\n"],"mappings":";;;;;AAKA,SAAgB,IAAa;CAC3B,IAAM,EAAE,YAAS,EASd,GAAqB,EACtB,WAAW;EAAE,OAAO;EAAI,MAAM;EAAG,EAClC,CAAC;AAGF,QACE,kBAAC,GAAD;EAAW,OAAM;EAAS,UAAS;YACjC,kBAAC,OAAD;GAAK,WAAU;cAJL,GAAM,gBAAgB,EAAE,EAKzB,KACJ,MAQC,kBAAC,OAAD;IAEE,WAAU;cAFZ,CAIE,kBAAC,QAAD,EAAA,UAAA;KACG,EAAK;KAAK;KAAG,EAAK;KAAc;KAC5B,EAAA,CAAA,EACP,kBAAC,QAAD,EAAA,UAAA;KACG,EAAK;KAAO;KAAI,EAAK;KAAS;KAAE,OAAO,EAAK,MAAM,CAAC,QAAQ,EAAE;KACzD,EAAA,CAAA,CACH;MATC,EAAK,GASN,CAET;GACG,CAAA;EACI,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ import { GGNomadRootProps } from '../types';
3
+
4
+ export declare const useGGNomad: () => GGNomadRootProps;
5
+ export declare const GGNomadProvider: FC<PropsWithChildren<GGNomadRootProps>>;
6
+ //# sourceMappingURL=GGNomadProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GGNomadProvider.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/providers/GGNomadProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAQnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAMjD,eAAO,MAAM,UAAU,QAAO,gBAM7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAsEnE,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { createContext as e, useContext as t, useMemo as n } from "react";
2
+ import { MemoryRouter as r } from "react-router-dom";
3
+ import { ApolloProvider as i } from "@apollo/client/react";
4
+ import { ApolloClient as a, HttpLink as o, InMemoryCache as s, from as c } from "@apollo/client/core";
5
+ import { jsx as l } from "react/jsx-runtime";
6
+ import { onError as u } from "@apollo/client/link/error";
7
+ import { setContext as d } from "@apollo/client/link/context";
8
+ //#region src/ggnomad/providers/GGNomadProvider.tsx
9
+ var f = e(null), p = () => {
10
+ let e = t(f);
11
+ if (!e) throw Error("useGGNomad must be used within GGNomadProvider");
12
+ return e;
13
+ }, m = ({ children: e, ...t }) => {
14
+ let { apiGatewayUrl: p, authToken: m, workspaceToken: h, onAuthError: g, basePath: _ } = t, v = n(() => {
15
+ let e = `${(p ?? "").replace(/\/$/, "")}/workspaces/graphql`, t = u(({ error: e }) => {
16
+ let t = "errors" in (e ?? {}) ? e.errors : void 0, n = "cause" in (e ?? {}) ? e.cause : void 0, r = t?.some((e) => ["UNAUTHENTICATED", "FORBIDDEN"].includes(String(e.extensions?.code ?? ""))), i = typeof n == "object" && n && "statusCode" in n ? [401, 403].includes(Number(n.statusCode)) : !1;
17
+ (r || i) && g?.();
18
+ }), n = d((e, t) => ({ headers: {
19
+ ...t.headers,
20
+ ...m ? { Authorization: `Bearer ${m}` } : {},
21
+ ...h ? { "X-Workspace-Authorization": `Bearer ${h}` } : {}
22
+ } })), r = new o({
23
+ uri: e,
24
+ credentials: "include"
25
+ });
26
+ return new a({
27
+ cache: new s(),
28
+ link: c([
29
+ t,
30
+ n,
31
+ r
32
+ ]),
33
+ defaultOptions: {
34
+ watchQuery: {
35
+ fetchPolicy: "cache-and-network",
36
+ errorPolicy: "all"
37
+ },
38
+ query: {
39
+ fetchPolicy: "network-only",
40
+ errorPolicy: "all"
41
+ },
42
+ mutate: { errorPolicy: "all" }
43
+ }
44
+ });
45
+ }, [
46
+ p,
47
+ m,
48
+ h,
49
+ g
50
+ ]), y = !!_, b = /* @__PURE__ */ l(f.Provider, {
51
+ value: t,
52
+ children: e
53
+ }), x = y ? b : /* @__PURE__ */ l(i, {
54
+ client: v,
55
+ children: b
56
+ });
57
+ return y ? x : /* @__PURE__ */ l(r, { children: x });
58
+ };
59
+ //#endregion
60
+ export { m as GGNomadProvider, p as useGGNomad };
61
+
62
+ //# sourceMappingURL=GGNomadProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GGNomadProvider.js","names":[],"sources":["../../../src/ggnomad/providers/GGNomadProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\nimport { MemoryRouter } from 'react-router-dom';\nimport { ApolloProvider } from '@apollo/client/react';\nimport { ApolloClient, ApolloLink, HttpLink, InMemoryCache, from } from '@apollo/client/core';\nimport { onError } from '@apollo/client/link/error';\nimport { setContext } from '@apollo/client/link/context';\n\nimport type { GGNomadRootProps } from '../types';\n\ntype GGNomadContextValue = GGNomadRootProps;\n\nconst GGNomadContext = createContext<GGNomadContextValue | null>(null);\n\nexport const useGGNomad = (): GGNomadRootProps => {\n const context = useContext(GGNomadContext);\n if (!context) {\n throw new Error('useGGNomad must be used within GGNomadProvider');\n }\n return context;\n};\n\nexport const GGNomadProvider: FC<PropsWithChildren<GGNomadRootProps>> = ({\n children,\n ...props\n}) => {\n const { apiGatewayUrl, authToken, workspaceToken, onAuthError, basePath } = props;\n\n const client = useMemo(() => {\n const endpoint = `${(apiGatewayUrl ?? '').replace(/\\/$/, '')}/workspaces/graphql`;\n\n const errorLink = onError(({ error }) => {\n const graphQLErrors =\n 'errors' in (error ?? {})\n ? (error as { errors?: Array<{ extensions?: { code?: string } }> }).errors\n : undefined;\n const networkError =\n 'cause' in (error ?? {}) ? (error as { cause?: { statusCode?: number } }).cause : undefined;\n\n const authGraphError = graphQLErrors?.some((graphQLError) =>\n ['UNAUTHENTICATED', 'FORBIDDEN'].includes(String(graphQLError.extensions?.code ?? ''))\n );\n const authNetworkError =\n typeof networkError === 'object' && networkError !== null && 'statusCode' in networkError\n ? [401, 403].includes(Number((networkError as { statusCode?: number }).statusCode))\n : false;\n\n if (authGraphError || authNetworkError) {\n onAuthError?.();\n }\n });\n\n const authLink = setContext((_, prevContext) => ({\n headers: {\n ...(prevContext.headers as Record<string, string> | undefined),\n ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),\n ...(workspaceToken ? { 'X-Workspace-Authorization': `Bearer ${workspaceToken}` } : {}),\n },\n }));\n\n const httpLink = new HttpLink({\n uri: endpoint,\n credentials: 'include',\n });\n\n return new ApolloClient({\n cache: new InMemoryCache(),\n link: from([errorLink as ApolloLink, authLink, httpLink]),\n defaultOptions: {\n watchQuery: { fetchPolicy: 'cache-and-network', errorPolicy: 'all' },\n query: { fetchPolicy: 'network-only', errorPolicy: 'all' },\n mutate: { errorPolicy: 'all' },\n },\n });\n }, [apiGatewayUrl, authToken, workspaceToken, onAuthError]);\n\n const isIntegrated = !!basePath;\n const contextProvider = (\n <GGNomadContext.Provider value={props}>{children}</GGNomadContext.Provider>\n );\n\n const content = isIntegrated ? (\n contextProvider\n ) : (\n <ApolloProvider client={client}>{contextProvider}</ApolloProvider>\n );\n\n if (isIntegrated) {\n return content;\n }\n\n return <MemoryRouter>{content}</MemoryRouter>;\n};\n"],"mappings":";;;;;;;;AAYA,IAAM,IAAiB,EAA0C,KAAK,EAEzD,UAAqC;CAChD,IAAM,IAAU,EAAW,EAAe;AAC1C,KAAI,CAAC,EACH,OAAU,MAAM,iDAAiD;AAEnE,QAAO;GAGI,KAA4D,EACvE,aACA,GAAG,QACC;CACJ,IAAM,EAAE,kBAAe,cAAW,mBAAgB,gBAAa,gBAAa,GAEtE,IAAS,QAAc;EAC3B,IAAM,IAAW,IAAI,KAAiB,IAAI,QAAQ,OAAO,GAAG,CAAC,sBAEvD,IAAY,GAAS,EAAE,eAAY;GACvC,IAAM,IACJ,aAAa,KAAS,EAAE,IACnB,EAAiE,SAClE,KAAA,GACA,IACJ,YAAY,KAAS,EAAE,IAAK,EAA8C,QAAQ,KAAA,GAE9E,IAAiB,GAAe,MAAM,MAC1C,CAAC,mBAAmB,YAAY,CAAC,SAAS,OAAO,EAAa,YAAY,QAAQ,GAAG,CAAC,CACvF,EACK,IACJ,OAAO,KAAiB,YAAY,KAAyB,gBAAgB,IACzE,CAAC,KAAK,IAAI,CAAC,SAAS,OAAQ,EAAyC,WAAW,CAAC,GACjF;AAEN,IAAI,KAAkB,MACpB,KAAe;IAEjB,EAEI,IAAW,GAAY,GAAG,OAAiB,EAC/C,SAAS;GACP,GAAI,EAAY;GAChB,GAAI,IAAY,EAAE,eAAe,UAAU,KAAa,GAAG,EAAE;GAC7D,GAAI,IAAiB,EAAE,6BAA6B,UAAU,KAAkB,GAAG,EAAE;GACtF,EACF,EAAE,EAEG,IAAW,IAAI,EAAS;GAC5B,KAAK;GACL,aAAa;GACd,CAAC;AAEF,SAAO,IAAI,EAAa;GACtB,OAAO,IAAI,GAAe;GAC1B,MAAM,EAAK;IAAC;IAAyB;IAAU;IAAS,CAAC;GACzD,gBAAgB;IACd,YAAY;KAAE,aAAa;KAAqB,aAAa;KAAO;IACpE,OAAO;KAAE,aAAa;KAAgB,aAAa;KAAO;IAC1D,QAAQ,EAAE,aAAa,OAAO;IAC/B;GACF,CAAC;IACD;EAAC;EAAe;EAAW;EAAgB;EAAY,CAAC,EAErD,IAAe,CAAC,CAAC,GACjB,IACJ,kBAAC,EAAe,UAAhB;EAAyB,OAAO;EAAQ;EAAmC,CAAA,EAGvE,IAAU,IACd,IAEA,kBAAC,GAAD;EAAwB;YAAS;EAAiC,CAAA;AAOpE,QAJI,IACK,IAGF,kBAAC,GAAD,EAAA,UAAe,GAAuB,CAAA"}
@@ -0,0 +1,58 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface NavItem {
4
+ id: string;
5
+ label: string;
6
+ path: string;
7
+ icon?: React.ReactNode;
8
+ order?: number;
9
+ group?: string;
10
+ children?: NavItem[];
11
+ }
12
+ export interface FooterItem {
13
+ id: string;
14
+ label: string;
15
+ type: 'status' | 'action';
16
+ order?: number;
17
+ section: 'left' | 'center' | 'right';
18
+ }
19
+ export interface GGNomadRootProps {
20
+ basePath?: string;
21
+ workspaceId?: string;
22
+ tenantId?: string;
23
+ apiGatewayUrl?: string;
24
+ authToken?: string;
25
+ /**
26
+ * Workspace-scoped JWT token. The gateway requires both authToken
27
+ * (Authorization) and workspaceToken (X-Workspace-Authorization)
28
+ * for workspace-scoped operations.
29
+ */
30
+ workspaceToken?: string;
31
+ navigate?: (path: string) => void;
32
+ currentUser?: {
33
+ id: string;
34
+ email: string;
35
+ firstName?: string;
36
+ lastName?: string;
37
+ avatar?: string;
38
+ username?: string;
39
+ name?: string;
40
+ role?: string;
41
+ } | null;
42
+ registerNavItems?: (items: NavItem | NavItem[]) => () => void;
43
+ registerFooterItems?: (items: FooterItem | FooterItem[]) => () => void;
44
+ onAuthError?: () => void;
45
+ }
46
+ export interface OverviewMetric {
47
+ label: string;
48
+ value: string;
49
+ trend: string;
50
+ }
51
+ export interface WorkItem {
52
+ id: string;
53
+ title: string;
54
+ status: 'active' | 'planned' | 'at_risk' | 'completed';
55
+ owner: string;
56
+ updatedAt: string;
57
+ }
58
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,IAAI,CAAC;IACT,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,KAAK,MAAM,IAAI,CAAC;IAC9D,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,KAAK,MAAM,IAAI,CAAC;IACvE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,4 @@
1
+ import { ClassValue } from 'clsx';
2
+
3
+ export declare function cn(...inputs: ClassValue[]): string;
4
+ //# sourceMappingURL=cn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/utils/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -0,0 +1,2 @@
1
+ export declare function joinPath(basePath: string, relativePath: string): string;
2
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/utils/navigation.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAIvE"}
@@ -0,0 +1,8 @@
1
+ //#region src/ggnomad/utils/navigation.ts
2
+ function e(e, t) {
3
+ return (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
4
+ }
5
+ //#endregion
6
+ export { e as joinPath };
7
+
8
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","names":[],"sources":["../../../src/ggnomad/utils/navigation.ts"],"sourcesContent":["export function joinPath(basePath: string, relativePath: string): string {\n const cleanBase = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;\n const cleanPath = relativePath.startsWith('/') ? relativePath : `/${relativePath}`;\n return cleanBase + cleanPath;\n}\n"],"mappings":";AAAA,SAAgB,EAAS,GAAkB,GAA8B;AAGvE,SAFkB,EAAS,SAAS,IAAI,GAAG,EAAS,MAAM,GAAG,GAAG,GAAG,MACjD,EAAa,WAAW,IAAI,GAAG,IAAe,IAAI"}
@@ -0,0 +1,2 @@
1
+ export * from './ggnomad';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ import { useGGNomad as e } from "./ggnomad/providers/GGNomadProvider.js";
2
+ import { GGNomadRoot as t } from "./ggnomad/GGNomadRoot.js";
3
+ import "./ggnomad/index.js";
4
+ export { t as GGNomadRoot, e as useGGNomad };