@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.
- package/README.md +12 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +20716 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +53363 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/ggnomad/GGNomadRoot.d.ts +5 -0
- package/dist/ggnomad/GGNomadRoot.d.ts.map +1 -0
- package/dist/ggnomad/GGNomadRoot.js +118 -0
- package/dist/ggnomad/GGNomadRoot.js.map +1 -0
- package/dist/ggnomad/GGNomadRoutes.d.ts +2 -0
- package/dist/ggnomad/GGNomadRoutes.d.ts.map +1 -0
- package/dist/ggnomad/GGNomadRoutes.js +87 -0
- package/dist/ggnomad/GGNomadRoutes.js.map +1 -0
- package/dist/ggnomad/graphql.d.ts +17 -0
- package/dist/ggnomad/graphql.d.ts.map +1 -0
- package/dist/ggnomad/graphql.js +288 -0
- package/dist/ggnomad/graphql.js.map +1 -0
- package/dist/ggnomad/index.d.ts +4 -0
- package/dist/ggnomad/index.d.ts.map +1 -0
- package/dist/ggnomad/index.js +2 -0
- package/dist/ggnomad/pages/ActivityDetailsPage.d.ts +2 -0
- package/dist/ggnomad/pages/ActivityDetailsPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/ActivityDetailsPage.js +46 -0
- package/dist/ggnomad/pages/ActivityDetailsPage.js.map +1 -0
- package/dist/ggnomad/pages/AnalyticsPage.d.ts +2 -0
- package/dist/ggnomad/pages/AnalyticsPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/AnalyticsPage.js +64 -0
- package/dist/ggnomad/pages/AnalyticsPage.js.map +1 -0
- package/dist/ggnomad/pages/BookingsPage.d.ts +2 -0
- package/dist/ggnomad/pages/BookingsPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/BookingsPage.js +71 -0
- package/dist/ggnomad/pages/BookingsPage.js.map +1 -0
- package/dist/ggnomad/pages/DashboardPage.d.ts +2 -0
- package/dist/ggnomad/pages/DashboardPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/DashboardPage.js +128 -0
- package/dist/ggnomad/pages/DashboardPage.js.map +1 -0
- package/dist/ggnomad/pages/EntertainmentPage.d.ts +2 -0
- package/dist/ggnomad/pages/EntertainmentPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/EntertainmentPage.js +43 -0
- package/dist/ggnomad/pages/EntertainmentPage.js.map +1 -0
- package/dist/ggnomad/pages/EventDetailsPage.d.ts +2 -0
- package/dist/ggnomad/pages/EventDetailsPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/EventDetailsPage.js +49 -0
- package/dist/ggnomad/pages/EventDetailsPage.js.map +1 -0
- package/dist/ggnomad/pages/FavoritesPage.d.ts +2 -0
- package/dist/ggnomad/pages/FavoritesPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/FavoritesPage.js +40 -0
- package/dist/ggnomad/pages/FavoritesPage.js.map +1 -0
- package/dist/ggnomad/pages/HospitalityPage.d.ts +2 -0
- package/dist/ggnomad/pages/HospitalityPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/HospitalityPage.js +53 -0
- package/dist/ggnomad/pages/HospitalityPage.js.map +1 -0
- package/dist/ggnomad/pages/PageShell.d.ts +7 -0
- package/dist/ggnomad/pages/PageShell.d.ts.map +1 -0
- package/dist/ggnomad/pages/PageShell.js +18 -0
- package/dist/ggnomad/pages/PageShell.js.map +1 -0
- package/dist/ggnomad/pages/PropertyDetailsPage.d.ts +2 -0
- package/dist/ggnomad/pages/PropertyDetailsPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/PropertyDetailsPage.js +54 -0
- package/dist/ggnomad/pages/PropertyDetailsPage.js.map +1 -0
- package/dist/ggnomad/pages/ProviderPage.d.ts +2 -0
- package/dist/ggnomad/pages/ProviderPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/ProviderPage.js +42 -0
- package/dist/ggnomad/pages/ProviderPage.js.map +1 -0
- package/dist/ggnomad/pages/SearchPage.d.ts +2 -0
- package/dist/ggnomad/pages/SearchPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/SearchPage.js +70 -0
- package/dist/ggnomad/pages/SearchPage.js.map +1 -0
- package/dist/ggnomad/pages/TourDetailsPage.d.ts +2 -0
- package/dist/ggnomad/pages/TourDetailsPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/TourDetailsPage.js +49 -0
- package/dist/ggnomad/pages/TourDetailsPage.js.map +1 -0
- package/dist/ggnomad/pages/TourismPage.d.ts +2 -0
- package/dist/ggnomad/pages/TourismPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/TourismPage.js +75 -0
- package/dist/ggnomad/pages/TourismPage.js.map +1 -0
- package/dist/ggnomad/pages/TravelPage.d.ts +2 -0
- package/dist/ggnomad/pages/TravelPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/TravelPage.js +37 -0
- package/dist/ggnomad/pages/TravelPage.js.map +1 -0
- package/dist/ggnomad/providers/GGNomadProvider.d.ts +6 -0
- package/dist/ggnomad/providers/GGNomadProvider.d.ts.map +1 -0
- package/dist/ggnomad/providers/GGNomadProvider.js +62 -0
- package/dist/ggnomad/providers/GGNomadProvider.js.map +1 -0
- package/dist/ggnomad/types/index.d.ts +58 -0
- package/dist/ggnomad/types/index.d.ts.map +1 -0
- package/dist/ggnomad/utils/cn.d.ts +4 -0
- package/dist/ggnomad/utils/cn.d.ts.map +1 -0
- package/dist/ggnomad/utils/navigation.d.ts +2 -0
- package/dist/ggnomad/utils/navigation.d.ts.map +1 -0
- package/dist/ggnomad/utils/navigation.js +8 -0
- package/dist/ggnomad/utils/navigation.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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