@nivaro/react 0.2.7 → 0.2.9

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
@@ -248,6 +248,11 @@ export declare interface ApiRequestLogFilters {
248
248
  api_key?: number | null;
249
249
  inbound?: boolean;
250
250
  errors?: boolean;
251
+ /** ISO times bounding the list (a link to one request narrows to the seconds around it). */
252
+ from?: string;
253
+ to?: string;
254
+ /** Open the newest matching row once it loads (a deep link to one request). */
255
+ focus?: boolean;
251
256
  }
252
257
 
253
258
  /**
@@ -501,7 +506,7 @@ export declare function BulkActionButtons({ targets, enabledKeys, tone, disabled
501
506
  onDone?: (result: BulkRunResult & {
502
507
  action: AvailableBulkAction;
503
508
  }) => void;
504
- }): JSX.Element | null;
509
+ }): JSX.Element;
505
510
 
506
511
  declare interface BulkRunResult {
507
512
  succeeded: number;
@@ -516,6 +521,8 @@ declare interface BulkRunResult {
516
521
  declare interface BulkTarget {
517
522
  collection: string;
518
523
  id: string | number;
524
+ /** Optional display label — names the row in per-row result lists. */
525
+ label?: string | null;
519
526
  }
520
527
 
521
528
  /**
@@ -532,6 +539,15 @@ export declare function CacheStamp({ envelope, onRefresh, refreshing, className
532
539
  className?: string;
533
540
  }): JSX.Element | null;
534
541
 
542
+ export declare function CallerChangesSection({ caller, hours }: {
543
+ /** `k<api key id>` or `u<user id>`. */
544
+ caller: {
545
+ key: string;
546
+ label: string;
547
+ };
548
+ hours: number;
549
+ }): JSX.Element;
550
+
535
551
  export declare function canOpenCatalogItem(collection: string | null | undefined): boolean;
536
552
 
537
553
  export declare function canOpenChatRoom(): boolean;
@@ -540,6 +556,8 @@ export declare function canOpenDm(): boolean;
540
556
 
541
557
  export declare function canPreviewFile(type: string | null | undefined): boolean;
542
558
 
559
+ export declare function canViewAs(): boolean;
560
+
543
561
  /**
544
562
  * Grab the replay link for an error being reported right now. Resolves null
545
563
  * when no recorder is active (both settings off, recording failed, or the
@@ -1050,7 +1068,7 @@ export declare interface CollectionBrowserColumn {
1050
1068
  filterable?: boolean;
1051
1069
  }
1052
1070
 
1053
- export declare function CollectionBrowserView({ collection, quickFilters, initialColumns, initialSort, pageSize, initialSearch, initialFilters, initialConditions, onOpenItem, showCreate, className }: CollectionBrowserViewProps): React_2.JSX.Element;
1071
+ export declare function CollectionBrowserView({ collection, quickFilters, initialColumns, initialSort, pageSize, initialSearch, initialFilters, initialConditions, onOpenItem, initialAiPrompt, extraViews, showCreate, className }: CollectionBrowserViewProps): React_2.JSX.Element;
1054
1072
 
1055
1073
  export declare interface CollectionBrowserViewProps {
1056
1074
  collection: string;
@@ -1078,6 +1096,17 @@ export declare interface CollectionBrowserViewProps {
1078
1096
  }>;
1079
1097
  /** Override row-open behavior; defaults to NavigationContext itemUrl. */
1080
1098
  onOpenItem?: (id: string | number) => void;
1099
+ /** Ask the table this question once on open (e.g. a command-palette
1100
+ * hand-off, `?ai=` on the host route). */
1101
+ initialAiPrompt?: string;
1102
+ /** Host-supplied display modes beside the table (e.g. a spreadsheet or
1103
+ * calendar the host app owns). Each renders instead of the table. */
1104
+ extraViews?: Array<{
1105
+ key: string;
1106
+ label: string;
1107
+ icon?: React_2.ReactNode;
1108
+ render: () => React_2.ReactNode;
1109
+ }>;
1081
1110
  showCreate?: boolean;
1082
1111
  className?: string;
1083
1112
  }
@@ -2081,6 +2110,16 @@ export declare function fiscalQuarterOf(d: Date, startMonth?: number): number;
2081
2110
 
2082
2111
  export declare function fiscalYearOf(d: Date, startMonth?: number): number;
