@declarion/react 0.49.0 → 0.51.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.
Files changed (50) hide show
  1. package/dist-lib/{DraggableChildrenTable-B98Md-Yq.js → DraggableChildrenTable-CJCjc_cd.js} +2 -2
  2. package/dist-lib/DynamicIcon-DW5krHuX.js +280 -0
  3. package/dist-lib/{Grid-BdtEd4R9.js → Grid-DUjbQg3r.js} +2 -2
  4. package/dist-lib/{LayoutRenderer-oVU3nEb5.js → LayoutRenderer-DbdxC-Bq.js} +10 -9
  5. package/dist-lib/{ListCardsBody-DYMt1H8l.js → ListCardsBody-C8ofksQb.js} +4 -4
  6. package/dist-lib/{MarkdownRenderer-E9hbyoUn.js → MarkdownRenderer-B9_5fwuE.js} +1 -1
  7. package/dist-lib/{RefreshControl-B_2eW53M.js → RefreshControl-C-8UCyau.js} +3 -3
  8. package/dist-lib/{SmartDetailPage.impl-Dg22HOxb.js → SmartDetailPage.impl-DWjNQ052.js} +10 -10
  9. package/dist-lib/{SmartListPage.impl-CPhhXT5S.js → SmartListPage.impl-yKBK7a8b.js} +652 -647
  10. package/dist-lib/{SmartRecordListPage.impl-CF0UKgUj.js → SmartRecordListPage.impl-DRpU_DOC.js} +10 -10
  11. package/dist-lib/{SortHeaderMenu-DodGvb7A.js → SortHeaderMenu-CbihbEGd.js} +2 -2
  12. package/dist-lib/{action-dispatch-CYOw7nkP.js → action-dispatch-C28UhXXA.js} +15 -14
  13. package/dist-lib/{cardProjection-D-AufCh-.js → cardProjection-Bp_ZPLUE.js} +2 -2
  14. package/dist-lib/components/fields/cells/registry.d.ts +1 -0
  15. package/dist-lib/components/fields/index.d.ts +1 -0
  16. package/dist-lib/components/file-widgets/host.d.ts +1 -0
  17. package/dist-lib/components/pages/list/DataCell.d.ts +2 -3
  18. package/dist-lib/components/pages/list/ListCardRow.d.ts +2 -2
  19. package/dist-lib/components/pages/list/ListCardsBody.d.ts +2 -2
  20. package/dist-lib/components/pages/list/ListTable.d.ts +5 -6
  21. package/dist-lib/components/pages/list/ListTableRow.d.ts +2 -3
  22. package/dist-lib/components/pages/list/column-sizing.d.ts +2 -3
  23. package/dist-lib/components/pages/list/columns.d.ts +2 -2
  24. package/dist-lib/components/pages/list/table-features.d.ts +14 -0
  25. package/dist-lib/components/primitives/Icons.d.ts +5 -0
  26. package/dist-lib/{field-classification-DTgUnbzd.js → field-classification-CeYJlsNq.js} +9 -9
  27. package/dist-lib/{format-count-DAHCcHZO.js → format-count-C3N-WxEy.js} +6 -6
  28. package/dist-lib/hooks/useActionData.d.ts +1 -1
  29. package/dist-lib/hooks/useAllEntityData.d.ts +1 -1
  30. package/dist-lib/hooks/useChildrenData.d.ts +1 -1
  31. package/dist-lib/hooks/useEntityData.d.ts +2 -2
  32. package/dist-lib/hooks/useObject.d.ts +1 -1
  33. package/dist-lib/hooks/useParams.d.ts +3 -3
  34. package/dist-lib/hooks/useSchema.d.ts +1 -1
  35. package/dist-lib/icons.js +1 -1
  36. package/dist-lib/index.js +16 -16
  37. package/dist-lib/{peekDraftStore-CnxqkoWN.js → peekDraftStore-D3sowXga.js} +2 -2
  38. package/dist-lib/{record-documents-key-DEFlLxnF.js → record-documents-key-8fdm7C10.js} +1 -1
  39. package/dist-lib/{registry-WypUQQ7t.js → registry-p6CejATt.js} +4 -4
  40. package/dist-lib/testing.js +1 -1
  41. package/dist-lib/types/files.d.ts +3 -0
  42. package/dist-lib/types/ordmap.d.ts +9 -2
  43. package/dist-lib/types/schema.d.ts +2 -1
  44. package/dist-lib/{useCurrentScreen-C5Oio-1G.js → useCurrentScreen-74x5yJNb.js} +23 -16
  45. package/dist-lib/{useListQuery-Dc2vbxqs.js → useListQuery-D75bgLLz.js} +3 -3
  46. package/dist-lib/{useProperties-C36ENFdY.js → useProperties-C5fZp12D.js} +1 -1
  47. package/dist-lib/{useTabSearchMirror-sIuYEFaq.js → useTabSearchMirror-D_wzoYRz.js} +2 -2
  48. package/dist-lib/{value-igT4LsqW.js → value-DKekzcjz.js} +1 -1
  49. package/package.json +20 -20
  50. package/dist-lib/DynamicIcon-Dc2j-rg_.js +0 -275
@@ -1,13 +1,13 @@
1
- import { s as e } from "./DynamicIcon-Dc2j-rg_.js";
2
- import { $n as t, A as n, At as r, Dn as i, F as a, In as o, Jn as s, N as c, Sn as l, Tn as u, Zn as d, dr as f, fr as p, q as m, rr as ee, rt as h, wn as g, zn as te } from "./useCurrentScreen-C5Oio-1G.js";
3
- import { a as _ } from "./registry-WypUQQ7t.js";
4
- import { O as ne, c as re, f as v } from "./field-classification-DTgUnbzd.js";
5
- import { f as y, h as b, p as x, u as S } from "./action-dispatch-CYOw7nkP.js";
6
- import { d as C, m as w, n as T, p as E, t as D, u as O } from "./cardProjection-D-AufCh-.js";
7
- import { c as k, f as A, h as j, m as M, n as ie, t as ae } from "./useTabSearchMirror-sIuYEFaq.js";
8
- import { n as oe, r as N } from "./useProperties-C36ENFdY.js";
9
- import { t as P } from "./LayoutRenderer-oVU3nEb5.js";
10
- import { t as se } from "./useListQuery-Dc2vbxqs.js";
1
+ import { s as e } from "./DynamicIcon-DW5krHuX.js";
2
+ import { $n as t, A as n, At as r, Dn as i, F as a, In as o, Jn as s, N as c, Sn as l, Tn as u, Zn as d, dr as f, fr as p, q as m, rr as ee, rt as h, wn as g, zn as te } from "./useCurrentScreen-74x5yJNb.js";
3
+ import { a as _ } from "./registry-p6CejATt.js";
4
+ import { O as ne, c as re, f as v } from "./field-classification-CeYJlsNq.js";
5
+ import { f as y, h as b, p as x, u as S } from "./action-dispatch-C28UhXXA.js";
6
+ import { d as C, m as w, n as T, p as E, t as D, u as O } from "./cardProjection-Bp_ZPLUE.js";
7
+ import { c as k, f as A, h as j, m as M, n as ie, t as ae } from "./useTabSearchMirror-D_wzoYRz.js";
8
+ import { n as oe, r as N } from "./useProperties-C5fZp12D.js";
9
+ import { t as P } from "./LayoutRenderer-DbdxC-Bq.js";
10
+ import { t as se } from "./useListQuery-D75bgLLz.js";
11
11
  import { useCallback as F, useEffect as I, useMemo as L, useRef as R, useState as z } from "react";
