@burdenoff/microfe-ggnomad 2026.608.1 → 2026.626.1
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/components/DetailRow.js +18 -0
- package/dist/ggnomad/components/DetailRow.js.map +1 -0
- package/dist/ggnomad/components/EntityCard.js +50 -0
- package/dist/ggnomad/components/EntityCard.js.map +1 -0
- package/dist/ggnomad/components/SectionCard.js +21 -0
- package/dist/ggnomad/components/SectionCard.js.map +1 -0
- package/dist/ggnomad/components/StatCard.js +27 -0
- package/dist/ggnomad/components/StatCard.js.map +1 -0
- package/dist/ggnomad/components/StatusBadge.js +65 -0
- package/dist/ggnomad/components/StatusBadge.js.map +1 -0
- package/dist/ggnomad/components/index.js +5 -0
- package/dist/ggnomad/pages/ActivityDetailsPage.js +84 -37
- package/dist/ggnomad/pages/ActivityDetailsPage.js.map +1 -1
- package/dist/ggnomad/pages/AnalyticsPage.js +64 -55
- package/dist/ggnomad/pages/AnalyticsPage.js.map +1 -1
- package/dist/ggnomad/pages/BookingsPage.js +108 -60
- package/dist/ggnomad/pages/BookingsPage.js.map +1 -1
- package/dist/ggnomad/pages/DashboardPage.js +135 -110
- package/dist/ggnomad/pages/DashboardPage.js.map +1 -1
- package/dist/ggnomad/pages/EntertainmentPage.js +40 -33
- package/dist/ggnomad/pages/EntertainmentPage.js.map +1 -1
- package/dist/ggnomad/pages/EventDetailsPage.js +86 -39
- package/dist/ggnomad/pages/EventDetailsPage.js.map +1 -1
- package/dist/ggnomad/pages/FavoritesPage.js +44 -27
- package/dist/ggnomad/pages/FavoritesPage.js.map +1 -1
- package/dist/ggnomad/pages/HospitalityPage.js +45 -42
- package/dist/ggnomad/pages/HospitalityPage.js.map +1 -1
- package/dist/ggnomad/pages/PageShell.js +33 -11
- package/dist/ggnomad/pages/PageShell.js.map +1 -1
- package/dist/ggnomad/pages/PropertyDetailsPage.js +95 -45
- package/dist/ggnomad/pages/PropertyDetailsPage.js.map +1 -1
- package/dist/ggnomad/pages/ProviderPage.js +65 -29
- package/dist/ggnomad/pages/ProviderPage.js.map +1 -1
- package/dist/ggnomad/pages/SearchPage.js +57 -48
- package/dist/ggnomad/pages/SearchPage.js.map +1 -1
- package/dist/ggnomad/pages/TourDetailsPage.js +86 -39
- package/dist/ggnomad/pages/TourDetailsPage.js.map +1 -1
- package/dist/ggnomad/pages/TourismPage.js +64 -63
- package/dist/ggnomad/pages/TourismPage.js.map +1 -1
- package/dist/ggnomad/pages/TravelPage.js +43 -27
- package/dist/ggnomad/pages/TravelPage.js.map +1 -1
- package/dist/ggnomad/utils/cn.js +10 -0
- package/dist/ggnomad/utils/cn.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,54 +1,104 @@
|
|
|
1
1
|
import { GGNOMAD_PROPERTY_QUERY as e } from "../graphql.js";
|
|
2
2
|
import { PageShell as t } from "./PageShell.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
3
|
+
import { SectionCard as n } from "../components/SectionCard.js";
|
|
4
|
+
import { DetailRow as r } from "../components/DetailRow.js";
|
|
5
|
+
import "../components/index.js";
|
|
6
|
+
import { CalendarCheck as i, Hotel as a } from "lucide-react";
|
|
7
|
+
import { useI18n as o } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
8
|
+
import { useNavigate as s, useParams as c } from "react-router-dom";
|
|
9
|
+
import { useQuery as l } from "@apollo/client/react";
|
|
10
|
+
import { GlassCard as u, IllustratedEmptyState as d, NextSteps as f, PagePurpose as p } from "@burdenoff/fe-libs/ui";
|
|
11
|
+
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
6
12
|
//#region src/ggnomad/pages/PropertyDetailsPage.tsx
|
|
7
|
-
function
|
|
8
|
-
let {
|
|
9
|
-
variables: { id:
|
|
10
|
-
skip: !
|
|
11
|
-
}),
|
|
12
|
-
return /* @__PURE__ */
|
|
13
|
-
title:
|
|
14
|
-
subtitle: "Detailed hospitality listing view",
|
|
15
|
-
children:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
13
|
+
function _() {
|
|
14
|
+
let { t: _ } = o(), v = s(), { id: y = "" } = c(), { data: b } = l(e, {
|
|
15
|
+
variables: { id: y },
|
|
16
|
+
skip: !y
|
|
17
|
+
}), x = b?.ggnomadProperty;
|
|
18
|
+
return /* @__PURE__ */ h(t, {
|
|
19
|
+
title: x?.name ?? _("ggnomad.property.fallbackTitle", "Property details"),
|
|
20
|
+
subtitle: _("ggnomad.property.subtitle", "Detailed hospitality listing view"),
|
|
21
|
+
children: x ? /* @__PURE__ */ g(m, { children: [
|
|
22
|
+
/* @__PURE__ */ h(p, {
|
|
23
|
+
icon: /* @__PURE__ */ h(a, { className: "size-4" }),
|
|
24
|
+
children: _("ggnomad.property.purpose", "Everything you need to decide on this stay — its type, description, nightly price, guest capacity, rating and the provider behind it — before you reserve it.")
|
|
25
|
+
}),
|
|
26
|
+
/* @__PURE__ */ h(f, {
|
|
27
|
+
storageKey: "ggnomad-property-detail",
|
|
28
|
+
steps: [{
|
|
29
|
+
id: "book",
|
|
30
|
+
label: _("ggnomad.property.next.book", "Book this stay"),
|
|
31
|
+
description: _("ggnomad.property.next.bookDesc", "Reserve these dates and track it under Bookings."),
|
|
32
|
+
icon: /* @__PURE__ */ h(i, { className: "size-4" }),
|
|
33
|
+
onClick: () => v("../../bookings")
|
|
34
|
+
}, {
|
|
35
|
+
id: "browse",
|
|
36
|
+
label: _("ggnomad.property.next.browse", "Compare other stays"),
|
|
37
|
+
description: _("ggnomad.property.next.browseDesc", "Go back to hospitality listings to compare options."),
|
|
38
|
+
icon: /* @__PURE__ */ h(a, { className: "size-4" }),
|
|
39
|
+
onClick: () => v("..")
|
|
40
|
+
}]
|
|
41
|
+
}),
|
|
42
|
+
/* @__PURE__ */ g("div", {
|
|
43
|
+
className: "grid gap-4 lg:grid-cols-2",
|
|
44
|
+
children: [/* @__PURE__ */ g(n, {
|
|
45
|
+
title: _("ggnomad.property.about", "About"),
|
|
46
|
+
children: [
|
|
47
|
+
/* @__PURE__ */ h("p", {
|
|
48
|
+
className: "text-sm text-text-secondary",
|
|
49
|
+
children: _("ggnomad.property.type", "Type")
|
|
50
|
+
}),
|
|
51
|
+
/* @__PURE__ */ h("p", {
|
|
52
|
+
className: "text-text-primary",
|
|
53
|
+
children: x.type
|
|
54
|
+
}),
|
|
55
|
+
/* @__PURE__ */ h("p", {
|
|
56
|
+
className: "mt-3 text-sm text-text-secondary",
|
|
57
|
+
children: _("ggnomad.property.description", "Description")
|
|
58
|
+
}),
|
|
59
|
+
/* @__PURE__ */ h("p", {
|
|
60
|
+
className: "text-text-primary",
|
|
61
|
+
children: x.description ?? _("ggnomad.property.noDescription", "No description")
|
|
62
|
+
})
|
|
63
|
+
]
|
|
64
|
+
}), /* @__PURE__ */ g(u, {
|
|
65
|
+
treatment: "glass",
|
|
66
|
+
glow: !0,
|
|
67
|
+
className: "border-border-seam p-5",
|
|
68
|
+
children: [/* @__PURE__ */ h("h2", {
|
|
69
|
+
className: "mb-4 text-lg font-medium tracking-tight text-text-primary",
|
|
70
|
+
children: _("ggnomad.property.details", "Details")
|
|
71
|
+
}), /* @__PURE__ */ g("dl", {
|
|
72
|
+
className: "space-y-2 text-sm",
|
|
73
|
+
children: [
|
|
74
|
+
/* @__PURE__ */ h(r, {
|
|
75
|
+
label: _("ggnomad.property.price", "Price"),
|
|
76
|
+
value: `${x.currency} ${Number(x.pricePerNight).toFixed(2)}`
|
|
77
|
+
}),
|
|
78
|
+
/* @__PURE__ */ h(r, {
|
|
79
|
+
label: _("ggnomad.property.guests", "Guests"),
|
|
80
|
+
value: String(x.maxGuests)
|
|
81
|
+
}),
|
|
82
|
+
/* @__PURE__ */ h(r, {
|
|
83
|
+
label: _("ggnomad.property.rating", "Rating"),
|
|
84
|
+
value: String(x.rating ?? _("ggnomad.property.noRating", "N/A"))
|
|
85
|
+
}),
|
|
86
|
+
/* @__PURE__ */ h(r, {
|
|
87
|
+
label: _("ggnomad.property.provider", "Provider"),
|
|
88
|
+
value: x.provider?.name ?? _("ggnomad.property.unassigned", "Unassigned")
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
})]
|
|
92
|
+
})]
|
|
93
|
+
})
|
|
94
|
+
] }) : /* @__PURE__ */ h(d, {
|
|
95
|
+
illustration: "empty-data",
|
|
96
|
+
title: _("ggnomad.property.notFoundTitle", "No property found"),
|
|
97
|
+
description: _("ggnomad.property.notFoundDescription", "This property is unavailable or may have been removed.")
|
|
48
98
|
})
|
|
49
99
|
});
|
|
50
100
|
}
|
|
51
101
|
//#endregion
|
|
52
|
-
export {
|
|
102
|
+
export { _ as PropertyDetailsPage };
|
|
53
103
|
|
|
54
104
|
//# sourceMappingURL=PropertyDetailsPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyDetailsPage.js","names":[],"sources":["../../../src/ggnomad/pages/PropertyDetailsPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { useParams } from 'react-router-dom';\n\nimport { GGNOMAD_PROPERTY_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function PropertyDetailsPage() {\n const { id = '' } = useParams();\n const { data } = useQuery
|
|
1
|
+
{"version":3,"file":"PropertyDetailsPage.js","names":[],"sources":["../../../src/ggnomad/pages/PropertyDetailsPage.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 { useNavigate, useParams } from 'react-router-dom';\nimport { CalendarCheck, Hotel } from 'lucide-react';\nimport { GlassCard, IllustratedEmptyState, NextSteps, PagePurpose } from '@burdenoff/fe-libs/ui';\n\nimport { GGNOMAD_PROPERTY_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\nimport { DetailRow, SectionCard } from '../components';\n\nexport function PropertyDetailsPage() {\n const { t } = useI18n();\n const navigate = useNavigate();\n const { id = '' } = useParams();\n const { data } = useQuery(\n GGNOMAD_PROPERTY_QUERY as TypedDocumentNode<\n {\n ggnomadProperty: {\n name: string;\n type: string;\n description?: string;\n currency: string;\n pricePerNight: number;\n maxGuests: number;\n rating?: number;\n provider?: { name: string };\n } | null;\n },\n { id: string }\n >,\n { variables: { id }, skip: !id }\n );\n const property = data?.ggnomadProperty;\n\n return (\n <PageShell\n title={property?.name ?? t('ggnomad.property.fallbackTitle', 'Property details')}\n subtitle={t('ggnomad.property.subtitle', 'Detailed hospitality listing view')}\n >\n {!property ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={t('ggnomad.property.notFoundTitle', 'No property found')}\n description={t(\n 'ggnomad.property.notFoundDescription',\n 'This property is unavailable or may have been removed.'\n )}\n />\n ) : (\n <>\n <PagePurpose icon={<Hotel className=\"size-4\" />}>\n {t(\n 'ggnomad.property.purpose',\n 'Everything you need to decide on this stay — its type, description, nightly price, guest capacity, rating and the provider behind it — before you reserve it.'\n )}\n </PagePurpose>\n\n <NextSteps\n storageKey=\"ggnomad-property-detail\"\n steps={[\n {\n id: 'book',\n label: t('ggnomad.property.next.book', 'Book this stay'),\n description: t(\n 'ggnomad.property.next.bookDesc',\n 'Reserve these dates and track it under Bookings.'\n ),\n icon: <CalendarCheck className=\"size-4\" />,\n onClick: () => navigate('../../bookings'),\n },\n {\n id: 'browse',\n label: t('ggnomad.property.next.browse', 'Compare other stays'),\n description: t(\n 'ggnomad.property.next.browseDesc',\n 'Go back to hospitality listings to compare options.'\n ),\n icon: <Hotel className=\"size-4\" />,\n onClick: () => navigate('..'),\n },\n ]}\n />\n\n <div className=\"grid gap-4 lg:grid-cols-2\">\n <SectionCard title={t('ggnomad.property.about', 'About')}>\n <p className=\"text-sm text-text-secondary\">{t('ggnomad.property.type', 'Type')}</p>\n <p className=\"text-text-primary\">{property.type}</p>\n <p className=\"mt-3 text-sm text-text-secondary\">\n {t('ggnomad.property.description', 'Description')}\n </p>\n <p className=\"text-text-primary\">\n {property.description ?? t('ggnomad.property.noDescription', 'No description')}\n </p>\n </SectionCard>\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam p-5\">\n <h2 className=\"mb-4 text-lg font-medium tracking-tight text-text-primary\">\n {t('ggnomad.property.details', 'Details')}\n </h2>\n <dl className=\"space-y-2 text-sm\">\n <DetailRow\n label={t('ggnomad.property.price', 'Price')}\n value={`${property.currency} ${Number(property.pricePerNight).toFixed(2)}`}\n />\n <DetailRow\n label={t('ggnomad.property.guests', 'Guests')}\n value={String(property.maxGuests)}\n />\n <DetailRow\n label={t('ggnomad.property.rating', 'Rating')}\n value={String(property.rating ?? t('ggnomad.property.noRating', 'N/A'))}\n />\n <DetailRow\n label={t('ggnomad.property.provider', 'Provider')}\n value={property.provider?.name ?? t('ggnomad.property.unassigned', 'Unassigned')}\n />\n </dl>\n </GlassCard>\n </div>\n </>\n )}\n </PageShell>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAWA,SAAgB,IAAsB;CACpC,IAAM,EAAE,SAAM,GAAS,EACjB,IAAW,GAAa,EACxB,EAAE,QAAK,OAAO,GAAW,EACzB,EAAE,YAAS,EACf,GAeA;EAAE,WAAW,EAAE,OAAI;EAAE,MAAM,CAAC;EAAI,CACjC,EACK,IAAW,GAAM;AAEvB,QACE,kBAAC,GAAD;EACE,OAAO,GAAU,QAAQ,EAAE,kCAAkC,mBAAmB;EAChF,UAAU,EAAE,6BAA6B,oCAAoC;YAE3E,IAUA,kBAAA,GAAA,EAAA,UAAA;GACE,kBAAC,GAAD;IAAa,MAAM,kBAAC,GAAD,EAAO,WAAU,UAAW,CAAA;cAC5C,EACC,4BACA,gKACD;IACW,CAAA;GAEd,kBAAC,GAAD;IACE,YAAW;IACX,OAAO,CACL;KACE,IAAI;KACJ,OAAO,EAAE,8BAA8B,iBAAiB;KACxD,aAAa,EACX,kCACA,mDACD;KACD,MAAM,kBAAC,GAAD,EAAe,WAAU,UAAW,CAAA;KAC1C,eAAe,EAAS,iBAAiB;KAC1C,EACD;KACE,IAAI;KACJ,OAAO,EAAE,gCAAgC,sBAAsB;KAC/D,aAAa,EACX,oCACA,sDACD;KACD,MAAM,kBAAC,GAAD,EAAO,WAAU,UAAW,CAAA;KAClC,eAAe,EAAS,KAAK;KAC9B,CACF;IACD,CAAA;GAEF,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD;KAAa,OAAO,EAAE,0BAA0B,QAAQ;eAAxD;MACE,kBAAC,KAAD;OAAG,WAAU;iBAA+B,EAAE,yBAAyB,OAAO;OAAK,CAAA;MACnF,kBAAC,KAAD;OAAG,WAAU;iBAAqB,EAAS;OAAS,CAAA;MACpD,kBAAC,KAAD;OAAG,WAAU;iBACV,EAAE,gCAAgC,cAAc;OAC/C,CAAA;MACJ,kBAAC,KAAD;OAAG,WAAU;iBACV,EAAS,eAAe,EAAE,kCAAkC,iBAAiB;OAC5E,CAAA;MACQ;QACd,kBAAC,GAAD;KAAW,WAAU;KAAQ,MAAA;KAAK,WAAU;eAA5C,CACE,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAE,4BAA4B,UAAU;MACtC,CAAA,EACL,kBAAC,MAAD;MAAI,WAAU;gBAAd;OACE,kBAAC,GAAD;QACE,OAAO,EAAE,0BAA0B,QAAQ;QAC3C,OAAO,GAAG,EAAS,SAAS,GAAG,OAAO,EAAS,cAAc,CAAC,QAAQ,EAAE;QACxE,CAAA;OACF,kBAAC,GAAD;QACE,OAAO,EAAE,2BAA2B,SAAS;QAC7C,OAAO,OAAO,EAAS,UAAU;QACjC,CAAA;OACF,kBAAC,GAAD;QACE,OAAO,EAAE,2BAA2B,SAAS;QAC7C,OAAO,OAAO,EAAS,UAAU,EAAE,6BAA6B,MAAM,CAAC;QACvE,CAAA;OACF,kBAAC,GAAD;QACE,OAAO,EAAE,6BAA6B,WAAW;QACjD,OAAO,EAAS,UAAU,QAAQ,EAAE,+BAA+B,aAAa;QAChF,CAAA;OACC;QACK;OACR;;GACL,EAAA,CAAA,GA9EH,kBAAC,GAAD;GACE,cAAa;GACb,OAAO,EAAE,kCAAkC,oBAAoB;GAC/D,aAAa,EACX,wCACA,yDACD;GACD,CAAA;EAyEM,CAAA"}
|
|
@@ -1,42 +1,78 @@
|
|
|
1
1
|
import { GGNOMAD_PROVIDERS_QUERY as e } from "../graphql.js";
|
|
2
2
|
import { PageShell as t } from "./PageShell.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { StatusBadge as n } from "../components/StatusBadge.js";
|
|
4
|
+
import { EntityCard as r } from "../components/EntityCard.js";
|
|
5
|
+
import "../components/index.js";
|
|
6
|
+
import { Briefcase as i } from "lucide-react";
|
|
7
|
+
import { useI18n as a } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
8
|
+
import { useQuery as o } from "@apollo/client/react";
|
|
9
|
+
import { GlassCard as s, IllustratedEmptyState as c, PagePurpose as l } from "@burdenoff/fe-libs/ui";
|
|
10
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
5
11
|
//#region src/ggnomad/pages/ProviderPage.tsx
|
|
6
|
-
function
|
|
7
|
-
let {
|
|
12
|
+
function f() {
|
|
13
|
+
let { t: f } = a(), { data: p } = o(e, { variables: {
|
|
8
14
|
first: 20,
|
|
9
15
|
skip: 0
|
|
10
|
-
} });
|
|
11
|
-
return /* @__PURE__ */
|
|
12
|
-
title: "Provider Dashboard",
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
} }), m = p?.ggnomadProviders ?? [];
|
|
17
|
+
return /* @__PURE__ */ d(t, {
|
|
18
|
+
title: f("ggnomad.provider.title", "Provider Dashboard"),
|
|
19
|
+
titleAccent: f("ggnomad.provider.title.accent", "Provider"),
|
|
20
|
+
subtitle: f("ggnomad.provider.subtitle", "B2B provider operations and onboarding metrics"),
|
|
21
|
+
children: [/* @__PURE__ */ u(l, {
|
|
22
|
+
icon: /* @__PURE__ */ u(i, { className: "size-4" }),
|
|
23
|
+
children: f("ggnomad.provider.purpose", "Track the supply side of the marketplace — the hotels, tour operators and venues that publish inventory. Use it to monitor each provider’s status, listing count, revenue and rating, and to spot who needs onboarding attention.")
|
|
24
|
+
}), m.length === 0 ? /* @__PURE__ */ u(c, {
|
|
25
|
+
illustration: "empty-people",
|
|
26
|
+
title: f("ggnomad.provider.emptyTitle", "No providers onboarded"),
|
|
27
|
+
description: f("ggnomad.provider.emptyDescription", "Onboarded B2B providers and their performance will be tracked here.")
|
|
28
|
+
}) : /* @__PURE__ */ d(s, {
|
|
29
|
+
treatment: "glass",
|
|
30
|
+
glow: !0,
|
|
31
|
+
className: "border-border-seam p-5",
|
|
32
|
+
children: [/* @__PURE__ */ u("h2", {
|
|
33
|
+
className: "mb-4 text-lg font-medium tracking-tight text-text-primary",
|
|
34
|
+
children: f("ggnomad.provider.onboardedProviders", "Onboarded providers")
|
|
35
|
+
}), /* @__PURE__ */ u("div", {
|
|
36
|
+
className: "grid gap-3 sm:grid-cols-2 xl:grid-cols-3",
|
|
37
|
+
children: m.map((e) => /* @__PURE__ */ u(r, {
|
|
38
|
+
title: e.name,
|
|
39
|
+
meta: e.type,
|
|
40
|
+
badge: /* @__PURE__ */ u(n, {
|
|
41
|
+
status: e.status,
|
|
42
|
+
live: e.status === "ACTIVE"
|
|
22
43
|
}),
|
|
23
|
-
/* @__PURE__ */
|
|
24
|
-
className: "text-
|
|
44
|
+
footer: /* @__PURE__ */ d("dl", {
|
|
45
|
+
className: "grid grid-cols-3 gap-2 text-xs",
|
|
25
46
|
children: [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
47
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("dt", {
|
|
48
|
+
className: "text-text-secondary",
|
|
49
|
+
children: f("ggnomad.provider.listings", "Listings")
|
|
50
|
+
}), /* @__PURE__ */ u("dd", {
|
|
51
|
+
className: "mt-0.5 font-medium tabular-nums text-text-primary",
|
|
52
|
+
children: e.listingCount
|
|
53
|
+
})] }),
|
|
54
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("dt", {
|
|
55
|
+
className: "text-text-secondary",
|
|
56
|
+
children: f("ggnomad.provider.revenue", "Revenue")
|
|
57
|
+
}), /* @__PURE__ */ d("dd", {
|
|
58
|
+
className: "mt-0.5 font-medium tabular-nums text-text-primary",
|
|
59
|
+
children: ["$", Number(e.totalRevenue).toLocaleString()]
|
|
60
|
+
})] }),
|
|
61
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("dt", {
|
|
62
|
+
className: "text-text-secondary",
|
|
63
|
+
children: f("ggnomad.provider.rating", "Rating")
|
|
64
|
+
}), /* @__PURE__ */ u("dd", {
|
|
65
|
+
className: "mt-0.5 font-medium tabular-nums text-text-primary",
|
|
66
|
+
children: e.rating ?? f("ggnomad.provider.noRating", "N/A")
|
|
67
|
+
})] })
|
|
29
68
|
]
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
]
|
|
35
|
-
}, e.id))
|
|
36
|
-
})
|
|
69
|
+
})
|
|
70
|
+
}, e.id))
|
|
71
|
+
})]
|
|
72
|
+
})]
|
|
37
73
|
});
|
|
38
74
|
}
|
|
39
75
|
//#endregion
|
|
40
|
-
export {
|
|
76
|
+
export { f as ProviderPage };
|
|
41
77
|
|
|
42
78
|
//# sourceMappingURL=ProviderPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderPage.js","names":[],"sources":["../../../src/ggnomad/pages/ProviderPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\n\nimport { GGNOMAD_PROVIDERS_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function ProviderPage() {\n const { data } = useQuery
|
|
1
|
+
{"version":3,"file":"ProviderPage.js","names":[],"sources":["../../../src/ggnomad/pages/ProviderPage.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 { Briefcase } from 'lucide-react';\nimport { GlassCard, IllustratedEmptyState, PagePurpose } from '@burdenoff/fe-libs/ui';\n\nimport { GGNOMAD_PROVIDERS_QUERY } from '../graphql';\nimport { PageShell } from './PageShell';\nimport { EntityCard, StatusBadge } from '../components';\n\nexport function ProviderPage() {\n const { t } = useI18n();\n const { data } = useQuery(\n GGNOMAD_PROVIDERS_QUERY as TypedDocumentNode<\n {\n ggnomadProviders: Array<{\n id: string;\n name: string;\n type: string;\n status: string;\n listingCount: number;\n totalRevenue: number;\n rating?: number;\n }>;\n },\n { first: number; skip: number }\n >,\n { variables: { first: 20, skip: 0 } }\n );\n const providers = data?.ggnomadProviders ?? [];\n\n return (\n <PageShell\n title={t('ggnomad.provider.title', 'Provider Dashboard')}\n titleAccent={t('ggnomad.provider.title.accent', 'Provider')}\n subtitle={t('ggnomad.provider.subtitle', 'B2B provider operations and onboarding metrics')}\n >\n <PagePurpose icon={<Briefcase className=\"size-4\" />}>\n {t(\n 'ggnomad.provider.purpose',\n 'Track the supply side of the marketplace — the hotels, tour operators and venues that publish inventory. Use it to monitor each provider’s status, listing count, revenue and rating, and to spot who needs onboarding attention.'\n )}\n </PagePurpose>\n\n {providers.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-people\"\n title={t('ggnomad.provider.emptyTitle', 'No providers onboarded')}\n description={t(\n 'ggnomad.provider.emptyDescription',\n 'Onboarded B2B providers and their performance will be tracked here.'\n )}\n />\n ) : (\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam p-5\">\n <h2 className=\"mb-4 text-lg font-medium tracking-tight text-text-primary\">\n {t('ggnomad.provider.onboardedProviders', 'Onboarded providers')}\n </h2>\n <div className=\"grid gap-3 sm:grid-cols-2 xl:grid-cols-3\">\n {providers.map((provider) => (\n <EntityCard\n key={provider.id}\n title={provider.name}\n meta={provider.type}\n badge={<StatusBadge status={provider.status} live={provider.status === 'ACTIVE'} />}\n footer={\n <dl className=\"grid grid-cols-3 gap-2 text-xs\">\n <div>\n <dt className=\"text-text-secondary\">\n {t('ggnomad.provider.listings', 'Listings')}\n </dt>\n <dd className=\"mt-0.5 font-medium tabular-nums text-text-primary\">\n {provider.listingCount}\n </dd>\n </div>\n <div>\n <dt className=\"text-text-secondary\">\n {t('ggnomad.provider.revenue', 'Revenue')}\n </dt>\n <dd className=\"mt-0.5 font-medium tabular-nums text-text-primary\">\n ${Number(provider.totalRevenue).toLocaleString()}\n </dd>\n </div>\n <div>\n <dt className=\"text-text-secondary\">\n {t('ggnomad.provider.rating', 'Rating')}\n </dt>\n <dd className=\"mt-0.5 font-medium tabular-nums text-text-primary\">\n {provider.rating ?? t('ggnomad.provider.noRating', 'N/A')}\n </dd>\n </div>\n </dl>\n }\n />\n ))}\n </div>\n </GlassCard>\n )}\n </PageShell>\n );\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAgB,IAAe;CAC7B,IAAM,EAAE,SAAM,GAAS,EACjB,EAAE,YAAS,EACf,GAcA,EAAE,WAAW;EAAE,OAAO;EAAI,MAAM;EAAG,EAAE,CACtC,EACK,IAAY,GAAM,oBAAoB,EAAE;AAE9C,QACE,kBAAC,GAAD;EACE,OAAO,EAAE,0BAA0B,qBAAqB;EACxD,aAAa,EAAE,iCAAiC,WAAW;EAC3D,UAAU,EAAE,6BAA6B,iDAAiD;YAH5F,CAKE,kBAAC,GAAD;GAAa,MAAM,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA;aAChD,EACC,4BACA,oOACD;GACW,CAAA,EAEb,EAAU,WAAW,IACpB,kBAAC,GAAD;GACE,cAAa;GACb,OAAO,EAAE,+BAA+B,yBAAyB;GACjE,aAAa,EACX,qCACA,sEACD;GACD,CAAA,GAEF,kBAAC,GAAD;GAAW,WAAU;GAAQ,MAAA;GAAK,WAAU;aAA5C,CACE,kBAAC,MAAD;IAAI,WAAU;cACX,EAAE,uCAAuC,sBAAsB;IAC7D,CAAA,EACL,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAU,KAAK,MACd,kBAAC,GAAD;KAEE,OAAO,EAAS;KAChB,MAAM,EAAS;KACf,OAAO,kBAAC,GAAD;MAAa,QAAQ,EAAS;MAAQ,MAAM,EAAS,WAAW;MAAY,CAAA;KACnF,QACE,kBAAC,MAAD;MAAI,WAAU;gBAAd;OACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAE,6BAA6B,WAAW;QACxC,CAAA,EACL,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAS;QACP,CAAA,CACD,EAAA,CAAA;OACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAE,4BAA4B,UAAU;QACtC,CAAA,EACL,kBAAC,MAAD;QAAI,WAAU;kBAAd,CAAkE,KAC9D,OAAO,EAAS,aAAa,CAAC,gBAAgB,CAC7C;UACD,EAAA,CAAA;OACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAE,2BAA2B,SAAS;QACpC,CAAA,EACL,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAS,UAAU,EAAE,6BAA6B,MAAM;QACtD,CAAA,CACD,EAAA,CAAA;OACH;;KAEP,EAhCK,EAAS,GAgCd,CACF;IACE,CAAA,CACI;KAEJ"}
|
|
@@ -1,70 +1,79 @@
|
|
|
1
1
|
import { GGNOMAD_ACTIVITIES_QUERY as e, GGNOMAD_EVENTS_QUERY as t, GGNOMAD_PROPERTIES_QUERY as n, GGNOMAD_TOURS_QUERY as r } from "../graphql.js";
|
|
2
2
|
import { PageShell as i } from "./PageShell.js";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
3
|
+
import { StatCard as a } from "../components/StatCard.js";
|
|
4
|
+
import "../components/index.js";
|
|
5
|
+
import { Activity as o, Building as s, Compass as c, Search as l, Ticket as u } from "lucide-react";
|
|
6
|
+
import { useI18n as d } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
7
|
+
import { useQuery as f } from "@apollo/client/react";
|
|
8
|
+
import { EmphasisPanel as p, IllustratedEmptyState as m, PagePurpose as h } from "@burdenoff/fe-libs/ui";
|
|
9
|
+
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
6
10
|
//#region src/ggnomad/pages/SearchPage.tsx
|
|
7
|
-
function
|
|
8
|
-
let { t:
|
|
11
|
+
function y() {
|
|
12
|
+
let { t: y } = d(), b = f(n, { variables: {
|
|
9
13
|
first: 5,
|
|
10
14
|
skip: 0
|
|
11
|
-
} }),
|
|
15
|
+
} }), x = f(r, { variables: {
|
|
12
16
|
first: 5,
|
|
13
17
|
skip: 0
|
|
14
|
-
} }),
|
|
18
|
+
} }), S = f(t, { variables: {
|
|
15
19
|
first: 5,
|
|
16
20
|
skip: 0
|
|
17
|
-
} }),
|
|
21
|
+
} }), C = f(e, { variables: {
|
|
18
22
|
first: 5,
|
|
19
23
|
skip: 0
|
|
20
|
-
} });
|
|
21
|
-
return /* @__PURE__ */
|
|
22
|
-
title:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
} }), w = b.data?.ggnomadProperties?.length ?? 0, T = x.data?.ggnomadTours?.length ?? 0, E = S.data?.ggnomadEvents?.length ?? 0, D = C.data?.ggnomadActivities?.length ?? 0, O = w + T + E + D;
|
|
25
|
+
return /* @__PURE__ */ v(i, {
|
|
26
|
+
title: y("ggnomad.search.title", "Global Search"),
|
|
27
|
+
titleAccent: y("ggnomad.search.title.accent", "Search"),
|
|
28
|
+
subtitle: y("ggnomad.search.subtitle", "Cross-domain search across all GGNomad inventory"),
|
|
29
|
+
children: [/* @__PURE__ */ _(h, {
|
|
30
|
+
icon: /* @__PURE__ */ _(l, { className: "size-4" }),
|
|
31
|
+
children: y("ggnomad.search.purpose", "One search across the entire GGNomad catalogue — properties, tours, events and activities at once — so you can see everything available for a destination in a single view instead of checking each domain separately.")
|
|
32
|
+
}), O === 0 ? /* @__PURE__ */ _(m, {
|
|
33
|
+
illustration: "empty-search",
|
|
34
|
+
title: y("ggnomad.search.emptyTitle", "No matching inventory"),
|
|
35
|
+
description: y("ggnomad.search.emptyDescription", "Nothing matched across properties, tours, events and activities yet.")
|
|
36
|
+
}) : /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ v(p, { children: [
|
|
37
|
+
/* @__PURE__ */ _("p", {
|
|
38
|
+
className: "text-sm text-text-secondary",
|
|
39
|
+
children: y("ggnomad.search.totalMatches", "Total matches across all domains")
|
|
40
|
+
}),
|
|
41
|
+
/* @__PURE__ */ _("p", {
|
|
42
|
+
className: "mt-1 text-3xl font-semibold tabular-nums text-text-primary",
|
|
43
|
+
children: O.toLocaleString()
|
|
44
|
+
}),
|
|
45
|
+
/* @__PURE__ */ _("p", {
|
|
46
|
+
className: "mt-2 text-sm text-text-secondary",
|
|
47
|
+
children: y("ggnomad.search.totalMatchesNote", "Combined inventory from properties, tours, events and activities — open a domain below to drill in.")
|
|
48
|
+
})
|
|
49
|
+
] }), /* @__PURE__ */ v("section", {
|
|
50
|
+
className: "grid gap-4 sm:grid-cols-2 xl:grid-cols-4",
|
|
26
51
|
children: [
|
|
27
|
-
/* @__PURE__ */
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
":",
|
|
32
|
-
" ",
|
|
33
|
-
u.data?.ggnomadProperties?.length ?? 0
|
|
34
|
-
]
|
|
52
|
+
/* @__PURE__ */ _(a, {
|
|
53
|
+
label: y("ggnomad.search.results.propertiesFound", "Properties found"),
|
|
54
|
+
value: w,
|
|
55
|
+
icon: /* @__PURE__ */ _(s, {})
|
|
35
56
|
}),
|
|
36
|
-
/* @__PURE__ */
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
":",
|
|
41
|
-
" ",
|
|
42
|
-
d.data?.ggnomadTours?.length ?? 0
|
|
43
|
-
]
|
|
57
|
+
/* @__PURE__ */ _(a, {
|
|
58
|
+
label: y("ggnomad.search.results.toursFound", "Tours found"),
|
|
59
|
+
value: T,
|
|
60
|
+
icon: /* @__PURE__ */ _(c, {})
|
|
44
61
|
}),
|
|
45
|
-
/* @__PURE__ */
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
":",
|
|
50
|
-
" ",
|
|
51
|
-
f.data?.ggnomadEvents?.length ?? 0
|
|
52
|
-
]
|
|
62
|
+
/* @__PURE__ */ _(a, {
|
|
63
|
+
label: y("ggnomad.search.results.eventsFound", "Events found"),
|
|
64
|
+
value: E,
|
|
65
|
+
icon: /* @__PURE__ */ _(u, {})
|
|
53
66
|
}),
|
|
54
|
-
/* @__PURE__ */
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
":",
|
|
59
|
-
" ",
|
|
60
|
-
p.data?.ggnomadActivities?.length ?? 0
|
|
61
|
-
]
|
|
67
|
+
/* @__PURE__ */ _(a, {
|
|
68
|
+
label: y("ggnomad.search.results.activitiesFound", "Activities found"),
|
|
69
|
+
value: D,
|
|
70
|
+
icon: /* @__PURE__ */ _(o, {})
|
|
62
71
|
})
|
|
63
72
|
]
|
|
64
|
-
})
|
|
73
|
+
})] })]
|
|
65
74
|
});
|
|
66
75
|
}
|
|
67
76
|
//#endregion
|
|
68
|
-
export {
|
|
77
|
+
export { y as SearchPage };
|
|
69
78
|
|
|
70
79
|
//# sourceMappingURL=SearchPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchPage.js","names":[],"sources":["../../../src/ggnomad/pages/SearchPage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nimport {\n GGNOMAD_PROPERTIES_QUERY,\n GGNOMAD_TOURS_QUERY,\n GGNOMAD_EVENTS_QUERY,\n GGNOMAD_ACTIVITIES_QUERY,\n} from '../graphql';\nimport { PageShell } from './PageShell';\n\nexport function SearchPage() {\n const { t } = useI18n();\n const properties = useQuery
|
|
1
|
+
{"version":3,"file":"SearchPage.js","names":[],"sources":["../../../src/ggnomad/pages/SearchPage.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 { Activity, Building, Compass, Search, Ticket } from 'lucide-react';\nimport { EmphasisPanel, IllustratedEmptyState, PagePurpose } from '@burdenoff/fe-libs/ui';\n\nimport {\n GGNOMAD_PROPERTIES_QUERY,\n GGNOMAD_TOURS_QUERY,\n GGNOMAD_EVENTS_QUERY,\n GGNOMAD_ACTIVITIES_QUERY,\n} from '../graphql';\nimport { PageShell } from './PageShell';\nimport { StatCard } from '../components';\n\nexport function SearchPage() {\n const { t } = useI18n();\n const properties = useQuery(\n GGNOMAD_PROPERTIES_QUERY as TypedDocumentNode<\n { ggnomadProperties: Array<{ id: string }> },\n { first: number; skip: number }\n >,\n { variables: { first: 5, skip: 0 } }\n );\n const tours = useQuery(\n GGNOMAD_TOURS_QUERY as TypedDocumentNode<\n { ggnomadTours: Array<{ id: string }> },\n { first: number; skip: number }\n >,\n {\n variables: { first: 5, skip: 0 },\n }\n );\n const events = useQuery(\n GGNOMAD_EVENTS_QUERY as TypedDocumentNode<\n { ggnomadEvents: Array<{ id: string }> },\n { first: number; skip: number }\n >,\n {\n variables: { first: 5, skip: 0 },\n }\n );\n const activities = useQuery(\n GGNOMAD_ACTIVITIES_QUERY as TypedDocumentNode<\n { ggnomadActivities: Array<{ id: string }> },\n { first: number; skip: number }\n >,\n { variables: { first: 5, skip: 0 } }\n );\n\n const propertyCount = properties.data?.ggnomadProperties?.length ?? 0;\n const tourCount = tours.data?.ggnomadTours?.length ?? 0;\n const eventCount = events.data?.ggnomadEvents?.length ?? 0;\n const activityCount = activities.data?.ggnomadActivities?.length ?? 0;\n const total = propertyCount + tourCount + eventCount + activityCount;\n\n return (\n <PageShell\n title={t('ggnomad.search.title', 'Global Search')}\n titleAccent={t('ggnomad.search.title.accent', 'Search')}\n subtitle={t('ggnomad.search.subtitle', 'Cross-domain search across all GGNomad inventory')}\n >\n <PagePurpose icon={<Search className=\"size-4\" />}>\n {t(\n 'ggnomad.search.purpose',\n 'One search across the entire GGNomad catalogue — properties, tours, events and activities at once — so you can see everything available for a destination in a single view instead of checking each domain separately.'\n )}\n </PagePurpose>\n\n {total === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title={t('ggnomad.search.emptyTitle', 'No matching inventory')}\n description={t(\n 'ggnomad.search.emptyDescription',\n 'Nothing matched across properties, tours, events and activities yet.'\n )}\n />\n ) : (\n <>\n <EmphasisPanel>\n <p className=\"text-sm text-text-secondary\">\n {t('ggnomad.search.totalMatches', 'Total matches across all domains')}\n </p>\n <p className=\"mt-1 text-3xl font-semibold tabular-nums text-text-primary\">\n {total.toLocaleString()}\n </p>\n <p className=\"mt-2 text-sm text-text-secondary\">\n {t(\n 'ggnomad.search.totalMatchesNote',\n 'Combined inventory from properties, tours, events and activities — open a domain below to drill in.'\n )}\n </p>\n </EmphasisPanel>\n\n <section className=\"grid gap-4 sm:grid-cols-2 xl:grid-cols-4\">\n <StatCard\n label={t('ggnomad.search.results.propertiesFound', 'Properties found')}\n value={propertyCount}\n icon={<Building />}\n />\n <StatCard\n label={t('ggnomad.search.results.toursFound', 'Tours found')}\n value={tourCount}\n icon={<Compass />}\n />\n <StatCard\n label={t('ggnomad.search.results.eventsFound', 'Events found')}\n value={eventCount}\n icon={<Ticket />}\n />\n <StatCard\n label={t('ggnomad.search.results.activitiesFound', 'Activities found')}\n value={activityCount}\n icon={<Activity />}\n />\n </section>\n </>\n )}\n </PageShell>\n );\n}\n"],"mappings":";;;;;;;;;;AAeA,SAAgB,IAAa;CAC3B,IAAM,EAAE,SAAM,GAAS,EACjB,IAAa,EACjB,GAIA,EAAE,WAAW;EAAE,OAAO;EAAG,MAAM;EAAG,EAAE,CACrC,EACK,IAAQ,EACZ,GAIA,EACE,WAAW;EAAE,OAAO;EAAG,MAAM;EAAG,EACjC,CACF,EACK,IAAS,EACb,GAIA,EACE,WAAW;EAAE,OAAO;EAAG,MAAM;EAAG,EACjC,CACF,EACK,IAAa,EACjB,GAIA,EAAE,WAAW;EAAE,OAAO;EAAG,MAAM;EAAG,EAAE,CACrC,EAEK,IAAgB,EAAW,MAAM,mBAAmB,UAAU,GAC9D,IAAY,EAAM,MAAM,cAAc,UAAU,GAChD,IAAa,EAAO,MAAM,eAAe,UAAU,GACnD,IAAgB,EAAW,MAAM,mBAAmB,UAAU,GAC9D,IAAQ,IAAgB,IAAY,IAAa;AAEvD,QACE,kBAAC,GAAD;EACE,OAAO,EAAE,wBAAwB,gBAAgB;EACjD,aAAa,EAAE,+BAA+B,SAAS;EACvD,UAAU,EAAE,2BAA2B,mDAAmD;YAH5F,CAKE,kBAAC,GAAD;GAAa,MAAM,kBAAC,GAAD,EAAQ,WAAU,UAAW,CAAA;aAC7C,EACC,0BACA,yNACD;GACW,CAAA,EAEb,MAAU,IACT,kBAAC,GAAD;GACE,cAAa;GACb,OAAO,EAAE,6BAA6B,wBAAwB;GAC9D,aAAa,EACX,mCACA,uEACD;GACD,CAAA,GAEF,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAA;GACE,kBAAC,KAAD;IAAG,WAAU;cACV,EAAE,+BAA+B,mCAAmC;IACnE,CAAA;GACJ,kBAAC,KAAD;IAAG,WAAU;cACV,EAAM,gBAAgB;IACrB,CAAA;GACJ,kBAAC,KAAD;IAAG,WAAU;cACV,EACC,mCACA,sGACD;IACC,CAAA;GACU,EAAA,CAAA,EAEhB,kBAAC,WAAD;GAAS,WAAU;aAAnB;IACE,kBAAC,GAAD;KACE,OAAO,EAAE,0CAA0C,mBAAmB;KACtE,OAAO;KACP,MAAM,kBAAC,GAAD,EAAY,CAAA;KAClB,CAAA;IACF,kBAAC,GAAD;KACE,OAAO,EAAE,qCAAqC,cAAc;KAC5D,OAAO;KACP,MAAM,kBAAC,GAAD,EAAW,CAAA;KACjB,CAAA;IACF,kBAAC,GAAD;KACE,OAAO,EAAE,sCAAsC,eAAe;KAC9D,OAAO;KACP,MAAM,kBAAC,GAAD,EAAU,CAAA;KAChB,CAAA;IACF,kBAAC,GAAD;KACE,OAAO,EAAE,0CAA0C,mBAAmB;KACtE,OAAO;KACP,MAAM,kBAAC,GAAD,EAAY,CAAA;KAClB,CAAA;IACM;KACT,EAAA,CAAA,CAEK"}
|