@declarion/react 0.61.1 → 0.63.1

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-rgkewyMl.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-DruYOxKm.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-Dsf3I0xG.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-QN7Wp2W6.js → LayoutRenderer-DEHtYtzV.js} +965 -942
  26. package/dist-lib/{ListCardsBody-CNaZ0xwz.js → ListCardsBody-BAwFR3yO.js} +46 -52
  27. package/dist-lib/{MarkdownRenderer-BuO5hYJh.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-BV-aQbPy.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-BnmWukxk.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 +1588 -5117
  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-Dk1Ha5u3.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-nT5UypJX.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-Dwfyghtj.js → value-CDCeHgOv.js} +8 -22
  85. package/dist-lib/{action-dispatch-gWmOYjOP.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 +16 -23
  89. package/dist-lib/DetailAuditStrip-CSXZoy7v.js +0 -288
  90. package/dist-lib/DynamicIcon-DW5krHuX.js +0 -280
  91. package/dist-lib/RefreshControl-DO9rYcdq.js +0 -399
  92. package/dist-lib/SmartDetailPage.impl-DFIIx80b.js +0 -1565
  93. package/dist-lib/SmartListPage.impl-D694R32H.js +0 -3051
  94. package/dist-lib/SmartRecordListPage.impl-CB5cuQJV.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 -111
  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-BUxXuP4c.js +0 -158
  378. package/dist-lib/format-count-bXVfHzbI.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-nSeHd5si.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 -579
  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-0WBj7wT6.js +0 -7860
  482. package/dist-lib/useListQuery-C7dq_sEo.js +0 -103
  483. package/dist-lib/useOwnRefresh-q80kCMMh.js +0 -1167
  484. package/dist-lib/useProperties-CeGKtq7Q.js +0 -83
  485. package/dist-lib/useTabSearchMirror-CzNAj82Q.js +0 -175
  486. package/dist-lib/useText-BsedsJ-J.js +0 -952
  487. package/dist-lib/vite/fingerprint-plugin.d.ts +0 -44
@@ -0,0 +1,4378 @@
1
+ import { An as e, Bn as t, Cn as n, Ft as r, In as i, Ln as a, Mt as o, On as s, Q as c, Sn as l, U as u, Xn as d, Zn as f, _n as p, an as m, bn as h, cn as g, g as _, h as v, in as y, jn as b, kn as x, ln as S, o as C, s as w, tt as ee, wn as T, wt as E, xn as D } from "./useCurrentScreen--UovgvRj.js";
2
+ import { n as te, t as O } from "./Icons-lt-7lhYR.js";
3
+ import { n as k, r as A, t as j } from "./CopyButton-C0iEvaT1.js";
4
+ import { t as M } from "./Pill-D-wsfRhx.js";
5
+ import { n as N, t as P } from "./MenuItem-CfkVXPvC.js";
6
+ import { t as ne } from "./DynamicIcon-DuBSz6TZ.js";
7
+ import { Suspense as F, createContext as re, lazy as ie, useCallback as I, useContext as ae, useEffect as oe, useId as se, useLayoutEffect as ce, useMemo as L, useRef as R, useState as z } from "react";
8
+ import { Fragment as B, jsx as V, jsxs as H } from "react/jsx-runtime";
9
+ import { create as le } from "zustand";
10
+ import { useLocation as ue } from "react-router";
11
+ import { createPortal as de } from "react-dom";
12
+ //#region src/components/primitives/HoverCard.tsx
13
+ var fe = 400, pe = 150, me = 320, he = 240, ge = 4, _e = 4;
14
+ function ve({ content: e, children: t, width: n = me, align: r = "center", style: i }) {
15
+ let a = R(null), o = R(null), s = R(null), c = R(null), [l, u] = z(!1), [d, f] = z(null), [p, m] = z(!1), h = I(() => {
16
+ let e = a.current;
17
+ if (!e) return;
18
+ let t = e.getBoundingClientRect(), i = typeof window < "u" ? window.visualViewport : void 0, s = i?.width ?? (typeof window < "u" ? window.innerWidth : 0), c = i?.height ?? (typeof window < "u" ? window.innerHeight : 0), l = i?.offsetLeft ?? 0, u = i?.offsetTop ?? 0, d = Math.min(n, Math.max(160, s - 8)), p = o.current?.offsetHeight ?? he, m = u + c - t.bottom < p + 8 && t.top > p + 8 ? "above" : "below", h = m === "below" ? t.bottom + _e : t.top - _e - p, g;
19
+ g = r === "start" ? t.left : r === "end" ? t.right - d : t.left + t.width / 2 - d / 2;
20
+ let _ = l + ge, v = l + s - ge;
21
+ g + d > v && (g = Math.max(_, t.right - d)), g < _ && (g = _), f((e) => e && e.top === h && e.left === g && e.width === d && e.placement === m ? e : {
22
+ top: h,
23
+ left: g,
24
+ width: d,
25
+ placement: m
26
+ });
27
+ }, [r, n]), g = R(null), _ = I((e) => {
28
+ if (o.current = e, g.current &&= (g.current.disconnect(), null), e) {
29
+ if (typeof ResizeObserver < "u") {
30
+ let t = new ResizeObserver(() => {
31
+ h(), m(!0);
32
+ });
33
+ t.observe(e), g.current = t;
34
+ } else m(!0);
35
+ }
36
+ }, [h]), v = I(() => {
37
+ s.current !== null && (window.clearTimeout(s.current), s.current = null), c.current !== null && (window.clearTimeout(c.current), c.current = null);
38
+ }, []), y = () => {
39
+ c.current !== null && (window.clearTimeout(c.current), c.current = null), !(l || s.current !== null) && (s.current = window.setTimeout(() => {
40
+ s.current = null, u(!0);
41
+ }, fe));
42
+ }, b = I(() => {
43
+ v(), u(!0);
44
+ }, [v]), x = I(() => {
45
+ v(), u(!1);
46
+ }, [v]), S = () => {
47
+ s.current !== null && (window.clearTimeout(s.current), s.current = null), c.current === null && (c.current = window.setTimeout(() => {
48
+ c.current = null, u(!1);
49
+ }, pe));
50
+ };
51
+ oe(() => () => {
52
+ v(), g.current &&= (g.current.disconnect(), null);
53
+ }, [v]), oe(() => {
54
+ if (!l) m(!1);
55
+ else return h(), window.addEventListener("scroll", h, !0), window.addEventListener("resize", h), () => {
56
+ window.removeEventListener("scroll", h, !0), window.removeEventListener("resize", h);
57
+ };
58
+ }, [l, h]), oe(() => {
59
+ if (!l) return;
60
+ let e = (e) => {
61
+ let t = e.target;
62
+ t && (a.current?.contains(t) || o.current?.contains(t) || x());
63
+ };
64
+ return document.addEventListener("pointerdown", e), () => document.removeEventListener("pointerdown", e);
65
+ }, [x, l]);
66
+ let C = l && d ? de(/* @__PURE__ */ V("div", {
67
+ ref: _,
68
+ role: "tooltip",
69
+ onMouseEnter: () => {
70
+ c.current !== null && (window.clearTimeout(c.current), c.current = null);
71
+ },
72
+ onMouseLeave: S,
73
+ style: {
74
+ position: "fixed",
75
+ top: d.top,
76
+ left: d.left,
77
+ width: d.width,
78
+ maxHeight: he,
79
+ overflowY: "auto",
80
+ zIndex: 250,
81
+ background: "var(--surface)",
82
+ border: "1px solid var(--border)",
83
+ borderRadius: 8,
84
+ boxShadow: "var(--shadow-lg)",
85
+ padding: 10,
86
+ fontSize: 13,
87
+ color: "var(--text)",
88
+ visibility: p ? "visible" : "hidden",
89
+ pointerEvents: p ? "auto" : "none",
90
+ ...i
91
+ },
92
+ children: e
93
+ }), document.body) : null;
94
+ return /* @__PURE__ */ H(B, { children: [/* @__PURE__ */ V("span", {
95
+ ref: a,
96
+ tabIndex: 0,
97
+ "aria-haspopup": "dialog",
98
+ "aria-expanded": l,
99
+ onMouseEnter: y,
100
+ onMouseLeave: S,
101
+ onFocus: b,
102
+ onBlur: () => {
103
+ window.setTimeout(() => {
104
+ let e = document.activeElement;
105
+ e && (a.current?.contains(e) || o.current?.contains(e)) || u(!1);
106
+ }, 0);
107
+ },
108
+ onPointerDown: (e) => {
109
+ (e.pointerType === "touch" || e.pointerType === "pen") && (e.preventDefault(), l ? x() : b());
110
+ },
111
+ onKeyDown: (e) => {
112
+ e.key === "Escape" && (e.stopPropagation(), x());
113
+ },
114
+ style: {
115
+ display: "inline",
116
+ maxWidth: "100%",
117
+ outline: "none"
118
+ },
119
+ children: t
120
+ }), C] });
121
+ }
122
+ //#endregion
123
+ //#region src/components/primitives/Chip.tsx
124
+ function U({ icon: e, children: t, onRemove: n, removeLabel: r, onClick: i }) {
125
+ return /* @__PURE__ */ H("span", {
126
+ onClick: i,
127
+ style: {
128
+ display: "inline-flex",
129
+ alignItems: "center",
130
+ gap: 6,
131
+ height: 24,
132
+ padding: "0 8px",
133
+ borderRadius: 6,
134
+ background: "var(--surface-3)",
135
+ border: "1px solid var(--border)",
136
+ fontSize: 12,
137
+ color: "var(--text-2)",
138
+ cursor: i ? "pointer" : "default"
139
+ },
140
+ children: [
141
+ e,
142
+ t,
143
+ n && /* @__PURE__ */ V("button", {
144
+ type: "button",
145
+ "aria-label": r,
146
+ onClick: (e) => {
147
+ e.stopPropagation(), n();
148
+ },
149
+ style: {
150
+ background: "transparent",
151
+ border: 0,
152
+ padding: 0,
153
+ marginLeft: 2,
154
+ color: "var(--text-3)",
155
+ cursor: "pointer",
156
+ display: "flex"
157
+ },
158
+ children: /* @__PURE__ */ V(O.x, { size: 12 })
159
+ })
160
+ ]
161
+ });
162
+ }
163
+ //#endregion
164
+ //#region src/components/primitives/BoolToggle.tsx
165
+ function ye({ value: e, onChange: t, id: n, ariaLabelledby: r }) {
166
+ return /* @__PURE__ */ V("button", {
167
+ type: "button",
168
+ id: n,
169
+ "aria-labelledby": r,
170
+ role: "checkbox",
171
+ "aria-checked": !!e,
172
+ onClick: () => t && t(!e),
173
+ style: {
174
+ width: 32,
175
+ height: 18,
176
+ borderRadius: 999,
177
+ border: "none",
178
+ padding: 2,
179
+ position: "relative",
180
+ background: e ? "var(--accent)" : "var(--border-strong)",
181
+ cursor: "pointer",
182
+ transition: "background .15s"
183
+ },
184
+ children: /* @__PURE__ */ V("span", { style: {
185
+ display: "block",
186
+ width: 14,
187
+ height: 14,
188
+ borderRadius: 999,
189
+ background: "var(--accent-foreground)",
190
+ transform: e ? "translateX(14px)" : "translateX(0)",
191
+ transition: "transform .15s",
192
+ boxShadow: "0 1px 2px rgba(0,0,0,.15)"
193
+ } })
194
+ });
195
+ }
196
+ //#endregion
197
+ //#region src/components/primitives/Spinner.tsx
198
+ var be = "@keyframes spin{to{transform:rotate(360deg);}}";
199
+ function xe({ size: e = 14 }) {
200
+ return /* @__PURE__ */ H("svg", {
201
+ width: e,
202
+ height: e,
203
+ viewBox: "0 0 24 24",
204
+ style: { animation: "spin 0.8s linear infinite" },
205
+ children: [
206
+ /* @__PURE__ */ V("style", { children: be }),
207
+ /* @__PURE__ */ V("circle", {
208
+ cx: "12",
209
+ cy: "12",
210
+ r: "9",
211
+ stroke: "var(--border)",
212
+ strokeWidth: "2.5",
213
+ fill: "none"
214
+ }),
215
+ /* @__PURE__ */ V("path", {
216
+ d: "M12 3a9 9 0 0 1 9 9",
217
+ stroke: "var(--accent)",
218
+ strokeWidth: "2.5",
219
+ fill: "none",
220
+ strokeLinecap: "round"
221
+ })
222
+ ]
223
+ });
224
+ }
225
+ //#endregion
226
+ //#region src/components/primitives/Fields.tsx
227
+ var Se = ({ children: e, required: t, hint: n, htmlFor: r, id: i }) => /* @__PURE__ */ H("div", {
228
+ style: {
229
+ display: "flex",
230
+ alignItems: "center",
231
+ gap: 4,
232
+ fontSize: 11.5,
233
+ color: "var(--text-3)",
234
+ fontWeight: 500,
235
+ marginBottom: 4,
236
+ letterSpacing: "0.01em"
237
+ },
238
+ children: [
239
+ r ? /* @__PURE__ */ V("label", {
240
+ id: i,
241
+ htmlFor: r,
242
+ children: e
243
+ }) : /* @__PURE__ */ V("span", {
244
+ id: i,
245
+ children: e
246
+ }),
247
+ t && /* @__PURE__ */ V("span", {
248
+ "aria-hidden": "true",
249
+ style: { color: "var(--danger)" },
250
+ children: "*"
251
+ }),
252
+ n && /* @__PURE__ */ V("span", {
253
+ title: n,
254
+ style: {
255
+ cursor: "help",
256
+ color: "var(--text-4)",
257
+ display: "flex"
258
+ },
259
+ children: /* @__PURE__ */ V(O.info, { size: 11 })
260
+ })
261
+ ]
262
+ }), W = {
263
+ width: "100%",
264
+ height: "var(--control-height)",
265
+ padding: "0 10px",
266
+ fontSize: "var(--control-font-size)",
267
+ lineHeight: "var(--control-line-height)",
268
+ background: "var(--surface)",
269
+ color: "var(--text)",
270
+ border: "1px solid var(--border)",
271
+ borderRadius: 6,
272
+ outline: "none",
273
+ transition: "border-color .12s, box-shadow .12s"
274
+ };
275
+ function G({ value: e, onChange: t, placeholder: n, prefix: r, suffix: i, style: a, ...o }) {
276
+ let [s, c] = z(!1);
277
+ return /* @__PURE__ */ H("div", {
278
+ style: {
279
+ display: "flex",
280
+ alignItems: "center",
281
+ gap: 6,
282
+ ...W,
283
+ padding: r || i ? "0 8px" : "0 10px",
284
+ borderColor: s ? "var(--accent)" : "var(--border)",
285
+ boxShadow: s ? "0 0 0 3px var(--accent-ring)" : "none",
286
+ ...a
287
+ },
288
+ children: [
289
+ r && /* @__PURE__ */ V("span", {
290
+ style: {
291
+ color: "var(--text-3)",
292
+ display: "flex"
293
+ },
294
+ children: r
295
+ }),
296
+ /* @__PURE__ */ V("input", {
297
+ value: e ?? "",
298
+ onChange: (e) => t?.(e.target.value),
299
+ placeholder: n,
300
+ onFocus: () => c(!0),
301
+ onBlur: () => c(!1),
302
+ style: {
303
+ border: 0,
304
+ outline: 0,
305
+ background: "transparent",
306
+ flex: 1,
307
+ fontSize: "var(--control-font-size)",
308
+ color: "var(--text)",
309
+ padding: 0,
310
+ minWidth: 0
311
+ },
312
+ ...o
313
+ }),
314
+ i && /* @__PURE__ */ V("span", {
315
+ style: {
316
+ color: "var(--text-3)",
317
+ display: "flex"
318
+ },
319
+ children: i
320
+ })
321
+ ]
322
+ });
323
+ }
324
+ function Ce({ value: e, onChange: t, placeholder: n, rows: r = 4, fill: i, id: a, name: o, ariaRequired: s }) {
325
+ let [c, l] = z(!1), u = i ? {
326
+ flex: 1,
327
+ height: "100%",
328
+ minHeight: 0,
329
+ resize: "none"
330
+ } : {
331
+ height: "auto",
332
+ resize: "vertical"
333
+ };
334
+ return /* @__PURE__ */ V("textarea", {
335
+ id: a,
336
+ name: o,
337
+ "aria-required": s || void 0,
338
+ value: e ?? "",
339
+ onChange: (e) => t?.(e.target.value),
340
+ placeholder: n,
341
+ rows: i ? void 0 : r,
342
+ onFocus: () => l(!0),
343
+ onBlur: () => l(!1),
344
+ style: {
345
+ ...W,
346
+ padding: "8px 10px",
347
+ lineHeight: 1.5,
348
+ ...u,
349
+ borderColor: c ? "var(--accent)" : "var(--border)",
350
+ boxShadow: c ? "0 0 0 3px var(--accent-ring)" : "none",
351
+ fontFamily: "inherit"
352
+ }
353
+ });
354
+ }
355
+ var we = 20, Te = 100;
356
+ function Ee(e) {
357
+ return typeof e.label == "string" || typeof e.label == "number" ? String(e.label) : e.value;
358
+ }
359
+ function K({ value: e, options: t, onChange: n, placeholder: r, onSearchChange: i, ...a }) {
360
+ let o = E(), [s, c] = z(!1), [l, u] = z(""), d = R(null), f = t.find((t) => !t.heading && !t.divider && t.value === e), p = t.filter((e) => !e.heading && !e.divider).length, m = !!i, h = m || p > we, g = (e) => {
361
+ u(e), i?.(e);
362
+ }, _ = L(() => {
363
+ if (m) return t.slice(0, Te);
364
+ let e = l.trim().toLowerCase();
365
+ return e ? t.filter((t) => !t.heading && !t.divider && Ee(t).toLowerCase().includes(e)).slice(0, Te) : t.slice(0, Te);
366
+ }, [
367
+ t,
368
+ l,
369
+ m
370
+ ]);
371
+ return /* @__PURE__ */ H(B, { children: [/* @__PURE__ */ H("button", {
372
+ ...a,
373
+ type: "button",
374
+ ref: d,
375
+ "aria-haspopup": "listbox",
376
+ "aria-expanded": s,
377
+ onClick: () => {
378
+ c((e) => {
379
+ let t = !e;
380
+ return t && g(""), t;
381
+ });
382
+ },
383
+ style: {
384
+ ...W,
385
+ display: "flex",
386
+ alignItems: "center",
387
+ justifyContent: "space-between",
388
+ textAlign: "left",
389
+ cursor: "pointer",
390
+ ...a.style,
391
+ color: f ? "var(--text)" : "var(--text-placeholder)"
392
+ },
393
+ children: [/* @__PURE__ */ V("span", {
394
+ style: {
395
+ display: "flex",
396
+ alignItems: "center",
397
+ gap: 6,
398
+ overflow: "hidden",
399
+ textOverflow: "ellipsis",
400
+ whiteSpace: "nowrap"
401
+ },
402
+ children: f ? f.label : r ?? o("control.select.placeholder", "Select…")
403
+ }), /* @__PURE__ */ V(O.down, {
404
+ size: 12,
405
+ cls: "",
406
+ style: {
407
+ color: "var(--text-3)",
408
+ flexShrink: 0
409
+ }
410
+ })]
411
+ }), /* @__PURE__ */ H(N, {
412
+ open: s,
413
+ anchor: d.current,
414
+ onClose: () => c(!1),
415
+ width: d.current?.offsetWidth,
416
+ style: {
417
+ maxHeight: "min(360px, calc(var(--app-height) - 24px))",
418
+ overflowY: "auto"
419
+ },
420
+ children: [
421
+ h && /* @__PURE__ */ V("div", {
422
+ style: {
423
+ padding: 6,
424
+ position: "sticky",
425
+ top: -4,
426
+ background: "var(--surface)",
427
+ zIndex: 1
428
+ },
429
+ children: /* @__PURE__ */ V(G, {
430
+ value: l,
431
+ onChange: g,
432
+ placeholder: o("control.search", "Search…"),
433
+ prefix: /* @__PURE__ */ V(O.search, { size: 12 }),
434
+ autoFocus: !0
435
+ })
436
+ }),
437
+ _.map((t, r) => t.divider ? /* @__PURE__ */ V("div", { style: {
438
+ borderTop: "1px solid var(--divider)",
439
+ margin: "4px 0"
440
+ } }, `divider-${r}`) : t.heading ? /* @__PURE__ */ V("div", {
441
+ style: {
442
+ padding: "6px 10px 2px",
443
+ fontSize: 10.5,
444
+ fontWeight: 600,
445
+ color: "var(--text-3)",
446
+ textTransform: "uppercase",
447
+ letterSpacing: "0.06em"
448
+ },
449
+ children: t.label
450
+ }, `heading-${r}`) : /* @__PURE__ */ V(P, {
451
+ onClick: () => {
452
+ n(t.value), c(!1);
453
+ },
454
+ active: t.value === e,
455
+ children: t.label
456
+ }, t.value)),
457
+ _.length === 0 && /* @__PURE__ */ V("div", {
458
+ style: {
459
+ padding: "8px 10px",
460
+ fontSize: 12.5,
461
+ color: "var(--text-3)"
462
+ },
463
+ children: o("control.no_matches", "No matches")
464
+ })
465
+ ]
466
+ })] });
467
+ }
468
+ function De({ value: e = [], options: t, onChange: n, placeholder: r, ...i }) {
469
+ let a = E(), [o, s] = z(!1), [c, l] = z(""), u = R(null), d = t.filter((e) => !e.heading && !e.divider), f = d.length > we, p = e.map((e) => d.find((t) => t.value === e) ?? {
470
+ value: e,
471
+ label: e
472
+ }), m = L(() => {
473
+ let e = c.trim().toLowerCase();
474
+ return e ? t.filter((t) => !t.heading && !t.divider && Ee(t).toLowerCase().includes(e)).slice(0, Te) : t.slice(0, Te);
475
+ }, [t, c]), h = (t) => n(e.includes(t) ? e.filter((e) => e !== t) : [...e, t]);
476
+ return /* @__PURE__ */ H(B, { children: [/* @__PURE__ */ H("button", {
477
+ ...i,
478
+ type: "button",
479
+ ref: u,
480
+ "aria-haspopup": "listbox",
481
+ "aria-expanded": o,
482
+ onClick: () => {
483
+ s((e) => {
484
+ let t = !e;
485
+ return t && l(""), t;
486
+ });
487
+ },
488
+ style: {
489
+ ...W,
490
+ height: "auto",
491
+ minHeight: "var(--control-height)",
492
+ display: "flex",
493
+ alignItems: "center",
494
+ flexWrap: "wrap",
495
+ gap: 4,
496
+ padding: p.length ? "3px 8px" : "0 10px",
497
+ textAlign: "left",
498
+ cursor: "pointer",
499
+ ...i.style
500
+ },
501
+ children: [p.length === 0 ? /* @__PURE__ */ V("span", {
502
+ style: {
503
+ flex: 1,
504
+ color: "var(--text-placeholder)"
505
+ },
506
+ children: r ?? a("control.select.placeholder", "Select…")
507
+ }) : p.map((e) => /* @__PURE__ */ H("span", {
508
+ style: {
509
+ display: "inline-flex",
510
+ alignItems: "center",
511
+ gap: 4,
512
+ height: 22,
513
+ padding: "0 4px 0 8px",
514
+ borderRadius: 6,
515
+ background: "var(--surface-3)",
516
+ border: "1px solid var(--border)",
517
+ fontSize: 12,
518
+ color: "var(--text-2)",
519
+ maxWidth: "100%"
520
+ },
521
+ children: [/* @__PURE__ */ V("span", {
522
+ style: {
523
+ overflow: "hidden",
524
+ textOverflow: "ellipsis",
525
+ whiteSpace: "nowrap"
526
+ },
527
+ children: e.label
528
+ }), /* @__PURE__ */ V("span", {
529
+ role: "button",
530
+ "aria-label": a("control.remove_value", "Remove {value}", { value: Ee(e) }),
531
+ onClick: (t) => {
532
+ t.stopPropagation(), h(e.value);
533
+ },
534
+ style: {
535
+ display: "flex",
536
+ color: "var(--text-3)",
537
+ cursor: "pointer",
538
+ flexShrink: 0
539
+ },
540
+ children: /* @__PURE__ */ V(O.x, { size: 12 })
541
+ })]
542
+ }, e.value)), /* @__PURE__ */ V(O.down, {
543
+ size: 12,
544
+ cls: "",
545
+ style: {
546
+ color: "var(--text-3)",
547
+ marginLeft: "auto",
548
+ flexShrink: 0
549
+ }
550
+ })]
551
+ }), /* @__PURE__ */ H(N, {
552
+ open: o,
553
+ anchor: u.current,
554
+ onClose: () => s(!1),
555
+ width: u.current?.offsetWidth,
556
+ style: {
557
+ maxHeight: "min(360px, calc(var(--app-height) - 24px))",
558
+ overflowY: "auto"
559
+ },
560
+ children: [
561
+ f && /* @__PURE__ */ V("div", {
562
+ style: {
563
+ padding: 6,
564
+ position: "sticky",
565
+ top: -4,
566
+ background: "var(--surface)",
567
+ zIndex: 1
568
+ },
569
+ children: /* @__PURE__ */ V(G, {
570
+ value: c,
571
+ onChange: l,
572
+ placeholder: a("control.search", "Search…"),
573
+ prefix: /* @__PURE__ */ V(O.search, { size: 12 }),
574
+ autoFocus: !0
575
+ })
576
+ }),
577
+ m.map((t, n) => {
578
+ if (t.divider) return /* @__PURE__ */ V("div", { style: {
579
+ borderTop: "1px solid var(--divider)",
580
+ margin: "4px 0"
581
+ } }, `divider-${n}`);
582
+ if (t.heading) return /* @__PURE__ */ V("div", {
583
+ style: {
584
+ padding: "6px 10px 2px",
585
+ fontSize: 10.5,
586
+ fontWeight: 600,
587
+ color: "var(--text-3)",
588
+ textTransform: "uppercase",
589
+ letterSpacing: "0.06em"
590
+ },
591
+ children: t.label
592
+ }, `heading-${n}`);
593
+ let r = e.includes(t.value);
594
+ return /* @__PURE__ */ V(P, {
595
+ active: r,
596
+ icon: r ? /* @__PURE__ */ V(O.check, { size: 13 }) : /* @__PURE__ */ V("span", { style: {
597
+ display: "inline-block",
598
+ width: 13
599
+ } }),
600
+ onClick: () => h(t.value),
601
+ children: t.label
602
+ }, t.value);
603
+ }),
604
+ m.length === 0 && /* @__PURE__ */ V("div", {
605
+ style: {
606
+ padding: "8px 10px",
607
+ fontSize: 12.5,
608
+ color: "var(--text-3)"
609
+ },
610
+ children: a("control.no_matches", "No matches")
611
+ })
612
+ ]
613
+ })] });
614
+ }
615
+ function Oe({ value: e, onChange: t }) {
616
+ let n = E();
617
+ return /* @__PURE__ */ V(G, {
618
+ value: e || "",
619
+ onChange: t,
620
+ placeholder: n("control.date.placeholder", "YYYY-MM-DD HH:mm"),
621
+ prefix: /* @__PURE__ */ V(O.calendar, { size: 13 })
622
+ });
623
+ }
624
+ function ke(e) {
625
+ if (!e) return 0;
626
+ let t = 0;
627
+ return e.length >= 8 && t++, e.length >= 12 && t++, /[A-Z]/.test(e) && /[a-z]/.test(e) && t++, /\d/.test(e) && t++, /[^A-Za-z0-9]/.test(e) && t++, Math.min(4, t);
628
+ }
629
+ var Ae = [
630
+ (e) => e("control.password.strength.too_short", "Too short"),
631
+ (e) => e("control.password.strength.weak", "Weak"),
632
+ (e) => e("control.password.strength.fair", "Fair"),
633
+ (e) => e("control.password.strength.good", "Good"),
634
+ (e) => e("control.password.strength.strong", "Strong")
635
+ ], je = [
636
+ "var(--danger)",
637
+ "var(--danger)",
638
+ "var(--warning, #B45309)",
639
+ "var(--accent)",
640
+ "var(--success, #3FBF8F)"
641
+ ];
642
+ function Me({ value: e, onChange: t, placeholder: n, showStrength: r, id: i, name: a, ariaRequired: o }) {
643
+ let s = E(), [c, l] = z(!1), u = e || "", d = ke(u);
644
+ return /* @__PURE__ */ H("div", { children: [/* @__PURE__ */ V(G, {
645
+ id: i,
646
+ name: a,
647
+ "aria-required": o || void 0,
648
+ type: c ? "text" : "password",
649
+ value: u,
650
+ onChange: t,
651
+ placeholder: n ?? s("control.password.placeholder", "Enter password"),
652
+ suffix: /* @__PURE__ */ V("button", {
653
+ type: "button",
654
+ "aria-label": c ? s("control.password.hide", "Hide password") : s("control.password.show", "Show password"),
655
+ style: {
656
+ background: "none",
657
+ border: 0,
658
+ padding: 0,
659
+ cursor: "pointer",
660
+ color: "var(--text-3)",
661
+ display: "flex"
662
+ },
663
+ onClick: () => l((e) => !e),
664
+ children: V(c ? O.eyeOff : O.eye, { size: 14 })
665
+ })
666
+ }), r && /* @__PURE__ */ H("div", {
667
+ style: {
668
+ marginTop: 6,
669
+ display: "flex",
670
+ alignItems: "center",
671
+ gap: 8
672
+ },
673
+ children: [/* @__PURE__ */ V("div", {
674
+ style: {
675
+ display: "flex",
676
+ gap: 3,
677
+ flex: 1
678
+ },
679
+ children: [
680
+ 0,
681
+ 1,
682
+ 2,
683
+ 3
684
+ ].map((e) => /* @__PURE__ */ V("span", { style: {
685
+ flex: 1,
686
+ height: 3,
687
+ borderRadius: 999,
688
+ background: e < d ? je[d] : "var(--surface-3)",
689
+ transition: "background .15s"
690
+ } }, e))
691
+ }), /* @__PURE__ */ V("span", {
692
+ style: {
693
+ fontSize: 10.5,
694
+ color: "var(--text-3)",
695
+ minWidth: 54,
696
+ textAlign: "right"
697
+ },
698
+ children: u ? Ae[d](s) : ""
699
+ })]
700
+ })] });
701
+ }
702
+ function Ne({ value: e = [], onChange: t }) {
703
+ let n = E(), [r, i] = z("");
704
+ return /* @__PURE__ */ H("div", {
705
+ style: {
706
+ ...W,
707
+ height: "auto",
708
+ minHeight: "var(--control-height)",
709
+ display: "flex",
710
+ flexWrap: "wrap",
711
+ gap: 4,
712
+ padding: "4px 6px",
713
+ alignItems: "center"
714
+ },
715
+ children: [e.map((n, r) => /* @__PURE__ */ V(U, {
716
+ tone: "slate",
717
+ onRemove: () => t(e.filter((e, t) => t !== r)),
718
+ children: n
719
+ }, r)), /* @__PURE__ */ V("input", {
720
+ value: r,
721
+ onChange: (e) => i(e.target.value),
722
+ onKeyDown: (n) => {
723
+ n.key === "Enter" && r.trim() && (t([...e, r.trim()]), i(""), n.preventDefault()), n.key === "Backspace" && !r && e.length && t(e.slice(0, -1));
724
+ },
725
+ placeholder: e.length ? "" : n("control.tags.placeholder", "Add tag… (Enter)"),
726
+ style: {
727
+ border: 0,
728
+ outline: 0,
729
+ flex: 1,
730
+ minWidth: 80,
731
+ background: "transparent",
732
+ fontSize: "var(--control-font-size)",
733
+ padding: "4px 2px"
734
+ }
735
+ })]
736
+ });
737
+ }
738
+ var Pe = "JSON";
739
+ function Fe({ value: e, onChange: t }) {
740
+ let n = E();
741
+ return /* @__PURE__ */ H("div", {
742
+ style: {
743
+ border: "1px solid var(--border)",
744
+ borderRadius: 6,
745
+ background: "var(--surface-2)",
746
+ overflow: "hidden"
747
+ },
748
+ children: [/* @__PURE__ */ H("div", {
749
+ style: {
750
+ padding: "6px 10px",
751
+ background: "var(--surface-3)",
752
+ borderBottom: "1px solid var(--border)",
753
+ display: "flex",
754
+ alignItems: "center",
755
+ gap: 8
756
+ },
757
+ children: [
758
+ /* @__PURE__ */ V("span", {
759
+ className: "mono",
760
+ style: {
761
+ fontSize: 10.5,
762
+ color: "var(--text-3)",
763
+ textTransform: "uppercase",
764
+ letterSpacing: "0.04em"
765
+ },
766
+ children: Pe
767
+ }),
768
+ /* @__PURE__ */ V("span", { style: { flex: 1 } }),
769
+ /* @__PURE__ */ V(A, {
770
+ size: "xs",
771
+ kind: "ghost",
772
+ children: n("control.json.format", "Format")
773
+ }),
774
+ /* @__PURE__ */ V(A, {
775
+ size: "xs",
776
+ kind: "ghost",
777
+ children: n("control.json.validate", "Validate")
778
+ })
779
+ ]
780
+ }), /* @__PURE__ */ V("textarea", {
781
+ className: "mono",
782
+ value: e || "",
783
+ onChange: (e) => t?.(e.target.value),
784
+ style: {
785
+ width: "100%",
786
+ minHeight: 140,
787
+ padding: "10px 12px",
788
+ fontSize: "var(--control-font-size)",
789
+ lineHeight: 1.6,
790
+ background: "transparent",
791
+ border: 0,
792
+ outline: 0,
793
+ resize: "vertical",
794
+ color: "var(--text)"
795
+ }
796
+ })]
797
+ });
798
+ }
799
+ function Ie({ value: e, entity: t = "company", onChange: n, items: r = [], id: i, ariaLabelledby: a, ariaRequired: o }) {
800
+ let s = E(), [c, l] = z(!1), u = R(null);
801
+ return /* @__PURE__ */ H(B, { children: [/* @__PURE__ */ H("button", {
802
+ type: "button",
803
+ id: i,
804
+ "aria-labelledby": a,
805
+ "aria-required": o || void 0,
806
+ ref: u,
807
+ onClick: () => l(!0),
808
+ style: {
809
+ ...W,
810
+ display: "flex",
811
+ alignItems: "center",
812
+ justifyContent: "space-between",
813
+ textAlign: "left",
814
+ cursor: "pointer"
815
+ },
816
+ children: [/* @__PURE__ */ H("span", {
817
+ style: {
818
+ display: "flex",
819
+ alignItems: "center",
820
+ gap: 8,
821
+ overflow: "hidden"
822
+ },
823
+ children: [/* @__PURE__ */ V("span", {
824
+ style: {
825
+ width: 18,
826
+ height: 18,
827
+ borderRadius: 4,
828
+ background: "var(--accent-soft)",
829
+ color: "var(--accent)",
830
+ display: "inline-flex",
831
+ alignItems: "center",
832
+ justifyContent: "center"
833
+ },
834
+ children: /* @__PURE__ */ V(O.link, { size: 11 })
835
+ }), /* @__PURE__ */ V("span", {
836
+ style: { color: e ? "var(--accent)" : "var(--text-placeholder)" },
837
+ children: e || s("control.ref.link_to", "Link to {entity}…", { entity: t })
838
+ })]
839
+ }), /* @__PURE__ */ V(O.search, {
840
+ size: 12,
841
+ cls: "",
842
+ style: { color: "var(--text-3)" }
843
+ })]
844
+ }), /* @__PURE__ */ H(N, {
845
+ open: c,
846
+ anchor: u.current,
847
+ onClose: () => l(!1),
848
+ width: u.current?.offsetWidth,
849
+ children: [/* @__PURE__ */ V("div", {
850
+ style: { padding: 4 },
851
+ children: /* @__PURE__ */ V(G, {
852
+ placeholder: s("control.ref.search", "Search {entity}…", { entity: t }),
853
+ prefix: /* @__PURE__ */ V(O.search, { size: 12 }),
854
+ style: { marginBottom: 4 }
855
+ })
856
+ }), r.slice(0, 6).map((e) => /* @__PURE__ */ V(P, {
857
+ icon: /* @__PURE__ */ V(O.building, { size: 13 }),
858
+ onClick: () => {
859
+ n?.(e.name), l(!1);
860
+ },
861
+ children: e.name
862
+ }, e.id))]
863
+ })] });
864
+ }
865
+ function Le({ label: e, children: t, mono: n, wide: r, empty: i }) {
866
+ return /* @__PURE__ */ H("div", {
867
+ style: {
868
+ display: "flex",
869
+ flexDirection: r ? "column" : "row",
870
+ gap: r ? 4 : 16,
871
+ minHeight: 24,
872
+ alignItems: "baseline"
873
+ },
874
+ children: [/* @__PURE__ */ V("div", {
875
+ style: {
876
+ width: r ? "auto" : 140,
877
+ flexShrink: 0,
878
+ fontSize: 11.5,
879
+ color: "var(--text-3)",
880
+ fontWeight: 500,
881
+ letterSpacing: "0.01em"
882
+ },
883
+ children: e
884
+ }), /* @__PURE__ */ V("div", {
885
+ className: n ? "mono num" : "num",
886
+ style: {
887
+ flex: 1,
888
+ fontSize: 12.5,
889
+ color: i ? "var(--text-4)" : "var(--text)",
890
+ lineHeight: "22px",
891
+ minWidth: 0,
892
+ wordBreak: "break-word"
893
+ },
894
+ children: i ? "—" : t
895
+ })]
896
+ });
897
+ }
898
+ function Re({ value: e, onChange: t, type: n = "text", options: r }) {
899
+ let i = E(), [a, o] = z(!1), [s, c] = z(e), l = () => {
900
+ s !== void 0 && t?.(s), o(!1);
901
+ }, u = () => {
902
+ c(e), o(!1);
903
+ };
904
+ return a ? /* @__PURE__ */ H("div", {
905
+ style: {
906
+ display: "flex",
907
+ alignItems: "center",
908
+ gap: 4
909
+ },
910
+ onKeyDown: (e) => {
911
+ e.key === "Enter" && l(), e.key === "Escape" && u();
912
+ },
913
+ children: [n === "select" ? /* @__PURE__ */ V(K, {
914
+ value: s,
915
+ options: r || [],
916
+ onChange: (e) => {
917
+ c(e), t?.(e), o(!1);
918
+ }
919
+ }) : n === "bool" ? /* @__PURE__ */ V(ye, {
920
+ value: s === "true",
921
+ onChange: (e) => {
922
+ let n = String(e);
923
+ c(n), t?.(n), o(!1);
924
+ }
925
+ }) : /* @__PURE__ */ V(G, {
926
+ value: s ?? "",
927
+ onChange: c,
928
+ autoFocus: !0
929
+ }), n !== "select" && n !== "bool" && /* @__PURE__ */ H(B, { children: [/* @__PURE__ */ V(k, {
930
+ size: 24,
931
+ icon: /* @__PURE__ */ V(O.check, { size: 13 }),
932
+ onClick: l,
933
+ title: i("dialog.save", "Save")
934
+ }), /* @__PURE__ */ V(k, {
935
+ size: 24,
936
+ icon: /* @__PURE__ */ V(O.x, { size: 13 }),
937
+ onClick: u,
938
+ title: i("dialog.cancel", "Cancel")
939
+ })] })]
940
+ }) : /* @__PURE__ */ V("div", {
941
+ onClick: () => o(!0),
942
+ style: {
943
+ padding: "4px 6px",
944
+ margin: "-4px -6px",
945
+ borderRadius: 4,
946
+ cursor: "text",
947
+ border: "1px dashed transparent",
948
+ minHeight: 24,
949
+ display: "flex",
950
+ alignItems: "center",
951
+ gap: 4
952
+ },
953
+ onMouseEnter: (e) => {
954
+ e.currentTarget.style.borderColor = "var(--border)";
955
+ },
956
+ onMouseLeave: (e) => {
957
+ e.currentTarget.style.borderColor = "transparent";
958
+ },
959
+ children: e || /* @__PURE__ */ V("span", {
960
+ style: { color: "var(--text-4)" },
961
+ children: i("control.click_to_edit", "Click to edit")
962
+ })
963
+ });
964
+ }
965
+ //#endregion
966
+ //#region src/stores/preferences.ts
967
+ var ze = {
968
+ colorScheme: "light",
969
+ accent: "violet",
970
+ density: "compact",
971
+ sidebar: "wide",
972
+ tabsPosition: "top",
973
+ tabsMaxOpen: 12,
974
+ tabsPersist: !0,
975
+ radius: 7,
976
+ zebra: !0,
977
+ aiSurface: "both",
978
+ toastPosition: "bottom-right"
979
+ }, Be = ["light", "dark"], Ve = [
980
+ "violet",
981
+ "blue",
982
+ "teal",
983
+ "amber",
984
+ "rose"
985
+ ], He = [
986
+ "compact",
987
+ "comfortable",
988
+ "cozy"
989
+ ], Ue = ["wide", "collapsed"], We = ["top", "bottom"], Ge = [
990
+ "command",
991
+ "panel",
992
+ "both",
993
+ "off"
994
+ ], Ke = [
995
+ "top-left",
996
+ "top-center",
997
+ "top-right",
998
+ "bottom-left",
999
+ "bottom-center",
1000
+ "bottom-right"
1001
+ ];
1002
+ function q(e, t) {
1003
+ return typeof t == "string" && e.includes(t) ? t : void 0;
1004
+ }
1005
+ function qe(e) {
1006
+ let t = {}, n = q(Be, e.colorScheme);
1007
+ n && (t.colorScheme = n);
1008
+ let r = q(Ve, e.accent);
1009
+ r && (t.accent = r);
1010
+ let i = q(He, e.density);
1011
+ i && (t.density = i);
1012
+ let a = q(Ue, e.sidebar);
1013
+ a && (t.sidebar = a);
1014
+ let o = q(We, e.tabsPosition);
1015
+ o && (t.tabsPosition = o);
1016
+ let s = q(Ge, e.aiSurface);
1017
+ s && (t.aiSurface = s);
1018
+ let c = q(Ke, e.toastPosition);
1019
+ return c && (t.toastPosition = c), typeof e.tabsMaxOpen == "number" && e.tabsMaxOpen > 0 && (t.tabsMaxOpen = e.tabsMaxOpen), typeof e.radius == "number" && e.radius >= 0 && e.radius <= 32 && (t.radius = e.radius), typeof e.zebra == "boolean" && (t.zebra = e.zebra), typeof e.tabsPersist == "boolean" && (t.tabsPersist = e.tabsPersist), t;
1020
+ }
1021
+ var Je = ["declarion-preferences", "declarion-appearance"];
1022
+ function Ye() {
1023
+ if (typeof window < "u") try {
1024
+ for (let e of Je) localStorage.removeItem(e);
1025
+ } catch {}
1026
+ }
1027
+ function J(e) {
1028
+ if (typeof document > "u") return;
1029
+ let t = document.documentElement;
1030
+ t.dataset.colorScheme = e.colorScheme, t.dataset.accent = e.accent, t.dataset.density = e.density, t.dataset.sidebar = e.sidebar, t.dataset.tabbar = e.tabsPosition, t.dataset.zebra = e.zebra ? "on" : "off", t.dataset.ai = e.aiSurface, t.style.setProperty("--radius-md", `${e.radius}px`), t.style.setProperty("--radius-lg", `${e.radius + 3}px`);
1031
+ }
1032
+ function Xe(e) {
1033
+ return {
1034
+ colorScheme: e.color_scheme,
1035
+ accent: e.accent,
1036
+ density: e.density,
1037
+ sidebar: e.sidebar,
1038
+ tabsPosition: e.tabs_position,
1039
+ tabsMaxOpen: e.tabs_max_open,
1040
+ tabsPersist: e.tabs_persist,
1041
+ radius: e.radius,
1042
+ zebra: e.zebra_rows,
1043
+ aiSurface: e.ai_surface,
1044
+ toastPosition: e.toast_position
1045
+ };
1046
+ }
1047
+ Ye();
1048
+ var Ze = /* @__PURE__ */ new Set(), Qe = { ...ze };
1049
+ typeof window < "u" && J(Qe);
1050
+ var $e = le((e, t) => ({
1051
+ ...Qe,
1052
+ set: (n, r) => {
1053
+ let i = qe({ [n]: r });
1054
+ i[n] !== void 0 && (J({
1055
+ ...t(),
1056
+ ...i
1057
+ }), Ze.add(n), e(i));
1058
+ },
1059
+ setMany: (n) => {
1060
+ let r = qe(n);
1061
+ if (Object.keys(r).length) {
1062
+ J({
1063
+ ...t(),
1064
+ ...r
1065
+ });
1066
+ for (let e of Object.keys(r)) Ze.add(e);
1067
+ e(r);
1068
+ }
1069
+ },
1070
+ hydrateFromBranding: (t) => {
1071
+ if (!t) return;
1072
+ let n = Xe(t), r = {};
1073
+ for (let [e, t] of Object.entries(n)) Ze.has(e) || t !== void 0 && (r[e] = t);
1074
+ let i = qe(r);
1075
+ Object.keys(i).length && (J({
1076
+ ...$e.getState(),
1077
+ ...i
1078
+ }), e(i));
1079
+ },
1080
+ resetToDefaults: (t) => {
1081
+ Ze.clear(), Ye();
1082
+ let n = t ? qe(Xe(t)) : {}, r = {
1083
+ ...ze,
1084
+ ...n
1085
+ };
1086
+ J(r), e(r);
1087
+ }
1088
+ })), et = ["/login", "/signup"];
1089
+ function tt(e) {
1090
+ return et.includes(e);
1091
+ }
1092
+ function nt(e) {
1093
+ return typeof e == "string" && e.startsWith("/") && !e.startsWith("//");
1094
+ }
1095
+ var rt = 4096;
1096
+ function it(e) {
1097
+ return typeof e == "string" && e.length <= rt;
1098
+ }
1099
+ function at(e) {
1100
+ if (e === null) return null;
1101
+ if (e === void 0 || typeof e != "object" || Array.isArray(e)) return;
1102
+ let t = e;
1103
+ if (!nt(t.pathname) || t.pathname.length > rt || t.pathname.includes("?") || t.pathname.includes("#")) return;
1104
+ let n = { pathname: t.pathname };
1105
+ if (t.search !== void 0) {
1106
+ if (!it(t.search) || t.search.startsWith("?")) return;
1107
+ t.search && (n.search = t.search);
1108
+ }
1109
+ if (t.hash !== void 0) {
1110
+ if (!it(t.hash) || t.hash && !t.hash.startsWith("#")) return;
1111
+ t.hash && (n.hash = t.hash);
1112
+ }
1113
+ for (let e of [
1114
+ "tabId",
1115
+ "title",
1116
+ "icon",
1117
+ "screen"
1118
+ ]) if (t[e] !== void 0) {
1119
+ if (!it(t[e])) return;
1120
+ t[e] && (n[e] = t[e]);
1121
+ }
1122
+ return n;
1123
+ }
1124
+ function ot(e) {
1125
+ return e.closable !== !1;
1126
+ }
1127
+ function st(e, t, n, r) {
1128
+ if (n === "all") return e.filter(ot).map((e) => e.id);
1129
+ let i = r ?? t;
1130
+ if (!i) return [];
1131
+ let a = e.findIndex((e) => e.id === i);
1132
+ return a === -1 ? [] : n === "current" ? ot(e[a]) ? [e[a].id] : [] : n === "others" ? e.filter((e, t) => t !== a && ot(e)).map((e) => e.id) : e.slice(a + 1).filter(ot).map((e) => e.id);
1133
+ }
1134
+ var ct = null, lt = null;
1135
+ function ut(e, t) {
1136
+ return `declarion::${e}::${t}::tabs`;
1137
+ }
1138
+ function dt() {
1139
+ return !ct || !lt ? null : ut(ct, lt);
1140
+ }
1141
+ function ft({ dirty: e, ...t }) {
1142
+ return t;
1143
+ }
1144
+ function pt(e) {
1145
+ let t;
1146
+ try {
1147
+ t = JSON.parse(e);
1148
+ } catch {
1149
+ return null;
1150
+ }
1151
+ if (typeof t != "object" || !t) return null;
1152
+ let n = t;
1153
+ return Array.isArray(n.tabs) ? {
1154
+ tabs: n.tabs.filter((e) => typeof e == "object" && !!e && typeof e.id == "string" && typeof e.pathname == "string").map((e) => {
1155
+ let t = ft(e), n = at(t.returnTo);
1156
+ if (n === void 0) {
1157
+ let { returnTo: e, ...n } = t;
1158
+ return n;
1159
+ }
1160
+ return {
1161
+ ...t,
1162
+ returnTo: n
1163
+ };
1164
+ }),
1165
+ activeTabId: typeof n.activeTabId == "string" ? n.activeTabId : null
1166
+ } : null;
1167
+ }
1168
+ function mt(e, t) {
1169
+ if (typeof window > "u") return null;
1170
+ let n = localStorage.getItem(ut(e, t));
1171
+ if (!n) return null;
1172
+ let r = pt(n);
1173
+ if (!r) return null;
1174
+ let i = r.tabs.find((e) => e.id === r.activeTabId), a = i?.pathname;
1175
+ if (nt(a)) {
1176
+ let e = typeof i?.search == "string" ? i.search : "", t = e.startsWith("?") ? e.slice(1) : e;
1177
+ return t ? `${a}?${t}` : a;
1178
+ }
1179
+ return null;
1180
+ }
1181
+ function Y(e, t) {
1182
+ if (typeof window > "u") return;
1183
+ let n = $e.getState().tabsPersist, r = dt();
1184
+ if (r) {
1185
+ if (n) try {
1186
+ localStorage.setItem(r, JSON.stringify({
1187
+ tabs: e.map(ft),
1188
+ activeTabId: t
1189
+ }));
1190
+ } catch {}
1191
+ else try {
1192
+ localStorage.removeItem(r);
1193
+ } catch {}
1194
+ }
1195
+ }
1196
+ function ht() {
1197
+ if (typeof window > "u" || !$e.getState().tabsPersist) return null;
1198
+ let e = dt();
1199
+ if (!e) return null;
1200
+ let t = localStorage.getItem(e);
1201
+ return t ? pt(t) : null;
1202
+ }
1203
+ var gt = le((e, t) => ({
1204
+ tabs: [],
1205
+ activeTabId: null,
1206
+ openTab: (n, r) => {
1207
+ if (tt(n.pathname)) return "";
1208
+ let i = r?.activate ?? !0, a = t(), o = a.tabs.find((e) => e.pathname === n.pathname);
1209
+ if (o) return i && (e({ activeTabId: o.id }), Y(a.tabs, o.id)), o.id;
1210
+ let s = crypto.randomUUID(), c = {
1211
+ ...n,
1212
+ id: s
1213
+ }, l = [...a.tabs, c], u = i ? s : a.activeTabId, d = $e.getState().tabsMaxOpen;
1214
+ if (d > 0 && l.length > d) {
1215
+ let e = l.findIndex((e) => e.id !== s && e.id !== u && e.closable !== !1 && !e.dirty);
1216
+ e !== -1 && (l = l.filter((t, n) => n !== e));
1217
+ }
1218
+ return e({
1219
+ tabs: l,
1220
+ activeTabId: u
1221
+ }), Y(l, u), s;
1222
+ },
1223
+ closeTab: (e) => {
1224
+ let n = t(), r = n.tabs.findIndex((t) => t.id === e);
1225
+ r !== -1 && n.tabs[r].closable && n.tabs.length !== 1 && t().closeTabs([e]);
1226
+ },
1227
+ closeTabs: (n) => {
1228
+ let r = t(), i = new Set(n);
1229
+ if (i.size === 0) return r.tabs.find((e) => e.id === r.activeTabId) ?? null;
1230
+ let a = r.tabs.findIndex((e) => e.id === r.activeTabId), o = r.tabs.filter((e) => !(i.has(e.id) && ot(e))), s = r.activeTabId;
1231
+ return s && !o.some((e) => e.id === s) ? s = o.length === 0 ? null : o[Math.min(Math.max(a, 0), o.length - 1)].id : o.length === 0 && (s = null), e({
1232
+ tabs: o,
1233
+ activeTabId: s
1234
+ }), Y(o, s), o.find((e) => e.id === s) ?? null;
1235
+ },
1236
+ switchTab: (n) => {
1237
+ e({ activeTabId: n }), Y(t().tabs, n);
1238
+ },
1239
+ findTabByPathname: (e) => t().tabs.find((t) => t.pathname === e),
1240
+ updateTabTitle: (t, n, r = !1) => {
1241
+ e((e) => ({ tabs: e.tabs.map((e) => e.id === t ? {
1242
+ ...e,
1243
+ title: n,
1244
+ derivedTitle: r
1245
+ } : e) }));
1246
+ },
1247
+ updateTabSearch: (t, n) => {
1248
+ e((e) => ({ tabs: e.tabs.map((e) => e.id === t ? {
1249
+ ...e,
1250
+ search: n
1251
+ } : e) }));
1252
+ },
1253
+ setReturnTarget: (n, r) => {
1254
+ e((e) => ({ tabs: e.tabs.map((e) => e.id === n ? {
1255
+ ...e,
1256
+ returnTo: r
1257
+ } : e) })), Y(t().tabs, t().activeTabId);
1258
+ },
1259
+ commitTabNavigation: (n, r) => {
1260
+ let i = "returnTo" in r;
1261
+ e((e) => ({
1262
+ tabs: e.tabs.map((e) => e.id === n ? {
1263
+ ...e,
1264
+ search: r.search,
1265
+ ...i ? { returnTo: r.returnTo } : {}
1266
+ } : e),
1267
+ activeTabId: n
1268
+ })), Y(t().tabs, t().activeTabId);
1269
+ },
1270
+ setDirty: (n, r) => {
1271
+ e((e) => ({ tabs: e.tabs.map((e) => e.id === n ? {
1272
+ ...e,
1273
+ dirty: r
1274
+ } : e) })), Y(t().tabs, t().activeTabId);
1275
+ },
1276
+ setMode: (n, r) => {
1277
+ e((e) => ({ tabs: e.tabs.map((e) => e.id === n ? {
1278
+ ...e,
1279
+ mode: r
1280
+ } : e) })), Y(t().tabs, t().activeTabId);
1281
+ },
1282
+ updateTab: (n, r) => {
1283
+ e((e) => ({ tabs: e.tabs.map((e) => e.id === n ? {
1284
+ ...e,
1285
+ ...r
1286
+ } : e) })), Y(t().tabs, t().activeTabId);
1287
+ },
1288
+ setScope: (e, t) => {
1289
+ ct = e, lt = t;
1290
+ },
1291
+ hydrate: () => {
1292
+ let t = ht();
1293
+ t && e({
1294
+ tabs: t.tabs,
1295
+ activeTabId: t.activeTabId
1296
+ });
1297
+ }
1298
+ }));
1299
+ typeof window < "u" && window.addEventListener("pagehide", () => {
1300
+ let { tabs: e, activeTabId: t } = gt.getState();
1301
+ Y(e, t);
1302
+ });
1303
+ //#endregion
1304
+ //#region src/api/fileReferences.ts
1305
+ function _t(e, t, n, r = {}) {
1306
+ let i = new URLSearchParams(typeof t == "string" ? { id: t } : t);
1307
+ return s(`/api/files/references/${encodeURIComponent(e)}/${encodeURIComponent(n)}?${i.toString()}`, { signal: r.signal });
1308
+ }
1309
+ //#endregion
1310
+ //#region src/types/fieldType.ts
1311
+ var vt = /* @__PURE__ */ "bool.bytes.date.decimal.email.enum.file_ref.float.int.int_array.json.multilang.multilang_array.multilang_text.password.phone.ref.rich_text.secret.string.string_array.structure.tags.text.time.timestamp.url.uuid.uuid_array".split(".");
1312
+ //#endregion
1313
+ //#region src/components/fields/StringField.tsx
1314
+ function yt({ field: e, fieldName: t, value: n, mode: r, onChange: i, fieldId: a }) {
1315
+ if (r === "display") {
1316
+ let t = T(n);
1317
+ return e.copyable && t ? /* @__PURE__ */ H("span", {
1318
+ style: {
1319
+ display: "inline-flex",
1320
+ alignItems: "center",
1321
+ gap: 4
1322
+ },
1323
+ children: [/* @__PURE__ */ V("span", {
1324
+ style: { fontSize: 12.5 },
1325
+ children: t
1326
+ }), /* @__PURE__ */ V(j, {
1327
+ value: t,
1328
+ size: "sm"
1329
+ })]
1330
+ }) : /* @__PURE__ */ V("span", {
1331
+ style: { fontSize: 12.5 },
1332
+ children: t || /* @__PURE__ */ V("span", {
1333
+ style: { color: "var(--text-4)" },
1334
+ children: "—"
1335
+ })
1336
+ });
1337
+ }
1338
+ return /* @__PURE__ */ V(G, {
1339
+ id: a,
1340
+ name: t,
1341
+ "aria-required": e.required || void 0,
1342
+ value: T(n),
1343
+ onChange: (e) => i?.(e)
1344
+ });
1345
+ }
1346
+ //#endregion
1347
+ //#region src/components/shared/Markdown.tsx
1348
+ var bt = ie(() => import("./MarkdownRenderer-kNEMr6K_.js").then((e) => ({ default: e.MarkdownRenderer })));
1349
+ function xt() {
1350
+ return /* @__PURE__ */ V("div", { className: "h-4 w-2/3 rounded bg-muted animate-pulse" });
1351
+ }
1352
+ function X(e) {
1353
+ return /* @__PURE__ */ V(F, {
1354
+ fallback: /* @__PURE__ */ V(xt, {}),
1355
+ children: /* @__PURE__ */ V(bt, { ...e })
1356
+ });
1357
+ }
1358
+ //#endregion
1359
+ //#region src/components/fields/TextField.tsx
1360
+ function St({ field: e, fieldName: t, value: n, mode: r, onChange: i, fill: a, compact: o, fieldId: s }) {
1361
+ let c = e.display?.widget;
1362
+ if (r === "display") {
1363
+ let t = T(n);
1364
+ if (!t) return /* @__PURE__ */ V("span", {
1365
+ style: {
1366
+ fontSize: 12.5,
1367
+ color: "var(--text-4)"
1368
+ },
1369
+ children: "—"
1370
+ });
1371
+ let r = c === "markdown" ? /* @__PURE__ */ V(X, { content: t }) : c === "code" ? /* @__PURE__ */ V("pre", {
1372
+ className: "mono",
1373
+ style: {
1374
+ fontSize: 12,
1375
+ background: "var(--surface-2)",
1376
+ color: "var(--text)",
1377
+ borderRadius: 6,
1378
+ border: "1px solid var(--border)",
1379
+ padding: 14,
1380
+ overflowX: "auto",
1381
+ maxHeight: 600,
1382
+ overflowY: "auto",
1383
+ whiteSpace: "pre"
1384
+ },
1385
+ children: t
1386
+ }) : /* @__PURE__ */ V("p", {
1387
+ style: {
1388
+ fontSize: 12.5,
1389
+ whiteSpace: "pre-wrap",
1390
+ wordBreak: "break-word",
1391
+ margin: 0
1392
+ },
1393
+ children: t
1394
+ });
1395
+ return e.copyable ? /* @__PURE__ */ H("div", {
1396
+ style: { position: "relative" },
1397
+ children: [r, /* @__PURE__ */ V("div", {
1398
+ style: {
1399
+ position: "absolute",
1400
+ top: 0,
1401
+ right: 0
1402
+ },
1403
+ children: /* @__PURE__ */ V(j, {
1404
+ value: t,
1405
+ size: "sm"
1406
+ })
1407
+ })]
1408
+ }) : r;
1409
+ }
1410
+ if (o) return /* @__PURE__ */ V(G, {
1411
+ id: s,
1412
+ name: t,
1413
+ "aria-required": e.required || void 0,
1414
+ value: T(n),
1415
+ onChange: (e) => i?.(e)
1416
+ });
1417
+ let l = c === "markdown" || c === "code" ? 10 : 4;
1418
+ return /* @__PURE__ */ V(Ce, {
1419
+ id: s,
1420
+ name: t,
1421
+ ariaRequired: e.required,
1422
+ value: T(n),
1423
+ onChange: (e) => i?.(e),
1424
+ rows: l,
1425
+ fill: a
1426
+ });
1427
+ }
1428
+ //#endregion
1429
+ //#region src/components/fields/EnumField.tsx
1430
+ var Ct = "__declarion_enum_null__";
1431
+ function wt({ field: e, value: t, mode: n, onChange: r, fieldId: i, labelId: a, t: o }) {
1432
+ let s = e.values ?? [], c = s.find((e) => e.code === t);
1433
+ if (n === "display") return c ? /* @__PURE__ */ V(M, {
1434
+ tone: c.color ?? "slate",
1435
+ size: "xs",
1436
+ children: o(c.name)
1437
+ }) : /* @__PURE__ */ V("span", {
1438
+ style: {
1439
+ fontSize: 12.5,
1440
+ color: "var(--text-4)"
1441
+ },
1442
+ children: "—"
1443
+ });
1444
+ let l = !e.required, u = t != null && t !== "" ? T(t) : Ct, d = [...l ? [{
1445
+ value: Ct,
1446
+ label: o("field.enum.none", "— None —")
1447
+ }] : [], ...s.map((e) => ({
1448
+ value: e.code,
1449
+ label: o(e.name) || e.code
1450
+ }))];
1451
+ return /* @__PURE__ */ V(K, {
1452
+ id: i,
1453
+ "aria-labelledby": a,
1454
+ "aria-required": e.required || void 0,
1455
+ value: u,
1456
+ options: d,
1457
+ onChange: (e) => r?.(e === Ct ? null : e),
1458
+ placeholder: o("field.select_placeholder", "Select…")
1459
+ });
1460
+ }
1461
+ //#endregion
1462
+ //#region src/components/fields/EmailField.tsx
1463
+ function Tt({ field: e, fieldName: t, value: n, onChange: r, fieldId: i }) {
1464
+ return /* @__PURE__ */ V(G, {
1465
+ id: i,
1466
+ name: t,
1467
+ "aria-required": e.required || void 0,
1468
+ type: "email",
1469
+ value: T(n),
1470
+ onChange: (e) => r?.(e)
1471
+ });
1472
+ }
1473
+ //#endregion
1474
+ //#region src/components/fields/UrlField.tsx
1475
+ var Et = "https://";
1476
+ function Dt({ field: e, fieldName: t, value: n, onChange: r, fieldId: i }) {
1477
+ return /* @__PURE__ */ V(G, {
1478
+ id: i,
1479
+ name: t,
1480
+ "aria-required": e.required || void 0,
1481
+ type: "url",
1482
+ value: T(n),
1483
+ onChange: (e) => r?.(e),
1484
+ placeholder: Et
1485
+ });
1486
+ }
1487
+ //#endregion
1488
+ //#region src/components/fields/PhoneField.tsx
1489
+ function Ot({ field: e, fieldName: t, value: n, onChange: r, fieldId: i }) {
1490
+ return /* @__PURE__ */ V(G, {
1491
+ id: i,
1492
+ name: t,
1493
+ "aria-required": e.required || void 0,
1494
+ type: "tel",
1495
+ value: T(n),
1496
+ onChange: (e) => r?.(e),
1497
+ placeholder: "+1 555 555 5555"
1498
+ });
1499
+ }
1500
+ //#endregion
1501
+ //#region src/components/fields/TimestampField.tsx
1502
+ var kt = {
1503
+ year: "numeric",
1504
+ month: "short",
1505
+ day: "numeric"
1506
+ }, At = {
1507
+ ...kt,
1508
+ hour: "2-digit",
1509
+ minute: "2-digit"
1510
+ };
1511
+ function jt(e, t, n) {
1512
+ if (t) {
1513
+ let t = /* @__PURE__ */ new Date(e + "T00:00:00");
1514
+ return isNaN(t.getTime()) ? e : new Intl.DateTimeFormat(n, kt).format(t);
1515
+ }
1516
+ return h(e, At, n);
1517
+ }
1518
+ function Mt(e, t, n) {
1519
+ if (t) {
1520
+ let t = /* @__PURE__ */ new Date(e + "T00:00:00");
1521
+ return isNaN(t.getTime()) ? e : new Intl.DateTimeFormat(n, kt).format(t);
1522
+ }
1523
+ let r = new Date(e);
1524
+ return isNaN(r.getTime()) ? e : new Intl.DateTimeFormat(n, At).format(r);
1525
+ }
1526
+ function Nt(e) {
1527
+ if (e.endsWith("Z")) return "UTC";
1528
+ let t = e.match(/([+-]\d{2}:\d{2})$/);
1529
+ if (!t) return null;
1530
+ let n = t[1].charAt(0), r = parseInt(t[1].substring(1, 3), 10), i = parseInt(t[1].substring(4, 6), 10);
1531
+ return r === 0 && i === 0 ? "UTC" : `UTC${n}${r}${i > 0 ? `:${String(i).padStart(2, "0")}` : ""}`;
1532
+ }
1533
+ function Pt(e, t) {
1534
+ let n = e.match(/([+-]\d{2}:\d{2})$/), r = e.endsWith("Z"), i = new Date(e);
1535
+ if (isNaN(i.getTime())) return "";
1536
+ if (r) {
1537
+ let e = i.getUTCFullYear(), n = String(i.getUTCMonth() + 1).padStart(2, "0"), r = String(i.getUTCDate()).padStart(2, "0");
1538
+ return t ? `${e}-${n}-${r}` : `${e}-${n}-${r}T${String(i.getUTCHours()).padStart(2, "0")}:${String(i.getUTCMinutes()).padStart(2, "0")}`;
1539
+ }
1540
+ if (n) {
1541
+ let e = n[1].charAt(0) === "+" ? 1 : -1, r = parseInt(n[1].substring(1, 3), 10), a = parseInt(n[1].substring(4, 6), 10), o = e * (r * 60 + a) * 60 * 1e3, s = new Date(i.getTime() + o), c = s.getUTCFullYear(), l = String(s.getUTCMonth() + 1).padStart(2, "0"), u = String(s.getUTCDate()).padStart(2, "0");
1542
+ return t ? `${c}-${l}-${u}` : `${c}-${l}-${u}T${String(s.getUTCHours()).padStart(2, "0")}:${String(s.getUTCMinutes()).padStart(2, "0")}`;
1543
+ }
1544
+ return t ? e.slice(0, 10) : e.slice(0, 16);
1545
+ }
1546
+ function Ft(e, t) {
1547
+ let n = new Date(e);
1548
+ if (isNaN(n.getTime())) return "";
1549
+ let r = n.getFullYear(), i = String(n.getMonth() + 1).padStart(2, "0"), a = String(n.getDate()).padStart(2, "0");
1550
+ return t ? `${r}-${i}-${a}` : `${r}-${i}-${a}T${String(n.getHours()).padStart(2, "0")}:${String(n.getMinutes()).padStart(2, "0")}`;
1551
+ }
1552
+ function It({ field: e, fieldName: t, value: r, mode: i, onChange: a, fieldId: o, t: s }) {
1553
+ let c = e.type === "date", l = !!e.timezone;
1554
+ if (i === "display") {
1555
+ if (!r) return /* @__PURE__ */ V("span", {
1556
+ style: {
1557
+ fontSize: 12.5,
1558
+ color: "var(--text-4)"
1559
+ },
1560
+ children: "—"
1561
+ });
1562
+ let e = T(r), t = l ? jt(e, c, s.language) : Mt(e, c, s.language), n = l && !c ? Nt(e) : null;
1563
+ return /* @__PURE__ */ H("span", {
1564
+ style: { fontSize: 12.5 },
1565
+ children: [t, n && /* @__PURE__ */ V("span", {
1566
+ style: {
1567
+ marginLeft: 4,
1568
+ color: "var(--text-3)"
1569
+ },
1570
+ children: n
1571
+ })]
1572
+ });
1573
+ }
1574
+ let u = r ? l ? Pt(T(r), c) : Ft(T(r), c) : "";
1575
+ return /* @__PURE__ */ V(G, {
1576
+ id: o,
1577
+ name: t,
1578
+ "aria-required": e.required || void 0,
1579
+ type: c ? "date" : "datetime-local",
1580
+ value: u,
1581
+ onChange: (e) => {
1582
+ if (!e) {
1583
+ a?.(null);
1584
+ return;
1585
+ }
1586
+ if (l || c) {
1587
+ a?.(e);
1588
+ return;
1589
+ }
1590
+ let t = new Date(e);
1591
+ isNaN(t.getTime()) ? a?.(e) : a?.(n(t));
1592
+ }
1593
+ });
1594
+ }
1595
+ //#endregion
1596
+ //#region src/components/fields/BoolField.tsx
1597
+ function Lt({ value: e, onChange: t, fieldId: n, labelId: r }) {
1598
+ return /* @__PURE__ */ V(ye, {
1599
+ id: n,
1600
+ ariaLabelledby: r,
1601
+ value: !!e,
1602
+ onChange: (e) => t?.(e)
1603
+ });
1604
+ }
1605
+ //#endregion
1606
+ //#region src/lib/decimal-text.ts
1607
+ function Rt(e, t) {
1608
+ let n = e.trim();
1609
+ if (n === "" || n === "-") return n;
1610
+ let r = n.startsWith("-"), [i, a] = (r ? n.slice(1) : n).split("."), o;
1611
+ try {
1612
+ o = t.format(BigInt(i || "0"));
1613
+ } catch {
1614
+ return e;
1615
+ }
1616
+ let s = r ? `-${o}` : o;
1617
+ return a === void 0 ? s : `${s}${t.formatToParts(1.1).find((e) => e.type === "decimal")?.value ?? "."}${a}`;
1618
+ }
1619
+ //#endregion
1620
+ //#region src/components/fields/NumberField.tsx
1621
+ function zt({ field: e, fieldName: t, value: n, mode: r, onChange: i, record: a, fieldId: o, t: s }) {
1622
+ let c = e.display?.widget === "money", l = e.type === "decimal" || c, u = a?.$units?.[t], d = !u && e.unit ? e.unit.display || e.unit.storage : void 0, f = u || (d && !d.startsWith("$") ? d : void 0);
1623
+ if (r === "display") {
1624
+ if (n == null) return /* @__PURE__ */ V("span", {
1625
+ style: {
1626
+ fontSize: 12.5,
1627
+ color: "var(--text-4)"
1628
+ },
1629
+ children: "—"
1630
+ });
1631
+ let e;
1632
+ if (l && typeof n == "string") e = Rt(n, new Intl.NumberFormat(s.language));
1633
+ else {
1634
+ let t = Number(n);
1635
+ e = isNaN(t) ? null : new Intl.NumberFormat(s.language).format(t);
1636
+ }
1637
+ return e == null ? /* @__PURE__ */ V("span", {
1638
+ style: { fontSize: 12.5 },
1639
+ children: "—"
1640
+ }) : /* @__PURE__ */ H("span", {
1641
+ className: "num",
1642
+ style: {
1643
+ fontSize: 12.5,
1644
+ fontVariantNumeric: "tabular-nums"
1645
+ },
1646
+ children: [e, f && /* @__PURE__ */ V("span", {
1647
+ style: {
1648
+ color: "var(--text-3)",
1649
+ marginLeft: 4
1650
+ },
1651
+ children: f
1652
+ })]
1653
+ });
1654
+ }
1655
+ return l ? /* @__PURE__ */ V(G, {
1656
+ id: o,
1657
+ name: t,
1658
+ "aria-required": e.required || void 0,
1659
+ type: "text",
1660
+ inputMode: "decimal",
1661
+ pattern: "-?\\d*\\.?\\d*",
1662
+ value: n == null ? "" : T(n),
1663
+ onChange: (e) => {
1664
+ e === "" ? i?.(null) : i?.(e);
1665
+ }
1666
+ }) : /* @__PURE__ */ V(G, {
1667
+ id: o,
1668
+ name: t,
1669
+ "aria-required": e.required || void 0,
1670
+ type: "number",
1671
+ step: e.type === "float" ? "0.01" : "1",
1672
+ value: n == null ? "" : T(n),
1673
+ onChange: (t) => {
1674
+ t === "" ? i?.(null) : i?.(e.type === "int" ? parseInt(t, 10) : parseFloat(t));
1675
+ }
1676
+ });
1677
+ }
1678
+ //#endregion
1679
+ //#region src/hooks/useDebounce.ts
1680
+ function Bt(e, t) {
1681
+ let [n, r] = z(e);
1682
+ return oe(() => {
1683
+ let n = setTimeout(() => r(e), t);
1684
+ return () => clearTimeout(n);
1685
+ }, [e, t]), n;
1686
+ }
1687
+ //#endregion
1688
+ //#region src/components/fields/RefCombobox.tsx
1689
+ var Vt = 200;
1690
+ function Ht({ ref: e, value: t, onChange: n, refs: r, displayFieldOverride: i, id: a, labelId: o, ariaLabel: s, required: c, placeholder: l, specialValues: u }) {
1691
+ let d = E(), f = E("errors"), m = e?.entity, h = w(m), y = i ?? e?.display?.field ?? (h?.display?.display_template ? "$display" : h?.display?.display_field) ?? "$display", b = y === "$display" ? h?.display?.display_field : y, x = L(() => h ? g(h)[0] ?? "id" : "id", [h]), S = e?.field || x, [ee, D] = z(""), te = Bt(ee, 300), { data: O, isLoading: k, isError: A } = C(m, {
1692
+ per_page: Vt,
1693
+ sort: _(h, b ? `${b}:asc` : void 0),
1694
+ search: te || void 0,
1695
+ filters: e?.options_filter && v(h, e.options_filter)
1696
+ }), j = L(() => O?.data ?? [], [O?.data]), M = A ? f("record.ref_choices_unreadable", "The choices could not be loaded.") : l ?? d("field.select_placeholder", "Select…"), N = t == null ? "" : T(t), P = L(() => j.some((e) => String(e[S]) === N), [
1697
+ j,
1698
+ S,
1699
+ N
1700
+ ]), ne = r && m ? r[m]?.[N] : void 0, F = !!u?.some((e) => e.code === N), { data: re } = C(N && !P && !F && !ne && !k ? m : void 0, {
1701
+ per_page: 1,
1702
+ filters: [{
1703
+ field: S,
1704
+ op: "eq",
1705
+ value: N
1706
+ }]
1707
+ }), ie = R(null), I = L(() => {
1708
+ if (!N) return "";
1709
+ let e;
1710
+ if (ne) e = p(d, ne, y, N);
1711
+ else {
1712
+ let t = j.find((e) => String(e[S]) === N);
1713
+ if (t) e = p(d, t, y, N);
1714
+ else {
1715
+ let t = re?.data?.find((e) => String(e[S]) === N);
1716
+ t && (e = p(d, t, y, N));
1717
+ }
1718
+ }
1719
+ return e === void 0 ? ie.current?.value === N ? ie.current.label : N : (ie.current = {
1720
+ value: N,
1721
+ label: e
1722
+ }, e);
1723
+ }, [
1724
+ d,
1725
+ N,
1726
+ ne,
1727
+ j,
1728
+ S,
1729
+ y,
1730
+ re
1731
+ ]), ae = L(() => {
1732
+ let e = (u ?? []).map((e) => ({
1733
+ value: e.code,
1734
+ label: d(e.label) || e.code
1735
+ })), t = j.map((e) => {
1736
+ let t = T(e[S]);
1737
+ return {
1738
+ value: t,
1739
+ label: p(d, e, y, t)
1740
+ };
1741
+ }), n = N && !P && !F ? [{
1742
+ value: N,
1743
+ label: I
1744
+ }] : [], r = t.length > 0 || n.length > 0;
1745
+ return [
1746
+ {
1747
+ value: "",
1748
+ label: M
1749
+ },
1750
+ ...e.length > 0 ? [{
1751
+ value: "",
1752
+ label: d("field.ref.special_values", "Special values"),
1753
+ heading: !0
1754
+ }, ...e] : [],
1755
+ ...e.length > 0 && r ? [{
1756
+ value: "",
1757
+ label: "",
1758
+ divider: !0
1759
+ }] : [],
1760
+ ...n,
1761
+ ...t
1762
+ ];
1763
+ }, [
1764
+ d,
1765
+ M,
1766
+ u,
1767
+ N,
1768
+ P,
1769
+ F,
1770
+ I,
1771
+ j,
1772
+ S,
1773
+ y
1774
+ ]);
1775
+ return /* @__PURE__ */ V(K, {
1776
+ id: a,
1777
+ "aria-label": s,
1778
+ "aria-labelledby": o,
1779
+ "aria-required": c || void 0,
1780
+ value: N,
1781
+ options: ae,
1782
+ onChange: (e) => n(e || null),
1783
+ onSearchChange: D,
1784
+ placeholder: M
1785
+ });
1786
+ }
1787
+ //#endregion
1788
+ //#region src/components/fields/RefField.tsx
1789
+ function Ut({ field: e, value: t, mode: n, onChange: r, refs: i, fieldId: a, labelId: o }) {
1790
+ let s = E(), c = e.ref?.entity, l = e.display?.ref_display_field || "$display", u = L(() => {
1791
+ if (t == null) return "—";
1792
+ let e = T(t);
1793
+ if (i && c) {
1794
+ let t = i[c]?.[e];
1795
+ if (t) return p(s, t, l, e);
1796
+ }
1797
+ return e;
1798
+ }, [
1799
+ s,
1800
+ t,
1801
+ i,
1802
+ c,
1803
+ l
1804
+ ]);
1805
+ return n === "display" ? /* @__PURE__ */ V("span", {
1806
+ style: { fontSize: 12.5 },
1807
+ children: u
1808
+ }) : /* @__PURE__ */ V(Ht, {
1809
+ ref: e.ref,
1810
+ value: t,
1811
+ onChange: (e) => r?.(e),
1812
+ refs: i,
1813
+ displayFieldOverride: e.display?.ref_display_field,
1814
+ id: a,
1815
+ labelId: o,
1816
+ required: e.required
1817
+ });
1818
+ }
1819
+ //#endregion
1820
+ //#region src/components/fields/JsonField.tsx
1821
+ var Wt = ie(() => import("./JsonEditor-Dz1PQHC8.js").then((e) => ({ default: e.JsonEditor })));
1822
+ function Gt() {
1823
+ return /* @__PURE__ */ V("div", { className: "h-20 rounded-md border border-border bg-muted animate-pulse" });
1824
+ }
1825
+ function Kt(e) {
1826
+ return e == null ? !0 : typeof e == "string" ? e.trim() === "" : Array.isArray(e) ? e.length === 0 : typeof e == "object" && Object.keys(e).length === 0;
1827
+ }
1828
+ function qt(e) {
1829
+ return Array.isArray(e) && e.every((e) => [
1830
+ "string",
1831
+ "number",
1832
+ "boolean"
1833
+ ].includes(typeof e));
1834
+ }
1835
+ function Jt({ value: e, mode: t, onChange: n, fieldId: r }) {
1836
+ return t === "display" ? Kt(e) ? /* @__PURE__ */ V("span", {
1837
+ style: {
1838
+ fontSize: 12.5,
1839
+ color: "var(--text-4)"
1840
+ },
1841
+ children: "—"
1842
+ }) : qt(e) ? /* @__PURE__ */ V("ul", {
1843
+ className: "mono",
1844
+ style: {
1845
+ margin: 0,
1846
+ padding: 0,
1847
+ listStyle: "none",
1848
+ fontSize: 12.5,
1849
+ lineHeight: 1.7
1850
+ },
1851
+ children: e.map((e, t) => /* @__PURE__ */ V("li", { children: String(e) }, t))
1852
+ }) : /* @__PURE__ */ V(F, {
1853
+ fallback: /* @__PURE__ */ V(Gt, {}),
1854
+ children: /* @__PURE__ */ V(Wt, {
1855
+ value: e,
1856
+ readOnly: !0
1857
+ })
1858
+ }) : /* @__PURE__ */ V(F, {
1859
+ fallback: /* @__PURE__ */ V(Gt, {}),
1860
+ children: /* @__PURE__ */ V(Wt, {
1861
+ value: e,
1862
+ onChange: n,
1863
+ id: r
1864
+ })
1865
+ });
1866
+ }
1867
+ //#endregion
1868
+ //#region src/components/fields/langMap.ts
1869
+ function Yt(e) {
1870
+ return e == null ? {} : typeof e == "object" && !Array.isArray(e) ? e : typeof e == "string" ? { en: e } : {};
1871
+ }
1872
+ //#endregion
1873
+ //#region src/components/fields/MultilangField.tsx
1874
+ function Xt({ field: e, fieldName: t, value: n, mode: i, onChange: a, fieldId: o, t: s }) {
1875
+ let { data: c } = r(), l = c?.languages ?? [], u = Yt(n);
1876
+ if (i === "display") {
1877
+ let e = s(u) || "—";
1878
+ return /* @__PURE__ */ V("span", {
1879
+ style: { fontSize: 12.5 },
1880
+ children: e
1881
+ });
1882
+ }
1883
+ let d = (e, t) => {
1884
+ let n = {
1885
+ ...u,
1886
+ [e]: t
1887
+ };
1888
+ for (let e of Object.keys(n)) n[e] || delete n[e];
1889
+ a?.(Object.keys(n).length > 0 ? n : null);
1890
+ };
1891
+ return /* @__PURE__ */ V("div", {
1892
+ style: {
1893
+ display: "flex",
1894
+ flexDirection: "column",
1895
+ gap: 6
1896
+ },
1897
+ children: l.map((n, r) => {
1898
+ let i = o ? r === 0 ? o : `${o}-${n.code}` : void 0;
1899
+ return /* @__PURE__ */ H("div", {
1900
+ style: {
1901
+ display: "flex",
1902
+ alignItems: "center",
1903
+ gap: 8
1904
+ },
1905
+ children: [/* @__PURE__ */ V("label", {
1906
+ htmlFor: i,
1907
+ style: {
1908
+ width: 24,
1909
+ fontSize: 10.5,
1910
+ color: "var(--text-3)",
1911
+ textTransform: "uppercase",
1912
+ flexShrink: 0,
1913
+ letterSpacing: "0.04em",
1914
+ fontWeight: 500
1915
+ },
1916
+ children: n.code
1917
+ }), /* @__PURE__ */ V("div", {
1918
+ style: { flex: 1 },
1919
+ children: /* @__PURE__ */ V(G, {
1920
+ id: i,
1921
+ name: t ? `${t}.${n.code}` : void 0,
1922
+ "aria-required": e.required && r === 0 ? !0 : void 0,
1923
+ value: u[n.code] ?? "",
1924
+ onChange: (e) => d(n.code, e),
1925
+ placeholder: s("field.multilang.value", "Value ({language})", { language: n.code })
1926
+ })
1927
+ })]
1928
+ }, n.code);
1929
+ })
1930
+ });
1931
+ }
1932
+ //#endregion
1933
+ //#region src/components/fields/MultilangTextField.tsx
1934
+ function Zt({ field: e, fieldName: t, value: n, mode: i, onChange: a, fieldId: o, t: s }) {
1935
+ let { data: c } = r(), l = c?.languages ?? [], u = Yt(n);
1936
+ if (i === "display") {
1937
+ let e = s(u) || "—";
1938
+ return /* @__PURE__ */ V("p", {
1939
+ style: {
1940
+ fontSize: 12.5,
1941
+ whiteSpace: "pre-wrap",
1942
+ margin: 0
1943
+ },
1944
+ children: e
1945
+ });
1946
+ }
1947
+ let d = (e, t) => {
1948
+ let n = {
1949
+ ...u,
1950
+ [e]: t
1951
+ };
1952
+ for (let e of Object.keys(n)) n[e] || delete n[e];
1953
+ a?.(Object.keys(n).length > 0 ? n : null);
1954
+ };
1955
+ return /* @__PURE__ */ V("div", {
1956
+ style: {
1957
+ display: "flex",
1958
+ flexDirection: "column",
1959
+ gap: 10
1960
+ },
1961
+ children: l.map((n, r) => {
1962
+ let i = o ? r === 0 ? o : `${o}-${n.code}` : void 0;
1963
+ return /* @__PURE__ */ H("div", {
1964
+ style: {
1965
+ display: "flex",
1966
+ flexDirection: "column",
1967
+ gap: 4
1968
+ },
1969
+ children: [/* @__PURE__ */ V("label", {
1970
+ htmlFor: i,
1971
+ style: {
1972
+ fontSize: 10.5,
1973
+ color: "var(--text-3)",
1974
+ textTransform: "uppercase",
1975
+ letterSpacing: "0.04em",
1976
+ fontWeight: 500
1977
+ },
1978
+ children: n.code
1979
+ }), /* @__PURE__ */ V(Ce, {
1980
+ id: i,
1981
+ name: t ? `${t}.${n.code}` : void 0,
1982
+ ariaRequired: e.required && r === 0,
1983
+ value: u[n.code] ?? "",
1984
+ onChange: (e) => d(n.code, e),
1985
+ placeholder: s("field.multilang.value", "Value ({language})", { language: n.code }),
1986
+ rows: 4
1987
+ })]
1988
+ }, n.code);
1989
+ })
1990
+ });
1991
+ }
1992
+ //#endregion
1993
+ //#region src/components/fields/MultilangArrayField.tsx
1994
+ function Qt(e) {
1995
+ return Array.isArray(e) ? e.map(Yt) : [];
1996
+ }
1997
+ function $t(e) {
1998
+ let { value: t, mode: n, onChange: r, fieldId: i, fieldName: a, t: o } = e, s = Qt(t);
1999
+ if (n === "display") return s.length === 0 ? /* @__PURE__ */ V("span", {
2000
+ className: "text-muted-foreground",
2001
+ children: "—"
2002
+ }) : /* @__PURE__ */ V("div", {
2003
+ className: "flex flex-wrap gap-1",
2004
+ children: s.map((e, t) => /* @__PURE__ */ V(U, {
2005
+ tone: "slate",
2006
+ children: o(e) || "—"
2007
+ }, t))
2008
+ });
2009
+ let c = (e, t) => {
2010
+ r?.(s.map((n, r) => r === e ? Yt(t) : n));
2011
+ };
2012
+ return /* @__PURE__ */ H("div", {
2013
+ className: "flex flex-col gap-2",
2014
+ id: i,
2015
+ role: "group",
2016
+ children: [s.map((t, n) => /* @__PURE__ */ H("div", {
2017
+ className: "flex items-start gap-2",
2018
+ children: [/* @__PURE__ */ V("div", {
2019
+ className: "flex-1",
2020
+ children: /* @__PURE__ */ V(Xt, {
2021
+ ...e,
2022
+ fieldId: i ? `${i}-${n}` : void 0,
2023
+ fieldName: a && `${a}.${n}`,
2024
+ value: t,
2025
+ onChange: (e) => c(n, e)
2026
+ })
2027
+ }), /* @__PURE__ */ V(k, {
2028
+ size: 24,
2029
+ icon: /* @__PURE__ */ V(O.trash, { size: 12 }),
2030
+ onClick: () => r?.(s.filter((e, t) => t !== n)),
2031
+ title: o("field.array.remove", "Remove")
2032
+ })]
2033
+ }, n)), /* @__PURE__ */ V("div", { children: /* @__PURE__ */ V(A, {
2034
+ icon: /* @__PURE__ */ V(O.plus, { size: 13 }),
2035
+ onClick: () => r?.([...s, {}]),
2036
+ children: o("field.array.add", "Add")
2037
+ }) })]
2038
+ });
2039
+ }
2040
+ //#endregion
2041
+ //#region src/components/fields/secretValue.ts
2042
+ var en = "[SET]";
2043
+ function tn(e) {
2044
+ return e === "[SET]" || typeof e == "string" && e !== "";
2045
+ }
2046
+ //#endregion
2047
+ //#region src/components/fields/SecretField.tsx
2048
+ function nn({ field: e, fieldName: t, value: n, mode: r, onChange: i, record: a, fieldId: o, t: s }) {
2049
+ let [c, l] = z(""), u = a !== void 0, d = tn(n);
2050
+ return r === "display" ? d ? /* @__PURE__ */ V("span", {
2051
+ className: "mono",
2052
+ style: {
2053
+ fontSize: 12.5,
2054
+ color: "var(--text-3)"
2055
+ },
2056
+ children: s("field.secret.set", "Set")
2057
+ }) : /* @__PURE__ */ V("span", {
2058
+ style: {
2059
+ fontSize: 12.5,
2060
+ color: "var(--text-4)",
2061
+ fontStyle: "italic"
2062
+ },
2063
+ children: s("field.secret.not_set", "Not set")
2064
+ }) : /* @__PURE__ */ V(Me, {
2065
+ id: o,
2066
+ name: t,
2067
+ ariaRequired: e.required,
2068
+ value: c,
2069
+ onChange: (e) => {
2070
+ l(e), u && e === "" ? i?.(d ? en : "") : i?.(e);
2071
+ },
2072
+ placeholder: u ? s("field.secret.keep_existing", "Leave blank to keep existing value") : s("field.secret.placeholder", "Enter value")
2073
+ });
2074
+ }
2075
+ //#endregion
2076
+ //#region src/components/fields/PasswordField.tsx
2077
+ function rn({ field: e, fieldName: t, value: n, mode: r, onChange: i, record: a, fieldId: o, t: s }) {
2078
+ let [c, l] = z(""), u = a !== void 0, d = tn(n);
2079
+ return r === "display" ? d ? /* @__PURE__ */ V("span", {
2080
+ className: "mono",
2081
+ style: {
2082
+ fontSize: 12.5,
2083
+ color: "var(--text-3)"
2084
+ },
2085
+ children: s("field.secret.set", "Set")
2086
+ }) : /* @__PURE__ */ V("span", {
2087
+ style: {
2088
+ fontSize: 12.5,
2089
+ color: "var(--text-4)",
2090
+ fontStyle: "italic"
2091
+ },
2092
+ children: s("field.secret.not_set", "Not set")
2093
+ }) : /* @__PURE__ */ V(Me, {
2094
+ id: o,
2095
+ name: t,
2096
+ ariaRequired: e.required,
2097
+ value: c,
2098
+ onChange: (e) => {
2099
+ l(e), u && e === "" ? i?.(d ? en : "") : i?.(e);
2100
+ },
2101
+ placeholder: u ? s("field.secret.keep_existing", "Leave blank to keep existing value") : s("field.password.placeholder", "Enter password")
2102
+ });
2103
+ }
2104
+ //#endregion
2105
+ //#region src/components/fields/StringArrayField.tsx
2106
+ function an(e) {
2107
+ return Array.isArray(e) ? e.filter((e) => e != null).map(String) : [];
2108
+ }
2109
+ function on({ field: e, fieldName: t, value: n, mode: r, onChange: i, fieldId: a, t: o }) {
2110
+ let s = an(n), c = e.values ?? [];
2111
+ return c.length > 0 ? /* @__PURE__ */ V(sn, {
2112
+ values: c,
2113
+ selected: s,
2114
+ mode: r,
2115
+ required: e.required,
2116
+ onChange: i,
2117
+ t: o
2118
+ }) : /* @__PURE__ */ V(cn, {
2119
+ items: s,
2120
+ fieldName: t,
2121
+ required: e.required,
2122
+ mode: r,
2123
+ onChange: i,
2124
+ fieldId: a,
2125
+ t: o
2126
+ });
2127
+ }
2128
+ function sn({ values: e, selected: t, mode: n, required: r, onChange: i, t: a }) {
2129
+ let o = new Set(t), s = (t) => {
2130
+ let n = e.find((e) => e.code === t);
2131
+ return n && a(n.name) || t;
2132
+ }, c = t.filter((t) => !e.some((e) => e.code === t));
2133
+ if (n === "display") return t.length === 0 ? /* @__PURE__ */ V("span", {
2134
+ style: {
2135
+ fontSize: 12.5,
2136
+ color: "var(--text-4)"
2137
+ },
2138
+ children: "—"
2139
+ }) : /* @__PURE__ */ H("div", {
2140
+ style: {
2141
+ display: "flex",
2142
+ flexWrap: "wrap",
2143
+ gap: 4
2144
+ },
2145
+ children: [e.filter((e) => o.has(e.code)).map((e) => /* @__PURE__ */ V(U, {
2146
+ tone: "slate",
2147
+ children: a(e.name) || e.code
2148
+ }, e.code)), c.map((e) => /* @__PURE__ */ V(U, {
2149
+ tone: "slate",
2150
+ children: s(e)
2151
+ }, e))]
2152
+ });
2153
+ let l = (e) => {
2154
+ o.has(e) ? i?.(t.filter((t) => t !== e)) : i?.([...t, e]);
2155
+ }, u = (e) => ({
2156
+ display: "inline-flex",
2157
+ alignItems: "center",
2158
+ gap: 4,
2159
+ padding: "3px 10px",
2160
+ borderRadius: 999,
2161
+ fontSize: 12.5,
2162
+ cursor: "pointer",
2163
+ border: e ? "1px solid var(--text-3)" : "1px solid var(--border)",
2164
+ background: e ? "var(--surface-2)" : "transparent",
2165
+ color: e ? "var(--text)" : "var(--text-4)",
2166
+ fontWeight: e ? 600 : 400
2167
+ });
2168
+ return /* @__PURE__ */ H("div", {
2169
+ role: "group",
2170
+ "aria-required": r || void 0,
2171
+ style: {
2172
+ display: "flex",
2173
+ flexWrap: "wrap",
2174
+ gap: 6
2175
+ },
2176
+ children: [e.map((e) => {
2177
+ let t = o.has(e.code);
2178
+ return /* @__PURE__ */ H("button", {
2179
+ type: "button",
2180
+ "aria-pressed": t,
2181
+ onClick: () => l(e.code),
2182
+ style: u(t),
2183
+ children: [t && /* @__PURE__ */ V(O.check, { size: 12 }), s(e.code)]
2184
+ }, e.code);
2185
+ }), c.map((e) => /* @__PURE__ */ H("button", {
2186
+ type: "button",
2187
+ "aria-pressed": !0,
2188
+ onClick: () => l(e),
2189
+ style: u(!0),
2190
+ children: [/* @__PURE__ */ V(O.check, { size: 12 }), s(e)]
2191
+ }, e))]
2192
+ });
2193
+ }
2194
+ function cn({ items: e, fieldName: t, required: n, mode: r, onChange: i, fieldId: a, t: o }) {
2195
+ let [s, c] = z("");
2196
+ if (r === "display") return e.length === 0 ? /* @__PURE__ */ V("span", {
2197
+ style: {
2198
+ fontSize: 12.5,
2199
+ color: "var(--text-4)"
2200
+ },
2201
+ children: "—"
2202
+ }) : /* @__PURE__ */ V("div", {
2203
+ style: {
2204
+ display: "flex",
2205
+ flexWrap: "wrap",
2206
+ gap: 4
2207
+ },
2208
+ children: e.map((e, t) => /* @__PURE__ */ V(U, {
2209
+ tone: "slate",
2210
+ children: e
2211
+ }, t))
2212
+ });
2213
+ let l = () => {
2214
+ let t = s.trim();
2215
+ t && (i?.([...e, t]), c(""));
2216
+ }, u = (t) => {
2217
+ i?.(e.filter((e, n) => n !== t));
2218
+ };
2219
+ return /* @__PURE__ */ H("div", {
2220
+ style: {
2221
+ display: "flex",
2222
+ flexDirection: "column",
2223
+ gap: 6
2224
+ },
2225
+ children: [e.length > 0 && /* @__PURE__ */ V("div", {
2226
+ style: {
2227
+ display: "flex",
2228
+ flexWrap: "wrap",
2229
+ gap: 4
2230
+ },
2231
+ children: e.map((e, t) => /* @__PURE__ */ V(U, {
2232
+ tone: "slate",
2233
+ onRemove: () => u(t),
2234
+ children: e
2235
+ }, t))
2236
+ }), /* @__PURE__ */ H("div", {
2237
+ style: {
2238
+ display: "flex",
2239
+ gap: 4
2240
+ },
2241
+ children: [/* @__PURE__ */ V("div", {
2242
+ style: { flex: 1 },
2243
+ children: /* @__PURE__ */ V(G, {
2244
+ id: a,
2245
+ name: t,
2246
+ "aria-required": n || void 0,
2247
+ value: s,
2248
+ onChange: c,
2249
+ onKeyDown: (e) => {
2250
+ e.key === "Enter" && (e.preventDefault(), l());
2251
+ },
2252
+ placeholder: o("field.array.add_item", "Add item…")
2253
+ })
2254
+ }), /* @__PURE__ */ V(A, {
2255
+ icon: /* @__PURE__ */ V(O.plus, { size: 13 }),
2256
+ onClick: l,
2257
+ children: o("field.array.add", "Add")
2258
+ })]
2259
+ })]
2260
+ });
2261
+ }
2262
+ //#endregion
2263
+ //#region src/components/fields/IntArrayField.tsx
2264
+ function ln(e) {
2265
+ return Array.isArray(e) ? e.filter((e) => e != null).map(Number).filter((e) => !isNaN(e)) : [];
2266
+ }
2267
+ function un({ field: e, fieldName: t, value: n, mode: r, onChange: i, fieldId: a, t: o }) {
2268
+ let s = ln(n), [c, l] = z("");
2269
+ if (r === "display") return s.length === 0 ? /* @__PURE__ */ V("span", {
2270
+ style: {
2271
+ fontSize: 12.5,
2272
+ color: "var(--text-4)"
2273
+ },
2274
+ children: "—"
2275
+ }) : /* @__PURE__ */ V("div", {
2276
+ style: {
2277
+ display: "flex",
2278
+ flexWrap: "wrap",
2279
+ gap: 4
2280
+ },
2281
+ children: s.map((e, t) => /* @__PURE__ */ V(U, {
2282
+ tone: "slate",
2283
+ children: e
2284
+ }, t))
2285
+ });
2286
+ let u = () => {
2287
+ let e = c.trim();
2288
+ if (!e) return;
2289
+ let t = Number(e);
2290
+ !isNaN(t) && Number.isInteger(t) && (i?.([...s, t]), l(""));
2291
+ }, d = (e) => {
2292
+ i?.(s.filter((t, n) => n !== e));
2293
+ };
2294
+ return /* @__PURE__ */ H("div", {
2295
+ style: {
2296
+ display: "flex",
2297
+ flexDirection: "column",
2298
+ gap: 6
2299
+ },
2300
+ children: [s.length > 0 && /* @__PURE__ */ V("div", {
2301
+ style: {
2302
+ display: "flex",
2303
+ flexWrap: "wrap",
2304
+ gap: 4
2305
+ },
2306
+ children: s.map((e, t) => /* @__PURE__ */ V(U, {
2307
+ tone: "slate",
2308
+ onRemove: () => d(t),
2309
+ children: e
2310
+ }, t))
2311
+ }), /* @__PURE__ */ H("div", {
2312
+ style: {
2313
+ display: "flex",
2314
+ gap: 4
2315
+ },
2316
+ children: [/* @__PURE__ */ V("div", {
2317
+ style: { flex: 1 },
2318
+ children: /* @__PURE__ */ V(G, {
2319
+ id: a,
2320
+ name: t,
2321
+ "aria-required": e.required || void 0,
2322
+ type: "number",
2323
+ value: c,
2324
+ onChange: l,
2325
+ onKeyDown: (e) => {
2326
+ e.key === "Enter" && (e.preventDefault(), u());
2327
+ },
2328
+ placeholder: o("field.array.add_number", "Add number…")
2329
+ })
2330
+ }), /* @__PURE__ */ V(A, {
2331
+ icon: /* @__PURE__ */ V(O.plus, { size: 13 }),
2332
+ onClick: u,
2333
+ children: o("field.array.add", "Add")
2334
+ })]
2335
+ })]
2336
+ });
2337
+ }
2338
+ //#endregion
2339
+ //#region src/lib/rich-text.ts
2340
+ var dn = /declarion:\/\/file\/([0-9a-fA-F-]{36})/g;
2341
+ function fn(e) {
2342
+ return typeof e == "string" ? e : bn(e) && typeof e.markdown == "string" ? e.markdown : "";
2343
+ }
2344
+ function pn(e, t) {
2345
+ return {
2346
+ markdown: fn(e),
2347
+ files: gn(t)
2348
+ };
2349
+ }
2350
+ function mn(e, t) {
2351
+ let n = pn(e, null);
2352
+ return n.files[t.id] = t, n;
2353
+ }
2354
+ function hn(e, t) {
2355
+ let n = pn(e, null);
2356
+ for (let e of t) delete n.files[e];
2357
+ return n;
2358
+ }
2359
+ function gn(e) {
2360
+ if (!Array.isArray(e)) return {};
2361
+ let t = {};
2362
+ for (let n of e) bn(n) && typeof n.id == "string" && (t[n.id] = n);
2363
+ return t;
2364
+ }
2365
+ function _n(e) {
2366
+ let t = /* @__PURE__ */ new Set(), n = [], r;
2367
+ for (dn.lastIndex = 0; (r = dn.exec(e)) !== null;) {
2368
+ let e = r[1];
2369
+ t.has(e) || (t.add(e), n.push(e));
2370
+ }
2371
+ return n;
2372
+ }
2373
+ function vn(e) {
2374
+ return e ? /^declarion:\/\/file\/([0-9a-fA-F-]{36})$/.exec(e)?.[1] ?? null : null;
2375
+ }
2376
+ function yn(e) {
2377
+ let t = `declarion://file/${e.id}`;
2378
+ return e.content_type.startsWith("image/") ? `![](${t})` : `[${e.filename || e.id}](${t})`;
2379
+ }
2380
+ function bn(e) {
2381
+ return typeof e == "object" && !!e;
2382
+ }
2383
+ //#endregion
2384
+ //#region src/components/file-widgets/upload.ts
2385
+ var Z = class extends Error {
2386
+ code;
2387
+ status;
2388
+ raw;
2389
+ constructor(e, t, n, r) {
2390
+ super(n), this.code = t, this.status = e, this.raw = r;
2391
+ }
2392
+ ext(e) {
2393
+ return this.raw?.[e];
2394
+ }
2395
+ };
2396
+ function xn(e, t, n) {
2397
+ if (!(n instanceof Z)) return {
2398
+ code: "UNKNOWN",
2399
+ message: c(t, n)
2400
+ };
2401
+ if (f(n.raw)) return {
2402
+ code: n.code,
2403
+ message: n.message
2404
+ };
2405
+ let r = {
2406
+ code: n.code,
2407
+ message: t(n.code, n.message) || t("file.upload_failed", "The file could not be uploaded.")
2408
+ };
2409
+ return n.code === "file.upload_failed" && (r.detail = e("file.upload.status", "HTTP status {status}", { status: n.status })), r;
2410
+ }
2411
+ async function Sn(n) {
2412
+ let r = t();
2413
+ try {
2414
+ return await Cn(n, r ? await i() : null);
2415
+ } catch (t) {
2416
+ if (!(t instanceof Z && t.status === 401 && (t.code === "auth.token_refresh_needed" || t.code === "auth.unauthorized"))) throw t;
2417
+ let o = null;
2418
+ try {
2419
+ r ? (a(), o = await i()) : await e();
2420
+ } catch {
2421
+ throw b()(), t;
2422
+ }
2423
+ try {
2424
+ return await Cn(n, o);
2425
+ } catch (e) {
2426
+ throw e instanceof Z && e.status === 401 && b()(), e;
2427
+ }
2428
+ }
2429
+ }
2430
+ function Cn(e, t) {
2431
+ let { file: n, entityCode: r, fieldCode: i, slotCode: a, onProgress: o, signal: s } = e;
2432
+ return new Promise((e, c) => {
2433
+ let l = new XMLHttpRequest();
2434
+ if (l.open("POST", wn(r, i, a)), l.withCredentials = t === null, t && l.setRequestHeader("Authorization", `Bearer ${t}`), l.upload.onprogress = (e) => {
2435
+ if (!o) return;
2436
+ let t = e.lengthComputable ? e.total : n.size, r = t > 0 ? Math.min(100, Math.round(e.loaded / t * 100)) : 0;
2437
+ o({
2438
+ loaded: e.loaded,
2439
+ total: t,
2440
+ pct: r
2441
+ });
2442
+ }, l.onload = () => {
2443
+ let t = l.responseText || "", n = null;
2444
+ try {
2445
+ n = t ? JSON.parse(t) : null;
2446
+ } catch {}
2447
+ if (l.status >= 200 && l.status < 300) {
2448
+ let t = Tn(n);
2449
+ if (!t || !t.id) {
2450
+ c(new Z(l.status, "file.upload_no_id", "The upload finished but returned no file identifier."));
2451
+ return;
2452
+ }
2453
+ e(t);
2454
+ return;
2455
+ }
2456
+ let r = f(n) ? d(n.type) : "", i = f(n) ? n.title : "";
2457
+ c(new Z(l.status, r || "file.upload_failed", i, n));
2458
+ }, l.onerror = () => {
2459
+ c(new Z(0, "file.upload_network", "The upload stopped because the network connection failed."));
2460
+ }, l.onabort = () => {
2461
+ c(new Z(0, "ABORTED", "Upload aborted"));
2462
+ }, s) {
2463
+ if (s.aborted) {
2464
+ l.abort(), c(new Z(0, "ABORTED", "Upload aborted"));
2465
+ return;
2466
+ }
2467
+ s.addEventListener("abort", () => l.abort(), { once: !0 });
2468
+ }
2469
+ let u = new FormData();
2470
+ u.append("file", n, n.name), l.send(u);
2471
+ });
2472
+ }
2473
+ function wn(e, t, n) {
2474
+ let r = new URLSearchParams();
2475
+ e && t && (r.set("entity_code", e), r.set("field_code", t), n && r.set("slot_code", n));
2476
+ let i = r.toString();
2477
+ return i ? `/api/files/upload?${i}` : "/api/files/upload";
2478
+ }
2479
+ function Tn(e) {
2480
+ return Dn(e) ? Dn(e.result) ? Tn(e.result) : Dn(e.file) ? En(e.file) : typeof e.id == "string" ? e : null : null;
2481
+ }
2482
+ function En(e) {
2483
+ let t = On(e.file_id);
2484
+ return t ? {
2485
+ id: t,
2486
+ filename: On(e.filename_original) ?? On(e.filename_normalized) ?? t,
2487
+ content_type: On(e.content_type) ?? "application/octet-stream",
2488
+ size_bytes: kn(e.size_bytes) ?? 0,
2489
+ sha256: On(e.sha256) ?? "",
2490
+ dedup: An(e.dedup)
2491
+ } : null;
2492
+ }
2493
+ function Dn(e) {
2494
+ return typeof e == "object" && !!e;
2495
+ }
2496
+ function On(e) {
2497
+ return typeof e == "string" ? e : void 0;
2498
+ }
2499
+ function kn(e) {
2500
+ return typeof e == "number" ? e : void 0;
2501
+ }
2502
+ function An(e) {
2503
+ return typeof e == "boolean" ? e : void 0;
2504
+ }
2505
+ async function jn(e) {
2506
+ await x("files.discard", { file_id: e });
2507
+ }
2508
+ var Mn = "This file is larger than the deployment allows.", Nn = "This file does not satisfy the field it was attached to.";
2509
+ function Pn(e, t, n) {
2510
+ if (n && e.size > n) return {
2511
+ code: "file.too_large",
2512
+ message: Mn,
2513
+ size: e.size,
2514
+ max: n
2515
+ };
2516
+ if (t && t.length > 0) {
2517
+ let n = e.type || "application/octet-stream";
2518
+ if (!t.some((e) => In(e, n))) return {
2519
+ code: "file.field_violation",
2520
+ message: Nn,
2521
+ type: n
2522
+ };
2523
+ }
2524
+ return null;
2525
+ }
2526
+ function Fn(e, t, n) {
2527
+ return n.code === "file.too_large" ? {
2528
+ code: n.code,
2529
+ message: t(n.code, Mn),
2530
+ detail: e("file.upload.size_limit", "{size} of {max} allowed", {
2531
+ size: Ln(n.size),
2532
+ max: Ln(n.max)
2533
+ })
2534
+ } : {
2535
+ code: n.code,
2536
+ message: t(n.code, Nn),
2537
+ detail: e("file.upload.type", "Type: {type}", { type: n.type })
2538
+ };
2539
+ }
2540
+ function In(e, t) {
2541
+ if (e === "*/*" || e === "*") return !0;
2542
+ if (e.endsWith("/*")) {
2543
+ let n = e.slice(0, e.length - 1);
2544
+ return t.startsWith(n);
2545
+ }
2546
+ return e === t;
2547
+ }
2548
+ function Ln(e) {
2549
+ if (e < 1024) return `${e} B`;
2550
+ let t = [
2551
+ "KB",
2552
+ "MB",
2553
+ "GB"
2554
+ ], n = e / 1024, r = 0;
2555
+ for (; n >= 1024 && r < t.length - 1;) n /= 1024, r++;
2556
+ return `${n.toFixed(n >= 10 ? 0 : 1)} ${t[r]}`;
2557
+ }
2558
+ //#endregion
2559
+ //#region src/components/file-widgets/draft-scope.tsx
2560
+ var Rn = re({
2561
+ registerDraft() {},
2562
+ unregisterDraft() {},
2563
+ hasDraft() {
2564
+ return !1;
2565
+ },
2566
+ flushAllDrafts: async () => {},
2567
+ markCommitted() {}
2568
+ });
2569
+ function zn({ children: e }) {
2570
+ let t = R(/* @__PURE__ */ new Map()), n = L(() => ({
2571
+ registerDraft(e) {
2572
+ t.current.set(e.fileId, e);
2573
+ },
2574
+ unregisterDraft(e) {
2575
+ t.current.delete(e);
2576
+ },
2577
+ hasDraft(e) {
2578
+ return t.current.has(e);
2579
+ },
2580
+ markCommitted(e) {
2581
+ t.current.delete(e);
2582
+ },
2583
+ async flushAllDrafts() {
2584
+ let e = Array.from(t.current.values());
2585
+ t.current.clear(), await Promise.allSettled(e.map((e) => Promise.resolve(e.discard())));
2586
+ }
2587
+ }), []);
2588
+ return /* @__PURE__ */ V(Rn.Provider, {
2589
+ value: n,
2590
+ children: e
2591
+ });
2592
+ }
2593
+ function Bn() {
2594
+ return ae(Rn);
2595
+ }
2596
+ function Vn() {
2597
+ let e = Bn();
2598
+ return {
2599
+ register: I((t, n) => {
2600
+ e.registerDraft({
2601
+ fileId: t,
2602
+ discard: n
2603
+ });
2604
+ }, [e]),
2605
+ unregister: I((t) => {
2606
+ e.unregisterDraft(t);
2607
+ }, [e]),
2608
+ markCommitted: I((t) => {
2609
+ e.markCommitted(t);
2610
+ }, [e]),
2611
+ isDraft: I((t) => e.hasDraft(t), [e])
2612
+ };
2613
+ }
2614
+ //#endregion
2615
+ //#region src/components/fields/RichTextField.tsx
2616
+ function Hn(e) {
2617
+ let { field: t, entityCode: n, fieldName: r, value: i, mode: a, onChange: o, record: s, compact: c, fieldId: l, t: u } = e, d = E("errors"), f = R(null), p = R(null), m = R(/* @__PURE__ */ new Map()), h = R(/* @__PURE__ */ new Set()), [g, _] = z(0), [v, y] = z(null), { register: b, unregister: x } = Vn(), S = s?.$files?.[r], C = L(() => pn(i, S), [S, i]), w = C.markdown, ee = t.files?.accepts, T = t.files?.max_size_bytes, D = (e, t = C.files) => {
2618
+ let n = new Set(_n(e)), r = [];
2619
+ for (let e of h.current) n.has(e) || r.push(e);
2620
+ if (r.length > 0) {
2621
+ for (let e of r) {
2622
+ h.current.delete(e), x(e), jn(e).catch(() => {});
2623
+ let t = m.current.get(e);
2624
+ t && (URL.revokeObjectURL(t), m.current.delete(e));
2625
+ }
2626
+ o?.(hn({
2627
+ markdown: e,
2628
+ files: t
2629
+ }, r));
2630
+ } else o?.({
2631
+ markdown: e,
2632
+ files: t
2633
+ });
2634
+ }, te = (e, t, n) => {
2635
+ let r = f.current, i = r?.selectionStart ?? e.markdown.length, a = r?.selectionEnd ?? e.markdown.length, o = `${e.markdown.slice(0, i)}${t}${e.markdown.slice(a)}`, s = n ? mn(e, n).files : e.files;
2636
+ D(o, s), requestAnimationFrame(() => {
2637
+ if (!r) return;
2638
+ let e = i + t.length;
2639
+ r.focus(), r.setSelectionRange(e, e);
2640
+ });
2641
+ }, k = async (e) => {
2642
+ if (!n || !t.files) return;
2643
+ let i = Array.from(e);
2644
+ if (i.length === 0) return;
2645
+ y(null), _((e) => e + i.length);
2646
+ let a = {
2647
+ markdown: w,
2648
+ files: C.files
2649
+ };
2650
+ for (let e of i) {
2651
+ let t = Pn(e, ee, T);
2652
+ if (t) y(Fn(u, d, t).message), _((e) => e - 1);
2653
+ else try {
2654
+ let t = await Sn({
2655
+ file: e,
2656
+ entityCode: n,
2657
+ fieldCode: r
2658
+ }), o = e.type.startsWith("image/") ? URL.createObjectURL(e) : void 0;
2659
+ o && m.current.set(t.id, o);
2660
+ let s = Wn(t, o);
2661
+ if (b(t.id, () => jn(t.id)), h.current.add(t.id), i.length === 1) {
2662
+ let e = Un(a.markdown, yn(s));
2663
+ te(a, e, s), a = mn({
2664
+ markdown: `${a.markdown}${e}`,
2665
+ files: a.files
2666
+ }, s);
2667
+ } else {
2668
+ let e = Un(a.markdown, yn(s));
2669
+ a = mn({
2670
+ markdown: `${a.markdown}${e}`,
2671
+ files: a.files
2672
+ }, s), D(a.markdown, a.files);
2673
+ }
2674
+ } catch (e) {
2675
+ y(xn(u, d, e).message);
2676
+ } finally {
2677
+ _((e) => e - 1);
2678
+ }
2679
+ }
2680
+ };
2681
+ return a === "display" ? w ? /* @__PURE__ */ V(X, {
2682
+ content: w,
2683
+ files: C.files
2684
+ }) : /* @__PURE__ */ V("span", {
2685
+ style: {
2686
+ fontSize: 12.5,
2687
+ color: "var(--text-4)"
2688
+ },
2689
+ children: "—"
2690
+ }) : c ? /* @__PURE__ */ V(G, {
2691
+ id: l,
2692
+ name: r,
2693
+ "aria-required": t.required || void 0,
2694
+ value: w,
2695
+ onChange: (e) => D(e)
2696
+ }) : /* @__PURE__ */ H("div", {
2697
+ style: {
2698
+ display: "flex",
2699
+ flexDirection: "column",
2700
+ gap: 10
2701
+ },
2702
+ children: [
2703
+ /* @__PURE__ */ H("div", {
2704
+ style: {
2705
+ display: "flex",
2706
+ alignItems: "center",
2707
+ gap: 8,
2708
+ flexWrap: "wrap"
2709
+ },
2710
+ children: [
2711
+ /* @__PURE__ */ V(A, {
2712
+ kind: "ghost",
2713
+ size: "xs",
2714
+ icon: V(g > 0 ? xe : O.plus, { size: 12 }),
2715
+ onClick: () => p.current?.click(),
2716
+ disabled: !n || !t.files || g > 0,
2717
+ children: g > 0 ? u("field.rich_text.uploading", "Uploading…") : u("field.rich_text.insert_file", "Insert file")
2718
+ }),
2719
+ /* @__PURE__ */ V("span", {
2720
+ style: {
2721
+ fontSize: 11.5,
2722
+ color: "var(--text-3)"
2723
+ },
2724
+ children: u("field.rich_text.hint", "Stores markdown with inline {reference} refs.", { reference: "declarion://file/<id>" })
2725
+ }),
2726
+ !n && /* @__PURE__ */ V("span", {
2727
+ style: {
2728
+ fontSize: 11.5,
2729
+ color: "var(--warn)"
2730
+ },
2731
+ children: u("field.rich_text.needs_entity", "Inline uploads need entity context.")
2732
+ })
2733
+ ]
2734
+ }),
2735
+ /* @__PURE__ */ V("input", {
2736
+ ref: p,
2737
+ type: "file",
2738
+ hidden: !0,
2739
+ accept: ee?.join(","),
2740
+ multiple: !0,
2741
+ onChange: (e) => {
2742
+ e.target.files && k(e.target.files), e.target.value = "";
2743
+ }
2744
+ }),
2745
+ /* @__PURE__ */ V("textarea", {
2746
+ ref: f,
2747
+ id: l,
2748
+ name: r,
2749
+ "aria-required": t.required || void 0,
2750
+ value: w,
2751
+ onChange: (e) => D(e.target.value),
2752
+ onPaste: (e) => {
2753
+ let t = Array.from(e.clipboardData.files ?? []).filter((e) => e.size > 0);
2754
+ t.length !== 0 && (e.preventDefault(), k(t));
2755
+ },
2756
+ onDrop: (e) => {
2757
+ let t = Array.from(e.dataTransfer.files ?? []).filter((e) => e.size > 0);
2758
+ t.length !== 0 && (e.preventDefault(), k(t));
2759
+ },
2760
+ onDragOver: (e) => e.preventDefault(),
2761
+ rows: 12,
2762
+ style: {
2763
+ width: "100%",
2764
+ minHeight: 220,
2765
+ border: "1px solid var(--border)",
2766
+ borderRadius: 8,
2767
+ padding: "10px 12px",
2768
+ fontSize: "var(--control-font-size)",
2769
+ lineHeight: 1.5,
2770
+ fontFamily: "inherit",
2771
+ resize: "vertical",
2772
+ background: "var(--surface)",
2773
+ color: "var(--text)"
2774
+ }
2775
+ }),
2776
+ v && /* @__PURE__ */ V("div", {
2777
+ style: {
2778
+ fontSize: 12,
2779
+ color: "var(--danger)"
2780
+ },
2781
+ children: v
2782
+ }),
2783
+ /* @__PURE__ */ H("div", {
2784
+ style: {
2785
+ border: "1px solid var(--border)",
2786
+ borderRadius: 8,
2787
+ padding: 12,
2788
+ background: "var(--surface-2)"
2789
+ },
2790
+ children: [/* @__PURE__ */ V("div", {
2791
+ style: {
2792
+ fontSize: 11.5,
2793
+ color: "var(--text-3)",
2794
+ marginBottom: 8
2795
+ },
2796
+ children: u("field.rich_text.preview", "Preview")
2797
+ }), w ? /* @__PURE__ */ V(X, {
2798
+ content: w,
2799
+ files: C.files
2800
+ }) : /* @__PURE__ */ V("span", {
2801
+ style: {
2802
+ fontSize: 12.5,
2803
+ color: "var(--text-4)"
2804
+ },
2805
+ children: u("field.rich_text.empty", "Empty")
2806
+ })]
2807
+ })
2808
+ ]
2809
+ });
2810
+ }
2811
+ function Un(e, t) {
2812
+ return e ? e.endsWith("\n\n") ? t : e.endsWith("\n") ? `\n${t}` : `\n\n${t}` : `${t}\n`;
2813
+ }
2814
+ function Wn(e, t) {
2815
+ return {
2816
+ id: e.id,
2817
+ filename: e.filename,
2818
+ content_type: e.content_type,
2819
+ size_bytes: e.size_bytes,
2820
+ sha256: e.sha256,
2821
+ width: e.width,
2822
+ height: e.height,
2823
+ metadata: e.metadata,
2824
+ url: t
2825
+ };
2826
+ }
2827
+ //#endregion
2828
+ //#region src/components/fields/FileReferenceField.tsx
2829
+ function Gn({ entityCode: e, pkValues: t, fieldCode: n, t: r }) {
2830
+ let i = E("errors"), [a, o] = z(!1), [s, l] = z(null);
2831
+ async function u() {
2832
+ if (e && t && !a) {
2833
+ o(!0), l(null);
2834
+ try {
2835
+ let r = await _t(e, t, n);
2836
+ ee(r.blob, r.filename || `${e}-${n}.bin`);
2837
+ } catch (e) {
2838
+ l(c(i, e));
2839
+ } finally {
2840
+ o(!1);
2841
+ }
2842
+ }
2843
+ }
2844
+ return /* @__PURE__ */ H("span", {
2845
+ style: {
2846
+ display: "inline-flex",
2847
+ flexDirection: "column",
2848
+ alignItems: "flex-start",
2849
+ gap: 4,
2850
+ minWidth: 0
2851
+ },
2852
+ children: [/* @__PURE__ */ V(A, {
2853
+ kind: "ghost",
2854
+ size: "xs",
2855
+ disabled: a || !e || !t,
2856
+ onClick: u,
2857
+ children: r("file.download", "Download")
2858
+ }), s && /* @__PURE__ */ V("span", {
2859
+ role: "alert",
2860
+ style: {
2861
+ color: "var(--danger)",
2862
+ whiteSpace: "normal"
2863
+ },
2864
+ children: s
2865
+ })]
2866
+ });
2867
+ }
2868
+ function Kn({ value: e, entityCode: t, entity: n, record: r, fieldName: i, t: a }) {
2869
+ if (typeof e != "string" || e === "") return /* @__PURE__ */ V("span", { children: "—" });
2870
+ let o = n && r ? m(n, r) : void 0, s = o && Object.values(o).every(Boolean) ? o : void 0;
2871
+ return /* @__PURE__ */ V(Gn, {
2872
+ entityCode: t,
2873
+ pkValues: s,
2874
+ fieldCode: i,
2875
+ t: a
2876
+ });
2877
+ }
2878
+ //#endregion
2879
+ //#region src/components/fields/cells/factories/text.ts
2880
+ var qn = () => (e) => e == null || e === "" ? "—" : T(e), Jn = (e) => {
2881
+ let { field: t, t: n } = e, r = t.display?.bool_labels, i = r ? n(r.true) : n("field.bool.yes", "Yes"), a = r ? n(r.false) : n("field.bool.no", "No");
2882
+ return (e) => {
2883
+ if (e == null) return "—";
2884
+ let t = !!e;
2885
+ return /* @__PURE__ */ V(M, {
2886
+ tone: t ? "emerald" : "slate",
2887
+ size: "xs",
2888
+ children: t ? i : a
2889
+ });
2890
+ };
2891
+ }, Yn = /* @__PURE__ */ new Set([
2892
+ "indigo",
2893
+ "emerald",
2894
+ "amber",
2895
+ "rose",
2896
+ "sky",
2897
+ "violet",
2898
+ "slate",
2899
+ "teal"
2900
+ ]);
2901
+ function Xn(e) {
2902
+ return e && Yn.has(e) ? e : "slate";
2903
+ }
2904
+ var Zn = (e) => {
2905
+ let { field: t, t: n } = e, r = /* @__PURE__ */ new Map();
2906
+ if (t.values) for (let e of t.values) r.set(e.code, {
2907
+ tone: Xn(e.color),
2908
+ label: n(e.name) || e.code
2909
+ });
2910
+ if (t.display?.value_map) for (let [e, i] of Object.entries(t.display.value_map)) {
2911
+ let t = r.get(e), a = i.color ? Xn(i.color) : t?.tone ?? "slate", o = (i.label ? n(i.label) : "") || t?.label || e;
2912
+ r.set(e, {
2913
+ tone: a,
2914
+ label: o
2915
+ });
2916
+ }
2917
+ return (e) => {
2918
+ if (e == null || e === "") return "—";
2919
+ let t = T(e), n = r.get(t);
2920
+ return /* @__PURE__ */ V(M, {
2921
+ tone: n?.tone ?? "slate",
2922
+ size: "xs",
2923
+ children: n?.label ?? t
2924
+ });
2925
+ };
2926
+ }, Qn = /* @__PURE__ */ new Set([
2927
+ "indigo",
2928
+ "emerald",
2929
+ "amber",
2930
+ "rose",
2931
+ "sky",
2932
+ "violet",
2933
+ "slate",
2934
+ "teal"
2935
+ ]);
2936
+ function $n(e) {
2937
+ return e && Qn.has(e) ? e : "slate";
2938
+ }
2939
+ var er = (e) => {
2940
+ let { entity: t, t: n } = e, r = /* @__PURE__ */ new Map();
2941
+ if (t?.status_groups) for (let e of Object.values(t.status_groups)) for (let t of e.statuses) r.set(t.code, {
2942
+ tone: $n(t.color),
2943
+ label: n(t.name) || t.code
2944
+ });
2945
+ return (e) => {
2946
+ if (e == null || e === "") return "—";
2947
+ let t = T(e), n = r.get(t);
2948
+ return /* @__PURE__ */ V(M, {
2949
+ tone: n?.tone ?? "slate",
2950
+ size: "xs",
2951
+ children: n?.label ?? t
2952
+ });
2953
+ };
2954
+ }, tr = /* @__PURE__ */ new Set([
2955
+ "indigo",
2956
+ "emerald",
2957
+ "amber",
2958
+ "rose",
2959
+ "sky",
2960
+ "violet",
2961
+ "slate",
2962
+ "teal"
2963
+ ]);
2964
+ function nr(e) {
2965
+ return e && tr.has(e) ? e : null;
2966
+ }
2967
+ var rr = (e) => {
2968
+ let { field: t, t: n } = e, r = /* @__PURE__ */ new Map();
2969
+ if (t.display?.value_map) for (let [e, i] of Object.entries(t.display.value_map)) r.set(e, {
2970
+ label: i.label && n(i.label) || e,
2971
+ tone: nr(i.color)
2972
+ });
2973
+ let i = t.type === "multilang_array";
2974
+ return (e) => !Array.isArray(e) || e.length === 0 ? "—" : /* @__PURE__ */ V("span", {
2975
+ style: {
2976
+ display: "inline-flex",
2977
+ gap: 4,
2978
+ flexWrap: "wrap"
2979
+ },
2980
+ children: e.map((e, t) => {
2981
+ if (i) return /* @__PURE__ */ V(U, { children: n(Yt(e)) || "—" }, t);
2982
+ let a = String(e), o = r.get(a);
2983
+ return o?.tone ? /* @__PURE__ */ V(M, {
2984
+ tone: o.tone,
2985
+ size: "xs",
2986
+ children: o.label
2987
+ }, `${a}-${t}`) : /* @__PURE__ */ V(U, { children: o?.label ?? a }, `${a}-${t}`);
2988
+ })
2989
+ });
2990
+ }, ir = () => (e) => {
2991
+ if (e == null || e === "") return "—";
2992
+ let t = typeof e == "string" ? e : T(e), n = /^(\d{4})-(\d{2})-(\d{2})/.exec(t);
2993
+ if (!n) return t;
2994
+ let [, r, i, a] = n;
2995
+ return `${a}-${i}-${r}`;
2996
+ }, ar = ({ t: e }) => (t) => {
2997
+ if (t == null || t === "") return "—";
2998
+ let n = typeof t == "string" ? t : T(t), { text: r, absolute: i } = l(e.language, n);
2999
+ return /* @__PURE__ */ V("span", {
3000
+ title: i,
3001
+ children: r
3002
+ });
3003
+ }, or = () => (e) => {
3004
+ if (e == null || e === "") return "—";
3005
+ let t = typeof e == "string" ? e : T(e);
3006
+ return D(t);
3007
+ }, sr = 6e4, cr = 3e5, lr = 1440, ur = 43200, dr = 525600;
3008
+ function fr(e, t) {
3009
+ let n = Math.abs(e) / 6e4, r, i;
3010
+ return n < 1 ? [r, i] = ["second", Math.round(Math.abs(e) / 1e3)] : n < 60 ? [r, i] = ["minute", Math.round(n)] : n < lr ? [r, i] = ["hour", Math.round(n / 60)] : n < ur ? [r, i] = ["day", Math.round(n / lr)] : n < dr ? [r, i] = ["month", Math.round(n / ur)] : [r, i] = ["year", Math.round(n / dr)], r === "month" && i === 12 && ([r, i] = ["year", 1]), new Intl.NumberFormat(t, {
3011
+ style: "unit",
3012
+ unit: r,
3013
+ unitDisplay: "long"
3014
+ }).format(i);
3015
+ }
3016
+ var pr = ({ t: e }) => (t) => {
3017
+ if (t == null || t === "") return "—";
3018
+ let n = typeof t == "string" ? t : T(t), r = new Date(n);
3019
+ if (isNaN(r.getTime())) return n;
3020
+ let i = D(n), a = Date.now() - r.getTime();
3021
+ if (a <= 0) {
3022
+ let t = fr(a, e.language);
3023
+ return /* @__PURE__ */ V("span", {
3024
+ title: i,
3025
+ children: e("field.next_run.in", "in {distance}", { distance: t })
3026
+ });
3027
+ }
3028
+ if (a <= sr) return /* @__PURE__ */ V("span", {
3029
+ title: i,
3030
+ children: /* @__PURE__ */ V(M, {
3031
+ tone: "slate",
3032
+ size: "xs",
3033
+ children: e("field.next_run.due", "due")
3034
+ })
3035
+ });
3036
+ let o = fr(a, e.language);
3037
+ return /* @__PURE__ */ V("span", {
3038
+ title: i,
3039
+ children: /* @__PURE__ */ V(M, {
3040
+ tone: a <= cr ? "amber" : "rose",
3041
+ size: "xs",
3042
+ children: e("field.next_run.overdue", "overdue {distance}", { distance: o })
3043
+ })
3044
+ });
3045
+ }, mr = (e) => {
3046
+ let { field: t, t: n } = e, r = t.display?.currency || "USD", i = t.display?.currency_field, a = hr(t.display?.currency_display), o = gr(typeof t.scale == "number" ? t.scale : 2, 0, 6), s = /* @__PURE__ */ new Map();
3047
+ return (e, t = {}) => {
3048
+ if (e == null || e === "") return "—";
3049
+ let c = typeof e == "number" ? e : Number(e);
3050
+ if (!Number.isFinite(c)) return T(e);
3051
+ let l = i ? t[i] : void 0, u = typeof l == "string" && l !== "" ? l : r, d = `${n.language}:${u}:${a}:${o}`, f = s.get(d);
3052
+ return f || (f = new Intl.NumberFormat(n.language, {
3053
+ style: "currency",
3054
+ currency: u,
3055
+ currencyDisplay: a,
3056
+ minimumFractionDigits: o,
3057
+ maximumFractionDigits: o
3058
+ }), s.set(d, f)), f.format(c);
3059
+ };
3060
+ };
3061
+ function hr(e) {
3062
+ switch (e) {
3063
+ case "narrow_symbol": return "narrowSymbol";
3064
+ case "code":
3065
+ case "name":
3066
+ case "symbol": return e;
3067
+ default: return "symbol";
3068
+ }
3069
+ }
3070
+ function gr(e, t, n) {
3071
+ return e < t ? t : e > n ? n : e;
3072
+ }
3073
+ //#endregion
3074
+ //#region src/components/fields/cells/factories/refLink.tsx
3075
+ var _r = (e) => {
3076
+ let { field: t, entities: n, screens: r, refs: i, surface: a, detailScreen: o } = e, s = t.ref?.entity, c = s ? n?.[s] : void 0, l = typeof i == "function" ? i : () => i, u = a === "detail", d = c?.display?.icon, f = t.display?.ref_display_field || "$display", p = o || c?.detail_screen, m = (p ? r?.[p] : void 0)?.route, h = c ? g(c)[0] ?? "id" : "id";
3077
+ return (t, n) => {
3078
+ if (t == null || t === "") return "—";
3079
+ let r = T(t), i = vr(e.t, r, s, l(), f), a = s ? l()?.[s]?.[r] : void 0, o = a?.[h] == null ? r : T(a[h]), c = m ? m.replace(":id", encodeURIComponent(o)) : void 0;
3080
+ if (u) {
3081
+ let e = /* @__PURE__ */ H(B, { children: [d && /* @__PURE__ */ V("span", {
3082
+ style: {
3083
+ color: "var(--text-3)",
3084
+ display: "flex",
3085
+ flexShrink: 0
3086
+ },
3087
+ children: /* @__PURE__ */ V(ne, {
3088
+ name: d,
3089
+ size: 13
3090
+ })
3091
+ }), /* @__PURE__ */ V("span", {
3092
+ style: {
3093
+ overflow: "hidden",
3094
+ textOverflow: "ellipsis",
3095
+ whiteSpace: "nowrap"
3096
+ },
3097
+ children: i
3098
+ })] });
3099
+ return c ? /* @__PURE__ */ V("a", {
3100
+ href: c,
3101
+ rel: "noopener noreferrer",
3102
+ className: "detail-ref-chip",
3103
+ children: e
3104
+ }) : /* @__PURE__ */ V("span", {
3105
+ className: "detail-ref-chip",
3106
+ children: e
3107
+ });
3108
+ }
3109
+ return c ? /* @__PURE__ */ V("a", {
3110
+ href: c,
3111
+ rel: "noopener noreferrer",
3112
+ style: {
3113
+ color: "inherit",
3114
+ textDecoration: "underline",
3115
+ textUnderlineOffset: 2
3116
+ },
3117
+ children: i
3118
+ }) : i;
3119
+ };
3120
+ };
3121
+ function vr(e, t, n, r, i) {
3122
+ let a = n && r ? r[n]?.[t] : void 0;
3123
+ return a ? p(e, a, i, t) : t;
3124
+ }
3125
+ //#endregion
3126
+ //#region src/components/fields/cells/factories/url-helpers.ts
3127
+ var yr = /^(https?|ftps?|ssh|mailto|tel):/i, br = /^(info|name|tech|site|cloud|online|store|shop|blog|space|world|link|live|page|zone|life|team|work|host|land|news|wiki|mobi|coop|aero|asia)$/i;
3128
+ function xr(e) {
3129
+ return /^[a-z]{2,3}$/i.test(e) || br.test(e);
3130
+ }
3131
+ function Sr(e) {
3132
+ if (!e.includes(".")) return !1;
3133
+ let t = e.split(".");
3134
+ if (t.length < 3) return !0;
3135
+ let n = t[0].toLowerCase();
3136
+ return /^(com|org|net|edu|gov)$/.test(n) ? !1 : !/^(io|app|dev)$/.test(n) || xr(t[t.length - 1]);
3137
+ }
3138
+ function Cr(e) {
3139
+ if (yr.test(e)) return e;
3140
+ let t = e.match(/^([a-z][a-z0-9+.-]*):/i);
3141
+ if (t) {
3142
+ let n = t[1], r = e.slice(t[0].length);
3143
+ if (/^\d+([/?#]|$)/.test(r) && Sr(n)) {
3144
+ let t = parseInt(r, 10);
3145
+ if (t >= 1 && t <= 65535) return `https://${e}`;
3146
+ }
3147
+ return n.toLowerCase() === "localhost" ? `https://${e}` : null;
3148
+ }
3149
+ return `https://${e}`;
3150
+ }
3151
+ function wr(e) {
3152
+ try {
3153
+ return new URL(e).hostname.replace(/^www\./i, "") || null;
3154
+ } catch {
3155
+ return null;
3156
+ }
3157
+ }
3158
+ function Tr(e, t) {
3159
+ if (t !== "linkedin.com") return null;
3160
+ try {
3161
+ let t = new URL(e).pathname.match(/^\/(in|company|school)\/([^/]+)/i);
3162
+ if (t) return `${t[1].toLowerCase()}/${decodeURIComponent(t[2])}`;
3163
+ } catch {}
3164
+ return null;
3165
+ }
3166
+ function Er(e) {
3167
+ try {
3168
+ return new URL(e), !0;
3169
+ } catch {
3170
+ return !1;
3171
+ }
3172
+ }
3173
+ //#endregion
3174
+ //#region src/components/fields/cells/factories/host-icons.tsx
3175
+ function Dr(e, t = "0 0 24 24") {
3176
+ return (n) => /* @__PURE__ */ V("svg", {
3177
+ width: 16,
3178
+ height: 16,
3179
+ viewBox: t,
3180
+ fill: "none",
3181
+ stroke: "currentColor",
3182
+ strokeWidth: 1.5,
3183
+ strokeLinecap: "round",
3184
+ strokeLinejoin: "round",
3185
+ "aria-hidden": "true",
3186
+ style: { flexShrink: 0 },
3187
+ ...n,
3188
+ children: e
3189
+ });
3190
+ }
3191
+ var Or = Dr(/* @__PURE__ */ H(B, { children: [/* @__PURE__ */ V("circle", {
3192
+ cx: "12",
3193
+ cy: "12",
3194
+ r: "9"
3195
+ }), /* @__PURE__ */ V("path", { d: "M3 12h18M12 3c3 3 3 15 0 18-3-3-3-15 0-18" })] })), kr = () => /* @__PURE__ */ V(te, {
3196
+ size: 16,
3197
+ style: {
3198
+ flexShrink: 0,
3199
+ color: "#0A66C2"
3200
+ }
3201
+ }), Ar = (e) => /* @__PURE__ */ V("svg", {
3202
+ width: 16,
3203
+ height: 16,
3204
+ viewBox: "0 0 24 24",
3205
+ fill: "currentColor",
3206
+ "aria-hidden": "true",
3207
+ style: { flexShrink: 0 },
3208
+ ...e,
3209
+ children: /* @__PURE__ */ V("path", { d: "M12 .5a11.5 11.5 0 0 0-3.64 22.41c.58.1.79-.25.79-.56 0-.27-.01-1-.02-1.96-3.21.7-3.89-1.55-3.89-1.55-.52-1.34-1.28-1.7-1.28-1.7-1.05-.72.08-.7.08-.7 1.16.08 1.77 1.2 1.77 1.2 1.03 1.77 2.71 1.26 3.37.96.1-.75.4-1.26.73-1.55-2.56-.29-5.26-1.28-5.26-5.71 0-1.26.45-2.3 1.19-3.11-.12-.29-.52-1.46.11-3.05 0 0 .97-.31 3.18 1.19a11.05 11.05 0 0 1 5.79 0c2.21-1.5 3.18-1.19 3.18-1.19.63 1.59.23 2.76.11 3.05.74.81 1.19 1.85 1.19 3.11 0 4.44-2.71 5.42-5.29 5.7.41.36.78 1.07.78 2.16 0 1.56-.01 2.81-.01 3.19 0 .31.21.68.8.56A11.5 11.5 0 0 0 12 .5z" })
3210
+ }), jr = (e) => /* @__PURE__ */ V("svg", {
3211
+ width: 16,
3212
+ height: 16,
3213
+ viewBox: "0 0 24 24",
3214
+ fill: "currentColor",
3215
+ "aria-hidden": "true",
3216
+ style: { flexShrink: 0 },
3217
+ ...e,
3218
+ children: /* @__PURE__ */ V("path", { d: "M18.244 2H21.5l-7.62 8.71L23 22h-7.05l-5.52-7.21L4.07 22H.81l8.18-9.34L1 2h7.22l5 6.59L18.244 2zm-2.47 18h1.95L7.32 4h-2.1l10.55 16z" })
3219
+ }), Mr = (e) => /* @__PURE__ */ V("svg", {
3220
+ width: 16,
3221
+ height: 16,
3222
+ viewBox: "0 0 24 24",
3223
+ fill: "#FF0000",
3224
+ "aria-hidden": "true",
3225
+ style: { flexShrink: 0 },
3226
+ ...e,
3227
+ children: /* @__PURE__ */ V("path", { d: "M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.6 12 3.6 12 3.6s-7.5 0-9.4.5A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.5 9.4.5 9.4.5s7.5 0 9.4-.5a3 3 0 0 0 2.1-2.1c.5-1.9.5-5.8.5-5.8s0-3.9-.5-5.8zM9.6 15.6V8.4l6.2 3.6-6.2 3.6z" })
3228
+ }), Nr = (e) => /* @__PURE__ */ V("svg", {
3229
+ width: 16,
3230
+ height: 16,
3231
+ viewBox: "0 0 24 24",
3232
+ fill: "#EA4335",
3233
+ "aria-hidden": "true",
3234
+ style: { flexShrink: 0 },
3235
+ ...e,
3236
+ children: /* @__PURE__ */ V("path", { d: "M24 5.45v13.1A1.45 1.45 0 0 1 22.55 20H19.5V9.27L12 14.7 4.5 9.27V20H1.45A1.45 1.45 0 0 1 0 18.55V5.45A1.45 1.45 0 0 1 1.45 4h.5l10.05 7.27L22.05 4h.5A1.45 1.45 0 0 1 24 5.45z" })
3237
+ }), Pr = (e) => /* @__PURE__ */ H("svg", {
3238
+ width: 16,
3239
+ height: 16,
3240
+ viewBox: "0 0 24 24",
3241
+ "aria-hidden": "true",
3242
+ style: { flexShrink: 0 },
3243
+ ...e,
3244
+ children: [
3245
+ /* @__PURE__ */ V("path", {
3246
+ fill: "#E01E5A",
3247
+ d: "M5.04 15.12a2.52 2.52 0 1 1-2.52-2.52h2.52v2.52zm1.27 0a2.52 2.52 0 1 1 5.04 0v6.32a2.52 2.52 0 1 1-5.04 0v-6.32z"
3248
+ }),
3249
+ /* @__PURE__ */ V("path", {
3250
+ fill: "#36C5F0",
3251
+ d: "M8.83 5.04a2.52 2.52 0 1 1 2.52-2.52v2.52H8.83zm0 1.27a2.52 2.52 0 1 1 0 5.04H2.52a2.52 2.52 0 1 1 0-5.04h6.31z"
3252
+ }),
3253
+ /* @__PURE__ */ V("path", {
3254
+ fill: "#2EB67D",
3255
+ d: "M18.96 8.83a2.52 2.52 0 1 1 2.52 2.52h-2.52V8.83zm-1.27 0a2.52 2.52 0 1 1-5.04 0V2.52a2.52 2.52 0 1 1 5.04 0v6.31z"
3256
+ }),
3257
+ /* @__PURE__ */ V("path", {
3258
+ fill: "#ECB22E",
3259
+ d: "M15.17 18.96a2.52 2.52 0 1 1-2.52 2.52v-2.52h2.52zm0-1.27a2.52 2.52 0 1 1 0-5.04h6.31a2.52 2.52 0 1 1 0 5.04h-6.31z"
3260
+ })
3261
+ ]
3262
+ }), Fr = (e) => /* @__PURE__ */ V("svg", {
3263
+ width: 16,
3264
+ height: 16,
3265
+ viewBox: "0 0 24 24",
3266
+ fill: "currentColor",
3267
+ "aria-hidden": "true",
3268
+ style: { flexShrink: 0 },
3269
+ ...e,
3270
+ children: /* @__PURE__ */ V("path", { d: "M4.46 3.83 14.94 3a3.7 3.7 0 0 1 2.5.62l3 2.16a1.4 1.4 0 0 1 .56 1.31v13.06a1.7 1.7 0 0 1-1.66 1.7l-12.5.78a2.4 2.4 0 0 1-1.85-.62L2.5 19.7a1.7 1.7 0 0 1-.5-1.2V5.16c0-.74.6-1.27 1.46-1.33l1-.01zm.46 1.86c-.31 0-.46.16-.46.47v12.25c0 .31.16.47.46.47l11.62-.7c.31 0 .46-.16.46-.47V6c0-.32-.16-.47-.46-.47L4.92 5.7zm5.57 2.32c.16 0 .31.16.31.31v.46l3.7.23c.31 0 .46.16.46.47v8.32c0 .31-.16.47-.46.47l-3.7.23c-.31 0-.46-.16-.46-.47V8.78c0-.16.15-.32.15-.46l-.04-.31z" })
3271
+ }), Ir = {
3272
+ "linkedin.com": kr,
3273
+ "github.com": Ar,
3274
+ "x.com": jr,
3275
+ "twitter.com": jr,
3276
+ "youtube.com": Mr,
3277
+ "youtu.be": Mr,
3278
+ "gmail.com": Nr,
3279
+ "mail.google.com": Nr,
3280
+ "slack.com": Pr,
3281
+ "notion.so": Fr,
3282
+ "notion.com": Fr
3283
+ };
3284
+ function Lr(e, t) {
3285
+ return !e || t === "none" ? null : t === "google" ? `https://www.google.com/s2/favicons?domain=${encodeURIComponent(e)}&sz=32` : `https://${e}/favicon.ico`;
3286
+ }
3287
+ var Rr = {
3288
+ width: 16,
3289
+ height: 16,
3290
+ flexShrink: 0,
3291
+ objectFit: "contain"
3292
+ };
3293
+ function zr({ domain: e, source: t }) {
3294
+ let n = e ? e.toLowerCase() : "", r = n ? Ir[n] : void 0;
3295
+ if (r) return /* @__PURE__ */ V(r, {});
3296
+ let i = Lr(n, t);
3297
+ return i ? /* @__PURE__ */ V(Br, { src: i }) : /* @__PURE__ */ V(Or, {});
3298
+ }
3299
+ function Br({ src: e }) {
3300
+ let [t, n] = z(!1);
3301
+ return oe(() => {
3302
+ n(!1);
3303
+ }, [e]), t ? /* @__PURE__ */ V(Or, {}) : /* @__PURE__ */ V("img", {
3304
+ src: e,
3305
+ alt: "",
3306
+ width: 16,
3307
+ height: 16,
3308
+ loading: "lazy",
3309
+ decoding: "async",
3310
+ referrerPolicy: "no-referrer",
3311
+ style: Rr,
3312
+ onError: () => n(!0)
3313
+ });
3314
+ }
3315
+ var Q = /* @__PURE__ */ V("span", {
3316
+ style: {
3317
+ fontSize: 12.5,
3318
+ color: "var(--text-4)"
3319
+ },
3320
+ children: "—"
3321
+ }), Vr = {
3322
+ display: "inline-flex",
3323
+ alignItems: "center",
3324
+ gap: 4,
3325
+ fontSize: 12.5,
3326
+ color: "var(--accent)",
3327
+ textDecoration: "none"
3328
+ }, Hr = { fontSize: 12.5 }, Ur = (e) => {
3329
+ let t = e.field.display?.favicon_source ?? "google";
3330
+ return (e) => {
3331
+ let n = e == null ? "" : T(e);
3332
+ if (!n) return Q;
3333
+ let r = Cr(n);
3334
+ if (r == null || !Er(r)) return /* @__PURE__ */ V("span", {
3335
+ style: Hr,
3336
+ children: n
3337
+ });
3338
+ let i = wr(r), a = Tr(r, i ?? "") ?? i ?? n;
3339
+ return /* @__PURE__ */ H("a", {
3340
+ href: r,
3341
+ target: "_blank",
3342
+ rel: "noopener noreferrer",
3343
+ title: n,
3344
+ className: "mono",
3345
+ style: Vr,
3346
+ children: [
3347
+ /* @__PURE__ */ V(zr, {
3348
+ domain: i,
3349
+ source: t
3350
+ }),
3351
+ a,
3352
+ /* @__PURE__ */ V(O.external, { size: 11 })
3353
+ ]
3354
+ });
3355
+ };
3356
+ }, Wr = {
3357
+ display: "inline-block",
3358
+ maxWidth: "100%",
3359
+ verticalAlign: "top",
3360
+ overflow: "hidden",
3361
+ textOverflow: "ellipsis",
3362
+ whiteSpace: "nowrap",
3363
+ fontSize: 12.5,
3364
+ color: "var(--accent)",
3365
+ textDecoration: "none"
3366
+ }, Gr = () => (e) => {
3367
+ let t = e == null ? "" : T(e);
3368
+ return t ? /* @__PURE__ */ V("a", {
3369
+ href: `mailto:${t}`,
3370
+ title: t,
3371
+ className: "mono",
3372
+ style: Wr,
3373
+ children: t
3374
+ }) : Q;
3375
+ }, Kr = {
3376
+ fontSize: 12.5,
3377
+ color: "var(--accent)",
3378
+ textDecoration: "none"
3379
+ }, qr = { fontSize: 12.5 }, Jr = /^[+()\-.\s\d]+$/, Yr = () => (e) => {
3380
+ let t = e == null ? "" : T(e);
3381
+ if (!t) return Q;
3382
+ let n = t.trim();
3383
+ if (!Jr.test(n)) return /* @__PURE__ */ V("span", {
3384
+ style: qr,
3385
+ children: t
3386
+ });
3387
+ let r = n.replace(/\s+/g, "");
3388
+ return /* @__PURE__ */ V("a", {
3389
+ href: `tel:${r}`,
3390
+ className: "mono",
3391
+ style: Kr,
3392
+ children: t
3393
+ });
3394
+ }, Xr = {
3395
+ fontSize: 12.5,
3396
+ fontVariantNumeric: "tabular-nums"
3397
+ }, Zr = {
3398
+ color: "var(--text-3)",
3399
+ marginLeft: 4
3400
+ }, Qr = { fontSize: 12.5 }, $r = (e) => {
3401
+ let { field: t, fieldName: n, t: r } = e, i = new Intl.NumberFormat(r.language), a = t.type === "decimal", o = t.unit ? t.unit.display || t.unit.storage : void 0;
3402
+ return (e, t) => {
3403
+ if (e == null) return Q;
3404
+ let r = t.$units?.[n] || (o && !o.startsWith("$") ? o : void 0), s;
3405
+ if (a && typeof e == "string") s = Rt(e, i);
3406
+ else {
3407
+ let t = typeof e == "number" ? e : Number(e);
3408
+ s = Number.isFinite(t) ? i.format(t) : null;
3409
+ }
3410
+ return s == null ? /* @__PURE__ */ V("span", {
3411
+ style: Qr,
3412
+ children: "—"
3413
+ }) : /* @__PURE__ */ H("span", {
3414
+ className: "num",
3415
+ style: Xr,
3416
+ children: [s, r && /* @__PURE__ */ V("span", {
3417
+ style: Zr,
3418
+ children: r
3419
+ })]
3420
+ });
3421
+ };
3422
+ }, ei = { fontSize: 12.5 }, ti = () => (e) => e == null || e === "" ? Q : /* @__PURE__ */ V("code", {
3423
+ className: "mono",
3424
+ style: ei,
3425
+ children: T(e)
3426
+ }), ni = {
3427
+ display: "inline-flex",
3428
+ alignItems: "center",
3429
+ gap: 4,
3430
+ fontSize: 12.5,
3431
+ color: "var(--accent)",
3432
+ textDecoration: "none"
3433
+ }, ri = { fontSize: 12.5 }, ii = () => (e) => {
3434
+ let t = e == null ? "" : T(e);
3435
+ if (!t) return Q;
3436
+ let n = Cr(t);
3437
+ return n == null || !Er(n) ? /* @__PURE__ */ V("span", {
3438
+ style: ri,
3439
+ children: t
3440
+ }) : /* @__PURE__ */ H("a", {
3441
+ href: n,
3442
+ target: "_blank",
3443
+ rel: "noopener noreferrer",
3444
+ title: t,
3445
+ className: "mono",
3446
+ style: ni,
3447
+ children: [t, /* @__PURE__ */ V(O.external, { size: 11 })]
3448
+ });
3449
+ }, ai = 400, oi = 2e3;
3450
+ function si(e) {
3451
+ return Math.max(1, Math.min(typeof e == "number" && Number.isFinite(e) ? Math.floor(e) : ai, oi));
3452
+ }
3453
+ function ci(e, t) {
3454
+ return e.length <= t ? e : `${e.slice(0, t)}...`;
3455
+ }
3456
+ function li(e, t, n, r = 0) {
3457
+ if (e == null || e === "") return "";
3458
+ if (typeof e == "string") return ci(e, t);
3459
+ if (typeof e == "number" || typeof e == "boolean") return String(e);
3460
+ if (typeof e != "object") return ci(T(e), t);
3461
+ if (n.has(e)) return "[Circular]";
3462
+ if (r >= 3) return Array.isArray(e) ? "[...]" : "{...}";
3463
+ n.add(e);
3464
+ let i = Array.isArray(e) ? "]" : "}", a = [Array.isArray(e) ? "[" : "{"], o = Array.isArray(e) ? e.map((e, t) => [String(t), e]) : Object.entries(e);
3465
+ for (let [s, c] of o) {
3466
+ let o = a.join(""), l = a.length > 1 ? "," : "", u = Array.isArray(e) ? l : `${l}${JSON.stringify(s)}:`, d = t - o.length - u.length - i.length;
3467
+ if (d <= 0) {
3468
+ a.push(a.length > 1 ? ",..." : "...");
3469
+ break;
3470
+ }
3471
+ let f = li(c, d, n, r + 1);
3472
+ if (a.push(u, f), a.join("").length >= t) {
3473
+ a.push(",...");
3474
+ break;
3475
+ }
3476
+ }
3477
+ return a.push(i), n.delete(e), ci(a.join(""), t);
3478
+ }
3479
+ function ui(e, t) {
3480
+ return li(e, t, /* @__PURE__ */ new WeakSet());
3481
+ }
3482
+ var di = (e) => {
3483
+ let t = e.surface ?? "detail", n = si(e.field.display?.list_preview?.max_chars);
3484
+ return (r) => {
3485
+ if (Kt(r)) return Q;
3486
+ if (t === "list") {
3487
+ let e = ui(r, n);
3488
+ return /* @__PURE__ */ V("span", {
3489
+ className: "font-mono text-xs text-muted-foreground",
3490
+ title: e,
3491
+ children: e
3492
+ });
3493
+ }
3494
+ return /* @__PURE__ */ V(Jt, {
3495
+ field: e.field,
3496
+ fieldName: e.fieldName,
3497
+ value: r,
3498
+ mode: "display",
3499
+ t: e.t
3500
+ });
3501
+ };
3502
+ }, fi = [
3503
+ {
3504
+ pattern: /```[^\n]*\n?([\s\S]*?)```/g,
3505
+ replacement: "$1"
3506
+ },
3507
+ {
3508
+ pattern: /`([^`]+)`/g,
3509
+ replacement: "$1"
3510
+ },
3511
+ {
3512
+ pattern: /!\[([^\]]*)\]\([^)]*\)/g,
3513
+ replacement: "$1"
3514
+ },
3515
+ {
3516
+ pattern: /\[([^\]]+)\]\([^)]*\)/g,
3517
+ replacement: "$1"
3518
+ },
3519
+ {
3520
+ pattern: /\[([^\]]+)\]\[[^\]]*\]/g,
3521
+ replacement: "$1"
3522
+ },
3523
+ {
3524
+ pattern: /^[ \t]*\[[^\]]+\]:[ \t]*\S.*$/gm,
3525
+ replacement: ""
3526
+ },
3527
+ {
3528
+ pattern: /(\*\*\*|\*\*|\*|~~)(?=\S)([\s\S]*?\S)\1/g,
3529
+ replacement: "$2"
3530
+ },
3531
+ {
3532
+ pattern: /(^|[^A-Za-z0-9])(___|__|_)(?=\S)([\s\S]*?\S)\2(?![A-Za-z0-9])/g,
3533
+ replacement: "$1$3"
3534
+ },
3535
+ {
3536
+ pattern: /^[ \t]*#{1,6}[ \t]+/gm,
3537
+ replacement: ""
3538
+ },
3539
+ {
3540
+ pattern: /^[ \t]*>[ \t]?/gm,
3541
+ replacement: ""
3542
+ },
3543
+ {
3544
+ pattern: /^[ \t]*(?:[-*+]|\d+[.)])[ \t]+/gm,
3545
+ replacement: ""
3546
+ },
3547
+ {
3548
+ pattern: /^[ \t]*\|?[ \t]*:?-{2,}[-| :]*$/gm,
3549
+ replacement: ""
3550
+ },
3551
+ {
3552
+ pattern: /\|/g,
3553
+ replacement: " ",
3554
+ structural: !1
3555
+ },
3556
+ {
3557
+ pattern: /<\/?[a-zA-Z][^>]*>/g,
3558
+ replacement: ""
3559
+ },
3560
+ {
3561
+ pattern: /^[ \t]*(?:[-*_][ \t]*){3,}$/gm,
3562
+ replacement: ""
3563
+ }
3564
+ ];
3565
+ function pi(e) {
3566
+ if (!e) return {
3567
+ text: "",
3568
+ isPlain: !0
3569
+ };
3570
+ let t = e, n = !1;
3571
+ for (let e of fi) {
3572
+ let r = t.replace(e.pattern, e.replacement);
3573
+ r !== t && e.structural !== !1 && (n = !0), t = r;
3574
+ }
3575
+ return {
3576
+ text: t.replace(/\s+/g, " ").trim(),
3577
+ isPlain: !n
3578
+ };
3579
+ }
3580
+ //#endregion
3581
+ //#region src/components/fields/cells/factories/markdown.tsx
3582
+ function mi(e) {
3583
+ return /* @__PURE__ */ V(X, { content: e });
3584
+ }
3585
+ var hi = (e) => {
3586
+ let t = e.surface === "list";
3587
+ return (e) => {
3588
+ let n = e == null ? "" : T(e);
3589
+ if (!n) return Q;
3590
+ if (!t) return mi(n);
3591
+ let { text: r, isPlain: i } = pi(n);
3592
+ return i ? /* @__PURE__ */ V("span", {
3593
+ title: r,
3594
+ children: r
3595
+ }) : /* @__PURE__ */ V(ve, {
3596
+ content: mi(n),
3597
+ children: /* @__PURE__ */ V("span", {
3598
+ title: r,
3599
+ children: r
3600
+ })
3601
+ });
3602
+ };
3603
+ }, gi = {
3604
+ fontSize: 12.5,
3605
+ color: "var(--text-3)"
3606
+ }, _i = {
3607
+ fontSize: 12.5,
3608
+ color: "var(--text-4)",
3609
+ fontStyle: "italic"
3610
+ }, vi = ({ t: e }) => {
3611
+ let t = e("field.secret.not_set", "Not set"), n = e("field.secret.set", "Set");
3612
+ return (e) => tn(e) ? /* @__PURE__ */ V("span", {
3613
+ className: "mono",
3614
+ style: gi,
3615
+ children: n
3616
+ }) : /* @__PURE__ */ V("span", {
3617
+ style: _i,
3618
+ children: t
3619
+ });
3620
+ };
3621
+ //#endregion
3622
+ //#region src/components/fields/cells/factories/richTextPreview.tsx
3623
+ function yi(e, t) {
3624
+ return /* @__PURE__ */ V(X, {
3625
+ content: e,
3626
+ files: t
3627
+ });
3628
+ }
3629
+ var bi = (e) => {
3630
+ let { fieldName: t } = e, n = e.surface === "list";
3631
+ return (e, r) => {
3632
+ let i = r?.$files?.[t], a = pn(e, i);
3633
+ if (!a.markdown) return Q;
3634
+ if (!n) return yi(a.markdown, a.files);
3635
+ let { text: o, isPlain: s } = pi(a.markdown);
3636
+ return s ? /* @__PURE__ */ V("span", {
3637
+ title: o,
3638
+ children: o
3639
+ }) : /* @__PURE__ */ V(ve, {
3640
+ content: yi(a.markdown, a.files),
3641
+ children: /* @__PURE__ */ V("span", {
3642
+ title: o,
3643
+ children: o
3644
+ })
3645
+ });
3646
+ };
3647
+ }, xi = { fontSize: 12.5 }, Si = {
3648
+ fontSize: 12.5,
3649
+ whiteSpace: "pre-wrap",
3650
+ margin: 0
3651
+ }, Ci = {
3652
+ text: qn,
3653
+ bool_pill: Jn,
3654
+ badge: Zn,
3655
+ status_pill: er,
3656
+ tag_list: rr,
3657
+ time_ago: ar,
3658
+ timestamp_full: or,
3659
+ date: ir,
3660
+ next_run: pr,
3661
+ money: mr,
3662
+ ref_link: _r,
3663
+ file_ref: (e) => (t, n) => typeof t != "string" || t === "" ? Q : /* @__PURE__ */ V(Kn, {
3664
+ field: e.field,
3665
+ value: t,
3666
+ entity: e.entity,
3667
+ entityCode: e.entityCode,
3668
+ record: n,
3669
+ fieldName: e.fieldName,
3670
+ surface: e.surface,
3671
+ t: e.t,
3672
+ mode: "display"
3673
+ }),
3674
+ url: Ur,
3675
+ email: Gr,
3676
+ phone: Yr,
3677
+ number: $r,
3678
+ code: ti,
3679
+ link: ii,
3680
+ json: di,
3681
+ markdown: hi,
3682
+ password_mask: vi,
3683
+ rich_text_preview: bi,
3684
+ multilang_inline: (e) => {
3685
+ let { field: t, t: n } = e, r = t.type === "multilang_text";
3686
+ return (e) => {
3687
+ let t = Yt(e), i = o(t, n.language, n.deploymentLanguage);
3688
+ if (!i) return r ? /* @__PURE__ */ V("p", {
3689
+ style: Si,
3690
+ children: "—"
3691
+ }) : /* @__PURE__ */ V("span", {
3692
+ style: xi,
3693
+ children: "—"
3694
+ });
3695
+ let [a, s] = i;
3696
+ return r ? /* @__PURE__ */ V("p", {
3697
+ style: Si,
3698
+ lang: a,
3699
+ dir: "auto",
3700
+ children: s
3701
+ }) : /* @__PURE__ */ V("span", {
3702
+ style: xi,
3703
+ lang: a,
3704
+ dir: "auto",
3705
+ children: s
3706
+ });
3707
+ };
3708
+ }
3709
+ };
3710
+ Object.keys(Ci).sort();
3711
+ function wi(e) {
3712
+ let t = e.field.display?.widget ?? "text", n = Ci[t];
3713
+ if (!n) throw Error(`resolveCellRenderer: no factory registered for widget "${t}" (field "${e.fieldName}"). The engine must stamp a smart default at YAML-load time; an unknown widget here indicates an out-of-sync allow-list.`);
3714
+ return n(e);
3715
+ }
3716
+ //#endregion
3717
+ //#region src/components/fields/index.tsx
3718
+ var Ti = {
3719
+ string: yt,
3720
+ text: St,
3721
+ rich_text: Hn,
3722
+ int: zt,
3723
+ float: zt,
3724
+ decimal: zt,
3725
+ bool: Lt,
3726
+ timestamp: It,
3727
+ date: It,
3728
+ time: It,
3729
+ enum: wt,
3730
+ email: Tt,
3731
+ url: Dt,
3732
+ phone: Ot,
3733
+ uuid: yt,
3734
+ bytes: yt,
3735
+ ref: Ut,
3736
+ file_ref: Kn,
3737
+ json: Jt,
3738
+ tags: yt,
3739
+ string_array: on,
3740
+ int_array: un,
3741
+ uuid_array: on,
3742
+ multilang: Xt,
3743
+ multilang_text: Zt,
3744
+ multilang_array: $t,
3745
+ structure: Di,
3746
+ secret: nn,
3747
+ password: rn
3748
+ };
3749
+ for (let e of vt) if (!Ti[e]) throw Error(`editRegistry: missing entry for FieldType "${e}". The FieldType union and editRegistry must cover every field type the server declares.`);
3750
+ function Ei(e) {
3751
+ if (e.field.type === "json" && e.field.structure) return /* @__PURE__ */ V(Di, { ...e });
3752
+ if (e.mode === "edit") {
3753
+ let t = Ti[e.field.type];
3754
+ if (!t) throw Error(`renderField: no edit-mode renderer for FieldType "${e.field.type}" (field "${e.fieldName}"). editRegistry must be total over FieldType; check types/fieldType.ts and components/fields/index.tsx.`);
3755
+ return /* @__PURE__ */ V(t, { ...e });
3756
+ }
3757
+ if (!e.field.display?.widget) throw Error(`renderField: display mode requires a non-empty field.display.widget (field "${e.fieldName}", type "${e.field.type}"). The engine must stamp a smart default; an empty widget here means the field bypassed ResolveDefaultWidgets.`);
3758
+ return wi({
3759
+ field: e.field,
3760
+ fieldName: e.fieldName,
3761
+ surface: e.surface ?? "detail",
3762
+ entity: e.entity,
3763
+ entityCode: e.entityCode,
3764
+ entities: e.entities,
3765
+ screens: e.screens,
3766
+ refs: e.refs,
3767
+ t: e.t,
3768
+ detailScreen: e.detailScreen
3769
+ })(e.value, e.record ?? {});
3770
+ }
3771
+ //#endregion
3772
+ //#region src/components/fields/StructureField.tsx
3773
+ function Di(e) {
3774
+ let { field: t, value: n, mode: i, onChange: a, fieldId: o, labelId: s, nested: c } = e, { data: l } = r(), u = t.structure ? l?.structures?.[t.structure] : void 0;
3775
+ return u ? t.array ? /* @__PURE__ */ V(ki, {
3776
+ structDef: u,
3777
+ value: n,
3778
+ mode: i,
3779
+ onChange: a,
3780
+ fieldId: o,
3781
+ labelId: s,
3782
+ nested: c
3783
+ }) : /* @__PURE__ */ V(Oi, {
3784
+ structDef: u,
3785
+ value: n,
3786
+ mode: i,
3787
+ onChange: a,
3788
+ fieldId: o,
3789
+ labelId: s,
3790
+ nested: c
3791
+ }) : /* @__PURE__ */ V(Jt, { ...e });
3792
+ }
3793
+ function Oi({ structDef: e, value: t, mode: n, onChange: r, fieldId: i, labelId: a, nested: o = !1 }) {
3794
+ let s = E(), c = se(), l = i ?? c, u = typeof t == "object" && t && !Array.isArray(t) ? t : {}, d = e.fields.names(), f = {
3795
+ display: "flex",
3796
+ flexDirection: "column",
3797
+ gap: n === "display" ? 8 : 12,
3798
+ border: "1px solid var(--border)",
3799
+ borderRadius: 8,
3800
+ padding: 12,
3801
+ background: "var(--surface-2)"
3802
+ };
3803
+ if (n === "display") return d.some((e) => u[e] != null && u[e] !== "") ? /* @__PURE__ */ V("div", {
3804
+ style: o ? {
3805
+ display: "flex",
3806
+ flexDirection: "column",
3807
+ gap: 8
3808
+ } : f,
3809
+ children: d.map((t) => {
3810
+ let n = e.fields.get(t);
3811
+ if (!n) return null;
3812
+ let r = u[t];
3813
+ return r == null ? null : /* @__PURE__ */ H("div", {
3814
+ style: {
3815
+ display: "flex",
3816
+ flexWrap: "wrap",
3817
+ alignItems: "baseline",
3818
+ gap: 8
3819
+ },
3820
+ children: [/* @__PURE__ */ V("span", {
3821
+ style: {
3822
+ fontSize: 11.5,
3823
+ fontWeight: 500,
3824
+ color: "var(--text-3)",
3825
+ minWidth: 100,
3826
+ flexShrink: 0
3827
+ },
3828
+ title: s(n.display?.description) || void 0,
3829
+ children: n.display ? s(n.display.name) : t
3830
+ }), /* @__PURE__ */ V("div", {
3831
+ style: {
3832
+ minWidth: 0,
3833
+ flex: "1 1 14rem"
3834
+ },
3835
+ children: n.type === "structure" && n.structure ? /* @__PURE__ */ V(Di, {
3836
+ field: n,
3837
+ fieldName: t,
3838
+ value: r,
3839
+ mode: "display",
3840
+ t: s,
3841
+ nested: !0
3842
+ }) : Ei({
3843
+ field: n,
3844
+ fieldName: t,
3845
+ value: r,
3846
+ mode: "display",
3847
+ t: s
3848
+ })
3849
+ })]
3850
+ }, t);
3851
+ })
3852
+ }) : /* @__PURE__ */ V("span", {
3853
+ style: {
3854
+ fontSize: 12.5,
3855
+ color: "var(--text-4)"
3856
+ },
3857
+ children: "—"
3858
+ });
3859
+ let p = (e) => (t) => {
3860
+ r?.({
3861
+ ...u,
3862
+ [e]: t
3863
+ });
3864
+ };
3865
+ return /* @__PURE__ */ V("div", {
3866
+ style: f,
3867
+ id: i,
3868
+ role: "group",
3869
+ "aria-labelledby": a,
3870
+ children: d.map((t) => {
3871
+ let n = e.fields.get(t);
3872
+ if (!n) return null;
3873
+ let r = n.type === "structure" && !!n.structure, i = `${l}-${t}`, a = `${i}-label`;
3874
+ return /* @__PURE__ */ H("div", {
3875
+ style: {
3876
+ display: "flex",
3877
+ flexDirection: "column",
3878
+ gap: 2
3879
+ },
3880
+ children: [/* @__PURE__ */ V(Se, {
3881
+ required: n.required,
3882
+ id: a,
3883
+ htmlFor: r ? void 0 : i,
3884
+ children: n.display ? s(n.display.name) : t
3885
+ }), r ? /* @__PURE__ */ V(Di, {
3886
+ field: n,
3887
+ t: s,
3888
+ fieldName: t,
3889
+ value: u[t],
3890
+ mode: "edit",
3891
+ onChange: p(t),
3892
+ fieldId: i,
3893
+ labelId: a
3894
+ }) : Ei({
3895
+ field: n,
3896
+ fieldName: t,
3897
+ value: u[t],
3898
+ mode: "edit",
3899
+ onChange: p(t),
3900
+ fieldId: i,
3901
+ labelId: a,
3902
+ t: s
3903
+ })]
3904
+ }, t);
3905
+ })
3906
+ });
3907
+ }
3908
+ function ki({ structDef: e, value: t, mode: n, onChange: r, fieldId: i, labelId: a, nested: o = !1 }) {
3909
+ let s = E(), c = se(), l = i ?? c, u = Array.isArray(t) ? t : [];
3910
+ if (n === "display") return u.length === 0 ? /* @__PURE__ */ V("span", {
3911
+ style: {
3912
+ fontSize: 12.5,
3913
+ color: "var(--text-4)"
3914
+ },
3915
+ children: "—"
3916
+ }) : /* @__PURE__ */ V("div", {
3917
+ style: {
3918
+ display: "flex",
3919
+ flexDirection: "column",
3920
+ gap: 8
3921
+ },
3922
+ children: u.map((t, n) => /* @__PURE__ */ V("div", {
3923
+ style: o && n > 0 ? {
3924
+ borderTop: "1px solid var(--border)",
3925
+ paddingTop: 8
3926
+ } : void 0,
3927
+ children: /* @__PURE__ */ V(Oi, {
3928
+ structDef: e,
3929
+ value: t,
3930
+ mode: "display",
3931
+ nested: o
3932
+ })
3933
+ }, n))
3934
+ });
3935
+ let d = (e) => (t) => {
3936
+ let n = [...u];
3937
+ n[e] = t, r?.(n);
3938
+ }, f = () => {
3939
+ r?.([...u, {}]);
3940
+ }, p = (e) => () => {
3941
+ let t = u.filter((t, n) => n !== e);
3942
+ r?.(t);
3943
+ };
3944
+ return /* @__PURE__ */ H("div", {
3945
+ style: {
3946
+ display: "flex",
3947
+ flexDirection: "column",
3948
+ gap: 8
3949
+ },
3950
+ id: i,
3951
+ role: "group",
3952
+ "aria-labelledby": a,
3953
+ children: [u.map((t, n) => /* @__PURE__ */ H("div", {
3954
+ style: { position: "relative" },
3955
+ children: [/* @__PURE__ */ V(Oi, {
3956
+ structDef: e,
3957
+ value: t,
3958
+ mode: "edit",
3959
+ onChange: d(n),
3960
+ fieldId: `${l}-${n}`
3961
+ }), /* @__PURE__ */ V("div", {
3962
+ style: {
3963
+ position: "absolute",
3964
+ top: 6,
3965
+ right: 6
3966
+ },
3967
+ children: /* @__PURE__ */ V(k, {
3968
+ size: 24,
3969
+ icon: /* @__PURE__ */ V(O.trash, { size: 12 }),
3970
+ onClick: p(n),
3971
+ title: s("field.structure.remove", "Remove")
3972
+ })
3973
+ })]
3974
+ }, n)), /* @__PURE__ */ V("div", { children: /* @__PURE__ */ V(A, {
3975
+ icon: /* @__PURE__ */ V(O.plus, { size: 13 }),
3976
+ onClick: f,
3977
+ children: s("field.array.add", "Add")
3978
+ }) })]
3979
+ });
3980
+ }
3981
+ //#endregion
3982
+ //#region src/lib/field-regions.ts
3983
+ var Ai = /* @__PURE__ */ new Map();
3984
+ function ji(e, t) {
3985
+ return Ai.set(e, t), () => {
3986
+ Ai.get(e) === t && Ai.delete(e);
3987
+ };
3988
+ }
3989
+ function Mi(e) {
3990
+ return Ai.get(e);
3991
+ }
3992
+ //#endregion
3993
+ //#region src/lib/anchor.ts
3994
+ var Ni = 1, Pi = 1e3 * Ni, Fi = 60 * Pi, Ii = 60 * Fi, Li = 24 * Ii, Ri = 7 * Li;
3995
+ 36500 * Li;
3996
+ var zi = {
3997
+ ns: 1e-6,
3998
+ us: .001,
3999
+ µs: .001,
4000
+ ms: Ni,
4001
+ s: Pi,
4002
+ m: Fi,
4003
+ h: Ii,
4004
+ d: Li,
4005
+ w: Ri
4006
+ }, Bi = /^(\d+(?:\.\d+)?|\.\d+)(ns|us|µs|ms|s|m|h|d|w)/i, Vi = /\d(?:mo|y)(?:[^a-zA-Z]|$)/i;
4007
+ function Hi(e) {
4008
+ if (!e || e.trim() !== e || e[0] === "+" || e[0] === "-" || Vi.test(e)) return null;
4009
+ let t = 0, n = e;
4010
+ for (; n.length > 0;) {
4011
+ let e = Bi.exec(n);
4012
+ if (!e) return null;
4013
+ let r = Number(e[1]), i = zi[e[2].toLowerCase()];
4014
+ if (!Number.isFinite(r) || i === void 0 || (t += r * i, t > 31536e8)) return null;
4015
+ n = n.slice(e[0].length);
4016
+ }
4017
+ return t;
4018
+ }
4019
+ function Ui(e) {
4020
+ if (!e.startsWith("now")) return null;
4021
+ let t = e.slice(3), n = 0;
4022
+ for (let e = 0; t.length > 0; e++) {
4023
+ if (e >= 8) return null;
4024
+ let r = t[0] === "+" ? 1 : t[0] === "-" ? -1 : 0;
4025
+ if (r === 0) return null;
4026
+ t = t.slice(1);
4027
+ let i = t, a = t.search(/[+-]/);
4028
+ a >= 0 ? (i = t.slice(0, a), t = t.slice(a)) : t = "";
4029
+ let o = Hi(i);
4030
+ if (o === null || (n += r * o, Math.abs(n) > 31536e8)) return null;
4031
+ }
4032
+ return n;
4033
+ }
4034
+ //#endregion
4035
+ //#region src/lib/ui-actions.ts
4036
+ var Wi = /\$\{\s*([^}]+?)\s*\}/g, Gi = /^\s*\$\{\s*([^}]+?)\s*\}\s*$/, $ = Symbol("unresolved");
4037
+ function Ki(e, t) {
4038
+ let n = e.match(Gi);
4039
+ if (n) {
4040
+ let r = qi(n[1], t);
4041
+ return r === $ ? e : r;
4042
+ }
4043
+ return e.replace(Wi, (e, n) => {
4044
+ let r = qi(n, t);
4045
+ return r === $ ? e : T(r);
4046
+ });
4047
+ }
4048
+ function qi(e, t) {
4049
+ if (e.startsWith("now")) {
4050
+ let t = Ui(e);
4051
+ return t === null ? $ : n(new Date(Date.now() + t));
4052
+ }
4053
+ let [r, ...i] = e.split(".");
4054
+ if (r === "row") return !t.row || i.length === 0 ? $ : Ji(t.row, i);
4055
+ if (r === "field" && i.length >= 2) {
4056
+ let [e, t] = i, n = Mi(e);
4057
+ return n ? n.getField(t) : $;
4058
+ }
4059
+ return r === "params" ? !t.params || i.length === 0 ? $ : Ji(t.params, i) : $;
4060
+ }
4061
+ function Ji(e, t) {
4062
+ return t.reduce((e, t) => {
4063
+ if (e && typeof e == "object") return e[t];
4064
+ }, e);
4065
+ }
4066
+ async function Yi(e, t, n) {
4067
+ for (let r of t) try {
4068
+ await Xi(r, n);
4069
+ } catch (t) {
4070
+ u.error(e("action.ui_step_failed", "A client-side step of this action failed."), c(e, t));
4071
+ return;
4072
+ }
4073
+ }
4074
+ async function Xi(e, t) {
4075
+ if (e.copy_to_clipboard != null) {
4076
+ let n = Qi(e.copy_to_clipboard, t);
4077
+ await navigator.clipboard.writeText(n);
4078
+ } else if (e.set_field) {
4079
+ let { target: n, value: r } = e.set_field, { region: i, field: a } = $i(n), o = Mi(i);
4080
+ if (!o) throw Error(`region "${i}" not registered`);
4081
+ o.setField(a, Zi(r, t));
4082
+ } else if (e.focus_field) {
4083
+ let { region: t, field: n } = $i(e.focus_field), r = Mi(t);
4084
+ if (!r) throw Error(`region "${t}" not registered`);
4085
+ r.focusField(n);
4086
+ } else if (e.show_toast) {
4087
+ let n = Qi(e.show_toast.message, t), r = e.show_toast.kind ?? "info";
4088
+ r === "success" ? u.success(n) : r === "error" ? u.error(n) : u.info(n);
4089
+ }
4090
+ }
4091
+ function Zi(e, t) {
4092
+ return typeof e == "string" ? Ki(e, t) : e;
4093
+ }
4094
+ function Qi(e, t) {
4095
+ return T(Ki(e, t));
4096
+ }
4097
+ function $i(e) {
4098
+ let t = e.indexOf(".");
4099
+ if (t <= 0) throw Error(`invalid path "${e}" (expected "region.field")`);
4100
+ return {
4101
+ region: e.slice(0, t),
4102
+ field: e.slice(t + 1)
4103
+ };
4104
+ }
4105
+ function ea(e) {
4106
+ return !e.handler && !!e.ui_steps && e.ui_steps.length > 0;
4107
+ }
4108
+ //#endregion
4109
+ //#region src/hooks/useUnsavedInput.ts
4110
+ var ta = /* @__PURE__ */ new Map();
4111
+ function na(e) {
4112
+ let { pathname: t } = ue(), n = gt((e) => e.findTabByPathname(t)?.id);
4113
+ ce(() => {
4114
+ if (!e || !n) return;
4115
+ let t = (ta.get(n) ?? 0) + 1;
4116
+ return ta.set(n, t), gt.getState().setDirty(n, !0), () => {
4117
+ let e = (ta.get(n) ?? 1) - 1;
4118
+ e > 0 ? ta.set(n, e) : ta.delete(n), gt.getState().setDirty(n, e > 0);
4119
+ };
4120
+ }, [e, n]);
4121
+ }
4122
+ //#endregion
4123
+ //#region src/lib/mass-edit.ts
4124
+ function ra(e) {
4125
+ if (!e) return [];
4126
+ let t = /* @__PURE__ */ new Set(), n = [];
4127
+ for (let r of e.split(",")) {
4128
+ let e = r.trim();
4129
+ e && !t.has(e) && (t.add(e), n.push(e));
4130
+ }
4131
+ return n;
4132
+ }
4133
+ function ia(e, t, n) {
4134
+ if (!t || !y(t, "update")) return [];
4135
+ let r = Array.isArray(n) ? n : ra(n), i = r.length > 0 ? new Set(r) : null, a = S(t), o = new Set(g(t)), s = i ? r : aa(t, a, o), c = [];
4136
+ for (let n of s) {
4137
+ if (i && !i.has(n)) continue;
4138
+ let r = oa(e, t, n, a, o);
4139
+ r && c.push(r);
4140
+ }
4141
+ return c;
4142
+ }
4143
+ function aa(e, t, n) {
4144
+ let r = [];
4145
+ for (let [t, i] of e.fields) n.has(t) || i.auto || r.push(t);
4146
+ if (!t) {
4147
+ for (let t of Object.keys(e.status_groups ?? {})) r.push(`$status.${t}`);
4148
+ for (let t of Object.keys(e.properties ?? {})) r.push(`$property.${t}`);
4149
+ }
4150
+ return r;
4151
+ }
4152
+ function oa(e, t, n, r, i) {
4153
+ if (n.startsWith("$status.")) {
4154
+ if (r) return null;
4155
+ let i = n.slice(8), a = t.status_groups?.[i];
4156
+ return a ? {
4157
+ code: n,
4158
+ bare: i,
4159
+ kind: "status",
4160
+ label: e(a.name) || i,
4161
+ statusGroup: a
4162
+ } : null;
4163
+ }
4164
+ if (n.startsWith("$property.")) {
4165
+ if (r) return null;
4166
+ let i = n.slice(10), a = t.properties?.[i];
4167
+ return a ? {
4168
+ code: n,
4169
+ bare: i,
4170
+ kind: "property",
4171
+ label: e(a.name) || i,
4172
+ property: a
4173
+ } : null;
4174
+ }
4175
+ if (i.has(n)) return null;
4176
+ let a = t.fields.get(n);
4177
+ return !a || a.auto ? null : {
4178
+ code: n,
4179
+ bare: n,
4180
+ kind: "field",
4181
+ label: e(a.display?.name) || n,
4182
+ field: a
4183
+ };
4184
+ }
4185
+ //#endregion
4186
+ //#region src/components/actions/PropertyGridEditor.tsx
4187
+ var sa = Symbol.for("declarion.mass-edit.multiple");
4188
+ function ca({ entity: e, filterTargets: t, selectedRows: n, value: r, onChange: i }) {
4189
+ let a = E(), o = E("errors"), s = L(() => ia(a, e, t), [
4190
+ a,
4191
+ e,
4192
+ t
4193
+ ]), c = L(() => Object.keys(r).map((e) => {
4194
+ let t = s.find((t) => t.code === e);
4195
+ return t ? {
4196
+ target: t,
4197
+ value: r[e]
4198
+ } : null;
4199
+ }).filter((e) => e !== null), [r, s]), l = L(() => {
4200
+ let e = new Set(c.map((e) => e.target.code));
4201
+ return s.filter((t) => !e.has(t.code));
4202
+ }, [c, s]), u = I((e) => {
4203
+ let t = pa(e, n), a = { ...r };
4204
+ a[e.code] = t === sa ? void 0 : t, i(a);
4205
+ }, [
4206
+ r,
4207
+ n,
4208
+ i
4209
+ ]), d = I((e, t) => {
4210
+ i({
4211
+ ...r,
4212
+ [e]: t
4213
+ });
4214
+ }, [r, i]), f = I((e) => {
4215
+ let t = { ...r };
4216
+ delete t[e], i(t);
4217
+ }, [r, i]);
4218
+ return e ? /* @__PURE__ */ H("div", {
4219
+ style: {
4220
+ display: "flex",
4221
+ flexDirection: "column",
4222
+ gap: 8
4223
+ },
4224
+ children: [
4225
+ c.length === 0 && /* @__PURE__ */ V("div", {
4226
+ style: {
4227
+ fontSize: 12,
4228
+ color: "var(--text-3)"
4229
+ },
4230
+ children: a("action.mass_edit.no_targets", "No targets selected. Add a field, status, or property to edit across all selected rows.")
4231
+ }),
4232
+ c.map((e) => /* @__PURE__ */ V(la, {
4233
+ row: e,
4234
+ onChange: (t) => d(e.target.code, t),
4235
+ onRemove: () => f(e.target.code)
4236
+ }, e.target.code)),
4237
+ /* @__PURE__ */ V(fa, {
4238
+ targets: l,
4239
+ onPick: u
4240
+ })
4241
+ ]
4242
+ }) : /* @__PURE__ */ V("div", {
4243
+ style: {
4244
+ fontSize: 12,
4245
+ color: "var(--text-3)"
4246
+ },
4247
+ children: o("action.mass_edit_entity_missing", "Entity schema unavailable. Mass edit requires an entity-bound action.")
4248
+ });
4249
+ }
4250
+ function la({ row: e, onChange: t, onRemove: n }) {
4251
+ let r = E(), { target: i } = e;
4252
+ return /* @__PURE__ */ H("div", {
4253
+ "data-testid": "mass-edit-row",
4254
+ style: {
4255
+ display: "grid",
4256
+ gridTemplateColumns: "160px 1fr 28px",
4257
+ gap: 8,
4258
+ alignItems: "center"
4259
+ },
4260
+ children: [
4261
+ /* @__PURE__ */ V("div", {
4262
+ style: {
4263
+ fontSize: 12.5,
4264
+ color: "var(--text-2)"
4265
+ },
4266
+ title: i.code,
4267
+ children: i.label
4268
+ }),
4269
+ /* @__PURE__ */ V(ua, {
4270
+ row: e,
4271
+ onChange: t
4272
+ }),
4273
+ /* @__PURE__ */ V(k, {
4274
+ icon: /* @__PURE__ */ V(O.x, { size: 12 }),
4275
+ onClick: n,
4276
+ title: r("action.mass_edit.remove_target", "Remove target")
4277
+ })
4278
+ ]
4279
+ });
4280
+ }
4281
+ function ua({ row: e, onChange: t }) {
4282
+ let n = E(), { target: r } = e, i = e.value === sa, a = i ? n("action.mass_edit.multiple_values", "<multiple values>") : void 0, o = i ? "" : e.value;
4283
+ if (r.kind === "status" && r.statusGroup) {
4284
+ let e = r.statusGroup.statuses.map((e) => ({
4285
+ value: e.code,
4286
+ label: n(e.name) || e.code
4287
+ }));
4288
+ return /* @__PURE__ */ V("div", {
4289
+ "data-testid": `value-${r.code}`,
4290
+ children: /* @__PURE__ */ V(K, {
4291
+ value: typeof o == "string" ? o : "",
4292
+ options: e,
4293
+ onChange: t,
4294
+ placeholder: a ?? n("action.mass_edit.pick_status", "(pick status)")
4295
+ })
4296
+ });
4297
+ }
4298
+ let s = da(r);
4299
+ return /* @__PURE__ */ H("div", {
4300
+ "data-testid": `value-${r.code}`,
4301
+ style: { position: "relative" },
4302
+ children: [Ei({
4303
+ field: s,
4304
+ fieldName: r.bare,
4305
+ value: o ?? "",
4306
+ mode: "edit",
4307
+ onChange: t,
4308
+ t: n
4309
+ }), a && /* @__PURE__ */ V("div", {
4310
+ "data-testid": `multiple-values-${r.code}`,
4311
+ style: {
4312
+ fontSize: 11,
4313
+ color: "var(--text-3)",
4314
+ marginTop: 4,
4315
+ fontStyle: "italic"
4316
+ },
4317
+ children: a
4318
+ })]
4319
+ });
4320
+ }
4321
+ function da(e) {
4322
+ if (e.kind === "field" && e.field) return e.field;
4323
+ if (e.kind === "property" && e.property) {
4324
+ let t = e.property;
4325
+ return {
4326
+ name: e.bare,
4327
+ type: t.type,
4328
+ display: t.display ?? { name: t.name },
4329
+ values: t.values,
4330
+ ref: t.ref,
4331
+ structure: t.structure
4332
+ };
4333
+ }
4334
+ return { type: "string" };
4335
+ }
4336
+ function fa({ targets: e, onPick: t }) {
4337
+ let n = E(), [r, i] = z(!1);
4338
+ return e.length === 0 ? null : r ? /* @__PURE__ */ V("div", {
4339
+ "data-testid": "mass-edit-target-picker",
4340
+ style: {
4341
+ alignSelf: "flex-start",
4342
+ minWidth: 220
4343
+ },
4344
+ children: /* @__PURE__ */ V(K, {
4345
+ value: "",
4346
+ placeholder: n("action.mass_edit.select_target", "Select target..."),
4347
+ options: e.map((e) => ({
4348
+ value: e.code,
4349
+ label: e.label
4350
+ })),
4351
+ onChange: (n) => {
4352
+ let r = e.find((e) => e.code === n);
4353
+ r && t(r), i(!1);
4354
+ }
4355
+ })
4356
+ }) : /* @__PURE__ */ H(A, {
4357
+ kind: "ghost",
4358
+ onClick: () => i(!0),
4359
+ style: { alignSelf: "flex-start" },
4360
+ children: [
4361
+ /* @__PURE__ */ V(O.plus, { size: 12 }),
4362
+ " ",
4363
+ n("action.mass_edit.add_target", "Add target")
4364
+ ]
4365
+ });
4366
+ }
4367
+ function pa(e, t) {
4368
+ if (!t || t.length === 0 || e.kind !== "field") return;
4369
+ let n, r = !1;
4370
+ for (let i of t) {
4371
+ let t = i[e.bare];
4372
+ if (!r) n = t, r = !0;
4373
+ else if (n !== t) return sa;
4374
+ }
4375
+ return n;
4376
+ }
4377
+ //#endregion
4378
+ export { ye as $, Bt as A, Oe as B, Sn as C, _n as D, vn as E, mt as F, Re as G, Fe as H, st as I, Ne as J, Ie as K, gt as L, _t as M, tt as N, fn as O, nt as P, xe as Q, J as R, xn as S, pn as T, De as U, Se as V, Me as W, G as X, Ce as Y, Le as Z, Bn as _, ra as a, Ln as b, Ki as c, Di as d, U as et, Ei as f, Vn as g, zn as h, ia as i, X as j, Ht as k, ea as l, Q as m, ca as n, na as o, wi as p, K as q, pa as r, Yi as s, sa as t, ve as tt, ji as u, Z as v, Pn as w, Fn as x, jn as y, $e as z };