@declarion/react 0.60.0 → 0.63.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 (487) hide show
  1. package/dist-lib/ActionDialog-uiuse5W8.js +374 -0
  2. package/dist-lib/ActionResultDialog.impl-BUBm9Ck3.js +273 -0
  3. package/dist-lib/ActionRunner-DAxgnKB3.js +1440 -0
  4. package/dist-lib/AdminCatalogPage.impl-BJGn7EvA.js +441 -0
  5. package/dist-lib/{AgentChatPanel.impl-BY-Ir7Sh.js → AgentChatPanel.impl-8bw8J-xV.js} +358 -319
  6. package/dist-lib/AgentOpenFollower.impl-Cga1q7_e.js +81 -0
  7. package/dist-lib/AssociatedBlock-D6qDYmRO.js +1515 -0
  8. package/dist-lib/AuthShell-DdiughRT.js +361 -0
  9. package/dist-lib/ChangePasswordDialog-DFe7lVQg.js +12 -0
  10. package/dist-lib/ChangePasswordDialog.impl-DtSIaP-A.js +194 -0
  11. package/dist-lib/CommandPalette.impl-Db3AFA5w.js +383 -0
  12. package/dist-lib/CopyButton-C0iEvaT1.js +119 -0
  13. package/dist-lib/DirtyTabsCloseDialog.impl-DWaFaWKn.js +191 -0
  14. package/dist-lib/{DraggableChildrenTable-CtL7rdT6.js → DraggableChildrenTable-Cy8uevS_.js} +45 -44
  15. package/dist-lib/DynamicIcon-DuBSz6TZ.js +133 -0
  16. package/dist-lib/FieldRow-BXBBFOZh.js +157 -0
  17. package/dist-lib/FilterChips-8fMDBXHp.js +1031 -0
  18. package/dist-lib/Forgot.impl-CmT5A__V.js +105 -0
  19. package/dist-lib/{Grid-CYERLdXO.js → Grid-Cg29k0jv.js} +98 -99
  20. package/dist-lib/Icons-Dzl-AkD_.d.ts +159 -0
  21. package/dist-lib/Icons-lt-7lhYR.js +151 -0
  22. package/dist-lib/ImpersonationBanner.impl-CBJJx6an.js +76 -0
  23. package/dist-lib/ImpersonationStartModal.impl-RaZcsJpG.js +158 -0
  24. package/dist-lib/Kbd-CNttVu0z.js +23 -0
  25. package/dist-lib/{LayoutRenderer-B08IJKsZ.js → LayoutRenderer-DEHtYtzV.js} +965 -942
  26. package/dist-lib/{ListCardsBody-Dje_rays.js → ListCardsBody-BAwFR3yO.js} +46 -52
  27. package/dist-lib/{MarkdownRenderer-N0IWjTH5.js → MarkdownRenderer-kNEMr6K_.js} +15 -16
  28. package/dist-lib/MenuItem-CfkVXPvC.js +140 -0
  29. package/dist-lib/NotFoundPage.impl-ZSBn4WWb.js +68 -0
  30. package/dist-lib/PageHeader-tw4pX3lI.js +71 -0
  31. package/dist-lib/PageShell-tI-mm0C5.js +47 -0
  32. package/dist-lib/Pill-D-wsfRhx.js +42 -0
  33. package/dist-lib/Preferences.impl-BG9XBZDf.js +162 -0
  34. package/dist-lib/Profile.impl-CbzSzxyG.js +527 -0
  35. package/dist-lib/PropertyGridEditor-BTjscqfz.js +4378 -0
  36. package/dist-lib/RecordHeader-Bv9nJXnG.js +217 -0
  37. package/dist-lib/RecordIdBadge-C3MgoZvt.js +25 -0
  38. package/dist-lib/RefreshControl-Ce-T_wSQ.js +195 -0
  39. package/dist-lib/Reset.impl-Cesyqt5p.js +168 -0
  40. package/dist-lib/SSOCallbackPage.impl-BC_W9nQA.js +31 -0
  41. package/dist-lib/SectionCard-VonaiLrx.js +150 -0
  42. package/dist-lib/SignUp.impl-C1KCQbfZ.js +212 -0
  43. package/dist-lib/SmartDetailPage.impl-8iOAMYQh.js +1609 -0
  44. package/dist-lib/SmartListPage.impl-Cc4Zwz5f.js +2818 -0
  45. package/dist-lib/SmartRecordListPage.impl-xTSohkqG.js +795 -0
  46. package/dist-lib/{SortHeaderMenu-DKKeCGTH.js → SortHeaderMenu-BKTrq0Wb.js} +23 -23
  47. package/dist-lib/TenantParamsPage.impl-DMuSs3eP.js +306 -0
  48. package/dist-lib/TwoFA.impl-BClZ3ndk.js +125 -0
  49. package/dist-lib/{cardProjection-nveYLvHR.js → cardProjection-Cr7fG6wJ.js} +134 -133
  50. package/dist-lib/declarion-react.css +1 -1
  51. package/dist-lib/format-count-CSEFw2ht.js +943 -0
  52. package/dist-lib/headerActionZone-bef-tZZ7.js +14 -0
  53. package/dist-lib/{stores/icon-registry.d.ts → icon-registry-CUT4eF63.d.ts} +14 -11
  54. package/dist-lib/icons.d.ts +20 -4
  55. package/dist-lib/icons.js +3 -2
  56. package/dist-lib/index.d.ts +2516 -150
  57. package/dist-lib/index.js +1532 -5053
  58. package/dist-lib/page-inset-D_kkVwwN.js +9 -0
  59. package/dist-lib/page-state-eA6J_KIR.js +124 -0
  60. package/dist-lib/param-editors-9yJr7xmN.js +201 -0
  61. package/dist-lib/payload-B2wODLAX.js +86 -0
  62. package/dist-lib/{peekDraftStore-DSExeoAh.js → peekDraftStore-D4GRsRKW.js} +44 -43
  63. package/dist-lib/registry-BpzE8-h8.js +119 -0
  64. package/dist-lib/screen-back-Cs4kzeqD.js +44 -0
  65. package/dist-lib/testing.d.ts +53 -56
  66. package/dist-lib/testing.js +54 -55
  67. package/dist-lib/use-filter-value-labels-DuqvAIVG.js +413 -0
  68. package/dist-lib/{useAgentConversation-BavrHfrU.js → useAgentConversation-D210VDCQ.js} +158 -169
  69. package/dist-lib/useAuth-CR2YKKXb.js +49 -0
  70. package/dist-lib/useBranding-Ckp_AuJb.js +41 -0
  71. package/dist-lib/useBrandingChrome-bKTXXDLy.js +170 -0
  72. package/dist-lib/useCurrentLocation-BdngVeQv.js +22 -0
  73. package/dist-lib/useCurrentScreen--UovgvRj.js +2511 -0
  74. package/dist-lib/useImpersonation-DNV23Ks1.js +35 -0
  75. package/dist-lib/useObject-1OCeV34A.js +26 -0
  76. package/dist-lib/useOwnRefresh-DkOuM4yo.js +435 -0
  77. package/dist-lib/useParams-ei6w4I7w.js +133 -0
  78. package/dist-lib/useProperties-CbdhlhZd.js +81 -0
  79. package/dist-lib/useResponsiveMode-DIR1bZfo.d.ts +1786 -0
  80. package/dist-lib/useScreenBack-J861tbwn.js +71 -0
  81. package/dist-lib/useTabNavigate-BZiW4q3M.js +78 -0
  82. package/dist-lib/useTabTitle-CZZnWIQi.js +22 -0
  83. package/dist-lib/utils-D_QDpB8_.js +11 -0
  84. package/dist-lib/{value-By1-WJ8J.js → value-CDCeHgOv.js} +8 -22
  85. package/dist-lib/{action-dispatch-DbiOpvd6.js → variants-CbAwl3Mn.js} +734 -740
  86. package/dist-lib/vite/index.d.ts +42 -16
  87. package/dist-lib/window-election-CHIvIZwx.js +45 -0
  88. package/package.json +17 -24
  89. package/dist-lib/DetailAuditStrip-B9p1XhjC.js +0 -288
  90. package/dist-lib/DynamicIcon-DW5krHuX.js +0 -280
  91. package/dist-lib/RefreshControl-BEWSHtAC.js +0 -399
  92. package/dist-lib/SmartDetailPage.impl-CYiM-ITJ.js +0 -1565
  93. package/dist-lib/SmartListPage.impl-Db_Pv9Xc.js +0 -3051
  94. package/dist-lib/SmartRecordListPage.impl-hbbLglC1.js +0 -780
  95. package/dist-lib/api/agents.d.ts +0 -140
  96. package/dist-lib/api/auth-redirect.d.ts +0 -3
  97. package/dist-lib/api/auth.d.ts +0 -26
  98. package/dist-lib/api/batch.d.ts +0 -25
  99. package/dist-lib/api/client.d.ts +0 -51
  100. package/dist-lib/api/data.d.ts +0 -153
  101. package/dist-lib/api/entities.d.ts +0 -149
  102. package/dist-lib/api/events.d.ts +0 -91
  103. package/dist-lib/api/params.d.ts +0 -28
  104. package/dist-lib/api/properties.d.ts +0 -3
  105. package/dist-lib/api/schema.d.ts +0 -2
  106. package/dist-lib/api/status.d.ts +0 -2
  107. package/dist-lib/app.d.ts +0 -1
  108. package/dist-lib/components/actions/ActionButton.d.ts +0 -18
  109. package/dist-lib/components/actions/ActionDialog.d.ts +0 -20
  110. package/dist-lib/components/actions/ActionResultDialog.d.ts +0 -22
  111. package/dist-lib/components/actions/ActionRunner.d.ts +0 -62
  112. package/dist-lib/components/actions/ObjectActionBar.d.ts +0 -29
  113. package/dist-lib/components/actions/PropertyGridEditor.d.ts +0 -20
  114. package/dist-lib/components/actions/ResponsiveActionBar.d.ts +0 -259
  115. package/dist-lib/components/actions/RowActionsKebab.d.ts +0 -20
  116. package/dist-lib/components/agents/AgentChatPanel.d.ts +0 -3
  117. package/dist-lib/components/agents/AgentChatPanel.impl.d.ts +0 -14
  118. package/dist-lib/components/agents/AgentConversationDrawer.d.ts +0 -11
  119. package/dist-lib/components/agents/AgentElicitForm.d.ts +0 -27
  120. package/dist-lib/components/agents/AgentPicker.d.ts +0 -8
  121. package/dist-lib/components/agents/transcript-runs.d.ts +0 -29
  122. package/dist-lib/components/chrome/AssociationTabs.d.ts +0 -9
  123. package/dist-lib/components/chrome/AuditMetaStrip.d.ts +0 -11
  124. package/dist-lib/components/chrome/Breadcrumbs.d.ts +0 -14
  125. package/dist-lib/components/chrome/HighlightsStrip.d.ts +0 -10
  126. package/dist-lib/components/chrome/PageHeader.d.ts +0 -16
  127. package/dist-lib/components/chrome/PageShell.d.ts +0 -7
  128. package/dist-lib/components/chrome/RecordHeader.d.ts +0 -17
  129. package/dist-lib/components/chrome/headerActionZone.d.ts +0 -27
  130. package/dist-lib/components/detail-layout/AssociatedBlock.d.ts +0 -20
  131. package/dist-lib/components/detail-layout/AssociatedToolbar.d.ts +0 -13
  132. package/dist-lib/components/detail-layout/ChildrenBlock.d.ts +0 -16
  133. package/dist-lib/components/detail-layout/ChildrenCards.d.ts +0 -2
  134. package/dist-lib/components/detail-layout/ChildrenList.d.ts +0 -2
  135. package/dist-lib/components/detail-layout/ChildrenTable.d.ts +0 -2
  136. package/dist-lib/components/detail-layout/ChildrenTimeline.d.ts +0 -2
  137. package/dist-lib/components/detail-layout/DetailAuditStrip.d.ts +0 -12
  138. package/dist-lib/components/detail-layout/DetailHighlights.d.ts +0 -14
  139. package/dist-lib/components/detail-layout/DraggableChildrenTable.d.ts +0 -16
  140. package/dist-lib/components/detail-layout/EditableChildrenTable.d.ts +0 -16
  141. package/dist-lib/components/detail-layout/ErrorSummary.d.ts +0 -11
  142. package/dist-lib/components/detail-layout/EvidenceBlock.d.ts +0 -6
  143. package/dist-lib/components/detail-layout/FieldRow.d.ts +0 -23
  144. package/dist-lib/components/detail-layout/FieldsBlock.d.ts +0 -8
  145. package/dist-lib/components/detail-layout/LayoutColumn.d.ts +0 -9
  146. package/dist-lib/components/detail-layout/LayoutRenderer.d.ts +0 -46
  147. package/dist-lib/components/detail-layout/LayoutRow.d.ts +0 -8
  148. package/dist-lib/components/detail-layout/LayoutTabs.d.ts +0 -8
  149. package/dist-lib/components/detail-layout/PropertiesBlock.d.ts +0 -8
  150. package/dist-lib/components/detail-layout/QuickAddForm.d.ts +0 -10
  151. package/dist-lib/components/detail-layout/SectionBlock.d.ts +0 -8
  152. package/dist-lib/components/detail-layout/StatusesBlock.d.ts +0 -8
  153. package/dist-lib/components/detail-layout/TimelineComposer.d.ts +0 -10
  154. package/dist-lib/components/detail-layout/blockMeta.d.ts +0 -5
  155. package/dist-lib/components/detail-layout/index.d.ts +0 -21
  156. package/dist-lib/components/detail-layout/useManualColumnResize.d.ts +0 -25
  157. package/dist-lib/components/detail-layout/useQuickAdd.d.ts +0 -16
  158. package/dist-lib/components/detail-layout/widgets/EntityScorecardWidget.d.ts +0 -2
  159. package/dist-lib/components/detail-layout/widgets/JsonDiffWidget.d.ts +0 -2
  160. package/dist-lib/components/detail-layout/widgets/MonacoJson.d.ts +0 -9
  161. package/dist-lib/components/detail-layout/widgets/WidgetHost.d.ts +0 -9
  162. package/dist-lib/components/detail-layout/widgets/builtins.d.ts +0 -1
  163. package/dist-lib/components/detail-layout/widgets/canonicalizeJson.d.ts +0 -1
  164. package/dist-lib/components/detail-layout/widgets/monacoBootstrap.d.ts +0 -1
  165. package/dist-lib/components/detail-layout/widgets/registry.d.ts +0 -14
  166. package/dist-lib/components/fields/BoolField.d.ts +0 -2
  167. package/dist-lib/components/fields/EmailField.d.ts +0 -2
  168. package/dist-lib/components/fields/EnumField.d.ts +0 -2
  169. package/dist-lib/components/fields/IntArrayField.d.ts +0 -2
  170. package/dist-lib/components/fields/JsonEditor.d.ts +0 -10
  171. package/dist-lib/components/fields/JsonField.d.ts +0 -3
  172. package/dist-lib/components/fields/MultilangArrayField.d.ts +0 -2
  173. package/dist-lib/components/fields/MultilangField.d.ts +0 -2
  174. package/dist-lib/components/fields/MultilangTextField.d.ts +0 -2
  175. package/dist-lib/components/fields/NumberField.d.ts +0 -2
  176. package/dist-lib/components/fields/PasswordField.d.ts +0 -2
  177. package/dist-lib/components/fields/PhoneField.d.ts +0 -2
  178. package/dist-lib/components/fields/RefCombobox.d.ts +0 -45
  179. package/dist-lib/components/fields/RefField.d.ts +0 -2
  180. package/dist-lib/components/fields/RichTextField.d.ts +0 -2
  181. package/dist-lib/components/fields/SecretField.d.ts +0 -2
  182. package/dist-lib/components/fields/StringArrayField.d.ts +0 -2
  183. package/dist-lib/components/fields/StringField.d.ts +0 -2
  184. package/dist-lib/components/fields/StructureField.d.ts +0 -2
  185. package/dist-lib/components/fields/TextField.d.ts +0 -2
  186. package/dist-lib/components/fields/TimestampField.d.ts +0 -2
  187. package/dist-lib/components/fields/UrlField.d.ts +0 -2
  188. package/dist-lib/components/fields/cells/factories/badge.d.ts +0 -2
  189. package/dist-lib/components/fields/cells/factories/boolPill.d.ts +0 -2
  190. package/dist-lib/components/fields/cells/factories/code.d.ts +0 -2
  191. package/dist-lib/components/fields/cells/factories/date.d.ts +0 -2
  192. package/dist-lib/components/fields/cells/factories/email.d.ts +0 -2
  193. package/dist-lib/components/fields/cells/factories/emptyCell.d.ts +0 -2
  194. package/dist-lib/components/fields/cells/factories/host-icons.d.ts +0 -17
  195. package/dist-lib/components/fields/cells/factories/json.d.ts +0 -2
  196. package/dist-lib/components/fields/cells/factories/link.d.ts +0 -2
  197. package/dist-lib/components/fields/cells/factories/markdown.d.ts +0 -2
  198. package/dist-lib/components/fields/cells/factories/markdownPreview.d.ts +0 -9
  199. package/dist-lib/components/fields/cells/factories/money.d.ts +0 -2
  200. package/dist-lib/components/fields/cells/factories/multilangInline.d.ts +0 -2
  201. package/dist-lib/components/fields/cells/factories/nextRun.d.ts +0 -2
  202. package/dist-lib/components/fields/cells/factories/number.d.ts +0 -2
  203. package/dist-lib/components/fields/cells/factories/passwordMask.d.ts +0 -2
  204. package/dist-lib/components/fields/cells/factories/phone.d.ts +0 -2
  205. package/dist-lib/components/fields/cells/factories/refLink.d.ts +0 -2
  206. package/dist-lib/components/fields/cells/factories/richTextPreview.d.ts +0 -2
  207. package/dist-lib/components/fields/cells/factories/statusPill.d.ts +0 -2
  208. package/dist-lib/components/fields/cells/factories/tagList.d.ts +0 -2
  209. package/dist-lib/components/fields/cells/factories/text.d.ts +0 -2
  210. package/dist-lib/components/fields/cells/factories/timestamp.d.ts +0 -3
  211. package/dist-lib/components/fields/cells/factories/url-helpers.d.ts +0 -12
  212. package/dist-lib/components/fields/cells/factories/url.d.ts +0 -2
  213. package/dist-lib/components/fields/cells/registry.d.ts +0 -21
  214. package/dist-lib/components/fields/index.d.ts +0 -28
  215. package/dist-lib/components/fields/langMap.d.ts +0 -2
  216. package/dist-lib/components/fields/secretValue.d.ts +0 -2
  217. package/dist-lib/components/file-widgets/CircleImage.d.ts +0 -2
  218. package/dist-lib/components/file-widgets/DocumentCard.d.ts +0 -2
  219. package/dist-lib/components/file-widgets/FileList.d.ts +0 -2
  220. package/dist-lib/components/file-widgets/Grid.d.ts +0 -2
  221. package/dist-lib/components/file-widgets/GridLazy.d.ts +0 -2
  222. package/dist-lib/components/file-widgets/ImageWidget.d.ts +0 -12
  223. package/dist-lib/components/file-widgets/LabeledSlots.d.ts +0 -2
  224. package/dist-lib/components/file-widgets/SquareImage.d.ts +0 -2
  225. package/dist-lib/components/file-widgets/UnknownFileWidget.d.ts +0 -3
  226. package/dist-lib/components/file-widgets/UploadFailureText.d.ts +0 -4
  227. package/dist-lib/components/file-widgets/WideBanner.d.ts +0 -2
  228. package/dist-lib/components/file-widgets/builtins.d.ts +0 -1
  229. package/dist-lib/components/file-widgets/cropper.d.ts +0 -14
  230. package/dist-lib/components/file-widgets/draft-scope.d.ts +0 -22
  231. package/dist-lib/components/file-widgets/helpers.d.ts +0 -15
  232. package/dist-lib/components/file-widgets/host.d.ts +0 -28
  233. package/dist-lib/components/file-widgets/index.d.ts +0 -16
  234. package/dist-lib/components/file-widgets/payload.d.ts +0 -21
  235. package/dist-lib/components/file-widgets/registry.d.ts +0 -5
  236. package/dist-lib/components/file-widgets/types.d.ts +0 -17
  237. package/dist-lib/components/file-widgets/upload.d.ts +0 -45
  238. package/dist-lib/components/file-widgets/useEmbedFileSrc.d.ts +0 -42
  239. package/dist-lib/components/file-widgets/value.d.ts +0 -4
  240. package/dist-lib/components/filters/FilterChips.d.ts +0 -14
  241. package/dist-lib/components/filters/FilterDrawer.d.ts +0 -32
  242. package/dist-lib/components/filters/filter-op-label.d.ts +0 -3
  243. package/dist-lib/components/layout/CommandPalette.d.ts +0 -21
  244. package/dist-lib/components/layout/DirtyTabsCloseDialog.d.ts +0 -9
  245. package/dist-lib/components/layout/ImpersonationBanner.d.ts +0 -11
  246. package/dist-lib/components/layout/ImpersonationFrame.d.ts +0 -11
  247. package/dist-lib/components/layout/ImpersonationStartModal.d.ts +0 -22
  248. package/dist-lib/components/layout/Layout.d.ts +0 -6
  249. package/dist-lib/components/layout/Rail.d.ts +0 -22
  250. package/dist-lib/components/layout/Sidebar.d.ts +0 -12
  251. package/dist-lib/components/layout/TabStrip.d.ts +0 -6
  252. package/dist-lib/components/layout/TenantChip.d.ts +0 -26
  253. package/dist-lib/components/layout/TopBar.d.ts +0 -22
  254. package/dist-lib/components/layout/tab-close.d.ts +0 -13
  255. package/dist-lib/components/list/ColumnPicker.d.ts +0 -20
  256. package/dist-lib/components/list/InlineEditCell.d.ts +0 -15
  257. package/dist-lib/components/list/PeekFieldCell.d.ts +0 -16
  258. package/dist-lib/components/list/QuickPeek.d.ts +0 -59
  259. package/dist-lib/components/list/ViewSwitcher.d.ts +0 -24
  260. package/dist-lib/components/list/peekDraftStore.d.ts +0 -6
  261. package/dist-lib/components/pages/AdminCatalogPage.d.ts +0 -1
  262. package/dist-lib/components/pages/DocumentsMenu.d.ts +0 -21
  263. package/dist-lib/components/pages/ExportMenu.d.ts +0 -30
  264. package/dist-lib/components/pages/NotFoundPage.d.ts +0 -1
  265. package/dist-lib/components/pages/RecordDocumentsPanel.d.ts +0 -41
  266. package/dist-lib/components/pages/SSOCallbackPage.d.ts +0 -1
  267. package/dist-lib/components/pages/SmartDetailPage.d.ts +0 -2
  268. package/dist-lib/components/pages/SmartDetailPage.impl.d.ts +0 -4
  269. package/dist-lib/components/pages/SmartListPage.d.ts +0 -2
  270. package/dist-lib/components/pages/SmartListPage.impl.d.ts +0 -4
  271. package/dist-lib/components/pages/SmartRecordListPage.d.ts +0 -2
  272. package/dist-lib/components/pages/SmartRecordListPage.impl.d.ts +0 -4
  273. package/dist-lib/components/pages/auth/AuthShell.d.ts +0 -18
  274. package/dist-lib/components/pages/auth/Forgot.d.ts +0 -1
  275. package/dist-lib/components/pages/auth/Reset.d.ts +0 -1
  276. package/dist-lib/components/pages/auth/SignIn.d.ts +0 -1
  277. package/dist-lib/components/pages/auth/SignUp.d.ts +0 -1
  278. package/dist-lib/components/pages/auth/TwoFA.d.ts +0 -1
  279. package/dist-lib/components/pages/auth/icons.d.ts +0 -6
  280. package/dist-lib/components/pages/exportRequest.d.ts +0 -69
  281. package/dist-lib/components/pages/list/DataCell.d.ts +0 -4
  282. package/dist-lib/components/pages/list/DeleteViewDialog.d.ts +0 -8
  283. package/dist-lib/components/pages/list/ListCardRow.d.ts +0 -39
  284. package/dist-lib/components/pages/list/ListCardsBody.d.ts +0 -33
  285. package/dist-lib/components/pages/list/ListFloatbar.d.ts +0 -29
  286. package/dist-lib/components/pages/list/ListFooter.d.ts +0 -26
  287. package/dist-lib/components/pages/list/ListHeader.d.ts +0 -26
  288. package/dist-lib/components/pages/list/ListNoRows.d.ts +0 -31
  289. package/dist-lib/components/pages/list/ListTable.d.ts +0 -33
  290. package/dist-lib/components/pages/list/ListTableRow.d.ts +0 -17
  291. package/dist-lib/components/pages/list/ListToolbar.d.ts +0 -46
  292. package/dist-lib/components/pages/list/ListUrlBanner.d.ts +0 -10
  293. package/dist-lib/components/pages/list/RowActionsCell.d.ts +0 -34
  294. package/dist-lib/components/pages/list/RowContextMenu.d.ts +0 -28
  295. package/dist-lib/components/pages/list/SaveViewDialog.d.ts +0 -10
  296. package/dist-lib/components/pages/list/SortHeaderMenu.d.ts +0 -14
  297. package/dist-lib/components/pages/list/cardProjection.d.ts +0 -67
  298. package/dist-lib/components/pages/list/column-sizing.d.ts +0 -14
  299. package/dist-lib/components/pages/list/columns.d.ts +0 -46
  300. package/dist-lib/components/pages/list/filter-meta.d.ts +0 -25
  301. package/dist-lib/components/pages/list/page-size.d.ts +0 -3
  302. package/dist-lib/components/pages/list/sortable-header.d.ts +0 -2
  303. package/dist-lib/components/pages/list/table-features.d.ts +0 -14
  304. package/dist-lib/components/pages/list/use-filter-value-labels.d.ts +0 -24
  305. package/dist-lib/components/pages/list/useActiveView.d.ts +0 -45
  306. package/dist-lib/components/pages/list/useHeaderReorder.d.ts +0 -26
  307. package/dist-lib/components/pages/list/useListColumnLayout.d.ts +0 -38
  308. package/dist-lib/components/pages/list/useListQuery.d.ts +0 -67
  309. package/dist-lib/components/pages/list/useListRowInteraction.d.ts +0 -61
  310. package/dist-lib/components/pages/list/useListSelection.d.ts +0 -31
  311. package/dist-lib/components/pages/list/useListSort.d.ts +0 -46
  312. package/dist-lib/components/pages/list/useListViews.d.ts +0 -57
  313. package/dist-lib/components/pages/list/useRowMenu.d.ts +0 -46
  314. package/dist-lib/components/pages/profile/Preferences.d.ts +0 -1
  315. package/dist-lib/components/pages/profile/Profile.d.ts +0 -7
  316. package/dist-lib/components/pages/tenant-params/TenantParamsPage.d.ts +0 -2
  317. package/dist-lib/components/params/ParamsBlock.d.ts +0 -13
  318. package/dist-lib/components/params/param-editors.d.ts +0 -20
  319. package/dist-lib/components/primitives/Avatar.d.ts +0 -6
  320. package/dist-lib/components/primitives/BoolToggle.d.ts +0 -7
  321. package/dist-lib/components/primitives/BrandGlyph.d.ts +0 -8
  322. package/dist-lib/components/primitives/BrandLogo.d.ts +0 -12
  323. package/dist-lib/components/primitives/Btn.d.ts +0 -19
  324. package/dist-lib/components/primitives/Check.d.ts +0 -7
  325. package/dist-lib/components/primitives/Chip.d.ts +0 -9
  326. package/dist-lib/components/primitives/ClassifiedFieldLocked.d.ts +0 -9
  327. package/dist-lib/components/primitives/Dropdown.d.ts +0 -20
  328. package/dist-lib/components/primitives/Fields.d.ts +0 -109
  329. package/dist-lib/components/primitives/HoverCard.d.ts +0 -15
  330. package/dist-lib/components/primitives/IconBtn.d.ts +0 -11
  331. package/dist-lib/components/primitives/Icons.d.ts +0 -136
  332. package/dist-lib/components/primitives/Kbd.d.ts +0 -4
  333. package/dist-lib/components/primitives/MenuItem.d.ts +0 -14
  334. package/dist-lib/components/primitives/Pill.d.ts +0 -11
  335. package/dist-lib/components/primitives/RecordIdBadge.d.ts +0 -8
  336. package/dist-lib/components/primitives/RowField.d.ts +0 -10
  337. package/dist-lib/components/primitives/SectionCard.d.ts +0 -24
  338. package/dist-lib/components/primitives/Spinner.d.ts +0 -3
  339. package/dist-lib/components/primitives/Tooltip.d.ts +0 -34
  340. package/dist-lib/components/primitives/dataTableStyles.d.ts +0 -4
  341. package/dist-lib/components/primitives/index.d.ts +0 -37
  342. package/dist-lib/components/shared/ChangePasswordDialog.d.ts +0 -9
  343. package/dist-lib/components/shared/ConfirmDialog.d.ts +0 -11
  344. package/dist-lib/components/shared/CopyButton.d.ts +0 -8
  345. package/dist-lib/components/shared/DynamicIcon.d.ts +0 -20
  346. package/dist-lib/components/shared/EmptyState.d.ts +0 -9
  347. package/dist-lib/components/shared/ErrorBoundary.d.ts +0 -17
  348. package/dist-lib/components/shared/LoadingSkeleton.d.ts +0 -6
  349. package/dist-lib/components/shared/LucideIcon.d.ts +0 -16
  350. package/dist-lib/components/shared/Markdown.d.ts +0 -3
  351. package/dist-lib/components/shared/MarkdownRenderer.d.ts +0 -11
  352. package/dist-lib/components/shared/RefreshControl.d.ts +0 -25
  353. package/dist-lib/components/shared/StatusGroupsDisplay.d.ts +0 -11
  354. package/dist-lib/components/shared/StatusStepper.d.ts +0 -13
  355. package/dist-lib/components/shared/toast/DeclarionToast.d.ts +0 -31
  356. package/dist-lib/components/shared/useOwnRefresh.d.ts +0 -9
  357. package/dist-lib/embed/EmbedAuthBootstrap.d.ts +0 -8
  358. package/dist-lib/embed/EmbedContext.d.ts +0 -50
  359. package/dist-lib/embed/EmbedDirtyReporter.d.ts +0 -10
  360. package/dist-lib/embed/EmbedHistoryTracker.d.ts +0 -1
  361. package/dist-lib/embed/EmbedLocationReporter.d.ts +0 -8
  362. package/dist-lib/embed/EmbedResizeReporter.d.ts +0 -6
  363. package/dist-lib/embed/EmbedUnsavedGuard.d.ts +0 -7
  364. package/dist-lib/embed/embed-dirty.d.ts +0 -24
  365. package/dist-lib/embed/embed-history.d.ts +0 -19
  366. package/dist-lib/embed/embed-nav-guard.d.ts +0 -20
  367. package/dist-lib/embed/file-src.d.ts +0 -63
  368. package/dist-lib/embed/handshake.d.ts +0 -57
  369. package/dist-lib/embed/index.d.ts +0 -19
  370. package/dist-lib/embed/params.d.ts +0 -75
  371. package/dist-lib/embed/protocol.d.ts +0 -165
  372. package/dist-lib/embed/screen-location.d.ts +0 -50
  373. package/dist-lib/embed/theme.d.ts +0 -34
  374. package/dist-lib/embed/token.d.ts +0 -57
  375. package/dist-lib/embed/useEmbedNavigate.d.ts +0 -48
  376. package/dist-lib/embed/useGlobalLinkInterceptor.d.ts +0 -66
  377. package/dist-lib/failure-BT54OLHy.js +0 -158
  378. package/dist-lib/format-count-DLFCdtME.js +0 -1771
  379. package/dist-lib/hooks/useActionData.d.ts +0 -61
  380. package/dist-lib/hooks/useAgentConversation.d.ts +0 -24
  381. package/dist-lib/hooks/useAllEntityData.d.ts +0 -16
  382. package/dist-lib/hooks/useAssociatedData.d.ts +0 -10
  383. package/dist-lib/hooks/useAuth.d.ts +0 -22
  384. package/dist-lib/hooks/useBranding.d.ts +0 -8
  385. package/dist-lib/hooks/useBrandingChrome.d.ts +0 -59
  386. package/dist-lib/hooks/useChildrenData.d.ts +0 -3
  387. package/dist-lib/hooks/useColumns.d.ts +0 -13
  388. package/dist-lib/hooks/useCurrentScreen.d.ts +0 -34
  389. package/dist-lib/hooks/useCursorEntityData.d.ts +0 -79
  390. package/dist-lib/hooks/useDebounce.d.ts +0 -1
  391. package/dist-lib/hooks/useEntity.d.ts +0 -2
  392. package/dist-lib/hooks/useEntityData.d.ts +0 -41
  393. package/dist-lib/hooks/useFilters.d.ts +0 -14
  394. package/dist-lib/hooks/useImpersonation.d.ts +0 -23
  395. package/dist-lib/hooks/useLanguage.d.ts +0 -4
  396. package/dist-lib/hooks/useLiveObject.d.ts +0 -9
  397. package/dist-lib/hooks/useLongPress.d.ts +0 -29
  398. package/dist-lib/hooks/useMutations.d.ts +0 -13
  399. package/dist-lib/hooks/useObject.d.ts +0 -11
  400. package/dist-lib/hooks/useObjectStatus.d.ts +0 -5
  401. package/dist-lib/hooks/usePageState.d.ts +0 -32
  402. package/dist-lib/hooks/usePageStateRuntime.d.ts +0 -27
  403. package/dist-lib/hooks/usePageStateTtl.d.ts +0 -11
  404. package/dist-lib/hooks/useParams.d.ts +0 -49
  405. package/dist-lib/hooks/useProperties.d.ts +0 -5
  406. package/dist-lib/hooks/useRealtimeThresholds.d.ts +0 -1
  407. package/dist-lib/hooks/useRegisterScreenTab.d.ts +0 -11
  408. package/dist-lib/hooks/useResponsiveMode.d.ts +0 -27
  409. package/dist-lib/hooks/useSSE.d.ts +0 -31
  410. package/dist-lib/hooks/useSchema.d.ts +0 -1
  411. package/dist-lib/hooks/useScreen.d.ts +0 -2
  412. package/dist-lib/hooks/useScreenBack.d.ts +0 -21
  413. package/dist-lib/hooks/useScreenTab.d.ts +0 -10
  414. package/dist-lib/hooks/useTabNavigate.d.ts +0 -34
  415. package/dist-lib/hooks/useTabSearchMirror.d.ts +0 -1
  416. package/dist-lib/hooks/useTabTitle.d.ts +0 -2
  417. package/dist-lib/hooks/useText.d.ts +0 -3
  418. package/dist-lib/hooks/useTimelineData.d.ts +0 -10
  419. package/dist-lib/hooks/useVersionWatcher.d.ts +0 -30
  420. package/dist-lib/hooks/useViews.d.ts +0 -26
  421. package/dist-lib/lib/action-dispatch.d.ts +0 -8
  422. package/dist-lib/lib/actions.d.ts +0 -254
  423. package/dist-lib/lib/anchor.d.ts +0 -36
  424. package/dist-lib/lib/brand-tokens.d.ts +0 -43
  425. package/dist-lib/lib/branding.d.ts +0 -20
  426. package/dist-lib/lib/canonical-url.d.ts +0 -27
  427. package/dist-lib/lib/capabilityPrefetch.d.ts +0 -6
  428. package/dist-lib/lib/child-config.d.ts +0 -24
  429. package/dist-lib/lib/children-validation.d.ts +0 -5
  430. package/dist-lib/lib/decimal-text.d.ts +0 -1
  431. package/dist-lib/lib/display-value.d.ts +0 -1
  432. package/dist-lib/lib/document-templates.d.ts +0 -11
  433. package/dist-lib/lib/download.d.ts +0 -21
  434. package/dist-lib/lib/evidence-verdict.d.ts +0 -11
  435. package/dist-lib/lib/failure.d.ts +0 -2
  436. package/dist-lib/lib/field-classification.d.ts +0 -61
  437. package/dist-lib/lib/field-regions.d.ts +0 -8
  438. package/dist-lib/lib/filter-evaluator.d.ts +0 -16
  439. package/dist-lib/lib/filters.d.ts +0 -93
  440. package/dist-lib/lib/format-count.d.ts +0 -41
  441. package/dist-lib/lib/html-state.d.ts +0 -11
  442. package/dist-lib/lib/language.d.ts +0 -19
  443. package/dist-lib/lib/longPressGesture.d.ts +0 -55
  444. package/dist-lib/lib/mass-edit.d.ts +0 -32
  445. package/dist-lib/lib/page-inset.d.ts +0 -3
  446. package/dist-lib/lib/quick-add.d.ts +0 -2
  447. package/dist-lib/lib/realtime-query-keys.d.ts +0 -22
  448. package/dist-lib/lib/realtime-reconcile.d.ts +0 -33
  449. package/dist-lib/lib/realtime-resync.d.ts +0 -23
  450. package/dist-lib/lib/record-documents-key.d.ts +0 -1
  451. package/dist-lib/lib/rich-text.d.ts +0 -14
  452. package/dist-lib/lib/rowClickGesture.d.ts +0 -26
  453. package/dist-lib/lib/safe-url.d.ts +0 -15
  454. package/dist-lib/lib/schema-routing.d.ts +0 -3
  455. package/dist-lib/lib/screen-back.d.ts +0 -70
  456. package/dist-lib/lib/scroll-restoration.d.ts +0 -90
  457. package/dist-lib/lib/size-value.d.ts +0 -16
  458. package/dist-lib/lib/sort.d.ts +0 -72
  459. package/dist-lib/lib/timestamp.d.ts +0 -53
  460. package/dist-lib/lib/toast.d.ts +0 -49
  461. package/dist-lib/lib/ui-actions.d.ts +0 -12
  462. package/dist-lib/lib/utils.d.ts +0 -9
  463. package/dist-lib/lib/variants.d.ts +0 -7
  464. package/dist-lib/lib/versionTracker.d.ts +0 -72
  465. package/dist-lib/lib/viewport-category.d.ts +0 -44
  466. package/dist-lib/main.d.ts +0 -1
  467. package/dist-lib/registry-CRPxNbkk.js +0 -1956
  468. package/dist-lib/safe-url-oSJw5pzO.js +0 -34
  469. package/dist-lib/stores/auth.d.ts +0 -16
  470. package/dist-lib/stores/list-layout.d.ts +0 -85
  471. package/dist-lib/stores/page-state.d.ts +0 -61
  472. package/dist-lib/stores/preferences.d.ts +0 -37
  473. package/dist-lib/stores/realtime.d.ts +0 -96
  474. package/dist-lib/stores/screen-registry.d.ts +0 -17
  475. package/dist-lib/stores/tabs.d.ts +0 -73
  476. package/dist-lib/types/api.d.ts +0 -580
  477. package/dist-lib/types/fieldType.d.ts +0 -2
  478. package/dist-lib/types/files.d.ts +0 -79
  479. package/dist-lib/types/ordmap.d.ts +0 -39
  480. package/dist-lib/types/schema.d.ts +0 -1089
  481. package/dist-lib/useCurrentScreen-BPq7HMF1.js +0 -7840
  482. package/dist-lib/useListQuery-CG1WM4cv.js +0 -103
  483. package/dist-lib/useOwnRefresh-C18iWRgr.js +0 -1167
  484. package/dist-lib/useProperties-C35JrjwQ.js +0 -83
  485. package/dist-lib/useTabSearchMirror-DKktWWLB.js +0 -175
  486. package/dist-lib/useText-BFDCTUSo.js +0 -952
  487. package/dist-lib/vite/fingerprint-plugin.d.ts +0 -44
