@burdenoff/microfe-ggnomad 2026.725.2 → 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 +66 -52
- package/dist/ggnomad/GGNomadRoot.js.map +1 -1
- package/dist/ggnomad/GGNomadRoutes.d.ts.map +1 -1
- package/dist/ggnomad/GGNomadRoutes.js +13 -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/CreateTravelPolicyDialog.d.ts +14 -0
- package/dist/ggnomad/components/CreateTravelPolicyDialog.d.ts.map +1 -0
- package/dist/ggnomad/components/CreateTravelPolicyDialog.js +192 -0
- package/dist/ggnomad/components/CreateTravelPolicyDialog.js.map +1 -0
- package/dist/ggnomad/components/index.d.ts +2 -0
- package/dist/ggnomad/components/index.d.ts.map +1 -1
- package/dist/ggnomad/components/index.js +2 -0
- package/dist/ggnomad/graphql.d.ts +20 -0
- package/dist/ggnomad/graphql.d.ts.map +1 -1
- package/dist/ggnomad/graphql.js +199 -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/dist/ggnomad/pages/TravelPolicyPage.d.ts +9 -0
- package/dist/ggnomad/pages/TravelPolicyPage.d.ts.map +1 -0
- package/dist/ggnomad/pages/TravelPolicyPage.js +245 -0
- package/dist/ggnomad/pages/TravelPolicyPage.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,124 +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
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: "ggnomad-travel-policy",
|
|
86
|
+
label: w("ggnomad.nav.travelPolicy", "Travel Policy"),
|
|
87
|
+
path: t(C, "travel-policy"),
|
|
88
|
+
icon: /* @__PURE__ */ v(m, { size: 16 }),
|
|
89
|
+
order: 55
|
|
90
|
+
},
|
|
77
91
|
{
|
|
78
92
|
id: "ggnomad-favorites",
|
|
79
|
-
label:
|
|
80
|
-
path: t(
|
|
81
|
-
icon: /* @__PURE__ */
|
|
93
|
+
label: w("ggnomad.nav.favorites", "Favorites"),
|
|
94
|
+
path: t(C, "favorites"),
|
|
95
|
+
icon: /* @__PURE__ */ v(h, { size: 16 }),
|
|
82
96
|
order: 60
|
|
83
97
|
},
|
|
84
98
|
{
|
|
85
99
|
id: "ggnomad-provider",
|
|
86
|
-
label:
|
|
87
|
-
path: t(
|
|
88
|
-
icon: /* @__PURE__ */ g
|
|
100
|
+
label: w("ggnomad.nav.providers", "Providers"),
|
|
101
|
+
path: t(C, "provider"),
|
|
102
|
+
icon: /* @__PURE__ */ v(g, { size: 16 }),
|
|
89
103
|
order: 70
|
|
90
104
|
},
|
|
91
105
|
{
|
|
92
106
|
id: "ggnomad-analytics",
|
|
93
|
-
label:
|
|
94
|
-
path: t(
|
|
95
|
-
icon: /* @__PURE__ */
|
|
107
|
+
label: w("ggnomad.nav.analytics", "Analytics"),
|
|
108
|
+
path: t(C, "analytics"),
|
|
109
|
+
icon: /* @__PURE__ */ v(a, { size: 16 }),
|
|
96
110
|
order: 80
|
|
97
111
|
}
|
|
98
112
|
]
|
|
99
113
|
});
|
|
100
114
|
}, [
|
|
101
|
-
y,
|
|
102
115
|
x,
|
|
103
|
-
|
|
116
|
+
C,
|
|
117
|
+
w
|
|
104
118
|
]), r(() => {
|
|
105
|
-
if (
|
|
119
|
+
if (S) return S([{
|
|
106
120
|
id: "ggnomad-ready",
|
|
107
|
-
label:
|
|
121
|
+
label: w("ggnomad.footer.ready", "GGNomad Ready"),
|
|
108
122
|
type: "status",
|
|
109
123
|
section: "left",
|
|
110
124
|
order: 10
|
|
111
125
|
}]);
|
|
112
|
-
}, [
|
|
126
|
+
}, [S, w]), /* @__PURE__ */ v(y, {
|
|
113
127
|
workspaceId: null,
|
|
114
128
|
gateway: "global",
|
|
115
129
|
defaultEnabled: !0,
|
|
116
|
-
children: /* @__PURE__ */
|
|
117
|
-
...
|
|
118
|
-
children: /* @__PURE__ */
|
|
130
|
+
children: /* @__PURE__ */ v(e, {
|
|
131
|
+
...b,
|
|
132
|
+
children: /* @__PURE__ */ v(n, {})
|
|
119
133
|
})
|
|
120
134
|
});
|
|
121
135
|
};
|
|
122
136
|
//#endregion
|
|
123
|
-
export {
|
|
137
|
+
export { b as GGNomadRoot };
|
|
124
138
|
|
|
125
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 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-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":";;;;;;;;;AAyBA,IAAa,KAAqC,MAAU;CAC1D,IAAM,EAAE,qBAAkB,wBAAqB,cAAW,QAAQ,GAC5D,EAAE,SAAM,EAAQ;CA+HtB,OA7HA,QAAgB;EACT,OA0GL,OAAO,EAAiB;GArGtB,IAAI;GACJ,OAAO,EAAE,oBAAoB,SAAS;GACtC,MAAM;GACN,MAAM,kBAAC,GAAD,EAAiB,MAAM,GAAK,CAAA;GAClC,OAAO;GACP,OAAO;GACP,UAAU;IACR;KACE,IAAI;KACJ,OAAO,EAAE,yBAAyB,WAAW;KAC7C,MAAM;KACN,MAAM,kBAAC,GAAD,EAAiB,MAAM,GAAK,CAAA;KAClC,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,sBAAsB,QAAQ;KACvC,MAAM,EAAS,GAAU,QAAQ;KACjC,MAAM,kBAAC,GAAD,EAAQ,MAAM,GAAK,CAAA;KACzB,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,sBAAsB,QAAQ;KACvC,MAAM,EAAS,GAAU,QAAQ;KACjC,MAAM,kBAAC,GAAD,EAAS,MAAM,GAAK,CAAA;KAC1B,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,2BAA2B,aAAa;KACjD,MAAM,EAAS,GAAU,aAAa;KACtC,MAAM,kBAAC,GAAD,EAAU,MAAM,GAAK,CAAA;KAC3B,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,uBAAuB,SAAS;KACzC,MAAM,EAAS,GAAU,SAAS;KAClC,MAAM,kBAAC,GAAD,EAAW,MAAM,GAAK,CAAA;KAC5B,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,6BAA6B,eAAe;KACrD,MAAM,EAAS,GAAU,eAAe;KACxC,MAAM,kBAAC,GAAD,EAAU,MAAM,GAAK,CAAA;KAC3B,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,qBAAqB,OAAO;KACrC,MAAM,EAAS,GAAU,OAAO;KAChC,MAAM,kBAAC,GAAD,EAAK,MAAM,GAAK,CAAA;KACtB,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,wBAAwB,UAAU;KAC3C,MAAM,EAAS,GAAU,UAAU;KACnC,MAAM,kBAAC,GAAD,EAAe,MAAM,GAAK,CAAA;KAChC,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,0BAA0B,kBAAkB;KACrD,MAAM,EAAS,GAAU,YAAY;KACrC,MAAM,kBAAC,GAAD,EAAgB,MAAM,GAAK,CAAA;KACjC,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,4BAA4B,eAAe;KACpD,MAAM,EAAS,GAAU,eAAe;KACxC,MAAM,kBAAC,GAAD,EAAa,MAAM,GAAK,CAAA;KAC9B,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,yBAAyB,WAAW;KAC7C,MAAM,EAAS,GAAU,WAAW;KACpC,MAAM,kBAAC,GAAD,EAAM,MAAM,GAAK,CAAA;KACvB,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,yBAAyB,WAAW;KAC7C,MAAM,EAAS,GAAU,UAAU;KACnC,MAAM,kBAAC,GAAD,EAAS,MAAM,GAAK,CAAA;KAC1B,OAAO;IACT;IACA;KACE,IAAI;KACJ,OAAO,EAAE,yBAAyB,WAAW;KAC7C,MAAM,EAAS,GAAU,WAAW;KACpC,MAAM,kBAAC,GAAD,EAAW,MAAM,GAAK,CAAA;KAC5B,OAAO;IACT;GACF;EAGsB,CAAO;CACjC,GAAG;EAAC;EAAkB;EAAU;CAAC,CAAC,GAElC,QAAgB;EACT,OAGL,OAAO,EAAoB,CACzB;GACE,IAAI;GACJ,OAAO,EAAE,wBAAwB,eAAe;GAChD,MAAM;GACN,SAAS;GACT,OAAO;EACT,CACF,CAAC;CACH,GAAG,CAAC,GAAqB,CAAC,CAAC,GAGzB,kBAAC,GAAD;EAAqB,aAAa;EAAM,SAAQ;EAAS,gBAAgB;YACvE,kBAAC,GAAD;GAAiB,GAAI;aACnB,kBAAC,GAAD,CAAgB,CAAA;EACD,CAAA;CACE,CAAA;AAEzB"}
|
|
@@ -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 })));
|
|
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,
|
|
@@ -59,6 +59,14 @@ function T() {
|
|
|
59
59
|
path: "bookings",
|
|
60
60
|
element: /* @__PURE__ */ s(v, {})
|
|
61
61
|
}),
|
|
62
|
+
/* @__PURE__ */ s(a, {
|
|
63
|
+
path: "travel-policy",
|
|
64
|
+
element: /* @__PURE__ */ s(w, {})
|
|
65
|
+
}),
|
|
66
|
+
/* @__PURE__ */ s(a, {
|
|
67
|
+
path: "operations",
|
|
68
|
+
element: /* @__PURE__ */ s(T, {})
|
|
69
|
+
}),
|
|
62
70
|
/* @__PURE__ */ s(a, {
|
|
63
71
|
path: "favorites",
|
|
64
72
|
element: /* @__PURE__ */ s(y, {})
|
|
@@ -90,6 +98,6 @@ function T() {
|
|
|
90
98
|
});
|
|
91
99
|
}
|
|
92
100
|
//#endregion
|
|
93
|
-
export {
|
|
101
|
+
export { D as GGNomadRoutes };
|
|
94
102
|
|
|
95
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);\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=\"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":"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"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface CreateTravelPolicyDialogProps {
|
|
2
|
+
open: boolean;
|
|
3
|
+
onOpenChange: (open: boolean) => void;
|
|
4
|
+
onCreated?: () => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Manager-only form (BOFF-4365) for defining a corporate travel policy:
|
|
8
|
+
* budget caps, blocked destinations, allowed travel classes, and an
|
|
9
|
+
* always-require-approval override. `costCenter` left blank applies the
|
|
10
|
+
* policy workspace-wide; a value scopes it to just that department.
|
|
11
|
+
*/
|
|
12
|
+
export declare function CreateTravelPolicyDialog({ open, onOpenChange, onCreated, }: CreateTravelPolicyDialogProps): import("react").JSX.Element;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=CreateTravelPolicyDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateTravelPolicyDialog.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/components/CreateTravelPolicyDialog.tsx"],"names":[],"mappings":"AAmBA,UAAU,6BAA6B;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAiBD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,YAAY,EACZ,SAAS,GACV,EAAE,6BAA6B,+BA0Q/B"}
|