@burdenoff/microfe-ggnomad 2026.1029.2 → 2026.1030.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.
@@ -1 +1 @@
1
- {"version":3,"file":"TicketDialog.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/components/TicketDialog.tsx"],"names":[],"mappings":"AAkBA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAKD,UAAU,iBAAiB;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AASD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,GACd,EAAE,iBAAiB,+BAsJnB"}
1
+ {"version":3,"file":"TicketDialog.d.ts","sourceRoot":"","sources":["../../../src/ggnomad/components/TicketDialog.tsx"],"names":[],"mappings":"AAkBA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,kGAAkG;IAClG,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAKD,UAAU,iBAAiB;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AASD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,GACd,EAAE,iBAAiB,+BA6JnB"}
@@ -81,7 +81,10 @@ function b({ open: b, onOpenChange: x, bookingId: S, referenceCode: C, bookingSt
81
81
  live: e.status === "ISSUED"
82
82
  })]
83
83
  }),
84
- e.status === "ISSUED" ? /* @__PURE__ */ g("img", {
84
+ e.status === "ISSUED" && !e.qrCodeDataUrl ? /* @__PURE__ */ g("div", {
85
+ className: "flex size-48 items-center justify-center rounded-md border border-dashed border-border-seam bg-bg-sunken p-3 text-center text-xs text-text-secondary",
86
+ children: T("ggnomad.ticket.qrTravelerOnly", "The QR code is shown only to the traveler. Scan it from their device at check-in.")
87
+ }) : e.status === "ISSUED" && e.qrCodeDataUrl ? /* @__PURE__ */ g("img", {
85
88
  src: e.qrCodeDataUrl,
86
89
  alt: T("ggnomad.ticket.qrAlt", "QR code for ticket {{code}}").replace("{{code}}", e.ticketCode),
87
90
  className: "size-48 rounded-md border border-border-seam bg-white p-2",
@@ -1 +1 @@
1
- {"version":3,"file":"TicketDialog.js","names":[],"sources":["../../../src/ggnomad/components/TicketDialog.tsx"],"sourcesContent":["import { useMutation, useQuery } from '@apollo/client/react';\nimport type { TypedDocumentNode } from '@apollo/client';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { QrCode, Ticket as TicketIcon } from 'lucide-react';\nimport {\n AlertDialog,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '@burdenoff/fe-libs/ui';\n\nimport { GGNOMAD_TICKETS_QUERY, ISSUE_GGNOMAD_TICKET_MUTATION } from '../graphql';\nimport { StatusBadge } from './StatusBadge';\nimport { notify } from '../utils/notify';\n\nexport interface GgnomadTicket {\n id: string;\n bookingId: string;\n ticketCode: string;\n qrCodeDataUrl: string;\n status: 'ISSUED' | 'REDEEMED' | 'REVOKED';\n issuedAt: string;\n redeemedAt: string | null;\n redeemedBy: string | null;\n revokedAt: string | null;\n revokedReason: string | null;\n}\n\n/** Bookings reach CONFIRMED (payment verified) before a ticket can ever exist. */\nconst TICKET_ELIGIBLE_STATUSES = new Set(['CONFIRMED', 'CHECKED_IN', 'COMPLETED']);\n\ninterface TicketDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n bookingId: string;\n referenceCode: string;\n bookingStatus: string;\n}\n\nfunction formatDateTime(value: string | null): string {\n if (!value) return '';\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return value;\n return date.toLocaleString();\n}\n\n/**\n * Traveler-facing mobile ticket view (BOFF-4362). Shows every QR ticket\n * issued for a booking — each ticket's QR code is rendered server-side from\n * its signed, revocable token (see wspace-ggnomad-svc `qrCodeDataUrl`), so\n * what's displayed here always reflects the ticket's live redemption state.\n */\nexport function TicketDialog({\n open,\n onOpenChange,\n bookingId,\n referenceCode,\n bookingStatus,\n}: TicketDialogProps) {\n const { t } = useI18n();\n\n const { data, loading, refetch } = useQuery(\n GGNOMAD_TICKETS_QUERY as TypedDocumentNode<\n { ggnomadTickets: GgnomadTicket[] },\n { bookingId: string }\n >,\n { variables: { bookingId }, skip: !open || !bookingId, fetchPolicy: 'network-only' }\n );\n\n const [issueTicket, { loading: issuing }] = useMutation(\n ISSUE_GGNOMAD_TICKET_MUTATION as TypedDocumentNode<\n { issueGgnomadTicket: GgnomadTicket },\n { bookingId: string }\n >\n );\n\n const tickets = data?.ggnomadTickets ?? [];\n const canIssue = TICKET_ELIGIBLE_STATUSES.has(bookingStatus.toUpperCase());\n\n const handleIssue = async () => {\n try {\n const result = await issueTicket({ variables: { bookingId } });\n if (result.error) {\n notify.error(\n t('ggnomad.ticket.issueErrorTitle', 'Could not issue ticket'),\n result.error.message\n );\n return;\n }\n notify.success(\n t('ggnomad.ticket.issueSuccessTitle', 'Ticket issued'),\n t('ggnomad.ticket.issueSuccessBody', 'A new QR ticket is ready to show at check-in.')\n );\n await refetch();\n } catch (err) {\n notify.error(\n t('ggnomad.ticket.issueErrorTitle', 'Could not issue ticket'),\n err instanceof Error ? err.message : String(err)\n );\n }\n };\n\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent className=\"max-w-md\">\n <AlertDialogHeader>\n <AlertDialogTitle className=\"flex items-center gap-2\">\n <TicketIcon className=\"size-4\" />\n {t('ggnomad.ticket.title', 'Mobile ticket')}\n </AlertDialogTitle>\n <AlertDialogDescription>\n {t('ggnomad.ticket.description', 'Show this QR code at check-in for {{ref}}.').replace(\n '{{ref}}',\n referenceCode\n )}\n </AlertDialogDescription>\n </AlertDialogHeader>\n\n <div className=\"max-h-[65vh] space-y-4 overflow-y-auto\">\n {loading ? (\n <p className=\"py-6 text-center text-sm text-text-secondary\">\n {t('ggnomad.ticket.loading', 'Loading your ticket…')}\n </p>\n ) : tickets.length === 0 ? (\n <div className=\"flex flex-col items-center gap-3 rounded-lg border border-dashed border-border-seam py-8 text-center\">\n <QrCode className=\"size-8 text-text-secondary\" aria-hidden=\"true\" />\n <p className=\"text-sm text-text-secondary\">\n {canIssue\n ? t(\n 'ggnomad.ticket.noneYet',\n 'No QR ticket has been issued for this booking yet.'\n )\n : t(\n 'ggnomad.ticket.notConfirmed',\n 'A QR ticket will be issued automatically once this booking is confirmed.'\n )}\n </p>\n {canIssue ? (\n <button\n type=\"button\"\n onClick={() => void handleIssue()}\n disabled={issuing}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bgHover disabled:opacity-50\"\n >\n {issuing\n ? t('ggnomad.ticket.issuing', 'Issuing…')\n : t('ggnomad.ticket.issueAction', 'Issue QR ticket')}\n </button>\n ) : null}\n </div>\n ) : (\n tickets.map((ticket) => (\n <div\n key={ticket.id}\n className=\"flex flex-col items-center gap-3 rounded-lg border border-border-seam bg-bg-surface/40 p-4\"\n >\n <div className=\"flex w-full items-center justify-between\">\n <span className=\"font-mono text-xs text-text-secondary\">{ticket.ticketCode}</span>\n <StatusBadge status={ticket.status} live={ticket.status === 'ISSUED'} />\n </div>\n\n {ticket.status === 'ISSUED' ? (\n <img\n src={ticket.qrCodeDataUrl}\n alt={t('ggnomad.ticket.qrAlt', 'QR code for ticket {{code}}').replace(\n '{{code}}',\n ticket.ticketCode\n )}\n className=\"size-48 rounded-md border border-border-seam bg-white p-2\"\n width={192}\n height={192}\n />\n ) : (\n <div className=\"flex size-48 items-center justify-center rounded-md border border-dashed border-border-seam bg-bg-sunken text-center text-xs text-text-secondary\">\n {ticket.status === 'REDEEMED'\n ? t('ggnomad.ticket.alreadyRedeemed', 'Already redeemed — QR retired')\n : t('ggnomad.ticket.revokedNotice', 'Revoked — no longer valid')}\n </div>\n )}\n\n <div className=\"w-full space-y-1 text-xs text-text-secondary\">\n <p>\n {t('ggnomad.ticket.issuedAt', 'Issued')} {formatDateTime(ticket.issuedAt)}\n </p>\n {ticket.redeemedAt ? (\n <p>\n {t('ggnomad.ticket.redeemedAt', 'Redeemed')}{' '}\n {formatDateTime(ticket.redeemedAt)}\n </p>\n ) : null}\n {ticket.revokedAt ? (\n <p>\n {t('ggnomad.ticket.revokedAt', 'Revoked')} {formatDateTime(ticket.revokedAt)}\n {ticket.revokedReason ? ` — ${ticket.revokedReason}` : ''}\n </p>\n ) : null}\n </div>\n </div>\n ))\n )}\n </div>\n\n <AlertDialogFooter>\n <AlertDialogCancel>{t('ggnomad.ticket.close', 'Close')}</AlertDialogCancel>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TicketDialog.js","names":[],"sources":["../../../src/ggnomad/components/TicketDialog.tsx"],"sourcesContent":["import { useMutation, useQuery } from '@apollo/client/react';\nimport type { TypedDocumentNode } from '@apollo/client';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { QrCode, Ticket as TicketIcon } from 'lucide-react';\nimport {\n AlertDialog,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '@burdenoff/fe-libs/ui';\n\nimport { GGNOMAD_TICKETS_QUERY, ISSUE_GGNOMAD_TICKET_MUTATION } from '../graphql';\nimport { StatusBadge } from './StatusBadge';\nimport { notify } from '../utils/notify';\n\nexport interface GgnomadTicket {\n id: string;\n bookingId: string;\n ticketCode: string;\n /** BOFF-10194 — null unless the viewer made the booking; hosts scan the traveler's QR instead. */\n qrCodeDataUrl: string | null;\n status: 'ISSUED' | 'REDEEMED' | 'REVOKED';\n issuedAt: string;\n redeemedAt: string | null;\n redeemedBy: string | null;\n revokedAt: string | null;\n revokedReason: string | null;\n}\n\n/** Bookings reach CONFIRMED (payment verified) before a ticket can ever exist. */\nconst TICKET_ELIGIBLE_STATUSES = new Set(['CONFIRMED', 'CHECKED_IN', 'COMPLETED']);\n\ninterface TicketDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n bookingId: string;\n referenceCode: string;\n bookingStatus: string;\n}\n\nfunction formatDateTime(value: string | null): string {\n if (!value) return '';\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return value;\n return date.toLocaleString();\n}\n\n/**\n * Traveler-facing mobile ticket view (BOFF-4362). Shows every QR ticket\n * issued for a booking — each ticket's QR code is rendered server-side from\n * its signed, revocable token (see wspace-ggnomad-svc `qrCodeDataUrl`), so\n * what's displayed here always reflects the ticket's live redemption state.\n */\nexport function TicketDialog({\n open,\n onOpenChange,\n bookingId,\n referenceCode,\n bookingStatus,\n}: TicketDialogProps) {\n const { t } = useI18n();\n\n const { data, loading, refetch } = useQuery(\n GGNOMAD_TICKETS_QUERY as TypedDocumentNode<\n { ggnomadTickets: GgnomadTicket[] },\n { bookingId: string }\n >,\n { variables: { bookingId }, skip: !open || !bookingId, fetchPolicy: 'network-only' }\n );\n\n const [issueTicket, { loading: issuing }] = useMutation(\n ISSUE_GGNOMAD_TICKET_MUTATION as TypedDocumentNode<\n { issueGgnomadTicket: GgnomadTicket },\n { bookingId: string }\n >\n );\n\n const tickets = data?.ggnomadTickets ?? [];\n const canIssue = TICKET_ELIGIBLE_STATUSES.has(bookingStatus.toUpperCase());\n\n const handleIssue = async () => {\n try {\n const result = await issueTicket({ variables: { bookingId } });\n if (result.error) {\n notify.error(\n t('ggnomad.ticket.issueErrorTitle', 'Could not issue ticket'),\n result.error.message\n );\n return;\n }\n notify.success(\n t('ggnomad.ticket.issueSuccessTitle', 'Ticket issued'),\n t('ggnomad.ticket.issueSuccessBody', 'A new QR ticket is ready to show at check-in.')\n );\n await refetch();\n } catch (err) {\n notify.error(\n t('ggnomad.ticket.issueErrorTitle', 'Could not issue ticket'),\n err instanceof Error ? err.message : String(err)\n );\n }\n };\n\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent className=\"max-w-md\">\n <AlertDialogHeader>\n <AlertDialogTitle className=\"flex items-center gap-2\">\n <TicketIcon className=\"size-4\" />\n {t('ggnomad.ticket.title', 'Mobile ticket')}\n </AlertDialogTitle>\n <AlertDialogDescription>\n {t('ggnomad.ticket.description', 'Show this QR code at check-in for {{ref}}.').replace(\n '{{ref}}',\n referenceCode\n )}\n </AlertDialogDescription>\n </AlertDialogHeader>\n\n <div className=\"max-h-[65vh] space-y-4 overflow-y-auto\">\n {loading ? (\n <p className=\"py-6 text-center text-sm text-text-secondary\">\n {t('ggnomad.ticket.loading', 'Loading your ticket…')}\n </p>\n ) : tickets.length === 0 ? (\n <div className=\"flex flex-col items-center gap-3 rounded-lg border border-dashed border-border-seam py-8 text-center\">\n <QrCode className=\"size-8 text-text-secondary\" aria-hidden=\"true\" />\n <p className=\"text-sm text-text-secondary\">\n {canIssue\n ? t(\n 'ggnomad.ticket.noneYet',\n 'No QR ticket has been issued for this booking yet.'\n )\n : t(\n 'ggnomad.ticket.notConfirmed',\n 'A QR ticket will be issued automatically once this booking is confirmed.'\n )}\n </p>\n {canIssue ? (\n <button\n type=\"button\"\n onClick={() => void handleIssue()}\n disabled={issuing}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bgHover disabled:opacity-50\"\n >\n {issuing\n ? t('ggnomad.ticket.issuing', 'Issuing…')\n : t('ggnomad.ticket.issueAction', 'Issue QR ticket')}\n </button>\n ) : null}\n </div>\n ) : (\n tickets.map((ticket) => (\n <div\n key={ticket.id}\n className=\"flex flex-col items-center gap-3 rounded-lg border border-border-seam bg-bg-surface/40 p-4\"\n >\n <div className=\"flex w-full items-center justify-between\">\n <span className=\"font-mono text-xs text-text-secondary\">{ticket.ticketCode}</span>\n <StatusBadge status={ticket.status} live={ticket.status === 'ISSUED'} />\n </div>\n\n {ticket.status === 'ISSUED' && !ticket.qrCodeDataUrl ? (\n <div className=\"flex size-48 items-center justify-center rounded-md border border-dashed border-border-seam bg-bg-sunken p-3 text-center text-xs text-text-secondary\">\n {t(\n 'ggnomad.ticket.qrTravelerOnly',\n 'The QR code is shown only to the traveler. Scan it from their device at check-in.'\n )}\n </div>\n ) : ticket.status === 'ISSUED' && ticket.qrCodeDataUrl ? (\n <img\n src={ticket.qrCodeDataUrl}\n alt={t('ggnomad.ticket.qrAlt', 'QR code for ticket {{code}}').replace(\n '{{code}}',\n ticket.ticketCode\n )}\n className=\"size-48 rounded-md border border-border-seam bg-white p-2\"\n width={192}\n height={192}\n />\n ) : (\n <div className=\"flex size-48 items-center justify-center rounded-md border border-dashed border-border-seam bg-bg-sunken text-center text-xs text-text-secondary\">\n {ticket.status === 'REDEEMED'\n ? t('ggnomad.ticket.alreadyRedeemed', 'Already redeemed — QR retired')\n : t('ggnomad.ticket.revokedNotice', 'Revoked — no longer valid')}\n </div>\n )}\n\n <div className=\"w-full space-y-1 text-xs text-text-secondary\">\n <p>\n {t('ggnomad.ticket.issuedAt', 'Issued')} {formatDateTime(ticket.issuedAt)}\n </p>\n {ticket.redeemedAt ? (\n <p>\n {t('ggnomad.ticket.redeemedAt', 'Redeemed')}{' '}\n {formatDateTime(ticket.redeemedAt)}\n </p>\n ) : null}\n {ticket.revokedAt ? (\n <p>\n {t('ggnomad.ticket.revokedAt', 'Revoked')} {formatDateTime(ticket.revokedAt)}\n {ticket.revokedReason ? ` — ${ticket.revokedReason}` : ''}\n </p>\n ) : null}\n </div>\n </div>\n ))\n )}\n </div>\n\n <AlertDialogFooter>\n <AlertDialogCancel>{t('ggnomad.ticket.close', 'Close')}</AlertDialogCancel>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n"],"mappings":"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"}
@@ -69,6 +69,12 @@ export declare const CHECK_IN_GGNOMAD_BOOKING_MUTATION: import('graphql').Docume
69
69
  export declare const COMPLETE_GGNOMAD_BOOKING_MUTATION: import('graphql').DocumentNode;
70
70
  export declare const MARK_GGNOMAD_BOOKING_NO_SHOW_MUTATION: import('graphql').DocumentNode;
71
71
  export declare const GGNOMAD_AUDIT_LOG_QUERY: import('graphql').DocumentNode;
72
+ /**
73
+ * BOFF-10248 — ggnomadAuditLog returns history only to the people involved in
74
+ * an entity (a booking's traveler or host, a listing's owner). Operators
75
+ * (ggnomad:manage) read any entity's history through this field.
76
+ */
77
+ export declare const GGNOMAD_WORKSPACE_AUDIT_LOG_QUERY: import('graphql').DocumentNode;
72
78
  export declare const GGNOMAD_MY_PROVIDERS_QUERY: import('graphql').DocumentNode;
73
79
  export declare const GGNOMAD_MY_PROVIDER_ANALYTICS_QUERY: import('graphql').DocumentNode;
74
80
  export declare const GGNOMAD_OPERATOR_STOREFRONT_QUERY: import('graphql').DocumentNode;
@@ -1 +1 @@
1
- {"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../src/ggnomad/graphql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../src/ggnomad/graphql.ts"],"names":[],"mappings":"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"}
@@ -838,47 +838,45 @@ var R = e`
838
838
  ${H}
839
839
  }
840
840
  }
841
- `;
842
- e`
841
+ `, W = e`
843
842
  mutation SubmitGGNomadListingForReview($listingType: GgnomadListingType!, $id: ID!) {
844
843
  submitGgnomadListingForReview(listingType: $listingType, id: $id) {
845
844
  ${H}
846
845
  }
847
846
  }
848
- `;
849
- var W = e`
847
+ `, G = e`
850
848
  mutation ApproveGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $note: String) {
851
849
  approveGgnomadListing(listingType: $listingType, id: $id, note: $note) {
852
850
  ${H}
853
851
  }
854
852
  }
855
- `, G = e`
853
+ `, K = e`
856
854
  mutation RejectGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $reason: String!) {
857
855
  rejectGgnomadListing(listingType: $listingType, id: $id, reason: $reason) {
858
856
  ${H}
859
857
  }
860
858
  }
861
- `;
862
- e`
859
+ `, q = e`
863
860
  mutation PauseGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $reason: String) {
864
861
  pauseGgnomadListing(listingType: $listingType, id: $id, reason: $reason) {
865
862
  ${H}
866
863
  }
867
864
  }
868
- `, e`
865
+ `, J = e`
869
866
  mutation ResumeGGNomadListing($listingType: GgnomadListingType!, $id: ID!) {
870
867
  resumeGgnomadListing(listingType: $listingType, id: $id) {
871
868
  ${H}
872
869
  }
873
870
  }
874
- `, e`
871
+ `;
872
+ e`
875
873
  mutation ArchiveGGNomadListing($listingType: GgnomadListingType!, $id: ID!, $reason: String) {
876
874
  archiveGgnomadListing(listingType: $listingType, id: $id, reason: $reason) {
877
875
  ${H}
878
876
  }
879
877
  }
880
878
  `;
881
- var K = e`
879
+ var Y = e`
882
880
  query GGNomadBookingQueue($limit: Int, $offset: Int) {
883
881
  ggnomadBookingQueue(pagination: { limit: $limit, offset: $offset }) {
884
882
  id
@@ -896,28 +894,28 @@ var K = e`
896
894
  createdAt
897
895
  }
898
896
  }
899
- `, q = e`
897
+ `, X = e`
900
898
  mutation CheckInGGNomadBooking($id: ID!) {
901
899
  checkInGgnomadBooking(id: $id) {
902
900
  id
903
901
  status
904
902
  }
905
903
  }
906
- `, J = e`
904
+ `, Z = e`
907
905
  mutation CompleteGGNomadBooking($id: ID!) {
908
906
  completeGgnomadBooking(id: $id) {
909
907
  id
910
908
  status
911
909
  }
912
910
  }
913
- `, Y = e`
911
+ `, Q = e`
914
912
  mutation MarkGGNomadBookingNoShow($id: ID!, $reason: String) {
915
913
  markGgnomadBookingNoShow(id: $id, reason: $reason) {
916
914
  id
917
915
  status
918
916
  }
919
917
  }
920
- `, X = e`
918
+ `, $ = e`
921
919
  query GGNomadAuditLog($entityType: String!, $entityId: String!, $limit: Int, $offset: Int) {
922
920
  ggnomadAuditLog(
923
921
  entityType: $entityType
@@ -933,7 +931,28 @@ var K = e`
933
931
  createdAt
934
932
  }
935
933
  }
936
- `, Z = e`
934
+ `, te = e`
935
+ query GGNomadWorkspaceAuditLog(
936
+ $entityType: String!
937
+ $entityId: String!
938
+ $limit: Int
939
+ $offset: Int
940
+ ) {
941
+ ggnomadWorkspaceAuditLog(
942
+ entityType: $entityType
943
+ entityId: $entityId
944
+ pagination: { limit: $limit, offset: $offset }
945
+ ) {
946
+ id
947
+ action
948
+ fromStatus
949
+ toStatus
950
+ reason
951
+ actorId
952
+ createdAt
953
+ }
954
+ }
955
+ `, ne = e`
937
956
  query GGNomadMyProviders {
938
957
  myGgnomadProviders {
939
958
  id
@@ -942,7 +961,7 @@ var K = e`
942
961
  status
943
962
  }
944
963
  }
945
- `, Q = e`
964
+ `, re = e`
946
965
  query GGNomadMyProviderAnalytics(
947
966
  $providerId: ID!
948
967
  $dateFrom: DateTime
@@ -981,7 +1000,7 @@ var K = e`
981
1000
  }
982
1001
  }
983
1002
  }
984
- `, $ = e`
1003
+ `, ie = e`
985
1004
  query GGNomadOperatorStorefront($providerId: ID!) {
986
1005
  ggnomadOperatorStorefront(providerId: $providerId) {
987
1006
  id
@@ -995,7 +1014,7 @@ var K = e`
995
1014
  publishedAt
996
1015
  }
997
1016
  }
998
- `, te = e`
1017
+ `, ae = e`
999
1018
  query GGNomadStorefrontBySlug($workspaceId: ID!, $slug: String!) {
1000
1019
  ggnomadStorefrontBySlug(workspaceId: $workspaceId, slug: $slug) {
1001
1020
  storefront {
@@ -1044,7 +1063,7 @@ var K = e`
1044
1063
  }
1045
1064
  }
1046
1065
  }
1047
- `, ne = e`
1066
+ `, oe = e`
1048
1067
  mutation CreateGGNomadOperatorStorefront($input: CreateGgnomadOperatorStorefrontInput!) {
1049
1068
  createGgnomadOperatorStorefront(input: $input) {
1050
1069
  id
@@ -1058,7 +1077,7 @@ var K = e`
1058
1077
  publishedAt
1059
1078
  }
1060
1079
  }
1061
- `, re = e`
1080
+ `, se = e`
1062
1081
  mutation UpdateGGNomadOperatorStorefront(
1063
1082
  $id: ID!
1064
1083
  $input: UpdateGgnomadOperatorStorefrontInput!
@@ -1075,7 +1094,7 @@ var K = e`
1075
1094
  publishedAt
1076
1095
  }
1077
1096
  }
1078
- `, ie = e`
1097
+ `, ce = e`
1079
1098
  mutation PublishGGNomadOperatorStorefront($id: ID!) {
1080
1099
  publishGgnomadOperatorStorefront(id: $id) {
1081
1100
  id
@@ -1083,7 +1102,7 @@ var K = e`
1083
1102
  publishedAt
1084
1103
  }
1085
1104
  }
1086
- `, ae = e`
1105
+ `, le = e`
1087
1106
  mutation UnpublishGGNomadOperatorStorefront($id: ID!) {
1088
1107
  unpublishGgnomadOperatorStorefront(id: $id) {
1089
1108
  id
@@ -1091,7 +1110,7 @@ var K = e`
1091
1110
  publishedAt
1092
1111
  }
1093
1112
  }
1094
- `, oe = e`
1113
+ `, ue = e`
1095
1114
  query GGNomadBookingSlots(
1096
1115
  $listingId: ID!
1097
1116
  $listingType: GgnomadListingType!
@@ -1116,7 +1135,7 @@ var K = e`
1116
1135
  isActive
1117
1136
  }
1118
1137
  }
1119
- `, se = e`
1138
+ `, de = e`
1120
1139
  query GGNomadTransportSearch($input: SearchGgnomadTransportInput!) {
1121
1140
  searchGgnomadTransport(input: $input) {
1122
1141
  offerId
@@ -1141,7 +1160,7 @@ var K = e`
1141
1160
  providerName
1142
1161
  }
1143
1162
  }
1144
- `, ce = e`
1163
+ `, fe = e`
1145
1164
  mutation CreateGGNomadTrip($input: CreateGgnomadTripInput!) {
1146
1165
  createGgnomadTrip(input: $input) {
1147
1166
  id
@@ -1154,7 +1173,7 @@ var K = e`
1154
1173
  currency
1155
1174
  }
1156
1175
  }
1157
- `, le = e`
1176
+ `, pe = e`
1158
1177
  query GGNomadMyGroupTrips {
1159
1178
  myGgnomadGroupTrips {
1160
1179
  id
@@ -1173,7 +1192,7 @@ var K = e`
1173
1192
  }
1174
1193
  }
1175
1194
  }
