@declarion/react 0.56.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.
Files changed (167) hide show
  1. package/README.md +0 -2
  2. package/dist-lib/AgentChatPanel.impl-DBH1Ff4G.js +1200 -0
  3. package/dist-lib/DetailAuditStrip-GNRA_eP5.js +289 -0
  4. package/dist-lib/{DraggableChildrenTable-BV5sb8Uo.js → DraggableChildrenTable-4RZC351U.js} +87 -86
  5. package/dist-lib/Grid-CQabaBLx.js +405 -0
  6. package/dist-lib/{LayoutRenderer-C9AH9cXf.js → LayoutRenderer-DGKWZKpW.js} +1000 -1114
  7. package/dist-lib/{ListCardsBody-DXcDg536.js → ListCardsBody-DfGmyNIu.js} +84 -84
  8. package/dist-lib/MarkdownRenderer-BDbzDv_y.js +87 -0
  9. package/dist-lib/{RefreshControl-CNtN8zSl.js → RefreshControl-Bhoib0ZA.js} +126 -155
  10. package/dist-lib/SmartDetailPage.impl-Ds2RGg6K.js +1565 -0
  11. package/dist-lib/SmartListPage.impl-BrZLE_Gb.js +3046 -0
  12. package/dist-lib/{SmartRecordListPage.impl-Bkl9aZJ8.js → SmartRecordListPage.impl-C1FJLr80.js} +281 -280
  13. package/dist-lib/SortHeaderMenu-Cijxk4cX.js +107 -0
  14. package/dist-lib/action-dispatch-DY0c8U81.js +1967 -0
  15. package/dist-lib/api/client.d.ts +5 -0
  16. package/dist-lib/api/data.d.ts +2 -4
  17. package/dist-lib/api/entities.d.ts +8 -15
  18. package/dist-lib/api/events.d.ts +3 -3
  19. package/dist-lib/cardProjection-Bkl2SSYz.js +499 -0
  20. package/dist-lib/components/actions/ResponsiveActionBar.d.ts +17 -16
  21. package/dist-lib/components/agents/AgentChatPanel.d.ts +3 -13
  22. package/dist-lib/components/agents/AgentChatPanel.impl.d.ts +14 -0
  23. package/dist-lib/components/agents/AgentPicker.d.ts +1 -2
  24. package/dist-lib/components/chrome/PageShell.d.ts +7 -0
  25. package/dist-lib/components/chrome/RecordHeader.d.ts +1 -2
  26. package/dist-lib/components/detail-layout/ChildrenBlock.d.ts +1 -1
  27. package/dist-lib/components/detail-layout/DetailAuditStrip.d.ts +1 -2
  28. package/dist-lib/components/detail-layout/DetailHighlights.d.ts +1 -2
  29. package/dist-lib/components/detail-layout/blockMeta.d.ts +2 -1
  30. package/dist-lib/components/fields/BoolField.d.ts +1 -1
  31. package/dist-lib/components/fields/EnumField.d.ts +1 -1
  32. package/dist-lib/components/fields/IntArrayField.d.ts +1 -1
  33. package/dist-lib/components/fields/MultilangArrayField.d.ts +2 -0
  34. package/dist-lib/components/fields/MultilangField.d.ts +1 -1
  35. package/dist-lib/components/fields/MultilangTextField.d.ts +1 -1
  36. package/dist-lib/components/fields/NumberField.d.ts +1 -1
  37. package/dist-lib/components/fields/PasswordField.d.ts +1 -1
  38. package/dist-lib/components/fields/RefCombobox.d.ts +1 -1
  39. package/dist-lib/components/fields/SecretField.d.ts +1 -1
  40. package/dist-lib/components/fields/StringArrayField.d.ts +1 -1
  41. package/dist-lib/components/fields/TimestampField.d.ts +1 -1
  42. package/dist-lib/components/fields/cells/registry.d.ts +2 -1
  43. package/dist-lib/components/fields/index.d.ts +2 -1
  44. package/dist-lib/components/fields/langMap.d.ts +2 -0
  45. package/dist-lib/components/fields/secretValue.d.ts +2 -0
  46. package/dist-lib/components/file-widgets/UnknownFileWidget.d.ts +3 -0
  47. package/dist-lib/components/file-widgets/UploadFailureText.d.ts +4 -0
  48. package/dist-lib/components/file-widgets/helpers.d.ts +1 -1
  49. package/dist-lib/components/file-widgets/host.d.ts +4 -3
  50. package/dist-lib/components/file-widgets/types.d.ts +1 -0
  51. package/dist-lib/components/file-widgets/upload.d.ts +18 -3
  52. package/dist-lib/components/filters/filter-op-label.d.ts +3 -0
  53. package/dist-lib/components/layout/ImpersonationBanner.d.ts +1 -1
  54. package/dist-lib/components/layout/ImpersonationFrame.d.ts +1 -1
  55. package/dist-lib/components/layout/Layout.d.ts +2 -1
  56. package/dist-lib/components/layout/Sidebar.d.ts +2 -1
  57. package/dist-lib/components/layout/TenantChip.d.ts +1 -1
  58. package/dist-lib/components/list/ViewSwitcher.d.ts +4 -2
  59. package/dist-lib/components/pages/DocumentsMenu.d.ts +1 -2
  60. package/dist-lib/components/pages/ExportMenu.d.ts +3 -5
  61. package/dist-lib/components/pages/RecordDocumentsPanel.d.ts +1 -2
  62. package/dist-lib/components/pages/auth/AuthShell.d.ts +4 -31
  63. package/dist-lib/components/pages/exportRequest.d.ts +4 -6
  64. package/dist-lib/components/pages/list/DeleteViewDialog.d.ts +8 -0
  65. package/dist-lib/components/pages/list/ListCardRow.d.ts +1 -2
  66. package/dist-lib/components/pages/list/ListCardsBody.d.ts +0 -1
  67. package/dist-lib/components/pages/list/ListFloatbar.d.ts +2 -2
  68. package/dist-lib/components/pages/list/ListHeader.d.ts +2 -2
  69. package/dist-lib/components/pages/list/ListNoRows.d.ts +4 -5
  70. package/dist-lib/components/pages/list/ListToolbar.d.ts +3 -2
  71. package/dist-lib/components/pages/list/ListUrlBanner.d.ts +10 -0
  72. package/dist-lib/components/pages/list/RowActionsCell.d.ts +2 -4
  73. package/dist-lib/components/pages/list/RowContextMenu.d.ts +1 -2
  74. package/dist-lib/components/pages/list/columns.d.ts +2 -1
  75. package/dist-lib/components/pages/list/filter-meta.d.ts +2 -1
  76. package/dist-lib/components/pages/list/useActiveView.d.ts +38 -0
  77. package/dist-lib/components/pages/list/useListColumnLayout.d.ts +6 -5
  78. package/dist-lib/components/pages/list/useListQuery.d.ts +4 -4
  79. package/dist-lib/components/pages/list/useListSort.d.ts +5 -4
  80. package/dist-lib/components/pages/list/useListViews.d.ts +18 -8
  81. package/dist-lib/components/pages/list/useRowMenu.d.ts +2 -3
  82. package/dist-lib/components/pages/profile/Profile.d.ts +3 -0
  83. package/dist-lib/components/params/ParamsBlock.d.ts +1 -13
  84. package/dist-lib/components/params/param-editors.d.ts +3 -11
  85. package/dist-lib/components/primitives/ClassifiedFieldLocked.d.ts +1 -2
  86. package/dist-lib/components/shared/DynamicIcon.d.ts +2 -2
  87. package/dist-lib/components/shared/ErrorBoundary.d.ts +1 -1
  88. package/dist-lib/components/shared/LoadingSkeleton.d.ts +1 -0
  89. package/dist-lib/components/shared/LucideIcon.d.ts +1 -1
  90. package/dist-lib/components/shared/useOwnRefresh.d.ts +1 -1
  91. package/dist-lib/declarion-react.css +1 -1
  92. package/dist-lib/embed/theme.d.ts +1 -1
  93. package/dist-lib/embed/useEmbedNavigate.d.ts +1 -1
  94. package/dist-lib/failure-v-uGSpbX.js +158 -0
  95. package/dist-lib/{field-classification-D6xQYn-h.js → field-classification-C28XE-_P.js} +514 -307
  96. package/dist-lib/format-count-DA4wmmWR.js +1771 -0
  97. package/dist-lib/hooks/useEntityData.d.ts +1 -1
  98. package/dist-lib/hooks/useFilters.d.ts +7 -5
  99. package/dist-lib/hooks/useLanguage.d.ts +4 -0
  100. package/dist-lib/hooks/useParams.d.ts +4 -51
  101. package/dist-lib/hooks/useRegisterScreenTab.d.ts +1 -1
  102. package/dist-lib/hooks/useSSE.d.ts +3 -3
  103. package/dist-lib/hooks/useTabTitle.d.ts +2 -0
  104. package/dist-lib/hooks/useText.d.ts +3 -3
  105. package/dist-lib/hooks/useVersionWatcher.d.ts +1 -1
  106. package/dist-lib/hooks/useViews.d.ts +20 -0
  107. package/dist-lib/index.d.ts +8 -7
  108. package/dist-lib/index.js +2716 -5795
  109. package/dist-lib/lib/action-dispatch.d.ts +2 -1
  110. package/dist-lib/lib/actions.d.ts +30 -42
  111. package/dist-lib/lib/anchor.d.ts +3 -4
  112. package/dist-lib/lib/decimal-text.d.ts +1 -0
  113. package/dist-lib/lib/document-templates.d.ts +1 -2
  114. package/dist-lib/lib/download.d.ts +2 -1
  115. package/dist-lib/lib/evidence-verdict.d.ts +2 -1
  116. package/dist-lib/lib/failure.d.ts +2 -0
  117. package/dist-lib/lib/field-classification.d.ts +3 -3
  118. package/dist-lib/lib/filters.d.ts +18 -2
  119. package/dist-lib/lib/format-count.d.ts +8 -7
  120. package/dist-lib/lib/language.d.ts +19 -0
  121. package/dist-lib/lib/mass-edit.d.ts +2 -1
  122. package/dist-lib/lib/realtime-query-keys.d.ts +1 -1
  123. package/dist-lib/lib/realtime-reconcile.d.ts +3 -4
  124. package/dist-lib/lib/screen-back.d.ts +4 -6
  125. package/dist-lib/lib/sort.d.ts +9 -9
  126. package/dist-lib/lib/timestamp.d.ts +5 -7
  127. package/dist-lib/lib/ui-actions.d.ts +2 -1
  128. package/dist-lib/peekDraftStore-D-cTbiIr.js +199 -0
  129. package/dist-lib/registry-Cb3W-czW.js +1950 -0
  130. package/dist-lib/safe-url-oSJw5pzO.js +34 -0
  131. package/dist-lib/stores/icon-registry.d.ts +2 -2
  132. package/dist-lib/stores/list-layout.d.ts +3 -4
  133. package/dist-lib/stores/realtime.d.ts +1 -1
  134. package/dist-lib/stores/tabs.d.ts +3 -2
  135. package/dist-lib/testing.d.ts +6 -0
  136. package/dist-lib/testing.js +98 -76
  137. package/dist-lib/types/api.d.ts +7 -8
  138. package/dist-lib/types/fieldType.d.ts +1 -1
  139. package/dist-lib/types/files.d.ts +4 -4
  140. package/dist-lib/types/schema.d.ts +44 -50
  141. package/dist-lib/useAgentConversation-D97IqE-J.js +623 -0
  142. package/dist-lib/{useCurrentScreen-CzwzQpoW.js → useCurrentScreen-BL5NZFCw.js} +2777 -3768
  143. package/dist-lib/useListQuery-BG1GyKtJ.js +103 -0
  144. package/dist-lib/useProperties-4Lg3odrt.js +83 -0
  145. package/dist-lib/{useTabSearchMirror-C39U85cg.js → useTabSearchMirror-ZVLlINBX.js} +49 -51
  146. package/dist-lib/useText-BFDCTUSo.js +952 -0
  147. package/dist-lib/{value-Bo8C8WMU.js → value-By1-WJ8J.js} +74 -76
  148. package/dist-lib/vite/fingerprint-plugin.d.ts +2 -3
  149. package/package.json +13 -12
  150. package/dist-lib/Grid-DWgUPuZ3.js +0 -404
  151. package/dist-lib/MarkdownRenderer-CcSFc2N3.js +0 -85
  152. package/dist-lib/RecordIdBadge-CGxPR-8q.js +0 -24
  153. package/dist-lib/SmartDetailPage.impl-lskCd-WG.js +0 -1846
  154. package/dist-lib/SmartListPage.impl-CrGbdzyK.js +0 -2854
  155. package/dist-lib/SortHeaderMenu-SYSAaqQJ.js +0 -106
  156. package/dist-lib/action-dispatch-CR4ajBtT.js +0 -1985
  157. package/dist-lib/cardProjection-CW5RIMko.js +0 -699
  158. package/dist-lib/components/pages/home/HomeStub.d.ts +0 -6
  159. package/dist-lib/components/pages/jobs/Jobs.d.ts +0 -1
  160. package/dist-lib/components/pages/pipeline/Pipeline.d.ts +0 -1
  161. package/dist-lib/format-count-Dobmi-Ji.js +0 -1551
  162. package/dist-lib/hooks/useUserLocale.d.ts +0 -1
  163. package/dist-lib/lib/messages.d.ts +0 -12
  164. package/dist-lib/peekDraftStore-5wQ7lq_V.js +0 -194
  165. package/dist-lib/registry-CjgUaF7C.js +0 -1768
  166. package/dist-lib/useListQuery-D7Hr5WM1.js +0 -96
  167. package/dist-lib/useProperties-CqtCzFCr.js +0 -81
