@nivaro/react 0.1.260 → 0.1.262

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/dist/index.d.ts CHANGED
@@ -251,14 +251,24 @@ export declare interface ApiRequestLogFilters {
251
251
  * same-origin fetch, which is what the admin SPA needs — it is served BY the
252
252
  * API in production and proxied to it in dev, and has no provider at its root.
253
253
  */
254
- export declare function ApiUpdateBanner({ appName, fetchVersion }: {
254
+ export declare function ApiUpdateBanner({ appName, fetchVersion, releaseNotesUrl }: {
255
255
  appName?: string;
256
256
  fetchVersion?: () => Promise<ApiVersionInfo | null>;
257
+ /**
258
+ * "What changed" link (#62): given the update notice (served version +
259
+ * the version this tab loaded against), return the release-notes URL —
260
+ * the admin passes `/changelog?since=<from>&to=<version>`. Null hides it.
261
+ * Rendered as a plain anchor on purpose: following it is a full navigation,
262
+ * which lands the reader on the NEW build's notes.
263
+ */
264
+ releaseNotesUrl?: (info: ApiVersionInfo) => string | null;
257
265
  }): JSX.Element | null;
258
266
 
259
267
  export declare interface ApiVersionInfo {
260
268
  version: string;
261
269
  environment?: string;
270
+ /** The version this tab loaded against — set on an update notice only. */
271
+ from?: string | null;
262
272
  }
263
273
 
264
274
  export declare function applyValidationRule(rule: FormValidationRule_2, value: unknown, label: string, record?: Record<string, unknown>): string | null;
@@ -1755,6 +1765,12 @@ declare interface GridSpreadConfig {
1755
1765
  /** Fill only empty/zero targets (default true); false = overwrite all. */
1756
1766
  only_empty?: boolean;
1757
1767
  format?: 'currency' | 'number';
1768
+ /** Shapes offered beside the button (default all: even, front-loaded,
1769
+ * back-loaded, and "like the previous row" when one exists). */
1770
+ presets?: SpreadPreset[];
1771
+ /** Also offer a grid-level spread over every row's empty targets
1772
+ * (default true). */
1773
+ across_rows?: boolean;
1758
1774
  }
1759
1775
 
1760
1776
  /**
@@ -1873,6 +1889,40 @@ export declare interface ImportDefinition {
1873
1889
  receipt?: string | null;
1874
1890
  }
1875
1891
 
1892
+ declare interface ImportDryRun {
1893
+ created: number;
1894
+ updated: number;
1895
+ unchanged: number;
1896
+ skipped: Record<string, number>;
1897
+ failed: number;
1898
+ log: string;
1899
+ samples?: {
1900
+ creates: Array<{
1901
+ key: string;
1902
+ values: Record<string, unknown>;
1903
+ }>;
1904
+ updates: Array<{
1905
+ key: string;
1906
+ id: unknown;
1907
+ changes: Array<{
1908
+ field: string;
1909
+ from: unknown;
1910
+ to: unknown;
1911
+ }>;
1912
+ }>;
1913
+ skipped_rows: Array<{
1914
+ row: number;
1915
+ key: string | null;
1916
+ reason: string;
1917
+ }>;
1918
+ would_create_lookups: Array<{
1919
+ column: string;
1920
+ collection: string;
1921
+ values: string[];
1922
+ }>;
1923
+ };
1924
+ }
1925
+
1876
1926
  export declare function ImportFromFileButton({ collection, templateFilter, getLabel, onParsed, compact }: {
1877
1927
  collection: string;
1878
1928
  templateFilter?: (t: ImportTemplateSummary) => boolean;
@@ -1930,6 +1980,8 @@ export declare interface ImportPreview {
1930
1980
  missing_columns: string[];
1931
1981
  /** Pre-flight report — errors here block queueing server-side too. */
1932
1982
  validation?: ImportValidationReport;
1983
+ /** Service-mode definitions only: what a run would do, nothing written. */
1984
+ dry_run?: ImportDryRun | null;
1933
1985
  }
1934
1986
 
1935
1987
  /** Emitted by the worker on the `import:progress` socket event. */
@@ -2019,13 +2071,6 @@ declare interface ImportValidationReport {
2019
2071
  truncated: boolean;
2020
2072
  }
2021
2073
 
2022
- /**
2023
- * Inbound integrations — every caller that is not a person's browser session,
2024
- * as cards, plus the request log scoped to the picked one. This is the
2025
- * dedicated "external API logs" view: partner file pushes, legacy GraphQL
2026
- * writes, named API keys — who called, how often, what failed, and the exact
2027
- * response body the caller got back.
2028
- */
2029
2074
  export declare function InboundCallersView({ hours: initialHours }: {
2030
2075
  hours?: number;
2031
2076
  }): JSX.Element;
@@ -2120,7 +2165,7 @@ export declare function InlineTableField({ relatedCollection, manyField, parentI
2120
2165
  };
2121
2166
  prefillParentId?: string;
2122
2167
  parentFieldKey?: string;
2123
- }): JSX.Element;
2168
+ }): React_2.JSX.Element;
2124
2169
 