12
12
  import { useSearchParams as ce } from "react-router";
13
13
  import { Fragment as B, jsx as V, jsxs as H } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import { s as e } from "./DynamicIcon-Dc2j-rg_.js";
2
- import { cr as t, er as n } from "./useCurrentScreen-C5Oio-1G.js";
1
+ import { s as e } from "./DynamicIcon-DW5krHuX.js";
2
+ import { cr as t, er as n } from "./useCurrentScreen-74x5yJNb.js";
3
3
  import { useRef as r, useState as i } from "react";
4
4
  import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
5
5
  //#region src/components/pages/list/SortHeaderMenu.tsx
@@ -1,6 +1,6 @@
1
- import { s as e, t } from "./DynamicIcon-Dc2j-rg_.js";
2
- import { $n as n, B as r, Dn as i, E as a, I as o, L as s, O as c, P as l, R as u, V as d, W as f, cr as p, d as m, dr as h, er as g, fr as _, g as v, j as y, u as b, wn as x, z as S } from "./useCurrentScreen-C5Oio-1G.js";
3
- import { a as C, c as w, d as T, f as E, i as D, l as O, n as ee, o as k, p as A, r as te, s as j, t as M, u as N } from "./value-igT4LsqW.js";
1
+ import { s as e, t } from "./DynamicIcon-DW5krHuX.js";
2
+ import { $n as n, B as r, Dn as i, E as a, I as o, L as s, O as c, P as l, R as u, V as d, W as f, cr as p, d as m, dr as h, er as g, fr as _, g as v, j as y, u as b, wn as x, z as S } from "./useCurrentScreen-74x5yJNb.js";
3
+ import { a as C, c as w, d as T, f as E, i as D, l as O, n as ee, o as k, p as A, r as te, s as j, t as M, u as N } from "./value-DKekzcjz.js";
4
4
  import { Fragment as P, Suspense as F, lazy as I, useCallback as L, useEffect as R, useLayoutEffect as z, useMemo as ne, useRef as B, useState as V } from "react";
5
5
  import { Fragment as H, jsx as U, jsxs as W } from "react/jsx-runtime";
6
6
  //#region src/components/file-widgets/registry.ts
@@ -396,7 +396,7 @@ function X(e) {
396
396
  }
397
397
  //#endregion
398
398
  //#region src/components/file-widgets/GridLazy.tsx
399
- var _e = I(() => import("./Grid-BdtEd4R9.js").then((e) => ({ default: e.Grid })));
399
+ var _e = I(() => import("./Grid-DUjbQg3r.js").then((e) => ({ default: e.Grid })));
400
400
  function Z() {
401
401
  return /* @__PURE__ */ U("div", { className: "h-24 w-full rounded-md bg-muted animate-pulse" });
402
402
  }
@@ -1004,11 +1004,11 @@ function Fe(e, t, n) {
1004
1004
  return i ? x(i, t, n) : t;
1005
1005
  }