1176
- `, ue = e`
1195
+ `, me = e`
1177
1196
  query GGNomadGroupTripCostSplit($groupTripId: ID!) {
1178
1197
  ggnomadGroupTripCostSplit(groupTripId: $groupTripId) {
1179
1198
  currency
@@ -1189,7 +1208,7 @@ var K = e`
1189
1208
  }
1190
1209
  }
1191
1210
  }
1192
- `, de = e`
1211
+ `, he = e`
1193
1212
  query GGNomadGroupTripVotes($groupTripId: ID!) {
1194
1213
  ggnomadGroupTripVotes(groupTripId: $groupTripId) {
1195
1214
  tripPlanItemId
@@ -1205,7 +1224,7 @@ var K = e`
1205
1224
  }
1206
1225
  }
1207
1226
  }
1208
- `, fe = e`
1227
+ `, ge = e`
1209
1228
  mutation CreateGGNomadGroupTrip($input: CreateGgnomadGroupTripInput!) {
1210
1229
  createGgnomadGroupTrip(input: $input) {
1211
1230
  id
@@ -1215,7 +1234,7 @@ var K = e`
1215
1234
  currency
1216
1235
  }
1217
1236
  }
1218
- `, pe = e`
1237
+ `, _e = e`
1219
1238
  mutation AddGGNomadGroupTripMember($groupTripId: ID!, $input: AddGgnomadGroupTripMemberInput!) {
1220
1239
  addGgnomadGroupTripMember(groupTripId: $groupTripId, input: $input) {
1221
1240
  id
@@ -1224,11 +1243,11 @@ var K = e`
1224
1243
  email
1225
1244
  }
1226
1245
  }
