@manta-eu/react 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (592) hide show
  1. package/README.md +59 -0
  2. package/dist/components/AppErrorBoundary.d.ts.map +1 -1
  3. package/dist/components/AppErrorBoundary.js +14 -11
  4. package/dist/components/AppErrorBoundary.js.map +1 -1
  5. package/dist/components/app-gate/AppGate.d.ts +8 -0
  6. package/dist/components/app-gate/AppGate.d.ts.map +1 -0
  7. package/dist/components/app-gate/AppGate.js +68 -0
  8. package/dist/components/app-gate/AppGate.js.map +1 -0
  9. package/dist/components/app-gate/AwaitingDatastoreStatus.d.ts +7 -0
  10. package/dist/components/app-gate/AwaitingDatastoreStatus.d.ts.map +1 -0
  11. package/dist/components/app-gate/AwaitingDatastoreStatus.js +19 -0
  12. package/dist/components/app-gate/AwaitingDatastoreStatus.js.map +1 -0
  13. package/dist/components/app-gate/EnterDatastoreRoute.d.ts +2 -0
  14. package/dist/components/app-gate/EnterDatastoreRoute.d.ts.map +1 -0
  15. package/dist/components/app-gate/EnterDatastoreRoute.js +25 -0
  16. package/dist/components/app-gate/EnterDatastoreRoute.js.map +1 -0
  17. package/dist/components/app-gate/ErrorRoute.d.ts +2 -0
  18. package/dist/components/app-gate/ErrorRoute.d.ts.map +1 -0
  19. package/dist/components/app-gate/ErrorRoute.js +27 -0
  20. package/dist/components/app-gate/ErrorRoute.js.map +1 -0
  21. package/dist/components/app-gate/FailureAlert.d.ts +5 -0
  22. package/dist/components/app-gate/FailureAlert.d.ts.map +1 -0
  23. package/dist/components/app-gate/FailureAlert.js +9 -0
  24. package/dist/components/app-gate/FailureAlert.js.map +1 -0
  25. package/dist/components/app-gate/NoDatastoreAccess.d.ts +8 -0
  26. package/dist/components/app-gate/NoDatastoreAccess.d.ts.map +1 -0
  27. package/dist/components/app-gate/NoDatastoreAccess.js +9 -0
  28. package/dist/components/app-gate/NoDatastoreAccess.js.map +1 -0
  29. package/dist/components/app-gate/NotFoundRoute.d.ts +2 -0
  30. package/dist/components/app-gate/NotFoundRoute.d.ts.map +1 -0
  31. package/dist/components/app-gate/NotFoundRoute.js +9 -0
  32. package/dist/components/app-gate/NotFoundRoute.js.map +1 -0
  33. package/dist/components/app-gate/PendingInvitations.d.ts +5 -0
  34. package/dist/components/app-gate/PendingInvitations.d.ts.map +1 -0
  35. package/dist/components/app-gate/PendingInvitations.js +58 -0
  36. package/dist/components/app-gate/PendingInvitations.js.map +1 -0
  37. package/dist/components/app-gate/ServiceError.d.ts +8 -0
  38. package/dist/components/app-gate/ServiceError.d.ts.map +1 -0
  39. package/dist/components/app-gate/ServiceError.js +10 -0
  40. package/dist/components/app-gate/ServiceError.js.map +1 -0
  41. package/dist/components/app-gate/index.d.ts +3 -0
  42. package/dist/components/app-gate/index.d.ts.map +1 -0
  43. package/dist/components/app-gate/index.js +3 -0
  44. package/dist/components/app-gate/index.js.map +1 -0
  45. package/dist/components/app-gate/sdk-route-elements.d.ts +23 -0
  46. package/dist/components/app-gate/sdk-route-elements.d.ts.map +1 -0
  47. package/dist/components/app-gate/sdk-route-elements.js +35 -0
  48. package/dist/components/app-gate/sdk-route-elements.js.map +1 -0
  49. package/dist/components/app-shell/AppShell.d.ts +7 -0
  50. package/dist/components/app-shell/AppShell.d.ts.map +1 -0
  51. package/dist/components/app-shell/AppShell.js +10 -0
  52. package/dist/components/app-shell/AppShell.js.map +1 -0
  53. package/dist/components/app-shell/AppShellRoutes.d.ts +9 -0
  54. package/dist/components/app-shell/AppShellRoutes.d.ts.map +1 -0
  55. package/dist/components/app-shell/AppShellRoutes.js +20 -0
  56. package/dist/components/app-shell/AppShellRoutes.js.map +1 -0
  57. package/dist/components/app-shell/GroupDatastores.d.ts +8 -0
  58. package/dist/components/app-shell/GroupDatastores.d.ts.map +1 -0
  59. package/dist/components/app-shell/GroupDatastores.js +15 -0
  60. package/dist/components/app-shell/GroupDatastores.js.map +1 -0
  61. package/dist/components/app-shell/GroupRoute.d.ts +2 -0
  62. package/dist/components/app-shell/GroupRoute.d.ts.map +1 -0
  63. package/dist/components/app-shell/GroupRoute.js +22 -0
  64. package/dist/components/app-shell/GroupRoute.js.map +1 -0
  65. package/dist/components/app-shell/index.d.ts +3 -0
  66. package/dist/components/app-shell/index.d.ts.map +1 -0
  67. package/dist/components/app-shell/index.js +3 -0
  68. package/dist/components/app-shell/index.js.map +1 -0
  69. package/dist/components/authenticated-chat/index.d.ts +1 -2
  70. package/dist/components/authenticated-chat/index.d.ts.map +1 -1
  71. package/dist/components/authenticated-chat/index.js +1 -12
  72. package/dist/components/authenticated-chat/index.js.map +1 -1
  73. package/dist/components/chat-view/Chat.d.ts +2 -1
  74. package/dist/components/chat-view/Chat.d.ts.map +1 -1
  75. package/dist/components/chat-view/Chat.js +3 -2
  76. package/dist/components/chat-view/Chat.js.map +1 -1
  77. package/dist/components/chat-view/MessageItem.d.ts.map +1 -1
  78. package/dist/components/chat-view/MessageItem.js +4 -2
  79. package/dist/components/chat-view/MessageItem.js.map +1 -1
  80. package/dist/components/chat-view/tool-part-rendering.d.ts +1 -0
  81. package/dist/components/chat-view/tool-part-rendering.d.ts.map +1 -1
  82. package/dist/components/chat-view/tool-part-rendering.js +8 -1
  83. package/dist/components/chat-view/tool-part-rendering.js.map +1 -1
  84. package/dist/components/chip/index.d.ts +1 -0
  85. package/dist/components/chip/index.d.ts.map +1 -1
  86. package/dist/components/chip/index.js +2 -1
  87. package/dist/components/chip/index.js.map +1 -1
  88. package/dist/components/embedded-chat/index.d.ts +1 -1
  89. package/dist/components/embedded-chat/index.d.ts.map +1 -1
  90. package/dist/components/embedded-chat/index.js +1 -1
  91. package/dist/components/embedded-chat/index.js.map +1 -1
  92. package/dist/components/input/input-date-time.d.ts +6 -0
  93. package/dist/components/input/input-date-time.d.ts.map +1 -1
  94. package/dist/components/input/input-date-time.js +2 -1
  95. package/dist/components/input/input-date-time.js.map +1 -1
  96. package/dist/components/input/input-date.d.ts +22 -0
  97. package/dist/components/input/input-date.d.ts.map +1 -1
  98. package/dist/components/input/input-date.js +28 -14
  99. package/dist/components/input/input-date.js.map +1 -1
  100. package/dist/components/input/input-time.d.ts +9 -0
  101. package/dist/components/input/input-time.d.ts.map +1 -1
  102. package/dist/components/input/input-time.js +29 -18
  103. package/dist/components/input/input-time.js.map +1 -1
  104. package/dist/components/layouts/RouteLayout.d.ts +0 -9
  105. package/dist/components/layouts/RouteLayout.d.ts.map +1 -1
  106. package/dist/components/layouts/RouteLayout.js +7 -4
  107. package/dist/components/layouts/RouteLayout.js.map +1 -1
  108. package/dist/components/layouts/Sidebar.d.ts +1 -8
  109. package/dist/components/layouts/Sidebar.d.ts.map +1 -1
  110. package/dist/components/layouts/Sidebar.js +7 -14
  111. package/dist/components/layouts/Sidebar.js.map +1 -1
  112. package/dist/components/plan-limits/PlanLimitsDialog.d.ts +20 -0
  113. package/dist/components/plan-limits/PlanLimitsDialog.d.ts.map +1 -0
  114. package/dist/components/plan-limits/PlanLimitsDialog.js +109 -0
  115. package/dist/components/plan-limits/PlanLimitsDialog.js.map +1 -0
  116. package/dist/components/plan-limits/index.d.ts +4 -0
  117. package/dist/components/plan-limits/index.d.ts.map +1 -0
  118. package/dist/components/plan-limits/index.js +2 -0
  119. package/dist/components/plan-limits/index.js.map +1 -0
  120. package/dist/components/plan-limits/plan-limits-client.d.ts +15 -0
  121. package/dist/components/plan-limits/plan-limits-client.d.ts.map +1 -0
  122. package/dist/components/plan-limits/plan-limits-client.js +44 -0
  123. package/dist/components/plan-limits/plan-limits-client.js.map +1 -0
  124. package/dist/components/plan-limits/plan-limits-model.d.ts +66 -0
  125. package/dist/components/plan-limits/plan-limits-model.d.ts.map +1 -0
  126. package/dist/components/plan-limits/plan-limits-model.js +123 -0
  127. package/dist/components/plan-limits/plan-limits-model.js.map +1 -0
  128. package/dist/components/plan-limits/plan-limits-save.d.ts +31 -0
  129. package/dist/components/plan-limits/plan-limits-save.d.ts.map +1 -0
  130. package/dist/components/plan-limits/plan-limits-save.js +43 -0
  131. package/dist/components/plan-limits/plan-limits-save.js.map +1 -0
  132. package/dist/components/planning/PlanLimitsAction.d.ts +6 -0
  133. package/dist/components/planning/PlanLimitsAction.d.ts.map +1 -0
  134. package/dist/components/planning/PlanLimitsAction.js +19 -0
  135. package/dist/components/planning/PlanLimitsAction.js.map +1 -0
  136. package/dist/components/slider/index.d.ts.map +1 -1
  137. package/dist/components/slider/index.js +2 -1
  138. package/dist/components/slider/index.js.map +1 -1
  139. package/dist/datastore-picker/datastore-picker-rows.d.ts +7 -0
  140. package/dist/datastore-picker/datastore-picker-rows.d.ts.map +1 -1
  141. package/dist/datastore-picker/datastore-picker-rows.js +26 -22
  142. package/dist/datastore-picker/datastore-picker-rows.js.map +1 -1
  143. package/dist/globals.css +85 -2
  144. package/dist/hooks/use-action-plans-list.d.ts +3 -0
  145. package/dist/hooks/use-action-plans-list.d.ts.map +1 -1
  146. package/dist/hooks/use-action-plans-list.js +8 -9
  147. package/dist/hooks/use-action-plans-list.js.map +1 -1
  148. package/dist/hooks/use-activity-feed.d.ts +10 -1
  149. package/dist/hooks/use-activity-feed.d.ts.map +1 -1
  150. package/dist/hooks/use-activity-feed.js +9 -11
  151. package/dist/hooks/use-activity-feed.js.map +1 -1
  152. package/dist/hooks/use-entity.d.ts +4 -3
  153. package/dist/hooks/use-entity.d.ts.map +1 -1
  154. package/dist/hooks/use-entity.js +4 -4
  155. package/dist/hooks/use-entity.js.map +1 -1
  156. package/dist/hooks/use-manual-actions.d.ts +1 -1
  157. package/dist/hooks/use-manual-actions.d.ts.map +1 -1
  158. package/dist/hooks/use-manual-actions.js +5 -5
  159. package/dist/hooks/use-manual-actions.js.map +1 -1
  160. package/dist/hooks/use-unsaved-changes-warning.d.ts +2 -0
  161. package/dist/hooks/use-unsaved-changes-warning.d.ts.map +1 -0
  162. package/dist/hooks/use-unsaved-changes-warning.js +13 -0
  163. package/dist/hooks/use-unsaved-changes-warning.js.map +1 -0
  164. package/dist/hooks/useAuth.d.ts.map +1 -1
  165. package/dist/hooks/useAuth.js +4 -3
  166. package/dist/hooks/useAuth.js.map +1 -1
  167. package/dist/hooks/useChatPanelSync.d.ts.map +1 -1
  168. package/dist/hooks/useChatPanelSync.js +2 -3
  169. package/dist/hooks/useChatPanelSync.js.map +1 -1
  170. package/dist/hooks/useDatastoreSelection.d.ts.map +1 -1
  171. package/dist/hooks/useDatastoreSelection.js +11 -4
  172. package/dist/hooks/useDatastoreSelection.js.map +1 -1
  173. package/dist/hooks/useExecuteAction.d.ts +1 -0
  174. package/dist/hooks/useExecuteAction.d.ts.map +1 -1
  175. package/dist/hooks/useExecuteAction.js.map +1 -1
  176. package/dist/hooks/useLoginRedirect.d.ts +6 -0
  177. package/dist/hooks/useLoginRedirect.d.ts.map +1 -0
  178. package/dist/hooks/useLoginRedirect.js +51 -0
  179. package/dist/hooks/useLoginRedirect.js.map +1 -0
  180. package/dist/hooks/usePlanLimits.d.ts +18 -0
  181. package/dist/hooks/usePlanLimits.d.ts.map +1 -0
  182. package/dist/hooks/usePlanLimits.js +56 -0
  183. package/dist/hooks/usePlanLimits.js.map +1 -0
  184. package/dist/ldo-ui.d.ts +1 -1
  185. package/dist/ldo-ui.d.ts.map +1 -1
  186. package/dist/ldo-ui.js.map +1 -1
  187. package/dist/lib/app-tools.d.ts +18 -0
  188. package/dist/lib/app-tools.d.ts.map +1 -0
  189. package/dist/lib/app-tools.js +42 -0
  190. package/dist/lib/app-tools.js.map +1 -0
  191. package/dist/lib/chat-types.d.ts +3 -0
  192. package/dist/lib/chat-types.d.ts.map +1 -1
  193. package/dist/lib/chat-types.js.map +1 -1
  194. package/dist/lib/datastore-route-table.d.ts +3 -0
  195. package/dist/lib/datastore-route-table.d.ts.map +1 -1
  196. package/dist/lib/datastore-route-table.js +6 -0
  197. package/dist/lib/datastore-route-table.js.map +1 -1
  198. package/dist/lib/graphql-error.d.ts +2 -0
  199. package/dist/lib/graphql-error.d.ts.map +1 -0
  200. package/dist/lib/graphql-error.js +7 -0
  201. package/dist/lib/graphql-error.js.map +1 -0
  202. package/dist/lib/update-notice.d.ts +2 -1
  203. package/dist/lib/update-notice.d.ts.map +1 -1
  204. package/dist/lib/update-notice.js +8 -2
  205. package/dist/lib/update-notice.js.map +1 -1
  206. package/dist/providers/ActiveChatProvider.d.ts +2 -0
  207. package/dist/providers/ActiveChatProvider.d.ts.map +1 -1
  208. package/dist/providers/ActiveChatProvider.js +6 -3
  209. package/dist/providers/ActiveChatProvider.js.map +1 -1
  210. package/dist/providers/ActiveDatastoreProvider.d.ts +12 -0
  211. package/dist/providers/ActiveDatastoreProvider.d.ts.map +1 -1
  212. package/dist/providers/ActiveDatastoreProvider.js +114 -11
  213. package/dist/providers/ActiveDatastoreProvider.js.map +1 -1
  214. package/dist/providers/AuthContext.d.ts +1 -0
  215. package/dist/providers/AuthContext.d.ts.map +1 -1
  216. package/dist/providers/AuthContext.js.map +1 -1
  217. package/dist/providers/KnowledgeGraphStateContext.d.ts +2 -2
  218. package/dist/providers/KnowledgeGraphStateContext.d.ts.map +1 -1
  219. package/dist/providers/KnowledgeGraphStateProvider.d.ts.map +1 -1
  220. package/dist/providers/KnowledgeGraphStateProvider.js +8 -49
  221. package/dist/providers/KnowledgeGraphStateProvider.js.map +1 -1
  222. package/dist/providers/MantaClientProvider.d.ts.map +1 -1
  223. package/dist/providers/MantaClientProvider.js +3 -3
  224. package/dist/providers/MantaClientProvider.js.map +1 -1
  225. package/dist/providers/index.d.ts +3 -1
  226. package/dist/providers/index.d.ts.map +1 -1
  227. package/dist/providers/index.js +2 -2
  228. package/dist/providers/index.js.map +1 -1
  229. package/dist/routes/activity/detail/ActivityDetailRoute.d.ts.map +1 -1
  230. package/dist/routes/activity/detail/ActivityDetailRoute.js +1 -3
  231. package/dist/routes/activity/detail/ActivityDetailRoute.js.map +1 -1
  232. package/dist/routes/activity/index.d.ts.map +1 -1
  233. package/dist/routes/activity/index.js +1 -3
  234. package/dist/routes/activity/index.js.map +1 -1
  235. package/dist/routes/chat/index.d.ts +2 -21
  236. package/dist/routes/chat/index.d.ts.map +1 -1
  237. package/dist/routes/chat/index.js +4 -2
  238. package/dist/routes/chat/index.js.map +1 -1
  239. package/dist/routes/data-collection/index.d.ts.map +1 -1
  240. package/dist/routes/data-collection/index.js +1 -3
  241. package/dist/routes/data-collection/index.js.map +1 -1
  242. package/dist/routes/data-explorer/components/DataExplorerLayout.d.ts.map +1 -1
  243. package/dist/routes/data-explorer/components/DataExplorerLayout.js +1 -3
  244. package/dist/routes/data-explorer/components/DataExplorerLayout.js.map +1 -1
  245. package/dist/routes/data-explorer/components/class-detail/UsedByRules.js +2 -2
  246. package/dist/routes/data-explorer/components/class-detail/UsedByRules.js.map +1 -1
  247. package/dist/routes/datastores/index.d.ts.map +1 -1
  248. package/dist/routes/datastores/index.js +2 -2
  249. package/dist/routes/datastores/index.js.map +1 -1
  250. package/dist/routes/explain/index.d.ts.map +1 -1
  251. package/dist/routes/explain/index.js +1 -3
  252. package/dist/routes/explain/index.js.map +1 -1
  253. package/dist/routes/integrations/components/connect-forms/DashConnectForm.d.ts.map +1 -1
  254. package/dist/routes/integrations/components/connect-forms/DashConnectForm.js +0 -1
  255. package/dist/routes/integrations/components/connect-forms/DashConnectForm.js.map +1 -1
  256. package/dist/routes/integrations/components/connect-forms/GoogleAdsConnectForm.d.ts.map +1 -1
  257. package/dist/routes/integrations/components/connect-forms/GoogleAdsConnectForm.js +0 -1
  258. package/dist/routes/integrations/components/connect-forms/GoogleAdsConnectForm.js.map +1 -1
  259. package/dist/routes/integrations/components/connect-forms/GoogleAnalyticsConnectForm.d.ts.map +1 -1
  260. package/dist/routes/integrations/components/connect-forms/GoogleAnalyticsConnectForm.js +0 -1
  261. package/dist/routes/integrations/components/connect-forms/GoogleAnalyticsConnectForm.js.map +1 -1
  262. package/dist/routes/integrations/components/connect-forms/GoogleMerchantCenterConnectForm.d.ts.map +1 -1
  263. package/dist/routes/integrations/components/connect-forms/GoogleMerchantCenterConnectForm.js +0 -1
  264. package/dist/routes/integrations/components/connect-forms/GoogleMerchantCenterConnectForm.js.map +1 -1
  265. package/dist/routes/integrations/components/connect-forms/InferalCredentialConnectForm.d.ts +0 -1
  266. package/dist/routes/integrations/components/connect-forms/InferalCredentialConnectForm.d.ts.map +1 -1
  267. package/dist/routes/integrations/components/connect-forms/InferalCredentialConnectForm.js +3 -2
  268. package/dist/routes/integrations/components/connect-forms/InferalCredentialConnectForm.js.map +1 -1
  269. package/dist/routes/integrations/components/connect-forms/KlaviyoConnectForm.d.ts.map +1 -1
  270. package/dist/routes/integrations/components/connect-forms/KlaviyoConnectForm.js +0 -1
  271. package/dist/routes/integrations/components/connect-forms/KlaviyoConnectForm.js.map +1 -1
  272. package/dist/routes/integrations/components/connect-forms/MicrosoftAdsConnectForm.d.ts.map +1 -1
  273. package/dist/routes/integrations/components/connect-forms/MicrosoftAdsConnectForm.js +0 -1
  274. package/dist/routes/integrations/components/connect-forms/MicrosoftAdsConnectForm.js.map +1 -1
  275. package/dist/routes/integrations/components/connect-forms/OAuthSetupConnectForm.d.ts +0 -1
  276. package/dist/routes/integrations/components/connect-forms/OAuthSetupConnectForm.d.ts.map +1 -1
  277. package/dist/routes/integrations/components/connect-forms/OAuthSetupConnectForm.js +4 -3
  278. package/dist/routes/integrations/components/connect-forms/OAuthSetupConnectForm.js.map +1 -1
  279. package/dist/routes/integrations/components/connect-forms/TriplewhaleConnectForm.d.ts.map +1 -1
  280. package/dist/routes/integrations/components/connect-forms/TriplewhaleConnectForm.js +0 -1
  281. package/dist/routes/integrations/components/connect-forms/TriplewhaleConnectForm.js.map +1 -1
  282. package/dist/routes/integrations/components/connect-forms/WoocommerceConnectForm.d.ts.map +1 -1
  283. package/dist/routes/integrations/components/connect-forms/WoocommerceConnectForm.js +0 -1
  284. package/dist/routes/integrations/components/connect-forms/WoocommerceConnectForm.js.map +1 -1
  285. package/dist/routes/integrations/types.d.ts +2 -1
  286. package/dist/routes/integrations/types.d.ts.map +1 -1
  287. package/dist/routes/integrations/types.js +16 -0
  288. package/dist/routes/integrations/types.js.map +1 -1
  289. package/dist/routes/memories/components/DateValueInput.d.ts +16 -0
  290. package/dist/routes/memories/components/DateValueInput.d.ts.map +1 -0
  291. package/dist/routes/memories/components/DateValueInput.js +35 -0
  292. package/dist/routes/memories/components/DateValueInput.js.map +1 -0
  293. package/dist/routes/memories/components/EntityValuePicker.d.ts +11 -0
  294. package/dist/routes/memories/components/EntityValuePicker.d.ts.map +1 -0
  295. package/dist/routes/memories/components/EntityValuePicker.js +61 -0
  296. package/dist/routes/memories/components/EntityValuePicker.js.map +1 -0
  297. package/dist/routes/memories/components/FieldLabel.d.ts +12 -0
  298. package/dist/routes/memories/components/FieldLabel.d.ts.map +1 -0
  299. package/dist/routes/memories/components/FieldLabel.js +12 -0
  300. package/dist/routes/memories/components/FieldLabel.js.map +1 -0
  301. package/dist/routes/memories/components/ImportanceSlider.d.ts +2 -0
  302. package/dist/routes/memories/components/ImportanceSlider.d.ts.map +1 -1
  303. package/dist/routes/memories/components/ImportanceSlider.js +4 -1
  304. package/dist/routes/memories/components/ImportanceSlider.js.map +1 -1
  305. package/dist/routes/memories/components/MemoriesFilters.d.ts +2 -2
  306. package/dist/routes/memories/components/MemoriesFilters.d.ts.map +1 -1
  307. package/dist/routes/memories/components/MemoriesFilters.js.map +1 -1
  308. package/dist/routes/memories/components/MemoriesPanel.d.ts.map +1 -1
  309. package/dist/routes/memories/components/MemoriesPanel.js +4 -0
  310. package/dist/routes/memories/components/MemoriesPanel.js.map +1 -1
  311. package/dist/routes/memories/components/MemoriesTabPanel.d.ts +2 -2
  312. package/dist/routes/memories/components/MemoriesTabPanel.d.ts.map +1 -1
  313. package/dist/routes/memories/components/MemoryActions.d.ts +2 -0
  314. package/dist/routes/memories/components/MemoryActions.d.ts.map +1 -1
  315. package/dist/routes/memories/components/MemoryActions.js +3 -3
  316. package/dist/routes/memories/components/MemoryActions.js.map +1 -1
  317. package/dist/routes/memories/components/MemoryFields.d.ts +15 -3
  318. package/dist/routes/memories/components/MemoryFields.d.ts.map +1 -1
  319. package/dist/routes/memories/components/MemoryFields.js +34 -5
  320. package/dist/routes/memories/components/MemoryFields.js.map +1 -1
  321. package/dist/routes/memories/components/MemoryFormDialog.d.ts +6 -3
  322. package/dist/routes/memories/components/MemoryFormDialog.d.ts.map +1 -1
  323. package/dist/routes/memories/components/MemoryFormDialog.js +105 -59
  324. package/dist/routes/memories/components/MemoryFormDialog.js.map +1 -1
  325. package/dist/routes/memories/components/MemoryPropertyFields.d.ts +10 -0
  326. package/dist/routes/memories/components/MemoryPropertyFields.d.ts.map +1 -0
  327. package/dist/routes/memories/components/MemoryPropertyFields.js +67 -0
  328. package/dist/routes/memories/components/MemoryPropertyFields.js.map +1 -0
  329. package/dist/routes/memories/components/RuleDraftDialog.d.ts +7 -0
  330. package/dist/routes/memories/components/RuleDraftDialog.d.ts.map +1 -0
  331. package/dist/routes/memories/components/RuleDraftDialog.js +20 -0
  332. package/dist/routes/memories/components/RuleDraftDialog.js.map +1 -0
  333. package/dist/routes/memories/components/SchemasTab.d.ts +17 -2
  334. package/dist/routes/memories/components/SchemasTab.d.ts.map +1 -1
  335. package/dist/routes/memories/components/SchemasTab.js +146 -28
  336. package/dist/routes/memories/components/SchemasTab.js.map +1 -1
  337. package/dist/routes/memories/components/badges.d.ts +7 -0
  338. package/dist/routes/memories/components/badges.d.ts.map +1 -1
  339. package/dist/routes/memories/components/badges.js +11 -3
  340. package/dist/routes/memories/components/badges.js.map +1 -1
  341. package/dist/routes/memories/hooks/useMemoryColumns.d.ts +4 -2
  342. package/dist/routes/memories/hooks/useMemoryColumns.d.ts.map +1 -1
  343. package/dist/routes/memories/hooks/useMemoryColumns.js +31 -15
  344. package/dist/routes/memories/hooks/useMemoryColumns.js.map +1 -1
  345. package/dist/routes/memories/index.d.ts +2 -1
  346. package/dist/routes/memories/index.d.ts.map +1 -1
  347. package/dist/routes/memories/index.js +72 -30
  348. package/dist/routes/memories/index.js.map +1 -1
  349. package/dist/routes/memories/memory-mutation-input.d.ts.map +1 -1
  350. package/dist/routes/memories/memory-mutation-input.js +5 -2
  351. package/dist/routes/memories/memory-mutation-input.js.map +1 -1
  352. package/dist/routes/memories/memory-property-values.d.ts +13 -0
  353. package/dist/routes/memories/memory-property-values.d.ts.map +1 -0
  354. package/dist/routes/memories/memory-property-values.js +40 -0
  355. package/dist/routes/memories/memory-property-values.js.map +1 -0
  356. package/dist/routes/memories/schemas/AllowedValuesField.d.ts +14 -0
  357. package/dist/routes/memories/schemas/AllowedValuesField.d.ts.map +1 -0
  358. package/dist/routes/memories/schemas/AllowedValuesField.js +64 -0
  359. package/dist/routes/memories/schemas/AllowedValuesField.js.map +1 -0
  360. package/dist/routes/memories/schemas/MemorySchemaPage.d.ts +127 -0
  361. package/dist/routes/memories/schemas/MemorySchemaPage.d.ts.map +1 -0
  362. package/dist/routes/memories/schemas/MemorySchemaPage.js +285 -0
  363. package/dist/routes/memories/schemas/MemorySchemaPage.js.map +1 -0
  364. package/dist/routes/memories/schemas/SchemaChangeReviewDialog.d.ts +20 -0
  365. package/dist/routes/memories/schemas/SchemaChangeReviewDialog.d.ts.map +1 -0
  366. package/dist/routes/memories/schemas/SchemaChangeReviewDialog.js +54 -0
  367. package/dist/routes/memories/schemas/SchemaChangeReviewDialog.js.map +1 -0
  368. package/dist/routes/memories/schemas/SchemaConfirmDialog.d.ts +15 -0
  369. package/dist/routes/memories/schemas/SchemaConfirmDialog.d.ts.map +1 -0
  370. package/dist/routes/memories/schemas/SchemaConfirmDialog.js +8 -0
  371. package/dist/routes/memories/schemas/SchemaConfirmDialog.js.map +1 -0
  372. package/dist/routes/memories/schemas/SchemaDetailPage.d.ts +15 -0
  373. package/dist/routes/memories/schemas/SchemaDetailPage.d.ts.map +1 -0
  374. package/dist/routes/memories/schemas/SchemaDetailPage.js +74 -0
  375. package/dist/routes/memories/schemas/SchemaDetailPage.js.map +1 -0
  376. package/dist/routes/memories/schemas/SchemaEditorForm.d.ts +10 -0
  377. package/dist/routes/memories/schemas/SchemaEditorForm.d.ts.map +1 -0
  378. package/dist/routes/memories/schemas/SchemaEditorForm.js +242 -0
  379. package/dist/routes/memories/schemas/SchemaEditorForm.js.map +1 -0
  380. package/dist/routes/memories/schemas/SchemaTemplatesDialog.d.ts +13 -0
  381. package/dist/routes/memories/schemas/SchemaTemplatesDialog.d.ts.map +1 -0
  382. package/dist/routes/memories/schemas/SchemaTemplatesDialog.js +13 -0
  383. package/dist/routes/memories/schemas/SchemaTemplatesDialog.js.map +1 -0
  384. package/dist/routes/memories/schemas/ValueTypeSelect.d.ts +12 -0
  385. package/dist/routes/memories/schemas/ValueTypeSelect.d.ts.map +1 -0
  386. package/dist/routes/memories/schemas/ValueTypeSelect.js +10 -0
  387. package/dist/routes/memories/schemas/ValueTypeSelect.js.map +1 -0
  388. package/dist/routes/memories/schemas/schema-form.d.ts +72 -0
  389. package/dist/routes/memories/schemas/schema-form.d.ts.map +1 -0
  390. package/dist/routes/memories/schemas/schema-form.js +279 -0
  391. package/dist/routes/memories/schemas/schema-form.js.map +1 -0
  392. package/dist/routes/memories/schemas/schema-impact.d.ts +13 -0
  393. package/dist/routes/memories/schemas/schema-impact.d.ts.map +1 -0
  394. package/dist/routes/memories/schemas/schema-impact.js +40 -0
  395. package/dist/routes/memories/schemas/schema-impact.js.map +1 -0
  396. package/dist/routes/memories/schemas/schema-route.d.ts +18 -0
  397. package/dist/routes/memories/schemas/schema-route.d.ts.map +1 -0
  398. package/dist/routes/memories/schemas/schema-route.js +21 -0
  399. package/dist/routes/memories/schemas/schema-route.js.map +1 -0
  400. package/dist/routes/memories/schemas/schema-rule-context.d.ts +17 -0
  401. package/dist/routes/memories/schemas/schema-rule-context.d.ts.map +1 -0
  402. package/dist/routes/memories/schemas/schema-rule-context.js +83 -0
  403. package/dist/routes/memories/schemas/schema-rule-context.js.map +1 -0
  404. package/dist/routes/memories/schemas/schema-table.d.ts +11 -0
  405. package/dist/routes/memories/schemas/schema-table.d.ts.map +1 -0
  406. package/dist/routes/memories/schemas/schema-table.js +34 -0
  407. package/dist/routes/memories/schemas/schema-table.js.map +1 -0
  408. package/dist/routes/memories/schemas/useMemorySchemaMutations.d.ts +32 -0
  409. package/dist/routes/memories/schemas/useMemorySchemaMutations.d.ts.map +1 -0
  410. package/dist/routes/memories/schemas/useMemorySchemaMutations.js +31 -0
  411. package/dist/routes/memories/schemas/useMemorySchemaMutations.js.map +1 -0
  412. package/dist/routes/memories/schemas/useSchemaChangeReview.d.ts +51 -0
  413. package/dist/routes/memories/schemas/useSchemaChangeReview.d.ts.map +1 -0
  414. package/dist/routes/memories/schemas/useSchemaChangeReview.js +175 -0
  415. package/dist/routes/memories/schemas/useSchemaChangeReview.js.map +1 -0
  416. package/dist/routes/memories/schemas/useSchemaLifecycle.d.ts +46 -0
  417. package/dist/routes/memories/schemas/useSchemaLifecycle.d.ts.map +1 -0
  418. package/dist/routes/memories/schemas/useSchemaLifecycle.js +93 -0
  419. package/dist/routes/memories/schemas/useSchemaLifecycle.js.map +1 -0
  420. package/dist/routes/memories/schemas/useSchemasTab.d.ts +18 -0
  421. package/dist/routes/memories/schemas/useSchemasTab.d.ts.map +1 -0
  422. package/dist/routes/memories/schemas/useSchemasTab.js +92 -0
  423. package/dist/routes/memories/schemas/useSchemasTab.js.map +1 -0
  424. package/dist/routes/plans/index.d.ts.map +1 -1
  425. package/dist/routes/plans/index.js +2 -2
  426. package/dist/routes/plans/index.js.map +1 -1
  427. package/dist/routes/rules/components/CreateRuleChatModal.d.ts +7 -1
  428. package/dist/routes/rules/components/CreateRuleChatModal.d.ts.map +1 -1
  429. package/dist/routes/rules/components/CreateRuleChatModal.js +9 -4
  430. package/dist/routes/rules/components/CreateRuleChatModal.js.map +1 -1
  431. package/dist/routes/rules/components/RuleValueControls.d.ts.map +1 -1
  432. package/dist/routes/rules/components/RuleValueControls.js +3 -24
  433. package/dist/routes/rules/components/RuleValueControls.js.map +1 -1
  434. package/dist/routes/rules/components/rule-value-input.d.ts +11 -0
  435. package/dist/routes/rules/components/rule-value-input.d.ts.map +1 -0
  436. package/dist/routes/rules/components/rule-value-input.js +24 -0
  437. package/dist/routes/rules/components/rule-value-input.js.map +1 -0
  438. package/dist/routes/rules/components/rules.utils.d.ts +5 -0
  439. package/dist/routes/rules/components/rules.utils.d.ts.map +1 -1
  440. package/dist/routes/rules/components/rules.utils.js +18 -3
  441. package/dist/routes/rules/components/rules.utils.js.map +1 -1
  442. package/dist/routes/rules/pages.d.ts +1 -1
  443. package/dist/routes/rules/pages.d.ts.map +1 -1
  444. package/dist/routes/rules/pages.js +1 -1
  445. package/dist/routes/rules/pages.js.map +1 -1
  446. package/dist/shared/graph-derived-queries.d.ts.map +1 -1
  447. package/dist/shared/graph-derived-queries.js +4 -1
  448. package/dist/shared/graph-derived-queries.js.map +1 -1
  449. package/dist/worker/index.d.ts +22 -0
  450. package/dist/worker/index.d.ts.map +1 -0
  451. package/dist/worker/index.js +110 -0
  452. package/dist/worker/index.js.map +1 -0
  453. package/dist/worker/policy.d.ts +21 -0
  454. package/dist/worker/policy.d.ts.map +1 -0
  455. package/dist/worker/policy.js +42 -0
  456. package/dist/worker/policy.js.map +1 -0
  457. package/dist/worker/proxy.d.ts +14 -0
  458. package/dist/worker/proxy.d.ts.map +1 -0
  459. package/dist/worker/proxy.js +58 -0
  460. package/dist/worker/proxy.js.map +1 -0
  461. package/dist/worker/session.d.ts +24 -0
  462. package/dist/worker/session.d.ts.map +1 -0
  463. package/dist/worker/session.js +72 -0
  464. package/dist/worker/session.js.map +1 -0
  465. package/package.json +52 -7
  466. package/src/app-subpaths.json +9 -1
  467. package/src/components/AppErrorBoundary.tsx +14 -11
  468. package/src/components/app-gate/AppGate.tsx +122 -0
  469. package/src/components/app-gate/AwaitingDatastoreStatus.tsx +35 -0
  470. package/src/components/app-gate/EnterDatastoreRoute.tsx +30 -0
  471. package/src/components/app-gate/ErrorRoute.tsx +43 -0
  472. package/src/components/app-gate/FailureAlert.tsx +15 -0
  473. package/src/components/app-gate/NoDatastoreAccess.tsx +26 -0
  474. package/src/components/app-gate/NotFoundRoute.tsx +20 -0
  475. package/src/components/app-gate/PendingInvitations.tsx +134 -0
  476. package/src/components/app-gate/ServiceError.tsx +27 -0
  477. package/src/components/app-gate/index.ts +2 -0
  478. package/src/components/app-gate/sdk-route-elements.tsx +46 -0
  479. package/src/components/app-shell/AppShell.tsx +22 -0
  480. package/src/components/app-shell/AppShellRoutes.tsx +34 -0
  481. package/src/components/app-shell/GroupDatastores.tsx +28 -0
  482. package/src/components/app-shell/GroupRoute.tsx +34 -0
  483. package/src/components/app-shell/index.ts +2 -0
  484. package/src/components/authenticated-chat/index.tsx +1 -34
  485. package/src/components/chat-view/Chat.tsx +9 -3
  486. package/src/components/chat-view/MessageItem.tsx +10 -2
  487. package/src/components/chat-view/tool-part-rendering.ts +10 -1
  488. package/src/components/chip/index.tsx +8 -1
  489. package/src/components/embedded-chat/index.tsx +2 -1
  490. package/src/components/input/input-date-time.tsx +10 -3
  491. package/src/components/input/input-date.tsx +93 -21
  492. package/src/components/input/input-time.tsx +59 -26
  493. package/src/components/layouts/RouteLayout.tsx +11 -50
  494. package/src/components/layouts/Sidebar.tsx +21 -23
  495. package/src/components/plan-limits/PlanLimitsDialog.tsx +331 -0
  496. package/src/components/plan-limits/index.tsx +3 -0
  497. package/src/components/plan-limits/plan-limits-client.ts +71 -0
  498. package/src/components/plan-limits/plan-limits-model.ts +180 -0
  499. package/src/components/plan-limits/plan-limits-save.ts +68 -0
  500. package/src/components/planning/PlanLimitsAction.tsx +44 -0
  501. package/src/components/slider/index.tsx +2 -1
  502. package/src/datastore-picker/datastore-picker-rows.ts +36 -20
  503. package/src/hooks/use-action-plans-list.ts +20 -12
  504. package/src/hooks/use-activity-feed.ts +30 -14
  505. package/src/hooks/use-entity.ts +11 -6
  506. package/src/hooks/use-manual-actions.ts +11 -6
  507. package/src/hooks/use-unsaved-changes-warning.ts +12 -0
  508. package/src/hooks/useAuth.ts +5 -3
  509. package/src/hooks/useChatPanelSync.ts +2 -3
  510. package/src/hooks/useDatastoreSelection.ts +10 -4
  511. package/src/hooks/useExecuteAction.ts +2 -0
  512. package/src/hooks/useLoginRedirect.ts +66 -0
  513. package/src/hooks/usePlanLimits.ts +97 -0
  514. package/src/ldo-ui.ts +1 -0
  515. package/src/lib/app-tools.ts +63 -0
  516. package/src/lib/chat-types.ts +5 -0
  517. package/src/lib/datastore-route-table.ts +9 -0
  518. package/src/lib/graphql-error.ts +7 -0
  519. package/src/lib/update-notice.ts +12 -2
  520. package/src/providers/ActiveChatProvider.tsx +8 -3
  521. package/src/providers/ActiveDatastoreProvider.tsx +179 -9
  522. package/src/providers/AuthContext.ts +1 -0
  523. package/src/providers/KnowledgeGraphStateContext.ts +2 -2
  524. package/src/providers/KnowledgeGraphStateProvider.tsx +13 -65
  525. package/src/providers/MantaClientProvider.tsx +8 -3
  526. package/src/providers/index.tsx +7 -4
  527. package/src/routes/activity/detail/ActivityDetailRoute.tsx +1 -10
  528. package/src/routes/activity/index.tsx +1 -10
  529. package/src/routes/chat/index.tsx +11 -47
  530. package/src/routes/data-collection/index.tsx +1 -11
  531. package/src/routes/data-explorer/components/DataExplorerLayout.tsx +1 -11
  532. package/src/routes/data-explorer/components/class-detail/UsedByRules.tsx +2 -2
  533. package/src/routes/datastores/index.tsx +3 -9
  534. package/src/routes/explain/index.tsx +1 -11
  535. package/src/routes/integrations/components/connect-forms/DashConnectForm.tsx +0 -1
  536. package/src/routes/integrations/components/connect-forms/GoogleAdsConnectForm.tsx +0 -1
  537. package/src/routes/integrations/components/connect-forms/GoogleAnalyticsConnectForm.tsx +0 -1
  538. package/src/routes/integrations/components/connect-forms/GoogleMerchantCenterConnectForm.tsx +0 -1
  539. package/src/routes/integrations/components/connect-forms/InferalCredentialConnectForm.tsx +5 -3
  540. package/src/routes/integrations/components/connect-forms/KlaviyoConnectForm.tsx +0 -1
  541. package/src/routes/integrations/components/connect-forms/MicrosoftAdsConnectForm.tsx +0 -1
  542. package/src/routes/integrations/components/connect-forms/OAuthSetupConnectForm.tsx +7 -7
  543. package/src/routes/integrations/components/connect-forms/TriplewhaleConnectForm.tsx +0 -1
  544. package/src/routes/integrations/components/connect-forms/WoocommerceConnectForm.tsx +0 -1
  545. package/src/routes/integrations/types.ts +22 -6
  546. package/src/routes/memories/components/DateValueInput.tsx +72 -0
  547. package/src/routes/memories/components/EntityValuePicker.tsx +132 -0
  548. package/src/routes/memories/components/FieldLabel.tsx +49 -0
  549. package/src/routes/memories/components/ImportanceSlider.tsx +5 -1
  550. package/src/routes/memories/components/MemoriesFilters.tsx +2 -2
  551. package/src/routes/memories/components/MemoriesPanel.tsx +7 -3
  552. package/src/routes/memories/components/MemoriesTabPanel.tsx +2 -2
  553. package/src/routes/memories/components/MemoryActions.tsx +26 -2
  554. package/src/routes/memories/components/MemoryFields.tsx +75 -12
  555. package/src/routes/memories/components/MemoryFormDialog.tsx +305 -199
  556. package/src/routes/memories/components/MemoryPropertyFields.tsx +288 -0
  557. package/src/routes/memories/components/RuleDraftDialog.tsx +35 -0
  558. package/src/routes/memories/components/SchemasTab.tsx +481 -118
  559. package/src/routes/memories/components/badges.tsx +16 -4
  560. package/src/routes/memories/hooks/useMemoryColumns.tsx +69 -35
  561. package/src/routes/memories/index.tsx +125 -51
  562. package/src/routes/memories/memory-mutation-input.ts +5 -2
  563. package/src/routes/memories/memory-property-values.ts +83 -0
  564. package/src/routes/memories/schemas/AllowedValuesField.tsx +188 -0
  565. package/src/routes/memories/schemas/MemorySchemaPage.tsx +476 -0
  566. package/src/routes/memories/schemas/SchemaChangeReviewDialog.tsx +290 -0
  567. package/src/routes/memories/schemas/SchemaConfirmDialog.tsx +62 -0
  568. package/src/routes/memories/schemas/SchemaDetailPage.tsx +373 -0
  569. package/src/routes/memories/schemas/SchemaEditorForm.tsx +990 -0
  570. package/src/routes/memories/schemas/SchemaTemplatesDialog.tsx +81 -0
  571. package/src/routes/memories/schemas/ValueTypeSelect.tsx +37 -0
  572. package/src/routes/memories/schemas/schema-form.ts +360 -0
  573. package/src/routes/memories/schemas/schema-impact.ts +66 -0
  574. package/src/routes/memories/schemas/schema-route.ts +30 -0
  575. package/src/routes/memories/schemas/schema-rule-context.ts +103 -0
  576. package/src/routes/memories/schemas/schema-table.ts +54 -0
  577. package/src/routes/memories/schemas/useMemorySchemaMutations.ts +49 -0
  578. package/src/routes/memories/schemas/useSchemaChangeReview.ts +238 -0
  579. package/src/routes/memories/schemas/useSchemaLifecycle.tsx +151 -0
  580. package/src/routes/memories/schemas/useSchemasTab.ts +119 -0
  581. package/src/routes/plans/index.tsx +3 -14
  582. package/src/routes/rules/components/CreateRuleChatModal.tsx +46 -22
  583. package/src/routes/rules/components/RuleValueControls.tsx +3 -35
  584. package/src/routes/rules/components/rule-value-input.ts +34 -0
  585. package/src/routes/rules/components/rules.utils.ts +25 -3
  586. package/src/routes/rules/pages.ts +5 -1
  587. package/src/shared/graph-derived-queries.ts +6 -0
  588. package/src/themes/manta-dark.css +4 -0
  589. package/src/worker/index.ts +175 -0
  590. package/src/worker/policy.ts +62 -0
  591. package/src/worker/proxy.ts +101 -0
  592. package/src/worker/session.ts +111 -0
