@voyantjs/products-ui 0.22.0 → 0.24.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.
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ import type { ProductMediaUploadHandler } from "./product-media-section";
3
+ export interface ProductDayMediaTrayProps {
4
+ productId: string;
5
+ dayId: string;
6
+ uploadMedia?: ProductMediaUploadHandler;
7
+ uploadAccept?: string;
8
+ emptyState?: React.ReactNode;
9
+ }
10
+ export declare function ProductDayMediaTray({ productId, dayId, uploadMedia, uploadAccept, emptyState, }: ProductDayMediaTrayProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=product-day-media-tray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-day-media-tray.d.ts","sourceRoot":"","sources":["../../src/components/product-day-media-tray.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAExE,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,yBAAyB,CAAA;IACvC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAAgD,EAChD,UAAU,GACX,EAAE,wBAAwB,2CAqM1B"}
@@ -0,0 +1,74 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useProductMedia, useProductMediaMutation, } from "@voyantjs/products-react";
4
+ import { Badge } from "@voyantjs/ui/components/badge";
5
+ import { Button } from "@voyantjs/ui/components/button";
6
+ import { ImageIcon, Loader2, Pencil, Plus, Star, Trash2, Upload } from "lucide-react";
7
+ import * as React from "react";
8
+ import { useProductsUiMessagesOrDefault } from "../i18n/provider";
9
+ import { ProductMediaDialog } from "./product-media-dialog";
10
+ export function ProductDayMediaTray({ productId, dayId, uploadMedia, uploadAccept = "image/*,video/*,application/pdf", emptyState, }) {
11
+ const messages = useProductsUiMessagesOrDefault();
12
+ const [dialogOpen, setDialogOpen] = React.useState(false);
13
+ const [editingMedia, setEditingMedia] = React.useState();
14
+ const [isUploading, setIsUploading] = React.useState(false);
15
+ const [uploadError, setUploadError] = React.useState(null);
16
+ const fileInputRef = React.useRef(null);
17
+ const { data, isPending, isError } = useProductMedia(productId, { dayId, limit: 50 });
18
+ const { create, remove, setCover } = useProductMediaMutation();
19
+ const media = React.useMemo(() => (data?.data ?? [])
20
+ .slice()
21
+ .sort((left, right) => Number(right.isCover) - Number(left.isCover) || left.sortOrder - right.sortOrder), [data?.data]);
22
+ const handleUpload = async (file) => {
23
+ if (!uploadMedia)
24
+ return;
25
+ setUploadError(null);
26
+ setIsUploading(true);
27
+ try {
28
+ const uploaded = await uploadMedia(file, { productId, dayId });
29
+ const mimeType = uploaded.mimeType?.trim() || file.type || null;
30
+ const mediaType = uploaded.mediaType ??
31
+ (mimeType?.startsWith("video/")
32
+ ? "video"
33
+ : mimeType?.startsWith("image/")
34
+ ? "image"
35
+ : "document");
36
+ await create.mutateAsync({
37
+ productId,
38
+ dayId,
39
+ mediaType,
40
+ name: uploaded.name?.trim() || file.name,
41
+ url: uploaded.url,
42
+ storageKey: uploaded.storageKey ?? null,
43
+ mimeType,
44
+ fileSize: uploaded.fileSize ?? (file.size || null),
45
+ altText: uploaded.altText ?? null,
46
+ sortOrder: uploaded.sortOrder ?? media.length,
47
+ isCover: uploaded.isCover ?? media.length === 0,
48
+ });
49
+ }
50
+ catch (error) {
51
+ setUploadError(error instanceof Error ? error.message : messages.productMediaSection.uploadFailed);
52
+ }
53
+ finally {
54
+ setIsUploading(false);
55
+ }
56
+ };
57
+ return (_jsxs("div", { "data-slot": "product-day-media-tray", className: "flex flex-col gap-2", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("div", { className: "text-sm font-medium", children: messages.productMediaSection.titles.dayMedia }), _jsxs("div", { className: "flex items-center gap-1", children: [uploadMedia ? (_jsxs(_Fragment, { children: [_jsxs(Button, { type: "button", variant: "outline", size: "sm", disabled: isUploading, onClick: () => fileInputRef.current?.click(), children: [isUploading ? (_jsx(Loader2, { className: "mr-2 size-4 animate-spin", "aria-hidden": "true" })) : (_jsx(Upload, { className: "mr-2 size-4", "aria-hidden": "true" })), messages.productMediaSection.actions.upload] }), _jsx("input", { ref: fileInputRef, type: "file", accept: uploadAccept, className: "hidden", onChange: (event) => {
58
+ const file = event.target.files?.[0];
59
+ if (file) {
60
+ void handleUpload(file);
61
+ event.target.value = "";
62
+ }
63
+ } })] })) : null, _jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: () => {
64
+ setEditingMedia(undefined);
65
+ setDialogOpen(true);
66
+ }, children: [_jsx(Plus, { className: "mr-2 size-4", "aria-hidden": "true" }), messages.productMediaSection.actions.addMedia] })] })] }), uploadError ? _jsx("p", { className: "text-sm text-destructive", children: uploadError }) : null, isPending ? (_jsx("div", { className: "flex min-h-20 items-center justify-center rounded-md border border-dashed", children: _jsx(Loader2, { className: "size-4 animate-spin text-muted-foreground" }) })) : isError ? (_jsx("p", { className: "text-sm text-destructive", children: messages.productMediaSection.loadingError })) : media.length === 0 ? (_jsx("div", { className: "rounded-md border border-dashed p-3 text-sm text-muted-foreground", children: emptyState ?? messages.productMediaSection.empty })) : (_jsx("div", { className: "flex gap-2 overflow-x-auto pb-1", children: media.map((item) => (_jsxs("div", { className: "w-36 shrink-0 rounded-md border bg-background", children: [item.mediaType === "image" ? (_jsx("img", { src: item.url, alt: item.altText ?? item.name, className: "h-20 w-full rounded-t-md object-cover" })) : (_jsx("div", { className: "flex h-20 w-full items-center justify-center rounded-t-md bg-muted text-muted-foreground", children: _jsx(ImageIcon, { className: "size-5", "aria-hidden": "true" }) })), _jsxs("div", { className: "space-y-2 p-2", children: [_jsx("div", { className: "truncate text-xs font-medium", children: item.name }), _jsxs("div", { className: "flex items-center justify-between gap-1", children: [item.isCover ? (_jsx(Badge, { className: "text-[10px]", children: messages.productMediaSection.coverBadge })) : (_jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", onClick: () => setCover.mutate(item.id), "aria-label": messages.productMediaSection.actions.markCover, children: _jsx(Star, { className: "size-4", "aria-hidden": "true" }) })), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", onClick: () => {
67
+ setEditingMedia(item);
68
+ setDialogOpen(true);
69
+ }, "aria-label": messages.productMediaSection.actions.edit, children: _jsx(Pencil, { className: "size-4", "aria-hidden": "true" }) }), _jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", onClick: () => {
70
+ if (confirm(messages.productMediaSection.deleteConfirm)) {
71
+ remove.mutate(item.id);
72
+ }
73
+ }, "aria-label": messages.productMediaSection.actions.delete, children: _jsx(Trash2, { className: "size-4", "aria-hidden": "true" }) })] })] })] })] }, item.id))) })), _jsx(ProductMediaDialog, { open: dialogOpen, onOpenChange: setDialogOpen, productId: productId, dayId: dayId, media: editingMedia, onSuccess: () => setEditingMedia(undefined) })] }));
74
+ }
@@ -0,0 +1,44 @@
1
+ import { type ProductDayServiceRecord } from "@voyantjs/products-react";
2
+ import * as React from "react";
3
+ type ProductDayServiceType = ProductDayServiceRecord["serviceType"];
4
+ type Mode = {
5
+ kind: "create";
6
+ productId: string;
7
+ dayId: string;
8
+ sortOrder?: number;
9
+ } | {
10
+ kind: "edit";
11
+ productId: string;
12
+ dayId: string;
13
+ service: ProductDayServiceRecord;
14
+ };
15
+ export interface ProductDayServiceSupplierServiceOption {
16
+ id: string;
17
+ name: string;
18
+ serviceType?: ProductDayServiceType;
19
+ description?: string | null;
20
+ costCurrency?: string;
21
+ costAmountCents?: number | null;
22
+ }
23
+ export interface ProductDayServiceFormHelpers {
24
+ setName: (value: string) => void;
25
+ setServiceType: (value: ProductDayServiceType) => void;
26
+ setDescription: (value: string | null) => void;
27
+ setCostCurrency: (value: string) => void;
28
+ setCostAmountCents: (value: number | null) => void;
29
+ }
30
+ export interface ProductDayServiceSupplierServiceFieldProps {
31
+ value: string | null;
32
+ disabled: boolean;
33
+ onChange: (supplierServiceId: string | null, option?: ProductDayServiceSupplierServiceOption | null) => void;
34
+ }
35
+ export interface ProductDayServiceFormProps {
36
+ mode: Mode;
37
+ onSuccess?: (service: ProductDayServiceRecord) => void;
38
+ onCancel?: () => void;
39
+ renderSupplierServiceField?: (props: ProductDayServiceSupplierServiceFieldProps) => React.ReactNode;
40
+ onSupplierServiceSelected?: (option: ProductDayServiceSupplierServiceOption, helpers: ProductDayServiceFormHelpers) => void;
41
+ }
42
+ export declare function ProductDayServiceForm({ mode, onSuccess, onCancel, renderSupplierServiceField, onSupplierServiceSelected, }: ProductDayServiceFormProps): import("react/jsx-runtime").JSX.Element;
43
+ export {};
44
+ //# sourceMappingURL=product-day-service-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-day-service-form.d.ts","sourceRoot":"","sources":["../../src/components/product-day-service-form.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,0BAA0B,CAAA;AAajC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,KAAK,qBAAqB,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAA;AAEnE,KAAK,IAAI,GACL;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAA;CAAE,CAAA;AAExF,MAAM,WAAW,sCAAsC;IACrD,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,qBAAqB,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,cAAc,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAA;IACtD,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;CACnD;AAED,MAAM,WAAW,0CAA0C;IACzD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,CACR,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,MAAM,CAAC,EAAE,sCAAsC,GAAG,IAAI,KACnD,IAAI,CAAA;CACV;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAA;IACtD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,0BAA0B,CAAC,EAAE,CAC3B,KAAK,EAAE,0CAA0C,KAC9C,KAAK,CAAC,SAAS,CAAA;IACpB,yBAAyB,CAAC,EAAE,CAC1B,MAAM,EAAE,sCAAsC,EAC9C,OAAO,EAAE,4BAA4B,KAClC,IAAI,CAAA;CACV;AA6CD,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,0BAA0B,EAC1B,yBAAyB,GAC1B,EAAE,0BAA0B,2CA4R5B"}
@@ -0,0 +1,151 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useProductDayServiceMutation, } from "@voyantjs/products-react";
4
+ import { Button } from "@voyantjs/ui/components/button";
5
+ import { Input } from "@voyantjs/ui/components/input";
6
+ import { Label } from "@voyantjs/ui/components/label";
7
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@voyantjs/ui/components/select";
8
+ import { Textarea } from "@voyantjs/ui/components/textarea";
9
+ import { Loader2 } from "lucide-react";
10
+ import * as React from "react";
11
+ import { useProductsUiMessagesOrDefault } from "../i18n/provider";
12
+ function initialState(mode) {
13
+ if (mode.kind === "edit") {
14
+ return {
15
+ serviceType: mode.service.serviceType,
16
+ name: mode.service.name,
17
+ description: mode.service.description ?? "",
18
+ countryCode: mode.service.countryCode ?? "",
19
+ supplierServiceId: mode.service.supplierServiceId ?? "",
20
+ costCurrency: mode.service.costCurrency,
21
+ costAmount: String(mode.service.costAmountCents / 100),
22
+ quantity: String(mode.service.quantity),
23
+ sortOrder: mode.service.sortOrder == null ? "" : String(mode.service.sortOrder),
24
+ notes: mode.service.notes ?? "",
25
+ };
26
+ }
27
+ return {
28
+ serviceType: "accommodation",
29
+ name: "",
30
+ description: "",
31
+ countryCode: "",
32
+ supplierServiceId: "",
33
+ costCurrency: "EUR",
34
+ costAmount: "0",
35
+ quantity: "1",
36
+ sortOrder: mode.sortOrder == null ? "" : String(mode.sortOrder),
37
+ notes: "",
38
+ };
39
+ }
40
+ export function ProductDayServiceForm({ mode, onSuccess, onCancel, renderSupplierServiceField, onSupplierServiceSelected, }) {
41
+ const messages = useProductsUiMessagesOrDefault();
42
+ const serviceMessages = messages.productDayServiceForm;
43
+ const [state, setState] = React.useState(() => initialState(mode));
44
+ const [error, setError] = React.useState(null);
45
+ const { create, update } = useProductDayServiceMutation();
46
+ React.useEffect(() => {
47
+ setState(initialState(mode));
48
+ setError(null);
49
+ }, [mode]);
50
+ const isSubmitting = create.isPending || update.isPending;
51
+ const serviceTypes = [
52
+ { value: "accommodation", label: serviceMessages.serviceTypes.accommodation },
53
+ { value: "transfer", label: serviceMessages.serviceTypes.transfer },
54
+ { value: "experience", label: serviceMessages.serviceTypes.experience },
55
+ { value: "guide", label: serviceMessages.serviceTypes.guide },
56
+ { value: "meal", label: serviceMessages.serviceTypes.meal },
57
+ { value: "other", label: serviceMessages.serviceTypes.other },
58
+ ];
59
+ const field = (key) => (value) => {
60
+ setState((previous) => ({ ...previous, [key]: value }));
61
+ };
62
+ const helpers = {
63
+ setName: field("name"),
64
+ setServiceType: field("serviceType"),
65
+ setDescription: (value) => field("description")(value ?? ""),
66
+ setCostCurrency: field("costCurrency"),
67
+ setCostAmountCents: (value) => {
68
+ field("costAmount")(value == null ? "0" : String(value / 100));
69
+ },
70
+ };
71
+ const handleSupplierServiceChange = (supplierServiceId, option) => {
72
+ field("supplierServiceId")(supplierServiceId ?? "");
73
+ if (!option)
74
+ return;
75
+ if (onSupplierServiceSelected) {
76
+ onSupplierServiceSelected(option, helpers);
77
+ return;
78
+ }
79
+ field("name")(option.name);
80
+ if (option.serviceType)
81
+ field("serviceType")(option.serviceType);
82
+ if (option.description != null)
83
+ field("description")(option.description);
84
+ if (option.costCurrency)
85
+ field("costCurrency")(option.costCurrency);
86
+ if (option.costAmountCents != null)
87
+ field("costAmount")(String(option.costAmountCents / 100));
88
+ };
89
+ const handleSubmit = async (event) => {
90
+ event.preventDefault();
91
+ setError(null);
92
+ const costAmount = Number.parseFloat(state.costAmount || "0");
93
+ const quantity = Number.parseInt(state.quantity || "0", 10);
94
+ const sortOrder = state.sortOrder.trim() ? Number.parseInt(state.sortOrder, 10) : null;
95
+ if (!state.name.trim()) {
96
+ setError(serviceMessages.validation.nameRequired);
97
+ return;
98
+ }
99
+ if (!state.costCurrency.trim() || state.costCurrency.trim().length !== 3) {
100
+ setError(serviceMessages.validation.currencyRequired);
101
+ return;
102
+ }
103
+ if (!Number.isFinite(costAmount) || costAmount < 0) {
104
+ setError(serviceMessages.validation.costNonNegative);
105
+ return;
106
+ }
107
+ if (!Number.isFinite(quantity) || quantity < 1) {
108
+ setError(serviceMessages.validation.quantityMin);
109
+ return;
110
+ }
111
+ const payload = {
112
+ serviceType: state.serviceType,
113
+ name: state.name.trim(),
114
+ description: state.description.trim() ? state.description.trim() : null,
115
+ countryCode: state.countryCode.trim() ? state.countryCode.trim().toUpperCase() : null,
116
+ supplierServiceId: state.supplierServiceId.trim() ? state.supplierServiceId.trim() : null,
117
+ costCurrency: state.costCurrency.trim().toUpperCase(),
118
+ costAmountCents: Math.round(costAmount * 100),
119
+ quantity,
120
+ sortOrder: Number.isFinite(sortOrder) ? sortOrder : null,
121
+ notes: state.notes.trim() ? state.notes.trim() : null,
122
+ };
123
+ try {
124
+ const service = mode.kind === "create"
125
+ ? await create.mutateAsync({
126
+ productId: mode.productId,
127
+ dayId: mode.dayId,
128
+ ...payload,
129
+ })
130
+ : await update.mutateAsync({
131
+ productId: mode.productId,
132
+ dayId: mode.dayId,
133
+ serviceId: mode.service.id,
134
+ input: payload,
135
+ });
136
+ onSuccess?.(service.data);
137
+ }
138
+ catch (submissionError) {
139
+ setError(submissionError instanceof Error
140
+ ? submissionError.message
141
+ : serviceMessages.validation.saveFailed);
142
+ }
143
+ };
144
+ return (_jsxs("form", { "data-slot": "product-day-service-form", onSubmit: handleSubmit, className: "flex flex-col gap-4", children: [renderSupplierServiceField ? (renderSupplierServiceField({
145
+ value: state.supplierServiceId || null,
146
+ disabled: isSubmitting,
147
+ onChange: handleSupplierServiceChange,
148
+ })) : (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "product-day-service-supplier-service", children: serviceMessages.fields.supplierService }), _jsx(Input, { id: "product-day-service-supplier-service", value: state.supplierServiceId, onChange: (event) => handleSupplierServiceChange(event.target.value || null), placeholder: serviceMessages.placeholders.supplierService, disabled: isSubmitting })] })), _jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { children: serviceMessages.fields.serviceType }), _jsxs(Select, { value: state.serviceType, onValueChange: (value) => field("serviceType")(value), items: serviceTypes, disabled: isSubmitting, children: [_jsx(SelectTrigger, { className: "w-full", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: serviceTypes.map((type) => (_jsx(SelectItem, { value: type.value, children: type.label }, type.value))) })] })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "product-day-service-country", children: serviceMessages.fields.countryCode }), _jsx(Input, { id: "product-day-service-country", value: state.countryCode, maxLength: 2, onChange: (event) => field("countryCode")(event.target.value), placeholder: serviceMessages.placeholders.countryCode, disabled: isSubmitting })] })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "product-day-service-name", children: serviceMessages.fields.name }), _jsx(Input, { id: "product-day-service-name", value: state.name, onChange: (event) => field("name")(event.target.value), placeholder: serviceMessages.placeholders.name, required: true, disabled: isSubmitting })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "product-day-service-description", children: serviceMessages.fields.description }), _jsx(Textarea, { id: "product-day-service-description", value: state.description, onChange: (event) => field("description")(event.target.value), placeholder: serviceMessages.placeholders.description, disabled: isSubmitting })] }), _jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-4", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "product-day-service-currency", children: serviceMessages.fields.costCurrency }), _jsx(Input, { id: "product-day-service-currency", value: state.costCurrency, maxLength: 3, onChange: (event) => field("costCurrency")(event.target.value), disabled: isSubmitting })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "product-day-service-cost", children: serviceMessages.fields.costAmount }), _jsx(Input, { id: "product-day-service-cost", type: "number", min: "0", step: "0.01", value: state.costAmount, onChange: (event) => field("costAmount")(event.target.value), disabled: isSubmitting })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "product-day-service-quantity", children: serviceMessages.fields.quantity }), _jsx(Input, { id: "product-day-service-quantity", type: "number", min: "1", value: state.quantity, onChange: (event) => field("quantity")(event.target.value), disabled: isSubmitting })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "product-day-service-sort", children: serviceMessages.fields.sortOrder }), _jsx(Input, { id: "product-day-service-sort", type: "number", value: state.sortOrder, onChange: (event) => field("sortOrder")(event.target.value), disabled: isSubmitting })] })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "product-day-service-notes", children: serviceMessages.fields.notes }), _jsx(Textarea, { id: "product-day-service-notes", value: state.notes, onChange: (event) => field("notes")(event.target.value), placeholder: serviceMessages.placeholders.notes, disabled: isSubmitting })] }), error ? _jsx("p", { className: "text-sm text-destructive", children: error }) : null, _jsxs("div", { className: "flex items-center justify-end gap-2", children: [onCancel ? (_jsx(Button, { type: "button", variant: "ghost", onClick: onCancel, disabled: isSubmitting, children: messages.common.cancel })) : null, _jsxs(Button, { type: "submit", disabled: isSubmitting, children: [isSubmitting ? (_jsx(Loader2, { className: "mr-2 size-4 animate-spin", "aria-hidden": "true" })) : null, mode.kind === "create"
149
+ ? serviceMessages.actions.addService
150
+ : serviceMessages.actions.saveService] })] })] }));
151
+ }
@@ -0,0 +1,22 @@
1
+ import { type ProductDayRecord, type ProductDayServiceRecord } from "@voyantjs/products-react";
2
+ import type * as React from "react";
3
+ export interface ProductItineraryDayRowRenderContext {
4
+ productId: string;
5
+ day: ProductDayRecord;
6
+ expanded: boolean;
7
+ }
8
+ export interface ProductItineraryDayRowProps {
9
+ productId: string;
10
+ day: ProductDayRecord;
11
+ expanded: boolean;
12
+ onToggle: () => void;
13
+ onEdit?: () => void;
14
+ onDelete?: () => void;
15
+ onAddService?: () => void;
16
+ onEditService?: (service: ProductDayServiceRecord) => void;
17
+ onDeleteService?: (service: ProductDayServiceRecord) => void;
18
+ renderDayDetails?: (context: ProductItineraryDayRowRenderContext) => React.ReactNode;
19
+ renderServiceActions?: (service: ProductDayServiceRecord) => React.ReactNode;
20
+ }
21
+ export declare function ProductItineraryDayRow({ productId, day, expanded, onToggle, onEdit, onDelete, onAddService, onEditService, onDeleteService, renderDayDetails, renderServiceActions, }: ProductItineraryDayRowProps): import("react/jsx-runtime").JSX.Element;
22
+ //# sourceMappingURL=product-itinerary-day-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-itinerary-day-row.d.ts","sourceRoot":"","sources":["../../src/components/product-itinerary-day-row.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAE7B,MAAM,0BAA0B,CAAA;AAIjC,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAInC,MAAM,WAAW,mCAAmC;IAClD,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,gBAAgB,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,gBAAgB,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC1D,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC5D,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,mCAAmC,KAAK,KAAK,CAAC,SAAS,CAAA;IACpF,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,KAAK,CAAC,SAAS,CAAA;CAC7E;AASD,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,EAAE,2BAA2B,2CA+H7B"}
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useProductDayServices, } from "@voyantjs/products-react";
4
+ import { Badge } from "@voyantjs/ui/components/badge";
5
+ import { Button } from "@voyantjs/ui/components/button";
6
+ import { ChevronDown, ChevronRight, Pencil, Plus, Trash2 } from "lucide-react";
7
+ import { useProductsUiMessagesOrDefault } from "../i18n/provider";
8
+ function formatServiceType(serviceType, messages) {
9
+ return messages.serviceTypes[serviceType];
10
+ }
11
+ export function ProductItineraryDayRow({ productId, day, expanded, onToggle, onEdit, onDelete, onAddService, onEditService, onDeleteService, renderDayDetails, renderServiceActions, }) {
12
+ const messages = useProductsUiMessagesOrDefault();
13
+ const rowMessages = messages.productItineraryDayRow;
14
+ const servicesQuery = useProductDayServices(productId, day.id, { enabled: expanded });
15
+ const services = servicesQuery.data?.data ?? [];
16
+ return (_jsxs("div", { "data-slot": "product-itinerary-day-row", className: "rounded-md border bg-background", children: [_jsxs("div", { className: "flex items-center gap-3 px-4 py-3", children: [_jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", onClick: onToggle, children: expanded ? (_jsx(ChevronDown, { className: "size-4", "aria-hidden": "true" })) : (_jsx(ChevronRight, { className: "size-4", "aria-hidden": "true" })) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "truncate text-sm font-medium", children: [rowMessages.dayLabel.replace("{dayNumber}", String(day.dayNumber)), day.title ? `: ${day.title}` : ""] }), day.location ? (_jsx("div", { className: "truncate text-xs text-muted-foreground", children: day.location })) : null] }), _jsxs("div", { className: "flex items-center gap-1", children: [onAddService ? (_jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", onClick: onAddService, children: _jsx(Plus, { className: "size-4", "aria-hidden": "true" }) })) : null, onEdit ? (_jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", onClick: onEdit, children: _jsx(Pencil, { className: "size-4", "aria-hidden": "true" }) })) : null, onDelete ? (_jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", onClick: onDelete, children: _jsx(Trash2, { className: "size-4", "aria-hidden": "true" }) })) : null] })] }), expanded ? (_jsxs("div", { className: "border-t", children: [renderDayDetails ? (_jsx("div", { className: "border-b p-4", children: renderDayDetails({ productId, day, expanded }) })) : null, servicesQuery.isPending ? (_jsx("p", { className: "p-4 text-center text-sm text-muted-foreground", children: messages.common.loading })) : servicesQuery.isError ? (_jsx("p", { className: "p-4 text-center text-sm text-destructive", children: rowMessages.servicesLoadingError })) : services.length === 0 ? (_jsx("p", { className: "p-4 text-center text-sm text-muted-foreground", children: rowMessages.emptyServices })) : (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b bg-muted/30 text-muted-foreground", children: [_jsx("th", { className: "px-4 py-2 text-left font-medium", children: rowMessages.columns.name }), _jsx("th", { className: "px-3 py-2 text-left font-medium", children: rowMessages.columns.type }), _jsx("th", { className: "px-3 py-2 text-left font-medium", children: rowMessages.columns.cost }), _jsx("th", { className: "px-3 py-2 text-left font-medium", children: rowMessages.columns.quantity }), _jsx("th", { className: "w-24 px-3 py-2" })] }) }), _jsx("tbody", { children: services.map((service) => (_jsxs("tr", { className: "border-b last:border-b-0", children: [_jsx("td", { className: "px-4 py-2", children: service.name }), _jsx("td", { className: "px-3 py-2", children: _jsx(Badge, { variant: "outline", children: formatServiceType(service.serviceType, messages.productDayServiceForm) }) }), _jsxs("td", { className: "px-3 py-2 font-mono text-xs", children: [(service.costAmountCents / 100).toFixed(2), " ", service.costCurrency] }), _jsx("td", { className: "px-3 py-2", children: service.quantity }), _jsx("td", { className: "px-3 py-2", children: renderServiceActions ? (renderServiceActions(service)) : (_jsxs("div", { className: "flex items-center justify-end gap-1", children: [onEditService ? (_jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", onClick: () => onEditService(service), children: _jsx(Pencil, { className: "size-4", "aria-hidden": "true" }) })) : null, onDeleteService ? (_jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", onClick: () => onDeleteService(service), children: _jsx(Trash2, { className: "size-4", "aria-hidden": "true" }) })) : null] })) })] }, service.id))) })] }) }))] })) : null] }));
17
+ }
package/dist/i18n/en.d.ts CHANGED
@@ -227,6 +227,57 @@ export declare const productsUiEn: {
227
227
  saveDay: string;
228
228
  };
229
229
  };
230
+ productDayServiceForm: {
231
+ fields: {
232
+ supplierService: string;
233
+ serviceType: string;
234
+ countryCode: string;
235
+ name: string;
236
+ description: string;
237
+ costCurrency: string;
238
+ costAmount: string;
239
+ quantity: string;
240
+ sortOrder: string;
241
+ notes: string;
242
+ };
243
+ placeholders: {
244
+ supplierService: string;
245
+ countryCode: string;
246
+ name: string;
247
+ description: string;
248
+ notes: string;
249
+ };
250
+ serviceTypes: {
251
+ accommodation: string;
252
+ transfer: string;
253
+ experience: string;
254
+ guide: string;
255
+ meal: string;
256
+ other: string;
257
+ };
258
+ validation: {
259
+ nameRequired: string;
260
+ currencyRequired: string;
261
+ costNonNegative: string;
262
+ quantityMin: string;
263
+ saveFailed: string;
264
+ };
265
+ actions: {
266
+ addService: string;
267
+ saveService: string;
268
+ };
269
+ };
270
+ productItineraryDayRow: {
271
+ dayLabel: string;
272
+ emptyServices: string;
273
+ servicesLoadingError: string;
274
+ columns: {
275
+ name: string;
276
+ type: string;
277
+ cost: string;
278
+ quantity: string;
279
+ };
280
+ };
230
281
  productItineraryDialog: {
231
282
  titles: {
232
283
  create: string;
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiZK,CAAA"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAocK,CAAA"}
package/dist/i18n/en.js CHANGED
@@ -227,6 +227,57 @@ export const productsUiEn = {
227
227
  saveDay: "Save day",
228
228
  },
229
229
  },
230
+ productDayServiceForm: {
231
+ fields: {
232
+ supplierService: "Supplier service",
233
+ serviceType: "Service type",
234
+ countryCode: "Country code",
235
+ name: "Name",
236
+ description: "Description",
237
+ costCurrency: "Currency",
238
+ costAmount: "Cost",
239
+ quantity: "Quantity",
240
+ sortOrder: "Sort order",
241
+ notes: "Notes",
242
+ },
243
+ placeholders: {
244
+ supplierService: "Optional supplier service id",
245
+ countryCode: "RO",
246
+ name: "Hotel stay",
247
+ description: "Operational service details",
248
+ notes: "Internal notes",
249
+ },
250
+ serviceTypes: {
251
+ accommodation: "Accommodation",
252
+ transfer: "Transfer",
253
+ experience: "Experience",
254
+ guide: "Guide",
255
+ meal: "Meal",
256
+ other: "Other",
257
+ },
258
+ validation: {
259
+ nameRequired: "Service name is required.",
260
+ currencyRequired: "Currency must be a 3-letter ISO code.",
261
+ costNonNegative: "Cost must be zero or greater.",
262
+ quantityMin: "Quantity must be at least 1.",
263
+ saveFailed: "Failed to save service.",
264
+ },
265
+ actions: {
266
+ addService: "Add service",
267
+ saveService: "Save service",
268
+ },
269
+ },
270
+ productItineraryDayRow: {
271
+ dayLabel: "Day {dayNumber}",
272
+ emptyServices: "No services configured for this day.",
273
+ servicesLoadingError: "Failed to load day services.",
274
+ columns: {
275
+ name: "Name",
276
+ type: "Type",
277
+ cost: "Cost",
278
+ quantity: "Quantity",
279
+ },
280
+ },
230
281
  productItineraryDialog: {
231
282
  titles: {
232
283
  create: "New itinerary",
@@ -227,6 +227,57 @@ export type ProductsUiMessages = {
227
227
  saveDay: string;
228
228
  };
229
229
  };
230
+ productDayServiceForm: {
231
+ fields: {
232
+ supplierService: string;
233
+ serviceType: string;
234
+ countryCode: string;
235
+ name: string;
236
+ description: string;
237
+ costCurrency: string;
238
+ costAmount: string;
239
+ quantity: string;
240
+ sortOrder: string;
241
+ notes: string;
242
+ };
243
+ placeholders: {
244
+ supplierService: string;
245
+ countryCode: string;
246
+ name: string;
247
+ description: string;
248
+ notes: string;
249
+ };
250
+ serviceTypes: {
251
+ accommodation: string;
252
+ transfer: string;
253
+ experience: string;
254
+ guide: string;
255
+ meal: string;
256
+ other: string;
257
+ };
258
+ validation: {
259
+ nameRequired: string;
260
+ currencyRequired: string;
261
+ costNonNegative: string;
262
+ quantityMin: string;
263
+ saveFailed: string;
264
+ };
265
+ actions: {
266
+ addService: string;
267
+ saveService: string;
268
+ };
269
+ };
270
+ productItineraryDayRow: {
271
+ dayLabel: string;
272
+ emptyServices: string;
273
+ servicesLoadingError: string;
274
+ columns: {
275
+ name: string;
276
+ type: string;
277
+ cost: string;
278
+ quantity: string;
279
+ };
280
+ };
230
281
  productItineraryDialog: {
231
282
  titles: {
232
283
  create: string;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"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"}
@@ -231,6 +231,57 @@ export declare const productsUiMessageDefinitions: {
231
231
  saveDay: string;
232
232
  };
233
233
  };
234
+ productDayServiceForm: {
235
+ fields: {
236
+ supplierService: string;
237
+ serviceType: string;
238
+ countryCode: string;
239
+ name: string;
240
+ description: string;
241
+ costCurrency: string;
242
+ costAmount: string;
243
+ quantity: string;
244
+ sortOrder: string;
245
+ notes: string;
246
+ };
247
+ placeholders: {
248
+ supplierService: string;
249
+ countryCode: string;
250
+ name: string;
251
+ description: string;
252
+ notes: string;
253
+ };
254
+ serviceTypes: {
255
+ accommodation: string;
256
+ transfer: string;
257
+ experience: string;
258
+ guide: string;
259
+ meal: string;
260
+ other: string;
261
+ };
262
+ validation: {
263
+ nameRequired: string;
264
+ currencyRequired: string;
265
+ costNonNegative: string;
266
+ quantityMin: string;
267
+ saveFailed: string;
268
+ };
269
+ actions: {
270
+ addService: string;
271
+ saveService: string;
272
+ };
273
+ };
274
+ productItineraryDayRow: {
275
+ dayLabel: string;
276
+ emptyServices: string;
277
+ servicesLoadingError: string;
278
+ columns: {
279
+ name: string;
280
+ type: string;
281
+ cost: string;
282
+ quantity: string;
283
+ };
284
+ };
234
285
  productItineraryDialog: {
235
286
  titles: {
236
287
  create: string;
@@ -632,6 +683,57 @@ export declare const productsUiMessageDefinitions: {
632
683
  saveDay: string;
633
684
  };
634
685
  };
686
+ productDayServiceForm: {
687
+ fields: {
688
+ supplierService: string;
689
+ serviceType: string;
690
+ countryCode: string;
691
+ name: string;
692
+ description: string;
693
+ costCurrency: string;
694
+ costAmount: string;
695
+ quantity: string;
696
+ sortOrder: string;
697
+ notes: string;
698
+ };
699
+ placeholders: {
700
+ supplierService: string;
701
+ countryCode: string;
702
+ name: string;
703
+ description: string;
704
+ notes: string;
705
+ };
706
+ serviceTypes: {
707
+ accommodation: string;
708
+ transfer: string;
709
+ experience: string;
710
+ guide: string;
711
+ meal: string;
712
+ other: string;
713
+ };
714
+ validation: {
715
+ nameRequired: string;
716
+ currencyRequired: string;
717
+ costNonNegative: string;
718
+ quantityMin: string;
719
+ saveFailed: string;
720
+ };
721
+ actions: {
722
+ addService: string;
723
+ saveService: string;
724
+ };
725
+ };
726
+ productItineraryDayRow: {
727
+ dayLabel: string;
728
+ emptyServices: string;
729
+ servicesLoadingError: string;
730
+ columns: {
731
+ name: string;
732
+ type: string;
733
+ cost: string;
734
+ quantity: string;
735
+ };
736
+ };
635
737
  productItineraryDialog: {
636
738
  titles: {
637
739
  create: string;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/i18n/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAKpD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGe,CAAA;AAExD,MAAM,MAAM,0BAA0B,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;AASnF,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,SAAS,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;CAC9C,sBAOA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAClC,SAAS,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;CAC9C,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CASvC;AAED,wBAAgB,0BAA0B,CAAC,EACzC,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,0BAA0B,GAAG,IAAI,CAAA;CAC9C,2CAWA;AAED,eAAO,MAAM,iBAAiB,4CAA4B,CAAA;AAC1D,eAAO,MAAM,qBAAqB,0BAAgC,CAAA;AAElE,wBAAgB,0BAA0B,yCAEzC;AAED,wBAAgB,8BAA8B,uBAE7C"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/i18n/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAKpD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGe,CAAA;AAExD,MAAM,MAAM,0BAA0B,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;AASnF,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,SAAS,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;CAC9C,sBAOA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAClC,SAAS,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;CAC9C,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CASvC;AAED,wBAAgB,0BAA0B,CAAC,EACzC,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,0BAA0B,GAAG,IAAI,CAAA;CAC9C,2CAWA;AAED,eAAO,MAAM,iBAAiB,4CAA4B,CAAA;AAC1D,eAAO,MAAM,qBAAqB,0BAAgC,CAAA;AAElE,wBAAgB,0BAA0B,yCAEzC;AAED,wBAAgB,8BAA8B,uBAE7C"}
package/dist/i18n/ro.d.ts CHANGED
@@ -227,6 +227,57 @@ export declare const productsUiRo: {
227
227
  saveDay: string;
228
228
  };
229
229
  };
230
+ productDayServiceForm: {
231
+ fields: {
232
+ supplierService: string;
233
+ serviceType: string;
234
+ countryCode: string;
235
+ name: string;
236
+ description: string;
237
+ costCurrency: string;
238
+ costAmount: string;
239
+ quantity: string;
240
+ sortOrder: string;
241
+ notes: string;
242
+ };
243
+ placeholders: {
244
+ supplierService: string;
245
+ countryCode: string;
246
+ name: string;
247
+ description: string;
248
+ notes: string;
249
+ };
250
+ serviceTypes: {
251
+ accommodation: string;
252
+ transfer: string;
253
+ experience: string;
254
+ guide: string;
255
+ meal: string;
256
+ other: string;
257
+ };
258
+ validation: {
259
+ nameRequired: string;
260
+ currencyRequired: string;
261
+ costNonNegative: string;
262
+ quantityMin: string;
263
+ saveFailed: string;
264
+ };
265
+ actions: {
266
+ addService: string;
267
+ saveService: string;
268
+ };
269
+ };
270
+ productItineraryDayRow: {
271
+ dayLabel: string;
272
+ emptyServices: string;
273
+ servicesLoadingError: string;
274
+ columns: {
275
+ name: string;
276
+ type: string;
277
+ cost: string;
278
+ quantity: string;
279
+ };
280
+ };
230
281
  productItineraryDialog: {
231
282
  titles: {
232
283
  create: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ro.d.ts","sourceRoot":"","sources":["../../src/i18n/ro.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkZK,CAAA"}
1
+ {"version":3,"file":"ro.d.ts","sourceRoot":"","sources":["../../src/i18n/ro.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqcK,CAAA"}
package/dist/i18n/ro.js CHANGED
@@ -227,6 +227,57 @@ export const productsUiRo = {
227
227
  saveDay: "Salveaza ziua",
228
228
  },
229
229
  },
230
+ productDayServiceForm: {
231
+ fields: {
232
+ supplierService: "Serviciu furnizor",
233
+ serviceType: "Tip serviciu",
234
+ countryCode: "Cod tara",
235
+ name: "Nume",
236
+ description: "Descriere",
237
+ costCurrency: "Moneda",
238
+ costAmount: "Cost",
239
+ quantity: "Cantitate",
240
+ sortOrder: "Ordine sortare",
241
+ notes: "Note",
242
+ },
243
+ placeholders: {
244
+ supplierService: "ID serviciu furnizor optional",
245
+ countryCode: "RO",
246
+ name: "Cazare hotel",
247
+ description: "Detalii operationale ale serviciului",
248
+ notes: "Note interne",
249
+ },
250
+ serviceTypes: {
251
+ accommodation: "Cazare",
252
+ transfer: "Transfer",
253
+ experience: "Experienta",
254
+ guide: "Ghid",
255
+ meal: "Masa",
256
+ other: "Altul",
257
+ },
258
+ validation: {
259
+ nameRequired: "Numele serviciului este obligatoriu.",
260
+ currencyRequired: "Moneda trebuie sa fie un cod ISO din 3 litere.",
261
+ costNonNegative: "Costul trebuie sa fie zero sau mai mare.",
262
+ quantityMin: "Cantitatea trebuie sa fie cel putin 1.",
263
+ saveFailed: "Salvarea serviciului a esuat.",
264
+ },
265
+ actions: {
266
+ addService: "Adauga serviciu",
267
+ saveService: "Salveaza serviciul",
268
+ },
269
+ },
270
+ productItineraryDayRow: {
271
+ dayLabel: "Ziua {dayNumber}",
272
+ emptyServices: "Nu exista servicii configurate pentru aceasta zi.",
273
+ servicesLoadingError: "Incarcarea serviciilor zilei a esuat.",
274
+ columns: {
275
+ name: "Nume",
276
+ type: "Tip",
277
+ cost: "Cost",
278
+ quantity: "Cantitate",
279
+ },
280
+ },
230
281
  productItineraryDialog: {
231
282
  titles: {
232
283
  create: "Itinerar nou",
package/dist/index.d.ts CHANGED
@@ -6,6 +6,9 @@ export { ProductCategoryForm, type ProductCategoryFormProps, } from "./component
6
6
  export { ProductCategoryList, type ProductCategoryListProps, } from "./components/product-category-list";
7
7
  export { ProductDayDialog, type ProductDayDialogProps } from "./components/product-day-dialog";
8
8
  export { ProductDayForm, type ProductDayFormProps } from "./components/product-day-form";
9
+ export { ProductDayMediaTray, type ProductDayMediaTrayProps, } from "./components/product-day-media-tray";
10
+ export { ProductDayServiceForm, type ProductDayServiceFormHelpers, type ProductDayServiceFormProps, type ProductDayServiceSupplierServiceFieldProps, type ProductDayServiceSupplierServiceOption, } from "./components/product-day-service-form";
11
+ export { ProductItineraryDayRow, type ProductItineraryDayRowProps, type ProductItineraryDayRowRenderContext, } from "./components/product-itinerary-day-row";
9
12
  export { ProductItineraryDialog, type ProductItineraryDialogProps, } from "./components/product-itinerary-dialog";
10
13
  export { ProductMediaDialog, type ProductMediaDialogProps } from "./components/product-media-dialog";
11
14
  export { ProductMediaForm, type ProductMediaFormProps } from "./components/product-media-form";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAA;AAChF,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,mCAAmC,CAAA;AACpG,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC9F,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AACjG,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EACL,oBAAoB,EACpB,KAAK,yBAAyB,GAC/B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,uCAAuC,CAAA;AAC9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,EACL,iBAAiB,EACjB,KAAK,0BAA0B,EAC/B,0BAA0B,EAC1B,YAAY,EACZ,4BAA4B,EAC5B,YAAY,EACZ,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAA;AAChF,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,0CAA0C,EAC/C,KAAK,sCAAsC,GAC5C,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,KAAK,mCAAmC,GACzC,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,mCAAmC,CAAA;AACpG,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC9F,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AACjG,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EACL,oBAAoB,EACpB,KAAK,yBAAyB,GAC/B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,uCAAuC,CAAA;AAC9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,EACL,iBAAiB,EACjB,KAAK,0BAA0B,EAC/B,0BAA0B,EAC1B,YAAY,EACZ,4BAA4B,EAC5B,YAAY,EACZ,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,QAAQ,CAAA"}
package/dist/index.js CHANGED
@@ -6,6 +6,9 @@ export { ProductCategoryForm, } from "./components/product-category-form";
6
6
  export { ProductCategoryList, } from "./components/product-category-list";
7
7
  export { ProductDayDialog } from "./components/product-day-dialog";
8
8
  export { ProductDayForm } from "./components/product-day-form";
9
+ export { ProductDayMediaTray, } from "./components/product-day-media-tray";
10
+ export { ProductDayServiceForm, } from "./components/product-day-service-form";
11
+ export { ProductItineraryDayRow, } from "./components/product-itinerary-day-row";
9
12
  export { ProductItineraryDialog, } from "./components/product-itinerary-dialog";
10
13
  export { ProductMediaDialog } from "./components/product-media-dialog";
11
14
  export { ProductMediaForm } from "./components/product-media-form";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyantjs/products-ui",
3
- "version": "0.22.0",
3
+ "version": "0.24.0",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -43,17 +43,17 @@
43
43
  "@tanstack/react-query": "^5.0.0",
44
44
  "react": "^19.0.0",
45
45
  "react-dom": "^19.0.0",
46
- "@voyantjs/availability-react": "0.22.0",
47
- "@voyantjs/catalog-react": "0.22.0",
48
- "@voyantjs/finance": "0.22.0",
49
- "@voyantjs/finance-ui": "0.22.0",
50
- "@voyantjs/pricing-react": "0.22.0",
51
- "@voyantjs/products-react": "0.22.0",
52
- "@voyantjs/suppliers-react": "0.22.0",
53
- "@voyantjs/ui": "0.22.0"
46
+ "@voyantjs/availability-react": "0.24.0",
47
+ "@voyantjs/catalog-react": "0.24.0",
48
+ "@voyantjs/finance": "0.24.0",
49
+ "@voyantjs/finance-ui": "0.24.0",
50
+ "@voyantjs/pricing-react": "0.24.0",
51
+ "@voyantjs/products-react": "0.24.0",
52
+ "@voyantjs/suppliers-react": "0.24.0",
53
+ "@voyantjs/ui": "0.24.0"
54
54
  },
55
55
  "dependencies": {
56
- "@voyantjs/i18n": "0.22.0"
56
+ "@voyantjs/i18n": "0.24.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@tanstack/react-query": "^5.96.2",
@@ -64,16 +64,16 @@
64
64
  "react-dom": "^19.2.4",
65
65
  "typescript": "^6.0.2",
66
66
  "vitest": "^4.1.2",
67
- "@voyantjs/availability-react": "0.22.0",
68
- "@voyantjs/catalog-react": "0.22.0",
69
- "@voyantjs/finance": "0.22.0",
70
- "@voyantjs/finance-ui": "0.22.0",
71
- "@voyantjs/i18n": "0.22.0",
72
- "@voyantjs/pricing-react": "0.22.0",
73
- "@voyantjs/products-react": "0.22.0",
74
- "@voyantjs/suppliers-react": "0.22.0",
67
+ "@voyantjs/availability-react": "0.24.0",
68
+ "@voyantjs/catalog-react": "0.24.0",
69
+ "@voyantjs/finance": "0.24.0",
70
+ "@voyantjs/finance-ui": "0.24.0",
71
+ "@voyantjs/i18n": "0.24.0",
72
+ "@voyantjs/pricing-react": "0.24.0",
73
+ "@voyantjs/products-react": "0.24.0",
74
+ "@voyantjs/suppliers-react": "0.24.0",
75
75
  "@voyantjs/voyant-typescript-config": "0.1.0",
76
- "@voyantjs/ui": "0.22.0"
76
+ "@voyantjs/ui": "0.24.0"
77
77
  },
78
78
  "files": [
79
79
  "dist",