@burdenoff/microfe-ggnomad 2026.726.1 → 2026.726.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ggnomad/GGNomadRoot.d.ts.map +1 -1
- package/dist/ggnomad/GGNomadRoot.js +63 -56
- package/dist/ggnomad/GGNomadRoot.js.map +1 -1
- package/dist/ggnomad/GGNomadRoutes.d.ts.map +1 -1
- package/dist/ggnomad/GGNomadRoutes.js +9 -5
- package/dist/ggnomad/GGNomadRoutes.js.map +1 -1
- package/dist/ggnomad/components/AuditTrailDialog.d.ts +17 -0
- package/dist/ggnomad/components/AuditTrailDialog.d.ts.map +1 -0
- package/dist/ggnomad/components/AuditTrailDialog.js +88 -0
- package/dist/ggnomad/components/AuditTrailDialog.js.map +1 -0
- package/dist/ggnomad/components/index.d.ts +1 -0
- package/dist/ggnomad/components/index.d.ts.map +1 -1
- package/dist/ggnomad/components/index.js +1 -0
- package/dist/ggnomad/graphql.d.ts +12 -0
- package/dist/ggnomad/graphql.d.ts.map +1 -1
- package/dist/ggnomad/graphql.js +102 -1
- package/dist/ggnomad/graphql.js.map +1 -1
- package/dist/ggnomad/pages/OperationsQueuePage.d.ts +11 -0
- package/dist/ggnomad/pages/OperationsQueuePage.d.ts.map +1 -0
- package/dist/ggnomad/pages/OperationsQueuePage.js +323 -0
- package/dist/ggnomad/pages/OperationsQueuePage.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GGNomadRoot.d.ts","sourceRoot":"","sources":["../../src/ggnomad/GGNomadRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GGNomadRoot.d.ts","sourceRoot":"","sources":["../../src/ggnomad/GGNomadRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAsBhC,OAAO,KAAK,EAAE,gBAAgB,EAAW,MAAM,SAAS,CAAC;AAGzD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAwI5C,CAAC"}
|
|
@@ -2,131 +2,138 @@ import { GGNomadProvider as e } from "./providers/GGNomadProvider.js";
|
|
|
2
2
|
import { joinPath as t } from "./utils/navigation.js";
|
|
3
3
|
import { GGNomadRoutes as n } from "./GGNomadRoutes.js";
|
|
4
4
|
import { useEffect as r } from "react";
|
|
5
|
-
import { Activity as i, BarChart3 as a, Building as o, CalendarCheck as s,
|
|
6
|
-
import { useI18n as
|
|
7
|
-
import { jsx as
|
|
8
|
-
import { FeatureFlagProvider as
|
|
5
|
+
import { Activity as i, BarChart3 as a, Building as o, CalendarCheck as s, ClipboardCheck as c, Compass as l, LayoutDashboard as u, Map as d, MapPinned as f, Search as p, ShieldCheck as m, Star as h, Tickets as g } from "lucide-react";
|
|
6
|
+
import { useI18n as _ } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
7
|
+
import { jsx as v } from "react/jsx-runtime";
|
|
8
|
+
import { FeatureFlagProvider as y } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
9
9
|
//#region src/ggnomad/GGNomadRoot.tsx
|
|
10
|
-
var
|
|
11
|
-
let { registerNavItems:
|
|
10
|
+
var b = (b) => {
|
|
11
|
+
let { registerNavItems: x, registerFooterItems: S, basePath: C = "/" } = b, { t: w } = _();
|
|
12
12
|
return r(() => {
|
|
13
|
-
if (
|
|
13
|
+
if (x) return x({
|
|
14
14
|
id: "ggnomad",
|
|
15
|
-
label:
|
|
16
|
-
path:
|
|
17
|
-
icon: /* @__PURE__ */
|
|
15
|
+
label: w("ggnomad.nav.root", "GGNomad"),
|
|
16
|
+
path: C,
|
|
17
|
+
icon: /* @__PURE__ */ v(u, { size: 18 }),
|
|
18
18
|
order: 80,
|
|
19
19
|
group: "products",
|
|
20
20
|
children: [
|
|
21
21
|
{
|
|
22
22
|
id: "ggnomad-dashboard",
|
|
23
|
-
label:
|
|
24
|
-
path:
|
|
25
|
-
icon: /* @__PURE__ */
|
|
23
|
+
label: w("ggnomad.nav.dashboard", "Dashboard"),
|
|
24
|
+
path: C,
|
|
25
|
+
icon: /* @__PURE__ */ v(u, { size: 16 }),
|
|
26
26
|
order: 0
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
id: "ggnomad-search",
|
|
30
|
-
label:
|
|
31
|
-
path: t(
|
|
32
|
-
icon: /* @__PURE__ */
|
|
30
|
+
label: w("ggnomad.nav.search", "Search"),
|
|
31
|
+
path: t(C, "search"),
|
|
32
|
+
icon: /* @__PURE__ */ v(p, { size: 16 }),
|
|
33
33
|
order: 5
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
id: "ggnomad-travel",
|
|
37
|
-
label:
|
|
38
|
-
path: t(
|
|
39
|
-
icon: /* @__PURE__ */
|
|
37
|
+
label: w("ggnomad.nav.travel", "Travel"),
|
|
38
|
+
path: t(C, "travel"),
|
|
39
|
+
icon: /* @__PURE__ */ v(l, { size: 16 }),
|
|
40
40
|
order: 10
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
id: "ggnomad-hospitality",
|
|
44
|
-
label:
|
|
45
|
-
path: t(
|
|
46
|
-
icon: /* @__PURE__ */
|
|
44
|
+
label: w("ggnomad.nav.hospitality", "Hospitality"),
|
|
45
|
+
path: t(C, "hospitality"),
|
|
46
|
+
icon: /* @__PURE__ */ v(o, { size: 16 }),
|
|
47
47
|
order: 20
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
id: "ggnomad-tourism",
|
|
51
|
-
label:
|
|
52
|
-
path: t(
|
|
53
|
-
icon: /* @__PURE__ */
|
|
51
|
+
label: w("ggnomad.nav.tourism", "Tourism"),
|
|
52
|
+
path: t(C, "tourism"),
|
|
53
|
+
icon: /* @__PURE__ */ v(f, { size: 16 }),
|
|
54
54
|
order: 30
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
id: "ggnomad-entertainment",
|
|
58
|
-
label:
|
|
59
|
-
path: t(
|
|
60
|
-
icon: /* @__PURE__ */
|
|
58
|
+
label: w("ggnomad.nav.entertainment", "Entertainment"),
|
|
59
|
+
path: t(C, "entertainment"),
|
|
60
|
+
icon: /* @__PURE__ */ v(i, { size: 16 }),
|
|
61
61
|
order: 40
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
id: "ggnomad-trips",
|
|
65
|
-
label:
|
|
66
|
-
path: t(
|
|
67
|
-
icon: /* @__PURE__ */
|
|
65
|
+
label: w("ggnomad.nav.trips", "Trips"),
|
|
66
|
+
path: t(C, "trips"),
|
|
67
|
+
icon: /* @__PURE__ */ v(d, { size: 16 }),
|
|
68
68
|
order: 45
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
id: "ggnomad-bookings",
|
|
72
|
-
label:
|
|
73
|
-
path: t(
|
|
74
|
-
icon: /* @__PURE__ */
|
|
72
|
+
label: w("ggnomad.nav.bookings", "Bookings"),
|
|
73
|
+
path: t(C, "bookings"),
|
|
74
|
+
icon: /* @__PURE__ */ v(s, { size: 16 }),
|
|
75
75
|
order: 50
|
|
76
76
|
},
|
|
77
|
+
{
|
|
78
|
+
id: "ggnomad-operations",
|
|
79
|
+
label: w("ggnomad.nav.operations", "Operations Queue"),
|
|
80
|
+
path: t(C, "operations"),
|
|
81
|
+
icon: /* @__PURE__ */ v(c, { size: 16 }),
|
|
82
|
+
order: 52
|
|
83
|
+
},
|
|
77
84
|
{
|
|
78
85
|
id: "ggnomad-travel-policy",
|
|
79
|
-
label:
|
|
80
|
-
path: t(
|
|
81
|
-
icon: /* @__PURE__ */
|
|
86
|
+
label: w("ggnomad.nav.travelPolicy", "Travel Policy"),
|
|
87
|
+
path: t(C, "travel-policy"),
|
|
88
|
+
icon: /* @__PURE__ */ v(m, { size: 16 }),
|
|
82
89
|
order: 55
|
|
83
90
|
},
|
|
84
91
|
{
|
|
85
92
|
id: "ggnomad-favorites",
|
|
86
|
-
label:
|
|
87
|
-
path: t(
|
|
88
|
-
icon: /* @__PURE__ */
|
|
93
|
+
label: w("ggnomad.nav.favorites", "Favorites"),
|
|
94
|
+
path: t(C, "favorites"),
|
|
95
|
+
icon: /* @__PURE__ */ v(h, { size: 16 }),
|
|
89
96
|
order: 60
|
|
90
97
|
},
|
|
91
98
|
{
|
|
92
99
|
id: "ggnomad-provider",
|
|
93
|
-
label:
|
|
94
|
-
path: t(
|
|
95
|
-
icon: /* @__PURE__ */
|
|
100
|
+
label: w("ggnomad.nav.providers", "Providers"),
|
|
101
|
+
path: t(C, "provider"),
|
|
102
|
+
icon: /* @__PURE__ */ v(g, { size: 16 }),
|
|
96
103
|
order: 70
|
|
97
104
|
},
|
|
98
105
|
{
|
|
99
106
|
id: "ggnomad-analytics",
|
|
100
|
-
label:
|
|
101
|
-
path: t(
|
|
102
|
-
icon: /* @__PURE__ */
|
|
107
|
+
label: w("ggnomad.nav.analytics", "Analytics"),
|
|
108
|
+
path: t(C, "analytics"),
|
|
109
|
+
icon: /* @__PURE__ */ v(a, { size: 16 }),
|
|
103
110
|
order: 80
|
|
104
111
|
}
|
|
105
112
|
]
|
|
106
113
|
});
|
|
107
114
|
}, [
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
115
|
+
x,
|
|
116
|
+
C,
|
|
117
|
+
w
|
|
111
118
|
]), r(() => {
|
|
112
|
-
if (
|
|
119
|
+
if (S) return S([{
|
|
113
120
|
id: "ggnomad-ready",
|
|
114
|
-
label:
|
|
121
|
+
label: w("ggnomad.footer.ready", "GGNomad Ready"),
|
|
115
122
|
type: "status",
|
|
116
123
|
section: "left",
|
|
117
124
|
order: 10
|
|
118
125
|
}]);
|
|
119
|
-
}, [
|
|
126
|
+
}, [S, w]), /* @__PURE__ */ v(y, {
|
|
120
127
|
workspaceId: null,
|
|
121
128
|
gateway: "global",
|
|
122
129
|
defaultEnabled: !0,
|
|
123
|
-
children: /* @__PURE__ */
|
|
124
|
-
...
|
|
125
|
-
children: /* @__PURE__ */
|
|
130
|
+
children: /* @__PURE__ */ v(e, {
|
|
131
|
+
...b,
|
|
132
|
+
children: /* @__PURE__ */ v(n, {})
|
|
126
133
|
})
|
|
127
134
|
});
|
|
128
135
|
};
|
|
129
136
|
//#endregion
|
|
130
|
-
export {
|
|
137
|
+
export { b as GGNomadRoot };
|
|
131
138
|
|
|
132
139
|
//# sourceMappingURL=GGNomadRoot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GGNomadRoot.js","names":[],"sources":["../../src/ggnomad/GGNomadRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useEffect } from 'react';\nimport {\n Activity,\n BarChart3,\n Building,\n CalendarCheck,\n Compass,\n LayoutDashboard,\n MapPinned,\n Map,\n Search,\n ShieldCheck,\n Star,\n Tickets,\n} from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nimport { GGNomadRoutes } from './GGNomadRoutes';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { GGNomadProvider } from './providers/GGNomadProvider';\nimport type { GGNomadRootProps, NavItem } from './types';\nimport { joinPath } from './utils/navigation';\n\nexport const GGNomadRoot: FC<GGNomadRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const { t } = useI18n();\n\n useEffect(() => {\n if (!registerNavItems) {\n return;\n }\n\n const navItem: NavItem = {\n id: 'ggnomad',\n label: t('ggnomad.nav.root', 'GGNomad'),\n path: basePath,\n icon: <LayoutDashboard size={18} />,\n order: 80,\n group: 'products',\n children: [\n {\n id: 'ggnomad-dashboard',\n label: t('ggnomad.nav.dashboard', 'Dashboard'),\n path: basePath,\n icon: <LayoutDashboard size={16} />,\n order: 0,\n },\n {\n id: 'ggnomad-search',\n label: t('ggnomad.nav.search', 'Search'),\n path: joinPath(basePath, 'search'),\n icon: <Search size={16} />,\n order: 5,\n },\n {\n id: 'ggnomad-travel',\n label: t('ggnomad.nav.travel', 'Travel'),\n path: joinPath(basePath, 'travel'),\n icon: <Compass size={16} />,\n order: 10,\n },\n {\n id: 'ggnomad-hospitality',\n label: t('ggnomad.nav.hospitality', 'Hospitality'),\n path: joinPath(basePath, 'hospitality'),\n icon: <Building size={16} />,\n order: 20,\n },\n {\n id: 'ggnomad-tourism',\n label: t('ggnomad.nav.tourism', 'Tourism'),\n path: joinPath(basePath, 'tourism'),\n icon: <MapPinned size={16} />,\n order: 30,\n },\n {\n id: 'ggnomad-entertainment',\n label: t('ggnomad.nav.entertainment', 'Entertainment'),\n path: joinPath(basePath, 'entertainment'),\n icon: <Activity size={16} />,\n order: 40,\n },\n {\n id: 'ggnomad-trips',\n label: t('ggnomad.nav.trips', 'Trips'),\n path: joinPath(basePath, 'trips'),\n icon: <Map size={16} />,\n order: 45,\n },\n {\n id: 'ggnomad-bookings',\n label: t('ggnomad.nav.bookings', 'Bookings'),\n path: joinPath(basePath, 'bookings'),\n icon: <CalendarCheck size={16} />,\n order: 50,\n },\n {\n id: 'ggnomad-travel-policy',\n label: t('ggnomad.nav.travelPolicy', 'Travel Policy'),\n path: joinPath(basePath, 'travel-policy'),\n icon: <ShieldCheck size={16} />,\n order: 55,\n },\n {\n id: 'ggnomad-favorites',\n label: t('ggnomad.nav.favorites', 'Favorites'),\n path: joinPath(basePath, 'favorites'),\n icon: <Star size={16} />,\n order: 60,\n },\n {\n id: 'ggnomad-provider',\n label: t('ggnomad.nav.providers', 'Providers'),\n path: joinPath(basePath, 'provider'),\n icon: <Tickets size={16} />,\n order: 70,\n },\n {\n id: 'ggnomad-analytics',\n label: t('ggnomad.nav.analytics', 'Analytics'),\n path: joinPath(basePath, 'analytics'),\n icon: <BarChart3 size={16} />,\n order: 80,\n },\n ],\n };\n\n return registerNavItems(navItem);\n }, [registerNavItems, basePath, t]);\n\n useEffect(() => {\n if (!registerFooterItems) {\n return;\n }\n return registerFooterItems([\n {\n id: 'ggnomad-ready',\n label: t('ggnomad.footer.ready', 'GGNomad Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, t]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <GGNomadProvider {...props}>\n <GGNomadRoutes />\n </GGNomadProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"GGNomadRoot.js","names":[],"sources":["../../src/ggnomad/GGNomadRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useEffect } from 'react';\nimport {\n Activity,\n BarChart3,\n Building,\n CalendarCheck,\n ClipboardCheck,\n Compass,\n LayoutDashboard,\n MapPinned,\n Map,\n Search,\n ShieldCheck,\n Star,\n Tickets,\n} from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nimport { GGNomadRoutes } from './GGNomadRoutes';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { GGNomadProvider } from './providers/GGNomadProvider';\nimport type { GGNomadRootProps, NavItem } from './types';\nimport { joinPath } from './utils/navigation';\n\nexport const GGNomadRoot: FC<GGNomadRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const { t } = useI18n();\n\n useEffect(() => {\n if (!registerNavItems) {\n return;\n }\n\n const navItem: NavItem = {\n id: 'ggnomad',\n label: t('ggnomad.nav.root', 'GGNomad'),\n path: basePath,\n icon: <LayoutDashboard size={18} />,\n order: 80,\n group: 'products',\n children: [\n {\n id: 'ggnomad-dashboard',\n label: t('ggnomad.nav.dashboard', 'Dashboard'),\n path: basePath,\n icon: <LayoutDashboard size={16} />,\n order: 0,\n },\n {\n id: 'ggnomad-search',\n label: t('ggnomad.nav.search', 'Search'),\n path: joinPath(basePath, 'search'),\n icon: <Search size={16} />,\n order: 5,\n },\n {\n id: 'ggnomad-travel',\n label: t('ggnomad.nav.travel', 'Travel'),\n path: joinPath(basePath, 'travel'),\n icon: <Compass size={16} />,\n order: 10,\n },\n {\n id: 'ggnomad-hospitality',\n label: t('ggnomad.nav.hospitality', 'Hospitality'),\n path: joinPath(basePath, 'hospitality'),\n icon: <Building size={16} />,\n order: 20,\n },\n {\n id: 'ggnomad-tourism',\n label: t('ggnomad.nav.tourism', 'Tourism'),\n path: joinPath(basePath, 'tourism'),\n icon: <MapPinned size={16} />,\n order: 30,\n },\n {\n id: 'ggnomad-entertainment',\n label: t('ggnomad.nav.entertainment', 'Entertainment'),\n path: joinPath(basePath, 'entertainment'),\n icon: <Activity size={16} />,\n order: 40,\n },\n {\n id: 'ggnomad-trips',\n label: t('ggnomad.nav.trips', 'Trips'),\n path: joinPath(basePath, 'trips'),\n icon: <Map size={16} />,\n order: 45,\n },\n {\n id: 'ggnomad-bookings',\n label: t('ggnomad.nav.bookings', 'Bookings'),\n path: joinPath(basePath, 'bookings'),\n icon: <CalendarCheck size={16} />,\n order: 50,\n },\n {\n id: 'ggnomad-operations',\n label: t('ggnomad.nav.operations', 'Operations Queue'),\n path: joinPath(basePath, 'operations'),\n icon: <ClipboardCheck size={16} />,\n order: 52,\n },\n {\n id: 'ggnomad-travel-policy',\n label: t('ggnomad.nav.travelPolicy', 'Travel Policy'),\n path: joinPath(basePath, 'travel-policy'),\n icon: <ShieldCheck size={16} />,\n order: 55,\n },\n {\n id: 'ggnomad-favorites',\n label: t('ggnomad.nav.favorites', 'Favorites'),\n path: joinPath(basePath, 'favorites'),\n icon: <Star size={16} />,\n order: 60,\n },\n {\n id: 'ggnomad-provider',\n label: t('ggnomad.nav.providers', 'Providers'),\n path: joinPath(basePath, 'provider'),\n icon: <Tickets size={16} />,\n order: 70,\n },\n {\n id: 'ggnomad-analytics',\n label: t('ggnomad.nav.analytics', 'Analytics'),\n path: joinPath(basePath, 'analytics'),\n icon: <BarChart3 size={16} />,\n order: 80,\n },\n ],\n };\n\n return registerNavItems(navItem);\n }, [registerNavItems, basePath, t]);\n\n useEffect(() => {\n if (!registerFooterItems) {\n return;\n }\n return registerFooterItems([\n {\n id: 'ggnomad-ready',\n label: t('ggnomad.footer.ready', 'GGNomad Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, t]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <GGNomadProvider {...props}>\n <GGNomadRoutes />\n </GGNomadProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GGNomadRoutes.d.ts","sourceRoot":"","sources":["../../src/ggnomad/GGNomadRoutes.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GGNomadRoutes.d.ts","sourceRoot":"","sources":["../../src/ggnomad/GGNomadRoutes.tsx"],"names":[],"mappings":"AAgEA,wBAAgB,aAAa,gCA0B5B"}
|
|
@@ -4,16 +4,16 @@ import { Loader2 as r } from "lucide-react";
|
|
|
4
4
|
import { Navigate as i, Route as a, Routes as o } from "react-router-dom";
|
|
5
5
|
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
6
6
|
//#region src/ggnomad/GGNomadRoutes.tsx
|
|
7
|
-
var l = n(() => import("./pages/SearchPage.js").then((e) => ({ default: e.SearchPage }))), u = n(() => import("./pages/TravelPage.js").then((e) => ({ default: e.TravelPage }))), d = n(() => import("./pages/HospitalityPage.js").then((e) => ({ default: e.HospitalityPage }))), f = n(() => import("./pages/PropertyDetailsPage.js").then((e) => ({ default: e.PropertyDetailsPage }))), p = n(() => import("./pages/TourismPage.js").then((e) => ({ default: e.TourismPage }))), m = n(() => import("./pages/TourDetailsPage.js").then((e) => ({ default: e.TourDetailsPage }))), h = n(() => import("./pages/ActivityDetailsPage.js").then((e) => ({ default: e.ActivityDetailsPage }))), g = n(() => import("./pages/EntertainmentPage.js").then((e) => ({ default: e.EntertainmentPage }))), _ = n(() => import("./pages/EventDetailsPage.js").then((e) => ({ default: e.EventDetailsPage }))), v = n(() => import("./pages/BookingsPage.js").then((e) => ({ default: e.BookingsPage }))), y = n(() => import("./pages/FavoritesPage.js").then((e) => ({ default: e.FavoritesPage }))), b = n(() => import("./pages/ProviderPage.js").then((e) => ({ default: e.ProviderPage }))), x = n(() => import("./pages/AnalyticsPage.js").then((e) => ({ default: e.AnalyticsPage }))), S = n(() => import("./pages/TripsPage.js").then((e) => ({ default: e.TripsPage }))), C = n(() => import("./pages/TripPlanDetailPage.js").then((e) => ({ default: e.TripPlanDetailPage }))), w = n(() => import("./pages/TravelPolicyPage.js").then((e) => ({ default: e.TravelPolicyPage })));
|
|
8
|
-
function
|
|
7
|
+
var l = n(() => import("./pages/SearchPage.js").then((e) => ({ default: e.SearchPage }))), u = n(() => import("./pages/TravelPage.js").then((e) => ({ default: e.TravelPage }))), d = n(() => import("./pages/HospitalityPage.js").then((e) => ({ default: e.HospitalityPage }))), f = n(() => import("./pages/PropertyDetailsPage.js").then((e) => ({ default: e.PropertyDetailsPage }))), p = n(() => import("./pages/TourismPage.js").then((e) => ({ default: e.TourismPage }))), m = n(() => import("./pages/TourDetailsPage.js").then((e) => ({ default: e.TourDetailsPage }))), h = n(() => import("./pages/ActivityDetailsPage.js").then((e) => ({ default: e.ActivityDetailsPage }))), g = n(() => import("./pages/EntertainmentPage.js").then((e) => ({ default: e.EntertainmentPage }))), _ = n(() => import("./pages/EventDetailsPage.js").then((e) => ({ default: e.EventDetailsPage }))), v = n(() => import("./pages/BookingsPage.js").then((e) => ({ default: e.BookingsPage }))), y = n(() => import("./pages/FavoritesPage.js").then((e) => ({ default: e.FavoritesPage }))), b = n(() => import("./pages/ProviderPage.js").then((e) => ({ default: e.ProviderPage }))), x = n(() => import("./pages/AnalyticsPage.js").then((e) => ({ default: e.AnalyticsPage }))), S = n(() => import("./pages/TripsPage.js").then((e) => ({ default: e.TripsPage }))), C = n(() => import("./pages/TripPlanDetailPage.js").then((e) => ({ default: e.TripPlanDetailPage }))), w = n(() => import("./pages/TravelPolicyPage.js").then((e) => ({ default: e.TravelPolicyPage }))), T = n(() => import("./pages/OperationsQueuePage.js").then((e) => ({ default: e.OperationsQueuePage })));
|
|
8
|
+
function E() {
|
|
9
9
|
return /* @__PURE__ */ s("div", {
|
|
10
10
|
className: "flex min-h-[320px] items-center justify-center",
|
|
11
11
|
children: /* @__PURE__ */ s(r, { className: "h-8 w-8 animate-spin text-primary" })
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
|
-
function
|
|
14
|
+
function D() {
|
|
15
15
|
return /* @__PURE__ */ s(t, {
|
|
16
|
-
fallback: /* @__PURE__ */ s(
|
|
16
|
+
fallback: /* @__PURE__ */ s(E, {}),
|
|
17
17
|
children: /* @__PURE__ */ c(o, { children: [
|
|
18
18
|
/* @__PURE__ */ s(a, {
|
|
19
19
|
index: !0,
|
|
@@ -63,6 +63,10 @@ function E() {
|
|
|
63
63
|
path: "travel-policy",
|
|
64
64
|
element: /* @__PURE__ */ s(w, {})
|
|
65
65
|
}),
|
|
66
|
+
/* @__PURE__ */ s(a, {
|
|
67
|
+
path: "operations",
|
|
68
|
+
element: /* @__PURE__ */ s(T, {})
|
|
69
|
+
}),
|
|
66
70
|
/* @__PURE__ */ s(a, {
|
|
67
71
|
path: "favorites",
|
|
68
72
|
element: /* @__PURE__ */ s(y, {})
|
|
@@ -94,6 +98,6 @@ function E() {
|
|
|
94
98
|
});
|
|
95
99
|
}
|
|
96
100
|
//#endregion
|
|
97
|
-
export {
|
|
101
|
+
export { D as GGNomadRoutes };
|
|
98
102
|
|
|
99
103
|
//# sourceMappingURL=GGNomadRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GGNomadRoutes.js","names":[],"sources":["../../src/ggnomad/GGNomadRoutes.tsx"],"sourcesContent":["import { lazy, Suspense } from 'react';\nimport { Loader2 } from 'lucide-react';\nimport { Navigate, Route, Routes } from 'react-router-dom';\n\nimport { DashboardPage } from './pages/DashboardPage';\n\nconst SearchPage = lazy(() =>\n import('./pages/SearchPage').then((m) => ({ default: m.SearchPage }))\n);\nconst TravelPage = lazy(() =>\n import('./pages/TravelPage').then((m) => ({ default: m.TravelPage }))\n);\nconst HospitalityPage = lazy(() =>\n import('./pages/HospitalityPage').then((m) => ({ default: m.HospitalityPage }))\n);\nconst PropertyDetailsPage = lazy(() =>\n import('./pages/PropertyDetailsPage').then((m) => ({ default: m.PropertyDetailsPage }))\n);\nconst TourismPage = lazy(() =>\n import('./pages/TourismPage').then((m) => ({ default: m.TourismPage }))\n);\nconst TourDetailsPage = lazy(() =>\n import('./pages/TourDetailsPage').then((m) => ({ default: m.TourDetailsPage }))\n);\nconst ActivityDetailsPage = lazy(() =>\n import('./pages/ActivityDetailsPage').then((m) => ({ default: m.ActivityDetailsPage }))\n);\nconst EntertainmentPage = lazy(() =>\n import('./pages/EntertainmentPage').then((m) => ({ default: m.EntertainmentPage }))\n);\nconst EventDetailsPage = lazy(() =>\n import('./pages/EventDetailsPage').then((m) => ({ default: m.EventDetailsPage }))\n);\nconst BookingsPage = lazy(() =>\n import('./pages/BookingsPage').then((m) => ({ default: m.BookingsPage }))\n);\nconst FavoritesPage = lazy(() =>\n import('./pages/FavoritesPage').then((m) => ({ default: m.FavoritesPage }))\n);\nconst ProviderPage = lazy(() =>\n import('./pages/ProviderPage').then((m) => ({ default: m.ProviderPage }))\n);\nconst AnalyticsPage = lazy(() =>\n import('./pages/AnalyticsPage').then((m) => ({ default: m.AnalyticsPage }))\n);\nconst TripsPage = lazy(() => import('./pages/TripsPage').then((m) => ({ default: m.TripsPage })));\nconst TripPlanDetailPage = lazy(() =>\n import('./pages/TripPlanDetailPage').then((m) => ({ default: m.TripPlanDetailPage }))\n);\nconst TravelPolicyPage = lazy(() =>\n import('./pages/TravelPolicyPage').then((m) => ({ default: m.TravelPolicyPage }))\n);\n\nfunction PageLoader() {\n return (\n <div className=\"flex min-h-[320px] items-center justify-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-primary\" />\n </div>\n );\n}\n\nexport function GGNomadRoutes() {\n return (\n <Suspense fallback={<PageLoader />}>\n <Routes>\n <Route index element={<DashboardPage />} />\n <Route path=\"search\" element={<SearchPage />} />\n <Route path=\"travel\" element={<TravelPage />} />\n <Route path=\"hospitality\" element={<HospitalityPage />} />\n <Route path=\"hospitality/:id\" element={<PropertyDetailsPage />} />\n <Route path=\"tourism\" element={<TourismPage />} />\n <Route path=\"tourism/tours/:id\" element={<TourDetailsPage />} />\n <Route path=\"tourism/activities/:id\" element={<ActivityDetailsPage />} />\n <Route path=\"entertainment\" element={<EntertainmentPage />} />\n <Route path=\"entertainment/:id\" element={<EventDetailsPage />} />\n <Route path=\"bookings\" element={<BookingsPage />} />\n <Route path=\"travel-policy\" element={<TravelPolicyPage />} />\n <Route path=\"favorites\" element={<FavoritesPage />} />\n <Route path=\"provider\" element={<ProviderPage />} />\n <Route path=\"analytics\" element={<AnalyticsPage />} />\n <Route path=\"trips\" element={<TripsPage />} />\n <Route path=\"trips/:id\" element={<TripPlanDetailPage />} />\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GGNomadRoutes.js","names":[],"sources":["../../src/ggnomad/GGNomadRoutes.tsx"],"sourcesContent":["import { lazy, Suspense } from 'react';\nimport { Loader2 } from 'lucide-react';\nimport { Navigate, Route, Routes } from 'react-router-dom';\n\nimport { DashboardPage } from './pages/DashboardPage';\n\nconst SearchPage = lazy(() =>\n import('./pages/SearchPage').then((m) => ({ default: m.SearchPage }))\n);\nconst TravelPage = lazy(() =>\n import('./pages/TravelPage').then((m) => ({ default: m.TravelPage }))\n);\nconst HospitalityPage = lazy(() =>\n import('./pages/HospitalityPage').then((m) => ({ default: m.HospitalityPage }))\n);\nconst PropertyDetailsPage = lazy(() =>\n import('./pages/PropertyDetailsPage').then((m) => ({ default: m.PropertyDetailsPage }))\n);\nconst TourismPage = lazy(() =>\n import('./pages/TourismPage').then((m) => ({ default: m.TourismPage }))\n);\nconst TourDetailsPage = lazy(() =>\n import('./pages/TourDetailsPage').then((m) => ({ default: m.TourDetailsPage }))\n);\nconst ActivityDetailsPage = lazy(() =>\n import('./pages/ActivityDetailsPage').then((m) => ({ default: m.ActivityDetailsPage }))\n);\nconst EntertainmentPage = lazy(() =>\n import('./pages/EntertainmentPage').then((m) => ({ default: m.EntertainmentPage }))\n);\nconst EventDetailsPage = lazy(() =>\n import('./pages/EventDetailsPage').then((m) => ({ default: m.EventDetailsPage }))\n);\nconst BookingsPage = lazy(() =>\n import('./pages/BookingsPage').then((m) => ({ default: m.BookingsPage }))\n);\nconst FavoritesPage = lazy(() =>\n import('./pages/FavoritesPage').then((m) => ({ default: m.FavoritesPage }))\n);\nconst ProviderPage = lazy(() =>\n import('./pages/ProviderPage').then((m) => ({ default: m.ProviderPage }))\n);\nconst AnalyticsPage = lazy(() =>\n import('./pages/AnalyticsPage').then((m) => ({ default: m.AnalyticsPage }))\n);\nconst TripsPage = lazy(() => import('./pages/TripsPage').then((m) => ({ default: m.TripsPage })));\nconst TripPlanDetailPage = lazy(() =>\n import('./pages/TripPlanDetailPage').then((m) => ({ default: m.TripPlanDetailPage }))\n);\nconst TravelPolicyPage = lazy(() =>\n import('./pages/TravelPolicyPage').then((m) => ({ default: m.TravelPolicyPage }))\n);\nconst OperationsQueuePage = lazy(() =>\n import('./pages/OperationsQueuePage').then((m) => ({ default: m.OperationsQueuePage }))\n);\n\nfunction PageLoader() {\n return (\n <div className=\"flex min-h-[320px] items-center justify-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-primary\" />\n </div>\n );\n}\n\nexport function GGNomadRoutes() {\n return (\n <Suspense fallback={<PageLoader />}>\n <Routes>\n <Route index element={<DashboardPage />} />\n <Route path=\"search\" element={<SearchPage />} />\n <Route path=\"travel\" element={<TravelPage />} />\n <Route path=\"hospitality\" element={<HospitalityPage />} />\n <Route path=\"hospitality/:id\" element={<PropertyDetailsPage />} />\n <Route path=\"tourism\" element={<TourismPage />} />\n <Route path=\"tourism/tours/:id\" element={<TourDetailsPage />} />\n <Route path=\"tourism/activities/:id\" element={<ActivityDetailsPage />} />\n <Route path=\"entertainment\" element={<EntertainmentPage />} />\n <Route path=\"entertainment/:id\" element={<EventDetailsPage />} />\n <Route path=\"bookings\" element={<BookingsPage />} />\n <Route path=\"travel-policy\" element={<TravelPolicyPage />} />\n <Route path=\"operations\" element={<OperationsQueuePage />} />\n <Route path=\"favorites\" element={<FavoritesPage />} />\n <Route path=\"provider\" element={<ProviderPage />} />\n <Route path=\"analytics\" element={<AnalyticsPage />} />\n <Route path=\"trips\" element={<TripsPage />} />\n <Route path=\"trips/:id\" element={<TripPlanDetailPage />} />\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":";;;;;;AAMA,IAAM,IAAa,QACjB,OAAO,yBAAsB,MAAM,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CACtE,GACM,IAAa,QACjB,OAAO,yBAAsB,MAAM,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CACtE,GACM,IAAkB,QACtB,OAAO,8BAA2B,MAAM,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAChF,GACM,IAAsB,QAC1B,OAAO,kCAA+B,MAAM,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,CACxF,GACM,IAAc,QAClB,OAAO,0BAAuB,MAAM,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,CACxE,GACM,IAAkB,QACtB,OAAO,8BAA2B,MAAM,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAChF,GACM,IAAsB,QAC1B,OAAO,kCAA+B,MAAM,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,CACxF,GACM,IAAoB,QACxB,OAAO,gCAA6B,MAAM,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,CACpF,GACM,IAAmB,QACvB,OAAO,+BAA4B,MAAM,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAClF,GACM,IAAe,QACnB,OAAO,2BAAwB,MAAM,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAC1E,GACM,IAAgB,QACpB,OAAO,4BAAyB,MAAM,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,CAC5E,GACM,IAAe,QACnB,OAAO,2BAAwB,MAAM,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAC1E,GACM,IAAgB,QACpB,OAAO,4BAAyB,MAAM,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,CAC5E,GACM,IAAY,QAAW,OAAO,wBAAqB,MAAM,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAC1F,IAAqB,QACzB,OAAO,iCAA8B,MAAM,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,CACtF,GACM,IAAmB,QACvB,OAAO,+BAA4B,MAAM,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAClF,GACM,IAAsB,QAC1B,OAAO,kCAA+B,MAAM,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,CACxF;AAEA,SAAS,IAAa;CACpB,OACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAS,WAAU,oCAAqC,CAAA;CACrD,CAAA;AAET;AAEA,SAAgB,IAAgB;CAC9B,OACE,kBAAC,GAAD;EAAU,UAAU,kBAAC,GAAD,CAAa,CAAA;YAC/B,kBAAC,GAAD,EAAA,UAAA;GACE,kBAAC,GAAD;IAAO,OAAA;IAAM,SAAS,kBAAC,GAAD,CAAgB,CAAA;GAAI,CAAA;GAC1C,kBAAC,GAAD;IAAO,MAAK;IAAS,SAAS,kBAAC,GAAD,CAAa,CAAA;GAAI,CAAA;GAC/C,kBAAC,GAAD;IAAO,MAAK;IAAS,SAAS,kBAAC,GAAD,CAAa,CAAA;GAAI,CAAA;GAC/C,kBAAC,GAAD;IAAO,MAAK;IAAc,SAAS,kBAAC,GAAD,CAAkB,CAAA;GAAI,CAAA;GACzD,kBAAC,GAAD;IAAO,MAAK;IAAkB,SAAS,kBAAC,GAAD,CAAsB,CAAA;GAAI,CAAA;GACjE,kBAAC,GAAD;IAAO,MAAK;IAAU,SAAS,kBAAC,GAAD,CAAc,CAAA;GAAI,CAAA;GACjD,kBAAC,GAAD;IAAO,MAAK;IAAoB,SAAS,kBAAC,GAAD,CAAkB,CAAA;GAAI,CAAA;GAC/D,kBAAC,GAAD;IAAO,MAAK;IAAyB,SAAS,kBAAC,GAAD,CAAsB,CAAA;GAAI,CAAA;GACxE,kBAAC,GAAD;IAAO,MAAK;IAAgB,SAAS,kBAAC,GAAD,CAAoB,CAAA;GAAI,CAAA;GAC7D,kBAAC,GAAD;IAAO,MAAK;IAAoB,SAAS,kBAAC,GAAD,CAAmB,CAAA;GAAI,CAAA;GAChE,kBAAC,GAAD;IAAO,MAAK;IAAW,SAAS,kBAAC,GAAD,CAAe,CAAA;GAAI,CAAA;GACnD,kBAAC,GAAD;IAAO,MAAK;IAAgB,SAAS,kBAAC,GAAD,CAAmB,CAAA;GAAI,CAAA;GAC5D,kBAAC,GAAD;IAAO,MAAK;IAAa,SAAS,kBAAC,GAAD,CAAsB,CAAA;GAAI,CAAA;GAC5D,kBAAC,GAAD;IAAO,MAAK;IAAY,SAAS,kBAAC,GAAD,CAAgB,CAAA;GAAI,CAAA;GACrD,kBAAC,GAAD;IAAO,MAAK;IAAW,SAAS,kBAAC,GAAD,CAAe,CAAA;GAAI,CAAA;GACnD,kBAAC,GAAD;IAAO,MAAK;IAAY,SAAS,kBAAC,GAAD,CAAgB,CAAA;GAAI,CAAA;GACrD,kBAAC,GAAD;IAAO,MAAK;IAAQ,SAAS,kBAAC,GAAD,CAAY,CAAA;GAAI,CAAA;GAC7C,kBAAC,GAAD;IAAO,MAAK;IAAY,SAAS,kBAAC,GAAD,CAAqB,CAAA;GAAI,CAAA;GAC1D,kBAAC,GAAD;IAAO,MAAK;IAAI,SAAS,kBAAC,GAAD;KAAU,IAAG;KAAG,SAAA;IAAS,CAAA;GAAI,CAAA;EAChD,EAAA,CAAA;CACA,CAAA;AAEd"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
interface AuditTrailDialogProps {
|
|
2
|
+
open: boolean;
|
|
3
|
+
onOpenChange: (open: boolean) => void;
|
|
4
|
+
entityType: string;
|
|
5
|
+
entityId: string;
|
|
6
|
+
/** Shown in the dialog title, e.g. a reference code or listing name. */
|
|
7
|
+
label: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* BOFF-4388 — read-only transition history for one listing or booking, backed
|
|
11
|
+
* by GgnomadAuditLog. Every listing-verification and booking-lifecycle
|
|
12
|
+
* mutation writes one row here; this dialog is the operator-facing view of
|
|
13
|
+
* that append-only trail.
|
|
14
|
+
*/
|
|
15
|
+
export declare function AuditTrailDialog({ open, onOpenChange, entityType, entityId, label, }: AuditTrailDialogProps): import("react").JSX.Element;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=AuditTrailDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuditTrailDialog.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/components/AuditTrailDialog.tsx"],"names":[],"mappings":"AA2BA,UAAU,qBAAqB;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;CACf;AAUD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,KAAK,GACN,EAAE,qBAAqB,+BAuFvB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { GGNOMAD_AUDIT_LOG_QUERY as e } from "../graphql.js";
|
|
2
|
+
import { History as t } from "lucide-react";
|
|
3
|
+
import { useI18n as n } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
4
|
+
import { useQuery as r } from "@apollo/client/react";
|
|
5
|
+
import { AlertDialog as i, AlertDialogCancel as a, AlertDialogContent as o, AlertDialogDescription as s, AlertDialogFooter as c, AlertDialogHeader as l, AlertDialogTitle as u, IllustratedEmptyState as d } from "@burdenoff/fe-libs/ui";
|
|
6
|
+
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
7
|
+
//#region src/ggnomad/components/AuditTrailDialog.tsx
|
|
8
|
+
function m(e) {
|
|
9
|
+
return e.toLowerCase().split("_").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ");
|
|
10
|
+
}
|
|
11
|
+
function h({ open: h, onOpenChange: g, entityType: _, entityId: v, label: y }) {
|
|
12
|
+
let { t: b } = n(), { data: x, loading: S } = r(e, {
|
|
13
|
+
variables: {
|
|
14
|
+
entityType: _,
|
|
15
|
+
entityId: v,
|
|
16
|
+
limit: 50,
|
|
17
|
+
offset: 0
|
|
18
|
+
},
|
|
19
|
+
skip: !h,
|
|
20
|
+
fetchPolicy: "network-only"
|
|
21
|
+
}), C = x?.ggnomadAuditLog ?? [];
|
|
22
|
+
return /* @__PURE__ */ f(i, {
|
|
23
|
+
open: h,
|
|
24
|
+
onOpenChange: g,
|
|
25
|
+
children: /* @__PURE__ */ p(o, {
|
|
26
|
+
className: "max-w-lg",
|
|
27
|
+
children: [
|
|
28
|
+
/* @__PURE__ */ p(l, { children: [/* @__PURE__ */ p(u, {
|
|
29
|
+
className: "flex items-center gap-2",
|
|
30
|
+
children: [/* @__PURE__ */ f(t, { className: "size-4" }), b("ggnomad.auditTrail.title", "Transition history")]
|
|
31
|
+
}), /* @__PURE__ */ f(s, { children: b("ggnomad.auditTrail.description", "Every verification or lifecycle change for {{label}}.").replace("{{label}}", y) })] }),
|
|
32
|
+
/* @__PURE__ */ f("div", {
|
|
33
|
+
className: "max-h-[60vh] space-y-2 overflow-y-auto",
|
|
34
|
+
children: S ? /* @__PURE__ */ f("p", {
|
|
35
|
+
className: "py-6 text-center text-sm text-text-secondary",
|
|
36
|
+
children: b("ggnomad.auditTrail.loading", "Loading history…")
|
|
37
|
+
}) : C.length === 0 ? /* @__PURE__ */ f(d, {
|
|
38
|
+
illustration: "empty-data",
|
|
39
|
+
title: b("ggnomad.auditTrail.emptyTitle", "No transitions recorded yet"),
|
|
40
|
+
description: b("ggnomad.auditTrail.emptyDescription", "Approvals, rejections, check-ins and other lifecycle changes will show up here.")
|
|
41
|
+
}) : /* @__PURE__ */ f("ol", {
|
|
42
|
+
className: "space-y-2",
|
|
43
|
+
children: C.map((e) => /* @__PURE__ */ p("li", {
|
|
44
|
+
className: "rounded-lg border border-border-seam bg-bg-surface/40 p-3 text-sm",
|
|
45
|
+
children: [
|
|
46
|
+
/* @__PURE__ */ p("div", {
|
|
47
|
+
className: "flex items-center justify-between gap-2",
|
|
48
|
+
children: [/* @__PURE__ */ f("span", {
|
|
49
|
+
className: "font-medium text-text-primary",
|
|
50
|
+
children: m(e.action)
|
|
51
|
+
}), /* @__PURE__ */ f("span", {
|
|
52
|
+
className: "text-xs tabular-nums text-text-secondary",
|
|
53
|
+
children: new Date(e.createdAt).toLocaleString()
|
|
54
|
+
})]
|
|
55
|
+
}),
|
|
56
|
+
e.fromStatus || e.toStatus ? /* @__PURE__ */ p("p", {
|
|
57
|
+
className: "mt-1 text-xs text-text-secondary",
|
|
58
|
+
children: [
|
|
59
|
+
e.fromStatus ?? "—",
|
|
60
|
+
" → ",
|
|
61
|
+
e.toStatus ?? "—"
|
|
62
|
+
]
|
|
63
|
+
}) : null,
|
|
64
|
+
e.reason ? /* @__PURE__ */ p("p", {
|
|
65
|
+
className: "mt-1 text-xs italic text-text-secondary",
|
|
66
|
+
children: [
|
|
67
|
+
"“",
|
|
68
|
+
e.reason,
|
|
69
|
+
"”"
|
|
70
|
+
]
|
|
71
|
+
}) : null,
|
|
72
|
+
/* @__PURE__ */ f("p", {
|
|
73
|
+
className: "mt-1 text-xs text-text-secondary",
|
|
74
|
+
children: b("ggnomad.auditTrail.by", "by {{actor}}").replace("{{actor}}", e.actorId)
|
|
75
|
+
})
|
|
76
|
+
]
|
|
77
|
+
}, e.id))
|
|
78
|
+
})
|
|
79
|
+
}),
|
|
80
|
+
/* @__PURE__ */ f(c, { children: /* @__PURE__ */ f(a, { children: b("ggnomad.auditTrail.close", "Close") }) })
|
|
81
|
+
]
|
|
82
|
+
})
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
//#endregion
|
|
86
|
+
export { h as AuditTrailDialog };
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=AuditTrailDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuditTrailDialog.js","names":[],"sources":["../../../src/ggnomad/components/AuditTrailDialog.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport type { TypedDocumentNode } from '@apollo/client';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { History } from 'lucide-react';\nimport {\n AlertDialog,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\n\nimport { GGNOMAD_AUDIT_LOG_QUERY } from '../graphql';\n\ninterface AuditLogEntry {\n id: string;\n action: string;\n fromStatus: string | null;\n toStatus: string | null;\n reason: string | null;\n actorId: string;\n createdAt: string;\n}\n\ninterface AuditTrailDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n entityType: string;\n entityId: string;\n /** Shown in the dialog title, e.g. a reference code or listing name. */\n label: string;\n}\n\nfunction formatAction(action: string): string {\n return action\n .toLowerCase()\n .split('_')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\n/**\n * BOFF-4388 — read-only transition history for one listing or booking, backed\n * by GgnomadAuditLog. Every listing-verification and booking-lifecycle\n * mutation writes one row here; this dialog is the operator-facing view of\n * that append-only trail.\n */\nexport function AuditTrailDialog({\n open,\n onOpenChange,\n entityType,\n entityId,\n label,\n}: AuditTrailDialogProps) {\n const { t } = useI18n();\n\n const { data, loading } = useQuery(\n GGNOMAD_AUDIT_LOG_QUERY as TypedDocumentNode<\n { ggnomadAuditLog: AuditLogEntry[] },\n { entityType: string; entityId: string; limit?: number; offset?: number }\n >,\n {\n variables: { entityType, entityId, limit: 50, offset: 0 },\n skip: !open,\n fetchPolicy: 'network-only',\n }\n );\n\n const entries = data?.ggnomadAuditLog ?? [];\n\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent className=\"max-w-lg\">\n <AlertDialogHeader>\n <AlertDialogTitle className=\"flex items-center gap-2\">\n <History className=\"size-4\" />\n {t('ggnomad.auditTrail.title', 'Transition history')}\n </AlertDialogTitle>\n <AlertDialogDescription>\n {t(\n 'ggnomad.auditTrail.description',\n 'Every verification or lifecycle change for {{label}}.'\n ).replace('{{label}}', label)}\n </AlertDialogDescription>\n </AlertDialogHeader>\n\n <div className=\"max-h-[60vh] space-y-2 overflow-y-auto\">\n {loading ? (\n <p className=\"py-6 text-center text-sm text-text-secondary\">\n {t('ggnomad.auditTrail.loading', 'Loading history…')}\n </p>\n ) : entries.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={t('ggnomad.auditTrail.emptyTitle', 'No transitions recorded yet')}\n description={t(\n 'ggnomad.auditTrail.emptyDescription',\n 'Approvals, rejections, check-ins and other lifecycle changes will show up here.'\n )}\n />\n ) : (\n <ol className=\"space-y-2\">\n {entries.map((entry) => (\n <li\n key={entry.id}\n className=\"rounded-lg border border-border-seam bg-bg-surface/40 p-3 text-sm\"\n >\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"font-medium text-text-primary\">\n {formatAction(entry.action)}\n </span>\n <span className=\"text-xs tabular-nums text-text-secondary\">\n {new Date(entry.createdAt).toLocaleString()}\n </span>\n </div>\n {entry.fromStatus || entry.toStatus ? (\n <p className=\"mt-1 text-xs text-text-secondary\">\n {entry.fromStatus ?? '—'} → {entry.toStatus ?? '—'}\n </p>\n ) : null}\n {entry.reason ? (\n <p className=\"mt-1 text-xs italic text-text-secondary\">\n “{entry.reason}”\n </p>\n ) : null}\n <p className=\"mt-1 text-xs text-text-secondary\">\n {t('ggnomad.auditTrail.by', 'by {{actor}}').replace('{{actor}}', entry.actorId)}\n </p>\n </li>\n ))}\n </ol>\n )}\n </div>\n\n <AlertDialogFooter>\n <AlertDialogCancel>{t('ggnomad.auditTrail.close', 'Close')}</AlertDialogCancel>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n"],"mappings":";;;;;;;AAoCA,SAAS,EAAa,GAAwB;CAC5C,OAAO,EACJ,YAAY,EACZ,MAAM,GAAG,EACT,KAAK,MAAS,EAAK,OAAO,CAAC,EAAE,YAAY,IAAI,EAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AACb;AAQA,SAAgB,EAAiB,EAC/B,SACA,iBACA,eACA,aACA,YACwB;CACxB,IAAM,EAAE,SAAM,EAAQ,GAEhB,EAAE,SAAM,eAAY,EACxB,GAIA;EACE,WAAW;GAAE;GAAY;GAAU,OAAO;GAAI,QAAQ;EAAE;EACxD,MAAM,CAAC;EACP,aAAa;CACf,CACF,GAEM,IAAU,GAAM,mBAAmB,CAAC;CAE1C,OACE,kBAAC,GAAD;EAAmB;EAAoB;YACrC,kBAAC,GAAD;GAAoB,WAAU;aAA9B;IACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;KAAkB,WAAU;eAA5B,CACE,kBAAC,GAAD,EAAS,WAAU,SAAU,CAAA,GAC5B,EAAE,4BAA4B,oBAAoB,CACnC;QAClB,kBAAC,GAAD,EAAA,UACG,EACC,kCACA,uDACF,EAAE,QAAQ,aAAa,CAAK,EACN,CAAA,CACP,EAAA,CAAA;IAEnB,kBAAC,OAAD;KAAK,WAAU;eACZ,IACC,kBAAC,KAAD;MAAG,WAAU;gBACV,EAAE,8BAA8B,kBAAkB;KAClD,CAAA,IACD,EAAQ,WAAW,IACrB,kBAAC,GAAD;MACE,cAAa;MACb,OAAO,EAAE,iCAAiC,6BAA6B;MACvE,aAAa,EACX,uCACA,iFACF;KACD,CAAA,IAED,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAQ,KAAK,MACZ,kBAAC,MAAD;OAEE,WAAU;iBAFZ;QAIE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,QAAD;UAAM,WAAU;oBACb,EAAa,EAAM,MAAM;SACtB,CAAA,GACN,kBAAC,QAAD;UAAM,WAAU;oBACb,IAAI,KAAK,EAAM,SAAS,EAAE,eAAe;SACtC,CAAA,CACH;;QACJ,EAAM,cAAc,EAAM,WACzB,kBAAC,KAAD;SAAG,WAAU;mBAAb;UACG,EAAM,cAAc;UAAI;UAAI,EAAM,YAAY;SAC9C;aACD;QACH,EAAM,SACL,kBAAC,KAAD;SAAG,WAAU;mBAAb;UAAuD;UAC7C,EAAM;UAAO;SACpB;aACD;QACJ,kBAAC,KAAD;SAAG,WAAU;mBACV,EAAE,yBAAyB,cAAc,EAAE,QAAQ,aAAa,EAAM,OAAO;QAC7E,CAAA;OACD;SAxBG,EAAM,EAwBT,CACL;KACC,CAAA;IAEH,CAAA;IAEL,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAoB,EAAE,4BAA4B,OAAO,EAAqB,CAAA,EAC7D,CAAA;GACD;;CACT,CAAA;AAEjB"}
|
|
@@ -12,4 +12,5 @@ export { CreateTravelPolicyDialog } from './CreateTravelPolicyDialog';
|
|
|
12
12
|
export { TicketDialog } from './TicketDialog';
|
|
13
13
|
export type { GgnomadTicket } from './TicketDialog';
|
|
14
14
|
export { RedeemTicketPanel } from './RedeemTicketPanel';
|
|
15
|
+
export { AuditTrailDialog } from './AuditTrailDialog';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -56,4 +56,16 @@ export declare const GGNOMAD_BOOKING_APPROVALS_QUERY: import('graphql').Document
|
|
|
56
56
|
export declare const APPROVE_GGNOMAD_BOOKING_APPROVAL_MUTATION: import('graphql').DocumentNode;
|
|
57
57
|
export declare const REJECT_GGNOMAD_BOOKING_APPROVAL_MUTATION: import('graphql').DocumentNode;
|
|
58
58
|
export declare const GGNOMAD_SPEND_SUMMARY_QUERY: import('graphql').DocumentNode;
|
|
59
|
+
export declare const GGNOMAD_LISTING_REVIEW_QUEUE_QUERY: import('graphql').DocumentNode;
|
|
60
|
+
export declare const SUBMIT_GGNOMAD_LISTING_FOR_REVIEW_MUTATION: import('graphql').DocumentNode;
|
|
61
|
+
export declare const APPROVE_GGNOMAD_LISTING_MUTATION: import('graphql').DocumentNode;
|
|
62
|
+
export declare const REJECT_GGNOMAD_LISTING_MUTATION: import('graphql').DocumentNode;
|
|
63
|
+
export declare const PAUSE_GGNOMAD_LISTING_MUTATION: import('graphql').DocumentNode;
|
|
64
|
+
export declare const RESUME_GGNOMAD_LISTING_MUTATION: import('graphql').DocumentNode;
|
|
65
|
+
export declare const ARCHIVE_GGNOMAD_LISTING_MUTATION: import('graphql').DocumentNode;
|
|
66
|
+
export declare const GGNOMAD_BOOKING_QUEUE_QUERY: import('graphql').DocumentNode;
|
|
67
|
+
export declare const CHECK_IN_GGNOMAD_BOOKING_MUTATION: import('graphql').DocumentNode;
|
|
68
|
+
export declare const COMPLETE_GGNOMAD_BOOKING_MUTATION: import('graphql').DocumentNode;
|
|
69
|
+
export declare const MARK_GGNOMAD_BOOKING_NO_SHOW_MUTATION: import('graphql').DocumentNode;
|
|
70
|
+
export declare const GGNOMAD_AUDIT_LOG_QUERY: import('graphql').DocumentNode;
|
|
59
71
|
//# sourceMappingURL=graphql.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../src/ggnomad/graphql.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,gCAgBlC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,gCA2BzC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,gCAmB1C,CAAC;AAEF,eAAO,MAAM,uBAAuB,gCAenC,CAAC;AAEF,eAAO,MAAM,wBAAwB,gCAkBpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,gCA4BlC,CAAC;AAGF,eAAO,MAAM,kCAAkC,gCAS9C,CAAC;AAEF,eAAO,MAAM,mBAAmB,gCAkB/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,gCAwB9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,gCAiBhC,CAAC;AAEF,eAAO,MAAM,mBAAmB,gCAuB/B,CAAC;AAEF,eAAO,MAAM,wBAAwB,gCAoBpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,gCA0BlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,gCAoB/B,CAAC;AAEF,eAAO,MAAM,sBAAsB,gCAwBlC,CAAC;AAEF,eAAO,MAAM,uBAAuB,gCAInC,CAAC;AAEF,eAAO,MAAM,+BAA+B,gCAe3C,CAAC;AAEF,eAAO,MAAM,gCAAgC,gCAI5C,CAAC;AAEF,eAAO,MAAM,+BAA+B,gCAO3C,CAAC;AAGF,eAAO,MAAM,qBAAqB,gCAejC,CAAC;AAEF,eAAO,MAAM,6BAA6B,gCAWzC,CAAC;AAEF,eAAO,MAAM,8BAA8B,gCAW1C,CAAC;AAEF,eAAO,MAAM,8BAA8B,gCAS1C,CAAC;AAGF,eAAO,MAAM,wBAAwB,gCAepC,CAAC;AAEF,eAAO,MAAM,uBAAuB,gCA2BnC,CAAC;AAGF,eAAO,MAAM,iCAAiC,gCAe7C,CAAC;AAEF,eAAO,MAAM,iCAAiC,gCAe7C,CAAC;AAEF,eAAO,MAAM,iCAAiC,gCAI7C,CAAC;AAEF,eAAO,MAAM,mCAAmC,gCAc/C,CAAC;AAEF,eAAO,MAAM,sCAAsC,gCAIlD,CAAC;AAGF,eAAO,MAAM,4BAA4B,gCAQxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,gCAwBjC,CAAC;AAGF,eAAO,MAAM,8BAA8B,gCAS1C,CAAC;AAEF,eAAO,MAAM,+BAA+B,gCAQ3C,CAAC;AAGF,eAAO,MAAM,gCAAgC,gCAW5C,CAAC;AAEF,eAAO,MAAM,4BAA4B,gCAWxC,CAAC;AAEF,eAAO,MAAM,6BAA6B,gCAWzC,CAAC;AAEF,eAAO,MAAM,gCAAgC,gCAW5C,CAAC;AAGF,eAAO,MAAM,6BAA6B,gCAgBzC,CAAC;AAEF,eAAO,MAAM,qCAAqC,gCAejD,CAAC;AAEF,eAAO,MAAM,qCAAqC,gCAOjD,CAAC;AAEF,eAAO,MAAM,qCAAqC,gCAIjD,CAAC;AAEF,eAAO,MAAM,+BAA+B,gCAwB3C,CAAC;AAEF,eAAO,MAAM,yCAAyC,gCASrD,CAAC;AAEF,eAAO,MAAM,wCAAwC,gCAUpD,CAAC;AAEF,eAAO,MAAM,2BAA2B,gCAUvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../src/ggnomad/graphql.ts"],"names":[],"mappings":"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"}
|
package/dist/ggnomad/graphql.js
CHANGED
|
@@ -672,8 +672,109 @@ var L = e`
|
|
|
672
672
|
byCostCenter
|
|
673
673
|
}
|
|
674
674
|
}
|
|
675
|
+
`, H = "\n __typename\n ... on GgnomadProperty {\n id\n name\n status\n pricePerNight\n currency\n providerId\n updatedAt\n }\n ... on GgnomadTour {\n id\n name\n status\n price\n currency\n providerId\n updatedAt\n }\n ... on GgnomadEvent {\n id\n name\n status\n price\n currency\n providerId\n updatedAt\n }\n ... on GgnomadActivity {\n id\n name\n status\n price\n currency\n providerId\n updatedAt\n }\n", U = e`
|
|
676
|
+
query GGNomadListingReviewQueue($limit: Int, $offset: Int) {
|
|
677
|
+
ggnomadListingReviewQueue(pagination: { limit: $limit, offset: $offset }) {
|
|
678
|
+
${H}
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
`;
|
|
682
|
+
e`
|
|
683
|
+
mutation SubmitGGNomadListingForReview($listingType: GgnomadListingType!, $id: ID!) {
|
|
684
|
+
submitGgnomadListingForReview(listingType: $listingType, id: $id) {
|
|
685
|
+
${H}
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
`;
|
|
689
|
+
var W = e`
|
|
690
|
+
mutation ApproveGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $note: String) {
|
|
691
|
+
approveGgnomadListing(listingType: $listingType, id: $id, note: $note) {
|
|
692
|
+
${H}
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
`, G = e`
|
|
696
|
+
mutation RejectGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $reason: String!) {
|
|
697
|
+
rejectGgnomadListing(listingType: $listingType, id: $id, reason: $reason) {
|
|
698
|
+
${H}
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
`;
|
|
702
|
+
e`
|
|
703
|
+
mutation PauseGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $reason: String) {
|
|
704
|
+
pauseGgnomadListing(listingType: $listingType, id: $id, reason: $reason) {
|
|
705
|
+
${H}
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
`, e`
|
|
709
|
+
mutation ResumeGGNomadListing($listingType: GgnomadListingType!, $id: ID!) {
|
|
710
|
+
resumeGgnomadListing(listingType: $listingType, id: $id) {
|
|
711
|
+
${H}
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
`, e`
|
|
715
|
+
mutation ArchiveGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $reason: String) {
|
|
716
|
+
archiveGgnomadListing(listingType: $listingType, id: $id, reason: $reason) {
|
|
717
|
+
${H}
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
`;
|
|
721
|
+
var K = e`
|
|
722
|
+
query GGNomadBookingQueue($limit: Int, $offset: Int) {
|
|
723
|
+
ggnomadBookingQueue(pagination: { limit: $limit, offset: $offset }) {
|
|
724
|
+
id
|
|
725
|
+
referenceCode
|
|
726
|
+
bookingType
|
|
727
|
+
status
|
|
728
|
+
itemName
|
|
729
|
+
guestName
|
|
730
|
+
guests
|
|
731
|
+
checkIn
|
|
732
|
+
checkOut
|
|
733
|
+
eventDate
|
|
734
|
+
totalPrice
|
|
735
|
+
currency
|
|
736
|
+
createdAt
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
`, q = e`
|
|
740
|
+
mutation CheckInGGNomadBooking($id: ID!) {
|
|
741
|
+
checkInGgnomadBooking(id: $id) {
|
|
742
|
+
id
|
|
743
|
+
status
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
`, J = e`
|
|
747
|
+
mutation CompleteGGNomadBooking($id: ID!) {
|
|
748
|
+
completeGgnomadBooking(id: $id) {
|
|
749
|
+
id
|
|
750
|
+
status
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
`, Y = e`
|
|
754
|
+
mutation MarkGGNomadBookingNoShow($id: ID!, $reason: String) {
|
|
755
|
+
markGgnomadBookingNoShow(id: $id, reason: $reason) {
|
|
756
|
+
id
|
|
757
|
+
status
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
`, X = e`
|
|
761
|
+
query GGNomadAuditLog($entityType: String!, $entityId: String!, $limit: Int, $offset: Int) {
|
|
762
|
+
ggnomadAuditLog(
|
|
763
|
+
entityType: $entityType
|
|
764
|
+
entityId: $entityId
|
|
765
|
+
pagination: { limit: $limit, offset: $offset }
|
|
766
|
+
) {
|
|
767
|
+
id
|
|
768
|
+
action
|
|
769
|
+
fromStatus
|
|
770
|
+
toStatus
|
|
771
|
+
reason
|
|
772
|
+
actorId
|
|
773
|
+
createdAt
|
|
774
|
+
}
|
|
775
|
+
}
|
|
675
776
|
`;
|
|
676
777
|
//#endregion
|
|
677
|
-
export { E as ADD_GGNOMAD_TRIP_PLAN_ITEM_MUTATION, z as APPROVE_GGNOMAD_BOOKING_APPROVAL_MUTATION, v as CANCEL_GGNOMAD_BOOKING_MUTATION, g as CREATE_GGNOMAD_BOOKING_MUTATION, A as CREATE_GGNOMAD_REVIEW_MUTATION, I as CREATE_GGNOMAD_TRAVEL_POLICY_MUTATION, w as CREATE_GGNOMAD_TRIP_PLAN_MUTATION, L as DELETE_GGNOMAD_TRAVEL_POLICY_MUTATION, d as GGNOMAD_ACTIVITIES_QUERY, f as GGNOMAD_ACTIVITY_QUERY, n as GGNOMAD_BOOKABLE_SAMPLE_QUERY, m as GGNOMAD_BOOKINGS_QUERY, R as GGNOMAD_BOOKING_APPROVALS_QUERY, l as GGNOMAD_EVENTS_QUERY, u as GGNOMAD_EVENT_QUERY, h as GGNOMAD_FAVORITES_QUERY, r as GGNOMAD_FAVORITE_TARGETS_QUERY, t as GGNOMAD_OVERVIEW_QUERY, a as GGNOMAD_PROPERTIES_QUERY, o as GGNOMAD_PROPERTY_QUERY, i as GGNOMAD_PROVIDERS_QUERY, k as GGNOMAD_REVIEWS_QUERY, O as GGNOMAD_REVIEW_SUMMARY_QUERY, V as GGNOMAD_SPEND_SUMMARY_QUERY, y as GGNOMAD_TICKETS_QUERY, s as GGNOMAD_TOURS_QUERY, c as GGNOMAD_TOUR_QUERY, F as GGNOMAD_TRAVEL_POLICIES_QUERY, p as GGNOMAD_TRIPS_QUERY, S as GGNOMAD_TRIP_PLANS_QUERY, C as GGNOMAD_TRIP_PLAN_QUERY, b as ISSUE_GGNOMAD_TICKET_MUTATION, x as REDEEM_GGNOMAD_TICKET_MUTATION, B as REJECT_GGNOMAD_BOOKING_APPROVAL_MUTATION, D as REMOVE_GGNOMAD_TRIP_PLAN_ITEM_MUTATION, _ as TOGGLE_GGNOMAD_FAVORITE_MUTATION, P as UPDATE_GGNOMAD_ACTIVITY_MUTATION, N as UPDATE_GGNOMAD_EVENT_MUTATION, j as UPDATE_GGNOMAD_PROPERTY_MUTATION, M as UPDATE_GGNOMAD_TOUR_MUTATION, T as UPDATE_GGNOMAD_TRIP_PLAN_MUTATION };
|
|
778
|
+
export { E as ADD_GGNOMAD_TRIP_PLAN_ITEM_MUTATION, z as APPROVE_GGNOMAD_BOOKING_APPROVAL_MUTATION, W as APPROVE_GGNOMAD_LISTING_MUTATION, v as CANCEL_GGNOMAD_BOOKING_MUTATION, q as CHECK_IN_GGNOMAD_BOOKING_MUTATION, J as COMPLETE_GGNOMAD_BOOKING_MUTATION, g as CREATE_GGNOMAD_BOOKING_MUTATION, A as CREATE_GGNOMAD_REVIEW_MUTATION, I as CREATE_GGNOMAD_TRAVEL_POLICY_MUTATION, w as CREATE_GGNOMAD_TRIP_PLAN_MUTATION, L as DELETE_GGNOMAD_TRAVEL_POLICY_MUTATION, d as GGNOMAD_ACTIVITIES_QUERY, f as GGNOMAD_ACTIVITY_QUERY, X as GGNOMAD_AUDIT_LOG_QUERY, n as GGNOMAD_BOOKABLE_SAMPLE_QUERY, m as GGNOMAD_BOOKINGS_QUERY, R as GGNOMAD_BOOKING_APPROVALS_QUERY, K as GGNOMAD_BOOKING_QUEUE_QUERY, l as GGNOMAD_EVENTS_QUERY, u as GGNOMAD_EVENT_QUERY, h as GGNOMAD_FAVORITES_QUERY, r as GGNOMAD_FAVORITE_TARGETS_QUERY, U as GGNOMAD_LISTING_REVIEW_QUEUE_QUERY, t as GGNOMAD_OVERVIEW_QUERY, a as GGNOMAD_PROPERTIES_QUERY, o as GGNOMAD_PROPERTY_QUERY, i as GGNOMAD_PROVIDERS_QUERY, k as GGNOMAD_REVIEWS_QUERY, O as GGNOMAD_REVIEW_SUMMARY_QUERY, V as GGNOMAD_SPEND_SUMMARY_QUERY, y as GGNOMAD_TICKETS_QUERY, s as GGNOMAD_TOURS_QUERY, c as GGNOMAD_TOUR_QUERY, F as GGNOMAD_TRAVEL_POLICIES_QUERY, p as GGNOMAD_TRIPS_QUERY, S as GGNOMAD_TRIP_PLANS_QUERY, C as GGNOMAD_TRIP_PLAN_QUERY, b as ISSUE_GGNOMAD_TICKET_MUTATION, Y as MARK_GGNOMAD_BOOKING_NO_SHOW_MUTATION, x as REDEEM_GGNOMAD_TICKET_MUTATION, B as REJECT_GGNOMAD_BOOKING_APPROVAL_MUTATION, G as REJECT_GGNOMAD_LISTING_MUTATION, D as REMOVE_GGNOMAD_TRIP_PLAN_ITEM_MUTATION, _ as TOGGLE_GGNOMAD_FAVORITE_MUTATION, P as UPDATE_GGNOMAD_ACTIVITY_MUTATION, N as UPDATE_GGNOMAD_EVENT_MUTATION, j as UPDATE_GGNOMAD_PROPERTY_MUTATION, M as UPDATE_GGNOMAD_TOUR_MUTATION, T as UPDATE_GGNOMAD_TRIP_PLAN_MUTATION };
|
|
678
779
|
|
|
679
780
|
//# sourceMappingURL=graphql.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.js","names":[],"sources":["../../src/ggnomad/graphql.ts"],"sourcesContent":["import { gql } from '@apollo/client/core';\n\nexport const GGNOMAD_OVERVIEW_QUERY = gql`\n query GGNomadOverview {\n ggnomadOverviewStats {\n users\n listings\n bookings\n monthlyRevenue\n }\n ggnomadAnalytics {\n totalRevenue\n totalBookings\n totalUsers\n conversionRate\n revenueByCategory\n }\n }\n`;\n\n/**\n * One bookable item of each type (properties are priced per night, the rest\n * carry a flat price). Used to seed the Bookings \"create demo booking\" action\n * with a REAL listing id so the mutation passes the backend's\n * assertTargetInWorkspace check instead of failing on a synthetic id.\n */\nexport const GGNOMAD_BOOKABLE_SAMPLE_QUERY = gql`\n query GGNomadBookableSample {\n ggnomadProperties(pagination: { limit: 1, offset: 0 }) {\n id\n name\n pricePerNight\n currency\n }\n ggnomadTours(pagination: { limit: 1, offset: 0 }) {\n id\n name\n price\n currency\n }\n ggnomadEvents(pagination: { limit: 1, offset: 0 }) {\n id\n name\n price\n currency\n }\n ggnomadActivities(pagination: { limit: 1, offset: 0 }) {\n id\n name\n price\n currency\n }\n }\n`;\n\n/**\n * id + name for every favouritable listing type, used to (a) resolve the real\n * entity name for a saved favorite (which the backend only exposes as\n * targetType + targetId) and (b) seed the \"toggle demo favorite\" action with a\n * real target id.\n */\nexport const GGNOMAD_FAVORITE_TARGETS_QUERY = gql`\n query GGNomadFavoriteTargets {\n ggnomadProperties(pagination: { limit: 100, offset: 0 }) {\n id\n name\n }\n ggnomadTours(pagination: { limit: 100, offset: 0 }) {\n id\n name\n }\n ggnomadEvents(pagination: { limit: 100, offset: 0 }) {\n id\n name\n }\n ggnomadActivities(pagination: { limit: 100, offset: 0 }) {\n id\n name\n }\n }\n`;\n\nexport const GGNOMAD_PROVIDERS_QUERY = gql`\n query GGNomadProviders($limit: Int, $offset: Int) {\n ggnomadProviders(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n type\n status\n listingCount\n totalRevenue\n rating\n reviewCount\n contactEmail\n website\n }\n }\n`;\n\nexport const GGNOMAD_PROPERTIES_QUERY = gql`\n query GGNomadProperties($limit: Int, $offset: Int) {\n ggnomadProperties(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n type\n status\n description\n pricePerNight\n currency\n rating\n reviewCount\n maxGuests\n amenities\n images\n providerId\n }\n }\n`;\n\nexport const GGNOMAD_PROPERTY_QUERY = gql`\n query GGNomadProperty($id: ID!) {\n ggnomadProperty(id: $id) {\n id\n name\n type\n status\n description\n address\n pricePerNight\n currency\n rating\n reviewCount\n bedrooms\n bathrooms\n maxGuests\n checkInTime\n checkOutTime\n amenities\n images\n provider {\n id\n name\n type\n rating\n }\n }\n }\n`;\n\n// Query to get property details for booking - ensures id is included\nexport const GGNOMAD_PROPERTY_FOR_BOOKING_QUERY = gql`\n query GGNomadPropertyForBooking($id: ID!) {\n ggnomadProperty(id: $id) {\n id\n name\n pricePerNight\n currency\n }\n }\n`;\n\nexport const GGNOMAD_TOURS_QUERY = gql`\n query GGNomadTours($limit: Int, $offset: Int) {\n ggnomadTours(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n description\n type\n status\n duration\n difficulty\n price\n currency\n rating\n reviewCount\n highlights\n images\n }\n }\n`;\n\nexport const GGNOMAD_TOUR_QUERY = gql`\n query GGNomadTour($id: ID!) {\n ggnomadTour(id: $id) {\n id\n name\n description\n type\n status\n duration\n difficulty\n price\n currency\n rating\n reviewCount\n highlights\n images\n languages\n guideName\n provider {\n id\n name\n }\n }\n }\n`;\n\nexport const GGNOMAD_EVENTS_QUERY = gql`\n query GGNomadEvents($limit: Int, $offset: Int) {\n ggnomadEvents(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n description\n category\n status\n startsAt\n price\n currency\n rating\n reviewCount\n performers\n images\n }\n }\n`;\n\nexport const GGNOMAD_EVENT_QUERY = gql`\n query GGNomadEvent($id: ID!) {\n ggnomadEvent(id: $id) {\n id\n name\n description\n category\n status\n startsAt\n endsAt\n venue\n price\n currency\n rating\n reviewCount\n performers\n images\n provider {\n id\n name\n }\n }\n }\n`;\n\nexport const GGNOMAD_ACTIVITIES_QUERY = gql`\n query GGNomadActivities($limit: Int, $offset: Int) {\n ggnomadActivities(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n description\n category\n status\n duration\n difficulty\n price\n currency\n rating\n reviewCount\n maxParticipants\n includes\n requirements\n images\n }\n }\n`;\n\nexport const GGNOMAD_ACTIVITY_QUERY = gql`\n query GGNomadActivity($id: ID!) {\n ggnomadActivity(id: $id) {\n id\n name\n description\n category\n status\n location\n duration\n difficulty\n price\n currency\n rating\n reviewCount\n maxParticipants\n includes\n requirements\n safetyInfo\n images\n provider {\n id\n name\n }\n }\n }\n`;\n\nexport const GGNOMAD_TRIPS_QUERY = gql`\n query GGNomadTrips($limit: Int, $offset: Int) {\n ggnomadTrips(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n transportMode\n status\n origin\n destination\n departureAt\n arrivalAt\n isRoundTrip\n carrier\n class\n price\n currency\n passengers\n ecoFriendly\n }\n }\n`;\n\nexport const GGNOMAD_BOOKINGS_QUERY = gql`\n query GGNomadBookings($limit: Int, $offset: Int) {\n ggnomadBookings(pagination: { limit: $limit, offset: $offset }) {\n id\n referenceCode\n bookingType\n status\n itemId\n itemName\n guestName\n guestEmail\n guestPhone\n guests\n checkIn\n checkOut\n eventDate\n totalPrice\n currency\n paymentStatus\n paymentMethod\n specialRequests\n createdAt\n }\n }\n`;\n\nexport const GGNOMAD_FAVORITES_QUERY = gql`\n query GGNomadFavorites {\n ggnomadFavorites\n }\n`;\n\nexport const CREATE_GGNOMAD_BOOKING_MUTATION = gql`\n mutation CreateGGNomadBooking($input: CreateGgnomadBookingInput!) {\n createGgnomadBooking(input: $input) {\n id\n referenceCode\n bookingType\n status\n itemId\n itemName\n guestName\n totalPrice\n currency\n createdAt\n }\n }\n`;\n\nexport const TOGGLE_GGNOMAD_FAVORITE_MUTATION = gql`\n mutation ToggleGGNomadFavorite($input: ToggleGgnomadFavoriteInput!) {\n toggleGgnomadFavorite(input: $input)\n }\n`;\n\nexport const CANCEL_GGNOMAD_BOOKING_MUTATION = gql`\n mutation CancelGGNomadBooking($id: ID!, $reason: String) {\n cancelGgnomadBooking(id: $id, reason: $reason) {\n id\n status\n }\n }\n`;\n\n// Mobile tickets / QR-code redemption (BOFF-4362)\nexport const GGNOMAD_TICKETS_QUERY = gql`\n query GGNomadTickets($bookingId: String) {\n ggnomadTickets(bookingId: $bookingId) {\n id\n bookingId\n ticketCode\n qrCodeDataUrl\n status\n issuedAt\n redeemedAt\n redeemedBy\n revokedAt\n revokedReason\n }\n }\n`;\n\nexport const ISSUE_GGNOMAD_TICKET_MUTATION = gql`\n mutation IssueGGNomadTicket($bookingId: ID!) {\n issueGgnomadTicket(bookingId: $bookingId) {\n id\n bookingId\n ticketCode\n qrCodeDataUrl\n status\n issuedAt\n }\n }\n`;\n\nexport const REDEEM_GGNOMAD_TICKET_MUTATION = gql`\n mutation RedeemGGNomadTicket($token: String!) {\n redeemGgnomadTicket(token: $token) {\n id\n bookingId\n ticketCode\n status\n redeemedAt\n redeemedBy\n }\n }\n`;\n\nexport const REVOKE_GGNOMAD_TICKET_MUTATION = gql`\n mutation RevokeGGNomadTicket($id: ID!, $reason: String) {\n revokeGgnomadTicket(id: $id, reason: $reason) {\n id\n status\n revokedAt\n revokedReason\n }\n }\n`;\n\n// Trip Plan Queries\nexport const GGNOMAD_TRIP_PLANS_QUERY = gql`\n query GGNomadTripPlans($limit: Int, $offset: Int) {\n ggnomadTripPlans(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n description\n startDate\n endDate\n travelers\n status\n total\n itemCount\n createdAt\n }\n }\n`;\n\nexport const GGNOMAD_TRIP_PLAN_QUERY = gql`\n query GGNomadTripPlan($id: ID!) {\n ggnomadTripPlan(id: $id) {\n id\n name\n description\n startDate\n endDate\n travelers\n status\n total\n itemCount\n items {\n id\n itemType\n itemId\n itemName\n day\n scheduledAt\n price\n currency\n notes\n }\n createdAt\n updatedAt\n }\n }\n`;\n\n// Trip Plan Mutations\nexport const CREATE_GGNOMAD_TRIP_PLAN_MUTATION = gql`\n mutation CreateGGNomadTripPlan($input: CreateGgnomadTripPlanInput!) {\n createGgnomadTripPlan(input: $input) {\n id\n name\n description\n startDate\n endDate\n travelers\n status\n total\n itemCount\n createdAt\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_TRIP_PLAN_MUTATION = gql`\n mutation UpdateGGNomadTripPlan($id: ID!, $input: UpdateGgnomadTripPlanInput!) {\n updateGgnomadTripPlan(id: $id, input: $input) {\n id\n name\n description\n startDate\n endDate\n travelers\n status\n total\n itemCount\n updatedAt\n }\n }\n`;\n\nexport const DELETE_GGNOMAD_TRIP_PLAN_MUTATION = gql`\n mutation DeleteGGNomadTripPlan($id: ID!) {\n deleteGgnomadTripPlan(id: $id)\n }\n`;\n\nexport const ADD_GGNOMAD_TRIP_PLAN_ITEM_MUTATION = gql`\n mutation AddGGNomadTripPlanItem($tripPlanId: ID!, $input: AddGgnomadTripPlanItemInput!) {\n addGgnomadTripPlanItem(tripPlanId: $tripPlanId, input: $input) {\n id\n itemType\n itemId\n itemName\n day\n scheduledAt\n price\n currency\n notes\n }\n }\n`;\n\nexport const REMOVE_GGNOMAD_TRIP_PLAN_ITEM_MUTATION = gql`\n mutation RemoveGGNomadTripPlanItem($id: ID!) {\n removeGgnomadTripPlanItem(id: $id)\n }\n`;\n\n// Review Queries\nexport const GGNOMAD_REVIEW_SUMMARY_QUERY = gql`\n query GGNomadReviewSummary($targetType: GgnomadBookingType!, $targetId: String!) {\n ggnomadReviewSummary(targetType: $targetType, targetId: $targetId) {\n average\n count\n distribution\n }\n }\n`;\n\nexport const GGNOMAD_REVIEWS_QUERY = gql`\n query GGNomadReviews(\n $targetType: GgnomadBookingType!\n $targetId: String!\n $limit: Int\n $offset: Int\n ) {\n ggnomadReviews(\n targetType: $targetType\n targetId: $targetId\n pagination: { limit: $limit, offset: $offset }\n ) {\n id\n rating\n title\n content\n images\n isVerified\n helpfulCount\n response\n respondedAt\n createdAt\n }\n }\n`;\n\n// Review Mutations\nexport const CREATE_GGNOMAD_REVIEW_MUTATION = gql`\n mutation CreateGGNomadReview($input: CreateGgnomadReviewInput!) {\n createGgnomadReview(input: $input) {\n id\n rating\n title\n content\n }\n }\n`;\n\nexport const RESPOND_GGNOMAD_REVIEW_MUTATION = gql`\n mutation RespondGGNomadReview($id: ID!, $response: String!) {\n respondGgnomadReview(id: $id, response: $response) {\n id\n response\n respondedAt\n }\n }\n`;\n\n// Listing Edit Mutations\nexport const UPDATE_GGNOMAD_PROPERTY_MUTATION = gql`\n mutation UpdateGGNomadProperty($id: ID!, $input: UpdateGgnomadPropertyInput!) {\n updateGgnomadProperty(id: $id, input: $input) {\n id\n name\n description\n pricePerNight\n status\n images\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_TOUR_MUTATION = gql`\n mutation UpdateGGNomadTour($id: ID!, $input: UpdateGgnomadTourInput!) {\n updateGgnomadTour(id: $id, input: $input) {\n id\n name\n description\n price\n status\n images\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_EVENT_MUTATION = gql`\n mutation UpdateGGNomadEvent($id: ID!, $input: UpdateGgnomadEventInput!) {\n updateGgnomadEvent(id: $id, input: $input) {\n id\n name\n description\n price\n status\n images\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_ACTIVITY_MUTATION = gql`\n mutation UpdateGGNomadActivity($id: ID!, $input: UpdateGgnomadActivityInput!) {\n updateGgnomadActivity(id: $id, input: $input) {\n id\n name\n description\n price\n status\n images\n }\n }\n`;\n\n// Corporate travel management — policy, budgets, approvals (BOFF-4365)\nexport const GGNOMAD_TRAVEL_POLICIES_QUERY = gql`\n query GGNomadTravelPolicies($limit: Int, $offset: Int) {\n ggnomadTravelPolicies(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n isActive\n costCenter\n currency\n maxBookingAmount\n maxMonthlyPerTraveler\n blockedDestinations\n allowedTravelClasses\n requireApprovalAlways\n createdAt\n }\n }\n`;\n\nexport const CREATE_GGNOMAD_TRAVEL_POLICY_MUTATION = gql`\n mutation CreateGGNomadTravelPolicy($input: CreateGgnomadTravelPolicyInput!) {\n createGgnomadTravelPolicy(input: $input) {\n id\n name\n isActive\n costCenter\n currency\n maxBookingAmount\n maxMonthlyPerTraveler\n blockedDestinations\n allowedTravelClasses\n requireApprovalAlways\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_TRAVEL_POLICY_MUTATION = gql`\n mutation UpdateGGNomadTravelPolicy($id: ID!, $input: UpdateGgnomadTravelPolicyInput!) {\n updateGgnomadTravelPolicy(id: $id, input: $input) {\n id\n isActive\n }\n }\n`;\n\nexport const DELETE_GGNOMAD_TRAVEL_POLICY_MUTATION = gql`\n mutation DeleteGGNomadTravelPolicy($id: ID!) {\n deleteGgnomadTravelPolicy(id: $id)\n }\n`;\n\nexport const GGNOMAD_BOOKING_APPROVALS_QUERY = gql`\n query GGNomadBookingApprovals($status: GgnomadApprovalStatus, $limit: Int, $offset: Int) {\n ggnomadBookingApprovals(status: $status, pagination: { limit: $limit, offset: $offset }) {\n id\n bookingId\n requestedBy\n costCenter\n reasons\n status\n reviewedBy\n reviewedAt\n reviewNote\n createdAt\n booking {\n id\n referenceCode\n itemName\n totalPrice\n currency\n status\n paymentStatus\n }\n }\n }\n`;\n\nexport const APPROVE_GGNOMAD_BOOKING_APPROVAL_MUTATION = gql`\n mutation ApproveGGNomadBookingApproval($id: ID!, $note: String) {\n approveGgnomadBookingApproval(id: $id, note: $note) {\n id\n status\n reviewedBy\n reviewedAt\n }\n }\n`;\n\nexport const REJECT_GGNOMAD_BOOKING_APPROVAL_MUTATION = gql`\n mutation RejectGGNomadBookingApproval($id: ID!, $reason: String!) {\n rejectGgnomadBookingApproval(id: $id, reason: $reason) {\n id\n status\n reviewedBy\n reviewedAt\n reviewNote\n }\n }\n`;\n\nexport const GGNOMAD_SPEND_SUMMARY_QUERY = gql`\n query GGNomadSpendSummary($costCenter: String) {\n ggnomadSpendSummary(costCenter: $costCenter) {\n totalSpend\n bookingCount\n pendingApprovalCount\n pendingApprovalAmount\n byCostCenter\n }\n }\n`;\n"],"mappings":";;AAEA,IAAa,IAAyB,CAAG;;;;;;;;;;;;;;;;GAwB5B,IAAgC,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCnC,IAAiC,CAAG;;;;;;;;;;;;;;;;;;;GAqBpC,IAA0B,CAAG;;;;;;;;;;;;;;;GAiB7B,IAA2B,CAAG;;;;;;;;;;;;;;;;;;GAoB9B,IAAyB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BS,CAAG;;;;;;;;;;AAWrD,IAAa,IAAsB,CAAG;;;;;;;;;;;;;;;;;;GAoBzB,IAAqB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;GA0BxB,IAAuB,CAAG;;;;;;;;;;;;;;;;;GAmB1B,IAAsB,CAAG;;;;;;;;;;;;;;;;;;;;;;;GAyBzB,IAA2B,CAAG;;;;;;;;;;;;;;;;;;;;GAsB9B,IAAyB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;GA4B5B,IAAsB,CAAG;;;;;;;;;;;;;;;;;;;;GAsBzB,IAAyB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;GA0B5B,IAA0B,CAAG;;;;GAM7B,IAAkC,CAAG;;;;;;;;;;;;;;;GAiBrC,IAAmC,CAAG;;;;GAMtC,IAAkC,CAAG;;;;;;;GAUrC,IAAwB,CAAG;;;;;;;;;;;;;;;GAiB3B,IAAgC,CAAG;;;;;;;;;;;GAanC,IAAiC,CAAG;;;;;;;;;;;;AAaH,CAAG;;;;;;;;;;AAYjD,IAAa,IAA2B,CAAG;;;;;;;;;;;;;;;GAiB9B,IAA0B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8B7B,IAAoC,CAAG;;;;;;;;;;;;;;;GAiBvC,IAAoC,CAAG;;;;;;;;;;;;;;;;AAiBH,CAAG;;;;;AAMpD,IAAa,IAAsC,CAAG;;;;;;;;;;;;;;GAgBzC,IAAyC,CAAG;;;;GAO5C,IAA+B,CAAG;;;;;;;;GAUlC,IAAwB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;GA2B3B,IAAiC,CAAG;;;;;;;;;;AAWF,CAAG;;;;;;;;;AAWlD,IAAa,IAAmC,CAAG;;;;;;;;;;;GAatC,IAA+B,CAAG;;;;;;;;;;;GAalC,IAAgC,CAAG;;;;;;;;;;;GAanC,IAAmC,CAAG;;;;;;;;;;;GActC,IAAgC,CAAG;;;;;;;;;;;;;;;;GAkBnC,IAAwC,CAAG;;;;;;;;;;;;;;;;AAiBH,CAAG;;;;;;;;AASxD,IAAa,IAAwC,CAAG;;;;GAM3C,IAAkC,CAAG;;;;;;;;;;;;;;;;;;;;;;;;GA0BrC,IAA4C,CAAG;;;;;;;;;GAW/C,IAA2C,CAAG;;;;;;;;;;GAY9C,IAA8B,CAAG"}
|
|
1
|
+
{"version":3,"file":"graphql.js","names":[],"sources":["../../src/ggnomad/graphql.ts"],"sourcesContent":["import { gql } from '@apollo/client/core';\n\nexport const GGNOMAD_OVERVIEW_QUERY = gql`\n query GGNomadOverview {\n ggnomadOverviewStats {\n users\n listings\n bookings\n monthlyRevenue\n }\n ggnomadAnalytics {\n totalRevenue\n totalBookings\n totalUsers\n conversionRate\n revenueByCategory\n }\n }\n`;\n\n/**\n * One bookable item of each type (properties are priced per night, the rest\n * carry a flat price). Used to seed the Bookings \"create demo booking\" action\n * with a REAL listing id so the mutation passes the backend's\n * assertTargetInWorkspace check instead of failing on a synthetic id.\n */\nexport const GGNOMAD_BOOKABLE_SAMPLE_QUERY = gql`\n query GGNomadBookableSample {\n ggnomadProperties(pagination: { limit: 1, offset: 0 }) {\n id\n name\n pricePerNight\n currency\n }\n ggnomadTours(pagination: { limit: 1, offset: 0 }) {\n id\n name\n price\n currency\n }\n ggnomadEvents(pagination: { limit: 1, offset: 0 }) {\n id\n name\n price\n currency\n }\n ggnomadActivities(pagination: { limit: 1, offset: 0 }) {\n id\n name\n price\n currency\n }\n }\n`;\n\n/**\n * id + name for every favouritable listing type, used to (a) resolve the real\n * entity name for a saved favorite (which the backend only exposes as\n * targetType + targetId) and (b) seed the \"toggle demo favorite\" action with a\n * real target id.\n */\nexport const GGNOMAD_FAVORITE_TARGETS_QUERY = gql`\n query GGNomadFavoriteTargets {\n ggnomadProperties(pagination: { limit: 100, offset: 0 }) {\n id\n name\n }\n ggnomadTours(pagination: { limit: 100, offset: 0 }) {\n id\n name\n }\n ggnomadEvents(pagination: { limit: 100, offset: 0 }) {\n id\n name\n }\n ggnomadActivities(pagination: { limit: 100, offset: 0 }) {\n id\n name\n }\n }\n`;\n\nexport const GGNOMAD_PROVIDERS_QUERY = gql`\n query GGNomadProviders($limit: Int, $offset: Int) {\n ggnomadProviders(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n type\n status\n listingCount\n totalRevenue\n rating\n reviewCount\n contactEmail\n website\n }\n }\n`;\n\nexport const GGNOMAD_PROPERTIES_QUERY = gql`\n query GGNomadProperties($limit: Int, $offset: Int) {\n ggnomadProperties(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n type\n status\n description\n pricePerNight\n currency\n rating\n reviewCount\n maxGuests\n amenities\n images\n providerId\n }\n }\n`;\n\nexport const GGNOMAD_PROPERTY_QUERY = gql`\n query GGNomadProperty($id: ID!) {\n ggnomadProperty(id: $id) {\n id\n name\n type\n status\n description\n address\n pricePerNight\n currency\n rating\n reviewCount\n bedrooms\n bathrooms\n maxGuests\n checkInTime\n checkOutTime\n amenities\n images\n provider {\n id\n name\n type\n rating\n }\n }\n }\n`;\n\n// Query to get property details for booking - ensures id is included\nexport const GGNOMAD_PROPERTY_FOR_BOOKING_QUERY = gql`\n query GGNomadPropertyForBooking($id: ID!) {\n ggnomadProperty(id: $id) {\n id\n name\n pricePerNight\n currency\n }\n }\n`;\n\nexport const GGNOMAD_TOURS_QUERY = gql`\n query GGNomadTours($limit: Int, $offset: Int) {\n ggnomadTours(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n description\n type\n status\n duration\n difficulty\n price\n currency\n rating\n reviewCount\n highlights\n images\n }\n }\n`;\n\nexport const GGNOMAD_TOUR_QUERY = gql`\n query GGNomadTour($id: ID!) {\n ggnomadTour(id: $id) {\n id\n name\n description\n type\n status\n duration\n difficulty\n price\n currency\n rating\n reviewCount\n highlights\n images\n languages\n guideName\n provider {\n id\n name\n }\n }\n }\n`;\n\nexport const GGNOMAD_EVENTS_QUERY = gql`\n query GGNomadEvents($limit: Int, $offset: Int) {\n ggnomadEvents(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n description\n category\n status\n startsAt\n price\n currency\n rating\n reviewCount\n performers\n images\n }\n }\n`;\n\nexport const GGNOMAD_EVENT_QUERY = gql`\n query GGNomadEvent($id: ID!) {\n ggnomadEvent(id: $id) {\n id\n name\n description\n category\n status\n startsAt\n endsAt\n venue\n price\n currency\n rating\n reviewCount\n performers\n images\n provider {\n id\n name\n }\n }\n }\n`;\n\nexport const GGNOMAD_ACTIVITIES_QUERY = gql`\n query GGNomadActivities($limit: Int, $offset: Int) {\n ggnomadActivities(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n description\n category\n status\n duration\n difficulty\n price\n currency\n rating\n reviewCount\n maxParticipants\n includes\n requirements\n images\n }\n }\n`;\n\nexport const GGNOMAD_ACTIVITY_QUERY = gql`\n query GGNomadActivity($id: ID!) {\n ggnomadActivity(id: $id) {\n id\n name\n description\n category\n status\n location\n duration\n difficulty\n price\n currency\n rating\n reviewCount\n maxParticipants\n includes\n requirements\n safetyInfo\n images\n provider {\n id\n name\n }\n }\n }\n`;\n\nexport const GGNOMAD_TRIPS_QUERY = gql`\n query GGNomadTrips($limit: Int, $offset: Int) {\n ggnomadTrips(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n transportMode\n status\n origin\n destination\n departureAt\n arrivalAt\n isRoundTrip\n carrier\n class\n price\n currency\n passengers\n ecoFriendly\n }\n }\n`;\n\nexport const GGNOMAD_BOOKINGS_QUERY = gql`\n query GGNomadBookings($limit: Int, $offset: Int) {\n ggnomadBookings(pagination: { limit: $limit, offset: $offset }) {\n id\n referenceCode\n bookingType\n status\n itemId\n itemName\n guestName\n guestEmail\n guestPhone\n guests\n checkIn\n checkOut\n eventDate\n totalPrice\n currency\n paymentStatus\n paymentMethod\n specialRequests\n createdAt\n }\n }\n`;\n\nexport const GGNOMAD_FAVORITES_QUERY = gql`\n query GGNomadFavorites {\n ggnomadFavorites\n }\n`;\n\nexport const CREATE_GGNOMAD_BOOKING_MUTATION = gql`\n mutation CreateGGNomadBooking($input: CreateGgnomadBookingInput!) {\n createGgnomadBooking(input: $input) {\n id\n referenceCode\n bookingType\n status\n itemId\n itemName\n guestName\n totalPrice\n currency\n createdAt\n }\n }\n`;\n\nexport const TOGGLE_GGNOMAD_FAVORITE_MUTATION = gql`\n mutation ToggleGGNomadFavorite($input: ToggleGgnomadFavoriteInput!) {\n toggleGgnomadFavorite(input: $input)\n }\n`;\n\nexport const CANCEL_GGNOMAD_BOOKING_MUTATION = gql`\n mutation CancelGGNomadBooking($id: ID!, $reason: String) {\n cancelGgnomadBooking(id: $id, reason: $reason) {\n id\n status\n }\n }\n`;\n\n// Mobile tickets / QR-code redemption (BOFF-4362)\nexport const GGNOMAD_TICKETS_QUERY = gql`\n query GGNomadTickets($bookingId: String) {\n ggnomadTickets(bookingId: $bookingId) {\n id\n bookingId\n ticketCode\n qrCodeDataUrl\n status\n issuedAt\n redeemedAt\n redeemedBy\n revokedAt\n revokedReason\n }\n }\n`;\n\nexport const ISSUE_GGNOMAD_TICKET_MUTATION = gql`\n mutation IssueGGNomadTicket($bookingId: ID!) {\n issueGgnomadTicket(bookingId: $bookingId) {\n id\n bookingId\n ticketCode\n qrCodeDataUrl\n status\n issuedAt\n }\n }\n`;\n\nexport const REDEEM_GGNOMAD_TICKET_MUTATION = gql`\n mutation RedeemGGNomadTicket($token: String!) {\n redeemGgnomadTicket(token: $token) {\n id\n bookingId\n ticketCode\n status\n redeemedAt\n redeemedBy\n }\n }\n`;\n\nexport const REVOKE_GGNOMAD_TICKET_MUTATION = gql`\n mutation RevokeGGNomadTicket($id: ID!, $reason: String) {\n revokeGgnomadTicket(id: $id, reason: $reason) {\n id\n status\n revokedAt\n revokedReason\n }\n }\n`;\n\n// Trip Plan Queries\nexport const GGNOMAD_TRIP_PLANS_QUERY = gql`\n query GGNomadTripPlans($limit: Int, $offset: Int) {\n ggnomadTripPlans(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n description\n startDate\n endDate\n travelers\n status\n total\n itemCount\n createdAt\n }\n }\n`;\n\nexport const GGNOMAD_TRIP_PLAN_QUERY = gql`\n query GGNomadTripPlan($id: ID!) {\n ggnomadTripPlan(id: $id) {\n id\n name\n description\n startDate\n endDate\n travelers\n status\n total\n itemCount\n items {\n id\n itemType\n itemId\n itemName\n day\n scheduledAt\n price\n currency\n notes\n }\n createdAt\n updatedAt\n }\n }\n`;\n\n// Trip Plan Mutations\nexport const CREATE_GGNOMAD_TRIP_PLAN_MUTATION = gql`\n mutation CreateGGNomadTripPlan($input: CreateGgnomadTripPlanInput!) {\n createGgnomadTripPlan(input: $input) {\n id\n name\n description\n startDate\n endDate\n travelers\n status\n total\n itemCount\n createdAt\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_TRIP_PLAN_MUTATION = gql`\n mutation UpdateGGNomadTripPlan($id: ID!, $input: UpdateGgnomadTripPlanInput!) {\n updateGgnomadTripPlan(id: $id, input: $input) {\n id\n name\n description\n startDate\n endDate\n travelers\n status\n total\n itemCount\n updatedAt\n }\n }\n`;\n\nexport const DELETE_GGNOMAD_TRIP_PLAN_MUTATION = gql`\n mutation DeleteGGNomadTripPlan($id: ID!) {\n deleteGgnomadTripPlan(id: $id)\n }\n`;\n\nexport const ADD_GGNOMAD_TRIP_PLAN_ITEM_MUTATION = gql`\n mutation AddGGNomadTripPlanItem($tripPlanId: ID!, $input: AddGgnomadTripPlanItemInput!) {\n addGgnomadTripPlanItem(tripPlanId: $tripPlanId, input: $input) {\n id\n itemType\n itemId\n itemName\n day\n scheduledAt\n price\n currency\n notes\n }\n }\n`;\n\nexport const REMOVE_GGNOMAD_TRIP_PLAN_ITEM_MUTATION = gql`\n mutation RemoveGGNomadTripPlanItem($id: ID!) {\n removeGgnomadTripPlanItem(id: $id)\n }\n`;\n\n// Review Queries\nexport const GGNOMAD_REVIEW_SUMMARY_QUERY = gql`\n query GGNomadReviewSummary($targetType: GgnomadBookingType!, $targetId: String!) {\n ggnomadReviewSummary(targetType: $targetType, targetId: $targetId) {\n average\n count\n distribution\n }\n }\n`;\n\nexport const GGNOMAD_REVIEWS_QUERY = gql`\n query GGNomadReviews(\n $targetType: GgnomadBookingType!\n $targetId: String!\n $limit: Int\n $offset: Int\n ) {\n ggnomadReviews(\n targetType: $targetType\n targetId: $targetId\n pagination: { limit: $limit, offset: $offset }\n ) {\n id\n rating\n title\n content\n images\n isVerified\n helpfulCount\n response\n respondedAt\n createdAt\n }\n }\n`;\n\n// Review Mutations\nexport const CREATE_GGNOMAD_REVIEW_MUTATION = gql`\n mutation CreateGGNomadReview($input: CreateGgnomadReviewInput!) {\n createGgnomadReview(input: $input) {\n id\n rating\n title\n content\n }\n }\n`;\n\nexport const RESPOND_GGNOMAD_REVIEW_MUTATION = gql`\n mutation RespondGGNomadReview($id: ID!, $response: String!) {\n respondGgnomadReview(id: $id, response: $response) {\n id\n response\n respondedAt\n }\n }\n`;\n\n// Listing Edit Mutations\nexport const UPDATE_GGNOMAD_PROPERTY_MUTATION = gql`\n mutation UpdateGGNomadProperty($id: ID!, $input: UpdateGgnomadPropertyInput!) {\n updateGgnomadProperty(id: $id, input: $input) {\n id\n name\n description\n pricePerNight\n status\n images\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_TOUR_MUTATION = gql`\n mutation UpdateGGNomadTour($id: ID!, $input: UpdateGgnomadTourInput!) {\n updateGgnomadTour(id: $id, input: $input) {\n id\n name\n description\n price\n status\n images\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_EVENT_MUTATION = gql`\n mutation UpdateGGNomadEvent($id: ID!, $input: UpdateGgnomadEventInput!) {\n updateGgnomadEvent(id: $id, input: $input) {\n id\n name\n description\n price\n status\n images\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_ACTIVITY_MUTATION = gql`\n mutation UpdateGGNomadActivity($id: ID!, $input: UpdateGgnomadActivityInput!) {\n updateGgnomadActivity(id: $id, input: $input) {\n id\n name\n description\n price\n status\n images\n }\n }\n`;\n\n// Corporate travel management — policy, budgets, approvals (BOFF-4365)\nexport const GGNOMAD_TRAVEL_POLICIES_QUERY = gql`\n query GGNomadTravelPolicies($limit: Int, $offset: Int) {\n ggnomadTravelPolicies(pagination: { limit: $limit, offset: $offset }) {\n id\n name\n isActive\n costCenter\n currency\n maxBookingAmount\n maxMonthlyPerTraveler\n blockedDestinations\n allowedTravelClasses\n requireApprovalAlways\n createdAt\n }\n }\n`;\n\nexport const CREATE_GGNOMAD_TRAVEL_POLICY_MUTATION = gql`\n mutation CreateGGNomadTravelPolicy($input: CreateGgnomadTravelPolicyInput!) {\n createGgnomadTravelPolicy(input: $input) {\n id\n name\n isActive\n costCenter\n currency\n maxBookingAmount\n maxMonthlyPerTraveler\n blockedDestinations\n allowedTravelClasses\n requireApprovalAlways\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_TRAVEL_POLICY_MUTATION = gql`\n mutation UpdateGGNomadTravelPolicy($id: ID!, $input: UpdateGgnomadTravelPolicyInput!) {\n updateGgnomadTravelPolicy(id: $id, input: $input) {\n id\n isActive\n }\n }\n`;\n\nexport const DELETE_GGNOMAD_TRAVEL_POLICY_MUTATION = gql`\n mutation DeleteGGNomadTravelPolicy($id: ID!) {\n deleteGgnomadTravelPolicy(id: $id)\n }\n`;\n\nexport const GGNOMAD_BOOKING_APPROVALS_QUERY = gql`\n query GGNomadBookingApprovals($status: GgnomadApprovalStatus, $limit: Int, $offset: Int) {\n ggnomadBookingApprovals(status: $status, pagination: { limit: $limit, offset: $offset }) {\n id\n bookingId\n requestedBy\n costCenter\n reasons\n status\n reviewedBy\n reviewedAt\n reviewNote\n createdAt\n booking {\n id\n referenceCode\n itemName\n totalPrice\n currency\n status\n paymentStatus\n }\n }\n }\n`;\n\nexport const APPROVE_GGNOMAD_BOOKING_APPROVAL_MUTATION = gql`\n mutation ApproveGGNomadBookingApproval($id: ID!, $note: String) {\n approveGgnomadBookingApproval(id: $id, note: $note) {\n id\n status\n reviewedBy\n reviewedAt\n }\n }\n`;\n\nexport const REJECT_GGNOMAD_BOOKING_APPROVAL_MUTATION = gql`\n mutation RejectGGNomadBookingApproval($id: ID!, $reason: String!) {\n rejectGgnomadBookingApproval(id: $id, reason: $reason) {\n id\n status\n reviewedBy\n reviewedAt\n reviewNote\n }\n }\n`;\n\nexport const GGNOMAD_SPEND_SUMMARY_QUERY = gql`\n query GGNomadSpendSummary($costCenter: String) {\n ggnomadSpendSummary(costCenter: $costCenter) {\n totalSpend\n bookingCount\n pendingApprovalCount\n pendingApprovalAmount\n byCostCenter\n }\n }\n`;\n\n// ─── BOFF-4388 — listing verification + booking lifecycle operations queue ─\n\nconst LISTING_QUEUE_FIELDS = `\n __typename\n ... on GgnomadProperty {\n id\n name\n status\n pricePerNight\n currency\n providerId\n updatedAt\n }\n ... on GgnomadTour {\n id\n name\n status\n price\n currency\n providerId\n updatedAt\n }\n ... on GgnomadEvent {\n id\n name\n status\n price\n currency\n providerId\n updatedAt\n }\n ... on GgnomadActivity {\n id\n name\n status\n price\n currency\n providerId\n updatedAt\n }\n`;\n\nexport const GGNOMAD_LISTING_REVIEW_QUEUE_QUERY = gql`\n query GGNomadListingReviewQueue($limit: Int, $offset: Int) {\n ggnomadListingReviewQueue(pagination: { limit: $limit, offset: $offset }) {\n ${LISTING_QUEUE_FIELDS}\n }\n }\n`;\n\nexport const SUBMIT_GGNOMAD_LISTING_FOR_REVIEW_MUTATION = gql`\n mutation SubmitGGNomadListingForReview($listingType: GgnomadListingType!, $id: ID!) {\n submitGgnomadListingForReview(listingType: $listingType, id: $id) {\n ${LISTING_QUEUE_FIELDS}\n }\n }\n`;\n\nexport const APPROVE_GGNOMAD_LISTING_MUTATION = gql`\n mutation ApproveGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $note: String) {\n approveGgnomadListing(listingType: $listingType, id: $id, note: $note) {\n ${LISTING_QUEUE_FIELDS}\n }\n }\n`;\n\nexport const REJECT_GGNOMAD_LISTING_MUTATION = gql`\n mutation RejectGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $reason: String!) {\n rejectGgnomadListing(listingType: $listingType, id: $id, reason: $reason) {\n ${LISTING_QUEUE_FIELDS}\n }\n }\n`;\n\nexport const PAUSE_GGNOMAD_LISTING_MUTATION = gql`\n mutation PauseGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $reason: String) {\n pauseGgnomadListing(listingType: $listingType, id: $id, reason: $reason) {\n ${LISTING_QUEUE_FIELDS}\n }\n }\n`;\n\nexport const RESUME_GGNOMAD_LISTING_MUTATION = gql`\n mutation ResumeGGNomadListing($listingType: GgnomadListingType!, $id: ID!) {\n resumeGgnomadListing(listingType: $listingType, id: $id) {\n ${LISTING_QUEUE_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_GGNOMAD_LISTING_MUTATION = gql`\n mutation ArchiveGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $reason: String) {\n archiveGgnomadListing(listingType: $listingType, id: $id, reason: $reason) {\n ${LISTING_QUEUE_FIELDS}\n }\n }\n`;\n\nexport const GGNOMAD_BOOKING_QUEUE_QUERY = gql`\n query GGNomadBookingQueue($limit: Int, $offset: Int) {\n ggnomadBookingQueue(pagination: { limit: $limit, offset: $offset }) {\n id\n referenceCode\n bookingType\n status\n itemName\n guestName\n guests\n checkIn\n checkOut\n eventDate\n totalPrice\n currency\n createdAt\n }\n }\n`;\n\nexport const CHECK_IN_GGNOMAD_BOOKING_MUTATION = gql`\n mutation CheckInGGNomadBooking($id: ID!) {\n checkInGgnomadBooking(id: $id) {\n id\n status\n }\n }\n`;\n\nexport const COMPLETE_GGNOMAD_BOOKING_MUTATION = gql`\n mutation CompleteGGNomadBooking($id: ID!) {\n completeGgnomadBooking(id: $id) {\n id\n status\n }\n }\n`;\n\nexport const MARK_GGNOMAD_BOOKING_NO_SHOW_MUTATION = gql`\n mutation MarkGGNomadBookingNoShow($id: ID!, $reason: String) {\n markGgnomadBookingNoShow(id: $id, reason: $reason) {\n id\n status\n }\n }\n`;\n\nexport const GGNOMAD_AUDIT_LOG_QUERY = gql`\n query GGNomadAuditLog($entityType: String!, $entityId: String!, $limit: Int, $offset: Int) {\n ggnomadAuditLog(\n entityType: $entityType\n entityId: $entityId\n pagination: { limit: $limit, offset: $offset }\n ) {\n id\n action\n fromStatus\n toStatus\n reason\n actorId\n createdAt\n }\n }\n`;\n"],"mappings":";;AAEA,IAAa,IAAyB,CAAG;;;;;;;;;;;;;;;;GAwB5B,IAAgC,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCnC,IAAiC,CAAG;;;;;;;;;;;;;;;;;;;GAqBpC,IAA0B,CAAG;;;;;;;;;;;;;;;GAiB7B,IAA2B,CAAG;;;;;;;;;;;;;;;;;;GAoB9B,IAAyB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BS,CAAG;;;;;;;;;;AAWrD,IAAa,IAAsB,CAAG;;;;;;;;;;;;;;;;;;GAoBzB,IAAqB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;GA0BxB,IAAuB,CAAG;;;;;;;;;;;;;;;;;GAmB1B,IAAsB,CAAG;;;;;;;;;;;;;;;;;;;;;;;GAyBzB,IAA2B,CAAG;;;;;;;;;;;;;;;;;;;;GAsB9B,IAAyB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;GA4B5B,IAAsB,CAAG;;;;;;;;;;;;;;;;;;;;GAsBzB,IAAyB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;GA0B5B,IAA0B,CAAG;;;;GAM7B,IAAkC,CAAG;;;;;;;;;;;;;;;GAiBrC,IAAmC,CAAG;;;;GAMtC,IAAkC,CAAG;;;;;;;GAUrC,IAAwB,CAAG;;;;;;;;;;;;;;;GAiB3B,IAAgC,CAAG;;;;;;;;;;;GAanC,IAAiC,CAAG;;;;;;;;;;;;AAaH,CAAG;;;;;;;;;;AAYjD,IAAa,IAA2B,CAAG;;;;;;;;;;;;;;;GAiB9B,IAA0B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8B7B,IAAoC,CAAG;;;;;;;;;;;;;;;GAiBvC,IAAoC,CAAG;;;;;;;;;;;;;;;;AAiBH,CAAG;;;;;AAMpD,IAAa,IAAsC,CAAG;;;;;;;;;;;;;;GAgBzC,IAAyC,CAAG;;;;GAO5C,IAA+B,CAAG;;;;;;;;GAUlC,IAAwB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;GA2B3B,IAAiC,CAAG;;;;;;;;;;AAWF,CAAG;;;;;;;;;AAWlD,IAAa,IAAmC,CAAG;;;;;;;;;;;GAatC,IAA+B,CAAG;;;;;;;;;;;GAalC,IAAgC,CAAG;;;;;;;;;;;GAanC,IAAmC,CAAG;;;;;;;;;;;GActC,IAAgC,CAAG;;;;;;;;;;;;;;;;GAkBnC,IAAwC,CAAG;;;;;;;;;;;;;;;;AAiBH,CAAG;;;;;;;;AASxD,IAAa,IAAwC,CAAG;;;;GAM3C,IAAkC,CAAG;;;;;;;;;;;;;;;;;;;;;;;;GA0BrC,IAA4C,CAAG;;;;;;;;;GAW/C,IAA2C,CAAG;;;;;;;;;;GAY9C,IAA8B,CAAG;;;;;;;;;;GAcxC,IAAuB,ifAwChB,IAAqC,CAAG;;;QAG7C,EAAqB;;;;AAK6B,CAAG;;;QAGrD,EAAqB;;;;AAK7B,IAAa,IAAmC,CAAG;;;QAG3C,EAAqB;;;GAKhB,IAAkC,CAAG;;;QAG1C,EAAqB;;;;AAKiB,CAAG;;;QAGzC,EAAqB;;;GAKkB,CAAG;;;QAG1C,EAAqB;;;GAKmB,CAAG;;;QAG3C,EAAqB;;;;AAK7B,IAAa,IAA8B,CAAG;;;;;;;;;;;;;;;;;;GAoBjC,IAAoC,CAAG;;;;;;;GASvC,IAAoC,CAAG;;;;;;;GASvC,IAAwC,CAAG;;;;;;;GAS3C,IAA0B,CAAG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BOFF-4388 — the operational side of the marketplace: a marketplace operator
|
|
3
|
+
* (or host-operator for their own submissions) reviews PENDING_REVIEW
|
|
4
|
+
* listings and works the incoming booking queue from one place. Every action
|
|
5
|
+
* here calls a real, guarded mutation on wspace-ggnomad-svc — approve/reject
|
|
6
|
+
* on listings are gated server-side by the `ggnomad:manage` RBAC action
|
|
7
|
+
* (marketplace operator only); check-in/complete/no-show/cancel are gated by
|
|
8
|
+
* `ggnomad:update` (host-operator and above).
|
|
9
|
+
*/
|
|
10
|
+
export declare function OperationsQueuePage(): import("react").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=OperationsQueuePage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationsQueuePage.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/pages/OperationsQueuePage.tsx"],"names":[],"mappings":"AAoFA;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,gCAkiBlC"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import { APPROVE_GGNOMAD_LISTING_MUTATION as e, CANCEL_GGNOMAD_BOOKING_MUTATION as t, CHECK_IN_GGNOMAD_BOOKING_MUTATION as n, COMPLETE_GGNOMAD_BOOKING_MUTATION as r, GGNOMAD_BOOKING_QUEUE_QUERY as ee, GGNOMAD_LISTING_REVIEW_QUEUE_QUERY as te, MARK_GGNOMAD_BOOKING_NO_SHOW_MUTATION as ne, REJECT_GGNOMAD_LISTING_MUTATION as i } from "../graphql.js";
|
|
2
|
+
import { PageShell as a } from "./PageShell.js";
|
|
3
|
+
import { StatusBadge as o } from "../components/StatusBadge.js";
|
|
4
|
+
import { SectionCard as s } from "../components/SectionCard.js";
|
|
5
|
+
import { EntityCard as c } from "../components/EntityCard.js";
|
|
6
|
+
import { notify as l } from "../utils/notify.js";
|
|
7
|
+
import { AuditTrailDialog as re } from "../components/AuditTrailDialog.js";
|
|
8
|
+
import "../components/index.js";
|
|
9
|
+
import { useMemo as u, useState as d } from "react";
|
|
10
|
+
import { Check as f, ClipboardList as p, History as m, LogIn as h, LogOut as g, ShieldQuestion as _, UserX as ie, X as ae, XCircle as oe } from "lucide-react";
|
|
11
|
+
import { useI18n as se } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
12
|
+
import { useMutation as v, useQuery as y } from "@apollo/client/react";
|
|
13
|
+
import { AlertDialog as b, AlertDialogAction as x, AlertDialogCancel as S, AlertDialogContent as C, AlertDialogDescription as w, AlertDialogFooter as T, AlertDialogHeader as E, AlertDialogTitle as D, CTAOverflowMenu as O, IllustratedEmptyState as k, PagePurpose as ce } from "@burdenoff/fe-libs/ui";
|
|
14
|
+
import { jsx as A, jsxs as j } from "react/jsx-runtime";
|
|
15
|
+
//#region src/ggnomad/pages/OperationsQueuePage.tsx
|
|
16
|
+
var M = {
|
|
17
|
+
GgnomadProperty: "PROPERTY",
|
|
18
|
+
GgnomadTour: "TOUR",
|
|
19
|
+
GgnomadEvent: "EVENT",
|
|
20
|
+
GgnomadActivity: "ACTIVITY"
|
|
21
|
+
};
|
|
22
|
+
function N() {
|
|
23
|
+
let { t: N } = se(), [P, F] = d(null), [I, L] = d(""), [R, z] = d(null), [B, V] = d(null), [H, U] = d(null), { data: W, refetch: G, loading: le } = y(te, { variables: {
|
|
24
|
+
limit: 20,
|
|
25
|
+
offset: 0
|
|
26
|
+
} }), K = u(() => W?.ggnomadListingReviewQueue ?? [], [W?.ggnomadListingReviewQueue]), { data: q, refetch: J, loading: ue } = y(ee, { variables: {
|
|
27
|
+
limit: 20,
|
|
28
|
+
offset: 0
|
|
29
|
+
} }), Y = u(() => q?.ggnomadBookingQueue ?? [], [q?.ggnomadBookingQueue]), [de, { loading: fe }] = v(e), [pe, { loading: X }] = v(i), [me, { loading: he }] = v(n), [Z, { loading: ge }] = v(r), [_e, { loading: Q }] = v(ne), [ve, { loading: $ }] = v(t), ye = async (e) => {
|
|
30
|
+
let t = M[e.__typename];
|
|
31
|
+
if (t) try {
|
|
32
|
+
let n = await de({ variables: {
|
|
33
|
+
listingType: t,
|
|
34
|
+
id: e.id
|
|
35
|
+
} });
|
|
36
|
+
if (n.error) {
|
|
37
|
+
l.error(N("ggnomad.opsQueue.approveErrorTitle", "Could not approve listing"), n.error.message);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
l.success(N("ggnomad.opsQueue.approveSuccessTitle", "Listing approved"), e.name), await G();
|
|
41
|
+
} catch (e) {
|
|
42
|
+
l.error(N("ggnomad.opsQueue.approveErrorTitle", "Could not approve listing"), e instanceof Error ? e.message : String(e));
|
|
43
|
+
}
|
|
44
|
+
}, be = async () => {
|
|
45
|
+
if (P) {
|
|
46
|
+
if (!I.trim()) {
|
|
47
|
+
l.warning(N("ggnomad.opsQueue.reject.reasonRequiredTitle", "A reason is required"), N("ggnomad.opsQueue.reject.reasonRequiredBody", "Let the submitter know what needs fixing."));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
let e = await pe({ variables: {
|
|
52
|
+
listingType: P.listingType,
|
|
53
|
+
id: P.id,
|
|
54
|
+
reason: I.trim()
|
|
55
|
+
} });
|
|
56
|
+
if (e.error) {
|
|
57
|
+
l.error(N("ggnomad.opsQueue.rejectErrorTitle", "Could not reject listing"), e.error.message);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
l.success(N("ggnomad.opsQueue.rejectSuccessTitle", "Listing sent back to draft"), P.name), await G();
|
|
61
|
+
} catch (e) {
|
|
62
|
+
l.error(N("ggnomad.opsQueue.rejectErrorTitle", "Could not reject listing"), e instanceof Error ? e.message : String(e));
|
|
63
|
+
} finally {
|
|
64
|
+
F(null), L("");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}, xe = async (e) => {
|
|
68
|
+
try {
|
|
69
|
+
let t = await me({ variables: { id: e.id } });
|
|
70
|
+
if (t.error) {
|
|
71
|
+
l.error(N("ggnomad.opsQueue.checkInErrorTitle", "Could not check in"), t.error.message);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
l.success(N("ggnomad.opsQueue.checkInSuccessTitle", "Checked in"), e.referenceCode), await J();
|
|
75
|
+
} catch (e) {
|
|
76
|
+
l.error(N("ggnomad.opsQueue.checkInErrorTitle", "Could not check in"), e instanceof Error ? e.message : String(e));
|
|
77
|
+
}
|
|
78
|
+
}, Se = async (e) => {
|
|
79
|
+
try {
|
|
80
|
+
let t = await Z({ variables: { id: e.id } });
|
|
81
|
+
if (t.error) {
|
|
82
|
+
l.error(N("ggnomad.opsQueue.completeErrorTitle", "Could not complete booking"), t.error.message);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
l.success(N("ggnomad.opsQueue.completeSuccessTitle", "Booking completed"), e.referenceCode), await J();
|
|
86
|
+
} catch (e) {
|
|
87
|
+
l.error(N("ggnomad.opsQueue.completeErrorTitle", "Could not complete booking"), e instanceof Error ? e.message : String(e));
|
|
88
|
+
}
|
|
89
|
+
}, Ce = async () => {
|
|
90
|
+
if (R) try {
|
|
91
|
+
let e = await _e({ variables: {
|
|
92
|
+
id: R.id,
|
|
93
|
+
reason: N("ggnomad.opsQueue.noShowReason", "Marked via operations queue")
|
|
94
|
+
} });
|
|
95
|
+
if (e.error) {
|
|
96
|
+
l.error(N("ggnomad.opsQueue.noShowErrorTitle", "Could not mark as no-show"), e.error.message);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
l.success(N("ggnomad.opsQueue.noShowSuccessTitle", "Marked as no-show"), R.referenceCode), await J();
|
|
100
|
+
} catch (e) {
|
|
101
|
+
l.error(N("ggnomad.opsQueue.noShowErrorTitle", "Could not mark as no-show"), e instanceof Error ? e.message : String(e));
|
|
102
|
+
} finally {
|
|
103
|
+
z(null);
|
|
104
|
+
}
|
|
105
|
+
}, we = async () => {
|
|
106
|
+
if (B) try {
|
|
107
|
+
let e = await ve({ variables: {
|
|
108
|
+
id: B.id,
|
|
109
|
+
reason: N("ggnomad.opsQueue.cancelReason", "Cancelled via operations queue")
|
|
110
|
+
} });
|
|
111
|
+
if (e.error) {
|
|
112
|
+
l.error(N("ggnomad.opsQueue.cancelErrorTitle", "Could not cancel booking"), e.error.message);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
l.success(N("ggnomad.opsQueue.cancelSuccessTitle", "Booking cancelled"), B.referenceCode), await J();
|
|
116
|
+
} catch (e) {
|
|
117
|
+
l.error(N("ggnomad.opsQueue.cancelErrorTitle", "Could not cancel booking"), e instanceof Error ? e.message : String(e));
|
|
118
|
+
} finally {
|
|
119
|
+
V(null);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
return /* @__PURE__ */ j(a, {
|
|
123
|
+
title: N("ggnomad.opsQueue.title", "Operations Queue"),
|
|
124
|
+
titleAccent: N("ggnomad.opsQueue.title.accent", "Operations"),
|
|
125
|
+
subtitle: N("ggnomad.opsQueue.subtitle", "Verify listings before they go live and work the incoming booking queue"),
|
|
126
|
+
children: [
|
|
127
|
+
/* @__PURE__ */ A(ce, {
|
|
128
|
+
icon: /* @__PURE__ */ A(p, { className: "size-4" }),
|
|
129
|
+
children: N("ggnomad.opsQueue.purpose", "Listings move DRAFT → PENDING_REVIEW → ACTIVE — approve or reject submissions here before they can be booked. Bookings move PENDING → CONFIRMED → CHECKED_IN → COMPLETED — check guests in, complete stays, or mark a no-show once the scheduled date has arrived. Every action is recorded in the transition history.")
|
|
130
|
+
}),
|
|
131
|
+
/* @__PURE__ */ A(s, {
|
|
132
|
+
title: N("ggnomad.opsQueue.listingsTitle", "Listings awaiting review"),
|
|
133
|
+
children: !le && K.length === 0 ? /* @__PURE__ */ A(k, {
|
|
134
|
+
illustration: "empty-data",
|
|
135
|
+
title: N("ggnomad.opsQueue.listingsEmptyTitle", "Nothing waiting on you"),
|
|
136
|
+
description: N("ggnomad.opsQueue.listingsEmptyDescription", "Listings submitted for review will show up here in submission order.")
|
|
137
|
+
}) : /* @__PURE__ */ A("div", {
|
|
138
|
+
className: "grid gap-3 sm:grid-cols-2 xl:grid-cols-3",
|
|
139
|
+
children: K.map((e) => {
|
|
140
|
+
let t = M[e.__typename], n = e.pricePerNight ?? e.price ?? 0;
|
|
141
|
+
return /* @__PURE__ */ A(c, {
|
|
142
|
+
title: e.name,
|
|
143
|
+
meta: t,
|
|
144
|
+
price: `${e.currency} ${Number(n).toFixed(2)}`,
|
|
145
|
+
badge: /* @__PURE__ */ A(o, {
|
|
146
|
+
status: e.status,
|
|
147
|
+
live: !0
|
|
148
|
+
}),
|
|
149
|
+
footer: /* @__PURE__ */ A(O, {
|
|
150
|
+
align: "end",
|
|
151
|
+
actions: [
|
|
152
|
+
{
|
|
153
|
+
label: N("ggnomad.opsQueue.actions.approve", "Approve"),
|
|
154
|
+
onSelect: () => void ye(e),
|
|
155
|
+
disabled: fe,
|
|
156
|
+
icon: /* @__PURE__ */ A(f, {})
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
label: N("ggnomad.opsQueue.actions.reject", "Reject"),
|
|
160
|
+
onSelect: () => {
|
|
161
|
+
t && (F({
|
|
162
|
+
listingType: t,
|
|
163
|
+
id: e.id,
|
|
164
|
+
name: e.name
|
|
165
|
+
}), L(""));
|
|
166
|
+
},
|
|
167
|
+
intent: "destructive",
|
|
168
|
+
icon: /* @__PURE__ */ A(ae, {})
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
label: N("ggnomad.opsQueue.actions.history", "History"),
|
|
172
|
+
onSelect: () => U({
|
|
173
|
+
entityType: t ?? "PROPERTY",
|
|
174
|
+
entityId: e.id,
|
|
175
|
+
label: e.name
|
|
176
|
+
}),
|
|
177
|
+
icon: /* @__PURE__ */ A(m, {})
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
})
|
|
181
|
+
}, e.id);
|
|
182
|
+
})
|
|
183
|
+
})
|
|
184
|
+
}),
|
|
185
|
+
/* @__PURE__ */ A(s, {
|
|
186
|
+
title: N("ggnomad.opsQueue.bookingsTitle", "Booking queue"),
|
|
187
|
+
children: !ue && Y.length === 0 ? /* @__PURE__ */ A(k, {
|
|
188
|
+
illustration: "empty-data",
|
|
189
|
+
title: N("ggnomad.opsQueue.bookingsEmptyTitle", "No bookings need attention"),
|
|
190
|
+
description: N("ggnomad.opsQueue.bookingsEmptyDescription", "Pending, confirmed, and checked-in bookings appear here in scheduled-start order.")
|
|
191
|
+
}) : /* @__PURE__ */ A("div", {
|
|
192
|
+
className: "grid gap-3 sm:grid-cols-2 xl:grid-cols-3",
|
|
193
|
+
children: Y.map((e) => {
|
|
194
|
+
let t = [];
|
|
195
|
+
return e.status === "CONFIRMED" && t.push({
|
|
196
|
+
label: N("ggnomad.opsQueue.actions.checkIn", "Check in"),
|
|
197
|
+
onSelect: () => void xe(e),
|
|
198
|
+
disabled: he,
|
|
199
|
+
icon: /* @__PURE__ */ A(h, {})
|
|
200
|
+
}, {
|
|
201
|
+
label: N("ggnomad.opsQueue.actions.noShow", "Mark no-show"),
|
|
202
|
+
onSelect: () => z({
|
|
203
|
+
id: e.id,
|
|
204
|
+
referenceCode: e.referenceCode
|
|
205
|
+
}),
|
|
206
|
+
disabled: Q,
|
|
207
|
+
icon: /* @__PURE__ */ A(_, {})
|
|
208
|
+
}), e.status === "CHECKED_IN" && t.push({
|
|
209
|
+
label: N("ggnomad.opsQueue.actions.complete", "Complete"),
|
|
210
|
+
onSelect: () => void Se(e),
|
|
211
|
+
disabled: ge,
|
|
212
|
+
icon: /* @__PURE__ */ A(g, {})
|
|
213
|
+
}), t.push({
|
|
214
|
+
label: N("ggnomad.opsQueue.actions.cancel", "Cancel"),
|
|
215
|
+
onSelect: () => V({
|
|
216
|
+
id: e.id,
|
|
217
|
+
referenceCode: e.referenceCode
|
|
218
|
+
}),
|
|
219
|
+
disabled: $,
|
|
220
|
+
icon: /* @__PURE__ */ A(oe, {}),
|
|
221
|
+
intent: "destructive"
|
|
222
|
+
}, {
|
|
223
|
+
label: N("ggnomad.opsQueue.actions.history", "History"),
|
|
224
|
+
onSelect: () => U({
|
|
225
|
+
entityType: "BOOKING",
|
|
226
|
+
entityId: e.id,
|
|
227
|
+
label: e.referenceCode
|
|
228
|
+
}),
|
|
229
|
+
icon: /* @__PURE__ */ A(m, {})
|
|
230
|
+
}), /* @__PURE__ */ A(c, {
|
|
231
|
+
title: e.referenceCode,
|
|
232
|
+
meta: `${e.itemName} · ${e.guestName}`,
|
|
233
|
+
price: `${e.currency} ${Number(e.totalPrice).toFixed(2)}`,
|
|
234
|
+
badge: /* @__PURE__ */ A(o, {
|
|
235
|
+
status: e.status,
|
|
236
|
+
live: !0
|
|
237
|
+
}),
|
|
238
|
+
footer: /* @__PURE__ */ A(O, {
|
|
239
|
+
align: "end",
|
|
240
|
+
actions: t
|
|
241
|
+
})
|
|
242
|
+
}, e.id);
|
|
243
|
+
})
|
|
244
|
+
})
|
|
245
|
+
}),
|
|
246
|
+
/* @__PURE__ */ A(b, {
|
|
247
|
+
open: P !== null,
|
|
248
|
+
onOpenChange: (e) => {
|
|
249
|
+
e || (F(null), L(""));
|
|
250
|
+
},
|
|
251
|
+
children: /* @__PURE__ */ j(C, { children: [
|
|
252
|
+
/* @__PURE__ */ j(E, { children: [/* @__PURE__ */ A(D, { children: N("ggnomad.opsQueue.rejectDialog.title", "Reject this listing?") }), /* @__PURE__ */ A(w, { children: N("ggnomad.opsQueue.rejectDialog.body", "This sends {{name}} back to DRAFT. The reason is recorded.").replace("{{name}}", P?.name ?? "") })] }),
|
|
253
|
+
/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("label", {
|
|
254
|
+
htmlFor: "ops-reject-reason",
|
|
255
|
+
className: "block text-sm font-medium text-text-primary",
|
|
256
|
+
children: N("ggnomad.opsQueue.rejectDialog.reasonLabel", "Reason")
|
|
257
|
+
}), /* @__PURE__ */ A("textarea", {
|
|
258
|
+
id: "ops-reject-reason",
|
|
259
|
+
value: I,
|
|
260
|
+
onChange: (e) => L(e.target.value),
|
|
261
|
+
disabled: X,
|
|
262
|
+
rows: 3,
|
|
263
|
+
className: "mt-1 w-full rounded-md border border-border-seam bg-bg-canvas px-3 py-2 text-sm text-text-primary placeholder-text-secondary focus:border-action-primary-bg focus:outline-none focus:ring-1 focus:ring-action-primary-bg disabled:opacity-50",
|
|
264
|
+
placeholder: N("ggnomad.opsQueue.rejectDialog.reasonPlaceholder", "e.g. Missing required photos")
|
|
265
|
+
})] }),
|
|
266
|
+
/* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(S, {
|
|
267
|
+
disabled: X,
|
|
268
|
+
children: N("ggnomad.opsQueue.rejectDialog.cancel", "Keep pending")
|
|
269
|
+
}), /* @__PURE__ */ A(x, {
|
|
270
|
+
className: "bg-action-danger-bg text-action-danger-text hover:bg-action-danger-bgHover",
|
|
271
|
+
disabled: X,
|
|
272
|
+
onClick: (e) => {
|
|
273
|
+
e.preventDefault(), be();
|
|
274
|
+
},
|
|
275
|
+
children: X ? N("ggnomad.opsQueue.rejectDialog.rejecting", "Rejecting…") : N("ggnomad.opsQueue.rejectDialog.confirm", "Reject listing")
|
|
276
|
+
})] })
|
|
277
|
+
] })
|
|
278
|
+
}),
|
|
279
|
+
/* @__PURE__ */ A(b, {
|
|
280
|
+
open: R !== null,
|
|
281
|
+
onOpenChange: (e) => !e && z(null),
|
|
282
|
+
children: /* @__PURE__ */ j(C, { children: [/* @__PURE__ */ j(E, { children: [/* @__PURE__ */ A(D, { children: N("ggnomad.opsQueue.noShowDialog.title", "Mark as no-show?") }), /* @__PURE__ */ A(w, { children: N("ggnomad.opsQueue.noShowDialog.body", "{{ref}} will be marked NO_SHOW. Only allowed once the scheduled start has arrived.").replace("{{ref}}", R?.referenceCode ?? "") })] }), /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(S, {
|
|
283
|
+
disabled: Q,
|
|
284
|
+
children: N("ggnomad.opsQueue.noShowDialog.cancel", "Keep booking")
|
|
285
|
+
}), /* @__PURE__ */ j(x, {
|
|
286
|
+
disabled: Q,
|
|
287
|
+
onClick: (e) => {
|
|
288
|
+
e.preventDefault(), Ce();
|
|
289
|
+
},
|
|
290
|
+
children: [/* @__PURE__ */ A(ie, { className: "mr-1 size-4" }), Q ? N("ggnomad.opsQueue.noShowDialog.marking", "Marking…") : N("ggnomad.opsQueue.noShowDialog.confirm", "Mark no-show")]
|
|
291
|
+
})] })] })
|
|
292
|
+
}),
|
|
293
|
+
/* @__PURE__ */ A(b, {
|
|
294
|
+
open: B !== null,
|
|
295
|
+
onOpenChange: (e) => !e && V(null),
|
|
296
|
+
children: /* @__PURE__ */ j(C, { children: [/* @__PURE__ */ j(E, { children: [/* @__PURE__ */ A(D, { children: N("ggnomad.opsQueue.cancelDialog.title", "Cancel this booking?") }), /* @__PURE__ */ A(w, { children: N("ggnomad.opsQueue.cancelDialog.body", "This releases reservation {{ref}} and cannot be undone.").replace("{{ref}}", B?.referenceCode ?? "") })] }), /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(S, {
|
|
297
|
+
disabled: $,
|
|
298
|
+
children: N("ggnomad.opsQueue.cancelDialog.keep", "Keep booking")
|
|
299
|
+
}), /* @__PURE__ */ A(x, {
|
|
300
|
+
className: "bg-action-danger-bg text-action-danger-text hover:bg-action-danger-bgHover",
|
|
301
|
+
disabled: $,
|
|
302
|
+
onClick: (e) => {
|
|
303
|
+
e.preventDefault(), we();
|
|
304
|
+
},
|
|
305
|
+
children: $ ? N("ggnomad.opsQueue.cancelDialog.cancelling", "Cancelling…") : N("ggnomad.opsQueue.cancelDialog.confirm", "Cancel booking")
|
|
306
|
+
})] })] })
|
|
307
|
+
}),
|
|
308
|
+
H ? /* @__PURE__ */ A(re, {
|
|
309
|
+
open: H !== null,
|
|
310
|
+
onOpenChange: (e) => {
|
|
311
|
+
e || U(null);
|
|
312
|
+
},
|
|
313
|
+
entityType: H.entityType,
|
|
314
|
+
entityId: H.entityId,
|
|
315
|
+
label: H.label
|
|
316
|
+
}) : null
|
|
317
|
+
]
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
//#endregion
|
|
321
|
+
export { N as OperationsQueuePage };
|
|
322
|
+
|
|
323
|
+
//# sourceMappingURL=OperationsQueuePage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationsQueuePage.js","names":[],"sources":["../../../src/ggnomad/pages/OperationsQueuePage.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport type { TypedDocumentNode } from '@apollo/client';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n Check,\n ClipboardList,\n History,\n LogIn,\n LogOut,\n ShieldQuestion,\n UserX,\n X,\n XCircle,\n} from 'lucide-react';\nimport type { CTAAction } from '@burdenoff/fe-libs/ui';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n CTAOverflowMenu,\n IllustratedEmptyState,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\n\nimport {\n APPROVE_GGNOMAD_LISTING_MUTATION,\n CANCEL_GGNOMAD_BOOKING_MUTATION,\n CHECK_IN_GGNOMAD_BOOKING_MUTATION,\n COMPLETE_GGNOMAD_BOOKING_MUTATION,\n GGNOMAD_BOOKING_QUEUE_QUERY,\n GGNOMAD_LISTING_REVIEW_QUEUE_QUERY,\n MARK_GGNOMAD_BOOKING_NO_SHOW_MUTATION,\n REJECT_GGNOMAD_LISTING_MUTATION,\n} from '../graphql';\nimport { PageShell } from './PageShell';\nimport { AuditTrailDialog, EntityCard, SectionCard, StatusBadge } from '../components';\nimport { notify } from '../utils/notify';\n\ntype ListingType = 'PROPERTY' | 'TOUR' | 'EVENT' | 'ACTIVITY';\n\ninterface QueuedListing {\n __typename: string;\n id: string;\n name: string;\n status: string;\n price?: number;\n pricePerNight?: number;\n currency: string;\n providerId: string | null;\n}\n\ninterface QueuedBooking {\n id: string;\n referenceCode: string;\n bookingType: string;\n status: string;\n itemName: string;\n guestName: string;\n guests: number;\n checkIn: string | null;\n checkOut: string | null;\n eventDate: string | null;\n totalPrice: number;\n currency: string;\n}\n\nconst LISTING_TYPE_BY_TYPENAME: Record<string, ListingType> = {\n GgnomadProperty: 'PROPERTY',\n GgnomadTour: 'TOUR',\n GgnomadEvent: 'EVENT',\n GgnomadActivity: 'ACTIVITY',\n};\n\ntype HistoryTarget = { entityType: string; entityId: string; label: string };\ntype RejectTarget = { listingType: ListingType; id: string; name: string };\ntype NoShowTarget = { id: string; referenceCode: string };\ntype CancelTarget = { id: string; referenceCode: string };\n\n/**\n * BOFF-4388 — the operational side of the marketplace: a marketplace operator\n * (or host-operator for their own submissions) reviews PENDING_REVIEW\n * listings and works the incoming booking queue from one place. Every action\n * here calls a real, guarded mutation on wspace-ggnomad-svc — approve/reject\n * on listings are gated server-side by the `ggnomad:manage` RBAC action\n * (marketplace operator only); check-in/complete/no-show/cancel are gated by\n * `ggnomad:update` (host-operator and above).\n */\nexport function OperationsQueuePage() {\n const { t } = useI18n();\n const [rejectTarget, setRejectTarget] = useState<RejectTarget | null>(null);\n const [rejectReason, setRejectReason] = useState('');\n const [noShowTarget, setNoShowTarget] = useState<NoShowTarget | null>(null);\n const [cancelTarget, setCancelTarget] = useState<CancelTarget | null>(null);\n const [historyTarget, setHistoryTarget] = useState<HistoryTarget | null>(null);\n\n const {\n data: listingData,\n refetch: refetchListings,\n loading: listingsLoading,\n } = useQuery(\n GGNOMAD_LISTING_REVIEW_QUEUE_QUERY as TypedDocumentNode<\n { ggnomadListingReviewQueue: QueuedListing[] },\n { limit?: number; offset?: number }\n >,\n { variables: { limit: 20, offset: 0 } }\n );\n const listings = useMemo(\n () => listingData?.ggnomadListingReviewQueue ?? [],\n [listingData?.ggnomadListingReviewQueue]\n );\n\n const {\n data: bookingData,\n refetch: refetchBookings,\n loading: bookingsLoading,\n } = useQuery(\n GGNOMAD_BOOKING_QUEUE_QUERY as TypedDocumentNode<\n { ggnomadBookingQueue: QueuedBooking[] },\n { limit?: number; offset?: number }\n >,\n { variables: { limit: 20, offset: 0 } }\n );\n const bookings = useMemo(\n () => bookingData?.ggnomadBookingQueue ?? [],\n [bookingData?.ggnomadBookingQueue]\n );\n\n const [approveListing, { loading: approving }] = useMutation(\n APPROVE_GGNOMAD_LISTING_MUTATION as TypedDocumentNode<\n { approveGgnomadListing: { id: string; status: string } },\n { listingType: ListingType; id: string; note?: string }\n >\n );\n const [rejectListing, { loading: rejecting }] = useMutation(\n REJECT_GGNOMAD_LISTING_MUTATION as TypedDocumentNode<\n { rejectGgnomadListing: { id: string; status: string } },\n { listingType: ListingType; id: string; reason: string }\n >\n );\n const [checkInBooking, { loading: checkingIn }] = useMutation(\n CHECK_IN_GGNOMAD_BOOKING_MUTATION as TypedDocumentNode<\n { checkInGgnomadBooking: { id: string } },\n { id: string }\n >\n );\n const [completeBooking, { loading: completing }] = useMutation(\n COMPLETE_GGNOMAD_BOOKING_MUTATION as TypedDocumentNode<\n { completeGgnomadBooking: { id: string } },\n { id: string }\n >\n );\n const [markNoShow, { loading: markingNoShow }] = useMutation(\n MARK_GGNOMAD_BOOKING_NO_SHOW_MUTATION as TypedDocumentNode<\n { markGgnomadBookingNoShow: { id: string } },\n { id: string; reason?: string }\n >\n );\n const [cancelBooking, { loading: cancelling }] = useMutation(\n CANCEL_GGNOMAD_BOOKING_MUTATION as TypedDocumentNode<\n { cancelGgnomadBooking: { id: string } },\n { id: string; reason: string }\n >\n );\n\n const handleApprove = async (listing: QueuedListing) => {\n const listingType = LISTING_TYPE_BY_TYPENAME[listing.__typename];\n if (!listingType) return;\n try {\n const result = await approveListing({ variables: { listingType, id: listing.id } });\n if (result.error) {\n notify.error(\n t('ggnomad.opsQueue.approveErrorTitle', 'Could not approve listing'),\n result.error.message\n );\n return;\n }\n notify.success(t('ggnomad.opsQueue.approveSuccessTitle', 'Listing approved'), listing.name);\n await refetchListings();\n } catch (err) {\n notify.error(\n t('ggnomad.opsQueue.approveErrorTitle', 'Could not approve listing'),\n err instanceof Error ? err.message : String(err)\n );\n }\n };\n\n const confirmReject = async () => {\n if (!rejectTarget) return;\n if (!rejectReason.trim()) {\n notify.warning(\n t('ggnomad.opsQueue.reject.reasonRequiredTitle', 'A reason is required'),\n t('ggnomad.opsQueue.reject.reasonRequiredBody', 'Let the submitter know what needs fixing.')\n );\n return;\n }\n try {\n const result = await rejectListing({\n variables: {\n listingType: rejectTarget.listingType,\n id: rejectTarget.id,\n reason: rejectReason.trim(),\n },\n });\n if (result.error) {\n notify.error(\n t('ggnomad.opsQueue.rejectErrorTitle', 'Could not reject listing'),\n result.error.message\n );\n return;\n }\n notify.success(\n t('ggnomad.opsQueue.rejectSuccessTitle', 'Listing sent back to draft'),\n rejectTarget.name\n );\n await refetchListings();\n } catch (err) {\n notify.error(\n t('ggnomad.opsQueue.rejectErrorTitle', 'Could not reject listing'),\n err instanceof Error ? err.message : String(err)\n );\n } finally {\n setRejectTarget(null);\n setRejectReason('');\n }\n };\n\n const handleCheckIn = async (booking: QueuedBooking) => {\n try {\n const result = await checkInBooking({ variables: { id: booking.id } });\n if (result.error) {\n notify.error(\n t('ggnomad.opsQueue.checkInErrorTitle', 'Could not check in'),\n result.error.message\n );\n return;\n }\n notify.success(\n t('ggnomad.opsQueue.checkInSuccessTitle', 'Checked in'),\n booking.referenceCode\n );\n await refetchBookings();\n } catch (err) {\n notify.error(\n t('ggnomad.opsQueue.checkInErrorTitle', 'Could not check in'),\n err instanceof Error ? err.message : String(err)\n );\n }\n };\n\n const handleComplete = async (booking: QueuedBooking) => {\n try {\n const result = await completeBooking({ variables: { id: booking.id } });\n if (result.error) {\n notify.error(\n t('ggnomad.opsQueue.completeErrorTitle', 'Could not complete booking'),\n result.error.message\n );\n return;\n }\n notify.success(\n t('ggnomad.opsQueue.completeSuccessTitle', 'Booking completed'),\n booking.referenceCode\n );\n await refetchBookings();\n } catch (err) {\n notify.error(\n t('ggnomad.opsQueue.completeErrorTitle', 'Could not complete booking'),\n err instanceof Error ? err.message : String(err)\n );\n }\n };\n\n const confirmNoShow = async () => {\n if (!noShowTarget) return;\n try {\n const result = await markNoShow({\n variables: {\n id: noShowTarget.id,\n reason: t('ggnomad.opsQueue.noShowReason', 'Marked via operations queue'),\n },\n });\n if (result.error) {\n notify.error(\n t('ggnomad.opsQueue.noShowErrorTitle', 'Could not mark as no-show'),\n result.error.message\n );\n return;\n }\n notify.success(\n t('ggnomad.opsQueue.noShowSuccessTitle', 'Marked as no-show'),\n noShowTarget.referenceCode\n );\n await refetchBookings();\n } catch (err) {\n notify.error(\n t('ggnomad.opsQueue.noShowErrorTitle', 'Could not mark as no-show'),\n err instanceof Error ? err.message : String(err)\n );\n } finally {\n setNoShowTarget(null);\n }\n };\n\n const confirmCancel = async () => {\n if (!cancelTarget) return;\n try {\n const result = await cancelBooking({\n variables: {\n id: cancelTarget.id,\n reason: t('ggnomad.opsQueue.cancelReason', 'Cancelled via operations queue'),\n },\n });\n if (result.error) {\n notify.error(\n t('ggnomad.opsQueue.cancelErrorTitle', 'Could not cancel booking'),\n result.error.message\n );\n return;\n }\n notify.success(\n t('ggnomad.opsQueue.cancelSuccessTitle', 'Booking cancelled'),\n cancelTarget.referenceCode\n );\n await refetchBookings();\n } catch (err) {\n notify.error(\n t('ggnomad.opsQueue.cancelErrorTitle', 'Could not cancel booking'),\n err instanceof Error ? err.message : String(err)\n );\n } finally {\n setCancelTarget(null);\n }\n };\n\n return (\n <PageShell\n title={t('ggnomad.opsQueue.title', 'Operations Queue')}\n titleAccent={t('ggnomad.opsQueue.title.accent', 'Operations')}\n subtitle={t(\n 'ggnomad.opsQueue.subtitle',\n 'Verify listings before they go live and work the incoming booking queue'\n )}\n >\n <PagePurpose icon={<ClipboardList className=\"size-4\" />}>\n {t(\n 'ggnomad.opsQueue.purpose',\n 'Listings move DRAFT → PENDING_REVIEW → ACTIVE — approve or reject submissions here before they can be booked. Bookings move PENDING → CONFIRMED → CHECKED_IN → COMPLETED — check guests in, complete stays, or mark a no-show once the scheduled date has arrived. Every action is recorded in the transition history.'\n )}\n </PagePurpose>\n\n <SectionCard title={t('ggnomad.opsQueue.listingsTitle', 'Listings awaiting review')}>\n {!listingsLoading && listings.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={t('ggnomad.opsQueue.listingsEmptyTitle', 'Nothing waiting on you')}\n description={t(\n 'ggnomad.opsQueue.listingsEmptyDescription',\n 'Listings submitted for review will show up here in submission order.'\n )}\n />\n ) : (\n <div className=\"grid gap-3 sm:grid-cols-2 xl:grid-cols-3\">\n {listings.map((listing) => {\n const listingType = LISTING_TYPE_BY_TYPENAME[listing.__typename];\n const price = listing.pricePerNight ?? listing.price ?? 0;\n return (\n <EntityCard\n key={listing.id}\n title={listing.name}\n meta={listingType}\n price={`${listing.currency} ${Number(price).toFixed(2)}`}\n badge={<StatusBadge status={listing.status} live />}\n footer={\n <CTAOverflowMenu\n align=\"end\"\n actions={[\n {\n label: t('ggnomad.opsQueue.actions.approve', 'Approve'),\n onSelect: () => void handleApprove(listing),\n disabled: approving,\n icon: <Check />,\n },\n {\n label: t('ggnomad.opsQueue.actions.reject', 'Reject'),\n onSelect: () => {\n if (!listingType) return;\n setRejectTarget({ listingType, id: listing.id, name: listing.name });\n setRejectReason('');\n },\n intent: 'destructive',\n icon: <X />,\n },\n {\n label: t('ggnomad.opsQueue.actions.history', 'History'),\n onSelect: () =>\n setHistoryTarget({\n entityType: listingType ?? 'PROPERTY',\n entityId: listing.id,\n label: listing.name,\n }),\n icon: <History />,\n },\n ]}\n />\n }\n />\n );\n })}\n </div>\n )}\n </SectionCard>\n\n <SectionCard title={t('ggnomad.opsQueue.bookingsTitle', 'Booking queue')}>\n {!bookingsLoading && bookings.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={t('ggnomad.opsQueue.bookingsEmptyTitle', 'No bookings need attention')}\n description={t(\n 'ggnomad.opsQueue.bookingsEmptyDescription',\n 'Pending, confirmed, and checked-in bookings appear here in scheduled-start order.'\n )}\n />\n ) : (\n <div className=\"grid gap-3 sm:grid-cols-2 xl:grid-cols-3\">\n {bookings.map((booking) => {\n const actions: CTAAction[] = [];\n if (booking.status === 'CONFIRMED') {\n actions.push(\n {\n label: t('ggnomad.opsQueue.actions.checkIn', 'Check in'),\n onSelect: () => void handleCheckIn(booking),\n disabled: checkingIn,\n icon: <LogIn />,\n },\n {\n label: t('ggnomad.opsQueue.actions.noShow', 'Mark no-show'),\n onSelect: () =>\n setNoShowTarget({ id: booking.id, referenceCode: booking.referenceCode }),\n disabled: markingNoShow,\n icon: <ShieldQuestion />,\n }\n );\n }\n if (booking.status === 'CHECKED_IN') {\n actions.push({\n label: t('ggnomad.opsQueue.actions.complete', 'Complete'),\n onSelect: () => void handleComplete(booking),\n disabled: completing,\n icon: <LogOut />,\n });\n }\n actions.push(\n {\n label: t('ggnomad.opsQueue.actions.cancel', 'Cancel'),\n onSelect: () =>\n setCancelTarget({ id: booking.id, referenceCode: booking.referenceCode }),\n disabled: cancelling,\n icon: <XCircle />,\n intent: 'destructive',\n },\n {\n label: t('ggnomad.opsQueue.actions.history', 'History'),\n onSelect: () =>\n setHistoryTarget({\n entityType: 'BOOKING',\n entityId: booking.id,\n label: booking.referenceCode,\n }),\n icon: <History />,\n }\n );\n\n return (\n <EntityCard\n key={booking.id}\n title={booking.referenceCode}\n meta={`${booking.itemName} · ${booking.guestName}`}\n price={`${booking.currency} ${Number(booking.totalPrice).toFixed(2)}`}\n badge={<StatusBadge status={booking.status} live />}\n footer={<CTAOverflowMenu align=\"end\" actions={actions} />}\n />\n );\n })}\n </div>\n )}\n </SectionCard>\n\n <AlertDialog\n open={rejectTarget !== null}\n onOpenChange={(open) => {\n if (!open) {\n setRejectTarget(null);\n setRejectReason('');\n }\n }}\n >\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>\n {t('ggnomad.opsQueue.rejectDialog.title', 'Reject this listing?')}\n </AlertDialogTitle>\n <AlertDialogDescription>\n {t(\n 'ggnomad.opsQueue.rejectDialog.body',\n 'This sends {{name}} back to DRAFT. The reason is recorded.'\n ).replace('{{name}}', rejectTarget?.name ?? '')}\n </AlertDialogDescription>\n </AlertDialogHeader>\n <div>\n <label\n htmlFor=\"ops-reject-reason\"\n className=\"block text-sm font-medium text-text-primary\"\n >\n {t('ggnomad.opsQueue.rejectDialog.reasonLabel', 'Reason')}\n </label>\n <textarea\n id=\"ops-reject-reason\"\n value={rejectReason}\n onChange={(e) => setRejectReason(e.target.value)}\n disabled={rejecting}\n rows={3}\n className=\"mt-1 w-full rounded-md border border-border-seam bg-bg-canvas px-3 py-2 text-sm text-text-primary placeholder-text-secondary focus:border-action-primary-bg focus:outline-none focus:ring-1 focus:ring-action-primary-bg disabled:opacity-50\"\n placeholder={t(\n 'ggnomad.opsQueue.rejectDialog.reasonPlaceholder',\n 'e.g. Missing required photos'\n )}\n />\n </div>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={rejecting}>\n {t('ggnomad.opsQueue.rejectDialog.cancel', 'Keep pending')}\n </AlertDialogCancel>\n <AlertDialogAction\n className=\"bg-action-danger-bg text-action-danger-text hover:bg-action-danger-bgHover\"\n disabled={rejecting}\n onClick={(event) => {\n event.preventDefault();\n void confirmReject();\n }}\n >\n {rejecting\n ? t('ggnomad.opsQueue.rejectDialog.rejecting', 'Rejecting…')\n : t('ggnomad.opsQueue.rejectDialog.confirm', 'Reject listing')}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n\n <AlertDialog\n open={noShowTarget !== null}\n onOpenChange={(open) => !open && setNoShowTarget(null)}\n >\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>\n {t('ggnomad.opsQueue.noShowDialog.title', 'Mark as no-show?')}\n </AlertDialogTitle>\n <AlertDialogDescription>\n {t(\n 'ggnomad.opsQueue.noShowDialog.body',\n '{{ref}} will be marked NO_SHOW. Only allowed once the scheduled start has arrived.'\n ).replace('{{ref}}', noShowTarget?.referenceCode ?? '')}\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={markingNoShow}>\n {t('ggnomad.opsQueue.noShowDialog.cancel', 'Keep booking')}\n </AlertDialogCancel>\n <AlertDialogAction\n disabled={markingNoShow}\n onClick={(event) => {\n event.preventDefault();\n void confirmNoShow();\n }}\n >\n <UserX className=\"mr-1 size-4\" />\n {markingNoShow\n ? t('ggnomad.opsQueue.noShowDialog.marking', 'Marking…')\n : t('ggnomad.opsQueue.noShowDialog.confirm', 'Mark no-show')}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n\n <AlertDialog\n open={cancelTarget !== null}\n onOpenChange={(open) => !open && setCancelTarget(null)}\n >\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>\n {t('ggnomad.opsQueue.cancelDialog.title', 'Cancel this booking?')}\n </AlertDialogTitle>\n <AlertDialogDescription>\n {t(\n 'ggnomad.opsQueue.cancelDialog.body',\n 'This releases reservation {{ref}} and cannot be undone.'\n ).replace('{{ref}}', cancelTarget?.referenceCode ?? '')}\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={cancelling}>\n {t('ggnomad.opsQueue.cancelDialog.keep', 'Keep booking')}\n </AlertDialogCancel>\n <AlertDialogAction\n className=\"bg-action-danger-bg text-action-danger-text hover:bg-action-danger-bgHover\"\n disabled={cancelling}\n onClick={(event) => {\n event.preventDefault();\n void confirmCancel();\n }}\n >\n {cancelling\n ? t('ggnomad.opsQueue.cancelDialog.cancelling', 'Cancelling…')\n : t('ggnomad.opsQueue.cancelDialog.confirm', 'Cancel booking')}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n\n {historyTarget ? (\n <AuditTrailDialog\n open={historyTarget !== null}\n onOpenChange={(open) => {\n if (!open) setHistoryTarget(null);\n }}\n entityType={historyTarget.entityType}\n entityId={historyTarget.entityId}\n label={historyTarget.label}\n />\n ) : null}\n </PageShell>\n );\n}\n"],"mappings":"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"}
|