2125
2170
  declare interface InputBinding {
2126
2171
  key: string;
@@ -2821,7 +2866,7 @@ export declare function NotificationAnalyticsView({ className }: {
2821
2866
  * click-through routing via the shared notification-target resolver. Needs
2822
2867
  * `<NivaroProvider>`.
2823
2868
  */
2824
- export declare function NotificationBell({ routes, onNavigate, app, subscribe, buttonClassName, panelClassName, beforeList, extraBadge, mailLogUrl, renderTrigger, allPath, onActionError, panelPlacement }: NotificationBellProps): JSX.Element;
2869
+ export declare function NotificationBell({ routes, onNavigate, app, subscribe, buttonClassName, panelClassName, beforeList, extraBadge, mailLogUrl, renderTrigger, allPath, subscriptionsPath, onActionError, panelPlacement }: NotificationBellProps): JSX.Element;
2825
2870
 
2826
2871
  export declare interface NotificationBellProps {
2827
2872
  /** Where each notification kind lands in the host app. */
@@ -2857,6 +2902,8 @@ export declare interface NotificationBellProps {
2857
2902
  }) => ReactNode;
2858
2903
  /** Path of the full notifications page — renders a "See all" footer link. */
2859
2904
  allPath?: string | null;
2905
+ /** Path of the subscriptions page — a watch's "Why me?" offers a Manage link. */
2906
+ subscriptionsPath?: string | null;
2860
2907
  /** Called with an error message when an inline action fails. */
2861
2908
  onActionError?: (message: string) => void;
2862
2909
  /** Where the panel opens relative to the trigger. 'below' (default) keeps
@@ -2866,13 +2913,15 @@ export declare interface NotificationBellProps {
2866
2913
  panelPlacement?: 'below' | 'right';
2867
2914
  }
2868
2915
 
2869
- export declare function NotificationCenterView({ routes, onNavigate, app, mailLogUrl, onNotice, onError, className }: NotificationCenterViewProps): JSX.Element;
2916
+ export declare function NotificationCenterView({ routes, onNavigate, app, mailLogUrl, subscriptionsPath, onNotice, onError, className }: NotificationCenterViewProps): JSX.Element;
2870
2917
 
2871
2918
  export declare interface NotificationCenterViewProps {
2872
2919
  routes: NotificationRouteMap;
2873
2920
  onNavigate: (path: string) => void;
2874
2921
  app?: 'portal' | 'admin';
2875
2922
  mailLogUrl?: (mailLogId: number) => string | null;
2923
+ /** Host route of the subscriptions page (a watch's "Why me?" links there). */
2924
+ subscriptionsPath?: string | null;
2876
2925
  /** Toast hooks — hosts wire their own toaster. */
2877
2926
  onNotice?: (message: string) => void;
2878
2927
  onError?: (message: string) => void;
@@ -3832,6 +3881,12 @@ export declare interface RealtimeAdapter {
3832
3881
 
3833
3882
  export declare const RealtimeContext: Context<RealtimeAdapter | null>;
3834
3883
 
3884
+ export declare function RecentRecordsRail({ limit, title, className }: {
3885
+ limit?: number;
3886
+ title?: string;
3887
+ className?: string;
3888
+ }): JSX.Element;
3889
+
3835
3890
  export declare function RecordChatActions({ collection, itemDraft, compact }: {
3836
3891
  collection: string;
3837
3892
  itemDraft: Record<string, unknown>;
@@ -4580,6 +4635,8 @@ export declare type SlotRendererProps = {
4580
4635
 
4581
4636
  export declare function splitMessageTokens(text: string, entityPattern: string): MessageToken[];
4582
4637
 
4638
+ declare type SpreadPreset = 'even' | 'front' | 'back' | 'shape';
4639
+
4583
4640
  /**
4584
4641
  * Idempotent; safe from an effect that runs more than once, and safe to call
4585
4642
  * from several components — only the first call arms the timer.