@@ -7,12 +7,10 @@ import { useLocalStorage } from "usehooks-ts";
7
7
  import { ActivityDetail, activityLayoutValues, type ActivityLayout } from "./ActivityDetail";
8
8
  import { Button } from "#components/button/index";
9
9
  import { RouteLayout } from "#components/layouts/RouteLayout";
10
- import { useAuthContext } from "#providers/AuthContext";
11
10
 
12
11
  const layoutStorageKey = "activity-detail-layout";
13
12
 
14
13
  export function ActivityDetailRoute() {
15
- const { datastore, datastores, user, logout, isOperator, canSwitchDatastore } = useAuthContext();
16
14
  const navigate = useNavigate();
17
15
  // The URL param is the IRI local name; buildActivityIri rebuilds the full IRI.
18
16
  const { id } = useParams();
@@ -27,14 +25,7 @@ export function ActivityDetailRoute() {
27
25
  );
28
26
 
29
27
  return (
30
- <RouteLayout
31
- user={user}
32
- datastore={datastore}
33
- datastores={datastores}
34
- isOperator={isOperator}
35
- canSwitchDatastore={canSwitchDatastore}
36
- logout={logout}
37
- >
28
+ <RouteLayout>
38
29
  <ActivityDetail
39
30
  activityIri={activityIri}
40
31
  leading={
@@ -14,7 +14,6 @@ import { PageBody, PageHeader } from "#components/layouts/page/index";
14
14
  import { RouteLayout } from "#components/layouts/RouteLayout";
15
15
  import { useFittedPagination } from "#hooks/useFittedPagination";
16
16
  import { type ActivityFeedFilters, type ActivityStatusFilter, useActivityFeed } from "#ldo-ui";
17
- import { useAuthContext } from "#providers/AuthContext";
18
17
 
19
18
  const activityTableGeometry = {
20
19
  headerRowHeight: 52,
@@ -25,7 +24,6 @@ const activityTableGeometry = {
25
24
  const statusValues = ["all", "completed", "failed", "running"] as const;
26
25
 
27
26
  export function ActivityRoute() {
28
- const { datastore, datastores, user, logout, isOperator, canSwitchDatastore } = useAuthContext();
29
27
  const navigate = useNavigate();
30
28
 
31
29
  const [page, setPage] = useQueryState("page", parseAsInteger.withDefault(1));
@@ -82,14 +80,7 @@ export function ActivityRoute() {
82
80
  }
83
81
 
84
82
  return (
85
- <RouteLayout
86
- user={user}
87
- datastore={datastore}
88
- datastores={datastores}
89
- isOperator={isOperator}
90
- canSwitchDatastore={canSwitchDatastore}
91
- logout={logout}
92
- >
83
+ <RouteLayout>
93
84
  <PageHeader title="Activity" icon={ActivityIcon} />
94
85
  <PageBody className="flex min-h-0 flex-col gap-4">
95
86
  <ActivityFilters
@@ -1,60 +1,24 @@
1
- import type { MantaModelId } from "@manta-eu/client/shared/model";
2
- import type { ReactNode } from "react";
3
1
  import { Chat } from "#components/chat-view/index";
4
2
  import { RouteLayout } from "#components/layouts/RouteLayout";
5
- import type { ChatDraft, Datastore, User } from "#lib/chat-types";
6
- import { AssistantIconProvider, type AssistantIcon } from "#providers/AssistantIconProvider";
3
+ import type { AuthenticatedChatProps } from "#lib/chat-types";
4
+ import { AssistantIconProvider } from "#providers/AssistantIconProvider";
7
5
  import { AssistantNameProvider } from "#providers/AssistantNameProvider";
6
+ import { useAuthContext } from "#providers/AuthContext";
8
7
 
9
- type ChatRouteProps = {
10
- datastore?: Datastore;
11
- user: User;
12
- logout?: () => void;
13
- isOperator: boolean;
14
- canSwitchDatastore?: boolean;
15
- datastores?: Datastore[];
16
- allowedModels?: MantaModelId[];
17
- initialPrompt?: string;
18
- initialDraft?: ChatDraft;
19
- title?: string;
20
- welcomeSubtitle?: string;
21
- assistantName?: string;
22
- assistantIcon?: AssistantIcon;
23
- mark?: ReactNode;
24
- };
8
+ export type ChatRouteProps = Pick<
9
+ AuthenticatedChatProps,
10
+ "initialPrompt" | "initialDraft" | "title" | "welcomeSubtitle" | "assistantName" | "assistantIcon" | "mark"
11
+ >;
25
12
 
26
13
  export function ChatRoute(props: ChatRouteProps) {
27
- const {
28
- datastore,
29
- user,
30
- logout,
31
- isOperator,
32
- canSwitchDatastore,
33
- datastores,
34
- allowedModels,
35
- initialPrompt,
36
- initialDraft,
37
- title,
38
- welcomeSubtitle,
39
- assistantName,
40
- assistantIcon,
41
- mark,
42
- } = props;
14
+ const { initialPrompt, initialDraft, title, welcomeSubtitle, assistantName, assistantIcon, mark } = props;
15
+
16
+ const { datastore, user, logout, isOperator, allowedModels } = useAuthContext();
43
17
 
44
18
  return (
45
19
  <AssistantNameProvider name={assistantName}>
46
20
  <AssistantIconProvider icon={assistantIcon}>
47
- <RouteLayout
48
- user={user}
49
- datastore={datastore}
50
- datastores={datastores}
51
- isOperator={isOperator}
52
- canSwitchDatastore={canSwitchDatastore}
53
- logout={logout}
54
- floatingMobileMenu
55
- title={title}
56
- mark={mark}
57
- >
21
+ <RouteLayout floatingMobileMenu title={title} mark={mark}>
58
22
  <Chat
59
23
  datastore={datastore}
60
24
  user={user}
@@ -7,7 +7,6 @@ import { FileDropzone, UploadProgressList, type RejectedDrop } from "#components
7
7
  import { PageBody, PageHeader } from "#components/layouts/page/index";
8
8
  import { RouteLayout } from "#components/layouts/RouteLayout";
9
9
  import { useFileUpload } from "#lib/hooks/useFileUpload";
10
- import { useAuthContext } from "#providers/AuthContext";
11
10
  import { UploadedFilesSection } from "#routes/data-explorer/components/uploads/UploadsPages";
12
11
  import { useInvalidateUploads } from "#routes/data-explorer/uploads";
13
12
 
@@ -45,17 +44,8 @@ export function DataCollectionUploader() {
45
44
  }
46
45
 
47
46
  export function DataCollectionRoute() {
48
- const { datastore, datastores, user, logout, isOperator, canSwitchDatastore } = useAuthContext();
49
-
50
47
  return (
51
- <RouteLayout
52
- user={user}
53
- datastore={datastore}
54
- datastores={datastores}
55
- isOperator={isOperator}
56
- canSwitchDatastore={canSwitchDatastore}
57
- logout={logout}
58
- >
48
+ <RouteLayout>
59
49
  <PageHeader title="Data collection" icon={FolderUp} />
60
50
  <PageBody className="px-4 py-6 sm:px-6">
61
51
  <div className="mx-auto flex max-w-4xl flex-col gap-8">
@@ -12,7 +12,6 @@ import { SelectionProvider } from "./SelectionProvider";
12
12
  import { PageBody, PageHeader } from "#components/layouts/page/index";
13
13
  import { RouteLayout } from "#components/layouts/RouteLayout";
14
14
  import { cn } from "#lib/utils";
15
- import { useAuthContext } from "#providers/AuthContext";
16
15
 
17
16
  const ontologyStaleTime = 5 * 60 * 1000;
18
17
 
@@ -28,8 +27,6 @@ function useExplorerQueryDefaults() {
28
27
  }
29
28
 
30
29
  export function DataExplorerLayout() {
31
- const { datastore, datastores, user, logout, isOperator, canSwitchDatastore } = useAuthContext();
32
-
33
30
  const isIndex = Boolean(useMatch(explorerPath));
34
31
  const isCoverage = Boolean(useMatch(coveragePath));
35
32
  const isFiles = Boolean(useMatch(filesPath));
@@ -41,14 +38,7 @@ export function DataExplorerLayout() {
41
38
  useExplorerQueryDefaults();
42
39
 
43
40
  return (
44
- <RouteLayout
45
- user={user}
46
- datastore={datastore}
47
- datastores={datastores}
48
- isOperator={isOperator}
49
- canSwitchDatastore={canSwitchDatastore}
50
- logout={logout}
51
- >
41
+ <RouteLayout>
52
42
  <SelectionProvider>
53
43
  <PageHeader
54
44
  title="Data Explorer"
@@ -9,7 +9,7 @@ import { sectionLabelClass } from "#ldo-ui";
9
9
  import { cn } from "#lib/utils";
10
10
  import { useMantaClient } from "#providers/index";
11
11
  import { labelWithinFamily, matchesNameQuery, nameFamilySections } from "#routes/data-explorer/families";
12
- import { getRuleDisplayName, getRuleRouteName } from "#routes/rules/components/rules.utils";
12
+ import { getRuleDisplayName, getRuleHref } from "#routes/rules/components/rules.utils";
13
13
 
14
14
  type RuleLinkProps = { ruleIri: string; family?: string };
15
15
 
@@ -20,7 +20,7 @@ function RuleLink(props: RuleLinkProps) {
20
20
  const label = family ? labelWithinFamily(fullLabel, family) : fullLabel;
21
21
 
22
22
  return (
23
- <LinkRow to={`/rules/${getRuleRouteName(ruleIri)}`}>
23
+ <LinkRow to={getRuleHref({ ruleIri })}>
24
24
  <span className="typography-small-medium min-w-0 flex-1 truncate text-default-foreground">{label}</span>
25
25
  </LinkRow>
26
26
  );
@@ -105,7 +105,8 @@ type DatastoreFilterToggle = {
105
105
  };
106
106
 
107
107
  export function DatastoresRoute() {
108
- const { datastore, datastores, user, logout, isOperator, canSwitchDatastore } = useAuthContext();
108
+ const { datastore, isOperator, canSwitchDatastore } = useAuthContext();
109
+
109
110
  const { mantaClient } = useMantaClient();
110
111
  const queryClient = useQueryClient();
111
112
  const navigate = useNavigate();
@@ -745,14 +746,7 @@ export function DatastoresRoute() {
745
746
  }
746
747
 
747
748
  return (
748
- <RouteLayout
749
- user={user}
750
- datastore={datastore}
751
- datastores={datastores}
752
- isOperator={isOperator}
753
- canSwitchDatastore={canSwitchDatastore}
754
- logout={logout}
755
- >
749
+ <RouteLayout>
756
750
  <PageHeader
757
751
  title="Datastores"
758
752
  icon={Database}
@@ -6,23 +6,13 @@ import { parseExplainUrlParams } from "./url-params";
6
6
  import { ExplainFact } from "#components/explain-fact/ExplainFact";
7
7
  import { PageHeader } from "#components/layouts/page/index";
8
8
  import { RouteLayout } from "#components/layouts/RouteLayout";
9
- import { useAuthContext } from "#providers/AuthContext";
10
9
 
11
10
  export function ExplainRoute() {
12
- const { datastore, datastores, user, logout, isOperator, canSwitchDatastore } = useAuthContext();
13
-
14
11
  const [searchParams] = useSearchParams();
15
12
  const params = useMemo(() => parseExplainUrlParams(searchParams), [searchParams]);
16
13
 
17
14
  return (
18
- <RouteLayout
19
- user={user}
20
- datastore={datastore}
21
- datastores={datastores}
22
- isOperator={isOperator}
23
- canSwitchDatastore={canSwitchDatastore}
24
- logout={logout}
25
- >
15
+ <RouteLayout>
26
16
  <PageHeader title="Explain" icon={Network} />
27
17
  <div className="min-h-0 flex-1 p-4">
28
18
  {params ? (
@@ -16,7 +16,6 @@ import { Input } from "#components/input/index";
16
16
  import { useMantaClient } from "#providers/index";
17
17
 
18
18
  const copy: SetupCopy = {
19
- providerName: "Dash",
20
19
  identityProviderName: "Dash",
21
20
  entitySingular: "folder",
22
21
  entityPlural: "folders",
@@ -11,7 +11,6 @@ import type { ConnectFormProps } from "./types";
11
11
  import { useMantaClient } from "#providers/index";
12
12
 
13
13
  const copy: SetupCopy = {
14
- providerName: "Google Ads",
15
14
  identityProviderName: "Google",
16
15
  entitySingular: "account",
17
16
  entityPlural: "accounts",
@@ -11,7 +11,6 @@ import type { ConnectFormProps } from "./types";
11
11
  import { useMantaClient } from "#providers/index";
12
12
 
13
13
  const copy: SetupCopy = {
14
- providerName: "Google Analytics",
15
14
  identityProviderName: "Google",
16
15
  entitySingular: "property",
17
16
  entityPlural: "properties",
@@ -11,7 +11,6 @@ import type { ConnectFormProps } from "./types";
11
11
  import { useMantaClient } from "#providers/index";
12
12
 
13
13
  const copy: SetupCopy = {
14
- providerName: "Merchant Center",
15
14
  identityProviderName: "Google",
16
15
  entitySingular: "account",
17
16
  entityPlural: "accounts",
@@ -37,7 +37,6 @@ export type CredentialStep<Key extends string = string> = {
37
37
  };
38
38
 
39
39
  export type InferalCredentialFormConfig<Key extends string = string> = {
40
- providerName: string;
41
40
  fieldIdPrefix: string;
42
41
  identifier: CredentialField<Key> & { stepTitle: string; stepDescription: string };
43
42
  secrets: CredentialStep<Key>;
@@ -240,11 +239,14 @@ export type InferalCredentialConnectFormProps<Key extends string> = ConnectFormP
240
239
 
241
240
  export function InferalCredentialConnectForm<Key extends string>(props: InferalCredentialConnectFormProps<Key>) {
242
241
  const { onBack, onChanged, onDismiss, provider, inferalConfig, config, importNotice } = props;
242
+ const { name: providerName } = provider;
243
+
243
244
  if (!inferalConfig) {
244
- throw new Error(`${config.providerName} is missing its Inferal connection configuration`);
245
+ throw new Error(`${providerName} is missing its Inferal connection configuration`);
245
246
  }
247
+
246
248
  const { deriveStreamName, locationLabels, setupInstructions } = inferalConfig;
247
- const { providerName, identifier, secrets, settings, buildProviderInput } = config;
249
+ const { identifier, secrets, settings, buildProviderInput } = config;
248
250
 
249
251
  const credentialFields = useMemo(
250
252
  () => [identifier, ...secrets.fields, ...(settings?.fields ?? [])],
@@ -18,7 +18,6 @@ function looksLikeMetricId(value: string): boolean {
18
18
 
19
19
  // companyId identifies the integration on our side only — Klaviyo's relay contract never receives it.
20
20
  export const klaviyoConfig: InferalCredentialFormConfig<"companyId" | "apiKey" | "conversionMetricId"> = {
21
- providerName: "Klaviyo",
22
21
  fieldIdPrefix: "klaviyo",
23
22
  identifier: {
24
23
  key: "companyId",
@@ -15,7 +15,6 @@ import type { TreeSelectItem } from "#components/tree-multi-select/index";
15
15
  import { useMantaClient } from "#providers/index";
16
16
 
17
17
  const copy: SetupCopy = {
18
- providerName: "Microsoft Ads",
19
18
  identityProviderName: "Microsoft",
20
19
  entitySingular: "account",
21
20
  entityPlural: "accounts",
@@ -39,9 +39,8 @@ export type OAuthSetup<Row extends SetupRow> = {
39
39
 
40
40
  export type SetupTreeOptions = Pick<TreeMultiSelectProps, "defaultCollapsed" | "includeDescendants">;
41
41
 
42
- // Every other string is derived from these names and the entity noun.
42
+ // The rest of the copy is derived from the provider name, the identity provider name and the entity noun.
43
43
  export type SetupCopy = {
44
- providerName: string;
45
44
  identityProviderName: string;
46
45
  entitySingular: string;
47
46
  entityPlural: string;
@@ -76,10 +75,11 @@ export type AlternateSignIn = { label: string; href: string };
76
75
 
77
76
  export function OAuthSetupConnectForm<Row extends SetupRow>(props: OAuthSetupConnectFormProps<Row>) {
78
77
  const { onBack, onChanged, onDismiss, provider, resumedFromOAuth = false, importNotice } = props;
79
- const { integration, oauthStartPath, copy, setup, treeItems, treeOptions, resumesUnfinishedSetup, pickExtras } =
80
- props;
81
- const { alternateSignIns } = props;
82
- const { providerName } = copy;
78
+ const { integration, oauthStartPath, setup, treeItems, treeOptions, resumesUnfinishedSetup, pickExtras } = props;
79
+ const { alternateSignIns, copy: setupCopy } = props;
80
+ const { name: providerName } = provider;
81
+
82
+ const copy = { ...setupCopy, providerName };
83
83
  const [hasStartedOAuth, setHasStartedOAuth] = useState(resumedFromOAuth);
84
84
  const [hasSeenActiveState, setHasSeenActiveState] = useState(resumedFromOAuth);
85
85
  const [selectedIds, setSelectedIds] = useState<ReadonlySet<string>>(new Set());
@@ -238,7 +238,7 @@ export function OAuthSetupConnectForm<Row extends SetupRow>(props: OAuthSetupCon
238
238
  }
239
239
 
240
240
  type CopyProps = {
241
- copy: SetupCopy;
241
+ copy: SetupCopy & { providerName: string };
242
242
  };
243
243
 
244
244
  type IdleViewProps = CopyProps & {
@@ -2,7 +2,6 @@ import { InferalCredentialConnectForm, type InferalCredentialFormConfig } from "
2
2
  import type { ConnectFormProps } from "./types";
3
3
 
4
4
  export const triplewhaleConfig: InferalCredentialFormConfig<"shopId" | "apiKey"> = {
5
- providerName: "Triple Whale",
6
5
  fieldIdPrefix: "triplewhale",
7
6
  identifier: {
8
7
  key: "shopId",
@@ -3,7 +3,6 @@ import { InferalCredentialConnectForm, type InferalCredentialFormConfig } from "
3
3
  import type { ConnectFormProps } from "./types";
4
4
 
5
5
  export const woocommerceConfig: InferalCredentialFormConfig<"sourceUrl" | "consumerKey" | "consumerSecret"> = {
6
- providerName: "WooCommerce",
7
6
  fieldIdPrefix: "woocommerce",
8
7
  identifier: {
9
8
  key: "sourceUrl",
@@ -1,10 +1,10 @@
1
- import type {
2
- GQLDataConnectionStatus,
3
- GQLGmailIntegrationStatus,
4
- GQLIncludedResource,
1
+ import {
5
2
  GQLInferalIntegrationProvider,
6
- GQLIntegration,
7
- GQLRelayIntegrationStatus,
3
+ type GQLDataConnectionStatus,
4
+ type GQLGmailIntegrationStatus,
5
+ type GQLIncludedResource,
6
+ type GQLIntegration,
7
+ type GQLRelayIntegrationStatus,
8
8
  } from "@manta-eu/client";
9
9
  import type { HexColor } from "@manta-eu/lib/color";
10
10
  import type { ComponentType, SVGProps } from "react";
@@ -98,3 +98,19 @@ export type ConnectedProvider<Id extends string = ProviderId> = {
98
98
  category: string;
99
99
  connections: ConnectionView[];
100
100
  };
101
+
102
+ export const inferalProviderNames: Record<`${GQLInferalIntegrationProvider}`, string> = {
103
+ [GQLInferalIntegrationProvider.GoogleAds]: "Google Ads",
104
+ [GQLInferalIntegrationProvider.GoogleAnalytics]: "Google Analytics",
105
+ [GQLInferalIntegrationProvider.GoogleMerchant]: "Merchant Center",
106
+ [GQLInferalIntegrationProvider.Klaviyo]: "Klaviyo",
107
+ [GQLInferalIntegrationProvider.Linkedin]: "LinkedIn Ads",
108
+ [GQLInferalIntegrationProvider.Mailchimp]: "Mailchimp",
109
+ [GQLInferalIntegrationProvider.Meta]: "Meta",
110
+ [GQLInferalIntegrationProvider.Microsoftads]: "Microsoft Ads",
111
+ [GQLInferalIntegrationProvider.Pinterest]: "Pinterest",
112
+ [GQLInferalIntegrationProvider.Shopify]: "Shopify",
113
+ [GQLInferalIntegrationProvider.Slack]: "Slack",
114
+ [GQLInferalIntegrationProvider.Triplewhale]: "Triple Whale",
115
+ [GQLInferalIntegrationProvider.Woocommerce]: "WooCommerce",
116
+ };
@@ -0,0 +1,72 @@
1
+ import { isPresent } from "@manta-eu/lib/present";
2
+ import { format, isValid, parseISO } from "date-fns";
3
+ import { X } from "lucide-react";
4
+ import { Button } from "#components/button/index";
5
+ import { InputDate, InputDateTime } from "#components/input/index";
6
+
7
+ export function parseDateValue(value: string | null | undefined): Date | undefined {
8
+ if (!isPresent(value)) return undefined;
9
+ const parsed = parseISO(value);
10
+ return isValid(parsed) ? parsed : undefined;
11
+ }
12
+
13
+ // Dates are stored as a calendar day; date-times as a UTC instant, shown in local time.
14
+ export function formatDateValue(date: Date, withTime: boolean): string {
15
+ return withTime ? date.toISOString() : format(date, "yyyy-MM-dd");
16
+ }
17
+
18
+ export type DateValueInputProps = {
19
+ id: string;
20
+ label: string;
21
+ value: string;
22
+ onChange: (value: string) => void;
23
+ withTime?: boolean;
24
+ min?: string | null;
25
+ max?: string | null;
26
+ placeholder?: string;
27
+ error?: string;
28
+ disabled?: boolean;
29
+ };
30
+
31
+ export function DateValueInput(props: DateValueInputProps) {
32
+ const { id, label, value, onChange, withTime = false, min, max, placeholder, error, disabled } = props;
33
+ const errorId = `${id}-error`;
34
+ const pickerProps = {
35
+ id,
36
+ selected: parseDateValue(value),
37
+ minDate: parseDateValue(min),
38
+ maxDate: parseDateValue(max),
39
+ allowPast: true,
40
+ placeholder,
41
+ disabled,
42
+ invalid: isPresent(error),
43
+ "aria-label": label,
44
+ "aria-describedby": error ? errorId : undefined,
45
+ onChange: (date: Date) => onChange(formatDateValue(date, withTime)),
46
+ };
47
+
48
+ return (
49
+ <div className="flex flex-col gap-1.5">
50
+ <div className="flex flex-wrap items-center gap-2">
51
+ {withTime ? <InputDateTime {...pickerProps} minuteStep={15} /> : <InputDate {...pickerProps} />}
52
+ {isPresent(value) && (
53
+ <Button
54
+ type="button"
55
+ variant="tertiary"
56
+ size="sm"
57
+ iconOnly
58
+ icon={X}
59
+ aria-label={`Clear ${label}`}
60
+ disabled={disabled}
61
+ onClick={() => onChange("")}
62
+ />
63
+ )}
64
+ </div>
65
+ {error && (
66
+ <p id={errorId} className="typography-small text-error-foreground">
67
+ {error}
68
+ </p>
69
+ )}
70
+ </div>
71
+ );
72
+ }
@@ -0,0 +1,132 @@
1
+ import { compactUri, isValidFullIri } from "@manta-eu/client/shared/rdf-namespaces";
2
+ import { isPresent } from "@manta-eu/lib/present";
3
+ import { sanitizeSparqlLiteral } from "@manta-eu/rdf-lib/sparql-literal-escape";
4
+ import { ChevronDown } from "lucide-react";
5
+ import { useState } from "react";
6
+ import { useDebounceValue } from "usehooks-ts";
7
+ import {
8
+ Combobox,
9
+ ComboboxContent,
10
+ ComboboxEmpty,
11
+ ComboboxInput,
12
+ ComboboxItem,
13
+ ComboboxList,
14
+ ComboboxTrigger,
15
+ } from "#components/combobox/index";
16
+ import { createSelectClassName } from "#components/select/index";
17
+ import { useSparqlSelect } from "#hooks/use-sparql-construct";
18
+ import { cn } from "#lib/utils";
19
+
20
+ const schemaName = "https://schema.org/name";
21
+ const resultLimit = 20;
22
+ const untypedMinimumSearch = 2;
23
+
24
+ // Anchored on the class when the property names one; otherwise a name search, which needs a few letters first.
25
+ export function entitySearchQuery(entityClass: string | null, search: string): string | null {
26
+ const typed = entityClass !== null && isValidFullIri(entityClass);
27
+ if (!typed && search.trim().length < untypedMinimumSearch) return null;
28
+ const needle = sanitizeSparqlLiteral(search.trim().toLowerCase());
29
+ return `SELECT DISTINCT ?iri ?name WHERE {
30
+ ${typed ? `?iri a <${entityClass}> .` : ""}
31
+ ?iri <${schemaName}> ?name .
32
+ FILTER(!isBlank(?iri))
33
+ FILTER(CONTAINS(LCASE(STR(?name)), "${needle}"))
34
+ } LIMIT ${resultLimit}`;
35
+ }
36
+
37
+ function entityNameQuery(iri: string): string | null {
38
+ return isValidFullIri(iri) ? `SELECT ?name WHERE { <${iri}> <${schemaName}> ?name } LIMIT 1` : null;
39
+ }
40
+
41
+ export type EntityValuePickerProps = {
42
+ id: string;
43
+ label: string;
44
+ value: string;
45
+ entityClass: string | null;
46
+ error?: string;
47
+ onChange: (iri: string) => void;
48
+ };
49
+
50
+ export function EntityValuePicker(props: EntityValuePickerProps) {
51
+ const { id, label, value, entityClass, error, onChange } = props;
52
+ const [open, setOpen] = useState(false);
53
+ const [search, setSearch] = useState("");
54
+ const [debouncedSearch] = useDebounceValue(search, 300);
55
+ const searchQuery = entitySearchQuery(entityClass, debouncedSearch);
56
+ const nameQuery = isPresent(value) ? entityNameQuery(value) : null;
57
+
58
+ const { data: results, isFetching } = useSparqlSelect({
59
+ query: searchQuery ?? "",
60
+ queryKey: ["memory-entity-search", entityClass, debouncedSearch],
61
+ enabled: open && searchQuery !== null,
62
+ });
63
+ const { data: named } = useSparqlSelect({
64
+ query: nameQuery ?? "",
65
+ queryKey: ["memory-entity-name", value],
66
+ enabled: nameQuery !== null,
67
+ staleTime: 60_000,
68
+ });
69
+
70
+ const options = (results ?? []).flatMap((binding) => {
71
+ const iri = binding.get("iri")?.value;
72
+ return iri ? [{ iri, name: binding.get("name")?.value ?? compactUri(iri) }] : [];
73
+ });
74
+ const selectedName = named?.[0]?.get("name")?.value;
75
+ const errorId = `${id}-error`;
76
+
77
+ return (
78
+ <div className="flex flex-col gap-1.5">
79
+ <Combobox open={open} onOpenChange={setOpen}>
80
+ <ComboboxTrigger asChild>
81
+ <button
82
+ type="button"
83
+ id={id}
84
+ aria-label={`${label}: ${isPresent(value) ? (selectedName ?? compactUri(value)) : "not set"}`}
85
+ aria-invalid={error ? true : undefined}
86
+ aria-describedby={error ? errorId : undefined}
87
+ className={cn(createSelectClassName({ size: "base" }), "w-full min-w-0")}
88
+ >
89
+ <span
90
+ className={cn("min-w-0 flex-1 truncate text-left", !isPresent(value) && "text-placeholder-foreground")}
91
+ >
92
+ {isPresent(value) ? (selectedName ?? compactUri(value)) : "Choose a record"}
93
+ </span>
94
+ <ChevronDown className="size-4 shrink-0 text-muted-foreground" />
95
+ </button>
96
+ </ComboboxTrigger>
97
+ <ComboboxContent align="start" className="w-[var(--radix-popover-trigger-width,320px)]" filter={() => 1}>
98
+ <ComboboxInput placeholder="Search by name…" value={search} onValueChange={setSearch} />
99
+ <ComboboxList>
100
+ <ComboboxEmpty>
101
+ {searchQuery === null
102
+ ? `Type at least ${untypedMinimumSearch} letters`
103
+ : isFetching
104
+ ? "Searching…"
105
+ : "No matching record"}
106
+ </ComboboxEmpty>
107
+ {isPresent(value) && (
108
+ <ComboboxItem value="__clear__" onSelect={() => onChange("")}>
109
+ Clear
110
+ </ComboboxItem>
111
+ )}
112
+ {options.map((option) => (
113
+ <ComboboxItem
114
+ key={option.iri}
115
+ value={option.iri}
116
+ selected={option.iri === value}
117
+ onSelect={() => onChange(option.iri)}
118
+ >
119
+ {option.name}
120
+ </ComboboxItem>
121
+ ))}
122
+ </ComboboxList>
123
+ </ComboboxContent>
124
+ </Combobox>
125
+ {error && (
126
+ <p id={errorId} className="typography-small text-error-foreground">
127
+ {error}
128
+ </p>
129
+ )}
130
+ </div>
131
+ );
132
+ }