1227
- `, me = e`
1246
+ `, ve = e`
1228
1247
  mutation RemoveGGNomadGroupTripMember($groupTripId: ID!, $memberId: ID!) {
1229
1248
  removeGgnomadGroupTripMember(groupTripId: $groupTripId, memberId: $memberId)
1230
1249
  }
1231
- `, he = e`
1250
+ `, ye = e`
1232
1251
  mutation VoteGGNomadTripPlanItem($groupTripId: ID!, $input: VoteGgnomadTripPlanItemInput!) {
1233
1252
  voteGgnomadTripPlanItem(groupTripId: $groupTripId, input: $input) {
1234
1253
  id
@@ -1239,6 +1258,6 @@ var K = e`
1239
1258
  }
1240
1259
  `;
1241
1260
  //#endregion
1242
- export { pe as ADD_GGNOMAD_GROUP_TRIP_MEMBER_MUTATION, 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, fe as CREATE_GGNOMAD_GROUP_TRIP_MUTATION, ne as CREATE_GGNOMAD_OPERATOR_STOREFRONT_MUTATION, O as CREATE_GGNOMAD_PROVIDER_MUTATION, j as CREATE_GGNOMAD_REVIEW_MUTATION, L as CREATE_GGNOMAD_TRAVEL_POLICY_MUTATION, ce as CREATE_GGNOMAD_TRIP_MUTATION, w as CREATE_GGNOMAD_TRIP_PLAN_MUTATION, R 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, ee as GGNOMAD_BOOKING_APPROVALS_QUERY, K as GGNOMAD_BOOKING_QUEUE_QUERY, oe as GGNOMAD_BOOKING_SLOTS_QUERY, l as GGNOMAD_EVENTS_QUERY, u as GGNOMAD_EVENT_QUERY, h as GGNOMAD_FAVORITES_QUERY, r as GGNOMAD_FAVORITE_TARGETS_QUERY, ue as GGNOMAD_GROUP_TRIP_COST_SPLIT_QUERY, de as GGNOMAD_GROUP_TRIP_VOTES_QUERY, U as GGNOMAD_LISTING_REVIEW_QUEUE_QUERY, le as GGNOMAD_MY_GROUP_TRIPS_QUERY, Z as GGNOMAD_MY_PROVIDERS_QUERY, Q as GGNOMAD_MY_PROVIDER_ANALYTICS_QUERY, $ as GGNOMAD_OPERATOR_STOREFRONT_QUERY, t as GGNOMAD_OVERVIEW_QUERY, a as GGNOMAD_PROPERTIES_QUERY, o as GGNOMAD_PROPERTY_QUERY, i as GGNOMAD_PROVIDERS_QUERY, A as GGNOMAD_REVIEWS_QUERY, k as GGNOMAD_REVIEW_SUMMARY_QUERY, V as GGNOMAD_SPEND_SUMMARY_QUERY, te as GGNOMAD_STOREFRONT_BY_SLUG_QUERY, y as GGNOMAD_TICKETS_QUERY, s as GGNOMAD_TOURS_QUERY, c as GGNOMAD_TOUR_QUERY, se as GGNOMAD_TRANSPORT_SEARCH_QUERY, I 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, ie as PUBLISH_GGNOMAD_OPERATOR_STOREFRONT_MUTATION, x as REDEEM_GGNOMAD_TICKET_MUTATION, B as REJECT_GGNOMAD_BOOKING_APPROVAL_MUTATION, G as REJECT_GGNOMAD_LISTING_MUTATION, me as REMOVE_GGNOMAD_GROUP_TRIP_MEMBER_MUTATION, D as REMOVE_GGNOMAD_TRIP_PLAN_ITEM_MUTATION, _ as TOGGLE_GGNOMAD_FAVORITE_MUTATION, ae as UNPUBLISH_GGNOMAD_OPERATOR_STOREFRONT_MUTATION, F as UPDATE_GGNOMAD_ACTIVITY_MUTATION, P as UPDATE_GGNOMAD_EVENT_MUTATION, re as UPDATE_GGNOMAD_OPERATOR_STOREFRONT_MUTATION, M as UPDATE_GGNOMAD_PROPERTY_MUTATION, N as UPDATE_GGNOMAD_TOUR_MUTATION, T as UPDATE_GGNOMAD_TRIP_PLAN_MUTATION, he as VOTE_GGNOMAD_TRIP_PLAN_ITEM_MUTATION };
1261
+ export { _e as ADD_GGNOMAD_GROUP_TRIP_MEMBER_MUTATION, E as ADD_GGNOMAD_TRIP_PLAN_ITEM_MUTATION, z as APPROVE_GGNOMAD_BOOKING_APPROVAL_MUTATION, G as APPROVE_GGNOMAD_LISTING_MUTATION, v as CANCEL_GGNOMAD_BOOKING_MUTATION, X as CHECK_IN_GGNOMAD_BOOKING_MUTATION, Z as COMPLETE_GGNOMAD_BOOKING_MUTATION, g as CREATE_GGNOMAD_BOOKING_MUTATION, ge as CREATE_GGNOMAD_GROUP_TRIP_MUTATION, oe as CREATE_GGNOMAD_OPERATOR_STOREFRONT_MUTATION, O as CREATE_GGNOMAD_PROVIDER_MUTATION, j as CREATE_GGNOMAD_REVIEW_MUTATION, L as CREATE_GGNOMAD_TRAVEL_POLICY_MUTATION, fe as CREATE_GGNOMAD_TRIP_MUTATION, w as CREATE_GGNOMAD_TRIP_PLAN_MUTATION, R as DELETE_GGNOMAD_TRAVEL_POLICY_MUTATION, d as GGNOMAD_ACTIVITIES_QUERY, f as GGNOMAD_ACTIVITY_QUERY, $ as GGNOMAD_AUDIT_LOG_QUERY, n as GGNOMAD_BOOKABLE_SAMPLE_QUERY, m as GGNOMAD_BOOKINGS_QUERY, ee as GGNOMAD_BOOKING_APPROVALS_QUERY, Y as GGNOMAD_BOOKING_QUEUE_QUERY, ue as GGNOMAD_BOOKING_SLOTS_QUERY, l as GGNOMAD_EVENTS_QUERY, u as GGNOMAD_EVENT_QUERY, h as GGNOMAD_FAVORITES_QUERY, r as GGNOMAD_FAVORITE_TARGETS_QUERY, me as GGNOMAD_GROUP_TRIP_COST_SPLIT_QUERY, he as GGNOMAD_GROUP_TRIP_VOTES_QUERY, U as GGNOMAD_LISTING_REVIEW_QUEUE_QUERY, pe as GGNOMAD_MY_GROUP_TRIPS_QUERY, ne as GGNOMAD_MY_PROVIDERS_QUERY, re as GGNOMAD_MY_PROVIDER_ANALYTICS_QUERY, ie as GGNOMAD_OPERATOR_STOREFRONT_QUERY, t as GGNOMAD_OVERVIEW_QUERY, a as GGNOMAD_PROPERTIES_QUERY, o as GGNOMAD_PROPERTY_QUERY, i as GGNOMAD_PROVIDERS_QUERY, A as GGNOMAD_REVIEWS_QUERY, k as GGNOMAD_REVIEW_SUMMARY_QUERY, V as GGNOMAD_SPEND_SUMMARY_QUERY, ae as GGNOMAD_STOREFRONT_BY_SLUG_QUERY, y as GGNOMAD_TICKETS_QUERY, s as GGNOMAD_TOURS_QUERY, c as GGNOMAD_TOUR_QUERY, de as GGNOMAD_TRANSPORT_SEARCH_QUERY, I as GGNOMAD_TRAVEL_POLICIES_QUERY, p as GGNOMAD_TRIPS_QUERY, S as GGNOMAD_TRIP_PLANS_QUERY, C as GGNOMAD_TRIP_PLAN_QUERY, te as GGNOMAD_WORKSPACE_AUDIT_LOG_QUERY, b as ISSUE_GGNOMAD_TICKET_MUTATION, Q as MARK_GGNOMAD_BOOKING_NO_SHOW_MUTATION, q as PAUSE_GGNOMAD_LISTING_MUTATION, ce as PUBLISH_GGNOMAD_OPERATOR_STOREFRONT_MUTATION, x as REDEEM_GGNOMAD_TICKET_MUTATION, B as REJECT_GGNOMAD_BOOKING_APPROVAL_MUTATION, K as REJECT_GGNOMAD_LISTING_MUTATION, ve as REMOVE_GGNOMAD_GROUP_TRIP_MEMBER_MUTATION, D as REMOVE_GGNOMAD_TRIP_PLAN_ITEM_MUTATION, J as RESUME_GGNOMAD_LISTING_MUTATION, W as SUBMIT_GGNOMAD_LISTING_FOR_REVIEW_MUTATION, _ as TOGGLE_GGNOMAD_FAVORITE_MUTATION, le as UNPUBLISH_GGNOMAD_OPERATOR_STOREFRONT_MUTATION, F as UPDATE_GGNOMAD_ACTIVITY_MUTATION, P as UPDATE_GGNOMAD_EVENT_MUTATION, se as UPDATE_GGNOMAD_OPERATOR_STOREFRONT_MUTATION, M as UPDATE_GGNOMAD_PROPERTY_MUTATION, N as UPDATE_GGNOMAD_TOUR_MUTATION, T as UPDATE_GGNOMAD_TRIP_PLAN_MUTATION, ye as VOTE_GGNOMAD_TRIP_PLAN_ITEM_MUTATION };
1243
1262
 
1244
1263
  //# 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 monthlyTrends\n topDestinations\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 type\n pricePerNight\n currency\n rating\n reviewCount\n images\n }\n ggnomadTours(pagination: { limit: 100, offset: 0 }) {\n id\n name\n type\n price\n currency\n rating\n reviewCount\n images\n }\n ggnomadEvents(pagination: { limit: 100, offset: 0 }) {\n id\n name\n category\n price\n currency\n rating\n reviewCount\n images\n }\n ggnomadActivities(pagination: { limit: 100, offset: 0 }) {\n id\n name\n category\n price\n currency\n rating\n reviewCount\n images\n }\n ggnomadTrips(pagination: { limit: 100, offset: 0 }) {\n id\n name\n transportMode\n price\n currency\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 description\n contactEmail\n contactPhone\n website\n createdAt\n }\n }\n`;\n\nexport const GGNOMAD_PROPERTIES_QUERY = gql`\n query GGNomadProperties(\n $limit: Int\n $offset: Int\n $status: GgnomadListingStatus\n $minSustainabilityScore: Int\n $hasAccessibilityFeatures: [GgnomadAccessibilityFeature!]\n ) {\n ggnomadProperties(\n pagination: { limit: $limit, offset: $offset }\n status: $status\n minSustainabilityScore: $minSustainabilityScore\n hasAccessibilityFeatures: $hasAccessibilityFeatures\n ) {\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 instantBook\n sustainabilityScore\n accessibilityFeatures\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 instantBook\n sustainabilityScore\n sustainabilityPractices\n accessibilityFeatures\n provider {\n id\n name\n type\n rating\n reviewCount\n listingCount\n contactEmail\n website\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(\n $limit: Int\n $offset: Int\n $status: GgnomadListingStatus\n $minSustainabilityScore: Int\n $hasAccessibilityFeatures: [GgnomadAccessibilityFeature!]\n ) {\n ggnomadTours(\n pagination: { limit: $limit, offset: $offset }\n status: $status\n minSustainabilityScore: $minSustainabilityScore\n hasAccessibilityFeatures: $hasAccessibilityFeatures\n ) {\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 maxGroupSize\n instantBook\n sustainabilityScore\n accessibilityFeatures\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 location\n maxGroupSize\n instantBook\n sustainabilityScore\n sustainabilityPractices\n accessibilityFeatures\n provider {\n id\n name\n type\n rating\n reviewCount\n listingCount\n contactEmail\n website\n }\n }\n }\n`;\n\nexport const GGNOMAD_EVENTS_QUERY = gql`\n query GGNomadEvents(\n $limit: Int\n $offset: Int\n $status: GgnomadListingStatus\n $minSustainabilityScore: Int\n $hasAccessibilityFeatures: [GgnomadAccessibilityFeature!]\n ) {\n ggnomadEvents(\n pagination: { limit: $limit, offset: $offset }\n status: $status\n minSustainabilityScore: $minSustainabilityScore\n hasAccessibilityFeatures: $hasAccessibilityFeatures\n ) {\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 venue\n instantBook\n sustainabilityScore\n accessibilityFeatures\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 instantBook\n sustainabilityScore\n sustainabilityPractices\n accessibilityFeatures\n provider {\n id\n name\n type\n rating\n reviewCount\n listingCount\n contactEmail\n website\n }\n }\n }\n`;\n\nexport const GGNOMAD_ACTIVITIES_QUERY = gql`\n query GGNomadActivities(\n $limit: Int\n $offset: Int\n $status: GgnomadListingStatus\n $minSustainabilityScore: Int\n $hasAccessibilityFeatures: [GgnomadAccessibilityFeature!]\n ) {\n ggnomadActivities(\n pagination: { limit: $limit, offset: $offset }\n status: $status\n minSustainabilityScore: $minSustainabilityScore\n hasAccessibilityFeatures: $hasAccessibilityFeatures\n ) {\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 location\n instantBook\n sustainabilityScore\n accessibilityFeatures\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 instantBook\n sustainabilityScore\n sustainabilityPractices\n accessibilityFeatures\n provider {\n id\n name\n type\n rating\n reviewCount\n listingCount\n contactEmail\n website\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 carrierCode\n co2Emissions\n stops\n returnDepartureAt\n returnArrivalAt\n }\n }\n`;\n\nexport const GGNOMAD_BOOKINGS_QUERY = gql`\n query GGNomadBookings($limit: Int, $offset: Int, $status: GgnomadBookingStatus) {\n ggnomadBookings(pagination: { limit: $limit, offset: $offset }, status: $status) {\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 carbonEstimateKg\n carbonEstimateMethod\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\nexport const CREATE_GGNOMAD_PROVIDER_MUTATION = gql`\n mutation CreateGGNomadProvider($input: CreateGgnomadProviderInput!) {\n createGgnomadProvider(input: $input) {\n id\n name\n type\n status\n listingCount\n totalRevenue\n rating\n reviewCount\n description\n contactEmail\n contactPhone\n website\n createdAt\n }\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\n// ─── BOFF-4390 — provider analytics dashboards ─────────────────────────────\n\nexport const GGNOMAD_MY_PROVIDERS_QUERY = gql`\n query GGNomadMyProviders {\n myGgnomadProviders {\n id\n name\n type\n status\n }\n }\n`;\n\nexport const GGNOMAD_MY_PROVIDER_ANALYTICS_QUERY = gql`\n query GGNomadMyProviderAnalytics(\n $providerId: ID!\n $dateFrom: DateTime\n $dateTo: DateTime\n $granularity: String\n ) {\n myGgnomadProviderAnalytics(\n providerId: $providerId\n dateFrom: $dateFrom\n dateTo: $dateTo\n granularity: $granularity\n ) {\n providerId\n providerName\n dateFrom\n dateTo\n granularity\n totalBookings\n totalRevenue\n cancelledBookings\n cancellationRate\n capacityUtilizationRate\n bookingsOverTime {\n period\n bookings\n revenue\n }\n topListings {\n listingId\n listingType\n listingName\n bookings\n revenue\n cancellationRate\n capacityUtilizationRate\n }\n }\n }\n`;\n\n// ─── BOFF-4363 — white-label operator storefront ───────────────────────────\n\nexport const GGNOMAD_OPERATOR_STOREFRONT_QUERY = gql`\n query GGNomadOperatorStorefront($providerId: ID!) {\n ggnomadOperatorStorefront(providerId: $providerId) {\n id\n providerId\n slug\n displayName\n logoUrl\n primaryColor\n aboutText\n isPublished\n publishedAt\n }\n }\n`;\n\nexport const GGNOMAD_STOREFRONT_BY_SLUG_QUERY = gql`\n query GGNomadStorefrontBySlug($workspaceId: ID!, $slug: String!) {\n ggnomadStorefrontBySlug(workspaceId: $workspaceId, slug: $slug) {\n storefront {\n id\n displayName\n logoUrl\n primaryColor\n aboutText\n publishedAt\n }\n properties {\n id\n name\n pricePerNight\n currency\n images\n rating\n sustainabilityScore\n }\n tours {\n id\n name\n price\n currency\n images\n rating\n sustainabilityScore\n }\n events {\n id\n name\n price\n currency\n images\n startsAt\n sustainabilityScore\n }\n activities {\n id\n name\n price\n currency\n images\n rating\n sustainabilityScore\n }\n }\n }\n`;\n\nexport const CREATE_GGNOMAD_OPERATOR_STOREFRONT_MUTATION = gql`\n mutation CreateGGNomadOperatorStorefront($input: CreateGgnomadOperatorStorefrontInput!) {\n createGgnomadOperatorStorefront(input: $input) {\n id\n providerId\n slug\n displayName\n logoUrl\n primaryColor\n aboutText\n isPublished\n publishedAt\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_OPERATOR_STOREFRONT_MUTATION = gql`\n mutation UpdateGGNomadOperatorStorefront(\n $id: ID!\n $input: UpdateGgnomadOperatorStorefrontInput!\n ) {\n updateGgnomadOperatorStorefront(id: $id, input: $input) {\n id\n providerId\n slug\n displayName\n logoUrl\n primaryColor\n aboutText\n isPublished\n publishedAt\n }\n }\n`;\n\nexport const PUBLISH_GGNOMAD_OPERATOR_STOREFRONT_MUTATION = gql`\n mutation PublishGGNomadOperatorStorefront($id: ID!) {\n publishGgnomadOperatorStorefront(id: $id) {\n id\n isPublished\n publishedAt\n }\n }\n`;\n\nexport const UNPUBLISH_GGNOMAD_OPERATOR_STOREFRONT_MUTATION = gql`\n mutation UnpublishGGNomadOperatorStorefront($id: ID!) {\n unpublishGgnomadOperatorStorefront(id: $id) {\n id\n isPublished\n publishedAt\n }\n }\n`;\n\n// ─── BOFF-4361 — real-time availability slots for one listing ──────────────\n\nexport const GGNOMAD_BOOKING_SLOTS_QUERY = gql`\n query GGNomadBookingSlots(\n $listingId: ID!\n $listingType: GgnomadListingType!\n $dateFrom: DateTime\n $onlyAvailable: Boolean\n $limit: Int\n $offset: Int\n ) {\n ggnomadBookingSlots(\n listingId: $listingId\n listingType: $listingType\n dateFrom: $dateFrom\n onlyAvailable: $onlyAvailable\n pagination: { limit: $limit, offset: $offset }\n ) {\n id\n startAt\n endAt\n capacity\n bookedCount\n remainingCapacity\n isActive\n }\n }\n`;\n\n// ─── BOFF-4406 — transport inventory search + booking a searched leg ───────\n\nexport const GGNOMAD_TRANSPORT_SEARCH_QUERY = gql`\n query GGNomadTransportSearch($input: SearchGgnomadTransportInput!) {\n searchGgnomadTransport(input: $input) {\n offerId\n origin\n destination\n transportMode\n departureAt\n arrivalAt\n returnDepartureAt\n returnArrivalAt\n isRoundTrip\n carrier\n carrierCode\n class\n price\n currency\n passengers\n stops\n durationMinutes\n ecoFriendly\n co2Emissions\n providerName\n }\n }\n`;\n\nexport const CREATE_GGNOMAD_TRIP_MUTATION = gql`\n mutation CreateGGNomadTrip($input: CreateGgnomadTripInput!) {\n createGgnomadTrip(input: $input) {\n id\n name\n status\n transportMode\n departureAt\n arrivalAt\n price\n currency\n }\n }\n`;\n\n// ─── BOFF-4374 — group trips: members, item votes, cost split ──────────────\n\nexport const GGNOMAD_MY_GROUP_TRIPS_QUERY = gql`\n query GGNomadMyGroupTrips {\n myGgnomadGroupTrips {\n id\n name\n tripPlanId\n splitMethod\n currency\n createdBy\n createdAt\n members {\n id\n actorId\n displayName\n email\n createdAt\n }\n }\n }\n`;\n\nexport const GGNOMAD_GROUP_TRIP_COST_SPLIT_QUERY = gql`\n query GGNomadGroupTripCostSplit($groupTripId: ID!) {\n ggnomadGroupTripCostSplit(groupTripId: $groupTripId) {\n currency\n totalCost\n splitMethod\n shares {\n memberId\n actorId\n displayName\n amountOwed\n assignedTotal\n sharedTotal\n }\n }\n }\n`;\n\nexport const GGNOMAD_GROUP_TRIP_VOTES_QUERY = gql`\n query GGNomadGroupTripVotes($groupTripId: ID!) {\n ggnomadGroupTripVotes(groupTripId: $groupTripId) {\n tripPlanItemId\n yes\n no\n abstain\n votes {\n id\n actorId\n choice\n comment\n createdAt\n }\n }\n }\n`;\n\nexport const CREATE_GGNOMAD_GROUP_TRIP_MUTATION = gql`\n mutation CreateGGNomadGroupTrip($input: CreateGgnomadGroupTripInput!) {\n createGgnomadGroupTrip(input: $input) {\n id\n name\n tripPlanId\n splitMethod\n currency\n }\n }\n`;\n\nexport const ADD_GGNOMAD_GROUP_TRIP_MEMBER_MUTATION = gql`\n mutation AddGGNomadGroupTripMember($groupTripId: ID!, $input: AddGgnomadGroupTripMemberInput!) {\n addGgnomadGroupTripMember(groupTripId: $groupTripId, input: $input) {\n id\n actorId\n displayName\n email\n }\n }\n`;\n\nexport const REMOVE_GGNOMAD_GROUP_TRIP_MEMBER_MUTATION = gql`\n mutation RemoveGGNomadGroupTripMember($groupTripId: ID!, $memberId: ID!) {\n removeGgnomadGroupTripMember(groupTripId: $groupTripId, memberId: $memberId)\n }\n`;\n\nexport const VOTE_GGNOMAD_TRIP_PLAN_ITEM_MUTATION = gql`\n mutation VoteGGNomadTripPlanItem($groupTripId: ID!, $input: VoteGgnomadTripPlanItemInput!) {\n voteGgnomadTripPlanItem(groupTripId: $groupTripId, input: $input) {\n id\n tripPlanItemId\n choice\n comment\n }\n }\n`;\n"],"mappings":"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"}
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 monthlyTrends\n topDestinations\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 type\n pricePerNight\n currency\n rating\n reviewCount\n images\n }\n ggnomadTours(pagination: { limit: 100, offset: 0 }) {\n id\n name\n type\n price\n currency\n rating\n reviewCount\n images\n }\n ggnomadEvents(pagination: { limit: 100, offset: 0 }) {\n id\n name\n category\n price\n currency\n rating\n reviewCount\n images\n }\n ggnomadActivities(pagination: { limit: 100, offset: 0 }) {\n id\n name\n category\n price\n currency\n rating\n reviewCount\n images\n }\n ggnomadTrips(pagination: { limit: 100, offset: 0 }) {\n id\n name\n transportMode\n price\n currency\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 description\n contactEmail\n contactPhone\n website\n createdAt\n }\n }\n`;\n\nexport const GGNOMAD_PROPERTIES_QUERY = gql`\n query GGNomadProperties(\n $limit: Int\n $offset: Int\n $status: GgnomadListingStatus\n $minSustainabilityScore: Int\n $hasAccessibilityFeatures: [GgnomadAccessibilityFeature!]\n ) {\n ggnomadProperties(\n pagination: { limit: $limit, offset: $offset }\n status: $status\n minSustainabilityScore: $minSustainabilityScore\n hasAccessibilityFeatures: $hasAccessibilityFeatures\n ) {\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 instantBook\n sustainabilityScore\n accessibilityFeatures\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 instantBook\n sustainabilityScore\n sustainabilityPractices\n accessibilityFeatures\n provider {\n id\n name\n type\n rating\n reviewCount\n listingCount\n contactEmail\n website\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(\n $limit: Int\n $offset: Int\n $status: GgnomadListingStatus\n $minSustainabilityScore: Int\n $hasAccessibilityFeatures: [GgnomadAccessibilityFeature!]\n ) {\n ggnomadTours(\n pagination: { limit: $limit, offset: $offset }\n status: $status\n minSustainabilityScore: $minSustainabilityScore\n hasAccessibilityFeatures: $hasAccessibilityFeatures\n ) {\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 maxGroupSize\n instantBook\n sustainabilityScore\n accessibilityFeatures\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 location\n maxGroupSize\n instantBook\n sustainabilityScore\n sustainabilityPractices\n accessibilityFeatures\n provider {\n id\n name\n type\n rating\n reviewCount\n listingCount\n contactEmail\n website\n }\n }\n }\n`;\n\nexport const GGNOMAD_EVENTS_QUERY = gql`\n query GGNomadEvents(\n $limit: Int\n $offset: Int\n $status: GgnomadListingStatus\n $minSustainabilityScore: Int\n $hasAccessibilityFeatures: [GgnomadAccessibilityFeature!]\n ) {\n ggnomadEvents(\n pagination: { limit: $limit, offset: $offset }\n status: $status\n minSustainabilityScore: $minSustainabilityScore\n hasAccessibilityFeatures: $hasAccessibilityFeatures\n ) {\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 venue\n instantBook\n sustainabilityScore\n accessibilityFeatures\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 instantBook\n sustainabilityScore\n sustainabilityPractices\n accessibilityFeatures\n provider {\n id\n name\n type\n rating\n reviewCount\n listingCount\n contactEmail\n website\n }\n }\n }\n`;\n\nexport const GGNOMAD_ACTIVITIES_QUERY = gql`\n query GGNomadActivities(\n $limit: Int\n $offset: Int\n $status: GgnomadListingStatus\n $minSustainabilityScore: Int\n $hasAccessibilityFeatures: [GgnomadAccessibilityFeature!]\n ) {\n ggnomadActivities(\n pagination: { limit: $limit, offset: $offset }\n status: $status\n minSustainabilityScore: $minSustainabilityScore\n hasAccessibilityFeatures: $hasAccessibilityFeatures\n ) {\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 location\n instantBook\n sustainabilityScore\n accessibilityFeatures\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 instantBook\n sustainabilityScore\n sustainabilityPractices\n accessibilityFeatures\n provider {\n id\n name\n type\n rating\n reviewCount\n listingCount\n contactEmail\n website\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 carrierCode\n co2Emissions\n stops\n returnDepartureAt\n returnArrivalAt\n }\n }\n`;\n\nexport const GGNOMAD_BOOKINGS_QUERY = gql`\n query GGNomadBookings($limit: Int, $offset: Int, $status: GgnomadBookingStatus) {\n ggnomadBookings(pagination: { limit: $limit, offset: $offset }, status: $status) {\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 carbonEstimateKg\n carbonEstimateMethod\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\nexport const CREATE_GGNOMAD_PROVIDER_MUTATION = gql`\n mutation CreateGGNomadProvider($input: CreateGgnomadProviderInput!) {\n createGgnomadProvider(input: $input) {\n id\n name\n type\n status\n listingCount\n totalRevenue\n rating\n reviewCount\n description\n contactEmail\n contactPhone\n website\n createdAt\n }\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\n/**\n * BOFF-10248 — ggnomadAuditLog returns history only to the people involved in\n * an entity (a booking's traveler or host, a listing's owner). Operators\n * (ggnomad:manage) read any entity's history through this field.\n */\nexport const GGNOMAD_WORKSPACE_AUDIT_LOG_QUERY = gql`\n query GGNomadWorkspaceAuditLog(\n $entityType: String!\n $entityId: String!\n $limit: Int\n $offset: Int\n ) {\n ggnomadWorkspaceAuditLog(\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\n// ─── BOFF-4390 — provider analytics dashboards ─────────────────────────────\n\nexport const GGNOMAD_MY_PROVIDERS_QUERY = gql`\n query GGNomadMyProviders {\n myGgnomadProviders {\n id\n name\n type\n status\n }\n }\n`;\n\nexport const GGNOMAD_MY_PROVIDER_ANALYTICS_QUERY = gql`\n query GGNomadMyProviderAnalytics(\n $providerId: ID!\n $dateFrom: DateTime\n $dateTo: DateTime\n $granularity: String\n ) {\n myGgnomadProviderAnalytics(\n providerId: $providerId\n dateFrom: $dateFrom\n dateTo: $dateTo\n granularity: $granularity\n ) {\n providerId\n providerName\n dateFrom\n dateTo\n granularity\n totalBookings\n totalRevenue\n cancelledBookings\n cancellationRate\n capacityUtilizationRate\n bookingsOverTime {\n period\n bookings\n revenue\n }\n topListings {\n listingId\n listingType\n listingName\n bookings\n revenue\n cancellationRate\n capacityUtilizationRate\n }\n }\n }\n`;\n\n// ─── BOFF-4363 — white-label operator storefront ───────────────────────────\n\nexport const GGNOMAD_OPERATOR_STOREFRONT_QUERY = gql`\n query GGNomadOperatorStorefront($providerId: ID!) {\n ggnomadOperatorStorefront(providerId: $providerId) {\n id\n providerId\n slug\n displayName\n logoUrl\n primaryColor\n aboutText\n isPublished\n publishedAt\n }\n }\n`;\n\nexport const GGNOMAD_STOREFRONT_BY_SLUG_QUERY = gql`\n query GGNomadStorefrontBySlug($workspaceId: ID!, $slug: String!) {\n ggnomadStorefrontBySlug(workspaceId: $workspaceId, slug: $slug) {\n storefront {\n id\n displayName\n logoUrl\n primaryColor\n aboutText\n publishedAt\n }\n properties {\n id\n name\n pricePerNight\n currency\n images\n rating\n sustainabilityScore\n }\n tours {\n id\n name\n price\n currency\n images\n rating\n sustainabilityScore\n }\n events {\n id\n name\n price\n currency\n images\n startsAt\n sustainabilityScore\n }\n activities {\n id\n name\n price\n currency\n images\n rating\n sustainabilityScore\n }\n }\n }\n`;\n\nexport const CREATE_GGNOMAD_OPERATOR_STOREFRONT_MUTATION = gql`\n mutation CreateGGNomadOperatorStorefront($input: CreateGgnomadOperatorStorefrontInput!) {\n createGgnomadOperatorStorefront(input: $input) {\n id\n providerId\n slug\n displayName\n logoUrl\n primaryColor\n aboutText\n isPublished\n publishedAt\n }\n }\n`;\n\nexport const UPDATE_GGNOMAD_OPERATOR_STOREFRONT_MUTATION = gql`\n mutation UpdateGGNomadOperatorStorefront(\n $id: ID!\n $input: UpdateGgnomadOperatorStorefrontInput!\n ) {\n updateGgnomadOperatorStorefront(id: $id, input: $input) {\n id\n providerId\n slug\n displayName\n logoUrl\n primaryColor\n aboutText\n isPublished\n publishedAt\n }\n }\n`;\n\nexport const PUBLISH_GGNOMAD_OPERATOR_STOREFRONT_MUTATION = gql`\n mutation PublishGGNomadOperatorStorefront($id: ID!) {\n publishGgnomadOperatorStorefront(id: $id) {\n id\n isPublished\n publishedAt\n }\n }\n`;\n\nexport const UNPUBLISH_GGNOMAD_OPERATOR_STOREFRONT_MUTATION = gql`\n mutation UnpublishGGNomadOperatorStorefront($id: ID!) {\n unpublishGgnomadOperatorStorefront(id: $id) {\n id\n isPublished\n publishedAt\n }\n }\n`;\n\n// ─── BOFF-4361 — real-time availability slots for one listing ──────────────\n\nexport const GGNOMAD_BOOKING_SLOTS_QUERY = gql`\n query GGNomadBookingSlots(\n $listingId: ID!\n $listingType: GgnomadListingType!\n $dateFrom: DateTime\n $onlyAvailable: Boolean\n $limit: Int\n $offset: Int\n ) {\n ggnomadBookingSlots(\n listingId: $listingId\n listingType: $listingType\n dateFrom: $dateFrom\n onlyAvailable: $onlyAvailable\n pagination: { limit: $limit, offset: $offset }\n ) {\n id\n startAt\n endAt\n capacity\n bookedCount\n remainingCapacity\n isActive\n }\n }\n`;\n\n// ─── BOFF-4406 — transport inventory search + booking a searched leg ───────\n\nexport const GGNOMAD_TRANSPORT_SEARCH_QUERY = gql`\n query GGNomadTransportSearch($input: SearchGgnomadTransportInput!) {\n searchGgnomadTransport(input: $input) {\n offerId\n origin\n destination\n transportMode\n departureAt\n arrivalAt\n returnDepartureAt\n returnArrivalAt\n isRoundTrip\n carrier\n carrierCode\n class\n price\n currency\n passengers\n stops\n durationMinutes\n ecoFriendly\n co2Emissions\n providerName\n }\n }\n`;\n\nexport const CREATE_GGNOMAD_TRIP_MUTATION = gql`\n mutation CreateGGNomadTrip($input: CreateGgnomadTripInput!) {\n createGgnomadTrip(input: $input) {\n id\n name\n status\n transportMode\n departureAt\n arrivalAt\n price\n currency\n }\n }\n`;\n\n// ─── BOFF-4374 — group trips: members, item votes, cost split ──────────────\n\nexport const GGNOMAD_MY_GROUP_TRIPS_QUERY = gql`\n query GGNomadMyGroupTrips {\n myGgnomadGroupTrips {\n id\n name\n tripPlanId\n splitMethod\n currency\n createdBy\n createdAt\n members {\n id\n actorId\n displayName\n email\n createdAt\n }\n }\n }\n`;\n\nexport const GGNOMAD_GROUP_TRIP_COST_SPLIT_QUERY = gql`\n query GGNomadGroupTripCostSplit($groupTripId: ID!) {\n ggnomadGroupTripCostSplit(groupTripId: $groupTripId) {\n currency\n totalCost\n splitMethod\n shares {\n memberId\n actorId\n displayName\n amountOwed\n assignedTotal\n sharedTotal\n }\n }\n }\n`;\n\nexport const GGNOMAD_GROUP_TRIP_VOTES_QUERY = gql`\n query GGNomadGroupTripVotes($groupTripId: ID!) {\n ggnomadGroupTripVotes(groupTripId: $groupTripId) {\n tripPlanItemId\n yes\n no\n abstain\n votes {\n id\n actorId\n choice\n comment\n createdAt\n }\n }\n }\n`;\n\nexport const CREATE_GGNOMAD_GROUP_TRIP_MUTATION = gql`\n mutation CreateGGNomadGroupTrip($input: CreateGgnomadGroupTripInput!) {\n createGgnomadGroupTrip(input: $input) {\n id\n name\n tripPlanId\n splitMethod\n currency\n }\n }\n`;\n\nexport const ADD_GGNOMAD_GROUP_TRIP_MEMBER_MUTATION = gql`\n mutation AddGGNomadGroupTripMember($groupTripId: ID!, $input: AddGgnomadGroupTripMemberInput!) {\n addGgnomadGroupTripMember(groupTripId: $groupTripId, input: $input) {\n id\n actorId\n displayName\n email\n }\n }\n`;\n\nexport const REMOVE_GGNOMAD_GROUP_TRIP_MEMBER_MUTATION = gql`\n mutation RemoveGGNomadGroupTripMember($groupTripId: ID!, $memberId: ID!) {\n removeGgnomadGroupTripMember(groupTripId: $groupTripId, memberId: $memberId)\n }\n`;\n\nexport const VOTE_GGNOMAD_TRIP_PLAN_ITEM_MUTATION = gql`\n mutation VoteGGNomadTripPlanItem($groupTripId: ID!, $input: VoteGgnomadTripPlanItemInput!) {\n voteGgnomadTripPlanItem(groupTripId: $groupTripId, input: $input) {\n id\n tripPlanItemId\n choice\n comment\n }\n }\n`;\n"],"mappings":"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"}
@@ -23,4 +23,10 @@ export declare const SavesChangedPriceOnly: Story;
23
23
  * covers the per-targetType field-name branch in handleSave.
24
24
  */
25
25
  export declare const SavesTourPrice: Story;
26
+ /**
27
+ * BOFF-10194 — status is read-only in the edit dialog. An ACTIVE listing
28
+ * offers "Pause listing", which runs pauseGgnomadListing (an audited
29
+ * transition) instead of writing status through the generic update.
30
+ */
31
+ export declare const PausesActiveListing: Story;
26
32
  //# sourceMappingURL=ListingEditDialog.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListingEditDialog.stories.d.ts","sourceRoot":"","sources":["../../src/stories/ListingEditDialog.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAY5E,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,iBAAiB,CAYxC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,YAAY,EAAE,KAY1B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAYtB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAUlC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,KA6BnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KA4B5B,CAAC"}
1
+ {"version":3,"file":"ListingEditDialog.stories.d.ts","sourceRoot":"","sources":["../../src/stories/ListingEditDialog.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAgB5E,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,iBAAiB,CAYxC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,YAAY,EAAE,KAY1B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAYtB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAUlC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,KA6BnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KA4B5B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAmCjC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-ggnomad",
3
- "version": "2026.1029.2",
3
+ "version": "2026.1030.1",
4
4
  "description": "Burdenoff GGNomad Microfrontend",
5
5
  "type": "module",
6
6
  "files": [