1006
1006
  function Ie(e) {
1007
- let { entity: t, entityCode: n, fieldName: r, record: i, mode: a, onChange: o, refs: s, disabled: c, surface: l, entities: u, screens: d, locale: f, fieldId: p, labelId: m, structure: h } = e, g = je(t, r);
1008
- if (g) {
1009
- let e = g.display?.widget ?? "", t = q(e);
1007
+ let { entity: t, entityCode: n, fieldName: r, record: i, mode: a, onChange: o, refs: s, disabled: c, surface: l, entities: u, screens: d, locale: f, fieldId: p, labelId: m, structure: h, detailScreen: g } = e, _ = je(t, r);
1008
+ if (_) {
1009
+ let e = _.display?.widget ?? "", t = q(e);
1010
1010
  return t ? /* @__PURE__ */ U(t, {
1011
- field: g,
1011
+ field: _,
1012
1012
  fieldName: r,
1013
1013
  entityCode: n,
1014
1014
  value: Me(i, r),
@@ -1021,12 +1021,12 @@ function Ie(e) {
1021
1021
  children: e ? `Unknown file widget: ${e}` : "Missing file widget"
1022
1022
  });
1023
1023
  }
1024
- let _ = t.fields.get(r), v = h && a === "display" && _ ? {
1025
- ..._,
1024
+ let v = t.fields.get(r), b = h && a === "display" && v ? {
1025
+ ...v,
1026
1026
  structure: h
1027
- } : _;
1028
- return v ? y({
1029
- field: v,
1027
+ } : v;
1028
+ return b ? y({
1029
+ field: b,
1030
1030
  entityCode: n,
1031
1031
  fieldName: r,
1032
1032
  value: Ne(t, i, r),
@@ -1040,7 +1040,8 @@ function Ie(e) {
1040
1040
  screens: d,
1041
1041
  locale: f,
1042
1042
  fieldId: p,
1043
- labelId: m
1043
+ labelId: m,
1044
+ detailScreen: g
1044
1045
  }) : null;
1045
1046
  }
1046
1047
  //#endregion
@@ -1,5 +1,5 @@
1
- import { En as e, U as t, W as n } from "./useCurrentScreen-C5Oio-1G.js";
2
- import { d as r, f as i, u as a } from "./action-dispatch-CYOw7nkP.js";
1
+ import { En as e, U as t, W as n } from "./useCurrentScreen-74x5yJNb.js";
2
+ import { d as r, f as i, u as a } from "./action-dispatch-C28UhXXA.js";
3
3
  import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
4
4
  //#region src/components/file-widgets/payload.ts
5
5
  function l(e) {
@@ -13,6 +13,7 @@ export interface CellResolveCtx {
13
13
  screens?: Record<string, Screen>;
14
14
  refs?: Refs | (() => Refs | undefined);
15
15
  locale: string;
16
+ detailScreen?: string;
16
17
  }
17
18
  export type CellFactory = (ctx: CellResolveCtx) => CellRenderer;
18
19
  export declare const REGISTRY_WIDGETS: readonly string[];
@@ -20,6 +20,7 @@ export interface FieldRendererProps {
20
20
  entities?: Record<string, Entity>;
21
21
  screens?: Record<string, Screen>;
22
22
  locale: string;
23
+ detailScreen?: string;
23
24
  }
24
25
  type FieldRenderer = React.ComponentType<FieldRendererProps>;
25
26
  export declare const editRegistry: Record<FieldType, FieldRenderer>;
@@ -23,4 +23,5 @@ export declare function renderSchemaField(props: {
23
23
  fieldId?: string;
24
24
  labelId?: string;
25
25
  structure?: string;
26
+ detailScreen?: string;
26
27
  }): ReactNode;
@@ -1,5 +1,4 @@
1
- import type { Cell } from "@tanstack/react-table";
2
- import type { RowData } from "../../../types/api";
1
+ import type { ListCell } from "./table-features";
3
2
  export declare function DataCell({ cell, }: {
4
- cell: Cell<RowData, unknown>;
3
+ cell: ListCell;
5
4
  }): import("react").JSX.Element;
@@ -1,11 +1,11 @@
1
- import type { Row } from "@tanstack/react-table";
1
+ import type { ListRow } from "./table-features";
2
2
  import type { ListResponse, RowData } from "../../../types/api";
3
3
  import { type Action, type Entity, type Screen } from "../../../types/schema";
4
4
  import type { resolveCellRenderer } from "../../../components/fields/cells/registry";
5
5
  import type { RowInteraction } from "./useListRowInteraction";
6
6
  type CellRenderer = ReturnType<typeof resolveCellRenderer>;
7
7
  interface ListCardRowProps {
8
- row: Row<RowData>;
8
+ row: ListRow;
9
9
  /** The ABSOLUTE index, which is what decides striping - the list is
10
10
  * virtualized, so `nth-child` would count the render window. */
11
11
  rowIndex: number;
@@ -1,11 +1,11 @@
1
- import type { Row } from "@tanstack/react-table";
1
+ import type { ListRow } from "./table-features";
2
2
  import type { Virtualizer } from "@tanstack/react-virtual";
3
3
  import type { ListResponse, RowData } from "../../../types/api";
4
4
  import type { resolveCellRenderer } from "../../../components/fields/cells/registry";
5
5
  import type { Action, Entity, Screen } from "../../../types/schema";
6
6
  import type { RowInteraction } from "./useListRowInteraction";
7
7
  interface ListCardsBodyProps {
8
- rows: Row<RowData>[];
8
+ rows: ListRow[];
9
9
  virtualizer: Virtualizer<HTMLDivElement, Element>;
10
10
  entity: Entity;
11
11
  screen: Screen;
@@ -1,14 +1,13 @@
1
1
  import { type ReactNode } from "react";
2
- import { type ColumnDef, type Row, type Table } from "@tanstack/react-table";
2
+ import type { ListColumnDef, ListRow, ListTableInstance } from "./table-features";
3
3
  import type { Virtualizer } from "@tanstack/react-virtual";
4
4
  import { type SortCol, type SortNulls } from "../../../lib/sort";
5
- import type { RowData } from "../../../types/api";
6
5
  import type { Entity } from "../../../types/schema";
7
6
  import type { useHeaderReorder } from "./useHeaderReorder";
8
7
  interface ListTableProps {
9
- table: Table<RowData>;
10
- columns: ColumnDef<RowData>[];
11
- rows: Row<RowData>[];
8
+ table: ListTableInstance;
9
+ columns: ListColumnDef[];
10
+ rows: ListRow[];
12
11
  entity: Entity;
13
12
  /** Published as CSS variables on the <table> so a resize drag reflows without
14
13
  * re-rendering the memoized body. */
@@ -27,7 +26,7 @@ interface ListTableProps {
27
26
  appendColumnSort: (field: string, dir: "asc" | "desc", nulls: SortNulls | undefined) => void;
28
27
  clearColumnSort: (field: string) => void;
29
28
  clearAllSorts: () => void;
30
- renderRow: (row: Row<RowData>, index: number) => ReactNode;
29
+ renderRow: (row: ListRow, index: number) => ReactNode;
31
30
  isResizingColumn: string | false;
32
31
  }
33
32
  export declare function ListTable({ table, columns, rows, entity, columnSizeVars, totalColumnsWidth, theadRef, virtualizer: rowVirtualizer, visibleCols, headerReorder, sortCols, sortNullsMap, shiftClickColumn, applyColumnSort, appendColumnSort, clearColumnSort, clearAllSorts, renderRow, isResizingColumn, }: ListTableProps): import("react").JSX.Element;
@@ -1,9 +1,8 @@
1
- import type { Row } from "@tanstack/react-table";
2
- import type { RowData } from "../../../types/api";
1
+ import type { ListRow } from "./table-features";
3
2
  import type { Entity } from "../../../types/schema";
4
3
  import type { RowInteraction } from "./useListRowInteraction";
5
4
  interface ListTableRowProps {
6
- row: Row<RowData>;
5
+ row: ListRow;
7
6
  rowIndex: number;
8
7
  entity: Entity;
9
8
  hasSoftDelete: boolean;
@@ -1,5 +1,4 @@
1
- import type { Table } from "@tanstack/react-table";
2
- import type { RowData } from "../../../types/api";
1
+ import type { ListTableInstance } from "./table-features";
3
2
  /** CSS custom-property name for a header's width. */
4
3
  export declare function headerSizeVar(headerId: string): string;
5
4
  /** CSS custom-property name for a column's (cell) width. */
@@ -12,4 +11,4 @@ export declare function sizeFromVar(varName: string): string;
12
11
  * establishes the reactivity so the object recomputes on every resize frame;
13
12
  * memoize it on those two state slices in the component.
14
13
  */
15
- export declare function buildColumnSizeVars(table: Table<RowData>): Record<string, number>;
14
+ export declare function buildColumnSizeVars(table: ListTableInstance): Record<string, number>;
@@ -1,5 +1,5 @@
1
1
  import { type RefObject } from "react";
2
- import type { ColumnDef } from "@tanstack/react-table";
2
+ import type { ListColumnDef } from "./table-features";
3
3
  import { type Refs } from "../../../components/fields/cells/registry";
4
4
  import type { Action, Entity, Screen } from "../../../types/schema";
5
5
  import type { RowData } from "../../../types/api";
@@ -41,5 +41,5 @@ export interface BuildListColumnsArgs {
41
41
  rowSelectionKey: (entity: Entity, row: RowData) => string;
42
42
  setPeekRow: (row: RowData) => void;
43
43
  }
44
- export declare function buildListColumns(args: BuildListColumnsArgs): ColumnDef<RowData>[];
44
+ export declare function buildListColumns(args: BuildListColumnsArgs): ListColumnDef[];
45
45
  export {};
@@ -0,0 +1,14 @@
1
+ import { type Cell, type ColumnDef, type Row, type Table } from "@tanstack/react-table";
2
+ import type { RowData } from "../../../types/api";
3
+ export declare const listTableFeatures: {
4
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
5
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
6
+ columnSizingFeature: import("@tanstack/react-table").TableFeature;
7
+ columnResizingFeature: import("@tanstack/react-table").TableFeature;
8
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
9
+ };
10
+ export type ListFeatures = typeof listTableFeatures;
11
+ export type ListTableInstance = Table<ListFeatures, RowData>;
12
+ export type ListRow = Row<ListFeatures, RowData>;
13
+ export type ListCell = Cell<ListFeatures, RowData, unknown>;
14
+ export type ListColumnDef = ColumnDef<ListFeatures, RowData, unknown>;
@@ -17,6 +17,7 @@ export declare const Icon: {
17
17
  ban: FC<IconProps>;
18
18
  bell: FC<IconProps>;
19
19
  bolt: FC<IconProps>;
20
+ "book-open": FC<IconProps>;
20
21
  box: FC<IconProps>;
21
22
  boxes: FC<IconProps>;
22
23
  branch: FC<IconProps>;
@@ -51,8 +52,10 @@ export declare const Icon: {
51
52
  "file-diff": FC<IconProps>;
52
53
  filePlus: FC<IconProps>;
53
54
  filter: FC<IconProps>;
55
+ fingerprint: FC<IconProps>;
54
56
  flow: FC<IconProps>;
55
57
  folder: FC<IconProps>;
58
+ gavel: FC<IconProps>;
56
59
  "git-branch": FC<IconProps>;
57
60
  globe: FC<IconProps>;
58
61
  grid: FC<IconProps>;
@@ -81,6 +84,7 @@ export declare const Icon: {
81
84
  "log-in": FC<IconProps>;
82
85
  logout: FC<IconProps>;
83
86
  menu: FC<IconProps>;
87
+ "messages-square": FC<IconProps>;
84
88
  minus: FC<IconProps>;
85
89
  moon: FC<IconProps>;
86
90
  more: FC<IconProps>;
@@ -96,6 +100,7 @@ export declare const Icon: {
96
100
  repeat: FC<IconProps>;
97
101
  right: FC<IconProps>;
98
102
  save: FC<IconProps>;
103
+ scale: FC<IconProps>;
99
104
  sched: FC<IconProps>;
100
105
  search: FC<IconProps>;
101
106
  settings: FC<IconProps>;
@@ -1,4 +1,4 @@
1
- import { At as e, Fn as t, Gt as n, St as r, Tt as i, _t as a, bt as o, jt as s, kn as c, kt as l, mt as u, ot as d, pt as f, rt as p, st as m, vt as h } from "./useCurrentScreen-C5Oio-1G.js";
1
+ import { At as e, Fn as t, Gt as n, St as r, Tt as i, _t as a, bt as o, jt as s, kn as c, kt as l, mt as u, ot as d, pt as f, rt as p, st as m, vt as h } from "./useCurrentScreen-74x5yJNb.js";
2
2
  import { useCallback as g, useEffect as _, useMemo as v, useRef as ee, useState as te } from "react";
3
3
  import { parsePath as ne, useLocation as re, useNavigate as ie } from "react-router";
4
4
  import { useMutation as y, useQuery as b, useQueryClient as x } from "@tanstack/react-query";
@@ -117,18 +117,18 @@ function me(e, t) {
117
117
  return e?.find((e) => e.code === t);
118
118
  }
119
119
  function he(e, t) {
120
- let n = b({
120
+ let n = s((e) => e.isAuthenticated), r = b({
121
121
  queryKey: ["params", e],
122
122
  queryFn: () => oe(e),
123
- enabled: !!e,
123
+ enabled: !!e && n,
124
124
  staleTime: 6e4
125
- }), r = n.data, i = !!r?.found;
125
+ }), i = r.data, a = !!i?.found;
126
126
  return {
127
- value: i ? r.value : t,
128
- found: i,
129
- source: r?.source,
130
- loading: n.isLoading,
131
- error: n.error ?? null
127
+ value: a ? i.value : t,
128
+ found: a,
129
+ source: i?.source,
130
+ loading: r.isLoading,
131
+ error: r.error ?? null
132
132
  };
133
133
  }
134
134
  //#endregion
@@ -1,9 +1,9 @@
1
- import { s as e, t } from "./DynamicIcon-Dc2j-rg_.js";
2
- import { A as n, At as r, Dn as i, G as a, Jn as o, Wn as s, X as c, Zn as l, _ as u, cr as d, dr as f, er as p, fr as m, i as h, j as g, lr as _, or as v, rr as y, v as b, x, zn as S } from "./useCurrentScreen-C5Oio-1G.js";
3
- import { _ as C } from "./RefreshControl-B_2eW53M.js";
4
- import { A as w, C as T, S as E } from "./field-classification-DTgUnbzd.js";
5
- import { c as ee, o as te, p as ne, r as re } from "./action-dispatch-CYOw7nkP.js";
6
- import { a as D, d as O, f as k, h as A, i as j, l as M, o as N, s as P, u as F } from "./useTabSearchMirror-sIuYEFaq.js";
1
+ import { s as e, t } from "./DynamicIcon-DW5krHuX.js";
2
+ import { A as n, At as r, Dn as i, G as a, Jn as o, Wn as s, X as c, Zn as l, _ as u, cr as d, dr as f, er as p, fr as m, i as h, j as g, lr as _, or as v, rr as y, v as b, x, zn as S } from "./useCurrentScreen-74x5yJNb.js";
3
+ import { _ as C } from "./RefreshControl-C-8UCyau.js";
4
+ import { A as w, C as T, S as E } from "./field-classification-CeYJlsNq.js";
5
+ import { c as ee, o as te, p as ne, r as re } from "./action-dispatch-C28UhXXA.js";
6
+ import { a as D, d as O, f as k, h as A, i as j, l as M, o as N, s as P, u as F } from "./useTabSearchMirror-D_wzoYRz.js";
7
7
  import { Fragment as I, useCallback as L, useEffect as R, useMemo as z, useRef as B, useState as V } from "react";
8
8
  import { useLocation as H, useSearchParams as ie } from "react-router";
9
9
  import { Fragment as U, jsx as W, jsxs as G } from "react/jsx-runtime";
@@ -29,7 +29,7 @@ export declare function actionDataQueryKey(actionCode: string | undefined, param
29
29
  * the caller registers the key via `actionDataQueryKey` +
30
30
  * `useRegisterRetainedQuery` for retention.
31
31
  */
32
- export declare function useActionData<T>(actionCode: string | undefined, params: Record<string, unknown>, enabled?: boolean): import("@tanstack/react-query").UseQueryResult<NoInfer<T>, Error>;
32
+ export declare function useActionData<T>(actionCode: string | undefined, params: Record<string, unknown>, enabled?: boolean): import("@tanstack/react-query").UseQueryResult<T, Error>;
33
33
  /**
34
34
  * The React Query key for a cursor (infinite) action read. Single source of
35
35
  * truth for both `useCursorActionData` and its retained-page registration. The
@@ -13,4 +13,4 @@ import type { ListParams, ListResponse } from "../types/api";
13
13
  * The caller's `page` / `per_page` in `params` are ignored - this hook owns
14
14
  * pagination - while `filters`, `search`, `sort`, and `expand` are honored.
15
15
  */
16
- export declare function useAllEntityData(entity: string | undefined, params?: ListParams): import("@tanstack/react-query").UseQueryResult<NoInfer<ListResponse<Record<string, unknown>>>, Error>;
16
+ export declare function useAllEntityData(entity: string | undefined, params?: ListParams): import("@tanstack/react-query").UseQueryResult<ListResponse<Record<string, unknown>>, Error>;
@@ -1,3 +1,3 @@
1
1
  import type { ListResponse } from "../types/api";
2
2
  export declare const ENTITY_CHILDREN_KEY: "entity-children";
3
- export declare function useChildrenData(parentEntity: string, parentId: string, childCode: string, foreignKey: string | string[], sort?: string, limit?: number): import("@tanstack/react-query").UseQueryResult<NoInfer<ListResponse<Record<string, unknown>>>, Error>;
3
+ export declare function useChildrenData(parentEntity: string, parentId: string, childCode: string, foreignKey: string | string[], sort?: string, limit?: number): import("@tanstack/react-query").UseQueryResult<ListResponse<Record<string, unknown>>, Error>;
@@ -16,7 +16,7 @@ export declare function entityDataQueryKey(entity: string | undefined, params: L
16
16
  * is fetched separately by `useEntityCount`; the table renders rows the
17
17
  * moment this query resolves, independent of count latency.
18
18
  */
19
- export declare function useEntityData(entity: string | undefined, params: ListParams, enabled?: boolean): import("@tanstack/react-query").UseQueryResult<NoInfer<ListResponse<Record<string, unknown>>>, Error>;
19
+ export declare function useEntityData(entity: string | undefined, params: ListParams, enabled?: boolean): import("@tanstack/react-query").UseQueryResult<ListResponse<Record<string, unknown>>, Error>;
20
20
  /**
21
21
  * useEntityCount fetches the total row count for a list view in a SEPARATE
22
22
  * request from the window (`count: "only"` - the server skips the data
@@ -31,4 +31,4 @@ export declare function useEntityData(entity: string | undefined, params: ListPa
31
31
  * to render. A count failure does NOT break the table: callers treat a
32
32
  * failed/absent count as "unknown" and fall back to the loaded row count.
33
33
  */
34
- export declare function useEntityCount(entity: string | undefined, params: ListParams, enabled?: boolean): import("@tanstack/react-query").UseQueryResult<NoInfer<ListResponse<Record<string, unknown>>>, Error>;
34
+ export declare function useEntityCount(entity: string | undefined, params: ListParams, enabled?: boolean): import("@tanstack/react-query").UseQueryResult<ListResponse<Record<string, unknown>>, Error>;
@@ -7,4 +7,4 @@ import type { PkValues } from "../types/schema";
7
7
  * for a composite PK sorts the parts so key order does not fork the cache.
8
8
  */
9
9
  export declare function objectQueryKey(entity: string | undefined, pkValues: PkValues | string | undefined): QueryKey;
10
- export declare function useObject(entity: string | undefined, pkValues: PkValues | string | undefined): import("@tanstack/react-query").UseQueryResult<NoInfer<import("..").DataResponse<Record<string, unknown>>>, Error>;
10
+ export declare function useObject(entity: string | undefined, pkValues: PkValues | string | undefined): import("@tanstack/react-query").UseQueryResult<import("..").DataResponse<Record<string, unknown>>, Error>;
@@ -42,8 +42,8 @@ export declare function useCarrierParamOverrides({ carrierEntityCode, rowId, ena
42
42
  * resolution. Disclosure-tiered server-side. Short staleTime: params are
43
43
  * push-invalidated on the server, and edits invalidate this key directly.
44
44
  */
45
- export declare function useAllParams(resolution?: "tenant"): import("@tanstack/react-query").UseQueryResult<NoInfer<ResolvedParam[]>, Error>;
46
- export declare function usePublicParams(): import("@tanstack/react-query").UseQueryResult<NoInfer<import("../types/api").PublicParamsResponse>, Error>;
45
+ export declare function useAllParams(resolution?: "tenant"): import("@tanstack/react-query").UseQueryResult<ResolvedParam[], Error>;
46
+ export declare function usePublicParams(): import("@tanstack/react-query").UseQueryResult<import("../types/api").PublicParamsResponse, Error>;
47
47
  /**
48
48
  * Looks up the platform's record for a parameter without a default.
49
49
  * Returns the full ParamLookup envelope (`found`, `value`, `source`).
@@ -51,7 +51,7 @@ export declare function usePublicParams(): import("@tanstack/react-query").UseQu
51
51
  */
52
52
  export declare function useResolvedParam(code: string, options?: {
53
53
  enabled?: boolean;
54
- }): import("@tanstack/react-query").UseQueryResult<NoInfer<ParamLookup>, Error>;
54
+ }): import("@tanstack/react-query").UseQueryResult<ParamLookup, Error>;
55
55
  export declare function useEffectiveParam<T = unknown>(code: string): {
56
56
  value: T | undefined;
57
57
  found: boolean;
@@ -1 +1 @@
1
- export declare function useSchema(): import("@tanstack/react-query").UseQueryResult<NoInfer<import("..").Schema>, Error>;
1
+ export declare function useSchema(): import("@tanstack/react-query").UseQueryResult<import("..").Schema, Error>;
package/dist-lib/icons.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./DynamicIcon-Dc2j-rg_.js";
1
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./DynamicIcon-DW5krHuX.js";
2
2
  export { o as DynamicIcon, a as Icon, n as LucideIcon, i as getIcon, t as getIconRegistryVersion, e as setIconRegistry, r as subscribeIconRegistry };
package/dist-lib/index.js CHANGED
@@ -1,14 +1,14 @@
1
- import { a as e, r as t, s as n, t as r } from "./DynamicIcon-Dc2j-rg_.js";
2
- import { $n as i, $t as a, A as o, An as s, At as c, B as l, Bn as u, Bt as d, C as f, Cn as p, Ct as m, D as h, Dn as g, En as _, F as v, Ft as y, G as b, Gn as x, Hn as S, Ht as C, I as w, It as T, J as E, Jn as D, Jt as O, K as ee, Kn as k, Kt as A, L as j, Lt as M, Mt as te, N as ne, Nn as re, Nt as ie, O as ae, On as oe, P as se, Pt as ce, Qn as le, Qt as ue, R as de, Rt as fe, St as pe, Tt as me, Un as he, Ut as ge, Vn as _e, Vt as ve, Wn as ye, Wt as be, X as xe, Xn as Se, Xt as Ce, Y as we, Yn as Te, Yt as Ee, Zn as N, Zt as De, _ as Oe, _n as ke, a as Ae, ar as je, at as Me, bt as Ne, c as Pe, cn as Fe, cr as Ie, ct as Le, dn as Re, dr as P, en as ze, er as F, fn as Be, fr as I, ft as Ve, gt as He, hn as Ue, ht as We, i as Ge, in as Ke, ir as qe, it as Je, j as Ye, jn as Xe, jt as L, k as Ze, kn as Qe, kt as $e, l as et, ln as tt, lr as nt, lt as rt, mn as it, n as at, nn as ot, nr as st, nt as ct, o as lt, on as ut, or as dt, pt as ft, q as pt, qn as mt, qt as ht, r as gt, rn as _t, rr as R, rt as z, s as vt, sn as yt, sr as bt, t as xt, tn as St, tr as Ct, un as wt, ur as B, ut as Tt, vn as Et, vt as Dt, wn as Ot, yn as kt, z as At, zn as V, zt as jt } from "./useCurrentScreen-C5Oio-1G.js";
3
- import { _ as Mt, a as Nt, c as Pt, d as Ft, f as It, g as Lt, h as Rt, i as zt, l as Bt, m as Vt, n as Ht, o as Ut, p as Wt, r as Gt, s as Kt, t as qt, u as Jt } from "./RefreshControl-B_2eW53M.js";
4
- import { a as Yt, d as Xt, f as Zt, i as Qt, n as $t, o as en, r as tn, s as nn, t as rn, u as an } from "./registry-WypUQQ7t.js";
5
- import { n as on, t as sn } from "./record-documents-key-DEFlLxnF.js";
1
+ import { a as e, r as t, s as n, t as r } from "./DynamicIcon-DW5krHuX.js";
2
+ import { $n as i, $t as a, A as o, An as s, At as c, B as l, Bn as u, Bt as d, C as f, Cn as p, Ct as m, D as h, Dn as g, En as _, F as v, Ft as y, G as b, Gn as x, Hn as S, Ht as C, I as w, It as T, J as E, Jn as D, Jt as O, K as ee, Kn as k, Kt as A, L as j, Lt as M, Mt as te, N as ne, Nn as re, Nt as ie, O as ae, On as oe, P as se, Pt as ce, Qn as le, Qt as ue, R as de, Rt as fe, St as pe, Tt as me, Un as he, Ut as ge, Vn as _e, Vt as ve, Wn as ye, Wt as be, X as xe, Xn as Se, Xt as Ce, Y as we, Yn as Te, Yt as Ee, Zn as N, Zt as De, _ as Oe, _n as ke, a as Ae, ar as je, at as Me, bt as Ne, c as Pe, cn as Fe, cr as Ie, ct as Le, dn as Re, dr as P, en as ze, er as F, fn as Be, fr as I, ft as Ve, gt as He, hn as Ue, ht as We, i as Ge, in as Ke, ir as qe, it as Je, j as Ye, jn as Xe, jt as L, k as Ze, kn as Qe, kt as $e, l as et, ln as tt, lr as nt, lt as rt, mn as it, n as at, nn as ot, nr as st, nt as ct, o as lt, on as ut, or as dt, pt as ft, q as pt, qn as mt, qt as ht, r as gt, rn as _t, rr as R, rt as z, s as vt, sn as yt, sr as bt, t as xt, tn as St, tr as Ct, un as wt, ur as B, ut as Tt, vn as Et, vt as Dt, wn as Ot, yn as kt, z as At, zn as V, zt as jt } from "./useCurrentScreen-74x5yJNb.js";
3
+ import { _ as Mt, a as Nt, c as Pt, d as Ft, f as It, g as Lt, h as Rt, i as zt, l as Bt, m as Vt, n as Ht, o as Ut, p as Wt, r as Gt, s as Kt, t as qt, u as Jt } from "./RefreshControl-C-8UCyau.js";
4
+ import { a as Yt, d as Xt, f as Zt, i as Qt, n as $t, o as en, r as tn, s as nn, t as rn, u as an } from "./registry-p6CejATt.js";
5
+ import { n as on, t as sn } from "./record-documents-key-8fdm7C10.js";
6
6
  import { t as cn } from "./Check-DAfMbQIw.js";
7
- import { A as ln, B as un, C as dn, D as fn, F as H, H as pn, I as mn, L as U, M as hn, N as gn, O as W, P as _n, R as vn, T as yn, U as bn, V as xn, _ as Sn, a as Cn, b as wn, c as Tn, f as En, i as Dn, j as On, k as kn, l as An, m as jn, n as Mn, o as Nn, p as Pn, r as Fn, s as In, t as Ln, u as Rn, v as zn, x as Bn, y as Vn, z as Hn } from "./field-classification-DTgUnbzd.js";
8
- import { C as Un, S as Wn, _ as Gn, a as Kn, b as qn, c as Jn, g as Yn, i as Xn, n as Zn, o as Qn, r as $n, s as er, t as tr, v as nr, x as rr, y as ir } from "./action-dispatch-CYOw7nkP.js";
9
- import { S as ar, _ as or, a as sr, b as cr, d as lr, f as ur, g as dr, h as fr, o as pr, p as mr, r as hr, s as gr, t as _r, v as vr, x as yr, y as br } from "./useTabSearchMirror-sIuYEFaq.js";
10
- import { a as xr, c as Sr, d as Cr, f as wr, i as Tr, l as Er, m as Dr, n as Or, o as kr, p as Ar, r as jr, s as Mr, t as Nr, u as Pr } from "./format-count-DAHCcHZO.js";
11
- import { n as Fr, r as Ir, t as Lr } from "./useProperties-C36ENFdY.js";
7
+ import { A as ln, B as un, C as dn, D as fn, F as H, H as pn, I as mn, L as U, M as hn, N as gn, O as W, P as _n, R as vn, T as yn, U as bn, V as xn, _ as Sn, a as Cn, b as wn, c as Tn, f as En, i as Dn, j as On, k as kn, l as An, m as jn, n as Mn, o as Nn, p as Pn, r as Fn, s as In, t as Ln, u as Rn, v as zn, x as Bn, y as Vn, z as Hn } from "./field-classification-CeYJlsNq.js";
8
+ import { C as Un, S as Wn, _ as Gn, a as Kn, b as qn, c as Jn, g as Yn, i as Xn, n as Zn, o as Qn, r as $n, s as er, t as tr, v as nr, x as rr, y as ir } from "./action-dispatch-C28UhXXA.js";
9
+ import { S as ar, _ as or, a as sr, b as cr, d as lr, f as ur, g as dr, h as fr, o as pr, p as mr, r as hr, s as gr, t as _r, v as vr, x as yr, y as br } from "./useTabSearchMirror-D_wzoYRz.js";
10
+ import { a as xr, c as Sr, d as Cr, f as wr, i as Tr, l as Er, m as Dr, n as Or, o as kr, p as Ar, r as jr, s as Mr, t as Nr, u as Pr } from "./format-count-C3N-WxEy.js";
11
+ import { n as Fr, r as Ir, t as Lr } from "./useProperties-C5fZp12D.js";
12
12
  import { Fragment as Rr, Suspense as zr, createElement as Br, lazy as Vr, useCallback as G, useEffect as K, useMemo as q, useRef as J, useState as Y } from "react";
13
13
  import { BrowserRouter as Hr, Link as Ur, Navigate as Wr, Outlet as Gr, Route as X, Routes as Kr, useLocation as qr, useLocation as Jr, useNavigate as Yr, useNavigate as Xr, useNavigationType as Zr, useParams as Qr, useSearchParams as $r, useSearchParams as ei } from "react-router";
14
14
  import { QueryClient as ti, QueryClientProvider as ni, useInfiniteQuery as ri, useMutation as ii, useQuery as ai, useQueryClient as oi } from "@tanstack/react-query";
@@ -9014,7 +9014,7 @@ function xc({ code: e, action: t }) {
9014
9014
  }
9015
9015
  //#endregion
9016
9016
  //#region src/components/pages/SmartListPage.tsx
9017
- var Sc = Vr(() => import("./SmartListPage.impl-CPhhXT5S.js").then((e) => ({ default: e.SmartListPage })));
9017
+ var Sc = Vr(() => import("./SmartListPage.impl-yKBK7a8b.js").then((e) => ({ default: e.SmartListPage })));
9018
9018
  function Cc(e) {
9019
9019
  return /* @__PURE__ */ Q(zr, {
9020
9020
  fallback: null,
@@ -9023,7 +9023,7 @@ function Cc(e) {
9023
9023
  }
9024
9024
  //#endregion
9025
9025
  //#region src/components/pages/SmartDetailPage.tsx
9026
- var wc = Vr(() => import("./SmartDetailPage.impl-Dg22HOxb.js").then((e) => ({ default: e.SmartDetailPage })));
9026
+ var wc = Vr(() => import("./SmartDetailPage.impl-DWjNQ052.js").then((e) => ({ default: e.SmartDetailPage })));
9027
9027
  function Tc(e) {
9028
9028
  return /* @__PURE__ */ Q(zr, {
9029
9029
  fallback: null,
@@ -9032,7 +9032,7 @@ function Tc(e) {
9032
9032
  }
9033
9033
  //#endregion
9034
9034
  //#region src/components/pages/SmartRecordListPage.tsx
9035
- var Ec = Vr(() => import("./SmartRecordListPage.impl-CF0UKgUj.js").then((e) => ({ default: e.SmartRecordListPage })));
9035
+ var Ec = Vr(() => import("./SmartRecordListPage.impl-DRpU_DOC.js").then((e) => ({ default: e.SmartRecordListPage })));
9036
9036
  function Dc(e) {
9037
9037
  return /* @__PURE__ */ Q(zr, {
9038
9038
  fallback: null,
@@ -9099,10 +9099,10 @@ function Oc() {
9099
9099
  //#endregion
9100
9100
  //#region src/lib/capabilityPrefetch.ts
9101
9101
  var kc = [
9102
- () => import("./MarkdownRenderer-E9hbyoUn.js"),
9102
+ () => import("./MarkdownRenderer-B9_5fwuE.js"),
9103
9103
  () => import("./JsonEditor-DoNmyrYd.js"),
9104
- () => import("./Grid-BdtEd4R9.js"),
9105
- () => import("./DraggableChildrenTable-B98Md-Yq.js")
9104
+ () => import("./Grid-DUjbQg3r.js"),
9105
+ () => import("./DraggableChildrenTable-CJCjc_cd.js")
9106
9106
  ];
9107
9107
  function Ac() {
9108
9108
  for (let e of kc) e().catch(() => {});
@@ -1,5 +1,5 @@
1
- import { s as e } from "./DynamicIcon-Dc2j-rg_.js";
2
- import { Bn as t, Dn as n, bt as r, cr as i, er as a, fr as o, i as s, rr as c } from "./useCurrentScreen-C5Oio-1G.js";
1
+ import { s as e } from "./DynamicIcon-DW5krHuX.js";
2
+ import { Bn as t, Dn as n, bt as r, cr as i, er as a, fr as o, i as s, rr as c } from "./useCurrentScreen-74x5yJNb.js";
3
3
  import { useMemo as l, useRef as u, useState as d } from "react";
4
4
  import { useQuery as f } from "@tanstack/react-query";
5
5
  import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { s as e } from "./DynamicIcon-Dc2j-rg_.js";
1
+ import { s as e } from "./DynamicIcon-DW5krHuX.js";
2
2
  import { useCallback as t, useState as n } from "react";
3
3
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
4
4
  //#region src/components/primitives/RecordIdBadge.tsx
@@ -1,7 +1,7 @@
1
- import { s as e, t } from "./DynamicIcon-Dc2j-rg_.js";
2
- import { $n as n, A as r, At as i, Bn as a, C as o, Cn as s, Dn as c, E as l, En as u, Gt as d, Jn as f, K as p, Nn as m, O as h, Sn as g, St as _, T as v, X as y, Zn as b, _ as x, _t as S, b as C, bt as w, cr as T, d as E, dr as D, er as O, fr as k, gn as A, gt as j, i as M, j as N, kt as P, rr as ee, rt as F, u as I, ur as L, v as R, vt as te, wn as z, wt as B, yt as V, zn as H } from "./useCurrentScreen-C5Oio-1G.js";
3
- import { g as ne, h as U, j as re } from "./field-classification-DTgUnbzd.js";
4
- import { c as ie, l as ae, o as oe, t as se } from "./action-dispatch-CYOw7nkP.js";
1
+ import { s as e, t } from "./DynamicIcon-DW5krHuX.js";
2
+ import { $n as n, A as r, At as i, Bn as a, C as o, Cn as s, Dn as c, E as l, En as u, Gt as d, Jn as f, K as p, Nn as m, O as h, Sn as g, St as _, T as v, X as y, Zn as b, _ as x, _t as S, b as C, bt as w, cr as T, d as E, dr as D, er as O, fr as k, gn as A, gt as j, i as M, j as N, kt as P, rr as ee, rt as F, u as I, ur as L, v as R, vt as te, wn as z, wt as B, yt as V, zn as H } from "./useCurrentScreen-74x5yJNb.js";
3
+ import { g as ne, h as U, j as re } from "./field-classification-CeYJlsNq.js";
4
+ import { c as ie, l as ae, o as oe, t as se } from "./action-dispatch-C28UhXXA.js";
5
5
  import { n as ce, r as le, t as W } from "./dataTableStyles-vwD1mVOP.js";
6
6
  import { Component as ue, useCallback as G, useEffect as de, useId as K, useMemo as q, useRef as J, useState as Y } from "react";
7
7
  import { useInfiniteQuery as fe, useQuery as pe, useQueryClient as X } from "@tanstack/react-query";
@@ -1,4 +1,4 @@
1
- import { Dt as e, Et as t, Ot as n, ft as r, jt as i, nr as a, r as o, t as s, yt as c } from "./useCurrentScreen-C5Oio-1G.js";
1
+ import { Dt as e, Et as t, Ot as n, ft as r, jt as i, nr as a, r as o, t as s, yt as c } from "./useCurrentScreen-74x5yJNb.js";
2
2
  import { useState as l } from "react";
3
3
  import { MemoryRouter as u, useLocation as d } from "react-router";
4
4
  import { QueryClient as f, QueryClientProvider as p } from "@tanstack/react-query";
@@ -22,6 +22,9 @@ export interface FileNamedSlotDef {
22
22
  storage_backend?: string;
23
23
  }
24
24
  export interface FileFieldDef {
25
+ /** The field's code, populated by the hydrator from the enclosing map key -
26
+ * not a label a person reads. `OrderedMap.fromObject` takes bodies as
27
+ * `Omit<_, "name">`, so a body cannot state it. */
25
28
  name: string;
26
29
  mode: FileFieldMode;
27
30
  accepts?: string[];
@@ -16,10 +16,17 @@ export declare class OrderedMap<T extends {
16
16
  }> implements Iterable<[string, T]> {
17
17
  #private;
18
18
  constructor(items: readonly T[]);
19
- /** Build from a `{ name: value }` object, populating each value's `name`
20
- * field from the object key. Insertion order is the JS property order. */
19
+ /** Build from a `{ name: body }` object written in code: the key supplies
20
+ * `name`, insertion order is the JS property order, and bodies are
21
+ * type-checked. The wire equivalent, whose bodies cannot be, is `fromWire`. */
21
22
  static fromObject<T extends {
22
23
  name?: string;
24
+ }>(raw: Readonly<Record<string, Omit<T, "name">>> | null | undefined): OrderedMap<T>;
25
+ /** Build from a `{ name: body }` object decoded from JSON. Bodies are
26
+ * `unknown` and the cast to T is a claim about the server's envelope, not a
27
+ * check; anything written in code goes through `fromObject`, which checks. */
28
+ static fromWire<T extends {
29
+ name?: string;
23
30
  }>(raw: Readonly<Record<string, unknown>> | null | undefined): OrderedMap<T>;
24
31
  get length(): number;
25
32
  has(name: string): boolean;
@@ -553,9 +553,10 @@ export interface WidgetNode {
553
553
  options?: Record<string, unknown>;
554
554
  }
555
555
  export interface LayoutField {
556
- name: string;
556
+ code: string;
557
557
  actions?: Action[];
558
558
  structure?: string;
559
+ detail_screen?: string;
559
560
  }
560
561
  export interface LayoutNode {
561
562
  row?: RowConfig;