2083
2112
 
2113
+ /** Bring a field or a child row of the open record into view (ItemEditForm
2114
+ * listens for 'nvr:record-focus'). */
2115
+ export declare function focusRecordTarget(target: {
2116
+ collection: string;
2117
+ item: string;
2118
+ field?: string;
2119
+ childCollection?: string;
2120
+ rowId?: string;
2121
+ }): void;
2122
+
2084
2123
  /** The window event a host's socket layer dispatches on `client:force-refresh`. */
2085
2124
  export declare const FORCE_RELOAD_EVENT = "nvr:force-refresh";
2086
2125
 
@@ -2466,7 +2505,7 @@ export declare interface ImportDefinition {
2466
2505
  description: string | null;
2467
2506
  staging_table: string | null;
2468
2507
  procedure: string | null;
2469
- loader: 'bulk' | 'insert' | null;
2508
+ loader: 'bulk' | 'bulk_only' | 'insert' | null;
2470
2509
  file_types: string | null;
2471
2510
  is_active: boolean;
2472
2511
  sort: number;
@@ -2484,6 +2523,13 @@ export declare interface ImportDefinition {
2484
2523
  /** JSON array of flow ids run in order after a successful run (migration 294). */
2485
2524
  post_run_flows?: string | null;
2486
2525
  receipt?: string | null;
2526
+ /** #802 — runs sharing a group never overlap; null = the staging table. */
2527
+ lock_group?: string | null;
2528
+ /** #719 — JSON string[] of collections the procedure writes (rollups recomputed). */
2529
+ recalc_rollups?: string | null;
2530
+ /** #846 — days after the last completed run the staging table is emptied; opt-in, null/0 = keep. */
2531
+ staging_purge_days?: number | null;
2532
+ staging_purged_at?: string | null;
2487
2533
  }
2488
2534
 
2489
2535
  declare interface ImportDryRun {
@@ -2586,6 +2632,8 @@ export declare interface ImportJob {
2586
2632
  started_at: string | null;
2587
2633
  completed_at: string | null;
2588
2634
  rolled_back_at?: string | null;
2635
+ /** #748 — rows were written through the items service. */
2636
+ through_items?: boolean;
2589
2637
  }
2590
2638
 
2591
2639
  export declare type ImportJobStatus = 'pending' | 'processing' | 'complete' | 'failed';
@@ -2653,7 +2701,7 @@ export declare interface ImportRun {
2653
2701
  procedure: string | null;
2654
2702
  /** null / 'proc' = stored procedure, 'service', or a registered processor key. */
2655
2703
  processor?: string | null;
2656
- loader: 'bulk' | 'insert' | null;
2704
+ loader: 'bulk' | 'bulk_only' | 'insert' | null;
2657
2705
  definition_active: boolean | null;
2658
2706
  file_name: string | null;
2659
2707
  file_size: string | number | null;
@@ -2768,6 +2816,20 @@ export declare function InboundCallersView({ hours: initialHours }: {
2768
2816
  hours?: number;
2769
2817
  }): JSX.Element;
2770
2818
 
2819
+ /**
2820
+ * A trigger (any inline element) that opens the request behind an inbound
2821
+ * write. The event-path sheet opens AFTER the popover closes, so a sheet
2822
+ * never mounts inside a popover.
2823
+ */
2824
+ export declare function InboundRequestPopover({ activityId, callerName, collection, itemId, children, align }: {
2825
+ activityId: number;
2826
+ callerName: string;
2827
+ collection: string;
2828
+ itemId: string;
2829
+ children: ReactNode;
2830
+ align?: 'start' | 'center' | 'end';
2831
+ }): JSX.Element;
2832
+
2771
2833
  /**
2772
2834
  * Inbound: health first — the host's own live queue (an ingest backlog, say), then whether
2773
2835
  * scheduled imports are arriving on time — and investigation last, since who
@@ -2995,6 +3057,16 @@ export declare interface IntegrationPartnerCard {
2995
3057
  missing: number;
2996
3058
  overdue: number;
2997
3059
  };
3060
+ /** #612 — health-probe uptime over 24h; null when the API is not probed. */
3061
+ uptime24?: {
3062
+ pct: number | null;
3063
+ probes: number;
3064
+ buckets: Array<{
3065
+ at: string;
3066
+ ok: number;
3067
+ failed: number;
3068
+ }>;
3069
+ } | null;
2998
3070
  }
2999
3071
 
3000
3072
  export declare interface IntegrationPartnerDetail {
@@ -3047,6 +3119,29 @@ export declare type IntegrationPathDetail = {
3047
3119
  from?: string | null;
3048
3120
  to?: string | null;
3049
3121
  comment?: string | null;
3122
+ } | {
3123
+ type: 'notify';
3124
+ recipient: string;
3125
+ /** Admins only; null for everyone else. */
3126
+ subject: string | null;
3127
+ category?: string | null;
3128
+ lane?: string | null;
3129
+ channels: Array<{
3130
+ channel: string;
3131
+ status: string;
3132
+ reason?: string | null;
3133
+ }>;
3134
+ } | {
3135
+ type: 'mail';
3136
+ status: string;
3137
+ /** Admins only; null for everyone else. */
3138
+ subject: string | null;
3139
+ template?: string | null;
3140
+ /** Addresses — admins only; null for everyone else. */
3141
+ to?: string | null;
3142
+ recipients: number;
3143
+ mail_log_id: number;
3144
+ error?: string | null;
3050
3145
  };
3051
3146
 
3052
3147
  /** One step of an event's path, with the steps it set off under it. */
@@ -3078,11 +3173,11 @@ export declare interface IntegrationPathNode {
3078
3173
  members?: IntegrationPathNode[];
3079
3174
  }
3080
3175
 
3081
- /** The filter-pill set the collection browser offers (its own conditions[]
3082
- * round trip to `/items/:collection` — the queue has no equivalent server
3083
- * path, so it gets the column but not the filter). Values are the same
3084
- * bucket names `applyIntegrationsFilter` (api/src/services/items.ts) reads,
3085
- * so a picked value needs no translation before it rides a condition. */
3176
+ /** The filter set the collection browser (a `$integrations` condition to
3177
+ * `/items/:collection`) and the queue (`filters.integrations`, #630 —
3178
+ * services/queue-integrations.ts) both offer. Values are the bucket names
3179
+ * `applyIntegrationsFilter` (api/src/services/items.ts) reads, so a picked
3180
+ * value needs no translation on either surface. */
3086
3181
  export declare const INTEGRATIONS_FILTER_OPTIONS: {
3087
3182
  value: string;
3088
3183
  label: string;
@@ -3180,26 +3275,6 @@ export declare interface IntegrationSignalView {
3180
3275
  shown: number;
3181
3276
  }
3182
3277
 
3183
- export declare function IntegrationStatusBanner({ collection, itemId }: IntegrationStatusBannerProps): JSX.Element | null;
3184
-
3185
- /**
3186
- * One line per partner on the record: were they told, when, and if not, why
3187
- * not. Sits above `ErpFailureBanner`, which keeps the payload/response view
3188
- * and the retry mutation — this answers a different question ("was the
3189
- * partner told, and when") and does not replace it.
3190
- *
3191
- * Renders nothing when the record has no obligations, so a collection with
3192
- * no integrations pays one cached request and shows no chrome.
3193
- *
3194
- * `roleForTone` is imported from `IntegrationObligationsView` (the board)
3195
- * rather than duplicated here, so the board and this banner can never
3196
- * disagree about what "overdue" looks like.
3197
- */
3198
- export declare interface IntegrationStatusBannerProps {
3199
- collection: string;
3200
- itemId: string | number;
3201
- }
3202
-
3203
3278
  /** Whether this browser pinned the chat panel open — hosts read it for their
3204
3279
  * initial open state, so a pinned panel is still there after a reload. */
3205
3280
  export declare function isChatPanelPinned(): boolean;
@@ -4259,6 +4334,16 @@ export declare function OpsTasksView({ onNotice }: {
4259
4334
  onNotice?: (message: string) => void;
4260
4335
  }): JSX.Element;
4261
4336
 
4337
+ /** #615 — the Integrations dialog's "What goes out next" block. */
4338
+ export declare function OutboundPreviewSection({ collection, itemId, onShowRequest, onJump }: {
4339
+ collection: string;
4340
+ itemId: string;
4341
+ /** Open the request log row a comparison was made against. */
4342
+ onShowRequest?: (submissionId: number) => void;
4343
+ /** A readiness issue jumps to a line — the hosting dialog closes first. */
4344
+ onJump?: () => void;
4345
+ }): JSX.Element | null;
4346
+
4262
4347
  /**
4263
4348
  * Lets a host put transient overlay state — a drill-down sheet and how deep it
4264
4349
  * is — into browser history, so Back closes the sheet instead of abandoning the
@@ -4408,6 +4493,11 @@ declare interface PartnerContract {
4408
4493
  detail: string | null;
4409
4494
  }
4410
4495
 
4496
+ export declare function PartnerDependenciesPanel({ callerKey, label }: {
4497
+ callerKey: string;
4498
+ label: string;
4499
+ }): JSX.Element;
4500
+
4411
4501
  export declare function PartnerDetail({ apiId, onClose, initialTab }: PartnerDetailProps): JSX.Element;
4412
4502
 
4413
4503
  export declare interface PartnerDetailProps {
@@ -4424,7 +4514,7 @@ export declare interface PartnersViewProps {
4424
4514
  onOpenChange?: (id: number | null) => void;
4425
4515
  }
4426
4516
 
4427
- declare type PathStepKind = 'request' | 'cron' | 'import' | 'feed' | 'write' | 'transition' | 'flow' | 'push' | 'attempt' | 'partner_call' | 'group';
4517
+ declare type PathStepKind = 'request' | 'cron' | 'import' | 'feed' | 'write' | 'transition' | 'flow' | 'push' | 'attempt' | 'partner_call' | 'notify' | 'mail' | 'group';
4428
4518
 
4429
4519
  declare interface PendingTask {
4430
4520
  title: string;
@@ -4438,6 +4528,38 @@ declare interface PendingTask {
4438
4528
  priority?: string;
4439
4529
  }
4440
4530
 
4531
+ /**
4532
+ * The same, minus machine identities (bots, integrations, service accounts,
4533
+ * placeholders — `account_kind` set). A person picking a contact or an
4534
+ * assignee should only ever be offered people; admins keep the machine
4535
+ * accounts because they occasionally configure one on purpose.
4536
+ */
4537
+ export declare const PEOPLE_USER_OPTION_FILTER: {
4538
+ _and: ({
4539
+ is_redacted: {
4540
+ _eq: boolean;
4541
+ };
4542
+ _or?: undefined;
4543
+ } | {
4544
+ _or: ({
4545
+ status: {
4546
+ _neq: string;
4547
+ _null?: undefined;
4548
+ };
4549
+ } | {
4550
+ status: {
4551
+ _null: boolean;
4552
+ _neq?: undefined;
4553
+ };
4554
+ })[];
4555
+ is_redacted?: undefined;
4556
+ } | {
4557
+ account_kind: {
4558
+ _null: boolean;
4559
+ };
4560
+ })[];
4561
+ };
4562
+
4441
4563
  /**
4442
4564
  * The identity band at the top of someone's page: who they are, whether
4443
4565
  * they are reachable right now, and the three ways to reach them. Admin-only
@@ -4531,6 +4653,12 @@ export declare interface PersonProfileData {
4531
4653
  values: string[];
4532
4654
  }>;
4533
4655
  open_tasks: number;
4656
+ /** When they are usually around (UTC hours, 10th–90th percentile of their actions). */
4657
+ typical_hours_utc?: {
4658
+ start: number;
4659
+ end: number;
4660
+ samples: number;
4661
+ } | null;
4534
4662
  admin: {
4535
4663
  account_kind: string | null;
4536
4664
  city: string | null;
@@ -4668,6 +4796,33 @@ export declare function PipelineTransitionButtons({ collection, item, onBeforeTr
4668
4796
  wrap?: boolean;
4669
4797
  }): JSX.Element | null;
4670
4798
 
4799
+ export declare interface PlanGridHost {
4800
+ renderRowHistory?: (args: PlanGridRowHistoryArgs) => ReactNode | null;
4801
+ }
4802
+
4803
+ export declare const PlanGridHostContext: Context<PlanGridHost | null>;
4804
+
4805
+ /**
4806
+ * What a host may put in place of a plan grid's generic parts (#842). Core
4807
+ * stays domain-free: a host that has a richer history for a collection (a
4808
+ * forecast history with restores and accuracy) renders it here; returning
4809
+ * null keeps the generic row-history sheet.
4810
+ */
4811
+ export declare interface PlanGridRowHistoryArgs {
4812
+ /** The plan rows' collection ("forecasts"). */
4813
+ collection: string;
4814
+ /** The record the grid belongs to. */
4815
+ parentId: string;
4816
+ /** The saved row, when there is one. */
4817
+ rowId: string | null;
4818
+ /** The row's key value ("2026"). */
4819
+ key: string;
4820
+ /** The row's category id when the key is split by category, else null. */
4821
+ category: string | null;
4822
+ categoryLabel: (id: string | number) => string;
4823
+ onClose: () => void;
4824
+ }
4825
+
4671
4826
  /** Play the configured notification sound. No-op for 'off'/unknown/unavailable audio. */
4672
4827
  export declare function playNotificationSound(kind: NotificationSound | string | null | undefined): void;
4673
4828
 
@@ -4761,6 +4916,24 @@ declare type ProposalPollAnswer = {
4761
4916
  json: any;
4762
4917
  };
4763
4918
 
4919
+ /**
4920
+ * "Ready" / "2 lines missing Sales order" beside a button that sends
4921
+ * something to a partner. Give it a transition id (the pipeline pre-flight)
4922
+ * or an item action id (the extension's own pre-flight).
4923
+ */
4924
+ export declare function PushReadinessChip({ collection, itemId, transitionId, itemActionId, label, compact, onJump }: {
4925
+ collection: string;
4926
+ itemId: string;
4927
+ transitionId?: string;
4928
+ itemActionId?: string;
4929
+ /** What the button does — "Submit to Warehouse". */
4930
+ label: string;
4931
+ /** Header use: a dot + a short word; the popover says the rest. */
4932
+ compact?: boolean;
4933
+ /** Called before a jump — a hosting dialog closes so the line shows. */
4934
+ onJump?: () => void;
4935
+ }): JSX.Element | null;
4936
+
4764
4937
  export declare function QualityRulesView({ className }: {
4765
4938
  className?: string;
4766
4939
  }): JSX.Element;
@@ -5326,6 +5499,48 @@ export declare function RecordDrilldownSheet({ collection, itemId, layoutId, roo
5326
5499
  onClose: () => void;
5327
5500
  }): JSX.Element;
5328
5501
 
5502
+ export declare function RecordGraphExplorer({ collection, itemId, className }: {
5503
+ collection: string;
5504
+ itemId: string;
5505
+ className?: string;
5506
+ }): JSX.Element;
5507
+
5508
+ export declare interface RecordGraphGroup {
5509
+ key: string;
5510
+ direction: 'out' | 'in' | 'm2m';
5511
+ field: string;
5512
+ label: string;
5513
+ collection: string;
5514
+ collection_label: string;
5515
+ total: number;
5516
+ items: RecordGraphNode[];
5517
+ }
5518
+
5519
+ /**
5520
+ * Relationship explorer (#998). A record's neighbourhood drawn as a tree that
5521
+ * grows one hop at a time: the record, the relations it takes part in
5522
+ * (grouped — "Purchase orders · 3"), and the records behind each group. Any
5523
+ * record node expands the same way, so a workflow → its PO → the PO's
5524
+ * invoices is three clicks. Clicking a record opens it in the drill sheet
5525
+ * (or navigates when the host has none).
5526
+ *
5527
+ * Every hop is read as the viewer by GET /record-graph/:collection/:id, so
5528
+ * the picture never shows a record the viewer could not open themselves.
5529
+ */
5530
+ export declare interface RecordGraphNode {
5531
+ collection: string;
5532
+ id: string;
5533
+ label: string;
5534
+ }
5535
+
5536
+ /** Right sheet hosting the explorer — hosts mount it beside the record form. */
5537
+ export declare function RecordGraphSheet({ collection, itemId, open, onOpenChange }: {
5538
+ collection: string;
5539
+ itemId: string;
5540
+ open: boolean;
5541
+ onOpenChange: (v: boolean) => void;
5542
+ }): JSX.Element;
5543
+
5329
5544
  export declare function RecordGridEditor({ config }: {
5330
5545
  config: RecordGridEditorConfig;
5331
5546
  }): JSX.Element;
@@ -5489,6 +5704,9 @@ export declare function registerLayoutSlot(plugin: LayoutSlotPlugin): void;
5489
5704
 
5490
5705
  export declare function registerRoomOpener(fn: RoomOpener): () => void;
5491
5706
 
5707
+ /** Register the host's opener. Returns an unregister function. */
5708
+ export declare function registerViewAsOpener(fn: ViewAsOpener): () => void;
5709
+
5492
5710
  export declare function RelatedRecordsPanel({ collection, itemId, title, defaultExpanded }: {
5493
5711
  collection: string;
5494
5712
  itemId: string;
@@ -6475,6 +6693,15 @@ export declare function toneForOutcome(outcome: string): 'danger' | 'warning' |
6475
6693
  /** Install the listeners. Safe to call more than once. */
6476
6694
  export declare function trackActivity(): void;
6477
6695
 
6696
+ export declare function TrafficMiniMap({ window: win, tone, href, refreshMs, className }: {
6697
+ window?: 60 | 300 | 900;
6698
+ tone?: 'auto' | 'dark';
6699
+ /** Where "Open" goes. An absolute URL (another app's admin) opens in a new tab; default /traffic-map. */
6700
+ href?: string;
6701
+ refreshMs?: number;
6702
+ className?: string;
6703
+ }): JSX.Element | null;
6704
+
6478
6705
  /**
6479
6706
  * Translate scope values (target-collection IDS) into a filter's value space.
6480
6707
  * When the filter compares ids (valueField 'id'/undefined) this is identity;
@@ -6886,6 +7113,8 @@ export declare function usePeerReadAt(room: string | null): string | null;
6886
7113
 
6887
7114
  export declare function usePersonProfile(userId: string | null | undefined): UseQueryResult<NoInfer<PersonProfileData | null>, Error>;
6888
7115
 
7116
+ export declare function usePlanGridHost(): PlanGridHost | null;
7117
+
6889
7118
  /**
6890
7119
  * The quick picker BEFORE a record exists — the "+ New" menus open it, and on
6891
7120
  * Create the host navigates to the new-record page with the picks in
@@ -6979,6 +7208,33 @@ export declare function useRoomMembership(): {
6979
7208
 
6980
7209
  export declare function useRoomPins(room: string | null): NoInfer<PinnedMessage[]>;
6981
7210
 
7211
+ /** The user-picker option filter for this viewer (#732). */
7212
+ export declare function userOptionFilter(isAdmin: boolean): {
7213
+ _and: ({
7214
+ is_redacted: {
7215
+ _eq: boolean;
7216
+ };
7217
+ _or?: undefined;
7218
+ } | {
7219
+ _or: ({
7220
+ status: {
7221
+ _neq: string;
7222
+ _null?: undefined;
7223
+ };
7224
+ } | {
7225
+ status: {
7226
+ _null: boolean;
7227
+ _neq?: undefined;
7228
+ };
7229
+ })[];
7230
+ is_redacted?: undefined;
7231
+ } | {
7232
+ account_kind: {
7233
+ _null: boolean;
7234
+ };
7235
+ })[];
7236
+ };
7237
+
6982
7238
  /** Stacked avatar cluster (+N) with a hover/pinnable portal roster whose rows
6983
7239
  * are UserChips — the single user-display primitive for owners/user lists.
6984
7240
  * Reused by the item-header Owners chip and the collection browser. */
@@ -7085,6 +7341,23 @@ declare interface ValidationResult {
7085
7341
  unknownTokens: string[];
7086
7342
  }
7087
7343
 
7344
+ export declare function viewAs(person: {
7345
+ id: string;
7346
+ name: string;
7347
+ }): void | Promise<void>;
7348
+
7349
+ /**
7350
+ * "View as" registry (#640). A profile page offers "View as <person>" only
7351
+ * while the host app has said how it opens itself as someone else — the
7352
+ * admin opens a new tab on a per-tab masquerade token; a host without the
7353
+ * idea never registers and the button never shows. Same shape as the chat
7354
+ * DM opener registry.
7355
+ */
7356
+ declare type ViewAsOpener = (person: {
7357
+ id: string;
7358
+ name: string;
7359
+ }) => void | Promise<void>;
7360
+
7088
7361
  export declare function WidgetSlot({ widgetId, inputBindings, itemDraft, itemCollection, ready, label, defaultExpanded, frameless, apiBase: apiBaseProp, compact, strip, onClientAction, onWidgetType, onContentChange }: WidgetSlotProps): JSX.Element | null;
7089
7362
 
7090
7363
  declare interface WidgetSlotProps {