@nivaro/react 0.1.285 → 0.1.287
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/full.css +1 -1
- package/dist/index.d.ts +425 -3
- package/dist/index.js +29203 -25101
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1211,6 +1211,8 @@ export declare function deriveGroupKey<T extends QueueGroupingRow>(row: T, attri
|
|
|
1211
1211
|
|
|
1212
1212
|
export declare function describeCron(cron: string): string;
|
|
1213
1213
|
|
|
1214
|
+
declare type DetailTab = 'calls' | 'submissions' | 'obligations' | 'contracts';
|
|
1215
|
+
|
|
1214
1216
|
declare type DigestFrequency = 'instant' | 'daily' | 'weekly';
|
|
1215
1217
|
|
|
1216
1218
|
declare type DimensionCascadeRule = {
|
|
@@ -1321,6 +1323,33 @@ export declare function ErpFailureBanner({ collection, itemId }: {
|
|
|
1321
1323
|
itemId: string;
|
|
1322
1324
|
}): JSX.Element | null;
|
|
1323
1325
|
|
|
1326
|
+
/**
|
|
1327
|
+
* One outbound submission — status, endpoint, reference, and on expand the
|
|
1328
|
+
* stored request/response plus every attempt. Shared by the record header's
|
|
1329
|
+
* External requests dialog and the Integrations console's partner detail.
|
|
1330
|
+
*/
|
|
1331
|
+
export declare interface ErpSubmission {
|
|
1332
|
+
id: number;
|
|
1333
|
+
external_api: number | null;
|
|
1334
|
+
external_api_name?: string | null;
|
|
1335
|
+
external_ref: string | null;
|
|
1336
|
+
status: string;
|
|
1337
|
+
attempts: number;
|
|
1338
|
+
last_error: string | null;
|
|
1339
|
+
endpoint_path: string | null;
|
|
1340
|
+
payload: unknown;
|
|
1341
|
+
response: unknown;
|
|
1342
|
+
created_at: string;
|
|
1343
|
+
updated_at: string;
|
|
1344
|
+
collection: string;
|
|
1345
|
+
item: string;
|
|
1346
|
+
/** The record's friendly (human-facing) id — present only where the
|
|
1347
|
+
* caller batch-resolved it (the partner detail's cross-record listing).
|
|
1348
|
+
* A record page hosting its OWN External requests dialog already IS that
|
|
1349
|
+
* record, so it never needs this badge and doesn't send it. */
|
|
1350
|
+
record_label?: string;
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1324
1353
|
export declare interface ErrorReplayLink {
|
|
1325
1354
|
recording_id: string;
|
|
1326
1355
|
/** Milliseconds into the recording where the error happened. Null for
|
|
@@ -1421,15 +1450,16 @@ export declare type ExprValue = number | string | boolean | null;
|
|
|
1421
1450
|
|
|
1422
1451
|
/**
|
|
1423
1452
|
* Item-header chip summarizing every external (ERP) request this record has
|
|
1424
|
-
* sent — badge counts by outcome, click for the full request/response log
|
|
1425
|
-
*
|
|
1453
|
+
* sent — badge counts by outcome, click for the full request/response log
|
|
1454
|
+
* (each request drills into every attempt). Always renders: a skeleton while
|
|
1455
|
+
* loading, a quiet 'No external requests' when nothing was sent. Shares the
|
|
1426
1456
|
* ['erp-submissions', collection, item] cache with ErpFailureBanner, so
|
|
1427
1457
|
* transition writebacks refresh both.
|
|
1428
1458
|
*/
|
|
1429
1459
|
export declare function ExternalRequestsChip({ collection, itemId }: {
|
|
1430
1460
|
collection: string;
|
|
1431
1461
|
itemId: string;
|
|
1432
|
-
}): JSX.Element
|
|
1462
|
+
}): JSX.Element;
|
|
1433
1463
|
|
|
1434
1464
|
/** Field paths an expression reads, without evaluating it. */
|
|
1435
1465
|
export declare function extractExpressionTokens(src: string): string[];
|
|
@@ -1617,6 +1647,16 @@ declare interface FilterOptionSpec {
|
|
|
1617
1647
|
* (ids → names), ≥/≤ for ranges, first two entries + count for multiselects. */
|
|
1618
1648
|
export declare function filterValueDisplay(def: FilterDef, value: string | string[]): string;
|
|
1619
1649
|
|
|
1650
|
+
export declare function FirefightView({ onOpenRecord, onJumpTab, focusSignal }: FirefightViewProps): JSX.Element;
|
|
1651
|
+
|
|
1652
|
+
export declare interface FirefightViewProps {
|
|
1653
|
+
onOpenRecord?: (collection: string, id: string) => void;
|
|
1654
|
+
/** Move to another console tab, carrying context (e.g. `{ apiId }`). */
|
|
1655
|
+
onJumpTab?: (tab: string, context?: Record<string, unknown>) => void;
|
|
1656
|
+
/** Expand this signal on first load (a notification deep link). */
|
|
1657
|
+
focusSignal?: string;
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1620
1660
|
export declare function FirstLoginChecklist({ profileUrl }: {
|
|
1621
1661
|
profileUrl?: string;
|
|
1622
1662
|
}): JSX.Element | null;
|
|
@@ -1972,6 +2012,11 @@ export declare interface ImportConsoleProps {
|
|
|
1972
2012
|
|
|
1973
2013
|
export declare type ImportConsoleTab = 'runs' | 'collection' | 'definitions';
|
|
1974
2014
|
|
|
2015
|
+
/** The instance-wide default cadence — header of the imports table. */
|
|
2016
|
+
export declare function ImportDefaultCadenceControl({ className }: {
|
|
2017
|
+
className?: string;
|
|
2018
|
+
}): JSX.Element;
|
|
2019
|
+
|
|
1975
2020
|
export declare interface ImportDefinition {
|
|
1976
2021
|
id: number;
|
|
1977
2022
|
key: string;
|
|
@@ -2043,6 +2088,32 @@ export declare function ImportFromFileButton({ collection, templateFilter, getLa
|
|
|
2043
2088
|
compact?: boolean;
|
|
2044
2089
|
}): JSX.Element | null;
|
|
2045
2090
|
|
|
2091
|
+
declare interface ImportHealth {
|
|
2092
|
+
rows: ImportHealthRow[];
|
|
2093
|
+
default_hours: number;
|
|
2094
|
+
}
|
|
2095
|
+
|
|
2096
|
+
/**
|
|
2097
|
+
* Per-import staleness — how often each staged import is expected to succeed
|
|
2098
|
+
* before it counts as stale. ONE store (the stale-import signal's settings:
|
|
2099
|
+
* `default_hours` and `cadence_hours:<import key>`, 0 = not monitored) and
|
|
2100
|
+
* ONE query key, so the Import Console and the Integrations console always
|
|
2101
|
+
* show the same value: an edit in either refreshes both.
|
|
2102
|
+
*/
|
|
2103
|
+
export declare interface ImportHealthRow {
|
|
2104
|
+
key: string;
|
|
2105
|
+
label: string;
|
|
2106
|
+
is_active: boolean;
|
|
2107
|
+
last_status: string | null;
|
|
2108
|
+
last_run_at: string | null;
|
|
2109
|
+
last_ok_at: string | null;
|
|
2110
|
+
failures7d: number;
|
|
2111
|
+
/** Expected hours between successes; 0 when not monitored or dormant. */
|
|
2112
|
+
cadence_hours: number;
|
|
2113
|
+
cadence_source: 'default' | 'override' | 'excluded' | 'dormant';
|
|
2114
|
+
stale: boolean;
|
|
2115
|
+
}
|
|
2116
|
+
|
|
2046
2117
|
declare type ImportIssue = ImportParseResponse['issues'][number];
|
|
2047
2118
|
|
|
2048
2119
|
export declare function ImportIssuesPanel({ issues, onDismiss }: {
|
|
@@ -2144,6 +2215,22 @@ export declare interface ImportRun {
|
|
|
2144
2215
|
/** Shared types for the Import Console (`/api/staged-imports`). */
|
|
2145
2216
|
export declare type ImportRunStatus = 'queued' | 'running' | 'completed' | 'error' | 'canceled';
|
|
2146
2217
|
|
|
2218
|
+
/** The chip a definitions list shows beside each import. */
|
|
2219
|
+
export declare function ImportStalenessChip({ importKey }: {
|
|
2220
|
+
importKey: string;
|
|
2221
|
+
}): JSX.Element | null;
|
|
2222
|
+
|
|
2223
|
+
export declare function ImportStalenessControl({ importKey, label, compact, className }: ImportStalenessControlProps): JSX.Element;
|
|
2224
|
+
|
|
2225
|
+
export declare interface ImportStalenessControlProps {
|
|
2226
|
+
/** The import definition's key; absent for a definition that isn't saved yet. */
|
|
2227
|
+
importKey?: string | null;
|
|
2228
|
+
label?: string;
|
|
2229
|
+
/** Table-cell size: the state opens its editor in a popover beside it. */
|
|
2230
|
+
compact?: boolean;
|
|
2231
|
+
className?: string;
|
|
2232
|
+
}
|
|
2233
|
+
|
|
2147
2234
|
/** Live queue depth is never windowed; the rest respects `window_days`. */
|
|
2148
2235
|
export declare interface ImportStats {
|
|
2149
2236
|
window_days: number;
|
|
@@ -2189,6 +2276,19 @@ export declare function InboundCallersView({ hours: initialHours }: {
|
|
|
2189
2276
|
hours?: number;
|
|
2190
2277
|
}): JSX.Element;
|
|
2191
2278
|
|
|
2279
|
+
/**
|
|
2280
|
+
* Inbound: health first — the host's own live queue (an ingest backlog, say), then whether
|
|
2281
|
+
* scheduled imports are arriving on time — and investigation last, since who
|
|
2282
|
+
* called in and exactly what they sent is what you reach for once something
|
|
2283
|
+
* above already looks wrong, not on every visit.
|
|
2284
|
+
*/
|
|
2285
|
+
export declare function InboundView({ extra }: InboundViewProps): JSX.Element;
|
|
2286
|
+
|
|
2287
|
+
export declare interface InboundViewProps {
|
|
2288
|
+
/** Host content rendered after the shared sections (a deployment's own queues). */
|
|
2289
|
+
extra?: ReactNode;
|
|
2290
|
+
}
|
|
2291
|
+
|
|
2192
2292
|
export declare function InlineTableField({ relatedCollection, manyField, parentId, parentCollection, layoutId, showRowRevisions, rowComments, allowRevisionRestore, saveMode, showLineNumbers, enableReorder, parentCascades, rowRules, columnPresets, defaultPreset, drawerRelations, parentContextFields, uniqueBy, sortField, sortDir, sectionGroupBy, freezeFirstColumn, rowFilter, rowDefaults, allocateDrawer, autoAllocate, rowBulkActions, uploadTemplate, rowMatchPanel, lineSla, rowLints, stats, compareSeries, sumCap, spreadRemaining, submissionErrors, prefillParentId, parentFieldKey, readOnly, emptyLabel, editorMode }: {
|
|
2193
2293
|
relatedCollection: string;
|
|
2194
2294
|
manyField: string;
|
|
@@ -2287,6 +2387,12 @@ declare interface InputBinding {
|
|
|
2287
2387
|
binding_value: string;
|
|
2288
2388
|
}
|
|
2289
2389
|
|
|
2390
|
+
export declare type IntegrationActionResult = {
|
|
2391
|
+
key: string;
|
|
2392
|
+
ok: boolean;
|
|
2393
|
+
message: string;
|
|
2394
|
+
};
|
|
2395
|
+
|
|
2290
2396
|
export declare function IntegrationDots({ rows, className }: IntegrationDotsProps): JSX.Element;
|
|
2291
2397
|
|
|
2292
2398
|
export declare interface IntegrationDotsProps {
|
|
@@ -2306,6 +2412,56 @@ export declare interface IntegrationObligationsViewProps {
|
|
|
2306
2412
|
className?: string;
|
|
2307
2413
|
}
|
|
2308
2414
|
|
|
2415
|
+
export declare interface IntegrationPartnerCard {
|
|
2416
|
+
id: number;
|
|
2417
|
+
name: string;
|
|
2418
|
+
enabled: boolean;
|
|
2419
|
+
health: IntegrationPartnerHealth;
|
|
2420
|
+
calls24: number;
|
|
2421
|
+
success_pct24: number | null;
|
|
2422
|
+
success_pct7d: number | null;
|
|
2423
|
+
p50_ms: number | null;
|
|
2424
|
+
p95_ms: number | null;
|
|
2425
|
+
last_ok_at: string | null;
|
|
2426
|
+
last_fail_at: string | null;
|
|
2427
|
+
last_fail_reason: string | null;
|
|
2428
|
+
hourly: Array<{
|
|
2429
|
+
hour: string;
|
|
2430
|
+
ok: number;
|
|
2431
|
+
failed: number;
|
|
2432
|
+
}>;
|
|
2433
|
+
flags: {
|
|
2434
|
+
test_endpoint: boolean;
|
|
2435
|
+
mock: boolean;
|
|
2436
|
+
auth_failing: boolean;
|
|
2437
|
+
};
|
|
2438
|
+
owner: {
|
|
2439
|
+
id: string;
|
|
2440
|
+
name: string;
|
|
2441
|
+
} | null;
|
|
2442
|
+
obligations: {
|
|
2443
|
+
sent: number;
|
|
2444
|
+
pending: number;
|
|
2445
|
+
failed: number;
|
|
2446
|
+
missing: number;
|
|
2447
|
+
overdue: number;
|
|
2448
|
+
};
|
|
2449
|
+
}
|
|
2450
|
+
|
|
2451
|
+
export declare interface IntegrationPartnerDetail {
|
|
2452
|
+
card: IntegrationPartnerCard;
|
|
2453
|
+
calls: PartnerCall[];
|
|
2454
|
+
contracts: PartnerContract[];
|
|
2455
|
+
}
|
|
2456
|
+
|
|
2457
|
+
export declare type IntegrationPartnerHealth = 'healthy' | 'degraded' | 'failing' | 'idle';
|
|
2458
|
+
|
|
2459
|
+
export declare interface IntegrationPartnersSummary {
|
|
2460
|
+
calls24: number;
|
|
2461
|
+
success_pct24: number | null;
|
|
2462
|
+
not_healthy: number;
|
|
2463
|
+
}
|
|
2464
|
+
|
|
2309
2465
|
/** The filter-pill set the collection browser offers (its own conditions[]
|
|
2310
2466
|
* round trip to `/items/:collection` — the queue has no equivalent server
|
|
2311
2467
|
* path, so it gets the column but not the filter). Values are the same
|
|
@@ -2316,6 +2472,98 @@ export declare const INTEGRATIONS_FILTER_OPTIONS: {
|
|
|
2316
2472
|
label: string;
|
|
2317
2473
|
}[];
|
|
2318
2474
|
|
|
2475
|
+
/**
|
|
2476
|
+
* The Integrations console: everything that talks to an outside system on one
|
|
2477
|
+
* page, in the order an operator asks — what is broken now (Firefight), how
|
|
2478
|
+
* each partner is doing (Partners), what the partners reported (Events), who
|
|
2479
|
+
* is calling us (Inbound). Hosts add their own tabs through `extraTabs`.
|
|
2480
|
+
*/
|
|
2481
|
+
export declare function IntegrationsConsole({ extraTabs, tab, onTabChange, onOpenRecord, focusSignal, inboundExtra, className }: IntegrationsConsoleProps): JSX.Element;
|
|
2482
|
+
|
|
2483
|
+
export declare interface IntegrationsConsoleProps {
|
|
2484
|
+
/** Host tabs, inserted after Events (e.g. a deployment's own integrations). */
|
|
2485
|
+
extraTabs?: IntegrationsConsoleTab[];
|
|
2486
|
+
/** Controlled tab — pair with onTabChange to keep it in the URL. */
|
|
2487
|
+
tab?: string;
|
|
2488
|
+
onTabChange?: (key: string) => void;
|
|
2489
|
+
onOpenRecord?: (collection: string, id: string) => void;
|
|
2490
|
+
/** Expand this Firefight signal on first load. */
|
|
2491
|
+
focusSignal?: string;
|
|
2492
|
+
/** Host content rendered at the end of the Inbound tab (a deployment's own queues). */
|
|
2493
|
+
inboundExtra?: ReactNode;
|
|
2494
|
+
className?: string;
|
|
2495
|
+
}
|
|
2496
|
+
|
|
2497
|
+
export declare interface IntegrationsConsoleTab {
|
|
2498
|
+
key: string;
|
|
2499
|
+
label: string;
|
|
2500
|
+
render: () => ReactNode;
|
|
2501
|
+
}
|
|
2502
|
+
|
|
2503
|
+
/**
|
|
2504
|
+
* HTTP shapes served by GET /integration-signals and /integration-partners —
|
|
2505
|
+
* copied from the core routes so the shared package never imports api code.
|
|
2506
|
+
*/
|
|
2507
|
+
export declare interface IntegrationSignalAction {
|
|
2508
|
+
kind: 'retry_submission' | 'resend' | 'open' | 'explain' | 'extension';
|
|
2509
|
+
label: string;
|
|
2510
|
+
/** Extension action id (kind 'extension'), submission id (retry). */
|
|
2511
|
+
id?: string;
|
|
2512
|
+
payload?: Record<string, unknown>;
|
|
2513
|
+
}
|
|
2514
|
+
|
|
2515
|
+
export declare interface IntegrationSignalRow {
|
|
2516
|
+
key: string;
|
|
2517
|
+
group?: string;
|
|
2518
|
+
group_label?: string;
|
|
2519
|
+
title: string;
|
|
2520
|
+
detail?: string;
|
|
2521
|
+
since?: string;
|
|
2522
|
+
/** Identity of THIS occurrence (a run id, a submission attempt...) — what
|
|
2523
|
+
* Dismiss keys on, distinct from `key` (the problem itself). */
|
|
2524
|
+
occurrence?: string;
|
|
2525
|
+
api?: string;
|
|
2526
|
+
record?: {
|
|
2527
|
+
collection: string;
|
|
2528
|
+
id: string;
|
|
2529
|
+
label?: string;
|
|
2530
|
+
};
|
|
2531
|
+
actions: IntegrationSignalAction[];
|
|
2532
|
+
/** What opens in place under this row — the failed push, the import run. */
|
|
2533
|
+
drill?: SignalDrill;
|
|
2534
|
+
/** When the snapshot first saw this problem. */
|
|
2535
|
+
first_seen: string;
|
|
2536
|
+
/** Present only on rows in `snoozed`. */
|
|
2537
|
+
snooze?: RowSnooze;
|
|
2538
|
+
}
|
|
2539
|
+
|
|
2540
|
+
export declare interface IntegrationSignalsSnapshot {
|
|
2541
|
+
checked_at: string | null;
|
|
2542
|
+
stale: boolean;
|
|
2543
|
+
signals: IntegrationSignalView[];
|
|
2544
|
+
}
|
|
2545
|
+
|
|
2546
|
+
export declare interface IntegrationSignalView {
|
|
2547
|
+
id: string;
|
|
2548
|
+
label: string;
|
|
2549
|
+
description: string;
|
|
2550
|
+
tab: string;
|
|
2551
|
+
severity: 'critical' | 'warn';
|
|
2552
|
+
count: number;
|
|
2553
|
+
error: string | null;
|
|
2554
|
+
last_run: string | null;
|
|
2555
|
+
thresholds: SignalThreshold[];
|
|
2556
|
+
settings: {
|
|
2557
|
+
enabled: boolean;
|
|
2558
|
+
severity: 'critical' | 'warn';
|
|
2559
|
+
thresholds: Record<string, number>;
|
|
2560
|
+
};
|
|
2561
|
+
rows: IntegrationSignalRow[];
|
|
2562
|
+
snoozed: IntegrationSignalRow[];
|
|
2563
|
+
/** Rows actually returned (the evaluator may count more than it lists). */
|
|
2564
|
+
shown: number;
|
|
2565
|
+
}
|
|
2566
|
+
|
|
2319
2567
|
export declare function IntegrationStatusBanner({ collection, itemId }: IntegrationStatusBannerProps): JSX.Element | null;
|
|
2320
2568
|
|
|
2321
2569
|
/**
|
|
@@ -3402,6 +3650,67 @@ declare interface ParseSuccess {
|
|
|
3402
3650
|
tokens: string[];
|
|
3403
3651
|
}
|
|
3404
3652
|
|
|
3653
|
+
/**
|
|
3654
|
+
* One row of Partner detail's Recent calls list (GET /integration-partners/:id).
|
|
3655
|
+
* `source: 'log'` carries a real body to open (GET .../calls/:callId);
|
|
3656
|
+
* `'outbound'` is the always-on counter row for a call that never landed one
|
|
3657
|
+
* (before Task 15's extension-call fix, or any caller still passing no
|
|
3658
|
+
* `_log`) — it opens to "nothing recorded", never a fetch.
|
|
3659
|
+
*/
|
|
3660
|
+
declare interface PartnerCall {
|
|
3661
|
+
key: string;
|
|
3662
|
+
id: number;
|
|
3663
|
+
source: 'log' | 'outbound';
|
|
3664
|
+
created_at: string;
|
|
3665
|
+
method: string | null;
|
|
3666
|
+
path: string | null;
|
|
3667
|
+
status: number | null;
|
|
3668
|
+
ok: boolean | number;
|
|
3669
|
+
duration_ms: number | null;
|
|
3670
|
+
error: string | null;
|
|
3671
|
+
triggered_by: string | null;
|
|
3672
|
+
has_body: boolean;
|
|
3673
|
+
user: PartnerCallUser | null;
|
|
3674
|
+
}
|
|
3675
|
+
|
|
3676
|
+
/** One user recorded on a call — via nivaro_users, batch-resolved server-side
|
|
3677
|
+
* through the same helper the push drill-down uses, so a suspended or
|
|
3678
|
+
* machine account carries the same `inactive`/`account_kind` facts here as
|
|
3679
|
+
* it does on a `Requester` elsewhere in the console. */
|
|
3680
|
+
declare interface PartnerCallUser {
|
|
3681
|
+
id: string;
|
|
3682
|
+
name: string;
|
|
3683
|
+
email: string | null;
|
|
3684
|
+
/** 'suspended' / 'inactive' / 'redacted' — a person who can no longer act. */
|
|
3685
|
+
inactive: string | null;
|
|
3686
|
+
/** integration | bot | service | placeholder — never a person. */
|
|
3687
|
+
account_kind: string | null;
|
|
3688
|
+
}
|
|
3689
|
+
|
|
3690
|
+
declare interface PartnerContract {
|
|
3691
|
+
endpoint_id: number;
|
|
3692
|
+
name: string;
|
|
3693
|
+
last_run: string | null;
|
|
3694
|
+
ok: boolean | number | null;
|
|
3695
|
+
detail: string | null;
|
|
3696
|
+
}
|
|
3697
|
+
|
|
3698
|
+
export declare function PartnerDetail({ apiId, onClose, initialTab }: PartnerDetailProps): JSX.Element;
|
|
3699
|
+
|
|
3700
|
+
export declare interface PartnerDetailProps {
|
|
3701
|
+
apiId: number;
|
|
3702
|
+
onClose: () => void;
|
|
3703
|
+
initialTab?: DetailTab;
|
|
3704
|
+
}
|
|
3705
|
+
|
|
3706
|
+
export declare function PartnersView({ openId, onOpenChange }?: PartnersViewProps): JSX.Element;
|
|
3707
|
+
|
|
3708
|
+
export declare interface PartnersViewProps {
|
|
3709
|
+
/** Detail sheet open on this partner (controlled by the frame). */
|
|
3710
|
+
openId?: number | null;
|
|
3711
|
+
onOpenChange?: (id: number | null) => void;
|
|
3712
|
+
}
|
|
3713
|
+
|
|
3405
3714
|
declare interface PendingTask {
|
|
3406
3715
|
title: string;
|
|
3407
3716
|
assignee: string | null;
|
|
@@ -4030,6 +4339,9 @@ export declare interface QuickPickerProps {
|
|
|
4030
4339
|
className?: string;
|
|
4031
4340
|
}
|
|
4032
4341
|
|
|
4342
|
+
/** Critical first, then the problem that has been open longest. */
|
|
4343
|
+
export declare function rankSignals(signals: IntegrationSignalView[]): IntegrationSignalView[];
|
|
4344
|
+
|
|
4033
4345
|
/**
|
|
4034
4346
|
* Tier a team against a cell's filter values. `out` carries the human
|
|
4035
4347
|
* mismatches ("doesn't cover BLT"). Filters without a resolvable id don't
|
|
@@ -4665,6 +4977,16 @@ declare interface RowRule {
|
|
|
4665
4977
|
sort?: number;
|
|
4666
4978
|
}
|
|
4667
4979
|
|
|
4980
|
+
declare interface RowSnooze {
|
|
4981
|
+
id: number;
|
|
4982
|
+
until: string | null;
|
|
4983
|
+
until_change: boolean;
|
|
4984
|
+
/** true = this snooze is a Dismiss — "seen this one, tell me when it
|
|
4985
|
+
* happens again" — never a group/signal scope, always row-only. */
|
|
4986
|
+
until_occurrence: boolean;
|
|
4987
|
+
note: string | null;
|
|
4988
|
+
}
|
|
4989
|
+
|
|
4668
4990
|
/**
|
|
4669
4991
|
* Real-user monitoring collector. Hand-rolled (no web-vitals dep): one 'load'
|
|
4670
4992
|
* event per page load (TTFB / FCP / LCP / total) once LCP settles, plus one
|
|
@@ -4684,6 +5006,8 @@ export declare function rumRouteChange(pathname: string): void;
|
|
|
4684
5006
|
* a foreign-app URL in a new tab). */
|
|
4685
5007
|
export declare function runNotificationTarget(target: NotificationTarget, navigate: (path: string) => void): boolean;
|
|
4686
5008
|
|
|
5009
|
+
declare type Scope = 'row' | 'group' | 'signal';
|
|
5010
|
+
|
|
4687
5011
|
declare interface ScopeDimensionLite {
|
|
4688
5012
|
name: string;
|
|
4689
5013
|
label: string;
|
|
@@ -4780,6 +5104,34 @@ declare interface SheetItem {
|
|
|
4780
5104
|
url: string;
|
|
4781
5105
|
}
|
|
4782
5106
|
|
|
5107
|
+
export declare function SignalCard({ signal, expanded, onToggle, onOpenRecord, onExplain, canExplain }: SignalCardProps): JSX.Element;
|
|
5108
|
+
|
|
5109
|
+
export declare interface SignalCardProps {
|
|
5110
|
+
signal: IntegrationSignalView;
|
|
5111
|
+
expanded: boolean;
|
|
5112
|
+
onToggle: () => void;
|
|
5113
|
+
onOpenRecord?: (collection: string, id: string) => void;
|
|
5114
|
+
/** An 'explain' action — the frame decides where it leads. */
|
|
5115
|
+
onExplain?: (action: IntegrationSignalAction, row: IntegrationSignalRow) => void;
|
|
5116
|
+
/** False hides an explain action the host has nowhere to open. */
|
|
5117
|
+
canExplain?: (action: IntegrationSignalAction) => boolean;
|
|
5118
|
+
}
|
|
5119
|
+
|
|
5120
|
+
/** A typed "Details" reference on a signal row (GET /integration-signals). */
|
|
5121
|
+
declare interface SignalDrill {
|
|
5122
|
+
kind: 'submission' | 'import_run' | (string & {});
|
|
5123
|
+
id: string;
|
|
5124
|
+
}
|
|
5125
|
+
|
|
5126
|
+
declare interface SignalThreshold {
|
|
5127
|
+
key: string;
|
|
5128
|
+
label: string;
|
|
5129
|
+
default: number;
|
|
5130
|
+
unit: string;
|
|
5131
|
+
min?: number;
|
|
5132
|
+
max?: number;
|
|
5133
|
+
}
|
|
5134
|
+
|
|
4783
5135
|
declare type SkipCondition = {
|
|
4784
5136
|
type: 'no_owners';
|
|
4785
5137
|
} | {
|
|
@@ -4843,6 +5195,38 @@ export declare type SlotRendererProps = {
|
|
|
4843
5195
|
defaultExpanded: boolean;
|
|
4844
5196
|
};
|
|
4845
5197
|
|
|
5198
|
+
export declare interface SnoozeInput {
|
|
5199
|
+
signal: string;
|
|
5200
|
+
row_key?: string;
|
|
5201
|
+
group_key?: string;
|
|
5202
|
+
until?: string | null;
|
|
5203
|
+
until_change?: boolean;
|
|
5204
|
+
/** A Dismiss — hides this ONE row until its occurrence changes. Row-scoped
|
|
5205
|
+
* only; never combine with group_key. */
|
|
5206
|
+
until_occurrence?: boolean;
|
|
5207
|
+
note?: string;
|
|
5208
|
+
}
|
|
5209
|
+
|
|
5210
|
+
/**
|
|
5211
|
+
* Quiet one problem, a whole group, or the whole signal. "Until it changes"
|
|
5212
|
+
* is offered only for a single row — the API hashes ONE row's payload, so a
|
|
5213
|
+
* group or signal can only be quieted for a set time. Dismiss lives at the
|
|
5214
|
+
* top for a row-scoped menu — the one-click, no-questions-asked cousin of
|
|
5215
|
+
* everything below it.
|
|
5216
|
+
*/
|
|
5217
|
+
export declare function SnoozeMenu({ signal, signalLabel, rowKey, group, defaultScope, compact }: {
|
|
5218
|
+
signal: string;
|
|
5219
|
+
signalLabel: string;
|
|
5220
|
+
rowKey?: string;
|
|
5221
|
+
group?: {
|
|
5222
|
+
key: string;
|
|
5223
|
+
label: string;
|
|
5224
|
+
};
|
|
5225
|
+
/** What the menu opens on — a group header opens on the group. */
|
|
5226
|
+
defaultScope?: Scope;
|
|
5227
|
+
compact?: boolean;
|
|
5228
|
+
}): JSX.Element;
|
|
5229
|
+
|
|
4846
5230
|
export declare function splitMessageTokens(text: string, entityPattern: string): MessageToken[];
|
|
4847
5231
|
|
|
4848
5232
|
declare type SpreadPreset = 'even' | 'front' | 'back' | 'shape';
|
|
@@ -4859,6 +5243,17 @@ export declare function startRum(opts?: {
|
|
|
4859
5243
|
apiBase?: string;
|
|
4860
5244
|
}): void;
|
|
4861
5245
|
|
|
5246
|
+
export declare function SubmissionRow({ sub, onRetry, retrying }: {
|
|
5247
|
+
sub: ErpSubmission;
|
|
5248
|
+
onRetry: (id: number) => void;
|
|
5249
|
+
retrying: boolean;
|
|
5250
|
+
}): JSX.Element;
|
|
5251
|
+
|
|
5252
|
+
/** A submission / attempt status, as a small tinted chip. */
|
|
5253
|
+
export declare function SubmissionStatusPill({ status }: {
|
|
5254
|
+
status: string;
|
|
5255
|
+
}): JSX.Element;
|
|
5256
|
+
|
|
4862
5257
|
/**
|
|
4863
5258
|
* The one subscription editor — create + edit for nivaro_notification_subscriptions,
|
|
4864
5259
|
* shared by the profile's Notifications & alerts card and the My Subscriptions
|
|
@@ -5201,6 +5596,8 @@ export declare function useFormStatus(form: UseNivaroFormReturn): FormStatus;
|
|
|
5201
5596
|
|
|
5202
5597
|
export declare function useGridFlush(): GridFlushContextValue | null;
|
|
5203
5598
|
|
|
5599
|
+
export declare function useImportHealth(): UseQueryResult<NoInfer<ImportHealth>, Error>;
|
|
5600
|
+
|
|
5204
5601
|
export declare function useItemEditAuth(): ItemEditAuthContextValue;
|
|
5205
5602
|
|
|
5206
5603
|
export declare function useItemLock(collection: string | undefined, item: string | undefined, enabled: boolean): {
|
|
@@ -5345,6 +5742,13 @@ export declare function useOverlayState<T>(key: string): {
|
|
|
5345
5742
|
back: (steps?: number) => void;
|
|
5346
5743
|
};
|
|
5347
5744
|
|
|
5745
|
+
export declare function usePartner(id: number | null): UseQueryResult<NoInfer<IntegrationPartnerDetail>, Error>;
|
|
5746
|
+
|
|
5747
|
+
export declare function usePartners(): UseQueryResult<NoInfer<{
|
|
5748
|
+
summary: IntegrationPartnersSummary;
|
|
5749
|
+
partners: IntegrationPartnerCard[];
|
|
5750
|
+
}>, Error>;
|
|
5751
|
+
|
|
5348
5752
|
export declare function usePeerReadAt(room: string | null): string | null;
|
|
5349
5753
|
|
|
5350
5754
|
/**
|
|
@@ -5385,6 +5789,8 @@ export declare function UserChip({ userId, size }: {
|
|
|
5385
5789
|
size?: 'default' | 'compact';
|
|
5386
5790
|
}): React_2.JSX.Element;
|
|
5387
5791
|
|
|
5792
|
+
export declare function useRefreshSignals(): UseMutationResult<unknown, Error, void, unknown>;
|
|
5793
|
+
|
|
5388
5794
|
/**
|
|
5389
5795
|
* Fetch selectable options for a relation field's related collection.
|
|
5390
5796
|
* Re-fetches when `search` changes. Pass `enabled: false` to skip fetching
|
|
@@ -5443,6 +5849,22 @@ attachments?: string[];
|
|
|
5443
5849
|
|
|
5444
5850
|
export declare function useSessionRecorder(options?: SessionRecorderOptions): void;
|
|
5445
5851
|
|
|
5852
|
+
/** Write one staleness setting: a number of hours, 0 (not monitored) or null (back to default). */
|
|
5853
|
+
export declare function useSetImportCadence(): UseMutationResult<unknown, Error, Record<string, number | null>, unknown>;
|
|
5854
|
+
|
|
5855
|
+
export declare function useSignalAction(): UseMutationResult<IntegrationActionResult[], Error, {
|
|
5856
|
+
signal: string;
|
|
5857
|
+
row_keys: string[];
|
|
5858
|
+
action: IntegrationSignalRow["actions"][number];
|
|
5859
|
+
}, unknown>;
|
|
5860
|
+
|
|
5861
|
+
export declare function useSignals(tab?: string): UseQueryResult<NoInfer<IntegrationSignalsSnapshot>, Error>;
|
|
5862
|
+
|
|
5863
|
+
export declare function useSnooze(): {
|
|
5864
|
+
add: UseMutationResult<unknown, Error, SnoozeInput, unknown>;
|
|
5865
|
+
remove: UseMutationResult<unknown, Error, number, unknown>;
|
|
5866
|
+
};
|
|
5867
|
+
|
|
5446
5868
|
/** Mutations for the user's own subscriptions. Invalidates BOTH readers —
|
|
5447
5869
|
* the flat list (My Subscriptions) and the profile's sources aggregate. */
|
|
5448
5870
|
export declare function useSubscriptionMutations(): {
|