@voyant-travel/operations-react 0.11.0 → 0.12.0

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.
@@ -14,6 +14,9 @@ export interface AvailabilityColumnsMessages {
14
14
  openLabel: string;
15
15
  editLabel: string;
16
16
  productLabel: string;
17
+ optionLabel: string;
18
+ optionMissingLabel: string;
19
+ optionMissingTooltip: string;
17
20
  productLevelLabel: string;
18
21
  reasonLabel: string;
19
22
  recurrenceLabel: string;
@@ -36,7 +39,17 @@ export interface AvailabilityColumnsMessages {
36
39
  export declare function getSlotStatusLabel(status: AvailabilitySlotRow["status"], messages: AvailabilityColumnsMessages): string;
37
40
  export declare const availabilityRuleColumns: (products: ProductOption[], onView: (ruleId: string) => void, messages: AvailabilityColumnsMessages) => ColumnDef<AvailabilityRuleRow>[];
38
41
  export declare const availabilityStartTimeColumns: (products: ProductOption[], onView: (startTimeId: string) => void, messages: AvailabilityColumnsMessages) => ColumnDef<AvailabilityStartTimeRow>[];
39
- export declare const availabilitySlotColumns: (products: ProductOption[], onView: (slotId: string) => void, messages: AvailabilityColumnsMessages, onEdit?: (slot: AvailabilitySlotRow) => void) => ColumnDef<AvailabilitySlotRow>[];
42
+ /**
43
+ * Lookup data for the option column. `optionNameById` resolves a slot's
44
+ * `optionId` to a readable name; `productsWithOptions` is the set of product ids
45
+ * that have at least one active option, used to warn only when a missing option
46
+ * actually makes the departure unpriceable (#2062).
47
+ */
48
+ export interface SlotOptionInfo {
49
+ optionNameById: Map<string, string>;
50
+ productsWithOptions: Set<string>;
51
+ }
52
+ export declare const availabilitySlotColumns: (products: ProductOption[], onView: (slotId: string) => void, messages: AvailabilityColumnsMessages, onEdit?: (slot: AvailabilitySlotRow) => void, optionInfo?: SlotOptionInfo) => ColumnDef<AvailabilitySlotRow>[];
40
53
  export declare const availabilityCloseoutColumns: (products: ProductOption[], messages: AvailabilityColumnsMessages) => ColumnDef<AvailabilityCloseoutRow>[];
41
54
  export declare const availabilityPickupPointColumns: (products: ProductOption[], messages: AvailabilityColumnsMessages) => ColumnDef<AvailabilityPickupPointRow>[];
42
55
  //# sourceMappingURL=availability-columns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"availability-columns.d.ts","sourceRoot":"","sources":["../../../src/availability/components/availability-columns.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAMtD,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAKnB,MAAM,aAAa,CAAA;AAGpB,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EACrC,QAAQ,EAAE,2BAA2B,UAYtC;AAwCD,eAAO,MAAM,uBAAuB,GAClC,UAAU,aAAa,EAAE,EACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAChC,UAAU,2BAA2B,KACpC,SAAS,CAAC,mBAAmB,CAAC,EA2ChC,CAAA;AAED,eAAO,MAAM,4BAA4B,GACvC,UAAU,aAAa,EAAE,EACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,EACrC,UAAU,2BAA2B,KACpC,SAAS,CAAC,wBAAwB,CAAC,EAyCrC,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,UAAU,aAAa,EAAE,EACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAChC,UAAU,2BAA2B,EACrC,SAAS,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,KAC3C,SAAS,CAAC,mBAAmB,CAAC,EA2DhC,CAAA;AAED,eAAO,MAAM,2BAA2B,GACtC,UAAU,aAAa,EAAE,EACzB,UAAU,2BAA2B,KACpC,SAAS,CAAC,uBAAuB,CAAC,EAoBpC,CAAA;AAED,eAAO,MAAM,8BAA8B,GACzC,UAAU,aAAa,EAAE,EACzB,UAAU,2BAA2B,KACpC,SAAS,CAAC,0BAA0B,CAAC,EA0BvC,CAAA"}
1
+ {"version":3,"file":"availability-columns.d.ts","sourceRoot":"","sources":["../../../src/availability/components/availability-columns.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAOtD,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAKnB,MAAM,aAAa,CAAA;AAGpB,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EACrC,QAAQ,EAAE,2BAA2B,UAYtC;AAwCD,eAAO,MAAM,uBAAuB,GAClC,UAAU,aAAa,EAAE,EACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAChC,UAAU,2BAA2B,KACpC,SAAS,CAAC,mBAAmB,CAAC,EA2ChC,CAAA;AAED,eAAO,MAAM,4BAA4B,GACvC,UAAU,aAAa,EAAE,EACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,EACrC,UAAU,2BAA2B,KACpC,SAAS,CAAC,wBAAwB,CAAC,EAyCrC,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACjC;AAED,eAAO,MAAM,uBAAuB,GAClC,UAAU,aAAa,EAAE,EACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAChC,UAAU,2BAA2B,EACrC,SAAS,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,EAC5C,aAAa,cAAc,KAC1B,SAAS,CAAC,mBAAmB,CAAC,EAwFhC,CAAA;AAED,eAAO,MAAM,2BAA2B,GACtC,UAAU,aAAa,EAAE,EACzB,UAAU,2BAA2B,KACpC,SAAS,CAAC,uBAAuB,CAAC,EAoBpC,CAAA;AAED,eAAO,MAAM,8BAA8B,GACzC,UAAU,aAAa,EAAE,EACzB,UAAU,2BAA2B,KACpC,SAAS,CAAC,0BAA0B,CAAC,EA0BvC,CAAA"}
@@ -2,8 +2,9 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Badge, Button } from "@voyant-travel/ui/components";
4
4
  import { DataTableColumnHeader } from "@voyant-travel/ui/components/data-table-column-header";
5
+ import { Tooltip, TooltipContent, TooltipTrigger } from "@voyant-travel/ui/components/tooltip";
5
6
  import { cn } from "@voyant-travel/ui/lib/utils";
6
- import { ExternalLink, Pencil } from "lucide-react";
7
+ import { AlertTriangle, ExternalLink, Pencil } from "lucide-react";
7
8
  import { useAvailabilityUiMessagesOrDefault } from "../i18n/index.js";
8
9
  import { productNameById, slotLocalEnd, slotLocalStart, slotStatusTone, } from "../index.js";
9
10
  import { slotStatusToneClass } from "./slot-status-tone.js";
@@ -99,12 +100,28 @@ export const availabilityStartTimeColumns = (products, onView, messages) => [
99
100
  cell: ({ row }) => (_jsx(ViewButton, { label: messages.openLabel, onClick: () => onView(row.original.id) })),
100
101
  },
101
102
  ];
102
- export const availabilitySlotColumns = (products, onView, messages, onEdit) => [
103
+ export const availabilitySlotColumns = (products, onView, messages, onEdit, optionInfo) => [
103
104
  {
104
105
  accessorKey: "productId",
105
106
  header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.productLabel }),
106
107
  cell: ({ row }) => productNameById(products, row.original.productId, row.original.productName),
107
108
  },
109
+ {
110
+ id: "option",
111
+ header: () => messages.optionLabel,
112
+ cell: ({ row }) => {
113
+ const { optionId, productId } = row.original;
114
+ if (optionId) {
115
+ return optionInfo?.optionNameById.get(optionId) ?? messages.details.noValue;
116
+ }
117
+ // No option set: only flag it when the product actually has options, so a
118
+ // legitimately option-less product isn't warned.
119
+ if (optionInfo?.productsWithOptions.has(productId)) {
120
+ return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { className: "cursor-help", children: _jsxs(Badge, { variant: "outline", className: "gap-1 border-amber-500/40 text-amber-600 dark:text-amber-400", children: [_jsx(AlertTriangle, { className: "h-3 w-3" }), messages.optionMissingLabel] }) }), _jsx(TooltipContent, { children: messages.optionMissingTooltip })] }));
121
+ }
122
+ return messages.details.noValue;
123
+ },
124
+ },
108
125
  {
109
126
  accessorKey: "startsAt",
110
127
  header: ({ column }) => (_jsx(DataTableColumnHeader, { column: column, title: messages.startsAtLabel })),
@@ -1,5 +1,5 @@
1
1
  import type { OnChangeFn, RowSelectionState } from "@tanstack/react-table";
2
- import type { ReactNode } from "react";
2
+ import { type ReactNode } from "react";
3
3
  import type { AvailabilitySlotRow, ProductOption } from "../../index.js";
4
4
  import { type AvailabilityBulkDeleteFn, type AvailabilityBulkUpdateFn, type AvailabilityTabMessages } from "./shared.js";
5
5
  export declare function AvailabilitySlotsTab(props: {
@@ -1 +1 @@
1
- {"version":3,"file":"slots-tab.d.ts","sourceRoot":"","sources":["../../../../src/availability/components/availability-tabs/slots-tab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAW1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAIxE,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAE7B,MAAM,aAAa,CAAA;AAEpB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,QAAQ,EAAE,uBAAuB,CAAA;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,aAAa,EAAE,mBAAmB,EAAE,CAAA;IACpC,aAAa,EAAE,iBAAiB,CAAA;IAChC,gBAAgB,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAA;IAC/C,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,EAAE,wBAAwB,CAAA;IAC1C,gBAAgB,EAAE,wBAAwB,CAAA;IAC1C,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAC1C,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,2CAyJA"}
1
+ {"version":3,"file":"slots-tab.d.ts","sourceRoot":"","sources":["../../../../src/availability/components/availability-tabs/slots-tab.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAe1E,OAAO,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAA;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAIxE,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAE7B,MAAM,aAAa,CAAA;AAEpB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,QAAQ,EAAE,uBAAuB,CAAA;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,aAAa,EAAE,mBAAmB,EAAE,CAAA;IACpC,aAAa,EAAE,iBAAiB,CAAA;IAChC,gBAAgB,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAA;IAC/C,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,EAAE,wBAAwB,CAAA;IAC1C,gBAAgB,EAAE,wBAAwB,CAAA;IAC1C,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAC1C,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,2CA0LA"}
@@ -1,9 +1,12 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useQueries } from "@tanstack/react-query";
4
+ import { getProductOptionsQueryOptions, useVoyantProductsContext, } from "@voyant-travel/inventory-react";
3
5
  import { ConfirmActionButton, SelectionActionBar } from "@voyant-travel/ui/components";
4
6
  import { DataTable } from "@voyant-travel/ui/components/data-table";
5
7
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@voyant-travel/ui/components/select";
6
8
  import { TabsContent } from "@voyant-travel/ui/components/tabs";
9
+ import { useMemo } from "react";
7
10
  import { useAvailabilityUiMessagesOrDefault } from "../../i18n/index.js";
8
11
  import { formatLocalizedSelectionLabel } from "../../utils.js";
9
12
  import { availabilitySlotColumns } from "../availability-columns.js";
@@ -11,9 +14,34 @@ import { AvailabilitySectionHeader } from "../availability-section-header.js";
11
14
  import { formatTemplate, } from "./shared.js";
12
15
  export function AvailabilitySlotsTab(props) {
13
16
  useAvailabilityUiMessagesOrDefault();
17
+ // Resolve each slot's option name, and learn which products have options at
18
+ // all, so the option column can flag a missing option only when it actually
19
+ // makes the departure unpriceable (#2062). Scope the lookup to the products
20
+ // actually visible in the (paginated) table — one capped query per product —
21
+ // rather than an unbounded global read (the options API caps `limit` at 100).
22
+ const productsContext = useVoyantProductsContext();
23
+ const visibleProductIds = useMemo(() => [...new Set(props.filteredSlots.map((slot) => slot.productId))], [props.filteredSlots]);
24
+ const optionQueries = useQueries({
25
+ queries: visibleProductIds.map((productId) => getProductOptionsQueryOptions(productsContext, {
26
+ productId,
27
+ status: "active",
28
+ limit: 100,
29
+ })),
30
+ });
31
+ const optionInfo = useMemo(() => {
32
+ const optionNameById = new Map();
33
+ const productsWithOptions = new Set();
34
+ for (const query of optionQueries) {
35
+ for (const option of query.data?.data ?? []) {
36
+ optionNameById.set(option.id, option.name);
37
+ productsWithOptions.add(option.productId);
38
+ }
39
+ }
40
+ return { optionNameById, productsWithOptions };
41
+ }, [optionQueries]);
14
42
  const selection = (count) => formatLocalizedSelectionLabel(count, props.messages.nouns.slotSingular, props.messages.nouns.slotPlural);
15
43
  const asPanel = props.asPanel ?? true;
16
- const body = (_jsxs(_Fragment, { children: [!props.hideHeader && (_jsx(AvailabilitySectionHeader, { title: props.messages.tabs.slots.title, description: props.messages.tabs.slots.description, actionLabel: props.messages.tabs.slots.actionLabel, onAction: props.onCreate })), props.toolbar, _jsx(DataTable, { columns: availabilitySlotColumns(props.products, props.onOpenRoute, props.messages, props.onEdit), data: props.filteredSlots, emptyMessage: props.messages.tabs.slots.emptyMessage, enableRowSelection: true, getRowId: (row) => row.id, rowSelection: props.slotSelection, onRowSelectionChange: props.setSlotSelection, renderSelectionActions: ({ selectedRows, clearSelection }) => (_jsxs(SelectionActionBar, { selectedCount: selectedRows.length, onClear: clearSelection, children: [props.bulkStatusSelect ? (_jsxs(Select, { value: "", onValueChange: (value) => {
44
+ const body = (_jsxs(_Fragment, { children: [!props.hideHeader && (_jsx(AvailabilitySectionHeader, { title: props.messages.tabs.slots.title, description: props.messages.tabs.slots.description, actionLabel: props.messages.tabs.slots.actionLabel, onAction: props.onCreate })), props.toolbar, _jsx(DataTable, { columns: availabilitySlotColumns(props.products, props.onOpenRoute, props.messages, props.onEdit, optionInfo), data: props.filteredSlots, emptyMessage: props.messages.tabs.slots.emptyMessage, enableRowSelection: true, getRowId: (row) => row.id, rowSelection: props.slotSelection, onRowSelectionChange: props.setSlotSelection, renderSelectionActions: ({ selectedRows, clearSelection }) => (_jsxs(SelectionActionBar, { selectedCount: selectedRows.length, onClear: clearSelection, children: [props.bulkStatusSelect ? (_jsxs(Select, { value: "", onValueChange: (value) => {
17
45
  if (!value)
18
46
  return;
19
47
  const verb = value === "open"
@@ -366,6 +366,9 @@ export declare const availabilityUiEn: {
366
366
  statusSoldOut: string;
367
367
  statusCancelled: string;
368
368
  productLabel: string;
369
+ optionLabel: string;
370
+ optionMissingLabel: string;
371
+ optionMissingTooltip: string;
369
372
  timezoneLabel: string;
370
373
  recurrenceLabel: string;
371
374
  maxPaxLabel: string;
@@ -860,6 +863,9 @@ export declare const availabilityUiRo: {
860
863
  statusSoldOut: string;
861
864
  statusCancelled: string;
862
865
  productLabel: string;
866
+ optionLabel: string;
867
+ optionMissingLabel: string;
868
+ optionMissingTooltip: string;
863
869
  timezoneLabel: string;
864
870
  recurrenceLabel: string;
865
871
  maxPaxLabel: string;
@@ -1355,6 +1361,9 @@ export declare const availabilityUiMessageDefinitions: {
1355
1361
  statusSoldOut: string;
1356
1362
  statusCancelled: string;
1357
1363
  productLabel: string;
1364
+ optionLabel: string;
1365
+ optionMissingLabel: string;
1366
+ optionMissingTooltip: string;
1358
1367
  timezoneLabel: string;
1359
1368
  recurrenceLabel: string;
1360
1369
  maxPaxLabel: string;
@@ -1849,6 +1858,9 @@ export declare const availabilityUiMessageDefinitions: {
1849
1858
  statusSoldOut: string;
1850
1859
  statusCancelled: string;
1851
1860
  productLabel: string;
1861
+ optionLabel: string;
1862
+ optionMissingLabel: string;
1863
+ optionMissingTooltip: string;
1852
1864
  timezoneLabel: string;
1853
1865
  recurrenceLabel: string;
1854
1866
  maxPaxLabel: string;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/availability/i18n/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EAIzB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,KAAK,wBAAwB,GAAG,CAAC,OAAO,yBAAyB,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAA;AAErF,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,GAAG;IAC9D,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,MAAM,CAAA;QACnB,OAAO,EAAE;YACP,WAAW,EAAE,MAAM,CAAA;YACnB,UAAU,EAAE,MAAM,CAAA;YAClB,cAAc,EAAE,MAAM,CAAA;YACtB,OAAO,EAAE,MAAM,CAAA;YACf,WAAW,EAAE,MAAM,CAAA;YACnB,SAAS,EAAE,MAAM,CAAA;YACjB,MAAM,EAAE,MAAM,CAAA;YACd,QAAQ,EAAE,MAAM,CAAA;YAChB,KAAK,EAAE,MAAM,CAAA;YACb,kBAAkB,EAAE,MAAM,CAAA;SAC3B,CAAA;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAA;YACZ,OAAO,EAAE,MAAM,CAAA;YACf,MAAM,EAAE,MAAM,CAAA;YACd,SAAS,EAAE,MAAM,CAAA;YACjB,QAAQ,EAAE,MAAM,CAAA;SACjB,CAAA;KACF,CAAA;CACF,CAAA;AAwDD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGK,CAAA;AAElC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGK,CAAA;AAIlC,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGe,CAAA;AAE5D,MAAM,MAAM,8BAA8B,GAAG,sBAAsB,CAAC,sBAAsB,CAAC,CAAA;AAU3F,wBAAgB,6BAA6B,CAAC,EAC5C,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,SAAS,CAAC,EAAE,8BAA8B,GAAG,IAAI,CAAA;CAClD,0BAOA;AAED,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAClC,SAAS,CAAC,EAAE,8BAA8B,GAAG,IAAI,CAAA;CAClD,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAU3C;AAED,wBAAgB,8BAA8B,CAAC,EAC7C,QAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,SAAS,CAAC,EAAE,8BAA8B,GAAG,IAAI,CAAA;CAClD,2CAWA;AAED,eAAO,MAAM,qBAAqB,gDAAgC,CAAA;AAClE,eAAO,MAAM,yBAAyB,8BAAoC,CAAA;AAE1E,wBAAgB,8BAA8B,6CAE7C;AAED,wBAAgB,kCAAkC,2BAEjD"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/availability/i18n/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EAIzB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,KAAK,wBAAwB,GAAG,CAAC,OAAO,yBAAyB,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAA;AAErF,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,GAAG;IAC9D,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,MAAM,CAAA;QACnB,OAAO,EAAE;YACP,WAAW,EAAE,MAAM,CAAA;YACnB,UAAU,EAAE,MAAM,CAAA;YAClB,cAAc,EAAE,MAAM,CAAA;YACtB,OAAO,EAAE,MAAM,CAAA;YACf,WAAW,EAAE,MAAM,CAAA;YACnB,SAAS,EAAE,MAAM,CAAA;YACjB,MAAM,EAAE,MAAM,CAAA;YACd,QAAQ,EAAE,MAAM,CAAA;YAChB,KAAK,EAAE,MAAM,CAAA;YACb,kBAAkB,EAAE,MAAM,CAAA;SAC3B,CAAA;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAA;YACZ,OAAO,EAAE,MAAM,CAAA;YACf,MAAM,EAAE,MAAM,CAAA;YACd,SAAS,EAAE,MAAM,CAAA;YACjB,QAAQ,EAAE,MAAM,CAAA;SACjB,CAAA;KACF,CAAA;CACF,CAAA;AAwDD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGK,CAAA;AAElC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGK,CAAA;AAIlC,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGe,CAAA;AAE5D,MAAM,MAAM,8BAA8B,GAAG,sBAAsB,CAAC,sBAAsB,CAAC,CAAA;AAU3F,wBAAgB,6BAA6B,CAAC,EAC5C,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,SAAS,CAAC,EAAE,8BAA8B,GAAG,IAAI,CAAA;CAClD,0BAOA;AAED,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAClC,SAAS,CAAC,EAAE,8BAA8B,GAAG,IAAI,CAAA;CAClD,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAU3C;AAED,wBAAgB,8BAA8B,CAAC,EAC7C,QAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,SAAS,CAAC,EAAE,8BAA8B,GAAG,IAAI,CAAA;CAClD,2CAWA;AAED,eAAO,MAAM,qBAAqB,gDAAgC,CAAA;AAClE,eAAO,MAAM,yBAAyB,8BAAoC,CAAA;AAE1E,wBAAgB,8BAA8B,6CAE7C;AAED,wBAAgB,kCAAkC,2BAEjD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyant-travel/operations-react",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -248,9 +248,9 @@
248
248
  "sonner": "^2.0.7",
249
249
  "zod": "^4.0.0",
250
250
  "@voyant-travel/admin": "^0.114.0",
251
- "@voyant-travel/bookings-react": "^0.130.0",
252
- "@voyant-travel/operations": "^0.2.3",
253
- "@voyant-travel/inventory-react": "^0.12.0",
251
+ "@voyant-travel/bookings-react": "^0.131.0",
252
+ "@voyant-travel/operations": "^0.2.4",
253
+ "@voyant-travel/inventory-react": "^0.13.0",
254
254
  "@voyant-travel/ui": "^0.108.0"
255
255
  },
256
256
  "peerDependenciesMeta": {
@@ -280,7 +280,7 @@
280
280
  }
281
281
  },
282
282
  "dependencies": {
283
- "@voyant-travel/i18n": "^0.107.2",
283
+ "@voyant-travel/i18n": "^0.107.3",
284
284
  "@voyant-travel/react": "^0.104.1"
285
285
  },
286
286
  "devDependencies": {
@@ -297,10 +297,10 @@
297
297
  "vitest": "^4.1.2",
298
298
  "zod": "^4.3.6",
299
299
  "@voyant-travel/admin": "^0.114.0",
300
- "@voyant-travel/bookings-react": "^0.130.0",
301
- "@voyant-travel/i18n": "^0.107.2",
302
- "@voyant-travel/operations": "^0.2.3",
303
- "@voyant-travel/inventory-react": "^0.12.0",
300
+ "@voyant-travel/bookings-react": "^0.131.0",
301
+ "@voyant-travel/i18n": "^0.107.3",
302
+ "@voyant-travel/operations": "^0.2.4",
303
+ "@voyant-travel/inventory-react": "^0.13.0",
304
304
  "@voyant-travel/react": "^0.104.1",
305
305
  "@voyant-travel/ui": "^0.108.0",
306
306
  "@voyant-travel/voyant-typescript-config": "^0.1.0"