@@ -10,7 +10,7 @@ export declare function entityDataQueryKey(entity: string | undefined, params: L
10
10
  /**
11
11
  * useEntityData fetches one page-window of entity rows.
12
12
  *
13
- * Decoupled-count contract (docs/plans/2026-05-18-declarative-row-count.md):
13
+ * Decoupled-count contract:
14
14
  * this hook issues the WINDOW request only - `count: "window"`, so the
15
15
  * server returns the page of rows and never blocks on a COUNT(*). The total
16
16
  * is fetched separately by `useEntityCount`; the table renders rows the
@@ -1,12 +1,14 @@
1
1
  import { type FilterNode } from "../lib/filters.d.ts";
2
- /**
3
- * useFilters reads/writes the JSON `filters` URL param.
4
- * URL is the source of truth.
5
- */
6
- export declare function useFilters(): {
2
+ interface FiltersInput {
3
+ defaults?: FilterNode[];
4
+ }
5
+ /** `filters=[]` and an absent parameter are different states: the first says
6
+ * the caller removed every condition, the second says `defaults` apply. */
7
+ export declare function useFilters({ defaults }?: FiltersInput): {
7
8
  filters: FilterNode[];
8
9
  filterError: string | null;
9
10
  activeCount: number;
10
11
  setFilters: (newFilters: FilterNode[]) => void;
11
12
  clearFilters: () => void;
12
13
  };
14
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { QueryClient } from "@tanstack/react-query";
2
+ export declare function useLanguage(): string;
3
+ export declare function useDeploymentLanguage(): string;
4
+ export declare function reresolveLanguage(queryClient: QueryClient): Promise<void>;
@@ -2,17 +2,8 @@ import type { ParamLookup, ParamOverride, ResolvedParam } from "../types/api.d.t
2
2
  /** `$params` subresource key on a carrier's PK-detail / write payload. */
3
3
  export declare const PARAMS_KEY = "$params";
4
4
  /**
5
- * useCarrierParamOverrides owns the ONE dangerous `$params` write path shared
6
- * by every parameter-editing surface (the tenant Parameters screen, the
7
- * generic ParamsBlock). `$params` is a FULL-SET write, so the rules live here,
8
- * once, and cannot drift between surfaces:
9
- * - the current override set is ALWAYS sourced from the carrier's PK-detail
10
- * response (`$params`);
11
- * - a missing `$params` key on a loaded detail is a HARD ERROR
12
- * (`missingParams`), never an empty set - treating it as empty would
13
- * delete every override on the next save;
14
- * - every save/reset composes the complete new set client-side and writes it
15
- * through `<carrier>.__update`.
5
+ * `$params` is a FULL-SET write: a loaded detail without the key is an error
6
+ * (`missingParams`), never an empty set, which would delete every override.
16
7
  */
17
8
  export declare function useCarrierParamOverrides({ carrierEntityCode, rowId, enabled, onWritten, }: {
18
9
  /** Carrier entity code (the write target, e.g. "profile", "my_tenant"). */
@@ -35,20 +26,9 @@ export declare function useCarrierParamOverrides({ carrierEntityCode, rowId, ena
35
26
  save: (param: ResolvedParam, value: unknown) => Promise<void>;
36
27
  reset: (param: ResolvedParam) => Promise<void>;
37
28
  };
38
- /**
39
- * Bulk effective-value view for the admin surfaces (catalog attachment,
40
- * ParamsBlock, tenant Parameters screen). `resolution: "tenant"` requests the
41
- * tenant baseline (yaml/env/tenant only); omit for the caller's full personal
42
- * resolution. Disclosure-tiered server-side. Short staleTime: params are
43
- * push-invalidated on the server, and edits invalidate this key directly.
44
- */
29
+ /** `resolution: "tenant"` reads the tenant baseline, without role and user overrides. */
45
30
  export declare function useAllParams(resolution?: "tenant"): import("@tanstack/react-query").UseQueryResult<ResolvedParam[], Error>;
46
31
  export declare function usePublicParams(): import("@tanstack/react-query").UseQueryResult<import("../types/api.d.ts").PublicParamsResponse, Error>;
47
- /**
48
- * Looks up the platform's record for a parameter without a default.
49
- * Returns the full ParamLookup envelope (`found`, `value`, `source`).
50
- * Prefer `useParam` for typical reads where the call site has a default.
51
- */
52
32
  export declare function useResolvedParam(code: string, options?: {
53
33
  enabled?: boolean;
54
34
  }): import("@tanstack/react-query").UseQueryResult<ParamLookup, Error>;
@@ -59,34 +39,7 @@ export declare function useEffectiveParam<T = unknown>(code: string): {
59
39
  loading: boolean;
60
40
  error: Error | null;
61
41
  };
62
- /**
63
- * Reads a parameter and substitutes a caller-supplied default when the
64
- * platform has no value for it. The default never crosses the wire; the
65
- * server only answers "do you have a value for code X?".
66
- *
67
- * Behaviour:
68
- * - Platform has a value -> `value` is the resolved value.
69
- * - Platform reports no value -> `value` is `defaultValue`. Not an error.
70
- * - Network / auth failure -> `error` is set; `value` is `defaultValue`
71
- * so the UI has something to render during a partial outage.
72
- *
73
- * Important: this React hook intentionally diverges from the Go-side
74
- * contract. In Go (`params.Get[T]`), a transport error propagates and
75
- * the default is NEVER used for broken infrastructure. In React, the
76
- * hook returns the default AND surfaces the error so a component can
77
- * still mount during a brownout. Callers whose parameter controls
78
- * security-sensitive behaviour (a feature gate that hides admin UI,
79
- * a permission flag, etc.) MUST check `error` and refuse to render
80
- * the protected branch when set - do not rely on `value` alone.
81
- *
82
- * Devs may call useParam with a code that is not yet declared in YAML;
83
- * the platform reports not-found and the default applies. That is by
84
- * design: knobs become declarable later as ops asks for tunability.
85
- *
86
- * Type T is enforced by the caller. The hook does not coerce - if the
87
- * stored value's shape is incompatible with T, that is a programming
88
- * bug at the call site to be fixed.
89
- */
42
+ /** A failed read returns the default AND `error`; a gate on anything sensitive checks `error`. */
90
43
  export declare function useParam<T>(code: string, defaultValue: T): {
91
44
  value: T;
92
45
  found: boolean;
@@ -5,7 +5,7 @@ import { type Entity, type Screen } from "../types/schema.d.ts";
5
5
  * so the "open a tab for this screen" logic - and its embed guard - lives in one
6
6
  * place. Registers `route` as a tab once; `search` is captured at first
7
7
  * registration (the mirror syncs later changes), so it is excluded from the
8
- * effect deps. No-op when `route` is absent or embed mode is on (Invariant 8).
8
+ * effect deps. No-op when `route` is absent or embed mode is on.
9
9
  */
10
10
  export declare function useScreenTabRegistration(route: string | undefined, title: string, icon: string | undefined, search: string): void;
11
11
  export declare function useRegisterScreenTab(screen: Screen | undefined, entity: Entity | undefined, search: string): void;
@@ -11,13 +11,13 @@ export interface EntityChangedEvent {
11
11
  /**
12
12
  * Applies one coalescing window of change frames, resolving once every query it
13
13
  * touched claims no freshness it lacks - which is what lets the caller advance
14
- * its resume position. docs/realtime.md "Frontend Invalidation".
14
+ * its resume position.
15
15
  */
16
16
  export declare function applyEntityChanges(queryClient: QueryClient, events: EntityChangedEvent[], signal?: AbortSignal): Promise<void>;
17
17
  /**
18
18
  * What a write of one's OWN settles: the rows it NAMED are re-read through the
19
19
  * path a change frame takes, and `fallback` covers everything it does not
20
- * identify. docs/realtime.md "Frontend Invalidation".
20
+ * identify.
21
21
  */
22
22
  export declare function settleOwnWrite(queryClient: QueryClient, isAuthenticated: boolean, entity: string, rows: Array<Record<string, string>>, fallback: () => void): void;
23
23
  export declare function evictEntityBackedQueries(queryClient: QueryClient): void;
@@ -25,7 +25,7 @@ export declare function liveEntityChanges(queryClient: QueryClient, isAuthentica
25
25
  /**
26
26
  * What a returning tab still has to ask for, once the replay covers the rest:
27
27
  * the entities that are not `realtime: true` and the ones the relay degraded,
28
- * which between them are the majority of screens. docs/realtime.md.
28
+ * which between them are the majority of screens.
29
29
  */
30
30
  export declare function refetchQueriesReplayDoesNotCover(queryClient: QueryClient, isAuthenticated: boolean): void;
31
31
  export declare function useSSE(): void;
@@ -0,0 +1,2 @@
1
+ import type { TabItem } from "../stores/tabs.d.ts";
2
+ export declare function useTabTitle(): (tab: Pick<TabItem, "pathname" | "title" | "derivedTitle">) => string;
@@ -1,3 +1,3 @@
1
- /** Resolves a declared message by code, with the English fallback the caller states. */
2
- export type TextFn = (code: string, fallback: string, vars?: Record<string, string | number>) => string;
3
- export declare function useText(): TextFn;
1
+ import { type TextFn } from "../lib/language.d.ts";
2
+ export type { TextFn } from "../lib/language.d.ts";
3
+ export declare function useText(catalog?: "messages" | "errors"): TextFn;
@@ -20,7 +20,7 @@
20
20
  *
21
21
  * On drift the tracker classifies the delta:
22
22
  * • schema-only → silent React Query invalidation of ["schema"]
23
- * • asset-or-binary → persistent toast: "Reload now" / "Later"
23
+ * • asset-or-binary → persistent toast with a "Reload now" action
24
24
  * • unknown → same as asset/binary (conservative reload)
25
25
  *
26
26
  * Safe to call exactly once at the App root. Subsequent calls are
@@ -1,6 +1,26 @@
1
1
  import type { ViewItem } from "../components/list/ViewSwitcher.d.ts";
2
+ import type { RowData } from "../types/api.d.ts";
3
+ /** One saved-view row as the switcher and the resolver read it. */
4
+ export declare function viewItemFromRow(row: RowData, userId?: string): ViewItem;
5
+ /** One view by identifier. The switcher's window is bounded, so a link to an
6
+ * older view resolves here instead of reading as deleted. */
7
+ export declare function useViewById(id: string | null, userId?: string): {
8
+ view: ViewItem | undefined;
9
+ isSettled: boolean;
10
+ };
11
+ /** The screen's views and whether the saved half of them has arrived. */
12
+ export interface ViewsQuery {
13
+ views: ViewItem[];
14
+ /** A failed request is settled, and so is one the browser has PAUSED for
15
+ * being offline: in both the list is what it is, and a view the URL names
16
+ * is not found rather than still coming. */
17
+ isSettled: boolean;
18
+ isFetching: boolean;
19
+ refetch: () => void;
20
+ }
2
21
  /**
3
22
  * useViews fetches DB views for a screen and merges with system views (presets) from DSL.
4
23
  * Returns a unified list with source tagging.
5
24
  */
6
25
  export declare function useViews(screenCode: string, userId?: string): ViewItem[];
26
+ export declare function useViewsQuery(screenCode: string, userId?: string): ViewsQuery;
@@ -2,9 +2,9 @@ import "./globals.css";
2
2
  export { App } from "./app";
3
3
  export { App as Declarion } from "./app";
4
4
  export type { LocalizedString, LanguageDef, Schema, Entity, EntityField, Screen, NavNode, Action, ChildRelation, StatusDef, StatusGroupDef, PropertyDef, EnumDef, ParameterDef, StructureDef, PkValues, } from "./types/schema";
5
- export { OrderedMap, loc, fieldDisplayName, getPrimaryKeyFields, extractPkValues, pkValuePartsToId, pkValuesToId, pkValuesToDetailId, pkValuesFromId, resolveDetailRoute, buildDetailHrefFromId, buildEntityDetailHref, buildRowDetailHref, } from "./types/schema";
5
+ export { OrderedMap, fieldDisplayName, getPrimaryKeyFields, extractPkValues, pkValuePartsToId, pkValuesToId, pkValuesToDetailId, pkValuesFromId, resolveDetailRoute, buildDetailHrefFromId, buildEntityDetailHref, buildRowDetailHref, } from "./types/schema";
6
6
  export type { ListResponse, DataResponse, ListMeta, ApiError, AuthUser, LoginResponse, CheckSetupResponse, ListParams, Tenant, StatusInfo, PropertyValue, PublicParam, V2Meta, Refs, V2StatusInstance, V2PropertyInstance, V2ParamInstance, V2ListResponse, V2ListParams, EnrichedRow, } from "./types/api";
7
- export { CURSOR_SEMANTICS_MISMATCH, CURSOR_LOCALE_CHANGED, isCursorStaleError } from "./types/api";
7
+ export { CURSOR_SEMANTICS_MISMATCH, CURSOR_LANGUAGE_CHANGED, isCursorStaleError } from "./types/api";
8
8
  export { coerceDisplayString } from "./lib/display-value";
9
9
  export { EntityClient, RefCache, entityClient } from "./api/entities";
10
10
  export type { RowHelpers } from "./api/entities";
@@ -43,7 +43,11 @@ export type { CustomScreenProps } from "./stores/screen-registry";
43
43
  export { setIconRegistry, getIcon } from "./stores/icon-registry";
44
44
  export type { IconDef } from "./stores/icon-registry";
45
45
  export { registerLayoutWidget, getLayoutWidget, hasLayoutWidget, type LayoutWidget, type LayoutWidgetProps, } from "./components/detail-layout/widgets/registry";
46
- export { useUserLocale } from "./hooks/useUserLocale";
46
+ export { useLanguage, useDeploymentLanguage, reresolveLanguage } from "./hooks/useLanguage";
47
+ export { useText } from "./hooks/useText";
48
+ export { pickLocalized, pluralText, textWithNodes, makeTextFn, MANDATORY_LANGUAGE } from "./lib/language";
49
+ export type { TextFn, TextVars } from "./lib/language";
50
+ export { failureTitle } from "./lib/failure";
47
51
  export { useTabStore, type TabItem, type ReturnTarget } from "./stores/tabs";
48
52
  export { useTabNavigate } from "./hooks/useTabNavigate";
49
53
  export { useScreenBack } from "./hooks/useScreenBack";
@@ -91,16 +95,13 @@ export { AuthShell } from "./components/pages/auth/AuthShell";
91
95
  export type { AuthShellProps } from "./components/pages/auth/AuthShell";
92
96
  export { Profile } from "./components/pages/profile/Profile";
93
97
  export { Preferences } from "./components/pages/profile/Preferences";
94
- export { HomeStub } from "./components/pages/home/HomeStub";
95
- export type { HomeStubProps } from "./components/pages/home/HomeStub";
96
- export { PipelineStub } from "./components/pages/pipeline/Pipeline";
97
- export { JobsStub } from "./components/pages/jobs/Jobs";
98
98
  export { ChangePasswordDialog } from "./components/shared/ChangePasswordDialog";
99
99
  export type { ChangePasswordDialogProps } from "./components/shared/ChangePasswordDialog";
100
100
  export { Icon, Btn, IconBtn, Pill, Kbd, Avatar, BrandGlyph, Dropdown, HoverCard, Tooltip, InfoTooltip, Chip, SectionCard, RecordIdBadge, RowField, BoolToggle, MenuItem, Check, Spinner, FieldLabel, TextInput, TextArea, Select, MultiSelect, DateInput, PasswordInput, TagsInput, JsonField, RefField, ViewField, QuickEditCell, } from "./components/primitives";
101
101
  export type { IconProps, IconName, BtnProps, BtnKind, BtnSize, IconBtnProps, PillProps, PillTone, PillSize, AvatarProps, BrandGlyphProps, DropdownProps, HoverCardProps, HoverCardAlign, TooltipProps, InfoTooltipProps, ChipProps, SectionCardProps, SectionBadge, SectionEmphasis, RecordIdBadgeProps, RowFieldProps, BoolToggleProps, MenuItemProps, CheckProps, FieldLabelProps, TextInputProps, TextAreaProps, SelectProps, MultiSelectProps, SelectOption, DateInputProps, PasswordInputProps, TagsInputProps, JsonFieldProps, RefFieldProps, RefFieldItem, ViewFieldProps, QuickEditCellProps, } from "./components/primitives";
102
102
  export { SquareImage, CircleImage, WideBanner, registerFileWidget, getFileWidget, hasFileWidget, uploadFile, discardFile, validateClientSide, formatBytes, UploadError, setImageCropper, getImageCropper, FileDraftScope, useFileDraftScope, useDraftRegistration, } from "./components/file-widgets";
103
103
  export type { FileFieldDef, FileFieldDisplay, FileFieldMode, FileWidget, FileWidgetProps, HydratedFile, UploadProgress, UploadedFile, ImageCropper, CropperOptions, CropperResult, FileDraftScopeApi, DraftEntry, } from "./components/file-widgets";
104
+ export type { UploadCheck } from "./components/file-widgets/upload";
104
105
  export { Rail } from "./components/layout/Rail";
105
106
  export type { RailProps, RailAreaItem } from "./components/layout/Rail";
106
107
  export { Sidebar, buildSections } from "./components/layout/Sidebar";