@voyantjs/availability-ui 0.64.1 → 0.66.6

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.
@@ -28,14 +28,18 @@ export interface AvailabilityOverviewMessages extends AvailabilityColumnsMessage
28
28
  severitySoldOut: string;
29
29
  };
30
30
  }
31
- export declare function AvailabilityOverview({ messages, products, constrainedSlots, openSlotsCount: providedOpenSlotsCount, filteredRules, filteredPickupPoints, productsWithoutUpcomingDepartures, search, setSearch, productFilter, setProductFilter, hasFilters, onClearFilters, onOpenSlot, onOpenProduct, onJumpToSlots, showFilters, }: {
31
+ export declare function AvailabilityOverview({ messages, products, constrainedSlots, constrainedSlotsCount: providedConstrainedSlotsCount, openSlotsCount: providedOpenSlotsCount, activeRulesCount: providedActiveRulesCount, activePickupPointsCount: providedActivePickupPointsCount, filteredRules, filteredPickupPoints, productsWithoutUpcomingDepartures, productsWithoutUpcomingDeparturesCount: providedProductsWithoutUpcomingDeparturesCount, search, setSearch, productFilter, setProductFilter, hasFilters, onClearFilters, onOpenSlot, onOpenProduct, onJumpToSlots, showFilters, }: {
32
32
  messages: AvailabilityOverviewMessages;
33
33
  products: ProductOption[];
34
34
  constrainedSlots: AvailabilitySlotRow[];
35
+ constrainedSlotsCount?: number;
35
36
  openSlotsCount?: number;
37
+ activeRulesCount?: number;
38
+ activePickupPointsCount?: number;
36
39
  filteredRules: AvailabilityRuleRow[];
37
40
  filteredPickupPoints: AvailabilityPickupPointRow[];
38
41
  productsWithoutUpcomingDepartures: ProductOption[];
42
+ productsWithoutUpcomingDeparturesCount?: number;
39
43
  search: string;
40
44
  setSearch: (value: string) => void;
41
45
  productFilter: string;
@@ -1 +1 @@
1
- {"version":3,"file":"availability-overview.d.ts","sourceRoot":"","sources":["../../src/components/availability-overview.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACd,MAAM,8BAA8B,CAAA;AA6BrC,OAAO,EAAE,KAAK,2BAA2B,EAAsB,MAAM,2BAA2B,CAAA;AAShG,MAAM,WAAW,4BAA6B,SAAQ,2BAA2B;IAC/E,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE;QACR,cAAc,EAAE,MAAM,CAAA;QACtB,oBAAoB,EAAE,MAAM,CAAA;QAC5B,qBAAqB,EAAE,MAAM,CAAA;QAC7B,2BAA2B,EAAE,MAAM,CAAA;QACnC,gBAAgB,EAAE,MAAM,CAAA;QACxB,sBAAsB,EAAE,MAAM,CAAA;QAC9B,iBAAiB,EAAE,MAAM,CAAA;QACzB,uBAAuB,EAAE,MAAM,CAAA;QAC/B,sBAAsB,EAAE,MAAM,CAAA;QAC9B,sBAAsB,EAAE,MAAM,CAAA;QAC9B,iBAAiB,EAAE,MAAM,CAAA;QACzB,iBAAiB,EAAE,MAAM,CAAA;QACzB,sBAAsB,EAAE,MAAM,CAAA;QAC9B,mBAAmB,EAAE,MAAM,CAAA;QAC3B,kBAAkB,EAAE,MAAM,CAAA;QAC1B,iBAAiB,EAAE,MAAM,CAAA;QACzB,cAAc,EAAE,MAAM,CAAA;QACtB,cAAc,EAAE,MAAM,CAAA;QACtB,mBAAmB,EAAE,MAAM,CAAA;QAC3B,cAAc,EAAE,MAAM,CAAA;QACtB,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;CACF;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,cAAc,EAAE,sBAAsB,EACtC,aAAa,EACb,oBAAoB,EACpB,iCAAiC,EACjC,MAAM,EACN,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAkB,GACnB,EAAE;IACD,QAAQ,EAAE,4BAA4B,CAAA;IACtC,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,gBAAgB,EAAE,mBAAmB,EAAE,CAAA;IACvC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,mBAAmB,EAAE,CAAA;IACpC,oBAAoB,EAAE,0BAA0B,EAAE,CAAA;IAClD,iCAAiC,EAAE,aAAa,EAAE,CAAA;IAClD,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,2CAuKA"}
1
+ {"version":3,"file":"availability-overview.d.ts","sourceRoot":"","sources":["../../src/components/availability-overview.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACd,MAAM,8BAA8B,CAAA;AA6BrC,OAAO,EAAE,KAAK,2BAA2B,EAAsB,MAAM,2BAA2B,CAAA;AAShG,MAAM,WAAW,4BAA6B,SAAQ,2BAA2B;IAC/E,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE;QACR,cAAc,EAAE,MAAM,CAAA;QACtB,oBAAoB,EAAE,MAAM,CAAA;QAC5B,qBAAqB,EAAE,MAAM,CAAA;QAC7B,2BAA2B,EAAE,MAAM,CAAA;QACnC,gBAAgB,EAAE,MAAM,CAAA;QACxB,sBAAsB,EAAE,MAAM,CAAA;QAC9B,iBAAiB,EAAE,MAAM,CAAA;QACzB,uBAAuB,EAAE,MAAM,CAAA;QAC/B,sBAAsB,EAAE,MAAM,CAAA;QAC9B,sBAAsB,EAAE,MAAM,CAAA;QAC9B,iBAAiB,EAAE,MAAM,CAAA;QACzB,iBAAiB,EAAE,MAAM,CAAA;QACzB,sBAAsB,EAAE,MAAM,CAAA;QAC9B,mBAAmB,EAAE,MAAM,CAAA;QAC3B,kBAAkB,EAAE,MAAM,CAAA;QAC1B,iBAAiB,EAAE,MAAM,CAAA;QACzB,cAAc,EAAE,MAAM,CAAA;QACtB,cAAc,EAAE,MAAM,CAAA;QACtB,mBAAmB,EAAE,MAAM,CAAA;QAC3B,cAAc,EAAE,MAAM,CAAA;QACtB,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;CACF;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,qBAAqB,EAAE,6BAA6B,EACpD,cAAc,EAAE,sBAAsB,EACtC,gBAAgB,EAAE,wBAAwB,EAC1C,uBAAuB,EAAE,+BAA+B,EACxD,aAAa,EACb,oBAAoB,EACpB,iCAAiC,EACjC,sCAAsC,EAAE,8CAA8C,EACtF,MAAM,EACN,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAkB,GACnB,EAAE;IACD,QAAQ,EAAE,4BAA4B,CAAA;IACtC,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,gBAAgB,EAAE,mBAAmB,EAAE,CAAA;IACvC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,aAAa,EAAE,mBAAmB,EAAE,CAAA;IACpC,oBAAoB,EAAE,0BAA0B,EAAE,CAAA;IAClD,iCAAiC,EAAE,aAAa,EAAE,CAAA;IAClD,sCAAsC,CAAC,EAAE,MAAM,CAAA;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,2CA0KA"}
@@ -11,23 +11,25 @@ function interpolate(template, values) {
11
11
  return value === undefined ? "" : String(value);
12
12
  });
13
13
  }
14
- export function AvailabilityOverview({ messages, products, constrainedSlots, openSlotsCount: providedOpenSlotsCount, filteredRules, filteredPickupPoints, productsWithoutUpcomingDepartures, search, setSearch, productFilter, setProductFilter, hasFilters, onClearFilters, onOpenSlot, onOpenProduct, onJumpToSlots, showFilters = true, }) {
14
+ export function AvailabilityOverview({ messages, products, constrainedSlots, constrainedSlotsCount: providedConstrainedSlotsCount, openSlotsCount: providedOpenSlotsCount, activeRulesCount: providedActiveRulesCount, activePickupPointsCount: providedActivePickupPointsCount, filteredRules, filteredPickupPoints, productsWithoutUpcomingDepartures, productsWithoutUpcomingDeparturesCount: providedProductsWithoutUpcomingDeparturesCount, search, setSearch, productFilter, setProductFilter, hasFilters, onClearFilters, onOpenSlot, onOpenProduct, onJumpToSlots, showFilters = true, }) {
15
15
  useAvailabilityUiMessagesOrDefault();
16
16
  const openSlotsCount = providedOpenSlotsCount ?? constrainedSlots.filter((slot) => slot.status === "open").length;
17
- const activeRulesCount = filteredRules.filter((rule) => rule.active).length;
18
- const activePickupPointsCount = filteredPickupPoints.filter((pickupPoint) => pickupPoint.active).length;
19
- const noDeparturesCount = productsWithoutUpcomingDepartures.length;
17
+ const constrainedSlotsCount = providedConstrainedSlotsCount ?? constrainedSlots.length;
18
+ const activeRulesCount = providedActiveRulesCount ?? filteredRules.filter((rule) => rule.active).length;
19
+ const activePickupPointsCount = providedActivePickupPointsCount ??
20
+ filteredPickupPoints.filter((pickupPoint) => pickupPoint.active).length;
21
+ const noDeparturesCount = providedProductsWithoutUpcomingDeparturesCount ?? productsWithoutUpcomingDepartures.length;
20
22
  const hasNoDeparturesProducts = noDeparturesCount > 0;
21
- const hasConstrainedSlots = constrainedSlots.length > 0;
23
+ const hasConstrainedSlots = constrainedSlotsCount > 0;
22
24
  const hasAttention = hasNoDeparturesProducts || hasConstrainedSlots;
23
- return (_jsxs(_Fragment, { children: [hasNoDeparturesProducts ? (_jsxs("div", { className: "flex flex-col gap-3 rounded-lg border border-amber-300 bg-amber-50 p-4 text-amber-900 sm:flex-row sm:items-center sm:justify-between dark:border-amber-700 dark:bg-amber-950/40 dark:text-amber-100", children: [_jsxs("div", { className: "flex items-start gap-3", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-5 w-5 shrink-0" }), _jsxs("div", { className: "space-y-1", children: [_jsx("div", { className: "font-medium", children: messages.overview.actionRequiredTitle }), _jsx("p", { className: "text-sm text-amber-900/80 dark:text-amber-100/80", children: interpolate(messages.overview.actionRequiredBody, { count: noDeparturesCount }) })] })] }), onJumpToSlots ? (_jsx(Button, { size: "sm", className: "self-start sm:self-auto", onClick: onJumpToSlots, children: messages.overview.actionRequiredCta })) : null] })) : null, _jsxs("div", { className: "grid gap-3 grid-cols-2 xl:grid-cols-4", children: [_jsx(OverviewMetric, { title: messages.overview.openSlotsTitle, value: openSlotsCount, description: messages.overview.openSlotsDescription, icon: CalendarDays }), _jsx(OverviewMetric, { title: messages.overview.constrainedSlotsTitle, value: constrainedSlots.length, description: messages.overview.constrainedSlotsDescription, icon: Clock3 }), _jsx(OverviewMetric, { title: messages.overview.activeRulesTitle, value: activeRulesCount, description: messages.overview.activeRulesDescription, icon: Package }), _jsx(OverviewMetric, { title: messages.overview.pickupPointsTitle, value: activePickupPointsCount, description: messages.overview.pickupPointsDescription, icon: Truck })] }), _jsxs(Card, { size: "sm", children: [_jsxs(CardHeader, { className: "flex flex-row items-center justify-between gap-3", children: [_jsxs(CardTitle, { className: "flex items-center gap-2 text-sm", children: [messages.overview.attentionTitle, hasAttention ? (_jsx(Badge, { variant: "secondary", className: "tabular-nums", children: noDeparturesCount + constrainedSlots.length })) : null] }), !hasAttention ? (_jsxs("span", { className: "flex items-center gap-1.5 text-xs text-emerald-600 dark:text-emerald-400", children: [_jsx(CheckCircle2, { className: "h-4 w-4" }), messages.overview.attentionEmpty.split(".")[0]] })) : null] }), _jsx(CardContent, { className: "grid gap-3 lg:grid-cols-2", children: hasAttention ? (_jsxs(_Fragment, { children: [_jsx(AttentionColumn, { title: messages.overview.coverageGapsTitle, count: noDeparturesCount, items: productsWithoutUpcomingDepartures.slice(0, 4).map((product) => ({
25
+ return (_jsxs(_Fragment, { children: [hasNoDeparturesProducts ? (_jsxs("div", { className: "flex flex-col gap-3 rounded-lg border border-amber-300 bg-amber-50 p-4 text-amber-900 sm:flex-row sm:items-center sm:justify-between dark:border-amber-700 dark:bg-amber-950/40 dark:text-amber-100", children: [_jsxs("div", { className: "flex items-start gap-3", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-5 w-5 shrink-0" }), _jsxs("div", { className: "space-y-1", children: [_jsx("div", { className: "font-medium", children: messages.overview.actionRequiredTitle }), _jsx("p", { className: "text-sm text-amber-900/80 dark:text-amber-100/80", children: interpolate(messages.overview.actionRequiredBody, { count: noDeparturesCount }) })] })] }), onJumpToSlots ? (_jsx(Button, { size: "sm", className: "self-start sm:self-auto", onClick: onJumpToSlots, children: messages.overview.actionRequiredCta })) : null] })) : null, _jsxs("div", { className: "grid gap-3 grid-cols-2 xl:grid-cols-4", children: [_jsx(OverviewMetric, { title: messages.overview.openSlotsTitle, value: openSlotsCount, description: messages.overview.openSlotsDescription, icon: CalendarDays }), _jsx(OverviewMetric, { title: messages.overview.constrainedSlotsTitle, value: constrainedSlotsCount, description: messages.overview.constrainedSlotsDescription, icon: Clock3 }), _jsx(OverviewMetric, { title: messages.overview.activeRulesTitle, value: activeRulesCount, description: messages.overview.activeRulesDescription, icon: Package }), _jsx(OverviewMetric, { title: messages.overview.pickupPointsTitle, value: activePickupPointsCount, description: messages.overview.pickupPointsDescription, icon: Truck })] }), _jsxs(Card, { size: "sm", children: [_jsxs(CardHeader, { className: "flex flex-row items-center justify-between gap-3", children: [_jsxs(CardTitle, { className: "flex items-center gap-2 text-sm", children: [messages.overview.attentionTitle, hasAttention ? (_jsx(Badge, { variant: "secondary", className: "tabular-nums", children: noDeparturesCount + constrainedSlotsCount })) : null] }), !hasAttention ? (_jsxs("span", { className: "flex items-center gap-1.5 text-xs text-emerald-600 dark:text-emerald-400", children: [_jsx(CheckCircle2, { className: "h-4 w-4" }), messages.overview.attentionEmpty.split(".")[0]] })) : null] }), _jsx(CardContent, { className: "grid gap-3 lg:grid-cols-2", children: hasAttention ? (_jsxs(_Fragment, { children: [_jsx(AttentionColumn, { title: messages.overview.coverageGapsTitle, count: noDeparturesCount, items: productsWithoutUpcomingDepartures.slice(0, 4).map((product) => ({
24
26
  id: product.id,
25
27
  primary: product.name,
26
28
  secondary: messages.overview.coverageGapDescription,
27
29
  severityLabel: messages.overview.severityCoverageGap,
28
30
  severityTone: "destructive",
29
31
  onClick: () => onOpenProduct(product.id),
30
- })), emptyMessage: messages.overview.coverageGapsEmpty }), _jsx(AttentionColumn, { title: messages.overview.capacityWatchlistTitle, count: constrainedSlots.length, items: constrainedSlots.slice(0, 4).map((slot) => ({
32
+ })), emptyMessage: messages.overview.coverageGapsEmpty }), _jsx(AttentionColumn, { title: messages.overview.capacityWatchlistTitle, count: constrainedSlotsCount, items: constrainedSlots.slice(0, 4).map((slot) => ({
31
33
  id: slot.id,
32
34
  primary: `${productNameById(products, slot.productId, slot.productName)} · ${slot.dateLocal}`,
33
35
  secondary: `${formatDateTime(slot.startsAt)} · ${messages.remainingPaxLabel}: ${slot.remainingPax ?? messages.details.noValue}`,
@@ -1 +1 @@
1
- {"version":3,"file":"availability-page.d.ts","sourceRoot":"","sources":["../../src/components/availability-page.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"availability-page.d.ts","sourceRoot":"","sources":["../../src/components/availability-page.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useQueryClient } from "@tanstack/react-query";
4
- import { availabilityQueryKeys, useAvailabilityRuleMutation, useAvailabilitySlotMutation, useAvailabilityStartTimeMutation, useCloseouts, usePickupPoints, useProducts, useRules, useSlots, useStartTimes, } from "@voyantjs/availability-react";
4
+ import { availabilityQueryKeys, useAvailabilityOverview, useAvailabilityRuleMutation, useAvailabilitySlotMutation, useAvailabilityStartTimeMutation, useCloseouts, usePickupPoints, useProducts, useRules, useSlots, useStartTimes, } from "@voyantjs/availability-react";
5
5
  import { Button, cn, Label } from "@voyantjs/ui/components";
6
6
  import { AsyncCombobox } from "@voyantjs/ui/components/async-combobox";
7
7
  import { CalendarProvider, CalendarView, } from "@voyantjs/ui/components/big-calendar";
@@ -51,6 +51,10 @@ export function AvailabilityPage({ className, defaultTab = "slots", bulkActionTa
51
51
  const [editingCloseout, setEditingCloseout] = useState();
52
52
  const [editingPickupPoint, setEditingPickupPoint] = useState();
53
53
  const productsQuery = useProducts({ search: productSearch || undefined, limit: 25, offset: 0 });
54
+ const overviewQuery = useAvailabilityOverview({
55
+ productId: productFilter === "all" ? undefined : productFilter,
56
+ attentionLimit: 4,
57
+ });
54
58
  const rulesQuery = useRules({ limit: 25, offset: 0 });
55
59
  const startTimesQuery = useStartTimes({ limit: 25, offset: 0 });
56
60
  const slotsQuery = useSlots({ limit: 25, offset: 0 });
@@ -62,6 +66,7 @@ export function AvailabilityPage({ className, defaultTab = "slots", bulkActionTa
62
66
  const availabilitySlots = slotsQuery.data?.data ?? [];
63
67
  const closeouts = closeoutsQuery.data?.data ?? [];
64
68
  const pickupPoints = pickupPointsQuery.data?.data ?? [];
69
+ const overview = overviewQuery.data?.data;
65
70
  const matchesProduct = (productId) => productFilter === "all" || productId === productFilter;
66
71
  const matchesActive = (active, filter) => filter === "all" || (filter === "active" ? active : !active);
67
72
  const matchesDateRange = (date, range) => (!range?.from || date >= range.from) && (!range?.to || date <= range.to); // i18n-literal-ok comparison expression
@@ -98,7 +103,7 @@ export function AvailabilityPage({ className, defaultTab = "slots", bulkActionTa
98
103
  color: slotStatusToColor[slot.status],
99
104
  };
100
105
  });
101
- const queries = [
106
+ const primaryQueries = [
102
107
  productsQuery,
103
108
  rulesQuery,
104
109
  startTimesQuery,
@@ -106,8 +111,8 @@ export function AvailabilityPage({ className, defaultTab = "slots", bulkActionTa
106
111
  closeoutsQuery,
107
112
  pickupPointsQuery,
108
113
  ];
109
- const isLoading = queries.some((query) => query.isPending);
110
- const isError = queries.some((query) => query.isError);
114
+ const isLoading = primaryQueries.some((query) => query.isPending);
115
+ const isError = primaryQueries.some((query) => query.isError);
111
116
  const refreshAll = async () => {
112
117
  await queryClient.invalidateQueries({ queryKey: availabilityQueryKeys.all });
113
118
  };
@@ -164,7 +169,7 @@ export function AvailabilityPage({ className, defaultTab = "slots", bulkActionTa
164
169
  setPickupPointDialogOpen(false);
165
170
  setEditingPickupPoint(undefined);
166
171
  };
167
- return (_jsxs("div", { className: cn("flex flex-col gap-6 p-6", className), children: [_jsxs("div", { className: "flex flex-col gap-3 md:flex-row md:items-start md:justify-between", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-bold tracking-tight", children: messages.title }), _jsx("p", { className: "text-sm text-muted-foreground", children: messages.description })] }), _jsxs("div", { className: "flex w-full flex-col gap-3 md:w-72", children: [_jsx(AsyncCombobox, { value: productFilter === "all" ? null : productFilter, onChange: (value) => setProductFilter(value ?? "all"), items: products, selectedItem: selectedProduct, getKey: (product) => product.id, getLabel: (product) => product.name, onSearchChange: setProductSearch, placeholder: messages.allProducts, emptyText: productsQuery.isFetching ? page.loading : page.filters.productSearchEmpty, triggerClassName: "w-full" }), pageSlots?.headerEnd] })] }), isLoading ? (_jsx(AvailabilityBodySkeleton, {})) : isError ? (_jsx("div", { className: "rounded-md border p-6 text-sm text-muted-foreground", children: page.loadFailed })) : (_jsxs(_Fragment, { children: [pageSlots?.beforeOverview, _jsx(AvailabilityOverview, { messages: messages, products: products, constrainedSlots: constrainedSlots, openSlotsCount: filteredSlots.filter((slot) => slot.status === "open").length, filteredRules: filteredRules, filteredPickupPoints: filteredPickupPoints, productsWithoutUpcomingDepartures: productsWithoutUpcomingDepartures, search: "", setSearch: () => { }, productFilter: productFilter, setProductFilter: setProductFilter, hasFilters: hasFilters, onClearFilters: () => setProductFilter("all"), onOpenSlot: onSlotOpen, onOpenProduct: onProductOpen, onJumpToSlots: () => setActiveTab("slots"), showFilters: false }), pageSlots?.afterOverview, pageSlots?.beforeTabs, _jsxs(Tabs, { value: activeTab, onValueChange: (value) => setActiveTab((value ?? "slots")), children: [_jsxs(TabsList, { className: "flex w-full justify-start overflow-x-auto", children: [_jsx(TabsTrigger, { value: "slots", children: messages.tabSlots }), _jsx(TabsTrigger, { value: "rules", children: messages.tabRules }), _jsx(TabsTrigger, { value: "start-times", children: messages.tabStartTimes }), _jsx(TabsTrigger, { value: "closeouts", children: messages.tabCloseouts }), _jsx(TabsTrigger, { value: "pickup-points", children: messages.tabPickupPoints }), _jsx(TabsTrigger, { value: "calendar", children: page.calendarTab })] }), _jsx(AvailabilitySlotsTab, { messages: messages, products: products, filteredSlots: filteredSlots, slotSelection: slotSelection, setSlotSelection: setSlotSelection, bulkActionTarget: bulkActionTarget, handleBulkUpdate: onBulkUpdate, handleBulkDelete: onBulkDelete, onCreate: () => {
172
+ return (_jsxs("div", { className: cn("flex flex-col gap-6 p-6", className), children: [_jsxs("div", { className: "flex flex-col gap-3 md:flex-row md:items-start md:justify-between", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-bold tracking-tight", children: messages.title }), _jsx("p", { className: "text-sm text-muted-foreground", children: messages.description })] }), _jsxs("div", { className: "flex w-full flex-col gap-3 md:w-72", children: [_jsx(AsyncCombobox, { value: productFilter === "all" ? null : productFilter, onChange: (value) => setProductFilter(value ?? "all"), items: products, selectedItem: selectedProduct, getKey: (product) => product.id, getLabel: (product) => product.name, onSearchChange: setProductSearch, placeholder: messages.allProducts, emptyText: productsQuery.isFetching ? page.loading : page.filters.productSearchEmpty, triggerClassName: "w-full" }), pageSlots?.headerEnd] })] }), isLoading ? (_jsx(AvailabilityBodySkeleton, {})) : isError ? (_jsx("div", { className: "rounded-md border p-6 text-sm text-muted-foreground", children: page.loadFailed })) : (_jsxs(_Fragment, { children: [pageSlots?.beforeOverview, _jsx(AvailabilityOverview, { messages: messages, products: products, constrainedSlots: overview?.constrainedSlots ?? constrainedSlots, constrainedSlotsCount: overview?.constrainedSlotsCount, openSlotsCount: overview?.openSlotsCount, activeRulesCount: overview?.activeRulesCount, activePickupPointsCount: overview?.activePickupPointsCount, filteredRules: filteredRules, filteredPickupPoints: filteredPickupPoints, productsWithoutUpcomingDepartures: overview?.productsWithoutUpcomingDepartures ?? productsWithoutUpcomingDepartures, productsWithoutUpcomingDeparturesCount: overview?.productsWithoutUpcomingDeparturesCount, search: "", setSearch: () => { }, productFilter: productFilter, setProductFilter: setProductFilter, hasFilters: hasFilters, onClearFilters: () => setProductFilter("all"), onOpenSlot: onSlotOpen, onOpenProduct: onProductOpen, onJumpToSlots: () => setActiveTab("slots"), showFilters: false }), pageSlots?.afterOverview, pageSlots?.beforeTabs, _jsxs(Tabs, { value: activeTab, onValueChange: (value) => setActiveTab((value ?? "slots")), children: [_jsxs(TabsList, { className: "flex w-full justify-start overflow-x-auto", children: [_jsx(TabsTrigger, { value: "slots", children: messages.tabSlots }), _jsx(TabsTrigger, { value: "rules", children: messages.tabRules }), _jsx(TabsTrigger, { value: "start-times", children: messages.tabStartTimes }), _jsx(TabsTrigger, { value: "closeouts", children: messages.tabCloseouts }), _jsx(TabsTrigger, { value: "pickup-points", children: messages.tabPickupPoints }), _jsx(TabsTrigger, { value: "calendar", children: page.calendarTab })] }), _jsx(AvailabilitySlotsTab, { messages: messages, products: products, filteredSlots: filteredSlots, slotSelection: slotSelection, setSlotSelection: setSlotSelection, bulkActionTarget: bulkActionTarget, handleBulkUpdate: onBulkUpdate, handleBulkDelete: onBulkDelete, onCreate: () => {
168
173
  setEditingSlot(undefined);
169
174
  setSlotDialogOpen(true);
170
175
  }, onOpenRoute: onSlotOpen, onEdit: (row) => {
@@ -66,6 +66,10 @@ export declare const availabilityUiEn: {
66
66
  tabStartTimes: string;
67
67
  tabCloseouts: string;
68
68
  tabPickupPoints: string;
69
+ tabCalendar: string;
70
+ slotFallbackTitle: string;
71
+ productsComboboxSearching: string;
72
+ productsComboboxEmpty: string;
69
73
  statusActive: string;
70
74
  statusInactive: string;
71
75
  statusOpen: string;
@@ -132,6 +136,14 @@ export declare const availabilityUiEn: {
132
136
  bulkDeleted: string;
133
137
  bulkDeletedPartial: string;
134
138
  };
139
+ toolbar: {
140
+ statusAll: string;
141
+ stateLabel: string;
142
+ stateAll: string;
143
+ dateRangeLabel: string;
144
+ dateRangePlaceholder: string;
145
+ reset: string;
146
+ };
135
147
  tabs: {
136
148
  slots: {
137
149
  title: string;
@@ -268,6 +280,39 @@ export declare const availabilityUiEn: {
268
280
  relatedCloseoutsTitle: string;
269
281
  relatedCloseoutsEmpty: string;
270
282
  createdByLabel: string;
283
+ bookingPreviewTitle: string;
284
+ bookingPreviewDescription: string;
285
+ };
286
+ resourceTemplates: {
287
+ title: string;
288
+ description: string;
289
+ addButton: string;
290
+ editTitle: string;
291
+ newTitle: string;
292
+ loadFailed: string;
293
+ emptyMessage: string;
294
+ capacitySummary: string;
295
+ deleteConfirm: string;
296
+ deleteFailed: string;
297
+ saveFailed: string;
298
+ validation: string;
299
+ kindLabel: string;
300
+ kindPlaceholder: string;
301
+ kindCustomOption: string;
302
+ kindCustomInputPlaceholder: string;
303
+ capacityLabel: string;
304
+ namePatternLabel: string;
305
+ namePatternPlaceholder: string;
306
+ namePatternHint: string;
307
+ cancel: string;
308
+ save: string;
309
+ createButton: string;
310
+ kinds: {
311
+ room: string;
312
+ vehicle_seat: string;
313
+ cabin: string;
314
+ flight_seat: string;
315
+ };
271
316
  };
272
317
  startTime: {
273
318
  notFound: string;
@@ -456,6 +501,10 @@ export declare const availabilityUiRo: {
456
501
  tabStartTimes: string;
457
502
  tabCloseouts: string;
458
503
  tabPickupPoints: string;
504
+ tabCalendar: string;
505
+ slotFallbackTitle: string;
506
+ productsComboboxSearching: string;
507
+ productsComboboxEmpty: string;
459
508
  statusActive: string;
460
509
  statusInactive: string;
461
510
  statusOpen: string;
@@ -522,6 +571,14 @@ export declare const availabilityUiRo: {
522
571
  bulkDeleted: string;
523
572
  bulkDeletedPartial: string;
524
573
  };
574
+ toolbar: {
575
+ statusAll: string;
576
+ stateLabel: string;
577
+ stateAll: string;
578
+ dateRangeLabel: string;
579
+ dateRangePlaceholder: string;
580
+ reset: string;
581
+ };
525
582
  tabs: {
526
583
  slots: {
527
584
  title: string;
@@ -658,6 +715,39 @@ export declare const availabilityUiRo: {
658
715
  relatedCloseoutsTitle: string;
659
716
  relatedCloseoutsEmpty: string;
660
717
  createdByLabel: string;
718
+ bookingPreviewTitle: string;
719
+ bookingPreviewDescription: string;
720
+ };
721
+ resourceTemplates: {
722
+ title: string;
723
+ description: string;
724
+ addButton: string;
725
+ editTitle: string;
726
+ newTitle: string;
727
+ loadFailed: string;
728
+ emptyMessage: string;
729
+ capacitySummary: string;
730
+ deleteConfirm: string;
731
+ deleteFailed: string;
732
+ saveFailed: string;
733
+ validation: string;
734
+ kindLabel: string;
735
+ kindPlaceholder: string;
736
+ kindCustomOption: string;
737
+ kindCustomInputPlaceholder: string;
738
+ capacityLabel: string;
739
+ namePatternLabel: string;
740
+ namePatternPlaceholder: string;
741
+ namePatternHint: string;
742
+ cancel: string;
743
+ save: string;
744
+ createButton: string;
745
+ kinds: {
746
+ room: string;
747
+ vehicle_seat: string;
748
+ cabin: string;
749
+ flight_seat: string;
750
+ };
661
751
  };
662
752
  startTime: {
663
753
  notFound: string;
@@ -847,6 +937,10 @@ export declare const availabilityUiMessageDefinitions: {
847
937
  tabStartTimes: string;
848
938
  tabCloseouts: string;
849
939
  tabPickupPoints: string;
940
+ tabCalendar: string;
941
+ slotFallbackTitle: string;
942
+ productsComboboxSearching: string;
943
+ productsComboboxEmpty: string;
850
944
  statusActive: string;
851
945
  statusInactive: string;
852
946
  statusOpen: string;
@@ -913,6 +1007,14 @@ export declare const availabilityUiMessageDefinitions: {
913
1007
  bulkDeleted: string;
914
1008
  bulkDeletedPartial: string;
915
1009
  };
1010
+ toolbar: {
1011
+ statusAll: string;
1012
+ stateLabel: string;
1013
+ stateAll: string;
1014
+ dateRangeLabel: string;
1015
+ dateRangePlaceholder: string;
1016
+ reset: string;
1017
+ };
916
1018
  tabs: {
917
1019
  slots: {
918
1020
  title: string;
@@ -1049,6 +1151,39 @@ export declare const availabilityUiMessageDefinitions: {
1049
1151
  relatedCloseoutsTitle: string;
1050
1152
  relatedCloseoutsEmpty: string;
1051
1153
  createdByLabel: string;
1154
+ bookingPreviewTitle: string;
1155
+ bookingPreviewDescription: string;
1156
+ };
1157
+ resourceTemplates: {
1158
+ title: string;
1159
+ description: string;
1160
+ addButton: string;
1161
+ editTitle: string;
1162
+ newTitle: string;
1163
+ loadFailed: string;
1164
+ emptyMessage: string;
1165
+ capacitySummary: string;
1166
+ deleteConfirm: string;
1167
+ deleteFailed: string;
1168
+ saveFailed: string;
1169
+ validation: string;
1170
+ kindLabel: string;
1171
+ kindPlaceholder: string;
1172
+ kindCustomOption: string;
1173
+ kindCustomInputPlaceholder: string;
1174
+ capacityLabel: string;
1175
+ namePatternLabel: string;
1176
+ namePatternPlaceholder: string;
1177
+ namePatternHint: string;
1178
+ cancel: string;
1179
+ save: string;
1180
+ createButton: string;
1181
+ kinds: {
1182
+ room: string;
1183
+ vehicle_seat: string;
1184
+ cabin: string;
1185
+ flight_seat: string;
1186
+ };
1052
1187
  };
1053
1188
  startTime: {
1054
1189
  notFound: string;
@@ -1237,6 +1372,10 @@ export declare const availabilityUiMessageDefinitions: {
1237
1372
  tabStartTimes: string;
1238
1373
  tabCloseouts: string;
1239
1374
  tabPickupPoints: string;
1375
+ tabCalendar: string;
1376
+ slotFallbackTitle: string;
1377
+ productsComboboxSearching: string;
1378
+ productsComboboxEmpty: string;
1240
1379
  statusActive: string;
1241
1380
  statusInactive: string;
1242
1381
  statusOpen: string;
@@ -1303,6 +1442,14 @@ export declare const availabilityUiMessageDefinitions: {
1303
1442
  bulkDeleted: string;
1304
1443
  bulkDeletedPartial: string;
1305
1444
  };
1445
+ toolbar: {
1446
+ statusAll: string;
1447
+ stateLabel: string;
1448
+ stateAll: string;
1449
+ dateRangeLabel: string;
1450
+ dateRangePlaceholder: string;
1451
+ reset: string;
1452
+ };
1306
1453
  tabs: {
1307
1454
  slots: {
1308
1455
  title: string;
@@ -1439,6 +1586,39 @@ export declare const availabilityUiMessageDefinitions: {
1439
1586
  relatedCloseoutsTitle: string;
1440
1587
  relatedCloseoutsEmpty: string;
1441
1588
  createdByLabel: string;
1589
+ bookingPreviewTitle: string;
1590
+ bookingPreviewDescription: string;
1591
+ };
1592
+ resourceTemplates: {
1593
+ title: string;
1594
+ description: string;
1595
+ addButton: string;
1596
+ editTitle: string;
1597
+ newTitle: string;
1598
+ loadFailed: string;
1599
+ emptyMessage: string;
1600
+ capacitySummary: string;
1601
+ deleteConfirm: string;
1602
+ deleteFailed: string;
1603
+ saveFailed: string;
1604
+ validation: string;
1605
+ kindLabel: string;
1606
+ kindPlaceholder: string;
1607
+ kindCustomOption: string;
1608
+ kindCustomInputPlaceholder: string;
1609
+ capacityLabel: string;
1610
+ namePatternLabel: string;
1611
+ namePatternPlaceholder: string;
1612
+ namePatternHint: string;
1613
+ cancel: string;
1614
+ save: string;
1615
+ createButton: string;
1616
+ kinds: {
1617
+ room: string;
1618
+ vehicle_seat: string;
1619
+ cabin: string;
1620
+ flight_seat: string;
1621
+ };
1442
1622
  };
1443
1623
  startTime: {
1444
1624
  notFound: string;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/i18n/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EAIzB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAA;AACvB,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/i18n/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EAIzB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAA;AACvB,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": "@voyantjs/availability-ui",
3
- "version": "0.64.1",
3
+ "version": "0.66.6",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -42,8 +42,8 @@
42
42
  "react-dom": "^19.0.0",
43
43
  "react-hook-form": "^7.72.1",
44
44
  "zod": "^4.3.6",
45
- "@voyantjs/availability-react": "0.64.1",
46
- "@voyantjs/ui": "0.64.1"
45
+ "@voyantjs/availability-react": "0.66.6",
46
+ "@voyantjs/ui": "0.66.6"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@tanstack/react-query": "^5.100.11",
@@ -57,13 +57,13 @@
57
57
  "typescript": "^6.0.2",
58
58
  "vitest": "^4.1.2",
59
59
  "zod": "^4.3.6",
60
- "@voyantjs/availability-react": "0.64.1",
61
- "@voyantjs/i18n": "0.64.1",
62
- "@voyantjs/ui": "0.64.1",
63
- "@voyantjs/voyant-typescript-config": "0.1.0"
60
+ "@voyantjs/availability-react": "0.66.6",
61
+ "@voyantjs/ui": "0.66.6",
62
+ "@voyantjs/voyant-typescript-config": "0.1.0",
63
+ "@voyantjs/i18n": "0.66.6"
64
64
  },
65
65
  "dependencies": {
66
- "@voyantjs/i18n": "0.64.1"
66
+ "@voyantjs/i18n": "0.66.6"
67
67
  },
68
68
  "files": [
69
69
  "dist",