@declarion/react 0.57.0 → 0.59.0
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 +0 -2
- package/dist-lib/AgentChatPanel.impl-DBH1Ff4G.js +1200 -0
- package/dist-lib/DetailAuditStrip-GNRA_eP5.js +289 -0
- package/dist-lib/{DraggableChildrenTable-BV5sb8Uo.js → DraggableChildrenTable-4RZC351U.js} +87 -86
- package/dist-lib/Grid-CQabaBLx.js +405 -0
- package/dist-lib/{LayoutRenderer-C9AH9cXf.js → LayoutRenderer-DGKWZKpW.js} +1000 -1114
- package/dist-lib/{ListCardsBody-DXcDg536.js → ListCardsBody-DfGmyNIu.js} +84 -84
- package/dist-lib/MarkdownRenderer-BDbzDv_y.js +87 -0
- package/dist-lib/{RefreshControl-CNtN8zSl.js → RefreshControl-Bhoib0ZA.js} +126 -155
- package/dist-lib/SmartDetailPage.impl-Ds2RGg6K.js +1565 -0
- package/dist-lib/SmartListPage.impl-BrZLE_Gb.js +3046 -0
- package/dist-lib/{SmartRecordListPage.impl-Bkl9aZJ8.js → SmartRecordListPage.impl-C1FJLr80.js} +281 -280
- package/dist-lib/SortHeaderMenu-Cijxk4cX.js +107 -0
- package/dist-lib/action-dispatch-DY0c8U81.js +1967 -0
- package/dist-lib/api/client.d.ts +5 -0
- package/dist-lib/api/data.d.ts +2 -4
- package/dist-lib/api/entities.d.ts +8 -15
- package/dist-lib/api/events.d.ts +3 -3
- package/dist-lib/cardProjection-Bkl2SSYz.js +499 -0
- package/dist-lib/components/actions/ResponsiveActionBar.d.ts +17 -16
- package/dist-lib/components/agents/AgentChatPanel.d.ts +3 -13
- package/dist-lib/components/agents/AgentChatPanel.impl.d.ts +14 -0
- package/dist-lib/components/agents/AgentPicker.d.ts +1 -2
- package/dist-lib/components/chrome/PageShell.d.ts +7 -0
- package/dist-lib/components/chrome/RecordHeader.d.ts +1 -2
- package/dist-lib/components/detail-layout/DetailAuditStrip.d.ts +1 -2
- package/dist-lib/components/detail-layout/DetailHighlights.d.ts +1 -2
- package/dist-lib/components/detail-layout/blockMeta.d.ts +2 -1
- package/dist-lib/components/fields/BoolField.d.ts +1 -1
- package/dist-lib/components/fields/EnumField.d.ts +1 -1
- package/dist-lib/components/fields/IntArrayField.d.ts +1 -1
- package/dist-lib/components/fields/MultilangArrayField.d.ts +2 -0
- package/dist-lib/components/fields/MultilangField.d.ts +1 -1
- package/dist-lib/components/fields/MultilangTextField.d.ts +1 -1
- package/dist-lib/components/fields/NumberField.d.ts +1 -1
- package/dist-lib/components/fields/PasswordField.d.ts +1 -1
- package/dist-lib/components/fields/RefCombobox.d.ts +1 -1
- package/dist-lib/components/fields/SecretField.d.ts +1 -1
- package/dist-lib/components/fields/StringArrayField.d.ts +1 -1
- package/dist-lib/components/fields/TimestampField.d.ts +1 -1
- package/dist-lib/components/fields/cells/registry.d.ts +2 -1
- package/dist-lib/components/fields/index.d.ts +2 -1
- package/dist-lib/components/fields/langMap.d.ts +2 -0
- package/dist-lib/components/fields/secretValue.d.ts +2 -0
- package/dist-lib/components/file-widgets/UnknownFileWidget.d.ts +3 -0
- package/dist-lib/components/file-widgets/UploadFailureText.d.ts +4 -0
- package/dist-lib/components/file-widgets/helpers.d.ts +1 -1
- package/dist-lib/components/file-widgets/host.d.ts +4 -3
- package/dist-lib/components/file-widgets/types.d.ts +1 -0
- package/dist-lib/components/file-widgets/upload.d.ts +18 -3
- package/dist-lib/components/filters/filter-op-label.d.ts +3 -0
- package/dist-lib/components/layout/ImpersonationBanner.d.ts +1 -1
- package/dist-lib/components/layout/ImpersonationFrame.d.ts +1 -1
- package/dist-lib/components/layout/Layout.d.ts +2 -1
- package/dist-lib/components/layout/Sidebar.d.ts +2 -1
- package/dist-lib/components/layout/TenantChip.d.ts +1 -1
- package/dist-lib/components/list/ViewSwitcher.d.ts +4 -2
- package/dist-lib/components/pages/DocumentsMenu.d.ts +1 -2
- package/dist-lib/components/pages/ExportMenu.d.ts +3 -5
- package/dist-lib/components/pages/RecordDocumentsPanel.d.ts +1 -2
- package/dist-lib/components/pages/auth/AuthShell.d.ts +4 -31
- package/dist-lib/components/pages/exportRequest.d.ts +4 -6
- package/dist-lib/components/pages/list/DeleteViewDialog.d.ts +8 -0
- package/dist-lib/components/pages/list/ListCardRow.d.ts +1 -2
- package/dist-lib/components/pages/list/ListCardsBody.d.ts +0 -1
- package/dist-lib/components/pages/list/ListFloatbar.d.ts +2 -2
- package/dist-lib/components/pages/list/ListHeader.d.ts +2 -2
- package/dist-lib/components/pages/list/ListNoRows.d.ts +4 -5
- package/dist-lib/components/pages/list/ListToolbar.d.ts +3 -2
- package/dist-lib/components/pages/list/ListUrlBanner.d.ts +10 -0
- package/dist-lib/components/pages/list/RowActionsCell.d.ts +2 -4
- package/dist-lib/components/pages/list/RowContextMenu.d.ts +1 -2
- package/dist-lib/components/pages/list/columns.d.ts +2 -1
- package/dist-lib/components/pages/list/filter-meta.d.ts +2 -1
- package/dist-lib/components/pages/list/useActiveView.d.ts +38 -0
- package/dist-lib/components/pages/list/useListColumnLayout.d.ts +6 -5
- package/dist-lib/components/pages/list/useListQuery.d.ts +4 -4
- package/dist-lib/components/pages/list/useListSort.d.ts +5 -4
- package/dist-lib/components/pages/list/useListViews.d.ts +18 -8
- package/dist-lib/components/pages/list/useRowMenu.d.ts +2 -3
- package/dist-lib/components/pages/profile/Profile.d.ts +3 -0
- package/dist-lib/components/params/ParamsBlock.d.ts +1 -13
- package/dist-lib/components/params/param-editors.d.ts +3 -11
- package/dist-lib/components/primitives/ClassifiedFieldLocked.d.ts +1 -2
- package/dist-lib/components/shared/DynamicIcon.d.ts +2 -2
- package/dist-lib/components/shared/LoadingSkeleton.d.ts +1 -0
- package/dist-lib/components/shared/LucideIcon.d.ts +1 -1
- package/dist-lib/components/shared/useOwnRefresh.d.ts +1 -1
- package/dist-lib/declarion-react.css +1 -1
- package/dist-lib/embed/theme.d.ts +1 -1
- package/dist-lib/embed/useEmbedNavigate.d.ts +1 -1
- package/dist-lib/failure-v-uGSpbX.js +158 -0
- package/dist-lib/{field-classification-D6xQYn-h.js → field-classification-C28XE-_P.js} +514 -307
- package/dist-lib/format-count-DA4wmmWR.js +1771 -0
- package/dist-lib/hooks/useEntityData.d.ts +1 -1
- package/dist-lib/hooks/useFilters.d.ts +7 -5
- package/dist-lib/hooks/useLanguage.d.ts +4 -0
- package/dist-lib/hooks/useParams.d.ts +4 -51
- package/dist-lib/hooks/useRegisterScreenTab.d.ts +1 -1
- package/dist-lib/hooks/useSSE.d.ts +3 -3
- package/dist-lib/hooks/useTabTitle.d.ts +2 -0
- package/dist-lib/hooks/useText.d.ts +3 -3
- package/dist-lib/hooks/useVersionWatcher.d.ts +1 -1
- package/dist-lib/hooks/useViews.d.ts +20 -0
- package/dist-lib/index.d.ts +8 -7
- package/dist-lib/index.js +2716 -5795
- package/dist-lib/lib/action-dispatch.d.ts +2 -1
- package/dist-lib/lib/actions.d.ts +30 -42
- package/dist-lib/lib/anchor.d.ts +3 -4
- package/dist-lib/lib/decimal-text.d.ts +1 -0
- package/dist-lib/lib/document-templates.d.ts +1 -2
- package/dist-lib/lib/download.d.ts +2 -1
- package/dist-lib/lib/evidence-verdict.d.ts +2 -1
- package/dist-lib/lib/failure.d.ts +2 -0
- package/dist-lib/lib/field-classification.d.ts +3 -3
- package/dist-lib/lib/filters.d.ts +18 -2
- package/dist-lib/lib/format-count.d.ts +8 -7
- package/dist-lib/lib/language.d.ts +19 -0
- package/dist-lib/lib/mass-edit.d.ts +2 -1
- package/dist-lib/lib/realtime-query-keys.d.ts +1 -1
- package/dist-lib/lib/realtime-reconcile.d.ts +3 -4
- package/dist-lib/lib/screen-back.d.ts +4 -6
- package/dist-lib/lib/sort.d.ts +9 -9
- package/dist-lib/lib/timestamp.d.ts +5 -7
- package/dist-lib/lib/ui-actions.d.ts +2 -1
- package/dist-lib/peekDraftStore-D-cTbiIr.js +199 -0
- package/dist-lib/registry-Cb3W-czW.js +1950 -0
- package/dist-lib/safe-url-oSJw5pzO.js +34 -0
- package/dist-lib/stores/icon-registry.d.ts +2 -2
- package/dist-lib/stores/list-layout.d.ts +3 -4
- package/dist-lib/stores/realtime.d.ts +1 -1
- package/dist-lib/stores/tabs.d.ts +3 -2
- package/dist-lib/testing.d.ts +6 -0
- package/dist-lib/testing.js +98 -76
- package/dist-lib/types/api.d.ts +7 -8
- package/dist-lib/types/fieldType.d.ts +1 -1
- package/dist-lib/types/files.d.ts +4 -4
- package/dist-lib/types/schema.d.ts +44 -50
- package/dist-lib/useAgentConversation-D97IqE-J.js +623 -0
- package/dist-lib/{useCurrentScreen-CzwzQpoW.js → useCurrentScreen-BL5NZFCw.js} +2777 -3768
- package/dist-lib/useListQuery-BG1GyKtJ.js +103 -0
- package/dist-lib/useProperties-4Lg3odrt.js +83 -0
- package/dist-lib/{useTabSearchMirror-C39U85cg.js → useTabSearchMirror-ZVLlINBX.js} +49 -51
- package/dist-lib/useText-BFDCTUSo.js +952 -0
- package/dist-lib/{value-Bo8C8WMU.js → value-By1-WJ8J.js} +74 -76
- package/dist-lib/vite/fingerprint-plugin.d.ts +2 -3
- package/package.json +9 -9
- package/dist-lib/Grid-DWgUPuZ3.js +0 -404
- package/dist-lib/MarkdownRenderer-CcSFc2N3.js +0 -85
- package/dist-lib/RecordIdBadge-CGxPR-8q.js +0 -24
- package/dist-lib/SmartDetailPage.impl-lskCd-WG.js +0 -1846
- package/dist-lib/SmartListPage.impl-CrGbdzyK.js +0 -2854
- package/dist-lib/SortHeaderMenu-SYSAaqQJ.js +0 -106
- package/dist-lib/action-dispatch-CR4ajBtT.js +0 -1985
- package/dist-lib/cardProjection-CW5RIMko.js +0 -699
- package/dist-lib/components/pages/home/HomeStub.d.ts +0 -6
- package/dist-lib/components/pages/jobs/Jobs.d.ts +0 -1
- package/dist-lib/components/pages/pipeline/Pipeline.d.ts +0 -1
- package/dist-lib/format-count-Dobmi-Ji.js +0 -1551
- package/dist-lib/hooks/useUserLocale.d.ts +0 -1
- package/dist-lib/lib/messages.d.ts +0 -12
- package/dist-lib/peekDraftStore-5wQ7lq_V.js +0 -194
- package/dist-lib/registry-CjgUaF7C.js +0 -1768
- package/dist-lib/useListQuery-D7Hr5WM1.js +0 -96
- package/dist-lib/useProperties-CqtCzFCr.js +0 -81
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* ResponsiveActionBar - placement-agnostic action toolbar.
|
|
3
3
|
*
|
|
4
4
|
* Consumes a resolved + RBAC-pruned ResolvedActionLayoutNode[] from the server
|
|
5
|
-
*
|
|
5
|
+
* and renders it as an inline bar with overflow "More" dropdown
|
|
6
6
|
* (kind="detail"/"toolbar") or as a single kebab "⋮" (kind="row").
|
|
7
7
|
*
|
|
8
|
-
* Measurement algorithm
|
|
8
|
+
* Measurement algorithm:
|
|
9
9
|
* 1. Off-screen layer renders every leaf + group trigger invisibly.
|
|
10
10
|
* 2. ResizeObserver tracks container width.
|
|
11
11
|
* 3. On layout or container-width change, greedy-fill in position-ascending
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* 4. visibility:hidden until first measurement completes (avoids FOUC).
|
|
15
15
|
* 16ms timeout fallback in case ResizeObserver fires late.
|
|
16
16
|
*
|
|
17
|
-
* Selection-state performance
|
|
17
|
+
* Selection-state performance:
|
|
18
18
|
* kind="toolbar" pre-resolves and pre-measures BOTH static (no selection)
|
|
19
19
|
* and bulk (selection > 0) variants at initial mount. The rowSelection toggle
|
|
20
20
|
* swaps which variant renders WITHOUT re-measuring.
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
*/
|
|
26
26
|
import type { Action, Entity, Screen } from "../../types/schema.d.ts";
|
|
27
27
|
import type { ResolvedActionLayoutNode, ResolvedActionLeaf } from "../../lib/actions.d.ts";
|
|
28
|
+
import { type TextFn } from "../../hooks/useText.d.ts";
|
|
28
29
|
/**
|
|
29
30
|
* Action-trigger callback. Returns a promise when the caller dispatches an
|
|
30
31
|
* awaitable action (direct-run via ActionRunner); the bar awaits it so the
|
|
@@ -48,12 +49,12 @@ export interface TabMeta {
|
|
|
48
49
|
}
|
|
49
50
|
/**
|
|
50
51
|
* Minimal dispatch surface assembled by SmartListPage/DetailLayout and passed
|
|
51
|
-
* to ResponsiveActionBar.
|
|
52
|
-
*
|
|
52
|
+
* to ResponsiveActionBar. It carries what `href` dispatch needs plus the seat
|
|
53
|
+
* for a future widget registry mount.
|
|
53
54
|
*
|
|
54
55
|
* Reason: defining the full WidgetContext now would freeze a surface before
|
|
55
|
-
* the widget registry has a real consumer.
|
|
56
|
-
*
|
|
56
|
+
* the widget registry has a real consumer. It holds exactly the fields the
|
|
57
|
+
* href dispatch reads and extends without breaking callers.
|
|
57
58
|
*/
|
|
58
59
|
export interface WidgetContext {
|
|
59
60
|
/** Resolved entity for the current page; widget code reads schema metadata. */
|
|
@@ -68,8 +69,8 @@ export interface WidgetContext {
|
|
|
68
69
|
selectedRows: Record<string, unknown>[];
|
|
69
70
|
/** PK values of the currently selected rows, in selection order. */
|
|
70
71
|
selectedIds: string[];
|
|
71
|
-
/**
|
|
72
|
-
|
|
72
|
+
/** Reads declared words in the reader's language; `t.language` formats values. */
|
|
73
|
+
t: TextFn;
|
|
73
74
|
/** Opens or switches to a tab in the SDK shell. */
|
|
74
75
|
tabNavigate: (url: string, meta?: TabMeta) => void;
|
|
75
76
|
/** Invokes a server action and returns its response envelope. */
|
|
@@ -85,7 +86,7 @@ export interface WidgetContext {
|
|
|
85
86
|
}
|
|
86
87
|
/**
|
|
87
88
|
* Telemetry payload emitted on every action click. Stays scalar by design -
|
|
88
|
-
* no Action reference or i18n strings
|
|
89
|
+
* no Action reference or i18n strings.
|
|
89
90
|
*
|
|
90
91
|
* Reason: display.name may carry tenant-customized strings with PII; the
|
|
91
92
|
* payload feeds analytics pipelines and MUST NOT leak them.
|
|
@@ -160,8 +161,9 @@ export interface ResponsiveActionBarProps {
|
|
|
160
161
|
/** aria-label for the toolbar root. Defaults to "Actions". */
|
|
161
162
|
ariaLabel?: string;
|
|
162
163
|
/**
|
|
163
|
-
* Dispatch surface for client-side action modes (`href` today, `widget`
|
|
164
|
-
*
|
|
164
|
+
* Dispatch surface for client-side action modes (`href` today, `widget` once
|
|
165
|
+
* the widget registry exists). When omitted, every action falls through to
|
|
166
|
+
* `onRun`.
|
|
165
167
|
*
|
|
166
168
|
* Reason: keeps the bar usable from contexts that have no router or schema
|
|
167
169
|
* runtime (test fixtures, storybook) while letting production callers wire
|
|
@@ -169,7 +171,7 @@ export interface ResponsiveActionBarProps {
|
|
|
169
171
|
*/
|
|
170
172
|
widgetContext?: WidgetContext;
|
|
171
173
|
/**
|
|
172
|
-
* Telemetry sink fired on every action click
|
|
174
|
+
* Telemetry sink fired on every action click. Payload stays
|
|
173
175
|
* scalar - no Action reference or i18n strings.
|
|
174
176
|
*
|
|
175
177
|
* Reason: feeds analytics without leaking tenant-customized labels.
|
|
@@ -180,7 +182,7 @@ export interface RowMenuContentProps {
|
|
|
180
182
|
/**
|
|
181
183
|
* Row-stated + nav-suppressed layout. BOTH triggers pass the identical shape:
|
|
182
184
|
* the kebab (anchored) and the right-click menu (at the cursor) compose the
|
|
183
|
-
* same leaves so their menus are structurally identical
|
|
185
|
+
* same leaves so their menus are structurally identical.
|
|
184
186
|
*/
|
|
185
187
|
layout: ResolvedActionLayoutNode[];
|
|
186
188
|
entityActions: Record<string, Action> | undefined;
|
|
@@ -201,8 +203,7 @@ export interface RowMenuContentProps {
|
|
|
201
203
|
}
|
|
202
204
|
/**
|
|
203
205
|
* RowMenuContent is the ONE renderer of Row Menu body content, shared by the
|
|
204
|
-
* kebab and the right-click menu
|
|
205
|
-
* 1). It partitions destructive-last, draws a divider after the leading
|
|
206
|
+
* kebab and the right-click menu. It partitions destructive-last, draws a divider after the leading
|
|
206
207
|
* navigation run (__peek / __open), and renders every leaf through the same
|
|
207
208
|
* DropdownLeafItem / DropdownGroupSection path used everywhere else - so the two
|
|
208
209
|
* triggers cannot structurally diverge. It renders no chrome and owns no
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
/** Reserved for conversation context; the current action does not persist it. */
|
|
5
|
-
context?: string;
|
|
6
|
-
title?: string;
|
|
7
|
-
/** A question typed somewhere else - the command palette - to send once
|
|
8
|
-
* the panel opens. The palette promises "Press Enter to ask"; without
|
|
9
|
-
* this it opened the panel and threw the question away. */
|
|
10
|
-
askOnOpen?: string;
|
|
11
|
-
}
|
|
12
|
-
export declare function AgentChatPanel({ open, onClose, context, title, askOnOpen }: AgentChatPanelProps): import("react").JSX.Element | null;
|
|
13
|
-
export declare function proposalFallback(code: string): string;
|
|
1
|
+
import type { AgentChatPanelProps } from "./AgentChatPanel.impl";
|
|
2
|
+
export type { AgentChatPanelProps } from "./AgentChatPanel.impl";
|
|
3
|
+
export declare function AgentChatPanel(props: AgentChatPanelProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type TextFn } from "../../lib/language.d.ts";
|
|
2
|
+
export interface AgentChatPanelProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
/** Reserved for conversation context; the current action does not persist it. */
|
|
6
|
+
context?: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
/** A question typed somewhere else - the command palette - to send once
|
|
9
|
+
* the panel opens. The palette promises "Press Enter to ask"; without
|
|
10
|
+
* this it opened the panel and threw the question away. */
|
|
11
|
+
askOnOpen?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function AgentChatPanel({ open, onClose, context, title, askOnOpen }: AgentChatPanelProps): import("react").JSX.Element | null;
|
|
14
|
+
export declare function proposalFallback(t: TextFn, code: string): string;
|
|
@@ -3,7 +3,6 @@ export interface AgentPickerProps {
|
|
|
3
3
|
agents: AvailableAgent[];
|
|
4
4
|
selectedId?: string;
|
|
5
5
|
onSelect: (id: string) => void;
|
|
6
|
-
locale: string;
|
|
7
6
|
label: string;
|
|
8
7
|
}
|
|
9
|
-
export declare function AgentPicker({ agents, selectedId, onSelect,
|
|
8
|
+
export declare function AgentPicker({ agents, selectedId, onSelect, label }: AgentPickerProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ReactNode, Ref } from "react";
|
|
2
|
+
export interface PageShellProps {
|
|
3
|
+
header: ReactNode;
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
scrollRef?: Ref<HTMLDivElement>;
|
|
6
|
+
}
|
|
7
|
+
export declare function PageShell({ header, children, scrollRef }: PageShellProps): import("react").JSX.Element;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
interface RecordHeaderProps {
|
|
3
3
|
icon?: ReactNode;
|
|
4
|
-
avatarName?: string;
|
|
5
4
|
title: string;
|
|
6
5
|
recordId?: string;
|
|
7
6
|
description?: string;
|
|
@@ -14,5 +13,5 @@ interface RecordHeaderProps {
|
|
|
14
13
|
identityControls?: ReactNode;
|
|
15
14
|
showTitle?: boolean;
|
|
16
15
|
}
|
|
17
|
-
export declare function RecordHeader({ icon,
|
|
16
|
+
export declare function RecordHeader({ icon, title, recordId, description, highlights, mode, dirty, showBack, onBack, right, identityControls, showTitle, }: RecordHeaderProps): import("react").JSX.Element;
|
|
18
17
|
export {};
|
|
@@ -7,7 +7,6 @@ interface DetailAuditStripProps {
|
|
|
7
7
|
record: Record<string, unknown>;
|
|
8
8
|
refs?: Refs;
|
|
9
9
|
schema: Schema;
|
|
10
|
-
locale: string;
|
|
11
10
|
}
|
|
12
|
-
export declare function DetailAuditStrip({ screen, entity, entityCode, record, refs, schema,
|
|
11
|
+
export declare function DetailAuditStrip({ screen, entity, entityCode, record, refs, schema, }: DetailAuditStripProps): import("react").JSX.Element | null;
|
|
13
12
|
export {};
|
|
@@ -9,7 +9,6 @@ interface DetailHighlightsProps {
|
|
|
9
9
|
refs?: Refs;
|
|
10
10
|
objectStatuses?: StatusInfo[];
|
|
11
11
|
schema: Schema;
|
|
12
|
-
locale: string;
|
|
13
12
|
}
|
|
14
|
-
export declare function DetailHighlights({ screen, entity, entityCode, record, refs, objectStatuses, schema,
|
|
13
|
+
export declare function DetailHighlights({ screen, entity, entityCode, record, refs, objectStatuses, schema, }: DetailHighlightsProps): import("react").JSX.Element | null;
|
|
15
14
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { LayoutNode } from "../../types/schema.d.ts";
|
|
2
2
|
import type { LayoutContext } from "./LayoutRenderer";
|
|
3
|
-
|
|
3
|
+
import type { TextFn } from "../../lib/language.d.ts";
|
|
4
|
+
export declare function resolveBlockLabel(node: LayoutNode, ctx: LayoutContext, t: TextFn): string;
|
|
4
5
|
export declare function resolveBlockIcon(node: LayoutNode, ctx: LayoutContext): string | undefined;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { FieldRendererProps } from "./index";
|
|
2
|
-
export declare function BoolField({ value,
|
|
2
|
+
export declare function BoolField({ value, onChange, fieldId, labelId }: FieldRendererProps): import("react").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { FieldRendererProps } from "./index";
|
|
2
|
-
export declare function EnumField({ field, value, mode, onChange, fieldId, labelId }: FieldRendererProps): import("react").JSX.Element;
|
|
2
|
+
export declare function EnumField({ field, value, mode, onChange, fieldId, labelId, t }: FieldRendererProps): import("react").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { FieldRendererProps } from "./index";
|
|
2
|
-
export declare function IntArrayField({ field, fieldName, value, mode, onChange, fieldId }: FieldRendererProps): import("react").JSX.Element;
|
|
2
|
+
export declare function IntArrayField({ field, fieldName, value, mode, onChange, fieldId, t }: FieldRendererProps): import("react").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { FieldRendererProps } from "./index";
|
|
2
|
-
export declare function MultilangField({ field, fieldName, value, mode, onChange, fieldId }: FieldRendererProps): import("react").JSX.Element;
|
|
2
|
+
export declare function MultilangField({ field, fieldName, value, mode, onChange, fieldId, t }: FieldRendererProps): import("react").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { FieldRendererProps } from "./index";
|
|
2
|
-
export declare function MultilangTextField({ field, fieldName, value, mode, onChange, fieldId }: FieldRendererProps): import("react").JSX.Element;
|
|
2
|
+
export declare function MultilangTextField({ field, fieldName, value, mode, onChange, fieldId, t }: FieldRendererProps): import("react").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { FieldRendererProps } from "./index";
|
|
2
|
-
export declare function NumberField({ field, fieldName, value, mode, onChange, record, fieldId }: FieldRendererProps): import("react").JSX.Element;
|
|
2
|
+
export declare function NumberField({ field, fieldName, value, mode, onChange, record, fieldId, t }: FieldRendererProps): import("react").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { FieldRendererProps } from "./index";
|
|
2
|
-
export declare function PasswordField({ field, fieldName, value, mode, onChange, record, fieldId }: FieldRendererProps): import("react").JSX.Element;
|
|
2
|
+
export declare function PasswordField({ field, fieldName, value, mode, onChange, record, fieldId, t }: FieldRendererProps): import("react").JSX.Element;
|
|
@@ -42,4 +42,4 @@ export interface RefComboboxProps {
|
|
|
42
42
|
* returned options without re-filtering them client-side. An empty search loads
|
|
43
43
|
* the default sorted page.
|
|
44
44
|
*/
|
|
45
|
-
export declare function RefCombobox({ ref: refConfig, value, onChange, refs, displayFieldOverride, id, labelId, ariaLabel, required, placeholder, specialValues, }: RefComboboxProps): import("react").JSX.Element;
|
|
45
|
+
export declare function RefCombobox({ ref: refConfig, value, onChange, refs, displayFieldOverride, id, labelId, ariaLabel, required, placeholder: placeholderOverride, specialValues, }: RefComboboxProps): import("react").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { FieldRendererProps } from "./index";
|
|
2
|
-
export declare function SecretField({ field, fieldName, value, mode, onChange, record, fieldId }: FieldRendererProps): import("react").JSX.Element;
|
|
2
|
+
export declare function SecretField({ field, fieldName, value, mode, onChange, record, fieldId, t }: FieldRendererProps): import("react").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { FieldRendererProps } from "./index";
|
|
2
|
-
export declare function StringArrayField({ field, fieldName, value, mode, onChange, fieldId }: FieldRendererProps): import("react").JSX.Element;
|
|
2
|
+
export declare function StringArrayField({ field, fieldName, value, mode, onChange, fieldId, t }: FieldRendererProps): import("react").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { FieldRendererProps } from "./index";
|
|
2
|
-
export declare function TimestampField({ field, fieldName, value, mode, onChange, fieldId }: FieldRendererProps): import("react").JSX.Element;
|
|
2
|
+
export declare function TimestampField({ field, fieldName, value, mode, onChange, fieldId, t }: FieldRendererProps): import("react").JSX.Element;
|
|
@@ -12,9 +12,10 @@ export interface CellResolveCtx {
|
|
|
12
12
|
entities?: Record<string, Entity>;
|
|
13
13
|
screens?: Record<string, Screen>;
|
|
14
14
|
refs?: Refs | (() => Refs | undefined);
|
|
15
|
-
|
|
15
|
+
t: TextFn;
|
|
16
16
|
detailScreen?: string;
|
|
17
17
|
}
|
|
18
18
|
export type CellFactory = (ctx: CellResolveCtx) => CellRenderer;
|
|
19
|
+
import type { TextFn } from "../../../lib/language.d.ts";
|
|
19
20
|
export declare const REGISTRY_WIDGETS: readonly string[];
|
|
20
21
|
export declare function resolveCellRenderer(ctx: CellResolveCtx): CellRenderer;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { EntityField, Entity, Screen } from "../../types/schema.d.ts";
|
|
2
2
|
import { type FieldType } from "../../types/fieldType.d.ts";
|
|
3
3
|
import type { Refs } from "../../types/api.d.ts";
|
|
4
|
+
import type { TextFn } from "../../lib/language.d.ts";
|
|
4
5
|
export type { Refs };
|
|
5
6
|
export interface FieldRendererProps {
|
|
6
7
|
field: EntityField;
|
|
@@ -19,7 +20,7 @@ export interface FieldRendererProps {
|
|
|
19
20
|
entity?: Entity;
|
|
20
21
|
entities?: Record<string, Entity>;
|
|
21
22
|
screens?: Record<string, Screen>;
|
|
22
|
-
|
|
23
|
+
t: TextFn;
|
|
23
24
|
detailScreen?: string;
|
|
24
25
|
}
|
|
25
26
|
type FieldRenderer = React.ComponentType<FieldRendererProps>;
|
|
@@ -4,7 +4,7 @@ export interface FocalPoint {
|
|
|
4
4
|
x: number;
|
|
5
5
|
y: number;
|
|
6
6
|
}
|
|
7
|
-
export declare function resolveFileAltText(file: HydratedFile | null, alt: string | undefined, fallback: string): string;
|
|
7
|
+
export declare function resolveFileAltText(file: HydratedFile | null, alt: string | undefined, fallback: string, language: string, deploymentLanguage: string): string;
|
|
8
8
|
export declare function canPreviewFile(file: HydratedFile): boolean;
|
|
9
9
|
export declare function previewFileURL(file: HydratedFile): string | undefined;
|
|
10
10
|
export declare function downloadFileURL(file: HydratedFile): string | undefined;
|
|
@@ -2,13 +2,14 @@ import type { ReactNode } from "react";
|
|
|
2
2
|
import type { Entity, Screen } from "../../types/schema.d.ts";
|
|
3
3
|
import type { FileFieldDef, FileFieldValue } from "../../types/files.d.ts";
|
|
4
4
|
import type { Refs } from "../fields/index.d.ts";
|
|
5
|
+
import type { TextFn } from "../../lib/language.d.ts";
|
|
5
6
|
export declare function getEntityFileField(entity: Pick<Entity, "files">, fieldName: string): FileFieldDef | undefined;
|
|
6
7
|
export declare function getFileFieldValue(record: Record<string, unknown>, fieldName: string): FileFieldValue;
|
|
7
8
|
export declare function getSchemaFieldValue(entity: Pick<Entity, "fields" | "files">, record: Record<string, unknown>, fieldName: string): unknown;
|
|
8
9
|
export declare function serializeSchemaFieldValue(entity: Pick<Entity, "fields" | "files">, fieldName: string, value: unknown): unknown;
|
|
9
|
-
export declare function resolveSchemaFieldLabel(entity: Pick<Entity, "fields" | "files">, fieldName: string, entities?: Record<string, Entity>): string;
|
|
10
|
+
export declare function resolveSchemaFieldLabel(t: TextFn, entity: Pick<Entity, "fields" | "files">, fieldName: string, entities?: Record<string, Entity>): string;
|
|
10
11
|
export declare function renderSchemaField(props: {
|
|
11
|
-
entity: Pick<Entity, "fields" | "files"
|
|
12
|
+
entity: Pick<Entity, "fields" | "files"> & Partial<Pick<Entity, "display">>;
|
|
12
13
|
entityCode?: string;
|
|
13
14
|
fieldName: string;
|
|
14
15
|
record: Record<string, unknown>;
|
|
@@ -19,7 +20,7 @@ export declare function renderSchemaField(props: {
|
|
|
19
20
|
surface?: "list" | "detail";
|
|
20
21
|
entities?: Record<string, Entity>;
|
|
21
22
|
screens?: Record<string, Screen>;
|
|
22
|
-
|
|
23
|
+
t: TextFn;
|
|
23
24
|
fieldId?: string;
|
|
24
25
|
labelId?: string;
|
|
25
26
|
structure?: string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TextFn } from "../../lib/language.d.ts";
|
|
1
2
|
import type { UploadProgress, UploadedFile } from "./types";
|
|
2
3
|
export interface UploadOptions {
|
|
3
4
|
file: File;
|
|
@@ -17,14 +18,28 @@ export declare class UploadError extends Error {
|
|
|
17
18
|
/** A declared member of this error's type, read the one way. */
|
|
18
19
|
ext<T = unknown>(member: string): T | undefined;
|
|
19
20
|
}
|
|
21
|
+
export interface UploadFailure {
|
|
22
|
+
code: string;
|
|
23
|
+
message: string;
|
|
24
|
+
detail?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function uploadFailure(t: TextFn, errorTitle: TextFn, err: unknown): UploadFailure;
|
|
20
27
|
export interface UploadEnvelope {
|
|
21
28
|
status: string;
|
|
22
29
|
result: UploadedFile;
|
|
23
30
|
}
|
|
24
31
|
export declare function uploadFile(opts: UploadOptions): Promise<UploadedFile>;
|
|
25
32
|
export declare function discardFile(fileId: string): Promise<void>;
|
|
26
|
-
export
|
|
27
|
-
code:
|
|
33
|
+
export type UploadCheck = {
|
|
34
|
+
code: "file.too_large";
|
|
35
|
+
message: string;
|
|
36
|
+
size: number;
|
|
37
|
+
max: number;
|
|
38
|
+
} | {
|
|
39
|
+
code: "file.field_violation";
|
|
28
40
|
message: string;
|
|
29
|
-
|
|
41
|
+
type: string;
|
|
42
|
+
};
|
|
43
|
+
export declare function validateClientSide(file: File, accepts: string[] | undefined, maxBytes: number | undefined): UploadCheck | null;
|
|
44
|
+
export declare function uploadCheckFailure(t: TextFn, errorTitle: TextFn, check: UploadCheck): UploadFailure;
|
|
30
45
|
export declare function formatBytes(n: number): string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Sticky top-of-viewport banner shown for the entire duration of an
|
|
3
|
-
* impersonation session
|
|
3
|
+
* impersonation session: the UI signals impersonation loudly.
|
|
4
4
|
* Never dismissable. Real user, target identity, expiry countdown, and
|
|
5
5
|
* an explicit "End session" button are always visible.
|
|
6
6
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Fixed 4px viewport overlay frame that surrounds every route. Visible
|
|
3
|
-
* for the duration of an impersonation session
|
|
3
|
+
* for the duration of an impersonation session. The
|
|
4
4
|
* pointer-events:none guarantees the frame never blocks clicks.
|
|
5
5
|
*
|
|
6
6
|
* Color comes from --impersonation-accent (amber by default). When
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useTabStore } from "../../stores/tabs.d.ts";
|
|
2
2
|
import { type NavNode, type Screen } from "../../types/schema.d.ts";
|
|
3
3
|
import type { Crumb } from "../chrome/Breadcrumbs.d.ts";
|
|
4
|
+
import type { TextFn } from "../../lib/language.d.ts";
|
|
4
5
|
export declare function Layout(): import("react").JSX.Element | null;
|
|
5
|
-
export declare function buildCrumbs(nodes: NavNode[], screens: Record<string, Screen>, pathname: string, tabs: ReturnType<typeof useTabStore.getState>["tabs"], activeTabId: string | null, topLevelNavigate: (to: string) => void): Crumb[];
|
|
6
|
+
export declare function buildCrumbs(t: TextFn, nodes: NavNode[], screens: Record<string, Screen>, pathname: string, tabs: ReturnType<typeof useTabStore.getState>["tabs"], activeTabId: string | null, topLevelNavigate: (to: string) => void): Crumb[];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type NavNode } from "../../types/schema.d.ts";
|
|
2
|
+
import type { TextFn } from "../../lib/language.d.ts";
|
|
2
3
|
export interface SidebarProps {
|
|
3
4
|
activeArea: string;
|
|
4
5
|
}
|
|
@@ -7,5 +8,5 @@ interface SidebarSection {
|
|
|
7
8
|
title: string;
|
|
8
9
|
items: NavNode[];
|
|
9
10
|
}
|
|
10
|
-
export declare function buildSections(nodes: NavNode[], activeArea: string): SidebarSection[];
|
|
11
|
+
export declare function buildSections(t: TextFn, nodes: NavNode[], activeArea: string): SidebarSection[];
|
|
11
12
|
export {};
|
|
@@ -9,7 +9,7 @@ export interface TenantChipProps {
|
|
|
9
9
|
* When true, the chip is disabled with a tooltip explaining why.
|
|
10
10
|
* Used during impersonation: cross-tenant targeting at start is
|
|
11
11
|
* supported, but mid-session tenant switching is undefined and
|
|
12
|
-
* locked
|
|
12
|
+
* locked.
|
|
13
13
|
*/
|
|
14
14
|
locked?: boolean;
|
|
15
15
|
lockedReason?: string;
|
|
@@ -16,7 +16,9 @@ interface ViewSwitcherProps {
|
|
|
16
16
|
onSelect: (view: ViewItem) => void;
|
|
17
17
|
onSave?: () => void;
|
|
18
18
|
onSaveAs?: () => void;
|
|
19
|
-
|
|
19
|
+
onDiscard?: () => void;
|
|
20
|
+
onDelete?: (view: ViewItem) => void;
|
|
21
|
+
deletePending?: boolean;
|
|
20
22
|
}
|
|
21
|
-
export declare function ViewSwitcher({ views, activeViewId, isDirty, onSelect, onSave, onSaveAs, }: ViewSwitcherProps): import("react").JSX.Element;
|
|
23
|
+
export declare function ViewSwitcher({ views, activeViewId, isDirty, onSelect, onSave, onSaveAs, onDiscard, onDelete, deletePending, }: ViewSwitcherProps): import("react").JSX.Element;
|
|
22
24
|
export {};
|
|
@@ -6,7 +6,6 @@ export interface DocumentsMenuProps {
|
|
|
6
6
|
objectIds?: string[];
|
|
7
7
|
viewState?: ListViewState;
|
|
8
8
|
selectedIds?: string[];
|
|
9
|
-
locale?: string;
|
|
10
9
|
/** Static system-template capability from the schema projection
|
|
11
10
|
* (`entity.documents`). Absent/both-falsy means no SYSTEM template
|
|
12
11
|
* applies for this caller/tenant/entity - the button still renders if
|
|
@@ -16,7 +15,7 @@ export interface DocumentsMenuProps {
|
|
|
16
15
|
* `document_template` is present & readable in `schema.entities`). Gates
|
|
17
16
|
* the lazy `document.templates.available` visibility probe so a
|
|
18
17
|
* template-less, non-manager caller - the default - makes ZERO extra
|
|
19
|
-
* network calls
|
|
18
|
+
* network calls. */
|
|
20
19
|
canManageTemplates?: boolean;
|
|
21
20
|
}
|
|
22
21
|
export declare function DocumentsMenu({ entityCode, scope, objectIds, viewState, selectedIds, capability, canManageTemplates, }: DocumentsMenuProps): import("react").JSX.Element | null;
|
|
@@ -17,13 +17,11 @@ export interface ExportMenuProps {
|
|
|
17
17
|
totalRows?: number;
|
|
18
18
|
/** Per-page size of the current view (for the Current page label). */
|
|
19
19
|
pageSize?: number;
|
|
20
|
-
/**
|
|
21
|
-
|
|
20
|
+
/** The language the file is written in: the window's, so the CSV reads as the screen does. */
|
|
21
|
+
language?: string;
|
|
22
22
|
/** Optional placement override for the popover. */
|
|
23
23
|
align?: "start" | "end";
|
|
24
|
-
/**
|
|
25
|
-
* the existing selection menu (replaces the placeholder at :2007-2015).
|
|
26
|
-
* Defaults to a full Btn + Dropdown toolbar item. */
|
|
24
|
+
/** A single MenuItem for embedding in a selection menu, instead of the toolbar Btn + Dropdown. */
|
|
27
25
|
variant?: "toolbar" | "selection-menu-item";
|
|
28
26
|
/** Optional click-handler ran before scope dispatch — e.g. to close a
|
|
29
27
|
* parent menu so the export popover doesn't stack underneath. */
|
|
@@ -16,8 +16,7 @@ interface RecordDocumentsPanelProps {
|
|
|
16
16
|
* template-less, non-manager caller - the default - makes ZERO
|
|
17
17
|
* document.object_links calls per record view. The rare orphaned-attachment
|
|
18
18
|
* case (a template was removed but its current-attached docs remain) then
|
|
19
|
-
* surfaces only to managers on the record and to everyone via My Documents
|
|
20
|
-
* which is the right trade for the stakeholder's "no gratuitous cost" bar. */
|
|
19
|
+
* surfaces only to managers on the record and to everyone via My Documents. */
|
|
21
20
|
canManageTemplates?: boolean;
|
|
22
21
|
}
|
|
23
22
|
interface RecordDocument {
|
|
@@ -2,21 +2,8 @@ import { type ReactNode } from "react";
|
|
|
2
2
|
import { Icon } from "../../primitives/Icons.d.ts";
|
|
3
3
|
export type AuthShellProps = {
|
|
4
4
|
children: ReactNode;
|
|
5
|
-
/**
|
|
6
|
-
*
|
|
7
|
-
* `<tenantSlug>.<branding.identity.workspace_domain>` only when both pieces
|
|
8
|
-
* are set; otherwise it is hidden. Callers are not required to
|
|
9
|
-
* provide a slug — the auth shell fails closed (no pill) rather
|
|
10
|
-
* than display a placeholder host.
|
|
11
|
-
*
|
|
12
|
-
* Currently unwired in v1: no SDK caller passes this prop because
|
|
13
|
-
* frontend tenant-from-host resolution does not exist yet (see
|
|
14
|
-
* `docs/gotchas.md` "Tenant Resolution" — the deferred multi-tenant-
|
|
15
|
-
* via-host work). When that lands, callers will source the slug from
|
|
16
|
-
* `window.location.hostname` (or an equivalent middleware-supplied
|
|
17
|
-
* context) and thread it through. Until then the pill stays hidden;
|
|
18
|
-
* the prop is kept so the contract is in place for the follow-up.
|
|
19
|
-
*/
|
|
5
|
+
/** With `branding.identity.workspace_domain`, shows the `<tenantSlug>.<domain>` pill. No SDK caller
|
|
6
|
+
* passes it until tenant-from-host resolution exists. */
|
|
20
7
|
tenantSlug?: string;
|
|
21
8
|
tagline?: string;
|
|
22
9
|
subTagline?: string;
|
|
@@ -25,21 +12,7 @@ export type AuthShellProps = {
|
|
|
25
12
|
/** Optional override for the wordmark / app name shown in topbar + brand panel. */
|
|
26
13
|
brandName?: string;
|
|
27
14
|
};
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* - release build: `<tag>+<short-revision>`, e.g. "1.4.2+a9b2c0d"
|
|
32
|
-
* - dev build: VERSION is itself an abbreviation of the SAME commit (the
|
|
33
|
-
* Makefile falls back to `git rev-parse --short HEAD` when there is no
|
|
34
|
-
* tag), so a `+<short-rev>` suffix would print one commit twice.
|
|
35
|
-
*
|
|
36
|
-
* The two strings abbreviate that commit to DIFFERENT lengths - git sizes
|
|
37
|
-
* `--short` per repository (8 chars in this one) while the pill truncates the
|
|
38
|
-
* revision to 7 - so they are compared on their common prefix. Comparing them
|
|
39
|
-
* for equality reads as correct and never fires: it shipped the pill
|
|
40
|
-
* "Build 01385f9a+01385f9", the same commit rendered twice.
|
|
41
|
-
*
|
|
42
|
-
* Exported for tests.
|
|
43
|
-
*/
|
|
15
|
+
/** `<tag>+<short-revision>`, or the version alone when a dev build's VERSION already abbreviates the
|
|
16
|
+
* same commit. git and the pill abbreviate to different lengths, so they compare on the common prefix. */
|
|
44
17
|
export declare function formatBuildLabel(version?: string, revision?: string): string;
|
|
45
18
|
export declare function AuthShell({ children, tenantSlug, tagline, subTagline, version, badges, brandName, }: AuthShellProps): import("react").JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FilterNode } from "../../lib/filters.d.ts";
|
|
2
|
-
/** ExportQuery
|
|
3
|
-
*
|
|
2
|
+
/** ExportQuery is the list-query body the export endpoint accepts. Its
|
|
3
|
+
* semantics match the server's list URL parameters 1:1. */
|
|
4
4
|
export interface ExportQuery {
|
|
5
5
|
screen?: string;
|
|
6
6
|
filters?: FilterNode[];
|
|
@@ -20,7 +20,7 @@ export interface ExportRequest {
|
|
|
20
20
|
query: ExportQuery;
|
|
21
21
|
columns: string[];
|
|
22
22
|
selection?: Array<Record<string, string>>;
|
|
23
|
-
|
|
23
|
+
language?: string;
|
|
24
24
|
/** v1 wire defaults: `header_style="label"`, `ref_mode="display"`. v2 will
|
|
25
25
|
* add `code` / `stable_key`. Omitted = server defaults. */
|
|
26
26
|
header_style?: "label";
|
|
@@ -45,8 +45,6 @@ export interface ListViewState {
|
|
|
45
45
|
page?: number;
|
|
46
46
|
perPage?: number;
|
|
47
47
|
}
|
|
48
|
-
/** Locale resolver hook input — typically a string from the SDK ctx
|
|
49
|
-
* (e.g. `useLocale()`); empty/undefined defers to the server default. */
|
|
50
48
|
export interface ExportIntent {
|
|
51
49
|
scope: ExportScope;
|
|
52
50
|
/** All visible columns in display order. _select / _actions are stripped
|
|
@@ -55,7 +53,7 @@ export interface ExportIntent {
|
|
|
55
53
|
/** PK objects of the currently-selected rows. Non-empty only for
|
|
56
54
|
* `selected_rows` scope. */
|
|
57
55
|
selectedRowPKs?: Array<Record<string, string>>;
|
|
58
|
-
|
|
56
|
+
language?: string;
|
|
59
57
|
filename?: string;
|
|
60
58
|
}
|
|
61
59
|
/** buildListQuery returns the canonical list-query JSON shape from the
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ViewItem } from "../../list/ViewSwitcher.d.ts";
|
|
2
|
+
interface DeleteViewDialogProps {
|
|
3
|
+
view: ViewItem | null;
|
|
4
|
+
onCancel: () => void;
|
|
5
|
+
onConfirm: (view: ViewItem) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function DeleteViewDialog({ view, onCancel, onConfirm }: DeleteViewDialogProps): import("react").JSX.Element;
|
|
8
|
+
export {};
|