@voyant-travel/admin 0.111.2 → 0.111.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"extension-routes.d.ts","sourceRoot":"","sources":["../../src/app/extension-routes.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAOd,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EAKvB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD;;;;;;;;;;;;;;;;;GAiBG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,GAAG,CAAC,MAAM,iBAAiB,CAAC,CAAA;AAMtF;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,kBAAkB,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,KAAK,oBAAoB,GAAG,KAAK,CAAC,iBAAiB,GAAG;IACpD,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B,CAAA;AAED,MAAM,WAAW,0BAA0B;IACzC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,oBAAoB,CAAA;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE,6BAA6B,KAAK,OAAO,CAAA;IACxD;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IAC3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAA;IAC1C,cAAc,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAA;CAC9E;AAkDD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,0BAA0B,GAClC,0BAA0B,CAG5B;AAiCD,MAAM,WAAW,gCAAgC;IAC/C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,QAAQ,EAC9B,OAAO,EAAE,0BAA0B,EACnC,OAAO,GAAE,gCAAqC,GAC7C,KAAK,CAAC,QAAQ,CAAC,CAsBjB;AAgBD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,SAAS,QAAQ,EACpE,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,QAAQ,EACrB,eAAe,EAAE,aAAa,CAAC,QAAQ,CAAC,GACvC,UAAU,CAaZ"}
1
+ {"version":3,"file":"extension-routes.d.ts","sourceRoot":"","sources":["../../src/app/extension-routes.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAOd,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EAKvB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD;;;;;;;;;;;;;;;;;GAiBG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,GAAG,CAAC,MAAM,iBAAiB,CAAC,CAAA;AAMtF;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,kBAAkB,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,KAAK,oBAAoB,GAAG,KAAK,CAAC,iBAAiB,GAAG;IACpD,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B,CAAA;AAED,MAAM,WAAW,0BAA0B;IACzC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,oBAAoB,CAAA;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE,6BAA6B,KAAK,OAAO,CAAA;IACxD;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IAC3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAA;IAC1C,cAAc,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAA;CAC9E;AA4ED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,0BAA0B,GAClC,0BAA0B,CAG5B;AAkCD,MAAM,WAAW,gCAAgC;IAC/C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,QAAQ,EAC9B,OAAO,EAAE,0BAA0B,EACnC,OAAO,GAAE,gCAAqC,GAC7C,KAAK,CAAC,QAAQ,CAAC,CAsBjB;AAgBD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,SAAS,QAAQ,EACpE,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,QAAQ,EACrB,eAAe,EAAE,aAAa,CAAC,QAAQ,CAAC,GACvC,UAAU,CAaZ"}
@@ -1,6 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import { createRoute, lazyRouteComponent, redirect, useNavigate, useParams, useSearch, } from "@tanstack/react-router";
2
3
  import * as React from "react";
3
4
  import { findAdminRouteContribution, requireImplementedAdminRoute, } from "../extensions.js";
5
+ import { useLocale } from "../providers/locale.js";
4
6
  function resolveRuntime(runtime) {
5
7
  return typeof runtime === "function" ? runtime() : runtime;
6
8
  }
@@ -40,6 +42,22 @@ function createAdminRoutePageComponent(route) {
40
42
  AdminExtensionRoutePage.preload = LazyPage.preload;
41
43
  return AdminExtensionRoutePage;
42
44
  }
45
+ function withRouteMessagesProvider(route, Component) {
46
+ const loadProvider = route.routeMessagesProvider;
47
+ if (!loadProvider || !Component)
48
+ return Component;
49
+ const WrappedComponent = Component;
50
+ const LazyProvider = React.lazy(loadProvider);
51
+ function AdminExtensionRouteMessagesProvider() {
52
+ const { resolvedLocale } = useLocale();
53
+ return (_jsx(LazyProvider, { locale: resolvedLocale, children: _jsx(WrappedComponent, {}) }));
54
+ }
55
+ AdminExtensionRouteMessagesProvider.displayName = `AdminExtensionRouteMessagesProvider(${route.id})`;
56
+ AdminExtensionRouteMessagesProvider.preload = async () => {
57
+ await Promise.all([WrappedComponent.preload?.(), loadProvider().then(() => undefined)]);
58
+ };
59
+ return AdminExtensionRouteMessagesProvider;
60
+ }
43
61
  /**
44
62
  * Resolve an extension route contribution by id and return the route
45
63
  * options the host's generated admin route module spreads into a
@@ -55,9 +73,10 @@ export function adminExtensionRouteOptions(extension, routeId, runtime) {
55
73
  }
56
74
  function adminRouteOptionsFromContribution(route, runtime) {
57
75
  const redirectTo = route.redirectTo;
58
- const component = route.page
76
+ const baseComponent = route.page
59
77
  ? createAdminRoutePageComponent(route)
60
78
  : route.component;
79
+ const component = withRouteMessagesProvider(route, baseComponent);
61
80
  return {
62
81
  component,
63
82
  beforeLoad: redirectTo
@@ -71,7 +90,7 @@ function adminRouteOptionsFromContribution(route, runtime) {
71
90
  params,
72
91
  }),
73
92
  ssr: route.ssr,
74
- wrapInSuspense: route.page ? true : undefined,
93
+ wrapInSuspense: route.page || route.routeMessagesProvider ? true : undefined,
75
94
  pendingComponent: route.pendingComponent,
76
95
  errorComponent: route.errorComponent,
77
96
  };
@@ -69,6 +69,13 @@ export interface AdminWorkspaceShellProps<TUser extends AdminWorkspaceShellUser>
69
69
  * navigate to routes they don't own via `useAdminHref`/`useAdminNavigate`.
70
70
  */
71
71
  destinations?: AdminDestinationResolvers;
72
+ /**
73
+ * Left slot of the workspace header after the sidebar trigger. When omitted,
74
+ * the layout renders its default breadcrumbs.
75
+ */
76
+ headerSlot?: ReactNode;
77
+ /** Host-owned right slot for persistent workspace header actions. */
78
+ headerSlotRight?: ReactNode;
72
79
  onSignOut?: () => void | Promise<void>;
73
80
  /** Maps the loaded user for the layout; default covers the common fields. */
74
81
  mapUser?: (user: TUser) => AdminUser;
@@ -80,5 +87,5 @@ export interface AdminWorkspaceShellProps<TUser extends AdminWorkspaceShellUser>
80
87
  * preference sync, and the workspace layout with router-aware links — the
81
88
  * composition every Voyant admin previously copied from the starter.
82
89
  */
83
- export declare function AdminWorkspaceShell<TUser extends AdminWorkspaceShellUser>({ user, isUserLoading, extensions, icons, linkComponent, destinations, onSignOut, mapUser, children, }: AdminWorkspaceShellProps<TUser>): import("react/jsx-runtime").JSX.Element;
90
+ export declare function AdminWorkspaceShell<TUser extends AdminWorkspaceShellUser>({ user, isUserLoading, extensions, icons, linkComponent, destinations, headerSlot, headerSlotRight, onSignOut, mapUser, children, }: AdminWorkspaceShellProps<TUser>): import("react/jsx-runtime").JSX.Element;
84
91
  //# sourceMappingURL=workspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/app/workspace.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/app/workspace.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Link, redirect, useRouter, useRouterState } from "@tanstack/react-router";
3
3
  import { Loader2 } from "lucide-react";
4
4
  import { forwardRef, useCallback, useMemo } from "react";
5
+ import { AdminWidgetSlotRenderer } from "../components/admin-widget-slot.js";
5
6
  import { OperatorAdminBootstrapGate } from "../components/operator-admin-bootstrap-gate.js";
6
7
  import { OperatorAdminWorkspaceLayout } from "../components/operator-admin-sidebar.js";
8
+ import { adminWorkspaceHeaderActionsSlot, resolveAdminWidgets } from "../extensions.js";
7
9
  import { AdminNavigationProvider, } from "../navigation/destinations.js";
8
10
  import { AdminLocalePreferenceSync } from "../providers/locale-preferences.js";
9
11
  import { getOperatorAdminMessageOverridesFromUiPrefs, OperatorAdminMessagesProvider, useOperatorAdminMessages, } from "../providers/operator-admin-messages.js";
@@ -62,15 +64,20 @@ export function defaultAdminWorkspaceUser(user) {
62
64
  * preference sync, and the workspace layout with router-aware links — the
63
65
  * composition every Voyant admin previously copied from the starter.
64
66
  */
65
- export function AdminWorkspaceShell({ user, isUserLoading, extensions, icons, linkComponent = AdminRouterLink, destinations, onSignOut, mapUser = defaultAdminWorkspaceUser, children, }) {
67
+ export function AdminWorkspaceShell({ user, isUserLoading, extensions, icons, linkComponent = AdminRouterLink, destinations, headerSlot, headerSlotRight, onSignOut, mapUser = defaultAdminWorkspaceUser, children, }) {
66
68
  const messages = useOperatorAdminMessages();
67
- return (_jsx(OperatorAdminBootstrapGate, { user: user, isUserLoading: isUserLoading, loadingFallback: _jsx(AdminWorkspacePendingFallback, { label: messages.loading }), children: ({ user: loadedUser }) => (_jsxs(OperatorAdminMessagesProvider, { overrides: getOperatorAdminMessageOverridesFromUiPrefs(loadedUser.uiPrefs), children: [_jsx(AdminLocalePreferenceSync, { source: loadedUser }), _jsx(AdminWorkspaceShellInner, { user: loadedUser, extensions: extensions, icons: icons, linkComponent: linkComponent, destinations: destinations, onSignOut: onSignOut, mapUser: mapUser, children: children })] })) }));
69
+ return (_jsx(OperatorAdminBootstrapGate, { user: user, isUserLoading: isUserLoading, loadingFallback: _jsx(AdminWorkspacePendingFallback, { label: messages.loading }), children: ({ user: loadedUser }) => (_jsxs(OperatorAdminMessagesProvider, { overrides: getOperatorAdminMessageOverridesFromUiPrefs(loadedUser.uiPrefs), children: [_jsx(AdminLocalePreferenceSync, { source: loadedUser }), _jsx(AdminWorkspaceShellInner, { user: loadedUser, extensions: extensions, icons: icons, linkComponent: linkComponent, destinations: destinations, headerSlot: headerSlot, headerSlotRight: headerSlotRight, onSignOut: onSignOut, mapUser: mapUser, children: children })] })) }));
68
70
  }
69
- function AdminWorkspaceShellInner({ user, extensions, icons, linkComponent, destinations, onSignOut, mapUser, children, }) {
71
+ function AdminWorkspaceShellInner({ user, extensions, icons, linkComponent, destinations, headerSlot, headerSlotRight, onSignOut, mapUser, children, }) {
70
72
  const router = useRouter();
71
73
  const currentPath = useRouterState({ select: (s) => s.location.pathname });
72
74
  const messages = useOperatorAdminMessages();
73
75
  const resolvedExtensions = useMemo(() => (typeof extensions === "function" ? extensions(messages) : extensions), [extensions, messages]);
76
+ const hasHeaderActionWidgets = useMemo(() => resolveAdminWidgets({
77
+ slot: adminWorkspaceHeaderActionsSlot,
78
+ extensions: resolvedExtensions,
79
+ }).length > 0, [resolvedExtensions]);
80
+ const hasHeaderSlotRight = headerSlotRight != null;
74
81
  // Resolver-built hrefs may carry a query string, so navigate by `href`
75
82
  // (which parses it back into search params) rather than `to` (which would
76
83
  // treat the whole string as a literal pathname). `replace` forwards so
@@ -79,7 +86,7 @@ function AdminWorkspaceShellInner({ user, extensions, icons, linkComponent, dest
79
86
  const navigateToHref = useCallback((href, options) => {
80
87
  void router.navigate({ href, replace: options?.replace });
81
88
  }, [router]);
82
- const layout = (_jsx(OperatorAdminWorkspaceLayout, { currentPath: currentPath, extensions: resolvedExtensions, icons: icons, linkComponent: linkComponent, onSignOut: onSignOut, user: mapUser(user), children: children }));
89
+ const layout = (_jsx(OperatorAdminWorkspaceLayout, { currentPath: currentPath, extensions: resolvedExtensions, headerSlot: headerSlot, headerSlotRight: hasHeaderSlotRight || hasHeaderActionWidgets ? (_jsxs(_Fragment, { children: [headerSlotRight, hasHeaderActionWidgets ? (_jsx(AdminWidgetSlotRenderer, { extensions: resolvedExtensions, slot: adminWorkspaceHeaderActionsSlot })) : null] })) : undefined, icons: icons, linkComponent: linkComponent, onSignOut: onSignOut, user: mapUser(user), children: children }));
83
90
  if (!destinations) {
84
91
  return layout;
85
92
  }
@@ -55,6 +55,14 @@ export type AdminRoutePageComponent = React.ComponentType<AdminRoutePageProps>;
55
55
  export interface AdminRoutePageModule {
56
56
  default: AdminRoutePageComponent;
57
57
  }
58
+ export interface AdminRouteMessagesProviderProps {
59
+ children: React.ReactNode;
60
+ locale: string | null | undefined;
61
+ }
62
+ export type AdminRouteMessagesProvider = React.ComponentType<AdminRouteMessagesProviderProps>;
63
+ export interface AdminRouteMessagesProviderModule {
64
+ default: AdminRouteMessagesProvider;
65
+ }
58
66
  /**
59
67
  * Adapt a component into an {@link AdminRoutePageModule}. Use inside `page`
60
68
  * loaders for components that ignore route props entirely (zero-prop hosts)
@@ -89,6 +97,12 @@ export interface AdminUiRouteContribution {
89
97
  page?: () => Promise<AdminRoutePageModule>;
90
98
  /** Data loader; receives the host QueryClient + app runtime. */
91
99
  loader?: (ctx: AdminRouteLoaderContext) => unknown;
100
+ /**
101
+ * Route-local package i18n provider. Keep this lazy: app shells can
102
+ * localize package pages without pulling every domain message table into
103
+ * the workspace chrome chunk.
104
+ */
105
+ routeMessagesProvider?: () => Promise<AdminRouteMessagesProviderModule>;
92
106
  /** Typed search-param validation (e.g. a zod schema's parse). */
93
107
  validateSearch?: (search: Record<string, unknown>) => unknown;
94
108
  /** Per-route SSR mode, mirroring the host router's option. */
@@ -172,6 +186,8 @@ export interface AdminWidgetContribution<Props = Record<string, unknown>> {
172
186
  order?: number;
173
187
  component: React.ComponentType<Props>;
174
188
  }
189
+ /** Shell chrome slot rendered in the workspace header's right action area. */
190
+ export declare const adminWorkspaceHeaderActionsSlot = "workspace.header.actions";
175
191
  /**
176
192
  * Shared admin extension bundle.
177
193
  *
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,8 @@ export function adminRoutePageModule(component) {
8
8
  const Component = component;
9
9
  return { default: Component };
10
10
  }
11
+ /** Shell chrome slot rendered in the workspace header's right action area. */
12
+ export const adminWorkspaceHeaderActionsSlot = "workspace.header.actions";
11
13
  export function defineAdminExtension(extension) {
12
14
  return extension;
13
15
  }
package/dist/index.d.ts CHANGED
@@ -34,7 +34,7 @@ export { TeamSettingsPage, type TeamSettingsPageApi, type TeamSettingsPageProps,
34
34
  export type { DashboardEmptyAction, DashboardEmptyStateConfig, DashboardEmptyStateKey, DashboardPageProps, } from "./dashboard/dashboard-page.js";
35
35
  export { type BookingsAggregates, bookingStatusConfig, buildDashboardSixMonthWindow, buildMonthSeries, DashboardApiError, type DashboardQueryClient, dashboardQueryKeys, type FinanceAggregates, formatCurrency, getDashboardBookingsAggregatesQueryOptions, getDashboardFinanceAggregatesQueryOptions, getDashboardProductsAggregatesQueryOptions, getDashboardSuppliersAggregatesQueryOptions, getStatusColor, monthlyBookingsConfig, type ProductsAggregates, pickPrimaryCurrency, revenueChartConfig, type SuppliersAggregates, } from "./dashboard/dashboard-query-options.js";
36
36
  export { DashboardAreaChartSkeleton, DashboardBarChartSkeleton, DashboardKpiRowSkeleton, DashboardKpiSkeleton, DashboardOutstandingInvoicesSkeleton, DashboardPieChartSkeleton, DashboardSkeleton, DashboardUpcomingListSkeleton, } from "./dashboard/dashboard-skeleton.js";
37
- export { type AdminExtension, type AdminNavigationContribution, type AdminRouteLoaderContext, type AdminRoutePageComponent, type AdminRoutePageModule, type AdminRoutePageProps, type AdminRouteRuntime, type AdminUiRouteContribution, type AdminWidgetContribution, type AdminWidgetSlot, adminRoutePageModule, type BindableAdminRoute, createAdminExtensionRegistry, defineAdminExtension, findAdminRouteContribution, type ImplementedAdminRoute, type ResolveAdminNavigationOptions, type ResolveAdminWidgetsOptions, requireAdminRoute, requireImplementedAdminRoute, resolveAdminNavigation, resolveAdminWidgets, } from "./extensions.js";
37
+ export { type AdminExtension, type AdminNavigationContribution, type AdminRouteLoaderContext, type AdminRouteMessagesProvider, type AdminRouteMessagesProviderModule, type AdminRouteMessagesProviderProps, type AdminRoutePageComponent, type AdminRoutePageModule, type AdminRoutePageProps, type AdminRouteRuntime, type AdminUiRouteContribution, type AdminWidgetContribution, type AdminWidgetSlot, adminRoutePageModule, adminWorkspaceHeaderActionsSlot, type BindableAdminRoute, createAdminExtensionRegistry, defineAdminExtension, findAdminRouteContribution, type ImplementedAdminRoute, type ResolveAdminNavigationOptions, type ResolveAdminWidgetsOptions, requireAdminRoute, requireImplementedAdminRoute, resolveAdminNavigation, resolveAdminWidgets, } from "./extensions.js";
38
38
  export { composeLocaleMessageDefinitions, type DeepPartial, formatMessage, type LocaleMessageDefinitions, type LocaleMessageOverrides, MessagesProvider, resolveLocaleMessages, useMessages, } from "./lib/i18n.js";
39
39
  export { getDisplayName, getInitials } from "./lib/initials.js";
40
40
  export { type AdminDestinationKey, type AdminDestinationNavigator, type AdminDestinationResolvers, type AdminDestinations, type AdminHrefResolver, type AdminNavigateOptions, AdminNavigationProvider, type AdminNavigationProviderProps, useAdminHref, useAdminNavigate, } from "./navigation/destinations.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACL,KAAK,sBAAsB,EAC3B,wBAAwB,EACxB,KAAK,6BAA6B,EAClC,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,gBAAgB,GACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,uBAAuB,EACvB,KAAK,4BAA4B,GAClC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACtE,OAAO,EACL,0BAA0B,EAC1B,KAAK,+BAA+B,EACpC,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,GACvC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,2CAA2C,CAAA;AAClD,OAAO,EACL,yBAAyB,EACzB,KAAK,8BAA8B,EACnC,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,4BAA4B,EAC5B,KAAK,iCAAiC,EACtC,qBAAqB,GACtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACL,gBAAgB,EAChB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,GAC3B,MAAM,oCAAoC,CAAA;AAC3C,YAAY,EACV,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,+BAA+B,CAAA;AAKtC,OAAO,EACL,KAAK,kBAAkB,EACvB,mBAAmB,EACnB,4BAA4B,EAC5B,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,cAAc,EACd,0CAA0C,EAC1C,yCAAyC,EACzC,0CAA0C,EAC1C,2CAA2C,EAC3C,cAAc,EACd,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,oCAAoC,EACpC,yBAAyB,EACzB,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,oBAAoB,EACpB,+BAA+B,EAC/B,KAAK,kBAAkB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,iBAAiB,EACjB,4BAA4B,EAC5B,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,+BAA+B,EAC/B,KAAK,WAAW,EAChB,aAAa,EACb,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,GACZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,YAAY,EACZ,gBAAgB,GACjB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,KAAK,oCAAoC,EACzC,6BAA6B,EAC7B,KAAK,+BAA+B,EACpC,KAAK,4BAA4B,GAClC,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,kBAAkB,GACnB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AACtF,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,cAAc,EACd,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,SAAS,GACV,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,KAAK,2BAA2B,EAChC,yBAAyB,EACzB,KAAK,8BAA8B,GACpC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,2CAA2C,EAC3C,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAChC,KAAK,gCAAgC,EACrC,gCAAgC,EAChC,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,0BAA0B,EAC1B,KAAK,+BAA+B,GACrC,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EACL,KAAK,iBAAiB,EACtB,aAAa,EACb,KAAK,kBAAkB,EACvB,QAAQ,GACT,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,IAAI,EACJ,WAAW,EACX,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -37,7 +37,7 @@ export { TeamSettingsPage, } from "./components/team-settings-page.js";
37
37
  // directly from "@voyant-travel/admin/dashboard/dashboard-page" instead.
38
38
  export { bookingStatusConfig, buildDashboardSixMonthWindow, buildMonthSeries, DashboardApiError, dashboardQueryKeys, formatCurrency, getDashboardBookingsAggregatesQueryOptions, getDashboardFinanceAggregatesQueryOptions, getDashboardProductsAggregatesQueryOptions, getDashboardSuppliersAggregatesQueryOptions, getStatusColor, monthlyBookingsConfig, pickPrimaryCurrency, revenueChartConfig, } from "./dashboard/dashboard-query-options.js";
39
39
  export { DashboardAreaChartSkeleton, DashboardBarChartSkeleton, DashboardKpiRowSkeleton, DashboardKpiSkeleton, DashboardOutstandingInvoicesSkeleton, DashboardPieChartSkeleton, DashboardSkeleton, DashboardUpcomingListSkeleton, } from "./dashboard/dashboard-skeleton.js";
40
- export { adminRoutePageModule, createAdminExtensionRegistry, defineAdminExtension, findAdminRouteContribution, requireAdminRoute, requireImplementedAdminRoute, resolveAdminNavigation, resolveAdminWidgets, } from "./extensions.js";
40
+ export { adminRoutePageModule, adminWorkspaceHeaderActionsSlot, createAdminExtensionRegistry, defineAdminExtension, findAdminRouteContribution, requireAdminRoute, requireImplementedAdminRoute, resolveAdminNavigation, resolveAdminWidgets, } from "./extensions.js";
41
41
  export { composeLocaleMessageDefinitions, formatMessage, MessagesProvider, resolveLocaleMessages, useMessages, } from "./lib/i18n.js";
42
42
  export { getDisplayName, getInitials } from "./lib/initials.js";
43
43
  export { AdminNavigationProvider, useAdminHref, useAdminNavigate, } from "./navigation/destinations.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyant-travel/admin",
3
- "version": "0.111.2",
3
+ "version": "0.111.4",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -38,6 +38,11 @@
38
38
  "import": "./dist/app/extension-routes.js",
39
39
  "default": "./dist/app/extension-routes.js"
40
40
  },
41
+ "./components/admin-breadcrumbs": {
42
+ "types": "./dist/components/admin-breadcrumbs.d.ts",
43
+ "import": "./dist/components/admin-breadcrumbs.js",
44
+ "default": "./dist/components/admin-breadcrumbs.js"
45
+ },
41
46
  "./components/admin-nav-group": {
42
47
  "types": "./dist/components/admin-nav-group.d.ts",
43
48
  "import": "./dist/components/admin-nav-group.js",
@@ -179,8 +184,8 @@
179
184
  "@voyant-travel/ui": "^0.106.2"
180
185
  },
181
186
  "dependencies": {
182
- "@voyant-travel/i18n": "^0.106.1",
183
- "@voyant-travel/react": "^0.104.1"
187
+ "@voyant-travel/react": "^0.104.1",
188
+ "@voyant-travel/i18n": "^0.106.1"
184
189
  },
185
190
  "devDependencies": {
186
191
  "@tanstack/react-query": "^5.100.11",