@rebasepro/cms 0.17.3 → 0.18.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 (449) hide show
  1. package/README.md +4 -0
  2. package/dist/{CollectionEditorDialog-B-akreOU.js → CollectionEditorDialog-BeX4b92r.js} +13 -7
  3. package/dist/{CollectionEditorDialog-B-akreOU.js.map → CollectionEditorDialog-BeX4b92r.js.map} +1 -1
  4. package/dist/{PropertyEditView-CiY84wkR.js → PropertyEditView-C7thfj4L.js} +3 -3
  5. package/dist/{PropertyEditView-CiY84wkR.js.map → PropertyEditView-C7thfj4L.js.map} +1 -1
  6. package/dist/{RouterCollectionsStudioView-DkAWda4N.js → RouterCollectionsStudioView-BtjzvB6E.js} +4 -4
  7. package/dist/{RouterCollectionsStudioView-DkAWda4N.js.map → RouterCollectionsStudioView-BtjzvB6E.js.map} +1 -1
  8. package/dist/{SchemaChangeDialog-DceT8QFX.js → SchemaChangeDialog-CkqK6KOC.js} +4 -2
  9. package/dist/{SchemaChangeDialog-DceT8QFX.js.map → SchemaChangeDialog-CkqK6KOC.js.map} +1 -1
  10. package/dist/collection_editor/api/generateCollectionApi.d.ts +1 -2
  11. package/dist/collection_editor_ui.d.ts +2 -0
  12. package/dist/collection_editor_ui.js +6 -5
  13. package/dist/collection_editor_ui.js.map +1 -1
  14. package/dist/components/DeleteEntityDialog.d.ts +2 -3
  15. package/dist/components/RebaseLayout.d.ts +11 -4
  16. package/dist/components/field_configs.d.ts +1 -1
  17. package/dist/editor/sanitize-html.d.ts +15 -0
  18. package/dist/editor.js +195 -10
  19. package/dist/editor.js.map +1 -1
  20. package/dist/{export-Ben8E355.js → export--arni_VY.js} +2 -2
  21. package/dist/{export-Ben8E355.js.map → export--arni_VY.js.map} +1 -1
  22. package/dist/form/components/LabelWithIcon.d.ts +10 -0
  23. package/dist/{history-DIEVd26f.js → history-C2TpoQwi.js} +2 -2
  24. package/dist/{history-DIEVd26f.js.map → history-C2TpoQwi.js.map} +1 -1
  25. package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +1 -1
  26. package/dist/hooks/navigation/useResolvedViews.d.ts +1 -1
  27. package/dist/hooks/navigation/useTopLevelNavigation.d.ts +1 -1
  28. package/dist/{import-D25x7ko-.js → import-DTkXNoBg.js} +2 -2
  29. package/dist/{import-D25x7ko-.js.map → import-DTkXNoBg.js.map} +1 -1
  30. package/dist/index.js +78 -33
  31. package/dist/index.js.map +1 -1
  32. package/dist/util/propertyConfigMapper.d.ts +1 -1
  33. package/dist/util-CfLFggP7.js +57 -0
  34. package/dist/util-CfLFggP7.js.map +1 -0
  35. package/dist/{util-DVqnqlLn.js → util-DE1WQW6h.js} +134 -112
  36. package/dist/util-DE1WQW6h.js.map +1 -0
  37. package/package.json +42 -34
  38. package/dist/util-DVqnqlLn.js.map +0 -1
  39. package/src/collection_editor/CollectionEditorDialogsContext.tsx +0 -25
  40. package/src/collection_editor/ConfigControllerProvider.tsx +0 -395
  41. package/src/collection_editor/_cms_internals.ts +0 -41
  42. package/src/collection_editor/api/generateCollectionApi.ts +0 -126
  43. package/src/collection_editor/api/index.ts +0 -1
  44. package/src/collection_editor/extensibility_types.ts +0 -168
  45. package/src/collection_editor/index.ts +0 -108
  46. package/src/collection_editor/liveSchemaClient.ts +0 -285
  47. package/src/collection_editor/relation_kinds.ts +0 -44
  48. package/src/collection_editor/serializable_types.ts +0 -535
  49. package/src/collection_editor/serializable_utils.ts +0 -729
  50. package/src/collection_editor/types/collection_editor_controller.tsx +0 -62
  51. package/src/collection_editor/types/collection_inference.ts +0 -18
  52. package/src/collection_editor/types/config_controller.tsx +0 -121
  53. package/src/collection_editor/ui/AddKanbanColumnAction.tsx +0 -199
  54. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +0 -51
  55. package/src/collection_editor/ui/EditorCollectionAction.tsx +0 -54
  56. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +0 -90
  57. package/src/collection_editor/ui/EditorEntityAction.tsx +0 -50
  58. package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +0 -114
  59. package/src/collection_editor/ui/KanbanSetupAction.tsx +0 -43
  60. package/src/collection_editor/ui/MissingReferenceWidget.tsx +0 -35
  61. package/src/collection_editor/ui/NewCollectionButton.tsx +0 -27
  62. package/src/collection_editor/ui/NewCollectionCard.tsx +0 -48
  63. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +0 -49
  64. package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +0 -260
  65. package/src/collection_editor/ui/collection_editor/AIModifiedPathsContext.tsx +0 -90
  66. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +0 -388
  67. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +0 -1098
  68. package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +0 -301
  69. package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +0 -172
  70. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +0 -620
  71. package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +0 -530
  72. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +0 -462
  73. package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +0 -104
  74. package/src/collection_editor/ui/collection_editor/CollectionYupValidation.tsx +0 -9
  75. package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +0 -199
  76. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +0 -315
  77. package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +0 -164
  78. package/src/collection_editor/ui/collection_editor/EntityActionsSelectDialog.tsx +0 -40
  79. package/src/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +0 -39
  80. package/src/collection_editor/ui/collection_editor/EnumForm.tsx +0 -373
  81. package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +0 -288
  82. package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +0 -141
  83. package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +0 -194
  84. package/src/collection_editor/ui/collection_editor/LayoutModeSwitch.tsx +0 -53
  85. package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +0 -980
  86. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +0 -164
  87. package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +0 -364
  88. package/src/collection_editor/ui/collection_editor/RouterCollectionStudioView.tsx +0 -44
  89. package/src/collection_editor/ui/collection_editor/RouterCollectionsStudioView.tsx +0 -41
  90. package/src/collection_editor/ui/collection_editor/SchemaChangeDialog.tsx +0 -470
  91. package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +0 -256
  92. package/src/collection_editor/ui/collection_editor/SwitchControl.tsx +0 -39
  93. package/src/collection_editor/ui/collection_editor/ViewModeSwitch.tsx +0 -68
  94. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +0 -67
  95. package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +0 -296
  96. package/src/collection_editor/ui/collection_editor/import/clean_import_data.ts +0 -57
  97. package/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.tsx +0 -147
  98. package/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.tsx +0 -41
  99. package/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.tsx +0 -113
  100. package/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.tsx +0 -250
  101. package/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.tsx +0 -126
  102. package/src/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.tsx +0 -20
  103. package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +0 -153
  104. package/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.tsx +0 -217
  105. package/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.tsx +0 -117
  106. package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +0 -129
  107. package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +0 -335
  108. package/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.tsx +0 -107
  109. package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +0 -403
  110. package/src/collection_editor/ui/collection_editor/properties/StringPropertyField.tsx +0 -148
  111. package/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.tsx +0 -91
  112. package/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.tsx +0 -34
  113. package/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +0 -49
  114. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +0 -925
  115. package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsPanel.tsx +0 -28
  116. package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +0 -626
  117. package/src/collection_editor/ui/collection_editor/properties/conditions/index.ts +0 -6
  118. package/src/collection_editor/ui/collection_editor/properties/conditions/property_paths.ts +0 -93
  119. package/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +0 -52
  120. package/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +0 -63
  121. package/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +0 -114
  122. package/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +0 -154
  123. package/src/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.tsx +0 -28
  124. package/src/collection_editor/ui/collection_editor/templates/blog_template.ts +0 -112
  125. package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +0 -183
  126. package/src/collection_editor/ui/collection_editor/templates/products_template.ts +0 -88
  127. package/src/collection_editor/ui/collection_editor/templates/users_template.ts +0 -42
  128. package/src/collection_editor/ui/collection_editor/util.ts +0 -28
  129. package/src/collection_editor/ui/collection_editor/utils/strings.ts +0 -1
  130. package/src/collection_editor/ui/collection_editor/utils/supported_fields.tsx +0 -39
  131. package/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.ts +0 -276
  132. package/src/collection_editor/useCollectionEditorController.tsx +0 -9
  133. package/src/collection_editor/useCollectionsConfigController.tsx +0 -9
  134. package/src/collection_editor/useJsonCollectionsConfigController.tsx +0 -297
  135. package/src/collection_editor/useLiveSchemaEditing.tsx +0 -315
  136. package/src/collection_editor/useLocalCollectionsConfigController.tsx +0 -341
  137. package/src/collection_editor/useSafeSnackbarController.ts +0 -9
  138. package/src/collection_editor/validateCollectionJson.ts +0 -440
  139. package/src/collection_editor_ui.ts +0 -21
  140. package/src/components/AdditionalFieldValue.tsx +0 -68
  141. package/src/components/AdminModeSyncer.tsx +0 -56
  142. package/src/components/ArrayContainer.tsx +0 -542
  143. package/src/components/ClearFilterSortButton.tsx +0 -56
  144. package/src/components/CollectionEditorDialogs.tsx +0 -69
  145. package/src/components/CollectionPanel.tsx +0 -179
  146. package/src/components/CollectionTableBinding/CollectionRowActions.tsx +0 -244
  147. package/src/components/CollectionTableBinding/CollectionTableBinding.tsx +0 -394
  148. package/src/components/CollectionTableBinding/CollectionTableBindingProps.tsx +0 -172
  149. package/src/components/CollectionTableBinding/PropertyTableCell.tsx +0 -350
  150. package/src/components/CollectionTableBinding/column_utils.tsx +0 -155
  151. package/src/components/CollectionTableBinding/fields/TableMultipleRelationField.tsx +0 -131
  152. package/src/components/CollectionTableBinding/fields/TableReferenceField.tsx +0 -193
  153. package/src/components/CollectionTableBinding/fields/TableRelationField.tsx +0 -192
  154. package/src/components/CollectionTableBinding/fields/TableRelationSelectorField.tsx +0 -42
  155. package/src/components/CollectionTableBinding/fields/TableStorageUpload.tsx +0 -324
  156. package/src/components/CollectionTableBinding/fields/VirtualTableSelect.tsx +0 -132
  157. package/src/components/CollectionTableBinding/fields/VirtualTableUserSelect.tsx +0 -41
  158. package/src/components/CollectionTableBinding/index.tsx +0 -14
  159. package/src/components/CollectionTableBinding/internal/CollectionTableToolbar.tsx +0 -96
  160. package/src/components/CollectionTableBinding/internal/EntityTableCell.tsx +0 -309
  161. package/src/components/CollectionTableBinding/internal/EntityTableCellActions.tsx +0 -80
  162. package/src/components/CollectionTableBinding/internal/common.tsx +0 -74
  163. package/src/components/CollectionTableBinding/internal/popup_field/PopupFormField.tsx +0 -422
  164. package/src/components/CollectionTableBinding/internal/popup_field/useDraggable.tsx +0 -99
  165. package/src/components/CollectionTableBinding/internal/popup_field/useWindowSize.tsx +0 -22
  166. package/src/components/CollectionTableBinding/table_bindings.tsx +0 -350
  167. package/src/components/CollectionViewBinding/BoardCardBinding.tsx +0 -263
  168. package/src/components/CollectionViewBinding/CollectionBoardViewBinding.tsx +0 -662
  169. package/src/components/CollectionViewBinding/CollectionCardViewBinding.tsx +0 -159
  170. package/src/components/CollectionViewBinding/CollectionListViewBinding.tsx +0 -1430
  171. package/src/components/CollectionViewBinding/CollectionViewActions.tsx +0 -227
  172. package/src/components/CollectionViewBinding/CollectionViewBinding.tsx +0 -1603
  173. package/src/components/CollectionViewBinding/CollectionViewStartActions.tsx +0 -240
  174. package/src/components/CollectionViewBinding/EntityCardBinding.tsx +0 -239
  175. package/src/components/CollectionViewBinding/FilterPresetsButton.tsx +0 -298
  176. package/src/components/CollectionViewBinding/FiltersDialog.tsx +0 -218
  177. package/src/components/CollectionViewBinding/SearchExplanation.tsx +0 -106
  178. package/src/components/CollectionViewBinding/SearchHighlight.tsx +0 -311
  179. package/src/components/CollectionViewBinding/SlotValue.tsx +0 -156
  180. package/src/components/CollectionViewBinding/SortButton.tsx +0 -354
  181. package/src/components/CollectionViewBinding/SplitListCloseButton.tsx +0 -49
  182. package/src/components/CollectionViewBinding/SplitListShowButton.tsx +0 -28
  183. package/src/components/CollectionViewBinding/SplitListView.tsx +0 -488
  184. package/src/components/CollectionViewBinding/SplitViewContext.tsx +0 -34
  185. package/src/components/CollectionViewBinding/ViewModeToggle.tsx +0 -250
  186. package/src/components/CollectionViewBinding/hooks/useCollectionInlineEditor.ts +0 -81
  187. package/src/components/CollectionViewBinding/hooks/useKanbanDragAndDrop.ts +0 -181
  188. package/src/components/CollectionViewBinding/useBoardDataController.tsx +0 -802
  189. package/src/components/CollectionViewBinding/usePreviewSlots.ts +0 -703
  190. package/src/components/CollectionViewBinding/useSelectionController.tsx +0 -40
  191. package/src/components/CollectionViewBinding/utils.ts +0 -22
  192. package/src/components/DefaultAppBar.tsx +0 -264
  193. package/src/components/DefaultDrawer.tsx +0 -593
  194. package/src/components/DeleteEntityDialog.tsx +0 -205
  195. package/src/components/DetailViewBinding.tsx +0 -731
  196. package/src/components/DrawerNavigationGroup.tsx +0 -141
  197. package/src/components/DrawerNavigationItem.tsx +0 -115
  198. package/src/components/EditFormActions.tsx +0 -303
  199. package/src/components/EditViewBinding.tsx +0 -1069
  200. package/src/components/EntityDisplayHeader.tsx +0 -170
  201. package/src/components/EntityIdentityBar.tsx +0 -428
  202. package/src/components/EntityInspector.tsx +0 -156
  203. package/src/components/EntityPreviewBinding.tsx +0 -432
  204. package/src/components/EntityPreviewNesting.tsx +0 -50
  205. package/src/components/EntityViewBinding.tsx +0 -374
  206. package/src/components/FieldCaption.tsx +0 -14
  207. package/src/components/HomePage/ContentHomePage.tsx +0 -586
  208. package/src/components/HomePage/FavouritesView.tsx +0 -60
  209. package/src/components/HomePage/HomePageDnD.tsx +0 -704
  210. package/src/components/HomePage/NavigationCard.tsx +0 -81
  211. package/src/components/HomePage/NavigationCardBinding.tsx +0 -107
  212. package/src/components/HomePage/NavigationGroup.tsx +0 -156
  213. package/src/components/HomePage/RenameGroupDialog.tsx +0 -123
  214. package/src/components/HomePage/SmallNavigationCard.tsx +0 -41
  215. package/src/components/HomePage/index.tsx +0 -5
  216. package/src/components/InlineEntityPreview.tsx +0 -149
  217. package/src/components/JsonPreviewBinding.tsx +0 -66
  218. package/src/components/PropertyCollectionView.tsx +0 -336
  219. package/src/components/PropertyConfigBadge.tsx +0 -28
  220. package/src/components/PropertyIdCopyTooltip.tsx +0 -47
  221. package/src/components/RebaseAuthGate.tsx +0 -44
  222. package/src/components/RebaseCMS.tsx +0 -30
  223. package/src/components/RebaseLayout.tsx +0 -80
  224. package/src/components/RebaseNavigation.tsx +0 -369
  225. package/src/components/RebaseRouteDefs.tsx +0 -127
  226. package/src/components/RebaseShell.tsx +0 -83
  227. package/src/components/ReferenceTable/SelectionTableBinding.tsx +0 -389
  228. package/src/components/ReferenceWidget.tsx +0 -156
  229. package/src/components/RelationSelector.tsx +0 -926
  230. package/src/components/SearchIconsView.tsx +0 -78
  231. package/src/components/SelectableTable/SelectableTable.tsx +0 -309
  232. package/src/components/SelectableTable/SelectableTableContext.tsx +0 -7
  233. package/src/components/SelectableTable/SelectionStore.ts +0 -43
  234. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +0 -59
  235. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +0 -146
  236. package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +0 -190
  237. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +0 -250
  238. package/src/components/SelectableTable/filters/RelationFilterField.tsx +0 -238
  239. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +0 -282
  240. package/src/components/SelectableTable/filters/null_filter.ts +0 -63
  241. package/src/components/SideDialogs.tsx +0 -238
  242. package/src/components/SidePanelBinding.tsx +0 -361
  243. package/src/components/SidePanelProvider.tsx +0 -80
  244. package/src/components/UserSelector.tsx +0 -513
  245. package/src/components/admin/CreationResultDialog.tsx +0 -138
  246. package/src/components/admin/index.ts +0 -1
  247. package/src/components/app/AppBar.tsx +0 -17
  248. package/src/components/app/Drawer.tsx +0 -38
  249. package/src/components/app/Scaffold.tsx +0 -366
  250. package/src/components/app/index.ts +0 -4
  251. package/src/components/app/useApp.tsx +0 -36
  252. package/src/components/common/default_entity_actions.tsx +0 -440
  253. package/src/components/common/index.ts +0 -1
  254. package/src/components/field_configs.tsx +0 -506
  255. package/src/components/history/EntityHistoryEntry.tsx +0 -203
  256. package/src/components/history/EntityHistoryView.tsx +0 -206
  257. package/src/components/history/LastEditedByFormAction.tsx +0 -24
  258. package/src/components/history/LastEditedByIndicator.tsx +0 -95
  259. package/src/components/history/UserChip.tsx +0 -15
  260. package/src/components/history/index.tsx +0 -5
  261. package/src/components/index.ts +0 -63
  262. package/src/contexts/BreacrumbsContext.tsx +0 -45
  263. package/src/contexts/SideDialogsControllerContext.tsx +0 -5
  264. package/src/contexts/SidePanelControllerContext.tsx +0 -5
  265. package/src/data_export/export/BasicExportAction.tsx +0 -142
  266. package/src/data_export/export/ExportCollectionAction.tsx +0 -321
  267. package/src/data_export/export/export.ts +0 -295
  268. package/src/data_export/export/fetch_export_data.ts +0 -90
  269. package/src/data_export/export/index.ts +0 -4
  270. package/src/data_export/index.ts +0 -1
  271. package/src/data_import/components/DataNewPropertiesMapping.tsx +0 -261
  272. package/src/data_import/components/ImportFileUpload.tsx +0 -42
  273. package/src/data_import/components/ImportNewPropertyFieldPreview.tsx +0 -58
  274. package/src/data_import/components/ImportSaveInProgress.tsx +0 -121
  275. package/src/data_import/components/index.ts +0 -4
  276. package/src/data_import/hooks/index.ts +0 -1
  277. package/src/data_import/hooks/useImportConfig.tsx +0 -34
  278. package/src/data_import/import/ImportCollectionAction.tsx +0 -461
  279. package/src/data_import/import/index.ts +0 -1
  280. package/src/data_import/index.ts +0 -5
  281. package/src/data_import/types/column_mapping.ts +0 -32
  282. package/src/data_import/types/index.ts +0 -1
  283. package/src/data_import/utils/csv.ts +0 -153
  284. package/src/data_import/utils/data.ts +0 -181
  285. package/src/data_import/utils/file_headers.ts +0 -14
  286. package/src/data_import/utils/file_to_json.ts +0 -149
  287. package/src/data_import/utils/get_import_inference_type.ts +0 -33
  288. package/src/data_import/utils/get_properties_mapping.ts +0 -67
  289. package/src/data_import/utils/index.ts +0 -5
  290. package/src/data_import/utils/save_entities.ts +0 -138
  291. package/src/data_import/utils/transforms.ts +0 -70
  292. package/src/editor/components/SlashCommandMenu.tsx +0 -532
  293. package/src/editor/components/editor-bubble-item.tsx +0 -32
  294. package/src/editor/components/editor-bubble.tsx +0 -143
  295. package/src/editor/components/image-bubble.tsx +0 -183
  296. package/src/editor/components/index.ts +0 -14
  297. package/src/editor/components/table-bubble.tsx +0 -233
  298. package/src/editor/editor.tsx +0 -529
  299. package/src/editor/extensions/HighlightDecorationExtension.ts +0 -115
  300. package/src/editor/extensions/Image.ts +0 -159
  301. package/src/editor/extensions/TextLoadingDecorationExtension.tsx +0 -107
  302. package/src/editor/extensions/clipboard.ts +0 -72
  303. package/src/editor/extensions/custom-keymap.ts +0 -25
  304. package/src/editor/extensions/drag-and-drop.tsx +0 -508
  305. package/src/editor/hooks/useProseMirror.ts +0 -126
  306. package/src/editor/hooks/useProseMirrorContext.ts +0 -15
  307. package/src/editor/index.ts +0 -2
  308. package/src/editor/markdown-it-plugins.d.ts +0 -24
  309. package/src/editor/markdown.ts +0 -204
  310. package/src/editor/nodeViews/ImageComponent.tsx +0 -20
  311. package/src/editor/nodeViews/ReactNodeView.tsx +0 -89
  312. package/src/editor/nodeViews/TaskItemComponent.tsx +0 -30
  313. package/src/editor/nodeViews/index.ts +0 -35
  314. package/src/editor/plugins/index.ts +0 -58
  315. package/src/editor/plugins/inputrules.ts +0 -82
  316. package/src/editor/plugins/placeholderPlugin.ts +0 -55
  317. package/src/editor/plugins/slashCommandPlugin.ts +0 -65
  318. package/src/editor/schema.ts +0 -339
  319. package/src/editor/selectors/ai-selector.tsx +0 -110
  320. package/src/editor/selectors/color-selector.tsx +0 -199
  321. package/src/editor/selectors/link-selector.tsx +0 -122
  322. package/src/editor/selectors/node-selector.tsx +0 -159
  323. package/src/editor/selectors/text-buttons.tsx +0 -79
  324. package/src/editor/types.ts +0 -6
  325. package/src/editor/useProseMirror.ts +0 -125
  326. package/src/editor/utils/prosemirror-utils.ts +0 -113
  327. package/src/editor/utils/remove_classes.ts +0 -18
  328. package/src/editor/utils/useDebouncedCallback.ts +0 -25
  329. package/src/form/EntityForm.tsx +0 -761
  330. package/src/form/EntityFormActions.tsx +0 -160
  331. package/src/form/EntityFormBinding.tsx +0 -342
  332. package/src/form/PropertyFieldBinding.tsx +0 -348
  333. package/src/form/components/ErrorFocus.tsx +0 -44
  334. package/src/form/components/FieldBlock.tsx +0 -189
  335. package/src/form/components/FieldHelperText.tsx +0 -84
  336. package/src/form/components/FormRail.tsx +0 -153
  337. package/src/form/components/FormSections.tsx +0 -145
  338. package/src/form/components/LabelWithIcon.tsx +0 -43
  339. package/src/form/components/LabelWithIconAndTooltip.tsx +0 -28
  340. package/src/form/components/LocalChangesMenu.tsx +0 -147
  341. package/src/form/components/StorageItemPreview.tsx +0 -81
  342. package/src/form/components/StorageUploadProgress.tsx +0 -118
  343. package/src/form/components/index.tsx +0 -6
  344. package/src/form/components/useRailVisible.tsx +0 -47
  345. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +0 -109
  346. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +0 -172
  347. package/src/form/field_bindings/BinaryFieldBinding.tsx +0 -177
  348. package/src/form/field_bindings/BlockFieldBinding.tsx +0 -282
  349. package/src/form/field_bindings/DateTimeFieldBinding.tsx +0 -78
  350. package/src/form/field_bindings/GeopointFieldBinding.tsx +0 -200
  351. package/src/form/field_bindings/KeyValueFieldBinding.tsx +0 -574
  352. package/src/form/field_bindings/MapFieldBinding.tsx +0 -120
  353. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +0 -259
  354. package/src/form/field_bindings/MultiSelectFieldBinding.tsx +0 -130
  355. package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +0 -168
  356. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +0 -94
  357. package/src/form/field_bindings/ReferenceFieldBinding.tsx +0 -146
  358. package/src/form/field_bindings/RelationFieldBinding.tsx +0 -202
  359. package/src/form/field_bindings/RepeatFieldBinding.tsx +0 -143
  360. package/src/form/field_bindings/SelectFieldBinding.tsx +0 -111
  361. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +0 -521
  362. package/src/form/field_bindings/SwitchFieldBinding.tsx +0 -70
  363. package/src/form/field_bindings/TextFieldBinding.tsx +0 -189
  364. package/src/form/field_bindings/UserSelectFieldBinding.tsx +0 -71
  365. package/src/form/field_bindings/VectorFieldBinding.tsx +0 -209
  366. package/src/form/form_utils.ts +0 -243
  367. package/src/form/index.tsx +0 -36
  368. package/src/form/useClearRestoreValue.tsx +0 -36
  369. package/src/form/useUndoableDiscard.ts +0 -39
  370. package/src/form/validation.ts +0 -583
  371. package/src/hooks/index.ts +0 -16
  372. package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +0 -22
  373. package/src/hooks/navigation/contexts/NavigationStateContext.tsx +0 -16
  374. package/src/hooks/navigation/contexts/UrlContext.tsx +0 -24
  375. package/src/hooks/navigation/contexts/index.ts +0 -14
  376. package/src/hooks/navigation/useAsyncResolver.ts +0 -100
  377. package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +0 -218
  378. package/src/hooks/navigation/useBuildNavigationStateController.tsx +0 -134
  379. package/src/hooks/navigation/useBuildUrlController.tsx +0 -66
  380. package/src/hooks/navigation/useNavigationResolution.ts +0 -271
  381. package/src/hooks/navigation/useResolvedCollections.ts +0 -102
  382. package/src/hooks/navigation/useResolvedViews.tsx +0 -139
  383. package/src/hooks/navigation/useTopLevelNavigation.ts +0 -273
  384. package/src/hooks/navigation/utils.ts +0 -200
  385. package/src/hooks/useAdminContext.tsx +0 -83
  386. package/src/hooks/useBreadcrumbsController.tsx +0 -17
  387. package/src/hooks/useBuildSideDialogsController.tsx +0 -145
  388. package/src/hooks/useBuildSidePanel.tsx +0 -315
  389. package/src/hooks/useChildViewSource.ts +0 -46
  390. package/src/hooks/useEntityDisplay.tsx +0 -262
  391. package/src/hooks/useEntityDisplayTitle.tsx +0 -49
  392. package/src/hooks/useHistory.ts +0 -178
  393. package/src/hooks/useRecordActions.tsx +0 -69
  394. package/src/hooks/useResolvedNavigationFrom.tsx +0 -167
  395. package/src/hooks/useResolvedUsers.ts +0 -148
  396. package/src/hooks/useSelectionDialog.tsx +0 -58
  397. package/src/hooks/useSideDialogsController.tsx +0 -25
  398. package/src/hooks/useSidePanel.tsx +0 -13
  399. package/src/index.ts +0 -124
  400. package/src/preview/PropertyPreview.tsx +0 -331
  401. package/src/preview/compact_text.ts +0 -68
  402. package/src/preview/components/ArrayEnumPreview.tsx +0 -39
  403. package/src/preview/components/BooleanPreview.tsx +0 -28
  404. package/src/preview/components/DatePreview.tsx +0 -106
  405. package/src/preview/components/EmptyValue.tsx +0 -10
  406. package/src/preview/components/EnumValuesChip.tsx +0 -39
  407. package/src/preview/components/ImagePreview.tsx +0 -144
  408. package/src/preview/components/InlineEntityListPreview.tsx +0 -42
  409. package/src/preview/components/ReferencePreview.tsx +0 -235
  410. package/src/preview/components/RelationPreview.tsx +0 -271
  411. package/src/preview/components/StorageThumbnail.tsx +0 -147
  412. package/src/preview/components/UrlComponentPreview.tsx +0 -116
  413. package/src/preview/components/UserPreview.tsx +0 -30
  414. package/src/preview/components/date_fns_locales.ts +0 -125
  415. package/src/preview/index.ts +0 -26
  416. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +0 -73
  417. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +0 -67
  418. package/src/preview/property_previews/ArrayOfRelationsPreview.tsx +0 -77
  419. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +0 -49
  420. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -70
  421. package/src/preview/property_previews/ArrayOneOfPreview.tsx +0 -79
  422. package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +0 -35
  423. package/src/preview/property_previews/ArrayPropertyPreview.tsx +0 -79
  424. package/src/preview/property_previews/MapPropertyPreview.tsx +0 -198
  425. package/src/preview/property_previews/NumberPropertyPreview.tsx +0 -39
  426. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +0 -276
  427. package/src/preview/property_previews/StringPropertyPreview.tsx +0 -70
  428. package/src/preview/util.ts +0 -39
  429. package/src/routes/CustomViewRoute.tsx +0 -33
  430. package/src/routes/RebaseRoute.tsx +0 -467
  431. package/src/routes/index.ts +0 -2
  432. package/src/types/components/EntityFormActionsProps.tsx +0 -20
  433. package/src/types/components/EntityFormProps.tsx +0 -119
  434. package/src/types/components/PropertyPreviewProps.tsx +0 -85
  435. package/src/types/components/formex.tsx +0 -2
  436. package/src/types/components/index.ts +0 -3
  437. package/src/types/fields.tsx +0 -340
  438. package/src/types/index.ts +0 -4
  439. package/src/util/dataControllerAdapter.ts +0 -88
  440. package/src/util/entity_actions.ts +0 -28
  441. package/src/util/index.ts +0 -5
  442. package/src/util/navigation_utils.ts +0 -89
  443. package/src/util/number_format.ts +0 -46
  444. package/src/util/previews.ts +0 -131
  445. package/src/util/propertyConfigMapper.ts +0 -134
  446. package/src/util/property_utils.tsx +0 -236
  447. package/src/util/resolutions.ts +0 -96
  448. package/src/util/view_constants.ts +0 -33
  449. package/src/util/view_mode.ts +0 -176
