@voyantjs/finance-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.
package/README.md
CHANGED
|
@@ -20,6 +20,12 @@ slots. Use `lineItemsContent`, `paymentsContent`, `creditNotesContent`,
|
|
|
20
20
|
`attachmentsContent`, or `notesContent` when an app needs fully custom inline
|
|
21
21
|
management controls for that section.
|
|
22
22
|
|
|
23
|
+
`integrationsContent` is the dedicated invoice integration mount point. It is
|
|
24
|
+
rendered immediately after the invoice summary cards and may be either a React
|
|
25
|
+
node or a render function that receives `{ invoice }`. Provider plugins can
|
|
26
|
+
mount one or more external-reference panels there without replacing core invoice
|
|
27
|
+
sections.
|
|
28
|
+
|
|
23
29
|
## Components
|
|
24
30
|
|
|
25
31
|
- `InvoicesPage`, `InvoiceDetailPage`, and `PaymentsPage` publish
|
|
@@ -3,6 +3,7 @@ import { type ReactNode } from "react";
|
|
|
3
3
|
import { useFinanceUiMessagesOrDefault } from "../i18n/index.js";
|
|
4
4
|
export interface InvoiceDetailPageSlots {
|
|
5
5
|
afterHeader?: ReactNode;
|
|
6
|
+
integrationsContent?: InvoiceDetailIntegrationContent;
|
|
6
7
|
afterSummary?: ReactNode;
|
|
7
8
|
lineItemsContent?: ReactNode;
|
|
8
9
|
afterLineItems?: ReactNode;
|
|
@@ -16,6 +17,10 @@ export interface InvoiceDetailPageSlots {
|
|
|
16
17
|
afterNotes?: ReactNode;
|
|
17
18
|
dialogs?: ReactNode;
|
|
18
19
|
}
|
|
20
|
+
export interface InvoiceDetailIntegrationSlotContext {
|
|
21
|
+
invoice: InvoiceRecord;
|
|
22
|
+
}
|
|
23
|
+
export type InvoiceDetailIntegrationContent = ReactNode | ((context: InvoiceDetailIntegrationSlotContext) => ReactNode);
|
|
19
24
|
export interface InvoiceDetailPageProps {
|
|
20
25
|
id: string;
|
|
21
26
|
className?: string;
|
|
@@ -142,6 +147,7 @@ export declare function InvoiceDetailState({ className, message, onBack, }: {
|
|
|
142
147
|
}): import("react/jsx-runtime").JSX.Element;
|
|
143
148
|
export declare function formatPaymentMethod(method: string, messages: ReturnType<typeof useFinanceUiMessagesOrDefault>): string;
|
|
144
149
|
export declare const invoiceStatusVariant: Record<string, "default" | "secondary" | "outline" | "destructive">;
|
|
150
|
+
export declare const invoiceTypeVariant: Record<string, "default" | "secondary" | "outline" | "destructive">;
|
|
145
151
|
export declare const paymentStatusVariant: Record<string, "default" | "secondary" | "outline" | "destructive">;
|
|
146
152
|
export declare const creditNoteStatusVariant: Record<string, "default" | "secondary" | "outline" | "destructive">;
|
|
147
153
|
//# sourceMappingURL=invoice-detail-page.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoice-detail-page.d.ts","sourceRoot":"","sources":["../../src/components/invoice-detail-page.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,cAAc,EACd,aAAa,EACd,MAAM,yBAAyB,CAAA;AAkChC,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAA;AAI3D,OAAO,EAA6B,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAG3F,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,gBAAgB,CAAC,EAAE,SAAS,CAAA;IAC5B,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,eAAe,CAAC,EAAE,SAAS,CAAA;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,kBAAkB,CAAC,EAAE,SAAS,CAAA;IAC9B,gBAAgB,CAAC,EAAE,SAAS,CAAA;IAC5B,kBAAkB,CAAC,EAAE,SAAS,CAAA;IAC9B,gBAAgB,CAAC,EAAE,SAAS,CAAA;IAC5B,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;IACnE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;IACjE,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;IAC7E,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;IACnD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;IAC3E,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;IAClD,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;IACrD,yBAAyB,CAAC,EAAE,CAAC,UAAU,EAAE,uBAAuB,KAAK,MAAM,GAAG,SAAS,CAAA;IACvF,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,SAAS,CAAA;IACtE,KAAK,CAAC,EAAE,sBAAsB,CAAA;CAC/B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,EAAE,EACF,SAAS,EACT,MAAM,EACN,SAAS,EACT,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,KAAK,GACN,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"invoice-detail-page.d.ts","sourceRoot":"","sources":["../../src/components/invoice-detail-page.tsx"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,9 @@ export function InvoiceDetailPage({ id, className, onBack, onDeleted, onBookingO
|
|
|
42
42
|
const creditNotes = creditNotesQuery.data?.data ?? [];
|
|
43
43
|
const attachments = attachmentsQuery.data?.data ?? [];
|
|
44
44
|
const notes = notesQuery.data?.data ?? [];
|
|
45
|
+
const integrationsContent = renderInvoiceDetailIntegrationContent(slots?.integrationsContent, {
|
|
46
|
+
invoice,
|
|
47
|
+
});
|
|
45
48
|
const handleCreateNote = async (nextContent) => {
|
|
46
49
|
const content = nextContent.trim();
|
|
47
50
|
if (!content)
|
|
@@ -54,7 +57,7 @@ export function InvoiceDetailPage({ id, className, onBack, onDeleted, onBookingO
|
|
|
54
57
|
await removeInvoice.mutateAsync(id);
|
|
55
58
|
onDeleted?.();
|
|
56
59
|
onBack?.();
|
|
57
|
-
} }), slots?.afterHeader, _jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [_jsx(InvoiceSummaryCard, { invoice: invoice }), _jsx(InvoiceLinksCard, { invoice: invoice, onBookingOpen: onBookingOpen, onPersonOpen: onPersonOpen, onOrganizationOpen: onOrganizationOpen })] }), slots?.afterSummary, slots?.lineItemsContent !== undefined ? (slots.lineItemsContent) : (_jsx(InvoiceLineItemsCard, { invoice: invoice, lineItems: lineItems, pending: lineItemsQuery.isPending, deletePending: removeLineItem.isPending, onCreate: onLineItemCreate, onEdit: onLineItemEdit, onDelete: async (lineItemId) => {
|
|
60
|
+
} }), slots?.afterHeader, _jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [_jsx(InvoiceSummaryCard, { invoice: invoice }), _jsx(InvoiceLinksCard, { invoice: invoice, onBookingOpen: onBookingOpen, onPersonOpen: onPersonOpen, onOrganizationOpen: onOrganizationOpen })] }), integrationsContent ? (_jsx("div", { "data-slot": "invoice-integrations-content", className: "grid gap-3", children: integrationsContent })) : null, slots?.afterSummary, slots?.lineItemsContent !== undefined ? (slots.lineItemsContent) : (_jsx(InvoiceLineItemsCard, { invoice: invoice, lineItems: lineItems, pending: lineItemsQuery.isPending, deletePending: removeLineItem.isPending, onCreate: onLineItemCreate, onEdit: onLineItemEdit, onDelete: async (lineItemId) => {
|
|
58
61
|
await removeLineItem.mutateAsync(lineItemId);
|
|
59
62
|
} })), slots?.afterLineItems, slots?.paymentsContent !== undefined ? (slots.paymentsContent) : (_jsx(InvoicePaymentsCard, { invoice: invoice, payments: payments, pending: paymentsQuery.isPending, onCreate: onPaymentCreate })), slots?.afterPayments, slots?.creditNotesContent !== undefined ? (slots.creditNotesContent) : (_jsx(InvoiceCreditNotesCard, { invoice: invoice, creditNotes: creditNotes, pending: creditNotesQuery.isPending, onCreate: onCreditNoteCreate })), slots?.afterCreditNotes, slots?.attachmentsContent !== undefined ? (slots.attachmentsContent) : (_jsx(InvoiceAttachmentsCard, { invoice: invoice, attachments: attachments, pending: attachmentsQuery.isPending, deletePending: removeAttachment.isPending, getDownloadHref: getAttachmentDownloadHref ??
|
|
60
63
|
((attachment) => `/v1/finance/invoice-attachments/${attachment.id}/download`), onCreate: () => {
|
|
@@ -76,12 +79,15 @@ export function InvoiceDetailPage({ id, className, onBack, onDeleted, onBookingO
|
|
|
76
79
|
onSubmit: handleCreateNote,
|
|
77
80
|
})) : (_jsx(InvoiceNoteDialog, { open: noteOpen, onOpenChange: setNoteOpen, pending: addNote.isPending, onSubmit: handleCreateNote })), slots?.dialogs] }));
|
|
78
81
|
}
|
|
82
|
+
function renderInvoiceDetailIntegrationContent(content, context) {
|
|
83
|
+
return typeof content === "function" ? content(context) : content;
|
|
84
|
+
}
|
|
79
85
|
export function InvoiceDetailHeader({ invoice, onBack, onEdit, onDelete, deletePending, className, }) {
|
|
80
86
|
const messages = useFinanceUiMessagesOrDefault();
|
|
81
87
|
const detail = messages.invoiceDetailPage;
|
|
82
88
|
const canDelete = invoice.status === "draft";
|
|
83
|
-
const invoiceType = invoice.invoiceType
|
|
84
|
-
return (_jsxs("div", { "data-slot": "invoice-detail-header", className: cn("flex flex-col gap-4 md:flex-row md:items-start", className), children: [onBack ? (_jsxs(Button, { type: "button", variant: "ghost", size: "icon", onClick: onBack, children: [_jsx(ArrowLeft, { className: "size-4", "aria-hidden": "true" }), _jsx("span", { className: "sr-only", children: detail.actions.back })] })) : null, _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("h1", { className: "text-2xl font-bold tracking-tight", children: detail.title }), _jsx(Badge, { variant: invoiceStatusVariant[invoice.status] ?? "secondary", children: messages.common.invoiceStatusLabels[invoice.status] }), _jsx(Badge, { variant: "
|
|
89
|
+
const invoiceType = invoice.invoiceType;
|
|
90
|
+
return (_jsxs("div", { "data-slot": "invoice-detail-header", className: cn("flex flex-col gap-4 md:flex-row md:items-start", className), children: [onBack ? (_jsxs(Button, { type: "button", variant: "ghost", size: "icon", onClick: onBack, children: [_jsx(ArrowLeft, { className: "size-4", "aria-hidden": "true" }), _jsx("span", { className: "sr-only", children: detail.actions.back })] })) : null, _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("h1", { className: "text-2xl font-bold tracking-tight", children: detail.title }), _jsx(Badge, { variant: invoiceStatusVariant[invoice.status] ?? "secondary", children: messages.common.invoiceStatusLabels[invoice.status] }), invoiceType ? (_jsx(Badge, { "data-slot": "invoice-type-badge", "data-invoice-type": invoiceType, variant: invoiceTypeVariant[invoiceType] ?? "secondary", children: detail.invoiceTypeLabels[invoiceType] })) : null] }), _jsx("p", { className: "mt-1 truncate font-mono text-muted-foreground text-sm", children: invoice.invoiceNumber }), _jsxs("p", { className: "mt-1 text-muted-foreground text-xs", children: [detail.fields.booking, ": ", invoice.bookingId] })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-2 md:justify-end", children: [_jsxs(Button, { type: "button", variant: "outline", onClick: onEdit, children: [_jsx(Pencil, { className: "size-4", "aria-hidden": "true" }), detail.actions.edit] }), _jsx(ConfirmActionButton, { buttonLabel: detail.actions.delete, confirmLabel: detail.actions.delete, cancelLabel: messages.common.cancel, title: detail.actions.deleteTitle, description: canDelete ? detail.actions.deleteDescription : detail.actions.deleteOnlyDraft, variant: "destructive", confirmVariant: "destructive", disabled: !canDelete || deletePending, onConfirm: onDelete })] })] }));
|
|
85
91
|
}
|
|
86
92
|
export function InvoiceSummaryCard({ invoice, className }) {
|
|
87
93
|
const { formatCurrency } = useFinanceUiI18nOrDefault();
|
|
@@ -266,6 +272,11 @@ export const invoiceStatusVariant = {
|
|
|
266
272
|
overdue: "destructive",
|
|
267
273
|
void: "secondary",
|
|
268
274
|
};
|
|
275
|
+
export const invoiceTypeVariant = {
|
|
276
|
+
invoice: "default",
|
|
277
|
+
proforma: "outline",
|
|
278
|
+
credit_note: "destructive",
|
|
279
|
+
};
|
|
269
280
|
export const paymentStatusVariant = {
|
|
270
281
|
pending: "outline",
|
|
271
282
|
completed: "default",
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { BookingInvoiceSheet, type BookingInvoiceSheetProps, } from "./components/booking-invoice-sheet.js";
|
|
2
2
|
export { actionLedgerRiskVariant, actionLedgerStatusVariant, InvoiceActionLedgerCard, type InvoiceActionLedgerCardProps, PaymentSessionActionLedgerCard, type PaymentSessionActionLedgerCardProps, } from "./components/invoice-action-ledger-card.js";
|
|
3
|
-
export { creditNoteStatusVariant, DetailLink, type DetailLinkProps, DetailRow, type DetailRowProps, EmptyRow as InvoiceDetailEmptyRow, type EmptyRowProps as InvoiceDetailEmptyRowProps, formatPaymentMethod as formatInvoicePaymentMethod, InvoiceAttachmentsCard, type InvoiceAttachmentsCardProps, InvoiceCreditNotesCard, type InvoiceCreditNotesCardProps, type InvoiceDetailCardProps, InvoiceDetailHeader, type InvoiceDetailHeaderProps, InvoiceDetailLoading, InvoiceDetailPage, type InvoiceDetailPageProps, type InvoiceDetailPageSlots, InvoiceDetailState, InvoiceLineItemsCard, type InvoiceLineItemsCardProps, InvoiceLinksCard, type InvoiceLinksCardProps, InvoiceNotesCard, type InvoiceNotesCardProps, InvoicePaymentsCard, type InvoicePaymentsCardProps, InvoiceSummaryCard, invoiceStatusVariant, LoadingRow as InvoiceDetailLoadingRow, Money, type MoneyProps, paymentStatusVariant, } from "./components/invoice-detail-page.js";
|
|
3
|
+
export { creditNoteStatusVariant, DetailLink, type DetailLinkProps, DetailRow, type DetailRowProps, EmptyRow as InvoiceDetailEmptyRow, type EmptyRowProps as InvoiceDetailEmptyRowProps, formatPaymentMethod as formatInvoicePaymentMethod, InvoiceAttachmentsCard, type InvoiceAttachmentsCardProps, InvoiceCreditNotesCard, type InvoiceCreditNotesCardProps, type InvoiceDetailCardProps, InvoiceDetailHeader, type InvoiceDetailHeaderProps, type InvoiceDetailIntegrationContent, type InvoiceDetailIntegrationSlotContext, InvoiceDetailLoading, InvoiceDetailPage, type InvoiceDetailPageProps, type InvoiceDetailPageSlots, InvoiceDetailState, InvoiceLineItemsCard, type InvoiceLineItemsCardProps, InvoiceLinksCard, type InvoiceLinksCardProps, InvoiceNotesCard, type InvoiceNotesCardProps, InvoicePaymentsCard, type InvoicePaymentsCardProps, InvoiceSummaryCard, invoiceStatusVariant, LoadingRow as InvoiceDetailLoadingRow, Money, type MoneyProps, paymentStatusVariant, } from "./components/invoice-detail-page.js";
|
|
4
4
|
export { InvoiceDetailPageWithActionLedger, type InvoiceDetailPageWithActionLedgerProps, } from "./components/invoice-detail-page-with-action-ledger.js";
|
|
5
5
|
export { InvoiceDialog, type InvoiceDialogProps } from "./components/invoice-dialog.js";
|
|
6
6
|
export { InvoicesPage, type InvoicesPageProps } from "./components/invoices-page.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,8BAA8B,EAC9B,KAAK,mCAAmC,GACzC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,KAAK,eAAe,EACpB,SAAS,EACT,KAAK,cAAc,EACnB,QAAQ,IAAI,qBAAqB,EACjC,KAAK,aAAa,IAAI,0BAA0B,EAChD,mBAAmB,IAAI,0BAA0B,EACjD,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,IAAI,uBAAuB,EACrC,KAAK,EACL,KAAK,UAAU,EACf,oBAAoB,GACrB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,iCAAiC,EACjC,KAAK,sCAAsC,GAC5C,MAAM,wDAAwD,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACvF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,KAAK,sBAAsB,EAC3B,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,oBAAoB,EACpB,KAAK,yBAAyB,GAC/B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,KAAK,qBAAqB,EAC1B,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,8BAA8B,GACpC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,0BAA0B,EAC1B,KAAK,+BAA+B,GACrC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,yCAAyC,CAAA;AAChD,OAAO,EACL,SAAS,EACT,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,yBAAyB,EACzB,WAAW,EACX,2BAA2B,EAC3B,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,8BAA8B,EAC9B,KAAK,mCAAmC,GACzC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,KAAK,eAAe,EACpB,SAAS,EACT,KAAK,cAAc,EACnB,QAAQ,IAAI,qBAAqB,EACjC,KAAK,aAAa,IAAI,0BAA0B,EAChD,mBAAmB,IAAI,0BAA0B,EACjD,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,KAAK,mCAAmC,EACxC,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,IAAI,uBAAuB,EACrC,KAAK,EACL,KAAK,UAAU,EACf,oBAAoB,GACrB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,iCAAiC,EACjC,KAAK,sCAAsC,GAC5C,MAAM,wDAAwD,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACvF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,KAAK,sBAAsB,EAC3B,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,oBAAoB,EACpB,KAAK,yBAAyB,GAC/B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,KAAK,qBAAqB,EAC1B,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,8BAA8B,GACpC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,0BAA0B,EAC1B,KAAK,+BAA+B,GACrC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,yCAAyC,CAAA;AAChD,OAAO,EACL,SAAS,EACT,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,yBAAyB,EACzB,WAAW,EACX,2BAA2B,EAC3B,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voyantjs/finance-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.66.6",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -45,14 +45,14 @@
|
|
|
45
45
|
"react-dom": "^19.0.0",
|
|
46
46
|
"react-hook-form": "^7.60.0",
|
|
47
47
|
"zod": "^4.3.6",
|
|
48
|
-
"@voyantjs/bookings-ui": "0.
|
|
49
|
-
"@voyantjs/finance": "0.
|
|
50
|
-
"@voyantjs/finance-react": "0.
|
|
51
|
-
"@voyantjs/suppliers-ui": "0.
|
|
52
|
-
"@voyantjs/ui": "0.
|
|
48
|
+
"@voyantjs/bookings-ui": "0.66.6",
|
|
49
|
+
"@voyantjs/finance": "0.66.6",
|
|
50
|
+
"@voyantjs/finance-react": "0.66.6",
|
|
51
|
+
"@voyantjs/suppliers-ui": "0.66.6",
|
|
52
|
+
"@voyantjs/ui": "0.66.6"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@voyantjs/i18n": "0.
|
|
55
|
+
"@voyantjs/i18n": "0.66.6"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@tanstack/react-query": "^5.100.11",
|
|
@@ -65,12 +65,12 @@
|
|
|
65
65
|
"typescript": "^6.0.2",
|
|
66
66
|
"vitest": "^4.1.2",
|
|
67
67
|
"zod": "^4.3.6",
|
|
68
|
-
"@voyantjs/bookings-ui": "0.
|
|
69
|
-
"@voyantjs/finance": "0.
|
|
70
|
-
"@voyantjs/finance-react": "0.
|
|
71
|
-
"@voyantjs/i18n": "0.
|
|
72
|
-
"@voyantjs/suppliers-ui": "0.
|
|
73
|
-
"@voyantjs/ui": "0.
|
|
68
|
+
"@voyantjs/bookings-ui": "0.66.6",
|
|
69
|
+
"@voyantjs/finance": "0.66.6",
|
|
70
|
+
"@voyantjs/finance-react": "0.66.6",
|
|
71
|
+
"@voyantjs/i18n": "0.66.6",
|
|
72
|
+
"@voyantjs/suppliers-ui": "0.66.6",
|
|
73
|
+
"@voyantjs/ui": "0.66.6",
|
|
74
74
|
"@voyantjs/voyant-typescript-config": "0.1.0"
|
|
75
75
|
},
|
|
76
76
|
"files": [
|