@@ -1,150 +1,2516 @@
1
- import "./globals.css";
2
- export { App } from "./app";
3
- export { App as Declarion } from "./app";
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, fieldDisplayName, getPrimaryKeyFields, extractPkValues, pkValuePartsToId, pkValuesToId, pkValuesToDetailId, pkValuesFromId, resolveDetailRoute, buildDetailHrefFromId, buildEntityDetailHref, buildRowDetailHref, } from "./types/schema";
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_LANGUAGE_CHANGED, isCursorStaleError } from "./types/api";
8
- export { coerceDisplayString } from "./lib/display-value";
9
- export { EntityClient, RefCache, entityClient } from "./api/entities";
10
- export type { RowHelpers } from "./api/entities";
11
- export { executeAction, buildActionBody, ActionBatchError, deleteObject, restoreObject } from "./api/data";
12
- export type { ActionExecuteRequest, ActionExecuteResponse, ActionItemError, ActionItemSkip, } from "./api/data";
13
- export { Batch } from "./api/batch";
14
- export type { BatchOp, BatchOpResult, BatchResponse } from "./api/batch";
15
- export { useSchema } from "./hooks/useSchema";
16
- export { useEntity } from "./hooks/useEntity";
17
- export { useScreen } from "./hooks/useScreen";
18
- export { useCurrentScreen, CurrentScreenProvider } from "./hooks/useCurrentScreen";
19
- export type { CurrentScreen } from "./hooks/useCurrentScreen";
20
- export { useAuth } from "./hooks/useAuth";
21
- export { useEntityData, useEntityCount, entityDataQueryKey } from "./hooks/useEntityData";
22
- export { useCursorEntityData, cursorEntityDataQueryKey, cursorEntityStableKey, } from "./hooks/useCursorEntityData";
23
- export type { CursorEntityDataParams, CursorEntityDataResult, } from "./hooks/useCursorEntityData";
24
- export { useAllEntityData } from "./hooks/useAllEntityData";
25
- export { useObject, objectQueryKey } from "./hooks/useObject";
26
- export { useLiveObject } from "./hooks/useLiveObject";
27
- export type { LiveObjectResult } from "./hooks/useLiveObject";
28
- export { useActionData, useCursorActionData, actionDataQueryKey, cursorActionDataQueryKey, ACTION_DATA_KEY, ACTION_DATA_CURSOR_KEY, } from "./hooks/useActionData";
29
- export type { ActionListPage, CursorActionDataResult } from "./hooks/useActionData";
30
- export { useCreateObject, useUpdateObject, useDeleteObject } from "./hooks/useMutations";
31
- export { useDebounce } from "./hooks/useDebounce";
32
- export { ResponsiveModeProvider, useResponsiveMode, resolveViewportCategory, DEFAULT_RESPONSIVE_BREAKPOINTS, } from "./hooks/useResponsiveMode";
33
- export type { ResponsiveBreakpoints, ResponsiveMode, ResponsiveViewport, ViewportCategory, } from "./hooks/useResponsiveMode";
34
- export { usePublicParams, useResolvedParam, useEffectiveParam, useParam } from "./hooks/useParams";
35
- export { useSetStatus } from "./hooks/useObjectStatus";
36
- export { useSetProperty, useDeleteProperty } from "./hooks/useProperties";
37
- export { useFilters } from "./hooks/useFilters";
38
- export { useColumns } from "./hooks/useColumns";
39
- export { useViews } from "./hooks/useViews";
40
- export { useParams, useNavigate, useLocation, useSearchParams } from "react-router";
41
- export { registerScreen } from "./stores/screen-registry";
42
- export type { CustomScreenProps } from "./stores/screen-registry";
43
- export { setIconRegistry, getIcon } from "./stores/icon-registry";
44
- export type { IconDef } from "./stores/icon-registry";
45
- export { registerLayoutWidget, getLayoutWidget, hasLayoutWidget, type LayoutWidget, type LayoutWidgetProps, } from "./components/detail-layout/widgets/registry";
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";
51
- export { useTabStore, type TabItem, type ReturnTarget } from "./stores/tabs";
52
- export { useTabNavigate } from "./hooks/useTabNavigate";
53
- export { useScreenBack } from "./hooks/useScreenBack";
54
- export type { UseScreenBackOptions, ScreenBack } from "./hooks/useScreenBack";
55
- export { usePageState } from "./hooks/usePageState";
56
- export type { PageStateSetter } from "./hooks/usePageState";
57
- export { canonicalUrl } from "./lib/canonical-url";
58
- export type { CanonicalLocation } from "./lib/canonical-url";
59
- export { useRegisterRetainedQuery } from "./hooks/usePageStateRuntime";
60
- export { usePageStateTtl, PAGE_STATE_TTL_PARAM } from "./hooks/usePageStateTtl";
61
- export { useScreenTab } from "./hooks/useScreenTab";
62
- export type { UseScreenTabOptions } from "./hooks/useScreenTab";
63
- export { useTabSearchMirror } from "./hooks/useTabSearchMirror";
64
- export { useVirtualScrollRestoration, usePlainScrollRestoration, useSavedScrollOffset, SCROLL_STATE_KEY, } from "./lib/scroll-restoration";
65
- export type { ScrollAnchor, ScrollableVirtualizer } from "./lib/scroll-restoration";
66
- export { SmartListPage } from "./components/pages/SmartListPage";
67
- export { SmartDetailPage } from "./components/pages/SmartDetailPage";
68
- export { SmartRecordListPage } from "./components/pages/SmartRecordListPage";
69
- export { DynamicIcon } from "./components/shared/DynamicIcon";
70
- export { PageHeader } from "./components/chrome/PageHeader";
71
- export { EmptyState } from "./components/shared/EmptyState";
72
- export { ConfirmDialog } from "./components/shared/ConfirmDialog";
73
- export { FilterDrawer } from "./components/filters/FilterDrawer";
74
- export { FilterChips } from "./components/filters/FilterChips";
75
- export { ColumnPicker } from "./components/list/ColumnPicker";
76
- export { ViewSwitcher } from "./components/list/ViewSwitcher";
77
- export { ActionRunnerProvider, useActionRunner } from "./components/actions/ActionRunner";
78
- export type { RunActionOptions } from "./components/actions/ActionRunner";
79
- export { ObjectActionBar, useObjectActions } from "./components/actions/ObjectActionBar";
80
- export type { ObjectActionBarProps, ObjectActionBarSlot, ObjectActionSelection, UseObjectActionsResult, } from "./components/actions/ObjectActionBar";
81
- export { RefreshControl } from "./components/shared/RefreshControl";
82
- export type { RefreshControlProps } from "./components/shared/RefreshControl";
83
- export { RefCombobox } from "./components/fields/RefCombobox";
84
- export type { RefComboboxProps } from "./components/fields/RefCombobox";
85
- export { QuickPeek, QEField } from "./components/list/QuickPeek";
86
- export type { QuickPeekProps, QuickPeekFieldSpec, QEFieldProps, } from "./components/list/QuickPeek";
87
- export { InlineEditCell } from "./components/list/InlineEditCell";
88
- export type { InlineEditCellProps, InlineEditTrigger, InlineEditKind, } from "./components/list/InlineEditCell";
89
- export { SignIn } from "./components/pages/auth/SignIn";
90
- export { SignUp } from "./components/pages/auth/SignUp";
91
- export { Forgot } from "./components/pages/auth/Forgot";
92
- export { Reset } from "./components/pages/auth/Reset";
93
- export { TwoFA } from "./components/pages/auth/TwoFA";
94
- export { AuthShell } from "./components/pages/auth/AuthShell";
95
- export type { AuthShellProps } from "./components/pages/auth/AuthShell";
96
- export { Profile } from "./components/pages/profile/Profile";
97
- export { Preferences } from "./components/pages/profile/Preferences";
98
- export { ChangePasswordDialog } from "./components/shared/ChangePasswordDialog";
99
- export type { ChangePasswordDialogProps } from "./components/shared/ChangePasswordDialog";
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
- 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
- export { SquareImage, CircleImage, WideBanner, registerFileWidget, getFileWidget, hasFileWidget, uploadFile, discardFile, validateClientSide, formatBytes, UploadError, setImageCropper, getImageCropper, FileDraftScope, useFileDraftScope, useDraftRegistration, } from "./components/file-widgets";
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";
105
- export { Rail } from "./components/layout/Rail";
106
- export type { RailProps, RailAreaItem } from "./components/layout/Rail";
107
- export { Sidebar, buildSections } from "./components/layout/Sidebar";
108
- export type { SidebarProps } from "./components/layout/Sidebar";
109
- export { TopBar } from "./components/layout/TopBar";
110
- export type { TopBarProps } from "./components/layout/TopBar";
111
- export { TenantChip, envTone } from "./components/layout/TenantChip";
112
- export type { TenantChipProps } from "./components/layout/TenantChip";
113
- export { TabStrip } from "./components/layout/TabStrip";
114
- export type { TabStripProps } from "./components/layout/TabStrip";
115
- export { ImpersonationBanner } from "./components/layout/ImpersonationBanner";
116
- export { ImpersonationFrame } from "./components/layout/ImpersonationFrame";
117
- export { ImpersonationStartModal } from "./components/layout/ImpersonationStartModal";
118
- export { useImpersonation } from "./hooks/useImpersonation";
119
- export { CommandPalette } from "./components/layout/CommandPalette";
120
- export type { CommandPaletteProps, CommandAction, CommandActionType, } from "./components/layout/CommandPalette";
121
- export { AgentChatPanel } from "./components/agents/AgentChatPanel";
122
- export type { AgentChatPanelProps } from "./components/agents/AgentChatPanel";
123
- export { AgentElicitForm } from "./components/agents/AgentElicitForm";
124
- export type { AgentElicitFormProps } from "./components/agents/AgentElicitForm";
125
- export { AgentPicker } from "./components/agents/AgentPicker";
126
- export type { AgentPickerProps } from "./components/agents/AgentPicker";
127
- export { AgentConversationDrawer } from "./components/agents/AgentConversationDrawer";
128
- export type { AgentConversationDrawerProps } from "./components/agents/AgentConversationDrawer";
129
- export { useAgentConversation } from "./hooks/useAgentConversation";
130
- export type { AgentTurnState } from "./hooks/useAgentConversation";
131
- export { listAvailableAgents, createConversation, sendMessage, answerQuestion, sendElicitResponse, approveInvocation, rejectInvocation, cancelInvocation, cancelConversation, listConversations, loadConversationTurns, loadConversationInvocations, loadHistory, } from "./api/agents";
132
- export type { AgentRole, AgentContentBlock, AgentMessage, AgentTurnStatus, AgentTurn, AgentInvocationStatus, AgentInvocationKind, AgentToolInvocation, AgentConversationStatus, AgentConversation, AvailableAgent, ApprovalScope, } from "./api/agents";
133
- export { Breadcrumbs } from "./components/chrome/Breadcrumbs";
134
- export type { BreadcrumbsProps, Crumb } from "./components/chrome/Breadcrumbs";
135
- export type { FilterNode, FilterOp } from "./lib/filters";
136
- export type { FilterURLState } from "./lib/filters";
137
- export type { FilterRecord, FilterRecordField, FilterRecordFields } from "./lib/filter-evaluator";
138
- export { parseFiltersFromURL, parseFilterURLState, setFiltersInURL, hasOrGroups, countActiveFilters, OP_LABELS, NO_VALUE_OPS, } from "./lib/filters";
139
- export { evaluateFilterTree } from "./lib/filter-evaluator";
140
- export { resolveEntityVariantCode } from "./lib/variants";
141
- export { variantActionCodesForRecord, commonVariantActionCodes } from "./lib/variants";
142
- export { resolveScreenVariantCode, effectiveScreenForRecord } from "./lib/variants";
143
- export { formatCount, formatExactCount, formatEstimatedCount } from "./lib/format-count";
144
- export type { MassEditTarget, MassEditTargetKind } from "./lib/mass-edit";
145
- export { buildMassEditTargets, parseTargetFilter } from "./lib/mass-edit";
146
- export { PropertyGridEditor, detectCommonValue, MULTIPLE_VALUES } from "./components/actions/PropertyGridEditor";
147
- export type { PatchMap } from "./components/actions/PropertyGridEditor";
148
- export { ClassifiedFieldLocked, } from "./components/primitives";
149
- export { isFieldReadable, isFieldWritable, fieldClassification, fieldRequiredPermission, classificationTier, isFieldSoDProtected, fieldAccessInfo, } from "./lib/field-classification";
150
- export type { ClassificationTierDef, FieldAccessInfo } from "./types/schema";
1
+ import { i as DynamicIcon, n as IconName, r as IconProps, t as Icon } from "./Icons-Dzl-AkD_.js";
2
+ import { i as setIconRegistry, n as getIcon, t as IconDef } from "./icon-registry-CUT4eF63.js";
3
+ import { $ as EntityField, A as ListParams, At as pickLocalized, B as TenantEnv, Bt as hasOrGroups, C as CURSOR_LANGUAGE_CHANGED, Ct as pkValuesToDetailId, D as EnrichedRow, Dt as TextFn, E as DataResponse, Et as MANDATORY_LANGUAGE, F as PublicParam, Ft as FilterURLState, G as V2PropertyInstance, Gt as FileFieldDisplay, H as V2ListResponse, Ht as parseFiltersFromURL, I as PublicParamsResponse, It as FilterValueResolver, J as Action, Jt as HydratedFile, K as V2StatusInstance, Kt as FileFieldMode, L as Refs, Lt as NO_VALUE_OPS, M as LoginResponse, Mt as textWithNodes, N as ParamLookup, Nt as FilterNode, O as ImpersonationInfo, Ot as TextVars, P as PropertyValue, Pt as FilterOp, Q as Entity, R as StatusInfo, Rt as OP_LABELS, S as BrandingIdentity, St as pkValuesFromId, T as CheckSetupResponse, Tt as resolveDetailRoute, U as V2Meta, Ut as setFiltersInURL, V as V2ListParams, Vt as parseFilterURLState, W as V2ParamInstance, Wt as FileFieldDef, X as ChildRelation, Xt as UploadedFile, Y as AreaDef, Yt as UploadProgress, Z as ClassificationTierDef, Zt as OrderedMap, _ as executeAction$1, _t as buildRowDetailHref, a as ResponsiveMode, at as NavNode, b as ApiErrorBody, bt as getPrimaryKeyFields, c as resolveViewportCategory, ct as PropertyDef, d as ActionExecuteResponse, dt as Screen, et as EnumDef, f as ActionItemError, ft as StatusDef, g as deleteObject, gt as buildEntityDetailHref, h as buildActionBody, ht as buildDetailHrefFromId, i as ResponsiveBreakpoints, it as LocalizedString, j as ListResponse, jt as pluralText, k as ListMeta, kt as makeTextFn, l as ActionBatchError, lt as RefConfig, m as GetEntityOptions, mt as StructureDef, n as useResponsiveMode, nt as FilterSpecialValue, o as ResponsiveViewport, ot as ParameterDef, p as ActionItemSkip, pt as StatusGroupDef, q as isCursorStaleError, qt as FileFieldValue, r as DEFAULT_RESPONSIVE_BREAKPOINTS, rt as LanguageDef, s as ViewportCategory, st as PkValues, t as ResponsiveModeProvider, tt as FieldAccessInfo, u as ActionExecuteRequest, ut as Schema, v as restoreObject, vt as extractPkValues, w as CURSOR_SEMANTICS_MISMATCH, wt as pkValuesToId, x as AuthUser, xt as pkValuePartsToId, y as ApiError, yt as fieldDisplayName, z as Tenant, zt as countActiveFilters } from "./useResponsiveMode-DIR1bZfo.js";
4
+ import { ButtonHTMLAttributes, CSSProperties, ComponentType, InputHTMLAttributes, MouseEvent, ReactNode, RefObject } from "react";
5
+ import { QueryClient, QueryKey, UseQueryResult } from "@tanstack/react-query";
6
+ import { useLocation, useNavigate, useParams, useSearchParams } from "react-router";
7
+ //#region src/app.d.ts
8
+ export declare function App(): import("react").JSX.Element;
9
+ //#endregion
10
+ //#region src/lib/display-value.d.ts
11
+ export declare function coerceDisplayString(value: unknown): string;
12
+ //#endregion
13
+ //#region src/lib/timestamp.d.ts
14
+ /**
15
+ * Format an offset-aware timestamp for display WITHOUT browser-local
16
+ * conversion.
17
+ *
18
+ * `DD-MM-YYYY HH:mm`, the same in every language. Deliberately NOT
19
+ * `dateStyle: "medium"`: that renders "Aug 15, 2026" for one reader and
20
+ * "15 авг. 2026 г." for another, so two people reading the same screen cannot
21
+ * quote the same date to each other.
22
+ */
23
+ export declare function formatOffsetTimestamp(raw: string): string;
24
+ //#endregion
25
+ //#region src/api/entities.d.ts
26
+ /** Helper methods injected onto enriched rows. */
27
+ interface RowHelpers {
28
+ $status(groupCode: string): V2StatusInstance | undefined;
29
+ $property(propertyCode: string): V2PropertyInstance | undefined;
30
+ }
31
+ /** Normalized ref cache that merges $refs across multiple responses. */
32
+ export declare class RefCache {
33
+ private cache;
34
+ /** Merge incoming refs into the cache. */
35
+ merge(refs: Refs | undefined): void;
36
+ /** Get a snapshot of all cached refs. */
37
+ all(): Refs;
38
+ /** Look up a single ref by entity code and id. */
39
+ get(entityCode: string, id: string): Record<string, unknown> | undefined;
40
+ /** Clear the cache. */
41
+ clear(): void;
42
+ }
43
+ /**
44
+ * Generic, type-safe client for a single entity's v2 API.
45
+ *
46
+ * Single-item methods wrap arrays and unwrap the first result.
47
+ * Bulk methods pass arrays through directly.
48
+ *
49
+ * All write responses return enriched rows with $refs, $statuses, etc.
50
+ */
51
+ export declare class EntityClient<T extends Record<string, unknown> = Record<string, unknown>> {
52
+ readonly entity: string;
53
+ readonly refs: RefCache;
54
+ constructor(entity: string, refCache?: RefCache);
55
+ /** Get a single record through the query-PK detail contract.
56
+ *
57
+ * Pass a string to address by the `id` field (the common single-`id`-PK case,
58
+ * unchanged). Pass a PkValues object to address an entity whose primary key is
59
+ * a different single field (e.g. `{ code: "files.gc_sweep" }` for `schedule`)
60
+ * or a composite key (`{ region: "eu", code: "r1" }`) - each field becomes its
61
+ * own query param, which is how the detail contract resolves a row. A bare
62
+ * string with a non-`id` PK would send `?id=...` and 400. */
63
+ get(pk: string | Record<string, string>): Promise<T & EnrichedRow & RowHelpers>;
64
+ /** List records with cursor-based pagination, field selection, and expansion.
65
+ *
66
+ * Recovery on cursor-stale signals: when the server returns
67
+ * `cursor.semantics_mismatch` (sort grammar version bump),
68
+ * `cursor.language_changed` (the reader's language switched mid-pagination), or
69
+ * `cursor.archive_invalid` (an undecodable cross-store archive cursor), the
70
+ * `after` token is dropped and the request is retried once from the top.
71
+ *
72
+ * CRITICAL for accumulating callers (infinite scroll): the returned
73
+ * `reset` flag is `true` when this recovery fired. The refetched data is
74
+ * WINDOW 1, not the next page - an accumulating `useInfiniteQuery` MUST
75
+ * discard its prior pages and start from this one, never append it as the
76
+ * next page (which would duplicate the head and drop the middle). Callers
77
+ * that fetch a single window can ignore `reset`. See Decisions Log #14.
78
+ */
79
+ list(params?: V2ListParams): Promise<{
80
+ data: (T & RowHelpers)[];
81
+ meta: V2Meta;
82
+ $refs: Refs;
83
+ reset: boolean;
84
+ }>;
85
+ /** Create a single record. Wraps in array, returns unwrapped result. */
86
+ create(item: Partial<T> & Record<string, unknown>): Promise<T & EnrichedRow & RowHelpers>;
87
+ /**
88
+ * Create multiple records in one transactional batch.
89
+ *
90
+ * `data.create` is one row per dispatch; N independent
91
+ * inserts compose through the platform batch primitive (`system.batch`,
92
+ * atomic READ COMMITTED tx). Each child op targets `<entity>.__create`
93
+ * with a FLAT `{entity, fields}` body inside `BatchOp.params`.
94
+ *
95
+ * Returns rows in input order. The batch fails atomically: any per-op
96
+ * error surfaces as a thrown Error with the first failing op's code +
97
+ * message; `committed: false` (4xx/200-soft-fail) means no row was
98
+ * written. The HTTP transport itself failing (5xx, network) keeps
99
+ * propagating as ApiError unchanged.
100
+ */
101
+ createMany(items: (Partial<T> & Record<string, unknown>)[]): Promise<(T & EnrichedRow & RowHelpers)[]>;
102
+ /** Update a single record. Wraps in array, returns unwrapped result. */
103
+ update(id: string, data: Partial<T> & Record<string, unknown>): Promise<T & EnrichedRow & RowHelpers>;
104
+ /**
105
+ * Update multiple records in one request. Each item must include its id.
106
+ *
107
+ * `data.update` is one fields map per dispatch
108
+ * ({object_ids, entity, fields}); per-row variation composes through
109
+ * `system.batch` (atomic READ COMMITTED tx) — one __update child op per
110
+ * input item, mirroring createMany / upsertMany. The batch is atomic:
111
+ * any per-op failure rolls back all rows. The first per-op error
112
+ * surfaces as a thrown Error.
113
+ *
114
+ * Returns rows in input order.
115
+ */
116
+ updateMany(items: (Partial<T> & Record<string, unknown> & {
117
+ id: string;
118
+ })[]): Promise<(T & EnrichedRow & RowHelpers)[]>;
119
+ /** Delete a single record by ID. */
120
+ delete(id: string): Promise<void>;
121
+ /**
122
+ * Delete multiple records in one request. Returns the count of deleted
123
+ * records.
124
+ *
125
+ * Dispatches /api/actions/<entity>.__delete with a FLAT envelope
126
+ * ({object_ids, entity}); the server derives the rows from `object_ids`
127
+ * and the entity's PK fields.
128
+ */
129
+ deleteMany(ids: string[]): Promise<{
130
+ count: number;
131
+ }>;
132
+ /** Restore a single soft-deleted record by ID. */
133
+ restore(id: string): Promise<void>;
134
+ /**
135
+ * Restore multiple soft-deleted records. Returns the count of restored
136
+ * records.
137
+ *
138
+ * Routes through the platform-default `__restore` action. The legacy CRUD route
139
+ * POST /api/data/{entity}/restore is retired (returns 410). The FLAT
140
+ * envelope ({object_ids, entity}) lands directly in DataRestoreParams
141
+ * via JSON tags; no `params:` wrapper on the wire.
142
+ */
143
+ restoreMany(ids: string[]): Promise<{
144
+ count: number;
145
+ }>;
146
+ /** Upsert a single record. Wraps in array, returns unwrapped result. */
147
+ upsert(item: Partial<T> & Record<string, unknown>, uniqueFields: string[]): Promise<T & EnrichedRow & RowHelpers>;
148
+ /**
149
+ * Upsert multiple records. Existing matches (by uniqueFields) are
150
+ * updated; absent rows are inserted.
151
+ *
152
+ * `data.upsert` is one row per dispatch (per-row uniqueness matching), so N
153
+ * rows compose through `system.batch`. Each child op targets
154
+ * `<entity>.__upsert` with FLAT `{entity, fields, unique_by}` params.
155
+ * The handler returns `DataUpsertResult.rows[]` where each
156
+ * DataUpsertRowResult carries `{pk, action, row}`; the row payload is
157
+ * extracted to preserve the prior API shape (array of enriched rows).
158
+ *
159
+ * The batch is atomic: any per-op failure rolls back all rows. The
160
+ * first per-op error surfaces as a thrown Error.
161
+ */
162
+ upsertMany(items: (Partial<T> & Record<string, unknown>)[], uniqueFields: string[]): Promise<(T & EnrichedRow & RowHelpers)[]>;
163
+ }
164
+ /**
165
+ * Create an EntityClient for the given entity code.
166
+ * Optionally share a RefCache across multiple clients.
167
+ *
168
+ * NOTE(T5): Each call creates a new EntityClient (and a new RefCache if none is
169
+ * provided). For cross-page ref accumulation, callers should create a persistent
170
+ * RefCache instance and pass it to every entityClient() call, e.g. via React
171
+ * context or a module-level singleton.
172
+ */
173
+ export declare function entityClient<T extends Record<string, unknown> = Record<string, unknown>>(entity: string, refCache?: RefCache): EntityClient<T>;
174
+ //#endregion
175
+ //#region src/api/batch.d.ts
176
+ interface BatchOp {
177
+ action: string;
178
+ params?: Record<string, unknown> | null;
179
+ }
180
+ interface BatchOpResult {
181
+ index: number;
182
+ /** The dispatched action, so an entry says WHICH op it describes. */
183
+ action?: string;
184
+ ok: boolean;
185
+ result?: unknown;
186
+ /** The failure, in the one shape every carrier sends. */
187
+ error?: ApiErrorBody;
188
+ }
189
+ interface BatchResponse {
190
+ results: BatchOpResult[];
191
+ committed: boolean;
192
+ }
193
+ export declare class Batch {
194
+ private ops;
195
+ call(action: string, params?: unknown): this;
196
+ upsert(entity: string, records: Array<Record<string, unknown>>, mode?: "upsert" | "insert_if_missing", uniqueBy?: string[]): this;
197
+ execute(): Promise<BatchResponse>;
198
+ _ops(): readonly BatchOp[];
199
+ }
200
+ //#endregion
201
+ //#region src/hooks/useSchema.d.ts
202
+ export declare function useSchema(): import("@tanstack/react-query").UseQueryResult<Schema, Error>;
203
+ //#endregion
204
+ //#region src/hooks/useEntity.d.ts
205
+ export declare function useEntity(entityCode: string | undefined): Entity | undefined;
206
+ //#endregion
207
+ //#region src/hooks/useScreen.d.ts
208
+ export declare function useScreen(screenCode: string | undefined): Screen | undefined;
209
+ //#endregion
210
+ //#region src/hooks/useCurrentScreen.d.ts
211
+ /**
212
+ * The screen a component is currently rendering inside.
213
+ *
214
+ * Standard pages have always been told which screen they are (`SmartListPage`,
215
+ * `SmartDetailPage` and `SmartRecordListPage` all take `screenCode`). A CUSTOM screen
216
+ * was told nothing - it was mounted as a bare `<Component />` - so it could not read
217
+ * its own declaration and had no choice but to hardcode what the schema already said.
218
+ * That is why a screen renamed or translated in YAML kept an English literal in its
219
+ * header while the sidebar followed the schema.
220
+ *
221
+ * This context closes that gap: every routed screen, custom included, is rendered
222
+ * inside it, so any component in the tree can ask what it is looking at without prop
223
+ * drilling. `PageHeader` uses it to default its title and description - which is what
224
+ * makes `<PageHeader />` with no props the correct, complete header for a custom screen.
225
+ */
226
+ interface CurrentScreen {
227
+ /** The screen's code in the schema (e.g. `events_compare`). */
228
+ code: string;
229
+ /** Its full declaration, or undefined if the schema has not loaded yet. */
230
+ screen: Screen | undefined;
231
+ }
232
+ export declare function CurrentScreenProvider({ code, children }: {
233
+ code: string;
234
+ children: ReactNode;
235
+ }): import("react").JSX.Element;
236
+ /**
237
+ * The screen this component is rendering inside, or undefined outside a routed screen.
238
+ *
239
+ * Use it to read anything the schema already declares - the localized name, the
240
+ * description, the entity, the route - instead of restating it in the component.
241
+ */
242
+ export declare function useCurrentScreen(): CurrentScreen | undefined;
243
+ //#endregion
244
+ //#region src/hooks/useAuth.d.ts
245
+ export declare function useAuth(): {
246
+ user: AuthUser | null;
247
+ isAuthenticated: boolean;
248
+ isLoading: boolean;
249
+ activeTenant: Tenant | null;
250
+ tenants: Tenant[];
251
+ login: import("@tanstack/react-query").UseMutateFunction<LoginResponse, Error, {
252
+ email: string;
253
+ password: string;
254
+ remember?: boolean;
255
+ }, unknown>;
256
+ signup: import("@tanstack/react-query").UseMutateFunction<LoginResponse, Error, {
257
+ email: string;
258
+ password: string;
259
+ displayName: string;
260
+ }, unknown>;
261
+ switchTenant: import("@tanstack/react-query").UseMutateFunction<LoginResponse, Error, string, unknown>;
262
+ logout: () => Promise<void>;
263
+ isLoginPending: boolean;
264
+ isSignupPending: boolean;
265
+ isSwitchingTenant: boolean;
266
+ };
267
+ //#endregion
268
+ //#region src/hooks/useEntityData.d.ts
269
+ /**
270
+ * The React Query key for an entity list-window read. The single source of
271
+ * truth for both `useEntityData` and a screen registering its PRIMARY read with
272
+ * its retained page (`useRegisterRetainedQuery`), so the registered key matches
273
+ * the live query exactly. See hooks/usePageStateRuntime.ts.
274
+ */
275
+ export declare function entityDataQueryKey(entity: string | undefined, params: ListParams): QueryKey;
276
+ /**
277
+ * useEntityData fetches one page-window of entity rows.
278
+ *
279
+ * Decoupled-count contract:
280
+ * this hook issues the WINDOW request only - `count: "window"`, so the
281
+ * server returns the page of rows and never blocks on a COUNT(*). The total
282
+ * is fetched separately by `useEntityCount`; the table renders rows the
283
+ * moment this query resolves, independent of count latency.
284
+ */
285
+ export declare function useEntityData(entity: string | undefined, params: ListParams, enabled?: boolean): import("@tanstack/react-query").UseQueryResult<ListResponse<Record<string, unknown>>, Error>;
286
+ /**
287
+ * useEntityCount fetches the total row count for a list view in a SEPARATE
288
+ * request from the window (`count: "only"` - the server skips the data
289
+ * query entirely and returns just `meta.total` + `meta.count_mode`).
290
+ *
291
+ * The count is page-independent: `page` and `sort` are stripped from the
292
+ * params so a page change or a re-sort does not refetch the count - only a
293
+ * filter / search / screen / include_deleted change invalidates it.
294
+ *
295
+ * The server picks exact vs estimated per the entity's declared `count`
296
+ * strategy; the resolved `meta.count_mode` tells the caller which precision
297
+ * to render. A count failure does NOT break the table: callers treat a
298
+ * failed/absent count as "unknown" and fall back to the loaded row count.
299
+ */
300
+ export declare function useEntityCount(entity: string | undefined, params: ListParams, enabled?: boolean): import("@tanstack/react-query").UseQueryResult<ListResponse<Record<string, unknown>>, Error>;
301
+ //#endregion
302
+ //#region src/hooks/useCursorEntityData.d.ts
303
+ /**
304
+ * The stable JSON segment of the cursor list's query key (the view-defining
305
+ * params, order-independent). Extracted so both the hook and the key builder
306
+ * compute it identically.
307
+ */
308
+ export declare function cursorEntityStableKey(params: CursorEntityDataParams): string;
309
+ /**
310
+ * The React Query key for the cursor (infinite) entity list. Single source of
311
+ * truth for both `useCursorEntityData` and a screen registering its PRIMARY
312
+ * cursor read with its retained page (`useRegisterRetainedQuery`).
313
+ */
314
+ export declare function cursorEntityDataQueryKey(entity: string | undefined, params: CursorEntityDataParams): QueryKey;
315
+ interface CursorEntityDataParams {
316
+ sort?: string;
317
+ filters?: FilterNode[];
318
+ search?: string;
319
+ select?: string[];
320
+ expand?: string[];
321
+ includeDeleted?: boolean;
322
+ screen?: string;
323
+ preview?: boolean;
324
+ limit: number;
325
+ }
326
+ /**
327
+ * useCursorEntityData drives the cursor-native admin list for an archive entity
328
+ * whose `list_pagination` is `cursor` (Postgres-hot + ClickHouse-cold). It
329
+ * accumulates windows with `useInfiniteQuery` over `EntityClient.list` (so the
330
+ * stale-cursor `reset` signal is available), requests the estimated count on
331
+ * the FIRST window only, and resets to window 1 when a stale cursor is hit
332
+ * mid-scroll. Realtime resets are driven centrally by the SSE handler via
333
+ * resetQueries on CURSOR_ENTITY_DATA_KEY.
334
+ *
335
+ * `enabled` gates the query so a NON-cursor entity (offset mode) pays nothing -
336
+ * the page calls both this and useEntityData and enables exactly one.
337
+ */
338
+ export declare function useCursorEntityData(entity: string | undefined, params: CursorEntityDataParams, enabled: boolean): {
339
+ rows: (Record<string, unknown> & RowHelpers)[];
340
+ refs: Refs | undefined;
341
+ total: number | undefined;
342
+ countMode: string | undefined;
343
+ countUnknown: boolean;
344
+ hasMore: boolean;
345
+ fetchNextPage: (options?: import("@tanstack/react-query").FetchNextPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<{
346
+ data: (Record<string, unknown> & RowHelpers)[];
347
+ meta: V2Meta;
348
+ $refs: Refs;
349
+ reset: boolean;
350
+ }, unknown>, Error>>;
351
+ isFetchingNextPage: boolean;
352
+ isLoading: boolean;
353
+ isFetching: boolean;
354
+ isPlaceholderData: boolean;
355
+ isError: boolean;
356
+ error: Error | null;
357
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<import("@tanstack/react-query").InfiniteData<{
358
+ data: (Record<string, unknown> & RowHelpers)[];
359
+ meta: V2Meta;
360
+ $refs: Refs;
361
+ reset: boolean;
362
+ }, unknown>, Error>>;
363
+ };
364
+ /**
365
+ * CursorEntityDataResult is the public return contract of useCursorEntityData -
366
+ * the digested infinite-list shape (accumulated `rows`, `hasMore` +
367
+ * `fetchNextPage` for scroll, the first-window `total`/`countUnknown`, and the
368
+ * react-query status flags). Named (not inferred) so SDK consumers have a stable
369
+ * type to annotate against. Derived from the hook so it never drifts.
370
+ */
371
+ type CursorEntityDataResult = ReturnType<typeof useCursorEntityData>;
372
+ //#endregion
373
+ //#region src/hooks/useAllEntityData.d.ts
374
+ /**
375
+ * Fetches every page of an entity list and concatenates the result into a
376
+ * single ListResponse whose `meta.total` is the true row count.
377
+ *
378
+ * For board / kanban screens that group the entire result set client-side
379
+ * and therefore cannot use one server-capped page. It fetches page 1 to
380
+ * learn `total_pages`, then fetches the remaining pages in parallel and
381
+ * merges their `$refs`.
382
+ *
383
+ * Prefer `useEntityData` for paginated list screens. This hook holds the
384
+ * full result set in memory and is only appropriate for bounded entities.
385
+ * The caller's `page` / `per_page` in `params` are ignored - this hook owns
386
+ * pagination - while `filters`, `search`, `sort`, and `expand` are honored.
387
+ */
388
+ export declare function useAllEntityData(entity: string | undefined, params?: ListParams): import("@tanstack/react-query").UseQueryResult<ListResponse<Record<string, unknown>>, Error>;
389
+ //#endregion
390
+ //#region src/hooks/useObject.d.ts
391
+ /**
392
+ * The React Query key for a single-record read. Single source of truth for both
393
+ * `useObject` and a detail screen registering its PRIMARY read with its
394
+ * retained page (`useRegisterRetainedQuery`). For a string PK uses it directly;
395
+ * for a composite PK sorts the parts so key order does not fork the cache.
396
+ */
397
+ export declare function objectQueryKey(entity: string | undefined, pkValues: PkValues | string | undefined, options?: GetEntityOptions): QueryKey;
398
+ export declare function useObject(entity: string | undefined, pkValues: PkValues | string | undefined, options?: GetEntityOptions): import("@tanstack/react-query").UseQueryResult<DataResponse<Record<string, unknown>>, Error>;
399
+ //#endregion
400
+ //#region src/hooks/useFileReferenceJSON.d.ts
401
+ export declare function fileReferenceJSONQueryKey(entityCode: string | undefined, pkValues: PkValues | string | undefined, fieldCode: string | undefined, reference: string | null | undefined): QueryKey;
402
+ export declare function useFileReferenceJSON(entityCode: string | undefined, pkValues: PkValues | string | undefined, fieldCode: string | undefined, reference: string | null | undefined): import("@tanstack/react-query").UseQueryResult<unknown, Error>;
403
+ //#endregion
404
+ //#region src/components/fields/index.d.ts
405
+ interface FieldRendererProps {
406
+ field: EntityField;
407
+ entityCode?: string;
408
+ fieldName: string;
409
+ value: unknown;
410
+ mode: "display" | "edit";
411
+ onChange?: (value: unknown) => void;
412
+ fieldId?: string;
413
+ labelId?: string;
414
+ record?: Record<string, unknown>;
415
+ refs?: Refs;
416
+ fill?: boolean;
417
+ compact?: boolean;
418
+ surface?: "list" | "detail";
419
+ entity?: Entity;
420
+ entities?: Record<string, Entity>;
421
+ screens?: Record<string, Screen>;
422
+ t: TextFn;
423
+ detailScreen?: string;
424
+ }
425
+ //#endregion
426
+ //#region src/components/fields/StructureField.d.ts
427
+ export declare function StructureField(props: FieldRendererProps & {
428
+ nested?: boolean;
429
+ }): import("react").JSX.Element;
430
+ //#endregion
431
+ //#region src/hooks/useLiveObject.d.ts
432
+ type LiveObjectResult<T extends Record<string, unknown> = EnrichedRow> = UseQueryResult<DataResponse<T>, Error> & {
433
+ object: T | undefined;
434
+ isLive: boolean;
435
+ isNotFound: boolean;
436
+ };
437
+ export declare function useLiveObject<T extends Record<string, unknown> = EnrichedRow>(entity: string | undefined, pkValues: PkValues | string | undefined): LiveObjectResult<T>;
438
+ //#endregion
439
+ //#region src/hooks/useActionData.d.ts
440
+ /** The canonical list-page envelope a paginated action returns in its `result` -
441
+ * the same shape `data.list` (ListResponse) produces. */
442
+ interface ActionListPage<T> {
443
+ data: T[];
444
+ meta?: {
445
+ cursor?: string;
446
+ has_more?: boolean;
447
+ };
448
+ }
449
+ /** Query-key root for a one-shot action read. Mirrors the entity root
450
+ * `entity-data`. */
451
+ export declare const ACTION_DATA_KEY = "action-data";
452
+ /** Query-key root for a cursor (infinite) action read. Mirrors the entity cursor
453
+ * root `entity-data-cursor`; distinct from the one-shot read so it is
454
+ * reaped/registered independently. */
455
+ export declare const ACTION_DATA_CURSOR_KEY = "action-data-cursor";
456
+ /**
457
+ * The React Query key for a one-shot action read. Single source of truth for
458
+ * both `useActionData` and a screen registering it as its PRIMARY read with its
459
+ * retained page (`useRegisterRetainedQuery`). `params` is embedded directly;
460
+ * React Query hashes it stably (sorted keys).
461
+ */
462
+ export declare function actionDataQueryKey(actionCode: string | undefined, params: Record<string, unknown>): QueryKey;
463
+ /**
464
+ * Read an arbitrary action ONCE and cache its `result` - the action mirror of
465
+ * `useEntityData`. `T` is whatever the action returns (a summary object, or a
466
+ * plain array that is not cursor-paginated). Returns the raw React Query result;
467
+ * the caller registers the key via `actionDataQueryKey` +
468
+ * `useRegisterRetainedQuery` for retention.
469
+ */
470
+ export declare function useActionData<T>(actionCode: string | undefined, params: Record<string, unknown>, enabled?: boolean): import("@tanstack/react-query").UseQueryResult<T, Error>;
471
+ /**
472
+ * The React Query key for a cursor (infinite) action read. Single source of
473
+ * truth for both `useCursorActionData` and its retained-page registration. The
474
+ * key excludes the cursor (the cursor is the page param, not part of identity).
475
+ */
476
+ export declare function cursorActionDataQueryKey(actionCode: string | undefined, params: Record<string, unknown>): QueryKey;
477
+ /** The accumulated, table-ready result of a cursor action read - mirrors the
478
+ * shape `useCursorEntityData` feeds a list. */
479
+ interface CursorActionDataResult<T> {
480
+ rows: T[];
481
+ hasMore: boolean;
482
+ fetchNextPage: () => void;
483
+ isFetchingNextPage: boolean;
484
+ isLoading: boolean;
485
+ isError: boolean;
486
+ error: Error | null;
487
+ refetch: () => void;
488
+ queryKey: QueryKey;
489
+ }
490
+ /**
491
+ * Drive a cursor-paginated table from an action that returns an `ActionListPage`
492
+ * in its `result`. The mirror of `useCursorEntityData`, differing only in the
493
+ * source (an action via `executeAction`, not `EntityClient.list`): it
494
+ * accumulates windows with `useInfiniteQuery`, advancing `meta.cursor` while
495
+ * `meta.has_more`, and exposes the flattened rows. Register the returned
496
+ * `queryKey` with `useRegisterRetainedQuery` so the pages survive a tab switch /
497
+ * Back within the retention window and die with the retained page.
498
+ */
499
+ export declare function useCursorActionData<T>(actionCode: string | undefined, params: Record<string, unknown>, enabled?: boolean): CursorActionDataResult<T>;
500
+ //#endregion
501
+ //#region src/hooks/useMutations.d.ts
502
+ export declare function useCreateObject(entityCode: string): import("@tanstack/react-query").UseMutationResult<DataResponse<Record<string, unknown>>, Error, Record<string, unknown>, unknown>;
503
+ export declare function useUpdateObject(entityCode: string): import("@tanstack/react-query").UseMutationResult<DataResponse<Record<string, unknown>>, Error, {
504
+ pkValues: PkValues | string;
505
+ data: Record<string, unknown>;
506
+ }, unknown>;
507
+ export declare function useDeleteObject(entityCode: string): import("@tanstack/react-query").UseMutationResult<void, Error, string | PkValues, unknown>;
508
+ //#endregion
509
+ //#region src/hooks/useDebounce.d.ts
510
+ export declare function useDebounce<T>(value: T, delay: number): T;
511
+ //#endregion
512
+ //#region src/hooks/useParams.d.ts
513
+ export declare function usePublicParams(): import("@tanstack/react-query").UseQueryResult<PublicParamsResponse, Error>;
514
+ export declare function useResolvedParam(code: string, options?: {
515
+ enabled?: boolean;
516
+ }): import("@tanstack/react-query").UseQueryResult<ParamLookup, Error>;
517
+ export declare function useEffectiveParam<T = unknown>(code: string): {
518
+ value: T | undefined;
519
+ found: boolean;
520
+ source: ParamLookup["source"] | "public" | undefined;
521
+ loading: boolean;
522
+ error: Error | null;
523
+ };
524
+ /** A failed read returns the default AND `error`; a gate on anything sensitive checks `error`. */
525
+ export declare function useParam<T>(code: string, defaultValue: T): {
526
+ value: T;
527
+ found: boolean;
528
+ source: ParamLookup["source"] | undefined;
529
+ loading: boolean;
530
+ error: Error | null;
531
+ };
532
+ //#endregion
533
+ //#region src/hooks/useObjectStatus.d.ts
534
+ export declare function useSetStatus(entity: string | undefined, id: string | undefined): import("@tanstack/react-query").UseMutationResult<StatusInfo, Error, {
535
+ groupCode: string;
536
+ statusCode: string;
537
+ note?: string;
538
+ }, unknown>;
539
+ //#endregion
540
+ //#region src/hooks/useProperties.d.ts
541
+ export declare function useSetProperty(entity: string | undefined, id: string | undefined): import("@tanstack/react-query").UseMutationResult<PropertyValue, Error, {
542
+ propertyCode: string;
543
+ value: unknown;
544
+ }, unknown>;
545
+ export declare function useDeleteProperty(entity: string | undefined, id: string | undefined): import("@tanstack/react-query").UseMutationResult<void, Error, string, unknown>;
546
+ //#endregion
547
+ //#region src/hooks/useFilters.d.ts
548
+ interface FiltersInput {
549
+ defaults?: FilterNode[];
550
+ }
551
+ /** `filters=[]` and an absent parameter are different states: the first says
552
+ * the caller removed every condition, the second says `defaults` apply. */
553
+ export declare function useFilters({ defaults }?: FiltersInput): {
554
+ filters: FilterNode[];
555
+ filterError: string | null;
556
+ activeCount: number;
557
+ setFilters: (newFilters: FilterNode[]) => void;
558
+ clearFilters: () => void;
559
+ };
560
+ //#endregion
561
+ //#region src/hooks/useColumns.d.ts
562
+ /**
563
+ * useColumns manages visible columns via URL `columns` param.
564
+ * Falls back to screen defaults when no URL param is set.
565
+ */
566
+ export declare function useColumns(availableColumns: string[], defaultColumns: string[]): {
567
+ visibleColumns: string[];
568
+ availableColumns: string[];
569
+ setColumns: (cols: string[]) => void;
570
+ resetToDefaults: () => void;
571
+ showAll: () => void;
572
+ isColumnVisible: (col: string) => boolean;
573
+ toggleColumn: (col: string) => void;
574
+ };
575
+ //#endregion
576
+ //#region src/components/list/ViewSwitcher.d.ts
577
+ interface ViewItem {
578
+ id: string;
579
+ name: Record<string, string>;
580
+ icon?: string;
581
+ source: "system" | "personal" | "shared";
582
+ is_default?: boolean;
583
+ filters?: FilterNode[];
584
+ columns?: string[];
585
+ sort?: string;
586
+ }
587
+ interface ViewSwitcherProps {
588
+ views: ViewItem[];
589
+ activeViewId: string | null;
590
+ isDirty: boolean;
591
+ onSelect: (view: ViewItem) => void;
592
+ onSave?: () => void;
593
+ onSaveAs?: () => void;
594
+ onDiscard?: () => void;
595
+ onDelete?: (view: ViewItem) => void;
596
+ deletePending?: boolean;
597
+ }
598
+ export declare function ViewSwitcher({ views, activeViewId, isDirty, onSelect, onSave, onSaveAs, onDiscard, onDelete, deletePending }: ViewSwitcherProps): import("react").JSX.Element;
599
+ //#endregion
600
+ //#region src/hooks/useViews.d.ts
601
+ /**
602
+ * useViews fetches DB views for a screen and merges with system views (presets) from DSL.
603
+ * Returns a unified list with source tagging.
604
+ */
605
+ export declare function useViews(screenCode: string, userId?: string): ViewItem[];
606
+ //#endregion
607
+ //#region src/stores/screen-registry.d.ts
608
+ /**
609
+ * What the platform hands a custom screen when it mounts it.
610
+ *
611
+ * `screenCode` is the same handle every standard page already receives, so a custom
612
+ * screen can read its own declaration (name, description, entity, route) instead of
613
+ * restating it in code. Prefer the `useCurrentScreen()` hook - it reaches any component
614
+ * in the tree, not just the top one - and take this prop only when the top-level
615
+ * component itself needs the code.
616
+ *
617
+ * It is optional: a screen registered before this existed keeps compiling and running.
618
+ */
619
+ interface CustomScreenProps {
620
+ screenCode?: string;
621
+ }
622
+ export declare function registerScreen(code: string, component: ComponentType<CustomScreenProps>): void;
623
+ //#endregion
624
+ //#region src/components/detail-layout/LayoutRenderer.d.ts
625
+ interface PendingChildRow {
626
+ _key: string;
627
+ _deleted?: boolean;
628
+ _dirty?: boolean;
629
+ [field: string]: unknown;
630
+ }
631
+ interface LayoutContext {
632
+ schema: Schema;
633
+ entity: Entity;
634
+ entityCode: string;
635
+ recordId: string;
636
+ record: Record<string, unknown>;
637
+ isNew: boolean;
638
+ mode: "display" | "edit";
639
+ onFieldChange?: (field: string, value: unknown) => void;
640
+ refs?: Refs;
641
+ columns?: number;
642
+ hideEmptyFields?: boolean;
643
+ objectProperties?: PropertyValue[];
644
+ onSetProperty?: (propertyCode: string, value: unknown) => void;
645
+ isPropertyPending?: boolean;
646
+ objectStatuses?: StatusInfo[];
647
+ onSetStatus?: (groupCode: string, statusCode: string) => void;
648
+ isStatusPending?: boolean;
649
+ pendingChildren?: Record<string, PendingChildRow[]>;
650
+ onChildrenChange?: (childCode: string, rows: PendingChildRow[]) => void;
651
+ childValidationErrors?: Record<string, Record<string, string[]>>;
652
+ fieldErrors?: Record<string, string>;
653
+ withinCard?: boolean;
654
+ detailTabsPresentation?: "sections" | "scroll";
655
+ relatedRecordsPresentation?: "cards" | "table";
656
+ }
657
+ //#endregion
658
+ //#region src/components/detail-layout/widgets/registry.d.ts
659
+ interface LayoutWidgetProps {
660
+ inputs: Record<string, string>;
661
+ values: Record<string, unknown>;
662
+ record: Record<string, unknown>;
663
+ options?: Record<string, unknown>;
664
+ ctx: LayoutContext;
665
+ }
666
+ type LayoutWidget = (props: LayoutWidgetProps) => ReactNode;
667
+ export declare function registerLayoutWidget(code: string, widget: LayoutWidget): void;
668
+ export declare function getLayoutWidget(code: string): LayoutWidget | undefined;
669
+ export declare function hasLayoutWidget(code: string): boolean;
670
+ //#endregion
671
+ //#region src/hooks/useLanguage.d.ts
672
+ export declare function useLanguage(): string;
673
+ export declare function useDeploymentLanguage(): string;
674
+ export declare function reresolveLanguage(queryClient: QueryClient): Promise<void>;
675
+ //#endregion
676
+ //#region src/hooks/useText.d.ts
677
+ export declare function useText(catalog?: "messages" | "errors"): TextFn;
678
+ //#endregion
679
+ //#region src/lib/failure.d.ts
680
+ export declare function failureTitle(errorTitle: TextFn, err: unknown): string;
681
+ //#endregion
682
+ //#region src/stores/tabs.d.ts
683
+ type TabMode = "view" | "edit" | "create";
684
+ type TabCloseScope = "current" | "others" | "right" | "all";
685
+ /**
686
+ * Origin-aware Back return target. The CANONICAL stored shape: `pathname` is an
687
+ * in-app path (no origin, starts `/` not `//`), `search` is the query string
688
+ * WITHOUT a leading `?` (matches `TabItem.search`), `hash` carries its leading
689
+ * `#`. Converted to the `?`-prefixed router form only at the navigate boundary.
690
+ *
691
+ * `hash` lives here but NOT on `TabItem` (which has no `hash` field): a closed
692
+ * origin tab with a hash is reopened via pathname+search, and the hash is
693
+ * applied only in the `navigate()` call. `tabId`/`title`/`icon`/`screen` are
694
+ * hints for switching to (or reopening) the origin tab. Never stores secrets,
695
+ * external URLs, or row data.
696
+ */
697
+ interface ReturnTarget {
698
+ pathname: string;
699
+ search?: string;
700
+ hash?: string;
701
+ tabId?: string;
702
+ title?: string;
703
+ icon?: string;
704
+ screen?: string;
705
+ }
706
+ interface TabItem {
707
+ id: string;
708
+ pathname: string;
709
+ search: string;
710
+ title: string;
711
+ derivedTitle?: boolean;
712
+ icon?: string;
713
+ closable: boolean;
714
+ area?: string;
715
+ screen?: string;
716
+ navId?: string;
717
+ entity?: string;
718
+ record?: Record<string, unknown>;
719
+ mode?: TabMode;
720
+ dirty?: boolean;
721
+ returnTo?: ReturnTarget | null;
722
+ }
723
+ interface OpenTabOptions {
724
+ activate?: boolean;
725
+ }
726
+ interface TabState {
727
+ tabs: TabItem[];
728
+ activeTabId: string | null;
729
+ openTab: (tab: Omit<TabItem, "id">, options?: OpenTabOptions) => string;
730
+ closeTab: (id: string) => void;
731
+ closeTabs: (ids: string[]) => TabItem | null;
732
+ switchTab: (id: string) => void;
733
+ findTabByPathname: (pathname: string) => TabItem | undefined;
734
+ updateTabTitle: (id: string, title: string, derived?: boolean) => void;
735
+ updateTabSearch: (id: string, search: string) => void;
736
+ setReturnTarget: (id: string, rt: ReturnTarget | null) => void;
737
+ commitTabNavigation: (id: string, patch: {
738
+ search: string;
739
+ returnTo?: ReturnTarget | null;
740
+ }) => void;
741
+ setDirty: (id: string, dirty: boolean) => void;
742
+ setMode: (id: string, mode: TabMode) => void;
743
+ updateTab: (id: string, patch: Partial<TabItem>) => void;
744
+ setScope: (tenantId: string | null, userId: string | null) => void;
745
+ hydrate: () => void;
746
+ }
747
+ export declare const useTabStore: import("zustand").UseBoundStore<import("zustand").StoreApi<TabState>>;
748
+ //#endregion
749
+ //#region src/hooks/useTabNavigate.d.ts
750
+ interface TabNavigateOptions {
751
+ title?: string;
752
+ icon?: string;
753
+ search?: string;
754
+ replace?: boolean;
755
+ /**
756
+ * Top-level (chrome) navigation: do NOT capture the current screen as the
757
+ * destination's Back origin; CLEAR the destination tab's origin to `null`
758
+ * (the menu-cleared sentinel) so a menu/sidebar/command-palette-opened
759
+ * screen shows no Back. Default `false` = capture by default, which is what
760
+ * makes every drill-in (content anchors, row clicks, association, action
761
+ * href, custom `tabNavigate`) origin-aware with no per-site change.
762
+ */
763
+ topLevel?: boolean;
764
+ }
765
+ export declare function useTabNavigate(): (to: string, opts?: TabNavigateOptions) => void;
766
+ //#endregion
767
+ //#region src/hooks/useScreenBack.d.ts
768
+ interface UseScreenBackOptions {
769
+ /** Static/parent fallback invoked when there is no valid origin (e.g. a
770
+ * detail's `backToList`, a custom screen's static `PageHeader.backTo`).
771
+ * Callers make this embed-correct themselves; the hook never tab-ops it. */
772
+ fallback?: () => void;
773
+ }
774
+ interface ScreenBack {
775
+ /** True when `goBack` will navigate (an origin exists, or a fallback is
776
+ * provided and permitted). Drives whether to render a Back affordance when a
777
+ * surface has no other visibility rule. */
778
+ canGoBack: boolean;
779
+ /** True when the active screen has a captured origin to return to. */
780
+ hasOriginBack: boolean;
781
+ /** True when a static/parent fallback is permitted (false ONLY for a
782
+ * menu-cleared origin). Surfaces combine it with their own rule. */
783
+ allowFallbackBack: boolean;
784
+ /** Navigate Back: switch to / reopen the origin tab, else invoke the
785
+ * fallback. Never closes the current tab; never throws. */
786
+ goBack: () => void;
787
+ }
788
+ export declare function useScreenBack(opts?: UseScreenBackOptions): ScreenBack;
789
+ //#endregion
790
+ //#region src/hooks/usePageState.d.ts
791
+ /** A `useState`-style setter accepting a value or an updater. */
792
+ type PageStateSetter<T> = (next: T | ((prev: T) => T)) => void;
793
+ /**
794
+ * How coarsely a value is keyed.
795
+ * - `"url"` (default): keyed by the full canonical URL, so it FORKS when
796
+ * filters/sort/sub-view change (per-view memory - e.g. scroll position,
797
+ * expanded rows). A filter change is a new view with its own value.
798
+ * - `"path"`: keyed by the screen pathname only, so it PERSISTS across
799
+ * in-screen query changes (e.g. row selection, which survives a filter or
800
+ * column change and is pruned to the visible rows, not reset).
801
+ */
802
+ type PageStateScope = "url" | "path";
803
+ interface PageStateOptions {
804
+ scope?: PageStateScope;
805
+ }
806
+ /**
807
+ * Bind a deep value to the current screen's retained page.
808
+ *
809
+ * Returns `[value, setValue]`:
810
+ * - `value` is the stored value for the live canonical URL, or `defaultValue`
811
+ * when absent / reaped / retention disabled. Re-renders only when THIS
812
+ * pageKey's value for THIS key changes.
813
+ * - `setValue` writes through to the store under the LIVE canonical URL
814
+ * (tracked via a per-render ref, so the stable setter always targets the
815
+ * currently-mounted view - never a key captured at mount, never the
816
+ * destination's after a navigation). Accepts a value or an updater.
817
+ *
818
+ * Writes are immediate (write-through), so there is no deferred unmount flush to
819
+ * lose: a value set while mounted at a URL is already stored under that URL when
820
+ * the screen unmounts. The retained page is created lazily on first write.
821
+ */
822
+ export declare function usePageState<T>(key: string, defaultValue: T, opts?: PageStateOptions): [T, PageStateSetter<T>];
823
+ //#endregion
824
+ //#region src/lib/canonical-url.d.ts
825
+ /** The minimal location shape canonicalUrl needs (a router `Location` satisfies
826
+ * it; tests can pass a bare object). */
827
+ interface CanonicalLocation {
828
+ pathname: string;
829
+ search?: string;
830
+ }
831
+ /**
832
+ * Build the canonical URL key for a location: normalized pathname + the
833
+ * view-defining query, sorted by key, with the embed transport params removed.
834
+ *
835
+ * Sorting makes `?a=1&b=2` and `?b=2&a=1` one key. Removing `EMBED_PARAM_KEYS`
836
+ * makes the same screen one key whether or not the embed params ride along, so
837
+ * a retained page is shared between the embedded and non-embedded view of the
838
+ * same URL. Default query values are NOT collapsed (which params have a default
839
+ * is screen-specific and collapsing the wrong one would silently merge or fork
840
+ * pages); two URLs that differ only by an explicit-vs-implicit default are
841
+ * treated as distinct, which is safe (at worst slightly less sharing).
842
+ */
843
+ export declare function canonicalUrl(location: CanonicalLocation): string;
844
+ //#endregion
845
+ //#region src/hooks/usePageStateRuntime.d.ts
846
+ /**
847
+ * Register a screen's PRIMARY heavy read (its list or detail query key) with the
848
+ * current retained page, so a kill/sweep `removeQueries` releases the cached
849
+ * data alongside the deep state. Call from the standard pages (and custom
850
+ * screens) with the key from the matching key-builder (`entityDataQueryKey` /
851
+ * `cursorEntityDataQueryKey` / `objectQueryKey`).
852
+ *
853
+ * Pass ONLY primary heavy reads - never a shared ref/lookup query, or a
854
+ * sibling screen that shares its key would lose it on this page's eviction.
855
+ * `enabled` (default true) lets the cursor/offset pages register exactly the
856
+ * read they actually use.
857
+ */
858
+ export declare function useRegisterRetainedQuery(queryKey: QueryKey | undefined, enabled?: boolean): void;
859
+ //#endregion
860
+ //#region src/hooks/usePageStateTtl.d.ts
861
+ /** The platform parameter governing retained-page retention. Declared in
862
+ * modules/declarion-core/schema/core_parameters.yaml (int, category `ui`,
863
+ * `[tenant]`, env `DECLARION_UI_PAGE_STATE_TTL_MS`). */
864
+ export declare const PAGE_STATE_TTL_PARAM = "ui_page_state_ttl_ms";
865
+ /**
866
+ * Resolve the retention window in milliseconds. Returns the per-tenant value
867
+ * once the parameter loads, the YAML-mirrored default before then, and clamps a
868
+ * malformed value to the default (never NaN/negative). `0` is honored as
869
+ * "retention disabled".
870
+ */
871
+ export declare function usePageStateTtl(): number;
872
+ //#endregion
873
+ //#region src/hooks/useScreenTab.d.ts
874
+ interface UseScreenTabOptions {
875
+ /** The tab's route. Defaults to the live `location.pathname` - the right value
876
+ * for a param-less custom screen, which is the common case. */
877
+ route?: string;
878
+ /** Tab title. Defaults to the route when omitted. */
879
+ title?: string;
880
+ /** Tab icon name (resolved by the icon registry). */
881
+ icon?: string;
882
+ }
883
+ export declare function useScreenTab(opts?: UseScreenTabOptions): void;
884
+ //#endregion
885
+ //#region src/hooks/useTabSearchMirror.d.ts
886
+ export declare function useTabSearchMirror(route: string | undefined): void;
887
+ //#endregion
888
+ //#region src/lib/scroll-restoration.d.ts
889
+ /** The default deep-state bag key under which a screen's scroll anchor is
890
+ * stored. A screen with one scroll container uses this; a screen with several
891
+ * passes distinct keys. */
892
+ export declare const SCROLL_STATE_KEY = "scroll";
893
+ /**
894
+ * A saved scroll position. `key` is the stable key of the row at the top of the
895
+ * viewport (empty when the container had no rows / is non-virtualized); `delta`
896
+ * is the sub-row pixel offset; `offset` is the raw scroll offset kept as a
897
+ * last-resort fallback when the anchor row is gone.
898
+ */
899
+ interface ScrollAnchor {
900
+ key: string;
901
+ delta: number;
902
+ offset: number;
903
+ }
904
+ /** The minimal virtualizer surface the seam needs. A
905
+ * `Virtualizer<HTMLElement, Element>` is structurally assignable; a test can
906
+ * pass a fake. */
907
+ interface ScrollableVirtualizer {
908
+ scrollOffset: number | null;
909
+ getVirtualItemForOffset: (offset: number) => {
910
+ index: number;
911
+ start: number;
912
+ } | undefined;
913
+ getOffsetForIndex: (index: number, align?: "start") => readonly [number, unknown] | undefined;
914
+ getTotalSize: () => number;
915
+ scrollToOffset: (offset: number, opts?: {
916
+ align?: "start";
917
+ behavior?: "auto";
918
+ }) => void;
919
+ }
920
+ /** Read the saved raw scroll offset for the current page ONCE, for seeding a
921
+ * virtualizer's `initialOffset` (read-once at init). Returns 0 when none /
922
+ * retention off. The full anchor re-restore happens after rows measure. */
923
+ export declare function useSavedScrollOffset(stateKey?: string): number;
924
+ /**
925
+ * Bind scroll save + anchor-row restore for a VIRTUALIZED list to the retained
926
+ * page keyed by the live canonical URL.
927
+ *
928
+ * - Restore: once per pageKey, after `rowKeys` first become non-empty, scrolls
929
+ * to `resolveScrollOffset(...)` (anchor row -> clamped raw -> top).
930
+ * - Save: a throttled scroll listener captures the top-of-viewport anchor and
931
+ * writes it imperatively (no re-render); the final position flushes on
932
+ * unmount / pageKey change to the DEPARTING view's own URL (tracked via a
933
+ * per-render ref).
934
+ *
935
+ * `enabled` (default true) lets a caller gate the seam; when false it is inert.
936
+ */
937
+ export declare function useVirtualScrollRestoration(opts: {
938
+ virtualizer: ScrollableVirtualizer | null;
939
+ scrollElementRef: {
940
+ current: HTMLElement | null;
941
+ };
942
+ rowKeys: string[];
943
+ stateKey?: string;
944
+ enabled?: boolean;
945
+ }): void;
946
+ /**
947
+ * Scroll save + restore for a PLAIN (non-virtualized) scroll container - the
948
+ * detail page. Stores the raw `scrollTop` (no anchor rows to key by) under the
949
+ * live canonical URL; restores after first layout; saves throttled-on-scroll +
950
+ * on unmount flush.
951
+ */
952
+ export declare function usePlainScrollRestoration(opts: {
953
+ scrollElementRef: {
954
+ current: HTMLElement | null;
955
+ };
956
+ stateKey?: string;
957
+ enabled?: boolean;
958
+ }): void;
959
+ //#endregion
960
+ //#region src/components/pages/SmartListPage.impl.d.ts
961
+ interface SmartListPageProps {
962
+ screenCode: string;
963
+ }
964
+ //#endregion
965
+ //#region src/components/pages/SmartListPage.d.ts
966
+ export declare function SmartListPage(props: SmartListPageProps): import("react").JSX.Element;
967
+ //#endregion
968
+ //#region src/components/pages/SmartDetailPage.impl.d.ts
969
+ interface SmartDetailPageProps {
970
+ screenCode: string;
971
+ }
972
+ //#endregion
973
+ //#region src/components/pages/SmartDetailPage.d.ts
974
+ export declare function SmartDetailPage(props: SmartDetailPageProps): import("react").JSX.Element;
975
+ //#endregion
976
+ //#region src/components/pages/SmartRecordListPage.impl.d.ts
977
+ interface SmartRecordListPageProps {
978
+ screenCode: string;
979
+ }
980
+ //#endregion
981
+ //#region src/components/pages/SmartRecordListPage.d.ts
982
+ export declare function SmartRecordListPage(props: SmartRecordListPageProps): import("react").JSX.Element;
983
+ //#endregion
984
+ //#region src/components/chrome/PageHeader.d.ts
985
+ interface PageHeaderProps {
986
+ /** Overrides the screen's declared name. Omit it: `<PageHeader />` renders the
987
+ * screen's own `display.name` from the schema, already localized, so a rename or a
988
+ * translation in YAML reaches the page instead of only the sidebar. Pass a string
989
+ * only for a title the schema cannot know (a record's name, a wizard step). */
990
+ title?: string;
991
+ /** Overrides the screen's declared `display.description`. When either is present the
992
+ * header shows the same small info affordance a list and a record already show;
993
+ * when neither is, the header renders exactly as before. */
994
+ description?: string;
995
+ backTo?: string;
996
+ actions?: ReactNode;
997
+ }
998
+ export declare function PageHeader({ title, description, backTo, actions }: PageHeaderProps): import("react").JSX.Element | null;
999
+ //#endregion
1000
+ //#region src/components/shared/EmptyState.d.ts
1001
+ interface EmptyStateProps {
1002
+ icon?: string;
1003
+ title: string;
1004
+ description?: ReactNode;
1005
+ action?: ReactNode;
1006
+ }
1007
+ export declare function EmptyState({ icon, title, description, action }: EmptyStateProps): import("react").JSX.Element;
1008
+ //#endregion
1009
+ //#region src/components/shared/ConfirmDialog.d.ts
1010
+ interface ConfirmDialogProps {
1011
+ open: boolean;
1012
+ onOpenChange: (open: boolean) => void;
1013
+ title: string;
1014
+ description: string;
1015
+ confirmLabel?: string;
1016
+ onConfirm: () => void;
1017
+ destructive?: boolean;
1018
+ }
1019
+ export declare function ConfirmDialog({ open, onOpenChange, title, description, confirmLabel, onConfirm, destructive }: ConfirmDialogProps): import("react").JSX.Element | null;
1020
+ //#endregion
1021
+ //#region src/components/filters/FilterDrawer.d.ts
1022
+ interface FilterFieldMeta {
1023
+ code: string;
1024
+ label: string;
1025
+ type: "string" | "enum" | "int" | "float" | "date" | "timestamp" | "bool" | "ref" | "status" | "property" | (string & {});
1026
+ operators: FilterOp[];
1027
+ options?: {
1028
+ value: string;
1029
+ label: string;
1030
+ color?: string;
1031
+ }[];
1032
+ ref?: RefConfig;
1033
+ specialValues?: FilterSpecialValue[];
1034
+ }
1035
+ interface FilterDrawerProps {
1036
+ open: boolean;
1037
+ onClose: () => void;
1038
+ filters: FilterNode[];
1039
+ onApply: (filters: FilterNode[]) => void;
1040
+ availableFields: FilterFieldMeta[];
1041
+ allFields?: FilterFieldMeta[];
1042
+ fieldLabel?: (field: string) => string;
1043
+ resolveValue?: FilterValueResolver;
1044
+ /** Screen `default_filters`: field codes pre-seeded as empty-valued rows when
1045
+ * the panel opens with no active filters. Never pre-applies a value. */
1046
+ defaultFilters?: string[];
1047
+ /** Shared resolved-ref map (from the list page's filter-value resolver),
1048
+ * passed to each ref editor's RefCombobox so it labels the selected value
1049
+ * from this cache instead of firing its own per-value hydration fetch. */
1050
+ refs?: Refs;
1051
+ }
1052
+ export declare function FilterDrawer({ open, onClose, filters, onApply, availableFields, allFields, fieldLabel, resolveValue, defaultFilters, refs }: FilterDrawerProps): import("react").JSX.Element | null;
1053
+ //#endregion
1054
+ //#region src/components/filters/FilterChips.d.ts
1055
+ interface FilterChipsProps {
1056
+ filters: FilterNode[];
1057
+ onRemove?: (field: string) => void;
1058
+ onRemoveAtPath?: (path: number[]) => void;
1059
+ onClearAll: () => void;
1060
+ onChipClick?: () => void;
1061
+ fieldLabel?: (field: string) => string;
1062
+ /** Humanizes each chip VALUE (special -> label, enum/status -> label, ref ->
1063
+ * record label, with a skeleton while a ref label loads). Absent -> raw
1064
+ * values, so FilterChips stays usable standalone / in tests. */
1065
+ resolveValue?: FilterValueResolver;
1066
+ }
1067
+ export declare function FilterChips({ filters, onRemove, onRemoveAtPath, onClearAll, onChipClick, fieldLabel, resolveValue }: FilterChipsProps): import("react").JSX.Element | null;
1068
+ //#endregion
1069
+ //#region src/components/list/ColumnPicker.d.ts
1070
+ interface ColumnPickerProps {
1071
+ /** Full column pool for the screen (data columns; never `_select`/`_actions`). */
1072
+ availableColumns: string[];
1073
+ /** Ordered visible columns (the `?columns` array). Order is meaningful. */
1074
+ visibleColumns: string[];
1075
+ onToggle: (col: string) => void;
1076
+ /** Move a visible column one slot up/down in the order (the drag-free,
1077
+ * keyboard + touch reorder path - WCAG 2.2 SC 2.5.7). Optional: when
1078
+ * omitted, the reorder controls are not rendered (additive SDK evolution). */
1079
+ onMove?: (col: string, dir: "up" | "down") => void;
1080
+ onReset: () => void;
1081
+ onShowAll: () => void;
1082
+ /** Reset this device's column widths for the screen to the YAML defaults.
1083
+ * Widths are a separate, device-local lifecycle from order/visibility.
1084
+ * Optional: omitting it hides the width-reset item. */
1085
+ onResetWidths?: () => void;
1086
+ columnLabel?: (code: string) => string;
1087
+ }
1088
+ export declare function ColumnPicker({ availableColumns, visibleColumns, onToggle, onMove, onReset, onShowAll, onResetWidths, columnLabel }: ColumnPickerProps): import("react").JSX.Element;
1089
+ //#endregion
1090
+ //#region src/components/actions/ActionRunner.d.ts
1091
+ interface RunActionOptions {
1092
+ /** Full YAML action when available; drives destructive/long_running/resolved_params. */
1093
+ action?: Action;
1094
+ title?: string;
1095
+ /** When `action` is absent, individual flags still steer dispatch. */
1096
+ destructive?: boolean;
1097
+ longRunning?: boolean;
1098
+ /** Invoked after the user confirms / fills params. May return a promise
1099
+ * (awaited by the runner) or a sync value; `unknown` covers both. */
1100
+ execute: (params: Record<string, unknown>) => unknown;
1101
+ /**
1102
+ * Caller-side hook fired after `execute` resolves with a `success`
1103
+ * outcome. Reason: navigation and cache-invalidation decisions that
1104
+ * follow an action depend on the caller's screen context, not on
1105
+ * the action declaration. Detail pages use it to navigate back to
1106
+ * the entity list after `__delete`; list pages can use it to clear
1107
+ * row selection; SSE-driven pages may rely on the realtime stream
1108
+ * instead and omit it entirely.
1109
+ */
1110
+ onSuccess?: (result: unknown) => void;
1111
+ /**
1112
+ * The current bulk selection (full row objects). Forwarded to
1113
+ * ActionDialog so entity_patch params can pre-fill same-value
1114
+ * editors from the selected rows. Omit for single-row or global
1115
+ * action invocations.
1116
+ */
1117
+ bulkSelection?: ReadonlyArray<Record<string, unknown>>;
1118
+ /**
1119
+ * The record the action is bound to, for single-row invocations
1120
+ * (detail header/toolbar, list row, quick peek). Forwarded to
1121
+ * ActionDialog so `$row.*` param defaults resolve against it -
1122
+ * without it every schema-declared prefill silently renders the
1123
+ * param's empty state. Omit for global and bulk invocations.
1124
+ */
1125
+ row?: Record<string, unknown>;
1126
+ /**
1127
+ * Acted-entity override for the post-outcome query invalidation. Normally
1128
+ * the runner reads `action.entity`; pass this when the dispatched action
1129
+ * may lack its binding (e.g. a platform-default bulk action resolved from
1130
+ * screen context).
1131
+ */
1132
+ entity?: string;
1133
+ }
1134
+ interface ActionRunnerContextValue {
1135
+ /**
1136
+ * Dispatch an action. Resolves when the action settles: for a direct-run
1137
+ * action (no params, non-destructive) that is when `execute` finishes, so
1138
+ * callers can await it to keep a trigger button disabled for the whole
1139
+ * operation. For modal paths (params dialog / destructive confirm) it
1140
+ * resolves immediately - the dialog owns its own pending UI.
1141
+ */
1142
+ run: (opts: RunActionOptions) => Promise<void>;
1143
+ isRunning: boolean;
1144
+ }
1145
+ export declare function useActionRunner(): ActionRunnerContextValue;
1146
+ export declare function ActionRunnerProvider({ children }: {
1147
+ children: ReactNode;
1148
+ }): import("react").JSX.Element;
1149
+ //#endregion
1150
+ //#region src/lib/actions.d.ts
1151
+ /**
1152
+ * Resolved leaf node. Kind discriminator "action".
1153
+ * Enabled defaults true from server; client sets false when enabled_if fails.
1154
+ * Reason carries the localized tooltip text when Enabled is false.
1155
+ *
1156
+ * Wire format: {"kind":"action","code":"approve","enabled":true,"reason":null}
1157
+ */
1158
+ interface ResolvedActionLeaf {
1159
+ kind: "action";
1160
+ code: string;
1161
+ enabled: boolean;
1162
+ reason: string | null;
1163
+ }
1164
+ /**
1165
+ * Resolved group node. Kind discriminator "group".
1166
+ * Items is always non-empty after pruning (empty groups are dropped).
1167
+ *
1168
+ * Wire format: {"kind":"group","name":{...},"icon":"...","items":[...]}
1169
+ */
1170
+ interface ResolvedActionGroup {
1171
+ kind: "group";
1172
+ name?: LocalizedString;
1173
+ icon?: string;
1174
+ items: ResolvedActionLayoutNode[];
1175
+ }
1176
+ /**
1177
+ * Discriminated union for a resolved action layout node.
1178
+ * Narrow via node.kind === "action" or node.kind === "group".
1179
+ */
1180
+ type ResolvedActionLayoutNode = ResolvedActionLeaf | ResolvedActionGroup;
1181
+ //#endregion
1182
+ //#region src/components/actions/ResponsiveActionBar.d.ts
1183
+ /**
1184
+ * Tab navigation options accepted by SDK tabNavigate. Kept loose here so the
1185
+ * caller can pass through the full TabMeta from useTabNavigate without forcing
1186
+ * a re-export.
1187
+ *
1188
+ * Reason: ResponsiveActionBar only forwards the value - tighter typing belongs
1189
+ * with the navigation API, not with the dispatcher that hands the value off.
1190
+ */
1191
+ interface TabMeta {
1192
+ title?: string;
1193
+ icon?: string;
1194
+ search?: string;
1195
+ replace?: boolean;
1196
+ }
1197
+ /**
1198
+ * Minimal dispatch surface assembled by SmartListPage/DetailLayout and passed
1199
+ * to ResponsiveActionBar. It carries what `href` dispatch needs plus the seat
1200
+ * for a future widget registry mount.
1201
+ *
1202
+ * Reason: defining the full WidgetContext now would freeze a surface before
1203
+ * the widget registry has a real consumer. It holds exactly the fields the
1204
+ * href dispatch reads and extends without breaking callers.
1205
+ */
1206
+ interface WidgetContext {
1207
+ /** Resolved entity for the current page; widget code reads schema metadata. */
1208
+ entity: Entity;
1209
+ /** Wire-format entity code used to interpolate `${entity}` in href templates. */
1210
+ entityCode: string;
1211
+ /** Active screen, if any. Optional because some pages predate screens. */
1212
+ screen?: Screen;
1213
+ /** Pathname of the current screen, used by widgets that deep-link back. */
1214
+ screenRoute: string;
1215
+ /** Currently selected rows (full row objects). */
1216
+ selectedRows: Record<string, unknown>[];
1217
+ /** PK values of the currently selected rows, in selection order. */
1218
+ selectedIds: string[];
1219
+ /** Reads declared words in the reader's language; `t.language` formats values. */
1220
+ t: TextFn;
1221
+ /** Opens or switches to a tab in the SDK shell. */
1222
+ tabNavigate: (url: string, meta?: TabMeta) => void;
1223
+ /** Invokes a server action and returns its response envelope. */
1224
+ runActionApi: (code: string, params: unknown) => Promise<unknown>;
1225
+ /**
1226
+ * Opens the Quick peek drawer for `row`. Present only where peek is available
1227
+ * (list surfaces that pass it); the `__peek` platform default dispatches
1228
+ * through here as a pure client verb - the mode-less counterpart of `__open`'s
1229
+ * href navigation. Absent surfaces never receive a `__peek` leaf, so a missing
1230
+ * callback is never invoked.
1231
+ */
1232
+ openPeek?: (row: Record<string, unknown> | undefined) => void;
1233
+ /**
1234
+ * The route this surface opens a record on: a list's own detail screen, a detail page's
1235
+ * own route. `__open` and `__edit` follow it before the entity-wide href, so a screen
1236
+ * outside the entity's primary area keeps its record in that area.
1237
+ */
1238
+ recordHref?: (rowId: string) => string | null;
1239
+ }
1240
+ //#endregion
1241
+ //#region src/components/actions/ObjectActionBar.d.ts
1242
+ type ObjectActionBarSlot = "detail" | "detail_toolbar" | "list_row" | "quick_peek";
1243
+ type ObjectActionSelection = {
1244
+ include: string[];
1245
+ exclude?: never;
1246
+ } | {
1247
+ exclude: string[];
1248
+ include?: never;
1249
+ };
1250
+ interface ObjectActionBarProps {
1251
+ entity: string;
1252
+ object: Record<string, unknown> | undefined;
1253
+ slot: ObjectActionBarSlot;
1254
+ screen?: string;
1255
+ select?: ObjectActionSelection;
1256
+ extraActions?: ReactNode;
1257
+ onAfterRun?: (code: string, result: unknown) => void;
1258
+ }
1259
+ interface UseObjectActionsResult {
1260
+ nodes: ResolvedActionLayoutNode[];
1261
+ run: (code: string, action: Action) => void | Promise<void>;
1262
+ isBusy: boolean;
1263
+ widgetContext?: WidgetContext;
1264
+ }
1265
+ export declare function useObjectActions({ entity: entityCode, object, slot, screen: screenCode, select, onAfterRun }: Omit<ObjectActionBarProps, "extraActions">): UseObjectActionsResult;
1266
+ export declare function ObjectActionBar({ entity, object, slot, screen, select, extraActions, onAfterRun }: ObjectActionBarProps): import("react").JSX.Element | null;
1267
+ //#endregion
1268
+ //#region src/components/shared/RefreshControl.d.ts
1269
+ /**
1270
+ * What the control needs, which is less than any one caller happens to have.
1271
+ *
1272
+ * A detail page hands it a `useLiveObject` result; a list hands it a refresh
1273
+ * that cancels in-flight queries first and returns nothing. Typing `refetch` as
1274
+ * react-query's own signature would have made the second caller impossible and
1275
+ * left the list with a copy of this component - which is how the two surfaces
1276
+ * drifted in the first place.
1277
+ */
1278
+ interface RefreshControlProps {
1279
+ liveObject: {
1280
+ /** Resolves when the refresh it starts has settled. See useOwnRefresh. */
1281
+ refetch: () => unknown;
1282
+ isLoading: boolean;
1283
+ isLive: boolean;
1284
+ /**
1285
+ * @deprecated Ignored; the control reports only the refresh a person
1286
+ * started. Passing it changes nothing. Declared so a consumer that builds
1287
+ * this object literally still compiles.
1288
+ */
1289
+ isFetching?: boolean;
1290
+ };
1291
+ realtime?: boolean;
1292
+ }
1293
+ export declare function RefreshControl({ liveObject, realtime }: RefreshControlProps): import("react").JSX.Element;
1294
+ //#endregion
1295
+ //#region src/components/fields/RefCombobox.d.ts
1296
+ interface RefComboboxProps {
1297
+ ref: RefConfig | undefined;
1298
+ /** Current stored ref target value (the `ref.field` value, or target PK). */
1299
+ value: unknown;
1300
+ onChange: (value: string | null) => void;
1301
+ /**
1302
+ * Server-embedded `$refs` enrichment map, keyed by the stored ref value.
1303
+ * Used to label the current selection when it is outside the loaded page.
1304
+ */
1305
+ refs?: Refs;
1306
+ /** FieldDisplay-level display override (`field.display.ref_display_field`). */
1307
+ displayFieldOverride?: string;
1308
+ id?: string;
1309
+ labelId?: string;
1310
+ ariaLabel?: string;
1311
+ required?: boolean;
1312
+ placeholder?: string;
1313
+ /** Filter-only declared options (e.g. "Myself" -> $user.id) rendered as a
1314
+ * "Special values" group above the relation results. Selecting one stores its
1315
+ * `code` verbatim (a `$user.*` token is NOT resolved locally). Filter use only. */
1316
+ specialValues?: FilterSpecialValue[];
1317
+ }
1318
+ /**
1319
+ * RefCombobox is the ONE relation picker shared by every surface that selects a
1320
+ * referenced record: SmartDetailPage create/edit ref fields, the list filter
1321
+ * value editor, ActionDialog `type: ref` params, and inline-edit table ref
1322
+ * cells. It loads a bounded page of accessible referenced rows through the
1323
+ * normal data API (so RBAC/ABAC/tenant scoping all apply) and labels them via
1324
+ * the canonical ref-label resolver.
1325
+ *
1326
+ * It stores the RESOLVED ref target value: `ref.field` when declared, otherwise
1327
+ * the target entity's primary-key object id. (The legacy per-surface code stored
1328
+ * the PK unconditionally and ignored `ref.field`.)
1329
+ *
1330
+ * Typed search hits the SERVER (debounced 300ms, via the `?search=` API over the
1331
+ * entity's search fields), so a record past the bounded first page is findable;
1332
+ * the `Select` primitive runs in server mode (`onSearchChange`) and renders the
1333
+ * returned options without re-filtering them client-side. An empty search loads
1334
+ * the default sorted page.
1335
+ */
1336
+ export declare function RefCombobox({ ref: refConfig, value, onChange, refs, displayFieldOverride, id, labelId, ariaLabel, required, placeholder: placeholderOverride, specialValues }: RefComboboxProps): import("react").JSX.Element;
1337
+ //#endregion
1338
+ //#region src/components/list/QuickPeek.d.ts
1339
+ interface QuickPeekRegularFieldSpec {
1340
+ key: string;
1341
+ label: string;
1342
+ kind: "field";
1343
+ field: EntityField;
1344
+ readOnly?: boolean;
1345
+ }
1346
+ interface QuickPeekFileFieldSpec {
1347
+ key: string;
1348
+ label: string;
1349
+ kind: "file";
1350
+ readOnly?: boolean;
1351
+ }
1352
+ type QuickPeekFieldSpec = QuickPeekRegularFieldSpec | QuickPeekFileFieldSpec;
1353
+ interface QuickPeekProps<R extends Record<string, unknown> = Record<string, unknown>> {
1354
+ entity: Pick<Entity, "fields" | "files" | "variants">;
1355
+ entityCode?: string;
1356
+ record: R;
1357
+ title: string;
1358
+ recordId?: string;
1359
+ avatarName?: string;
1360
+ fields: QuickPeekFieldSpec[];
1361
+ /** $refs payload from the list/detail API; used by RefField-style renderers. */
1362
+ refs?: Refs;
1363
+ /** Full screen YAML — honors `screen.quick_peek.width`. */
1364
+ screen?: Screen;
1365
+ /** All actions available on this record. */
1366
+ actions: Record<string, Action>;
1367
+ /**
1368
+ * Resolved action_layout (screen overrides entity). The peek footer renders
1369
+ * the `quick_peek` slot through the SAME ResponsiveActionBar as the list
1370
+ * toolbar and detail header: declared top-level actions are buttons, the rest
1371
+ * collapse into the overflow menu. One mechanism everywhere.
1372
+ */
1373
+ screenActionLayout?: ResolvedActionLayoutNode[];
1374
+ entityActionLayout?: ResolvedActionLayoutNode[];
1375
+ executeAction: (code: string, action: Action, params: Record<string, unknown>) => Promise<unknown>;
1376
+ /**
1377
+ * Close the peek.
1378
+ */
1379
+ onClose: () => void;
1380
+ /**
1381
+ * Open full detail. Receives the draft when dirty, else null — caller seeds
1382
+ * ShellDetailPage.initialDirty + initial values from this draft.
1383
+ */
1384
+ onOpen: (draft: R | null) => void;
1385
+ /** Fires once per explicit user commit — never on keystroke. */
1386
+ onSave?: (next: R) => void;
1387
+ }
1388
+ export declare function QuickPeek<R extends Record<string, unknown>>({ entity, entityCode, record, title, recordId, avatarName, fields, refs, screen, actions, screenActionLayout, entityActionLayout, executeAction, onClose, onOpen, onSave }: QuickPeekProps<R>): import("react").JSX.Element;
1389
+ interface QEFieldProps {
1390
+ label: string;
1391
+ children: ReactNode;
1392
+ }
1393
+ export declare function QEField({ label, children }: QEFieldProps): import("react").JSX.Element;
1394
+ //#endregion
1395
+ //#region src/components/primitives/Btn.d.ts
1396
+ type BtnKind = "primary" | "ghost" | "subtle" | "default";
1397
+ type BtnSize = "xs" | "sm" | "md" | "lg";
1398
+ type BtnProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "size"> & {
1399
+ kind?: BtnKind;
1400
+ size?: BtnSize;
1401
+ icon?: ReactNode;
1402
+ iconRight?: ReactNode;
1403
+ active?: boolean;
1404
+ danger?: boolean;
1405
+ };
1406
+ export declare const Btn: import("react").ForwardRefExoticComponent<Omit<ButtonHTMLAttributes<HTMLButtonElement>, "size"> & {
1407
+ kind?: BtnKind;
1408
+ size?: BtnSize;
1409
+ icon?: ReactNode;
1410
+ iconRight?: ReactNode;
1411
+ active?: boolean;
1412
+ danger?: boolean;
1413
+ } & import("react").RefAttributes<HTMLButtonElement>>;
1414
+ //#endregion
1415
+ //#region src/components/primitives/IconBtn.d.ts
1416
+ type IconBtnProps = {
1417
+ icon: ReactNode;
1418
+ onClick?: (e: MouseEvent<HTMLButtonElement>) => void;
1419
+ title?: string;
1420
+ size?: number;
1421
+ active?: boolean;
1422
+ disabled?: boolean;
1423
+ style?: CSSProperties;
1424
+ };
1425
+ export declare const IconBtn: import("react").ForwardRefExoticComponent<IconBtnProps & import("react").RefAttributes<HTMLButtonElement>>;
1426
+ //#endregion
1427
+ //#region src/components/primitives/Pill.d.ts
1428
+ type PillTone = "indigo" | "emerald" | "amber" | "rose" | "sky" | "violet" | "slate" | "teal";
1429
+ type PillSize = "xs" | "sm" | "md";
1430
+ type PillProps = {
1431
+ tone?: PillTone;
1432
+ size?: PillSize;
1433
+ dot?: boolean;
1434
+ style?: CSSProperties;
1435
+ children?: ReactNode;
1436
+ };
1437
+ export declare function Pill({ tone, children, size, dot, style }: PillProps): import("react").JSX.Element;
1438
+ //#endregion
1439
+ //#region src/components/primitives/Kbd.d.ts
1440
+ export declare function Kbd({ children }: {
1441
+ children?: ReactNode;
1442
+ }): import("react").JSX.Element;
1443
+ //#endregion
1444
+ //#region src/components/primitives/Avatar.d.ts
1445
+ type AvatarProps = {
1446
+ name: string;
1447
+ size?: number;
1448
+ color?: string;
1449
+ };
1450
+ export declare function Avatar({ name, size, color }: AvatarProps): import("react").JSX.Element;
1451
+ //#endregion
1452
+ //#region src/components/primitives/BrandGlyph.d.ts
1453
+ interface BrandGlyphProps {
1454
+ /** Pixel edge of the rendered SVG. Defaults to 24. */
1455
+ size?: number;
1456
+ className?: string;
1457
+ /** ARIA label; omit for purely decorative usages. */
1458
+ title?: string;
1459
+ }
1460
+ export declare function BrandGlyph({ size, className, title }: BrandGlyphProps): import("react").JSX.Element;
1461
+ //#endregion
1462
+ //#region src/components/primitives/Dropdown.d.ts
1463
+ type DropdownProps = {
1464
+ open: boolean;
1465
+ onClose?: () => void;
1466
+ anchor: HTMLElement | null;
1467
+ /**
1468
+ * Cursor-point anchoring for context menus: when set (and `anchor` is null),
1469
+ * the menu opens at the point and gets the same viewport clamping / above-
1470
+ * flip as element anchoring. One positioning engine for every popover.
1471
+ */
1472
+ anchorPoint?: {
1473
+ x: number;
1474
+ y: number;
1475
+ };
1476
+ align?: "start" | "end";
1477
+ width?: number;
1478
+ style?: CSSProperties;
1479
+ children?: ReactNode;
1480
+ };
1481
+ export declare function Dropdown({ open, onClose, anchor, anchorPoint, children, align, width, style }: DropdownProps): import("react").ReactPortal | null;
1482
+ //#endregion
1483
+ //#region src/components/primitives/HoverCard.d.ts
1484
+ type HoverCardAlign = "start" | "center" | "end";
1485
+ type HoverCardProps = {
1486
+ /** The card body shown on hover. Caller controls the rendered content. */
1487
+ content: ReactNode;
1488
+ /** The trigger node. Wrapped in an inline span. */
1489
+ children: ReactNode;
1490
+ /** Card width in pixels. Default 320. */
1491
+ width?: number;
1492
+ /** Horizontal alignment relative to the anchor. Default `center`. */
1493
+ align?: HoverCardAlign;
1494
+ /** Optional inline style overrides on the card body. */
1495
+ style?: CSSProperties;
1496
+ };
1497
+ export declare function HoverCard({ content, children, width, align, style }: HoverCardProps): import("react").JSX.Element;
1498
+ //#endregion
1499
+ //#region src/components/primitives/Tooltip.d.ts
1500
+ interface TooltipProps {
1501
+ /** Tooltip text. Empty/absent renders the trigger with no tooltip. */
1502
+ content?: string;
1503
+ children: ReactNode;
1504
+ /** Extra props forwarded to the trigger wrapper (e.g. data-testid). */
1505
+ triggerProps?: React.HTMLAttributes<HTMLSpanElement>;
1506
+ }
1507
+ export declare function Tooltip({ content, children, triggerProps }: TooltipProps): import("react").JSX.Element;
1508
+ interface InfoTooltipProps {
1509
+ label: string;
1510
+ size?: number;
1511
+ "data-testid"?: string;
1512
+ }
1513
+ export declare function InfoTooltip({ label, size, ...rest }: InfoTooltipProps): import("react").JSX.Element;
1514
+ //#endregion
1515
+ //#region src/components/primitives/Chip.d.ts
1516
+ type ChipProps = {
1517
+ tone?: string;
1518
+ icon?: ReactNode;
1519
+ children?: ReactNode;
1520
+ onRemove?: () => void;
1521
+ removeLabel?: string;
1522
+ onClick?: () => void;
1523
+ };
1524
+ export declare function Chip({ icon, children, onRemove, removeLabel, onClick }: ChipProps): import("react").JSX.Element;
1525
+ //#endregion
1526
+ //#region src/components/primitives/SectionCard.d.ts
1527
+ type SectionBadge = {
1528
+ text: string;
1529
+ tone?: PillTone;
1530
+ dot?: boolean;
1531
+ };
1532
+ type SectionEmphasis = "primary" | "secondary";
1533
+ type SectionCardProps = {
1534
+ title: ReactNode;
1535
+ subtitle?: ReactNode;
1536
+ right?: ReactNode;
1537
+ badge?: SectionBadge;
1538
+ count?: number;
1539
+ children?: ReactNode;
1540
+ footer?: ReactNode;
1541
+ collapsible?: boolean;
1542
+ defaultOpen?: boolean;
1543
+ icon?: ReactNode;
1544
+ emphasis?: SectionEmphasis;
1545
+ headingLevel?: number;
1546
+ padding?: string;
1547
+ };
1548
+ export declare function SectionCard({ title, subtitle, right, badge, count, children, footer, collapsible, defaultOpen, icon, emphasis, headingLevel, padding }: SectionCardProps): import("react").JSX.Element;
1549
+ //#endregion
1550
+ //#region src/components/primitives/RecordIdBadge.d.ts
1551
+ type RecordIdBadgeProps = {
1552
+ value: string;
1553
+ };
1554
+ /**
1555
+ * Compact record-ID badge. Truncates UUIDs to their first segment for readability
1556
+ * and copies the full value on click. Non-UUID ids render in full.
1557
+ */
1558
+ export declare function RecordIdBadge({ value }: RecordIdBadgeProps): import("react").JSX.Element;
1559
+ //#endregion
1560
+ //#region src/components/primitives/RowField.d.ts
1561
+ type RowFieldProps = {
1562
+ label: ReactNode;
1563
+ children?: ReactNode;
1564
+ wide?: boolean;
1565
+ editing?: boolean;
1566
+ required?: boolean;
1567
+ hint?: string;
1568
+ };
1569
+ export declare function RowField({ label, children, wide, editing, required }: RowFieldProps): import("react").JSX.Element;
1570
+ //#endregion
1571
+ //#region src/components/primitives/BoolToggle.d.ts
1572
+ type BoolToggleProps = {
1573
+ value?: boolean;
1574
+ onChange?: (v: boolean) => void;
1575
+ id?: string;
1576
+ ariaLabelledby?: string;
1577
+ };
1578
+ export declare function BoolToggle({ value, onChange, id, ariaLabelledby }: BoolToggleProps): import("react").JSX.Element;
1579
+ //#endregion
1580
+ //#region src/components/primitives/MenuItem.d.ts
1581
+ type MenuItemProps = {
1582
+ icon?: ReactNode;
1583
+ children?: ReactNode;
1584
+ onClick?: () => void;
1585
+ danger?: boolean;
1586
+ kbd?: ReactNode;
1587
+ active?: boolean;
1588
+ divider?: boolean;
1589
+ disabled?: boolean;
1590
+ title?: string;
1591
+ "data-testid"?: string;
1592
+ };
1593
+ export declare function MenuItem({ icon, children, onClick, danger, kbd, active, divider, disabled, title, "data-testid": dataTestId }: MenuItemProps): import("react").JSX.Element;
1594
+ //#endregion
1595
+ //#region src/components/primitives/Check.d.ts
1596
+ type CheckProps = {
1597
+ checked?: boolean;
1598
+ onChange?: (v: boolean) => void;
1599
+ indeterminate?: boolean;
1600
+ size?: number;
1601
+ };
1602
+ export declare function Check({ checked, onChange, indeterminate, size }: CheckProps): import("react").JSX.Element;
1603
+ //#endregion
1604
+ //#region src/components/primitives/Spinner.d.ts
1605
+ export declare function Spinner({ size }: {
1606
+ size?: number;
1607
+ }): import("react").JSX.Element;
1608
+ //#endregion
1609
+ //#region src/components/primitives/ClassifiedFieldLocked.d.ts
1610
+ interface ClassifiedFieldLockedProps {
1611
+ tier: string;
1612
+ tierDef?: ClassificationTierDef;
1613
+ requiredPermission?: string;
1614
+ variant?: "value" | "input";
1615
+ }
1616
+ export declare function ClassifiedFieldLocked({ tier, tierDef, requiredPermission, variant }: ClassifiedFieldLockedProps): import("react").JSX.Element;
1617
+ //#endregion
1618
+ //#region src/components/primitives/Fields.d.ts
1619
+ type FieldLabelProps = {
1620
+ children?: ReactNode;
1621
+ required?: boolean;
1622
+ hint?: string;
1623
+ htmlFor?: string;
1624
+ id?: string;
1625
+ };
1626
+ export declare const FieldLabel: ({ children, required, hint, htmlFor, id }: FieldLabelProps) => import("react").JSX.Element;
1627
+ type TextInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "onChange" | "prefix"> & {
1628
+ value?: string | null;
1629
+ onChange?: (v: string) => void;
1630
+ prefix?: ReactNode;
1631
+ suffix?: ReactNode;
1632
+ style?: CSSProperties;
1633
+ };
1634
+ export declare function TextInput({ value, onChange, placeholder, prefix, suffix, style, ...rest }: TextInputProps): import("react").JSX.Element;
1635
+ type TextAreaProps = {
1636
+ value?: string | null;
1637
+ onChange?: (v: string) => void;
1638
+ placeholder?: string;
1639
+ rows?: number;
1640
+ fill?: boolean;
1641
+ id?: string;
1642
+ name?: string;
1643
+ ariaRequired?: boolean;
1644
+ };
1645
+ export declare function TextArea({ value, onChange, placeholder, rows, fill, id, name, ariaRequired }: TextAreaProps): import("react").JSX.Element;
1646
+ type SelectOption = {
1647
+ value: string;
1648
+ label: ReactNode;
1649
+ heading?: boolean;
1650
+ divider?: boolean;
1651
+ };
1652
+ type SelectProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "value" | "onChange"> & {
1653
+ value?: string;
1654
+ options: SelectOption[];
1655
+ onChange: (v: string) => void;
1656
+ placeholder?: string;
1657
+ /**
1658
+ * Server-search mode. When set, the typed query is reported here (instead of
1659
+ * filtering the options client-side) so the parent can fetch matching
1660
+ * options from the server; the dropdown renders the given `options` as-is.
1661
+ * The search input is always shown in this mode. Absent -> client-side
1662
+ * filtering over `options`, as before.
1663
+ */
1664
+ onSearchChange?: (query: string) => void;
1665
+ };
1666
+ export declare function Select({ value, options, onChange, placeholder, onSearchChange, ...rest }: SelectProps): import("react").JSX.Element;
1667
+ type MultiSelectProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "value" | "onChange"> & {
1668
+ value?: string[];
1669
+ options: SelectOption[];
1670
+ onChange: (v: string[]) => void;
1671
+ placeholder?: string;
1672
+ };
1673
+ export declare function MultiSelect({ value, options, onChange, placeholder, ...rest }: MultiSelectProps): import("react").JSX.Element;
1674
+ type DateInputProps = {
1675
+ value?: string | null;
1676
+ onChange?: (v: string) => void;
1677
+ };
1678
+ export declare function DateInput({ value, onChange }: DateInputProps): import("react").JSX.Element;
1679
+ type PasswordInputProps = {
1680
+ value?: string | null;
1681
+ onChange?: (v: string) => void;
1682
+ placeholder?: string;
1683
+ showStrength?: boolean;
1684
+ id?: string;
1685
+ name?: string;
1686
+ ariaRequired?: boolean;
1687
+ };
1688
+ export declare function PasswordInput({ value, onChange, placeholder, showStrength, id, name, ariaRequired }: PasswordInputProps): import("react").JSX.Element;
1689
+ type TagsInputProps = {
1690
+ value?: string[];
1691
+ onChange: (v: string[]) => void;
1692
+ };
1693
+ export declare function TagsInput({ value, onChange }: TagsInputProps): import("react").JSX.Element;
1694
+ type JsonFieldProps = {
1695
+ value?: string;
1696
+ onChange?: (v: string) => void;
1697
+ };
1698
+ export declare function JsonField({ value, onChange }: JsonFieldProps): import("react").JSX.Element;
1699
+ type RefFieldItem = {
1700
+ id: string;
1701
+ name: string;
1702
+ };
1703
+ type RefFieldProps = {
1704
+ value?: string;
1705
+ entity?: string;
1706
+ onChange?: (v: string) => void;
1707
+ items?: RefFieldItem[];
1708
+ id?: string;
1709
+ ariaLabelledby?: string;
1710
+ ariaRequired?: boolean;
1711
+ };
1712
+ export declare function RefField({ value, entity, onChange, items, id, ariaLabelledby, ariaRequired }: RefFieldProps): import("react").JSX.Element;
1713
+ type ViewFieldProps = {
1714
+ label: ReactNode;
1715
+ children?: ReactNode;
1716
+ mono?: boolean;
1717
+ wide?: boolean;
1718
+ empty?: boolean;
1719
+ };
1720
+ export declare function ViewField({ label, children, mono, wide, empty }: ViewFieldProps): import("react").JSX.Element;
1721
+ type QuickEditCellProps = {
1722
+ value?: string;
1723
+ onChange?: (v: string) => void;
1724
+ type?: "text" | "select" | "bool";
1725
+ options?: SelectOption[];
1726
+ tone?: string;
1727
+ };
1728
+ export declare function QuickEditCell({ value, onChange, type, options }: QuickEditCellProps): import("react").JSX.Element;
1729
+ //#endregion
1730
+ //#region src/components/list/InlineEditCell.d.ts
1731
+ type InlineEditTrigger = "dblclick" | "enter" | "always";
1732
+ type InlineEditKind = "text" | "select" | "bool";
1733
+ interface InlineEditCellProps {
1734
+ value?: string;
1735
+ onSave: (v: string) => Promise<void> | void;
1736
+ type?: InlineEditKind;
1737
+ options?: SelectOption[];
1738
+ /** Drives when a display cell flips to edit. Default `always` (matches QuickEditCell). */
1739
+ trigger?: InlineEditTrigger;
1740
+ /** Field label — surfaces in the error toast so the user knows which cell rolled back. */
1741
+ label?: string;
1742
+ placeholder?: string;
1743
+ }
1744
+ export declare function InlineEditCell({ value, onSave, type, options, trigger, label, placeholder }: InlineEditCellProps): import("react").JSX.Element;
1745
+ //#endregion
1746
+ //#region src/components/pages/auth/SignIn.d.ts
1747
+ export declare function SignIn(): import("react").JSX.Element;
1748
+ //#endregion
1749
+ //#region src/components/pages/auth/SignUp.d.ts
1750
+ export declare function SignUp(): import("react").JSX.Element;
1751
+ //#endregion
1752
+ //#region src/components/pages/auth/Forgot.d.ts
1753
+ export declare function Forgot(): import("react").JSX.Element;
1754
+ //#endregion
1755
+ //#region src/components/pages/auth/Reset.d.ts
1756
+ export declare function Reset(): import("react").JSX.Element;
1757
+ //#endregion
1758
+ //#region src/components/pages/auth/TwoFA.d.ts
1759
+ export declare function TwoFA(): import("react").JSX.Element;
1760
+ //#endregion
1761
+ //#region src/components/pages/auth/AuthShell.d.ts
1762
+ type AuthShellProps = {
1763
+ children: ReactNode;
1764
+ /** With `branding.identity.workspace_domain`, shows the `<tenantSlug>.<domain>` pill. No SDK caller
1765
+ * passes it until tenant-from-host resolution exists. */
1766
+ tenantSlug?: string;
1767
+ tagline?: string;
1768
+ subTagline?: string;
1769
+ version?: string;
1770
+ badges?: Array<[string, keyof typeof Icon]>;
1771
+ /** Optional override for the wordmark / app name shown in topbar + brand panel. */
1772
+ brandName?: string;
1773
+ };
1774
+ export declare function AuthShell({ children, tenantSlug, tagline, subTagline, version, badges, brandName }: AuthShellProps): import("react").JSX.Element;
1775
+ //#endregion
1776
+ //#region src/components/pages/profile/Profile.d.ts
1777
+ export declare function Profile(): import("react").JSX.Element;
1778
+ //#endregion
1779
+ //#region src/components/pages/profile/Preferences.d.ts
1780
+ export declare function Preferences(): import("react").JSX.Element;
1781
+ //#endregion
1782
+ //#region src/components/shared/ChangePasswordDialog.impl.d.ts
1783
+ type ChangePasswordDialogProps = {
1784
+ open: boolean;
1785
+ onClose: () => void;
1786
+ onSubmit: (input: {
1787
+ current: string;
1788
+ next: string;
1789
+ }) => Promise<void> | void;
1790
+ };
1791
+ //#endregion
1792
+ //#region src/components/shared/ChangePasswordDialog.d.ts
1793
+ export declare function ChangePasswordDialog(props: ChangePasswordDialogProps): import("react").JSX.Element;
1794
+ //#endregion
1795
+ //#region src/components/file-widgets/types.d.ts
1796
+ interface FileWidgetProps {
1797
+ field: FileFieldDef;
1798
+ fieldName: string;
1799
+ entityCode?: string;
1800
+ value: FileFieldValue;
1801
+ mode: "display" | "edit";
1802
+ onChange?: (next: FileFieldValue) => void;
1803
+ disabled?: boolean;
1804
+ alt?: string;
1805
+ recordTitle?: string;
1806
+ uploadFieldCode?: string;
1807
+ uploadSlotCode?: string;
1808
+ fieldId?: string;
1809
+ }
1810
+ type FileWidget = React.ComponentType<FileWidgetProps>;
1811
+ //#endregion
1812
+ //#region src/components/file-widgets/SquareImage.d.ts
1813
+ export declare function SquareImage(props: FileWidgetProps): import("react").JSX.Element;
1814
+ //#endregion
1815
+ //#region src/components/file-widgets/CircleImage.d.ts
1816
+ export declare function CircleImage(props: FileWidgetProps): import("react").JSX.Element;
1817
+ //#endregion
1818
+ //#region src/components/file-widgets/WideBanner.d.ts
1819
+ export declare function WideBanner(props: FileWidgetProps): import("react").JSX.Element;
1820
+ //#endregion
1821
+ //#region src/components/file-widgets/registry.d.ts
1822
+ export declare function registerFileWidget(code: string, widget: FileWidget): void;
1823
+ export declare function getFileWidget(code: string): FileWidget | undefined;
1824
+ export declare function hasFileWidget(code: string): boolean;
1825
+ //#endregion
1826
+ //#region src/components/file-widgets/upload.d.ts
1827
+ interface UploadOptions {
1828
+ file: File;
1829
+ entityCode?: string;
1830
+ fieldCode?: string;
1831
+ slotCode?: string;
1832
+ onProgress?: (p: UploadProgress) => void;
1833
+ signal?: AbortSignal;
1834
+ }
1835
+ export declare class UploadError extends Error {
1836
+ /** The declared type's identifier, e.g. `file.too_large`. */
1837
+ code: string;
1838
+ status: number;
1839
+ /** The untouched body, so a declared member reaches a caller through ext(). */
1840
+ raw?: unknown;
1841
+ constructor(status: number, code: string, message: string, raw?: unknown);
1842
+ /** A declared member of this error's type, read the one way. */
1843
+ ext<T = unknown>(member: string): T | undefined;
1844
+ }
1845
+ export declare function uploadFile(opts: UploadOptions): Promise<UploadedFile>;
1846
+ export declare function discardFile(fileId: string): Promise<void>;
1847
+ type UploadCheck = {
1848
+ code: "file.too_large";
1849
+ message: string;
1850
+ size: number;
1851
+ max: number;
1852
+ } | {
1853
+ code: "file.field_violation";
1854
+ message: string;
1855
+ type: string;
1856
+ };
1857
+ export declare function validateClientSide(file: File, accepts: string[] | undefined, maxBytes: number | undefined): UploadCheck | null;
1858
+ export declare function formatBytes(n: number): string;
1859
+ //#endregion
1860
+ //#region src/components/file-widgets/cropper.d.ts
1861
+ interface CropperOptions {
1862
+ aspectRatio?: number;
1863
+ file: File;
1864
+ }
1865
+ interface CropperResult {
1866
+ blob: Blob;
1867
+ filename: string;
1868
+ }
1869
+ type ImageCropper = (opts: CropperOptions) => Promise<CropperResult>;
1870
+ export declare function setImageCropper(c: ImageCropper | null): void;
1871
+ export declare function getImageCropper(): ImageCropper;
1872
+ //#endregion
1873
+ //#region src/components/file-widgets/draft-scope.d.ts
1874
+ interface DraftEntry {
1875
+ fileId: string;
1876
+ discard: () => Promise<void> | void;
1877
+ }
1878
+ interface FileDraftScopeApi {
1879
+ registerDraft(entry: DraftEntry): void;
1880
+ unregisterDraft(fileId: string): void;
1881
+ hasDraft(fileId: string): boolean;
1882
+ flushAllDrafts(): Promise<void>;
1883
+ markCommitted(fileId: string): void;
1884
+ }
1885
+ export declare function FileDraftScope({ children }: {
1886
+ children: ReactNode;
1887
+ }): import("react").JSX.Element;
1888
+ export declare function useFileDraftScope(): FileDraftScopeApi;
1889
+ export declare function useDraftRegistration(): {
1890
+ register: (fileId: string, discard: () => Promise<void> | void) => void;
1891
+ unregister: (fileId: string) => void;
1892
+ markCommitted: (fileId: string) => void;
1893
+ isDraft: (fileId: string) => boolean;
1894
+ };
1895
+ //#endregion
1896
+ //#region src/components/layout/Rail.d.ts
1897
+ interface RailAreaItem {
1898
+ id: string;
1899
+ icon: string | undefined;
1900
+ label: string;
1901
+ }
1902
+ interface RailProps {
1903
+ activeArea: string;
1904
+ onPick: (id: string) => void;
1905
+ onToggleAI: () => void;
1906
+ aiOpen: boolean;
1907
+ onCmdK: () => void;
1908
+ areas?: AreaDef[];
1909
+ /**
1910
+ * Consumer branding identity. When `app_logo` is present
1911
+ * the rail's brand tile renders the consumer image. Otherwise `app_name`
1912
+ * supplies an initial and tooltip; with neither value the tile is empty.
1913
+ */
1914
+ branding?: BrandingIdentity;
1915
+ }
1916
+ export declare function Rail({ activeArea, onPick, onToggleAI, aiOpen, onCmdK, areas, branding }: RailProps): import("react").JSX.Element;
1917
+ //#endregion
1918
+ //#region src/components/layout/Sidebar.d.ts
1919
+ interface SidebarProps {
1920
+ activeArea: string;
1921
+ }
1922
+ export declare function Sidebar({ activeArea }: SidebarProps): import("react").JSX.Element;
1923
+ interface SidebarSection {
1924
+ title: string;
1925
+ items: NavNode[];
1926
+ }
1927
+ export declare function buildSections(t: TextFn, nodes: NavNode[], activeArea: string): SidebarSection[];
1928
+ //#endregion
1929
+ //#region src/components/chrome/Breadcrumbs.d.ts
1930
+ interface Crumb {
1931
+ label: string;
1932
+ icon?: IconName | (string & {});
1933
+ onClick?: () => void;
1934
+ target?: unknown;
1935
+ /** True for the final segment (rendered bold per design spec). */
1936
+ isLast?: boolean;
1937
+ }
1938
+ interface BreadcrumbsProps {
1939
+ items: Crumb[];
1940
+ onCrumbClick?: (crumb: Crumb) => void;
1941
+ }
1942
+ export declare function Breadcrumbs({ items, onCrumbClick }: BreadcrumbsProps): import("react").JSX.Element | null;
1943
+ //#endregion
1944
+ //#region src/components/layout/TopBar.d.ts
1945
+ interface TopBarProps {
1946
+ breadcrumbs?: Crumb[];
1947
+ onCrumbClick?: (c: Crumb) => void;
1948
+ onOpenNav?: () => void;
1949
+ navButtonRef?: RefObject<HTMLButtonElement | null>;
1950
+ showNavButton?: boolean;
1951
+ onOpenTabs?: () => void;
1952
+ tabsButtonRef?: RefObject<HTMLButtonElement | null>;
1953
+ showTabsButton?: boolean;
1954
+ mobileTabCount?: number;
1955
+ onCmdK?: () => void;
1956
+ onToggleAI?: () => void;
1957
+ aiOpen?: boolean;
1958
+ onOpenProfile?: () => void;
1959
+ onOpenPrefs?: () => void;
1960
+ showTenantSwitcher?: boolean;
1961
+ showBreadcrumbs?: boolean;
1962
+ showThemeToggle?: boolean;
1963
+ }
1964
+ export declare function TopBar({ breadcrumbs, onCrumbClick, onOpenNav, navButtonRef, showNavButton, onOpenTabs, tabsButtonRef, showTabsButton, mobileTabCount, onCmdK, onToggleAI, aiOpen, onOpenProfile, onOpenPrefs, showTenantSwitcher, showBreadcrumbs, showThemeToggle }?: TopBarProps): import("react").JSX.Element;
1965
+ //#endregion
1966
+ //#region src/components/layout/TenantChip.d.ts
1967
+ interface TenantChipProps {
1968
+ tenant: Tenant | null;
1969
+ tenants: Tenant[];
1970
+ onSwitch: (tenant: Tenant) => void;
1971
+ busy?: boolean;
1972
+ compact?: boolean;
1973
+ /**
1974
+ * When true, the chip is disabled with a tooltip explaining why.
1975
+ * Used during impersonation: cross-tenant targeting at start is
1976
+ * supported, but mid-session tenant switching is undefined and
1977
+ * locked.
1978
+ */
1979
+ locked?: boolean;
1980
+ lockedReason?: string;
1981
+ }
1982
+ interface EnvTone {
1983
+ fg: string;
1984
+ bg: string;
1985
+ border?: string;
1986
+ darkFg?: string;
1987
+ darkBg?: string;
1988
+ }
1989
+ export declare function envTone(env?: TenantEnv): EnvTone;
1990
+ export declare function TenantChip({ tenant, tenants, onSwitch, busy, compact, locked, lockedReason }: TenantChipProps): import("react").JSX.Element;
1991
+ //#endregion
1992
+ //#region src/components/layout/TabStrip.d.ts
1993
+ interface TabStripProps {
1994
+ onNew?: () => void;
1995
+ onCloseRequest?: (scope: TabCloseScope, targetId?: string) => void;
1996
+ }
1997
+ export declare function TabStrip({ onNew: onNewProp, onCloseRequest }?: TabStripProps): import("react").JSX.Element | null;
1998
+ //#endregion
1999
+ //#region src/components/layout/ImpersonationBanner.d.ts
2000
+ export declare function ImpersonationBanner(): import("react").JSX.Element;
2001
+ //#endregion
2002
+ //#region src/components/layout/ImpersonationFrame.d.ts
2003
+ /**
2004
+ * Fixed 4px viewport overlay frame that surrounds every route. Visible
2005
+ * for the duration of an impersonation session. The
2006
+ * pointer-events:none guarantees the frame never blocks clicks.
2007
+ *
2008
+ * Color comes from --impersonation-accent (amber by default). When
2009
+ * impersonation.allow_destructive=true, this component sets a body
2010
+ * attribute that flips the variable to red across the banner, chip,
2011
+ * and frame in lockstep (one CSS variable, no parallel state).
2012
+ */
2013
+ export declare function ImpersonationFrame(): import("react").JSX.Element | null;
2014
+ //#endregion
2015
+ //#region src/components/layout/ImpersonationStartModal.impl.d.ts
2016
+ interface ImpersonationStartModalProps {
2017
+ /** Open state controlled by the caller. */
2018
+ open: boolean;
2019
+ /** Target user the admin is about to impersonate. */
2020
+ targetUserId: string;
2021
+ targetUserLabel?: string;
2022
+ /** Closes the modal without dispatching. Caller resets state. */
2023
+ onClose: () => void;
2024
+ /**
2025
+ * Called after the start mutation succeeds. Useful for closing the
2026
+ * modal and navigating; auth state is rehydrated by the hook itself.
2027
+ */
2028
+ onStarted?: () => void;
2029
+ }
2030
+ //#endregion
2031
+ //#region src/components/layout/ImpersonationStartModal.d.ts
2032
+ /**
2033
+ * Reason modal for impersonation.start. Enforces a minimum reason
2034
+ * length (server-side param impersonation.require_reason_min_length,
2035
+ * default 10) before submitting. The "Duration" input is optional and
2036
+ * is capped server-side by impersonation.max_duration.
2037
+ */
2038
+ export declare function ImpersonationStartModal(props: ImpersonationStartModalProps): import("react").JSX.Element;
2039
+ //#endregion
2040
+ //#region src/api/auth.d.ts
2041
+ /**
2042
+ * Impersonation client surface. Each call dispatches through
2043
+ * POST /api/actions/{code} like every other auth handler. The server
2044
+ * sets / clears the impersonation cookies via the LoginResult
2045
+ * HTTPCustomizer; the client receives the public response shape
2046
+ * (user / tenant / expires_at) and reloads the auth context.
2047
+ */
2048
+ interface ImpersonationStartResponse extends LoginResponse {
2049
+ impersonation_session_id: string;
2050
+ session_expires_at: string;
2051
+ }
2052
+ //#endregion
2053
+ //#region src/hooks/useImpersonation.d.ts
2054
+ /**
2055
+ * useImpersonation centralizes the three lifecycle calls (start, stop,
2056
+ * revoke) and re-hydrates auth state on success so the topbar / banner /
2057
+ * viewport frame react in lockstep.
2058
+ *
2059
+ * isImpersonating is derived from auth.me's impersonation field which the
2060
+ * server populates only when the request was issued under an active
2061
+ * impersonation session. Direct human action and agent flows (without an
2062
+ * impersonation channel) leave it null.
2063
+ */
2064
+ export declare function useImpersonation(): {
2065
+ info: ImpersonationInfo | null;
2066
+ isImpersonating: boolean;
2067
+ start: import("@tanstack/react-query").UseMutateFunction<ImpersonationStartResponse, Error, {
2068
+ targetUserId: string;
2069
+ reason: string;
2070
+ durationMinutes?: number;
2071
+ }, unknown>;
2072
+ stop: import("@tanstack/react-query").UseMutateFunction<LoginResponse, Error, void, unknown>;
2073
+ revoke: import("@tanstack/react-query").UseMutateFunction<void, Error, string, unknown>;
2074
+ isStarting: boolean;
2075
+ isStopping: boolean;
2076
+ };
2077
+ //#endregion
2078
+ //#region src/components/layout/CommandPalette.impl.d.ts
2079
+ type CommandActionType = "nav" | "new" | "open" | "ai" | "ai-panel" | "theme" | "tab-close";
2080
+ interface CommandAction {
2081
+ type: CommandActionType;
2082
+ id?: string;
2083
+ route?: string;
2084
+ q?: string;
2085
+ tabCloseScope?: TabCloseScope;
2086
+ }
2087
+ interface CommandPaletteProps {
2088
+ open: boolean;
2089
+ onClose: () => void;
2090
+ onAction: (a: CommandAction) => void;
2091
+ mode?: "default" | "new";
2092
+ navigation?: NavNode[];
2093
+ screens?: Record<string, Screen>;
2094
+ includeAI?: boolean;
2095
+ aiName?: string;
2096
+ }
2097
+ //#endregion
2098
+ //#region src/components/layout/CommandPalette.d.ts
2099
+ export declare function CommandPalette(props: CommandPaletteProps): import("react").JSX.Element;
2100
+ //#endregion
2101
+ //#region src/api/agents.d.ts
2102
+ type AgentRole = "user" | "assistant" | "tool" | "system";
2103
+ type AgentContentBlock = {
2104
+ type: "text";
2105
+ text: string;
2106
+ } | {
2107
+ type: "tool_use";
2108
+ id: string;
2109
+ name: string;
2110
+ input: Record<string, unknown>;
2111
+ } | {
2112
+ type: "tool_result";
2113
+ id: string;
2114
+ name?: string;
2115
+ output: unknown;
2116
+ is_error?: boolean;
2117
+ } | {
2118
+ type: "elicit";
2119
+ id: string;
2120
+ schema: Record<string, unknown>;
2121
+ message: string;
2122
+ } | {
2123
+ type: "elicit_response";
2124
+ id: string;
2125
+ data: Record<string, unknown>;
2126
+ } | {
2127
+ type: "attachment";
2128
+ kind: string;
2129
+ content: string;
2130
+ } | {
2131
+ type: "summary";
2132
+ covers: string[];
2133
+ text: string;
2134
+ } | {
2135
+ type: "system";
2136
+ reason: string;
2137
+ } | {
2138
+ type: "location";
2139
+ screen: string;
2140
+ record?: string;
2141
+ } | {
2142
+ type: "decision";
2143
+ tool_use_id?: string;
2144
+ tool_code: string;
2145
+ decision: "approved" | "rejected";
2146
+ decided_by?: string;
2147
+ decided_at?: string;
2148
+ note?: string;
2149
+ };
2150
+ interface AgentMessage {
2151
+ id: string;
2152
+ conversation_id: string;
2153
+ seq: number;
2154
+ role: AgentRole;
2155
+ content: AgentContentBlock[];
2156
+ created_at: string;
2157
+ streaming?: boolean;
2158
+ }
2159
+ type AgentTurnStatus = "queued" | "running" | "waiting" | "completed" | "failed" | "canceled";
2160
+ interface AgentTurn {
2161
+ id: string;
2162
+ conversation_id: string;
2163
+ trigger_message_id: string;
2164
+ runnable_message_seq: number;
2165
+ status: AgentTurnStatus;
2166
+ model_step: number;
2167
+ reserved_assistant_message_id?: string | null;
2168
+ error_code?: string | null;
2169
+ error_details?: unknown;
2170
+ }
2171
+ type AgentInvocationStatus = "proposed" | "pending_input" | "pending_approval" | "approved" | "rejected" | "running" | "succeeded" | "failed" | "canceled" | "interrupted" | "outcome_unknown";
2172
+ type AgentInvocationKind = "action" | "input_request" | "tool";
2173
+ interface AgentToolInvocation {
2174
+ id: string;
2175
+ updated_at?: string;
2176
+ conversation_id: string | null;
2177
+ message_id: string | null;
2178
+ kind: AgentInvocationKind;
2179
+ turn_id: string | null;
2180
+ assistant_message_id: string | null;
2181
+ response_message_id: string | null;
2182
+ provider_call_id: string | null;
2183
+ call_ordinal: number | null;
2184
+ server_code: string;
2185
+ tool_code: string;
2186
+ params: Record<string, unknown>;
2187
+ requester_user_id: string;
2188
+ real_user_id: string | null;
2189
+ question?: {
2190
+ key?: string;
2191
+ message?: string;
2192
+ schema?: Record<string, unknown>;
2193
+ };
2194
+ status: AgentInvocationStatus;
2195
+ approval?: {
2196
+ decided_by?: string;
2197
+ decided_at?: string;
2198
+ reason?: string;
2199
+ edits?: Record<string, unknown>;
2200
+ };
2201
+ confirmation_mode?: "never" | "once_per_conversation" | "always";
2202
+ result?: unknown;
2203
+ audit_operation_id?: string;
2204
+ reason?: string;
2205
+ confidence?: number;
2206
+ }
2207
+ type AgentConversationStatus = "active" | "canceling" | "interrupted" | "closed";
2208
+ interface AgentConversation {
2209
+ id: string;
2210
+ tenant_id: string;
2211
+ created_by?: string;
2212
+ agent_id?: string;
2213
+ agent?: string;
2214
+ title?: string;
2215
+ model?: string;
2216
+ status: AgentConversationStatus;
2217
+ token_usage?: {
2218
+ in?: number;
2219
+ out?: number;
2220
+ cached_in?: number;
2221
+ };
2222
+ }
2223
+ interface AvailableAgent {
2224
+ id: string;
2225
+ code: string;
2226
+ name?: Record<string, string>;
2227
+ description?: Record<string, string>;
2228
+ is_default: boolean;
2229
+ }
2230
+ export declare function listAvailableAgents(): Promise<AvailableAgent[]>;
2231
+ export declare function createConversation(input: {
2232
+ agent_id?: string;
2233
+ }): Promise<AgentConversation>;
2234
+ interface AgentMessageContext {
2235
+ screen: string;
2236
+ record?: string;
2237
+ }
2238
+ export declare function sendMessage(text: string, conversationId: string, context?: AgentMessageContext): Promise<AgentMessage>;
2239
+ export declare function answerQuestion(invocationId: string, answer: Record<string, unknown>): Promise<void>;
2240
+ export declare function sendElicitResponse(_conversationId: string, invocationId: string, data: Record<string, unknown>): Promise<void>;
2241
+ /** What a person permitted: this call alone, or the action for the rest of
2242
+ * the conversation. Absent means this call alone - the safe reading, and
2243
+ * what every row written before the choice existed means. */
2244
+ type ApprovalScope = "call" | "conversation";
2245
+ export declare function approveInvocation(id: string, scope?: ApprovalScope): Promise<void>;
2246
+ export declare function rejectInvocation(id: string, note?: string): Promise<void>;
2247
+ export declare function cancelInvocation(id: string): Promise<void>;
2248
+ export declare function cancelConversation(id: string): Promise<void>;
2249
+ export declare function listConversations(): Promise<AgentConversation[]>;
2250
+ export declare function loadConversationTurns(conversationId: string): Promise<AgentTurn[]>;
2251
+ export declare function loadConversationInvocations(conversationId: string): Promise<AgentToolInvocation[]>;
2252
+ export declare function loadHistory(conversationId: string): Promise<AgentMessage[]>;
2253
+ //#endregion
2254
+ //#region src/components/agents/AgentChatPanel.impl.d.ts
2255
+ interface AgentChatPanelProps {
2256
+ open: boolean;
2257
+ onClose: () => void;
2258
+ /** The screen the person is on, sent with each message. */
2259
+ context?: AgentMessageContext;
2260
+ title?: string;
2261
+ /** A question typed somewhere else - the command palette - to send once
2262
+ * the panel opens. The palette promises "Press Enter to ask"; without
2263
+ * this it opened the panel and threw the question away. */
2264
+ askOnOpen?: string;
2265
+ docked?: boolean;
2266
+ }
2267
+ //#endregion
2268
+ //#region src/components/agents/AgentChatPanel.d.ts
2269
+ export declare function AgentChatPanel(props: AgentChatPanelProps): import("react").JSX.Element | null;
2270
+ //#endregion
2271
+ //#region src/components/agents/AgentElicitForm.d.ts
2272
+ type JSONSchemaProp = {
2273
+ type?: string | string[];
2274
+ enum?: unknown[];
2275
+ format?: string;
2276
+ minimum?: number;
2277
+ maximum?: number;
2278
+ title?: string;
2279
+ description?: string;
2280
+ default?: unknown;
2281
+ items?: {
2282
+ enum?: unknown[];
2283
+ type?: string;
2284
+ };
2285
+ };
2286
+ interface JSONSchema {
2287
+ type?: string;
2288
+ properties?: Record<string, JSONSchemaProp>;
2289
+ required?: string[];
2290
+ }
2291
+ interface AgentElicitFormProps {
2292
+ message: string;
2293
+ schema: JSONSchema;
2294
+ onSubmit: (data: Record<string, unknown>) => void;
2295
+ onCancel?: () => void;
2296
+ }
2297
+ export declare function AgentElicitForm({ message, schema, onSubmit, onCancel }: AgentElicitFormProps): import("react").JSX.Element;
2298
+ //#endregion
2299
+ //#region src/components/agents/AgentPicker.d.ts
2300
+ interface AgentPickerProps {
2301
+ agents: AvailableAgent[];
2302
+ selectedId?: string;
2303
+ onSelect: (id: string) => void;
2304
+ label: string;
2305
+ }
2306
+ export declare function AgentPicker({ agents, selectedId, onSelect, label }: AgentPickerProps): import("react").JSX.Element | null;
2307
+ //#endregion
2308
+ //#region src/components/agents/AgentConversationDrawer.d.ts
2309
+ interface AgentConversationDrawerProps {
2310
+ open: boolean;
2311
+ onClose: () => void;
2312
+ conversations: AgentConversation[];
2313
+ activeId?: string;
2314
+ onSelect: (id: string) => void;
2315
+ onNew: () => void;
2316
+ onRefresh: () => Promise<void>;
2317
+ }
2318
+ export declare function AgentConversationDrawer({ open, onClose, conversations, activeId, onSelect, onNew, onRefresh }: AgentConversationDrawerProps): import("react").JSX.Element | null;
2319
+ //#endregion
2320
+ //#region src/hooks/useAgentConversation.d.ts
2321
+ interface AgentTurnState {
2322
+ streaming: boolean;
2323
+ }
2324
+ export declare function useAgentConversation(initialConversationId?: string): {
2325
+ conversationId: string | undefined;
2326
+ messages: AgentMessage[];
2327
+ turn: AgentTurnState;
2328
+ turns: AgentTurn[];
2329
+ invocations: AgentToolInvocation[];
2330
+ conversations: AgentConversation[];
2331
+ send: (text: string, context?: AgentMessageContext) => Promise<void>;
2332
+ approve: (invocationId: string, scope?: ApprovalScope) => Promise<void>;
2333
+ reject: (invocationId: string, note?: string) => Promise<void>;
2334
+ submitInput: (invocationId: string, data: Record<string, unknown>) => Promise<void>;
2335
+ cancelInput: (invocationId: string) => Promise<void>;
2336
+ cancel: () => Promise<void>;
2337
+ refreshConversations: () => Promise<void>;
2338
+ startNew: () => void;
2339
+ agents: AvailableAgent[];
2340
+ selectedAgentId: string | undefined;
2341
+ selectAgent: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
2342
+ setConversationId: (id: string | undefined) => void;
2343
+ };
2344
+ //#endregion
2345
+ //#region src/lib/filter-evaluator.d.ts
2346
+ /** Metadata needed to evaluate a record-only filter condition. */
2347
+ interface FilterRecordField {
2348
+ type: "string" | "text" | "rich_text" | "email" | "url" | "phone" | "enum" | "int" | "float" | "decimal" | "date" | "timestamp" | "time" | "bool" | "ref" | "uuid" | (string & {});
2349
+ }
2350
+ type FilterRecordFields = Readonly<Record<string, FilterRecordField>>;
2351
+ type FilterRecord = Readonly<Record<string, unknown>>;
2352
+ /**
2353
+ * Evaluate a loader-validated filter tree against one already-loaded record.
2354
+ *
2355
+ * This deliberately accepts only the deterministic record subset: it has no
2356
+ * caller, clock, relation lookup, or value coercion input. A missing field is
2357
+ * the same as null for `is_empty`; every other operator returns false for a
2358
+ * missing, null, or empty value.
2359
+ */
2360
+ export declare function evaluateFilterTree(nodes: FilterNode[], fields: FilterRecordFields, record: FilterRecord): boolean;
2361
+ //#endregion
2362
+ //#region src/lib/variants.d.ts
2363
+ export declare function resolveEntityVariantCode(entity: Entity, record: FilterRecord): string | undefined;
2364
+ export declare function variantActionCodesForRecord(entity: Entity | undefined, record: FilterRecord): ReadonlySet<string> | undefined;
2365
+ export declare function commonVariantActionCodes(entity: Entity | undefined, records: readonly FilterRecord[]): ReadonlySet<string> | undefined;
2366
+ export declare function resolveScreenVariantCode(entity: Entity, screen: Screen, record: FilterRecord): string | undefined;
2367
+ export declare function effectiveScreenForRecord(entity: Entity | undefined, screen: Screen | undefined, record: FilterRecord): Screen | undefined;
2368
+ //#endregion
2369
+ //#region src/lib/format-count.d.ts
2370
+ /**
2371
+ * Row-count formatting for list views. Display precision MUST match data
2372
+ * accuracy:
2373
+ *
2374
+ * - an exact count renders to the unit with thousands separators
2375
+ * (3,613,711) - it is known precisely;
2376
+ * - an estimate renders coarse (~3.6M) - showing an estimate to the unit
2377
+ * is false precision and is wrong.
2378
+ *
2379
+ * This is the single shared count formatter; the SDK has no other. Field
2380
+ * cell factories that call `toLocaleString` for per-cell numbers are a
2381
+ * separate concern and are not routed through here.
2382
+ */
2383
+ /**
2384
+ * formatEstimatedCount renders a coarse estimate: a `~` prefix, ~2
2385
+ * significant figures, and the magnitude suffix of Intl compact notation in
2386
+ * `language` (K/M/B in English, "mil"/"M" in Spanish, "тыс."/"млн" in Russian).
2387
+ *
2388
+ * 3_613_711 -> "~3.6M"
2389
+ * 850_000 -> "~850K"
2390
+ * 12_000 -> "~12K"
2391
+ * 940 -> "~940" (below 1000: no suffix, the ~ still signals an estimate)
2392
+ *
2393
+ * Two significant figures: a value's first 2 digits are kept and the rest
2394
+ * collapse to the magnitude suffix. 3_613_711 -> 3.6M (one decimal because
2395
+ * the leading digit is single); 12_000 -> 12K (no decimal because 2 leading
2396
+ * digits already give 2 sig figs).
2397
+ */
2398
+ export declare function formatEstimatedCount(total: number, language?: string): string;
2399
+ /**
2400
+ * formatExactCount renders an exact count to the unit with the thousands
2401
+ * separators of `language`: 3613711 -> "3,613,711" in English.
2402
+ */
2403
+ export declare function formatExactCount(total: number, language?: string): string;
2404
+ /**
2405
+ * formatCount picks the rendering by the count strategy actually used to
2406
+ * produce `total` (the server's `meta.count_mode`), NOT the entity schema:
2407
+ * a forced exact count must render exact even on a `count: estimated`
2408
+ * entity.
2409
+ */
2410
+ export declare function formatCount(total: number, mode: "exact" | "estimated", language?: string): string;
2411
+ //#endregion
2412
+ //#region src/lib/mass-edit.d.ts
2413
+ /** Target kinds mirror engine.MassEditTargetKind in Go. */
2414
+ type MassEditTargetKind = "field" | "status" | "property";
2415
+ /** Metadata a property-grid row needs to render a target + editable value cell. */
2416
+ interface MassEditTarget {
2417
+ /** Picker key — bare field code, or `$status.<group>` / `$property.<code>`. */
2418
+ code: string;
2419
+ /** Bare identifier (without prefix) — "priority", "approval", "color". */
2420
+ bare: string;
2421
+ kind: MassEditTargetKind;
2422
+ label: string;
2423
+ /** For field targets, the underlying EntityField drives the value renderer. */
2424
+ field?: EntityField;
2425
+ /** For status targets, the group definition drives the status-picker options. */
2426
+ statusGroup?: StatusGroupDef;
2427
+ /** For property targets, the property definition drives type/widget/ref. */
2428
+ property?: PropertyDef;
2429
+ }
2430
+ /** Parse `HandlerParam.Filter["targets"]` into a list of allowed keys. */
2431
+ export declare function parseTargetFilter(raw: string | undefined): string[];
2432
+ /**
2433
+ * Build the list of writable mass-edit targets for an entity.
2434
+ * - When `whitelist` is set, narrows to those keys only (preserves the
2435
+ * order in the whitelist so action authors can curate a picker order).
2436
+ * - Without a whitelist, emits every non-PK, non-auto field plus all
2437
+ * status groups and properties (when not composite PK). Matches the
2438
+ * engine-side BuildMassEditTargets contract.
2439
+ * - entities without generic update globally hide every target (UI mirrors
2440
+ * the server gate; the dispatcher still enforces permissions).
2441
+ */
2442
+ export declare function buildMassEditTargets(t: TextFn, entity: Entity | undefined, whitelistRaw?: string | string[]): MassEditTarget[];
2443
+ //#endregion
2444
+ //#region src/components/actions/PropertyGridEditor.d.ts
2445
+ /** Raw patch shape: field codes + optional $statuses / $properties subresource arrays. */
2446
+ type PatchMap = Record<string, unknown>;
2447
+ interface PropertyGridEditorProps {
2448
+ entity: Entity | undefined;
2449
+ /** Optional YAML-declared target whitelist (HandlerParam.Filter["targets"]). */
2450
+ filterTargets?: string;
2451
+ /** The current bulk selection. Used for same-value pre-fill per target. */
2452
+ selectedRows?: ReadonlyArray<Record<string, unknown>>;
2453
+ /** Current patch value (controlled). */
2454
+ value: PatchMap;
2455
+ /** Emitted whenever the user adds, changes, or removes a target. */
2456
+ onChange: (next: PatchMap) => void;
2457
+ }
2458
+ /** UI-only marker for cells whose selected rows disagree on the current value. */
2459
+ declare const MULTIPLE_VALUES: unique symbol;
2460
+ export declare function PropertyGridEditor({ entity, filterTargets, selectedRows, value, onChange }: PropertyGridEditorProps): import("react").JSX.Element;
2461
+ export declare function detectCommonValue(target: MassEditTarget, selectedRows: ReadonlyArray<Record<string, unknown>> | undefined): unknown;
2462
+ //#endregion
2463
+ //#region src/lib/field-classification.d.ts
2464
+ /**
2465
+ * isFieldReadable returns true when the caller can see the field's
2466
+ * value. Non-classified fields are always readable (no entry in
2467
+ * field_access). Classified fields are readable when field_access
2468
+ * marks read="granted".
2469
+ */
2470
+ export declare function isFieldReadable(entity: Pick<Entity, "field_access"> | undefined, fieldName: string): boolean;
2471
+ /**
2472
+ * isFieldWritable returns true when the caller can submit a new value
2473
+ * for the field. Form components disable input + show a lock badge
2474
+ * when this returns false. Non-classified fields are always writable
2475
+ * (gating happens via entity-level RBAC at the HTTP layer).
2476
+ */
2477
+ export declare function isFieldWritable(entity: Entity | undefined, fieldName: string): boolean;
2478
+ /**
2479
+ * fieldClassification returns the classification tier code gating
2480
+ * the field, or undefined when the field is non-classified. Lets
2481
+ * UI code render a tier badge without re-implementing the field_access
2482
+ * lookup.
2483
+ */
2484
+ export declare function fieldClassification(entity: Entity | undefined, fieldName: string): string | undefined;
2485
+ /**
2486
+ * fieldRequiredPermission returns the exact grant string an
2487
+ * administrator must add to a role to unlock the field for the
2488
+ * current caller. Returns undefined when the field is readable +
2489
+ * writable (no hint needed).
2490
+ */
2491
+ export declare function fieldRequiredPermission(entity: Entity | undefined, fieldName: string): string | undefined;
2492
+ /**
2493
+ * classificationTier returns the localized tier metadata for a field
2494
+ * (display name, description, audit_on_read flag, icon). Resolves
2495
+ * via the top-level schema.classifications map. Returns undefined when
2496
+ * the field is non-classified or the tier code is unknown in the
2497
+ * catalog (defense — points at a misconfigured registry).
2498
+ */
2499
+ export declare function classificationTier(schema: Schema | undefined, entity: Entity | undefined, fieldName: string): ClassificationTierDef | undefined;
2500
+ /**
2501
+ * isFieldSoDProtected reports whether the field's tier carries
2502
+ * sod_protected:true in the catalog. Used by UI to surface a stronger
2503
+ * visual treatment (e.g. red lock vs. grey lock) for tiers that
2504
+ * trigger the stricter SoD controls (superadmin-bypass-disabled
2505
+ * tenants, role self-assignment refusal, etc).
2506
+ */
2507
+ export declare function isFieldSoDProtected(schema: Schema | undefined, entity: Entity | undefined, fieldName: string): boolean;
2508
+ /**
2509
+ * fieldAccessInfo returns the raw FieldAccessInfo entry for a field,
2510
+ * or undefined when the field is non-classified. Convenience for
2511
+ * components that need the full structure (e.g. a tooltip rendering
2512
+ * both classification name + required_permission hint).
2513
+ */
2514
+ export declare function fieldAccessInfo(entity: Entity | undefined, fieldName: string): FieldAccessInfo | undefined;
2515
+ //#endregion
2516
+ export { type Action, ActionBatchError, type ActionExecuteRequest, type ActionExecuteResponse, type ActionItemError, type ActionItemSkip, type ActionListPage, type AgentChatPanelProps, type AgentContentBlock, type AgentConversation, type AgentConversationDrawerProps, type AgentConversationStatus, type AgentElicitFormProps, type AgentInvocationKind, type AgentInvocationStatus, type AgentMessage, type AgentPickerProps, type AgentRole, type AgentToolInvocation, type AgentTurn, type AgentTurnState, type AgentTurnStatus, type ApiError, App as Declarion, type ApprovalScope, type AuthShellProps, type AuthUser, type AvailableAgent, type AvatarProps, type BatchOp, type BatchOpResult, type BatchResponse, type BoolToggleProps, type BrandGlyphProps, type BreadcrumbsProps, type BtnKind, type BtnProps, type BtnSize, CURSOR_LANGUAGE_CHANGED, CURSOR_SEMANTICS_MISMATCH, type CanonicalLocation, type ChangePasswordDialogProps, type CheckProps, type CheckSetupResponse, type ChildRelation, type ChipProps, type ClassificationTierDef, type CommandAction, type CommandActionType, type CommandPaletteProps, type CropperOptions, type CropperResult, type Crumb, type CurrentScreen, type CursorActionDataResult, type CursorEntityDataParams, type CursorEntityDataResult, type CustomScreenProps, DEFAULT_RESPONSIVE_BREAKPOINTS, type DataResponse, type DateInputProps, type DraftEntry, type DropdownProps, DynamicIcon, type EnrichedRow, type Entity, type EntityField, type EnumDef, type FieldAccessInfo, type FieldLabelProps, type FileDraftScopeApi, type FileFieldDef, type FileFieldDisplay, type FileFieldMode, type FileWidget, type FileWidgetProps, type FilterNode, type FilterOp, type FilterRecord, type FilterRecordField, type FilterRecordFields, type FilterURLState, type HoverCardAlign, type HoverCardProps, type HydratedFile, Icon, type IconBtnProps, type IconDef, type IconName, type IconProps, type ImageCropper, type InfoTooltipProps, type InlineEditCellProps, type InlineEditKind, type InlineEditTrigger, type JsonFieldProps, type LanguageDef, type LayoutWidget, type LayoutWidgetProps, type ListMeta, type ListParams, type ListResponse, type LiveObjectResult, type LocalizedString, type LoginResponse, MANDATORY_LANGUAGE, MULTIPLE_VALUES, type MassEditTarget, type MassEditTargetKind, type MenuItemProps, type MultiSelectProps, NO_VALUE_OPS, type NavNode, OP_LABELS, type ObjectActionBarProps, type ObjectActionBarSlot, type ObjectActionSelection, OrderedMap, type PageStateSetter, type ParameterDef, type PasswordInputProps, type PatchMap, type PillProps, type PillSize, type PillTone, type PkValues, type PropertyDef, type PropertyValue, type PublicParam, type QEFieldProps, type QuickEditCellProps, type QuickPeekFieldSpec, type QuickPeekProps, type RailAreaItem, type RailProps, type RecordIdBadgeProps, type RefComboboxProps, type RefFieldItem, type RefFieldProps, type RefreshControlProps, type Refs, type ResponsiveBreakpoints, type ResponsiveMode, ResponsiveModeProvider, type ResponsiveViewport, type ReturnTarget, type RowFieldProps, type RowHelpers, type RunActionOptions, type Schema, type Screen, type ScreenBack, type ScrollAnchor, type ScrollableVirtualizer, type SectionBadge, type SectionCardProps, type SectionEmphasis, type SelectOption, type SelectProps, type SidebarProps, type StatusDef, type StatusGroupDef, type StatusInfo, type StructureDef, type TabItem, type TabStripProps, type TagsInputProps, type Tenant, type TenantChipProps, type TextAreaProps, type TextFn, type TextInputProps, type TextVars, type TooltipProps, type TopBarProps, type UploadCheck, type UploadProgress, type UploadedFile, type UseObjectActionsResult, type UseScreenBackOptions, type UseScreenTabOptions, type V2ListParams, type V2ListResponse, type V2Meta, type V2ParamInstance, type V2PropertyInstance, type V2StatusInstance, type ViewFieldProps, type ViewportCategory, buildActionBody, buildDetailHrefFromId, buildEntityDetailHref, buildRowDetailHref, countActiveFilters, deleteObject, executeAction$1 as executeAction, extractPkValues, fieldDisplayName, getIcon, getPrimaryKeyFields, hasOrGroups, isCursorStaleError, makeTextFn, parseFilterURLState, parseFiltersFromURL, pickLocalized, pkValuePartsToId, pkValuesFromId, pkValuesToDetailId, pkValuesToId, pluralText, resolveDetailRoute, resolveViewportCategory, restoreObject, setFiltersInURL, setIconRegistry, textWithNodes, useLocation, useNavigate, useParams, useResponsiveMode, useSearchParams };