@@ -1,470 +0,0 @@
1
- /**
2
- * What a schema change would do, before it does it.
3
- *
4
- * The dialog exists because a schema change has three possible verdicts and two
5
- * of them are refusals. Without a preview, the only way to discover that a
6
- * change is refused is to press a button on a live database and read what comes
7
- * back — which is a fine way to learn and a poor way to work.
8
- *
9
- * ## What it shows, in the order somebody reads it
10
- *
11
- * The verdict first, in a sentence, because it decides whether the rest is
12
- * worth reading. Then the changes, each with what it does and — when it is
13
- * refused — what to do instead. Then the things that are easy to skip past and
14
- * expensive to have skipped: constraints the change asks for that the database
15
- * will not end up enforcing. The SQL and the file list come last, collapsed,
16
- * for the reader who wants them; they are the evidence, not the summary.
17
- *
18
- * ## Why the button says "Commit and apply"
19
- *
20
- * Because that is the order, and the order is the feature. The commit lands
21
- * first, so a failed apply leaves the repository ahead of the database — the
22
- * ordinary state of every project between an edit and a deploy, which the next
23
- * boot reconciles. A button labelled "Save" would be describing a different,
24
- * worse thing.
25
- */
26
- import React, { useState } from "react";
27
- import {
28
- Alert,
29
- Button,
30
- Chip,
31
- CircularProgress,
32
- cls,
33
- Dialog,
34
- DialogActions,
35
- DialogContent,
36
- DialogTitle,
37
- Typography
38
- } from "@rebasepro/ui";
39
-
40
- import type { LiveSchemaPlan, LiveSchemaResult, WithheldConstraint } from "../../liveSchemaClient";
41
-
42
- export interface SchemaChangeDialogProps {
43
- open: boolean;
44
- /** The collection being changed, for the title. */
45
- collectionId: string;
46
- /** `undefined` while the plan is still being fetched. */
47
- plan?: LiveSchemaPlan;
48
- /** Set when planning itself failed — a network error, a refusal, a 500. */
49
- planError?: string;
50
- /** Set once the change has been applied, which turns this into a receipt. */
51
- result?: LiveSchemaResult;
52
- applying: boolean;
53
- /** Set when the apply threw rather than returning a result. */
54
- applyError?: string;
55
- onConfirm: () => void;
56
- /**
57
- * Ask again, when planning failed.
58
- *
59
- * A dropped connection should cost a click, not the whole wizard. The form
60
- * is already filled in, and making somebody redo it for a transient failure
61
- * teaches them to distrust the preview rather than the network.
62
- */
63
- onRetry?: () => void;
64
- /**
65
- * Write the collection source and leave the database alone.
66
- *
67
- * Offered only when the change is refused, and it is what keeps the editor
68
- * usable while it is. Removing a property is the ordinary case: the ensure
69
- * path has no `DROP COLUMN`, so a removal can never be applied — and
70
- * refusing the whole save over it would mean a dev could no longer delete a
71
- * field from a collection they are still designing.
72
- *
73
- * This is exactly what the editor did before live editing existed, so it is
74
- * not a new hazard; the difference is that it now says what it leaves
75
- * behind instead of reporting success.
76
- */
77
- onSourceOnly?: () => void;
78
- onClose: () => void;
79
- /**
80
- * Why this caller may preview but not apply, when that is the case.
81
- *
82
- * A person signed in with an API key, most often. Shown next to a disabled
83
- * button so the refusal arrives while they are deciding rather than after
84
- * they have decided.
85
- */
86
- applyRefusedBecause?: string;
87
- /**
88
- * Where a confirmation would land — `owner/repo` and a branch.
89
- *
90
- * On screen before the button, not in the receipt after it. A commit is
91
- * going somewhere, and which branch it is going to is the one fact somebody
92
- * cannot recover from being wrong about.
93
- */
94
- target?: { repository?: string; branch?: string };
95
- }
96
-
97
- type Verdict = LiveSchemaPlan["verdict"];
98
-
99
- /** What the verdict means, in the words the reader needs rather than the enum's. */
100
- /**
101
- * What the verdict means, in the words the reader needs rather than the enum's.
102
- *
103
- * `safe` is written twice because the two cases are genuinely different, and
104
- * saying "can be made against the running database" when nothing will be run is
105
- * the kind of small lie that teaches people to stop reading. A document
106
- * database has no table to alter, and a change that needs no DDL on a
107
- * relational one is in the same position: the commit *is* the change.
108
- */
109
- const VERDICT_COPY: Record<Verdict, { title: string; body: string; color: "info" | "warning" | "error" }> = {
110
- safe: {
111
- title: "Ready to apply",
112
- body: "Every change here can be made against the running database.",
113
- color: "info"
114
- },
115
- diverges: {
116
- title: "This would leave the database out of step",
117
- body: "The change can be written, but the database will not end up matching it. " +
118
- "The details below say which part, and what would make it applicable.",
119
- color: "warning"
120
- },
121
- "needs-migration": {
122
- title: "This needs a migration",
123
- body: "Some of this cannot be done to a running database at all — it drops or rewrites " +
124
- "something, and that belongs in a migration somebody has read.",
125
- color: "error"
126
- }
127
- };
128
-
129
- const VERDICT_CHIP: Record<Verdict, { label: string; scheme: "greenLighter" | "orangeLighter" | "redLighter" }> = {
130
- safe: { label: "safe", scheme: "greenLighter" },
131
- diverges: { label: "diverges", scheme: "orangeLighter" },
132
- "needs-migration": { label: "needs migration", scheme: "redLighter" }
133
- };
134
-
135
- const monospace = "font-mono text-xs leading-relaxed";
136
- const codeBlock = cls(
137
- monospace,
138
- "bg-surface-100 dark:bg-surface-800 rounded-md p-3 overflow-x-auto whitespace-pre"
139
- );
140
-
141
- /** A disclosure that starts closed. The evidence, for the reader who wants it. */
142
- function Details({ summary, count, children }: {
143
- summary: string;
144
- count: number;
145
- children: React.ReactNode;
146
- }) {
147
- const [open, setOpen] = useState(false);
148
- if (count === 0) return null;
149
- return (
150
- <div>
151
- <button
152
- type="button"
153
- onClick={() => setOpen(o => !o)}
154
- className="flex items-center gap-2 text-sm text-text-secondary dark:text-text-secondary-dark hover:underline"
155
- >
156
- <span className={cls("transition-transform", open && "rotate-90")}>›</span>
157
- {summary} ({count})
158
- </button>
159
- {open && <div className="mt-2">{children}</div>}
160
- </div>
161
- );
162
- }
163
-
164
- /**
165
- * What still has to happen after this lands.
166
- *
167
- * Above the evidence and below the changes, because it is not a refusal and not
168
- * a detail: the change will apply, and something outside this dialog still has
169
- * to be done or a later environment will differ from this one.
170
- */
171
- function FollowUp({ items }: { items: string[] }) {
172
- if (items.length === 0) return null;
173
- return (
174
- <Alert color="info">
175
- <Typography variant="body2" className="font-medium mb-1">
176
- {items.length === 1 ? "One thing to do afterwards" : "To do afterwards"}
177
- </Typography>
178
- <ul className="space-y-2">
179
- {items.map(item => (
180
- <li key={item} className="text-sm">{item}</li>
181
- ))}
182
- </ul>
183
- </Alert>
184
- );
185
- }
186
-
187
- /**
188
- * The destination, short enough to read at a glance.
189
- *
190
- * A remote repository already reports itself as `owner/repo`, which is exactly
191
- * what somebody recognises. A local one reports an absolute path, and the
192
- * leading directories are the part nobody needs: what matters is which
193
- * checkout, and its name says that.
194
- */
195
- function repositoryLabel(repository: string): string {
196
- if (!repository.startsWith("/")) return repository;
197
- return repository.split("/").filter(Boolean).pop() ?? repository;
198
- }
199
-
200
- function WithheldConstraints({ constraints }: { constraints: WithheldConstraint[] }) {
201
- if (constraints.length === 0) return null;
202
- return (
203
- <Alert color="warning">
204
- <Typography variant="body2" className="font-medium mb-1">
205
- {constraints.length === 1
206
- ? "One constraint will not be enforced"
207
- : `${constraints.length} constraints will not be enforced`}
208
- </Typography>
209
- <ul className="space-y-2">
210
- {constraints.map(constraint => (
211
- <li key={constraint.target} className="text-sm">
212
- <code className="bg-surface-200 dark:bg-surface-700 px-1 rounded">
213
- {constraint.target}
214
- </code>
215
- <div className="mt-1">{constraint.reason}</div>
216
- <div className="mt-1 text-text-secondary dark:text-text-secondary-dark">
217
- {constraint.remedy}
218
- </div>
219
- </li>
220
- ))}
221
- </ul>
222
- </Alert>
223
- );
224
- }
225
-
226
- /** The receipt. Shown in place of the plan once the change has been applied. */
227
- function Applied({ result }: { result: LiveSchemaResult }) {
228
- return (
229
- <div className="flex flex-col gap-4">
230
- <Alert color={result.applied ? "success" : "warning"}>
231
- <Typography variant="body2">{result.summary}</Typography>
232
- </Alert>
233
-
234
- {!result.applied && result.applyError && (
235
- // Deliberately not an error state. The commit landed, which is
236
- // the durable half; the database is now behind the repository,
237
- // which is where every project sits between an edit and a
238
- // deploy, and boot reconciles it.
239
- <Alert color="warning">
240
- <Typography variant="body2" className="font-medium mb-1">
241
- The database was not changed
242
- </Typography>
243
- <Typography variant="body2">{result.applyError}</Typography>
244
- <Typography variant="body2" className="mt-2">
245
- The commit is on <code>{result.committed.branch}</code> either way, so the
246
- change will be applied on the next boot.
247
- </Typography>
248
- </Alert>
249
- )}
250
-
251
- <WithheldConstraints constraints={result.withheldConstraints ?? []}/>
252
- <FollowUp items={result.followUp ?? []}/>
253
-
254
- <div>
255
- <Typography variant="label" color="secondary">Committed</Typography>
256
- <div className={cls(codeBlock, "mt-1")}>
257
- {result.committed.sha.slice(0, 9)} on {result.committed.branch}
258
- {"\n"}
259
- {result.committed.files.map(file => ` ${file}`).join("\n")}
260
- </div>
261
- </div>
262
- </div>
263
- );
264
- }
265
-
266
- export function SchemaChangeDialog({
267
- open,
268
- collectionId,
269
- plan,
270
- planError,
271
- result,
272
- applying,
273
- applyError,
274
- onConfirm,
275
- onRetry,
276
- onSourceOnly,
277
- onClose,
278
- applyRefusedBecause,
279
- target
280
- }: SchemaChangeDialogProps) {
281
-
282
- const verdict = plan?.verdict;
283
- const statements = plan?.statements.length ?? 0;
284
-
285
- // "Commit" only when we positively know there is nothing to apply: a plan
286
- // that is going ahead and has no statements. A *refused* plan also has none
287
- // — because it will not run — and labelling that button "Commit" would be
288
- // describing the change it is refusing to make. Unknown reads as the fuller
289
- // action, which is the safer way to be wrong about a label.
290
- const commitOnly = Boolean(plan?.applicable) && statements === 0;
291
-
292
- // Described from the plan rather than from an assumption about the engine.
293
- // A document database runs nothing; so does a relational change that only
294
- // moves source. Both are a commit, and calling either one "apply" would be
295
- // describing something that does not happen.
296
- const copy = verdict === "safe" && commitOnly
297
- ? {
298
- title: "Ready to commit",
299
- body: "This changes what your project declares. Nothing runs against the database — " +
300
- "there is no schema change to make.",
301
- color: "info" as const
302
- }
303
- : verdict
304
- ? VERDICT_COPY[verdict]
305
- : undefined;
306
-
307
- return (
308
- <Dialog open={open} onOpenChange={value => { if (!value) onClose(); }} maxWidth="3xl">
309
- <DialogTitle className="flex items-center gap-2">
310
- {result ? "Schema change applied" : "Review schema change"}
311
- <code className="text-sm font-normal text-text-secondary dark:text-text-secondary-dark">
312
- {collectionId}
313
- </code>
314
- </DialogTitle>
315
-
316
- <DialogContent className="flex flex-col gap-4">
317
- {planError && (
318
- <Alert color="error">
319
- <Typography variant="body2" className="font-medium mb-1">
320
- The change could not be planned
321
- </Typography>
322
- <Typography variant="body2">{planError}</Typography>
323
- </Alert>
324
- )}
325
-
326
- {!plan && !planError && !result && (
327
- <div className="flex items-center gap-3 py-6">
328
- <CircularProgress size="small"/>
329
- <Typography variant="body2" color="secondary">
330
- Working out what this change would do…
331
- </Typography>
332
- </div>
333
- )}
334
-
335
- {result && <Applied result={result}/>}
336
-
337
- {plan && !result && copy && (
338
- <>
339
- <Alert color={copy.color}>
340
- <Typography variant="body2" className="font-medium mb-1">
341
- {copy.title}
342
- </Typography>
343
- <Typography variant="body2">{copy.body}</Typography>
344
- </Alert>
345
-
346
- {applyError && (
347
- <Alert color="error">
348
- <Typography variant="body2">{applyError}</Typography>
349
- </Alert>
350
- )}
351
-
352
- {plan.changes.length === 0 && (
353
- <Typography variant="body2" color="secondary">
354
- Nothing here changes the shape of your data. The collection source
355
- is still rewritten and committed.
356
- </Typography>
357
- )}
358
-
359
- {!plan.applicable && onSourceOnly && (
360
- <Typography variant="body2" color="secondary">
361
- You can still write the change to your collection source and leave
362
- the database as it is — the editor’s behaviour before this preview
363
- existed. The column stays, holding whatever is in it, and nothing
364
- serves it.
365
- </Typography>
366
- )}
367
-
368
- {plan.changes.length > 0 && (
369
- <ul className="flex flex-col gap-3">
370
- {plan.changes.map((change, index) => (
371
- <li
372
- key={`${change.collection}.${change.property ?? ""}.${index}`}
373
- className="flex gap-3"
374
- >
375
- <Chip
376
- size="smallest"
377
- colorScheme={VERDICT_CHIP[change.verdict].scheme}
378
- className="shrink-0 mt-0.5"
379
- >
380
- {VERDICT_CHIP[change.verdict].label}
381
- </Chip>
382
- <div className="min-w-0">
383
- <Typography variant="body2">{change.detail}</Typography>
384
- {change.remedy && (
385
- <Typography
386
- variant="body2"
387
- color="secondary"
388
- className="mt-1"
389
- >
390
- {change.remedy}
391
- </Typography>
392
- )}
393
- </div>
394
- </li>
395
- ))}
396
- </ul>
397
- )}
398
-
399
- <WithheldConstraints constraints={plan.withheldConstraints ?? []}/>
400
- <FollowUp items={plan.followUp ?? []}/>
401
-
402
- {applyRefusedBecause && (
403
- <Alert color="info">
404
- <Typography variant="body2" className="font-medium mb-1">
405
- You can preview this change, but not apply it
406
- </Typography>
407
- <Typography variant="body2">{applyRefusedBecause}</Typography>
408
- </Alert>
409
- )}
410
-
411
- <Details summary="Statements that will run" count={plan.statements.length}>
412
- <div className={codeBlock}>{plan.statements.join("\n")}</div>
413
- </Details>
414
-
415
- <Details summary="Files that will be committed" count={plan.files.length}>
416
- <div className={codeBlock}>{plan.files.join("\n")}</div>
417
- </Details>
418
-
419
- <Details summary="Commit message" count={plan.message ? 1 : 0}>
420
- <div className={codeBlock}>{plan.message}</div>
421
- </Details>
422
- </>
423
- )}
424
- </DialogContent>
425
-
426
- <DialogActions>
427
- {!result && target?.repository && (
428
- <span className={cls(
429
- monospace,
430
- "mr-auto text-text-secondary dark:text-text-secondary-dark truncate"
431
- )}>
432
- → {repositoryLabel(target.repository)}{target.branch ? ` · ${target.branch}` : ""}
433
- </span>
434
- )}
435
- <Button variant="text" onClick={onClose} disabled={applying}>
436
- {result ? "Close" : "Cancel"}
437
- </Button>
438
- {!result && planError && onRetry && (
439
- <Button variant="outlined" onClick={onRetry}>
440
- Try again
441
- </Button>
442
- )}
443
- {!result && plan && !plan.applicable && onSourceOnly && (
444
- <Button variant="outlined" onClick={onSourceOnly} disabled={applying}>
445
- Edit source only
446
- </Button>
447
- )}
448
- {!result && (
449
- <Button
450
- variant="filled"
451
- color="primary"
452
- onClick={onConfirm}
453
- // `applicable` is the server's word, not a
454
- // re-derivation from the verdicts on screen:
455
- // `applySchemaChange` re-checks it before it writes
456
- // anything, so a button that disagreed would only
457
- // produce the same refusal one click later. The same
458
- // goes for the permission — `/apply` checks it too, and
459
- // this only saves somebody the round trip.
460
- disabled={!plan?.applicable || applying || Boolean(applyRefusedBecause)}
461
- >
462
- {applying
463
- ? (commitOnly ? "Committing…" : "Applying…")
464
- : (commitOnly ? "Commit" : "Commit and apply")}
465
- </Button>
466
- )}
467
- </DialogActions>
468
- </Dialog>
469
- );
470
- }