@rebasepro/core 0.0.1-canary.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.
- package/LICENSE +21 -0
- package/README.md +174 -0
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +19 -0
- package/dist/app/Scaffold.d.ts +34 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +17 -0
- package/dist/components/AIIcon.d.ts +16 -0
- package/dist/components/AdminModeSyncer.d.ts +17 -0
- package/dist/components/ArrayContainer.d.ts +59 -0
- package/dist/components/CircularProgressCenter.d.ts +11 -0
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/ConfirmationDialog.d.ts +9 -0
- package/dist/components/Debug/UIReferenceView.d.ts +1 -0
- package/dist/components/Debug/UIStyleGuide.d.ts +1 -0
- package/dist/components/DeleteEntityDialog.d.ts +12 -0
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +37 -0
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +27 -0
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +128 -0
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +25 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +15 -0
- package/dist/components/EntityCollectionTable/fields/TableMultipleRelationField.d.ts +20 -0
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +21 -0
- package/dist/components/EntityCollectionTable/fields/TableRelationField.d.ts +21 -0
- package/dist/components/EntityCollectionTable/fields/TableRelationSelectorField.d.ts +20 -0
- package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +32 -0
- package/dist/components/EntityCollectionTable/index.d.ts +6 -0
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +16 -0
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +32 -0
- package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
- package/dist/components/EntityCollectionTable/internal/common.d.ts +4 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +26 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
- package/dist/components/EntityCollectionView/Board.d.ts +2 -0
- package/dist/components/EntityCollectionView/BoardColumn.d.ts +42 -0
- package/dist/components/EntityCollectionView/BoardColumnTitle.d.ts +9 -0
- package/dist/components/EntityCollectionView/BoardSortableList.d.ts +14 -0
- package/dist/components/EntityCollectionView/EntityBoardCard.d.ts +26 -0
- package/dist/components/EntityCollectionView/EntityCard.d.ts +19 -0
- package/dist/components/EntityCollectionView/EntityCollectionBoardView.d.ts +20 -0
- package/dist/components/EntityCollectionView/EntityCollectionCardView.d.ts +31 -0
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +54 -0
- package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +14 -0
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +15 -0
- package/dist/components/EntityCollectionView/FiltersDialog.d.ts +14 -0
- package/dist/components/EntityCollectionView/ViewModeToggle.d.ts +44 -0
- package/dist/components/EntityCollectionView/board_types.d.ts +105 -0
- package/dist/components/EntityCollectionView/useBoardDataController.d.ts +60 -0
- package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityJsonPreview.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +54 -0
- package/dist/components/EntityView.d.ts +11 -0
- package/dist/components/ErrorBoundary.d.ts +11 -0
- package/dist/components/ErrorTooltip.d.ts +2 -0
- package/dist/components/ErrorView.d.ts +21 -0
- package/dist/components/FieldCaption.d.ts +5 -0
- package/dist/components/HomePage/ContentHomePage.d.ts +11 -0
- package/dist/components/HomePage/FavouritesView.d.ts +3 -0
- package/dist/components/HomePage/HomePageDnD.d.ts +77 -0
- package/dist/components/HomePage/NavigationCard.d.ts +10 -0
- package/dist/components/HomePage/NavigationCardBinding.d.ts +18 -0
- package/dist/components/HomePage/NavigationGroup.d.ts +11 -0
- package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
- package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
- package/dist/components/HomePage/StudioHomePage.d.ts +9 -0
- package/dist/components/HomePage/index.d.ts +5 -0
- package/dist/components/NotFoundPage.d.ts +1 -0
- package/dist/components/PropertyCollectionView.d.ts +22 -0
- package/dist/components/PropertyConfigBadge.d.ts +6 -0
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/RebaseLogo.d.ts +7 -0
- package/dist/components/ReferenceTable/EntitySelectionTable.d.ts +58 -0
- package/dist/components/ReferenceWidget.d.ts +29 -0
- package/dist/components/RelationSelector.d.ts +32 -0
- package/dist/components/SearchIconsView.d.ts +5 -0
- package/dist/components/SelectableTable/SelectableTable.d.ts +89 -0
- package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
- package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +9 -0
- package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +12 -0
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +15 -0
- package/dist/components/SelectableTable/filters/RelationFilterField.d.ts +12 -0
- package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +13 -0
- package/dist/components/UnsavedChangesDialog.d.ts +9 -0
- package/dist/components/UserDisplay.d.ts +7 -0
- package/dist/components/UserSettingsView.d.ts +1 -0
- package/dist/components/VirtualTable/VirtualTable.d.ts +11 -0
- package/dist/components/VirtualTable/VirtualTableCell.d.ts +20 -0
- package/dist/components/VirtualTable/VirtualTableHeader.d.ts +29 -0
- package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +239 -0
- package/dist/components/VirtualTable/VirtualTableRow.d.ts +3 -0
- package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +12 -0
- package/dist/components/VirtualTable/fields/VirtualTableInput.d.ts +9 -0
- package/dist/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +8 -0
- package/dist/components/VirtualTable/fields/VirtualTableSelect.d.ts +15 -0
- package/dist/components/VirtualTable/fields/VirtualTableSwitch.d.ts +7 -0
- package/dist/components/VirtualTable/fields/VirtualTableUserSelect.d.ts +12 -0
- package/dist/components/VirtualTable/index.d.ts +3 -0
- package/dist/components/VirtualTable/types.d.ts +37 -0
- package/dist/components/admin/RoleChip.d.ts +4 -0
- package/dist/components/admin/RolesView.d.ts +4 -0
- package/dist/components/admin/UsersView.d.ts +4 -0
- package/dist/components/admin/index.d.ts +3 -0
- package/dist/components/common/default_entity_actions.d.ts +4 -0
- package/dist/components/common/index.d.ts +6 -0
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/common/types.d.ts +58 -0
- package/dist/components/common/useColumnsIds.d.ts +6 -0
- package/dist/components/common/useDataSourceTableController.d.ts +44 -0
- package/dist/components/common/useDebouncedCallback.d.ts +1 -0
- package/dist/components/common/useDebouncedData.d.ts +9 -0
- package/dist/components/common/useScrollRestoration.d.ts +14 -0
- package/dist/components/common/useTableSearchHelper.d.ts +11 -0
- package/dist/components/index.d.ts +35 -0
- package/dist/contexts/AdminModeController.d.ts +4 -0
- package/dist/contexts/AnalyticsContext.d.ts +3 -0
- package/dist/contexts/AuthControllerContext.d.ts +3 -0
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/contexts/CustomizationControllerContext.d.ts +3 -0
- package/dist/contexts/DataSourceContext.d.ts +3 -0
- package/dist/contexts/DialogsProvider.d.ts +4 -0
- package/dist/contexts/EffectiveRoleController.d.ts +4 -0
- package/dist/contexts/InternalUserManagementContext.d.ts +3 -0
- package/dist/contexts/ModeController.d.ts +4 -0
- package/dist/contexts/NavigationContext.d.ts +3 -0
- package/dist/contexts/SideDialogsControllerContext.d.ts +3 -0
- package/dist/contexts/SideEntityControllerContext.d.ts +3 -0
- package/dist/contexts/SnackbarProvider.d.ts +2 -0
- package/dist/contexts/StorageSourceContext.d.ts +3 -0
- package/dist/contexts/UserConfigurationPersistenceContext.d.ts +3 -0
- package/dist/contexts/index.d.ts +15 -0
- package/dist/core/DefaultAppBar.d.ts +29 -0
- package/dist/core/DefaultDrawer.d.ts +29 -0
- package/dist/core/DrawerNavigationGroup.d.ts +45 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +47 -0
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/EntitySidePanel.d.ts +10 -0
- package/dist/core/Rebase.d.ts +13 -0
- package/dist/core/RebaseRouter.d.ts +4 -0
- package/dist/core/RebaseRoutes.d.ts +17 -0
- package/dist/core/SideDialogs.d.ts +25 -0
- package/dist/core/field_configs.d.ts +6 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/form/EntityForm.d.ts +7 -0
- package/dist/form/EntityFormActions.d.ts +2 -0
- package/dist/form/PropertyFieldBinding.d.ts +30 -0
- package/dist/form/components/ErrorFocus.d.ts +4 -0
- package/dist/form/components/FieldHelperText.d.ts +12 -0
- package/dist/form/components/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- package/dist/form/components/LabelWithIcon.d.ts +14 -0
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/LocalChangesMenu.d.ts +11 -0
- package/dist/form/components/StorageItemPreview.d.ts +13 -0
- package/dist/form/components/StorageUploadProgress.d.ts +10 -0
- package/dist/form/components/index.d.ts +5 -0
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +10 -0
- package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +7 -0
- package/dist/form/field_bindings/MapFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/MultiSelectFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/MultipleRelationFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +10 -0
- package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/RelationFieldBinding.d.ts +2 -0
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +10 -0
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +10 -0
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +19 -0
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/TextFieldBinding.d.ts +8 -0
- package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +12 -0
- package/dist/form/index.d.ts +20 -0
- package/dist/form/useClearRestoreValue.d.ts +13 -0
- package/dist/form/validation.d.ts +26 -0
- package/dist/hooks/ApiConfigContext.d.ts +24 -0
- package/dist/hooks/data/delete.d.ts +33 -0
- package/dist/hooks/data/save.d.ts +37 -0
- package/dist/hooks/data/useCollectionFetch.d.ts +50 -0
- package/dist/hooks/data/useDataOrder.d.ts +12 -0
- package/dist/hooks/data/useDataSource.d.ts +6 -0
- package/dist/hooks/data/useEntityFetch.d.ts +29 -0
- package/dist/hooks/data/useRelationSelector.d.ts +45 -0
- package/dist/hooks/index.d.ts +41 -0
- package/dist/hooks/navigation/contexts/CMSUrlContext.d.ts +4 -0
- package/dist/hooks/navigation/contexts/CollectionRegistryContext.d.ts +4 -0
- package/dist/hooks/navigation/contexts/NavigationStateContext.d.ts +4 -0
- package/dist/hooks/navigation/contexts/index.d.ts +3 -0
- package/dist/hooks/navigation/useBuildCMSUrlController.d.ts +6 -0
- package/dist/hooks/navigation/useBuildCollectionRegistryController.d.ts +7 -0
- package/dist/hooks/navigation/useBuildNavigationStateController.d.ts +32 -0
- package/dist/hooks/navigation/useNavigationRegistry.d.ts +10 -0
- package/dist/hooks/navigation/useNavigationResolution.d.ts +5 -0
- package/dist/hooks/navigation/useNavigationURLs.d.ts +11 -0
- package/dist/hooks/navigation/useResolvedCollections.d.ts +26 -0
- package/dist/hooks/navigation/useResolvedViews.d.ts +28 -0
- package/dist/hooks/navigation/useTopLevelNavigation.d.ts +26 -0
- package/dist/hooks/navigation/utils.d.ts +12 -0
- package/dist/hooks/useAdminModeController.d.ts +19 -0
- package/dist/hooks/useAnalyticsController.d.ts +5 -0
- package/dist/hooks/useAuthController.d.ts +11 -0
- package/dist/hooks/useBackendStorageSource.d.ts +30 -0
- package/dist/hooks/useBreadcrumbsController.d.ts +42 -0
- package/dist/hooks/useBrowserTitleAndIcon.d.ts +6 -0
- package/dist/hooks/useBuildAdminModeController.d.ts +6 -0
- package/dist/hooks/useBuildEffectiveRoleController.d.ts +8 -0
- package/dist/hooks/useBuildLocalConfigurationPersistence.d.ts +2 -0
- package/dist/hooks/useBuildModeController.d.ts +6 -0
- package/dist/hooks/useBuildNavigationController.d.ts +16 -0
- package/dist/hooks/useClipboard.d.ts +57 -0
- package/dist/hooks/useCollapsedGroups.d.ts +12 -0
- package/dist/hooks/useCustomizationController.d.ts +11 -0
- package/dist/hooks/useDialogsController.d.ts +11 -0
- package/dist/hooks/useEffectiveRoleController.d.ts +7 -0
- package/dist/hooks/useEntitySelectionDialog.d.ts +18 -0
- package/dist/hooks/useInternalUserManagementController.d.ts +12 -0
- package/dist/hooks/useLargeLayout.d.ts +1 -0
- package/dist/hooks/useModeController.d.ts +19 -0
- package/dist/hooks/usePermissions.d.ts +11 -0
- package/dist/hooks/useRebaseContext.d.ts +11 -0
- package/dist/hooks/useResolvedNavigationFrom.d.ts +72 -0
- package/dist/hooks/useSideDialogsController.d.ts +18 -0
- package/dist/hooks/useSideEntityController.d.ts +12 -0
- package/dist/hooks/useSnackbarController.d.ts +20 -0
- package/dist/hooks/useStorageSource.d.ts +6 -0
- package/dist/hooks/useUnsavedChangesDialog.d.ts +12 -0
- package/dist/hooks/useUserConfigurationPersistence.d.ts +8 -0
- package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.es.js +34745 -0
- package/dist/index.es.js.map +1 -0
- package/dist/index.umd.js +34751 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/internal/common.d.ts +3 -0
- package/dist/internal/useBuildDataSource.d.ts +12 -0
- package/dist/internal/useBuildSideDialogsController.d.ts +2 -0
- package/dist/internal/useBuildSideEntityController.d.ts +4 -0
- package/dist/internal/useRestoreScroll.d.ts +6 -0
- package/dist/preview/PropertyPreview.d.ts +6 -0
- package/dist/preview/components/ArrayEnumPreview.d.ts +10 -0
- package/dist/preview/components/AsyncPreviewComponent.d.ts +11 -0
- package/dist/preview/components/BooleanPreview.d.ts +10 -0
- package/dist/preview/components/DatePreview.d.ts +17 -0
- package/dist/preview/components/EmptyValue.d.ts +6 -0
- package/dist/preview/components/EnumValuesChip.d.ts +13 -0
- package/dist/preview/components/ImagePreview.d.ts +16 -0
- package/dist/preview/components/ReferencePreview.d.ts +16 -0
- package/dist/preview/components/RelationPreview.d.ts +16 -0
- package/dist/preview/components/StorageThumbnail.d.ts +15 -0
- package/dist/preview/components/UrlComponentPreview.d.ts +13 -0
- package/dist/preview/components/UserPreview.d.ts +8 -0
- package/dist/preview/index.d.ts +24 -0
- package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOfRelationsPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +5 -0
- package/dist/preview/property_previews/MapPropertyPreview.d.ts +8 -0
- package/dist/preview/property_previews/NumberPropertyPreview.d.ts +6 -0
- package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +13 -0
- package/dist/preview/property_previews/StringPropertyPreview.d.ts +6 -0
- package/dist/preview/util.d.ts +6 -0
- package/dist/routes/CustomCMSRoute.d.ts +4 -0
- package/dist/routes/RebaseRoute.d.ts +1 -0
- package/dist/routes/index.d.ts +2 -0
- package/dist/util/createFormexStub.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +27 -0
- package/dist/util/enums.d.ts +5 -0
- package/dist/util/icon_list.d.ts +5 -0
- package/dist/util/icon_synonyms.d.ts +1853 -0
- package/dist/util/icons.d.ts +16 -0
- package/dist/util/index.d.ts +11 -0
- package/dist/util/previews.d.ts +3 -0
- package/dist/util/property_utils.d.ts +23 -0
- package/dist/util/useDebouncedCallback.d.ts +1 -0
- package/dist/util/useStorageUploadController.d.ts +36 -0
- package/dist/util/useTraceUpdate.d.ts +2 -0
- package/dist/vitePlugin.d.ts +16 -0
- package/package.json +165 -0
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +30 -0
- package/src/app/Scaffold.tsx +238 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +36 -0
- package/src/components/AIIcon.tsx +39 -0
- package/src/components/AdminModeSyncer.tsx +47 -0
- package/src/components/ArrayContainer.tsx +549 -0
- package/src/components/CircularProgressCenter.tsx +26 -0
- package/src/components/ClearFilterSortButton.tsx +44 -0
- package/src/components/ConfirmationDialog.tsx +46 -0
- package/src/components/Debug/UIReferenceView.tsx +710 -0
- package/src/components/Debug/UIStyleGuide.tsx +164 -0
- package/src/components/DeleteEntityDialog.tsx +181 -0
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +225 -0
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +383 -0
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +180 -0
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +561 -0
- package/src/components/EntityCollectionTable/column_utils.tsx +74 -0
- package/src/components/EntityCollectionTable/fields/TableMultipleRelationField.tsx +122 -0
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +169 -0
- package/src/components/EntityCollectionTable/fields/TableRelationField.tsx +177 -0
- package/src/components/EntityCollectionTable/fields/TableRelationSelectorField.tsx +42 -0
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +315 -0
- package/src/components/EntityCollectionTable/index.tsx +12 -0
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +90 -0
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +311 -0
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +82 -0
- package/src/components/EntityCollectionTable/internal/common.tsx +72 -0
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +425 -0
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +96 -0
- package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.tsx +20 -0
- package/src/components/EntityCollectionView/Board.tsx +324 -0
- package/src/components/EntityCollectionView/BoardColumn.tsx +158 -0
- package/src/components/EntityCollectionView/BoardColumnTitle.tsx +45 -0
- package/src/components/EntityCollectionView/BoardSortableList.tsx +172 -0
- package/src/components/EntityCollectionView/EntityBoardCard.tsx +200 -0
- package/src/components/EntityCollectionView/EntityCard.tsx +225 -0
- package/src/components/EntityCollectionView/EntityCollectionBoardView.tsx +746 -0
- package/src/components/EntityCollectionView/EntityCollectionCardView.tsx +254 -0
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +1220 -0
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +142 -0
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +131 -0
- package/src/components/EntityCollectionView/FiltersDialog.tsx +249 -0
- package/src/components/EntityCollectionView/ViewModeToggle.tsx +194 -0
- package/src/components/EntityCollectionView/board_types.ts +113 -0
- package/src/components/EntityCollectionView/useBoardDataController.tsx +490 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +43 -0
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +367 -0
- package/src/components/EntityView.tsx +66 -0
- package/src/components/ErrorBoundary.tsx +40 -0
- package/src/components/ErrorTooltip.tsx +12 -0
- package/src/components/ErrorView.tsx +69 -0
- package/src/components/FieldCaption.tsx +14 -0
- package/src/components/HomePage/ContentHomePage.tsx +634 -0
- package/src/components/HomePage/FavouritesView.tsx +59 -0
- package/src/components/HomePage/HomePageDnD.tsx +702 -0
- package/src/components/HomePage/NavigationCard.tsx +80 -0
- package/src/components/HomePage/NavigationCardBinding.tsx +111 -0
- package/src/components/HomePage/NavigationGroup.tsx +154 -0
- package/src/components/HomePage/RenameGroupDialog.tsx +121 -0
- package/src/components/HomePage/SmallNavigationCard.tsx +45 -0
- package/src/components/HomePage/StudioHomePage.tsx +231 -0
- package/src/components/HomePage/index.tsx +6 -0
- package/src/components/NotFoundPage.tsx +25 -0
- package/src/components/PropertyCollectionView.tsx +333 -0
- package/src/components/PropertyConfigBadge.tsx +27 -0
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/RebaseLogo.tsx +29 -0
- package/src/components/ReferenceTable/EntitySelectionTable.tsx +371 -0
- package/src/components/ReferenceWidget.tsx +152 -0
- package/src/components/RelationSelector.tsx +518 -0
- package/src/components/SearchIconsView.tsx +78 -0
- package/src/components/SelectableTable/SelectableTable.tsx +344 -0
- package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +49 -0
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +126 -0
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +203 -0
- package/src/components/SelectableTable/filters/RelationFilterField.tsx +138 -0
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +217 -0
- package/src/components/UnsavedChangesDialog.tsx +45 -0
- package/src/components/UserDisplay.tsx +55 -0
- package/src/components/UserSettingsView.tsx +220 -0
- package/src/components/VirtualTable/VirtualTable.performance.test.tsx +386 -0
- package/src/components/VirtualTable/VirtualTable.tsx +625 -0
- package/src/components/VirtualTable/VirtualTableCell.tsx +58 -0
- package/src/components/VirtualTable/VirtualTableHeader.tsx +275 -0
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +249 -0
- package/src/components/VirtualTable/VirtualTableProps.tsx +298 -0
- package/src/components/VirtualTable/VirtualTableRow.tsx +52 -0
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +39 -0
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +93 -0
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +83 -0
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +133 -0
- package/src/components/VirtualTable/fields/VirtualTableSwitch.tsx +32 -0
- package/src/components/VirtualTable/fields/VirtualTableUserSelect.tsx +111 -0
- package/src/components/VirtualTable/index.tsx +3 -0
- package/src/components/VirtualTable/types.tsx +46 -0
- package/src/components/admin/RoleChip.tsx +23 -0
- package/src/components/admin/RolesView.tsx +408 -0
- package/src/components/admin/UsersView.tsx +353 -0
- package/src/components/admin/index.ts +3 -0
- package/src/components/common/default_entity_actions.tsx +144 -0
- package/src/components/common/index.ts +6 -0
- package/src/components/common/table_height.tsx +21 -0
- package/src/components/common/types.tsx +61 -0
- package/src/components/common/useColumnsIds.tsx +210 -0
- package/src/components/common/useDataSourceTableController.tsx +480 -0
- package/src/components/common/useDebouncedCallback.tsx +20 -0
- package/src/components/common/useDebouncedData.ts +49 -0
- package/src/components/common/useScrollRestoration.tsx +68 -0
- package/src/components/common/useTableSearchHelper.ts +75 -0
- package/src/components/index.tsx +49 -0
- package/src/contexts/AdminModeController.tsx +11 -0
- package/src/contexts/AnalyticsContext.tsx +4 -0
- package/src/contexts/AuthControllerContext.tsx +4 -0
- package/src/contexts/BreacrumbsContext.tsx +45 -0
- package/src/contexts/CustomizationControllerContext.tsx +4 -0
- package/src/contexts/DataSourceContext.tsx +4 -0
- package/src/contexts/DialogsProvider.tsx +53 -0
- package/src/contexts/EffectiveRoleController.tsx +11 -0
- package/src/contexts/InternalUserManagementContext.tsx +4 -0
- package/src/contexts/ModeController.tsx +11 -0
- package/src/contexts/NavigationContext.tsx +4 -0
- package/src/contexts/SideDialogsControllerContext.tsx +4 -0
- package/src/contexts/SideEntityControllerContext.tsx +4 -0
- package/src/contexts/SnackbarProvider.tsx +14 -0
- package/src/contexts/StorageSourceContext.tsx +4 -0
- package/src/contexts/UserConfigurationPersistenceContext.tsx +4 -0
- package/src/contexts/index.ts +15 -0
- package/src/core/DefaultAppBar.tsx +274 -0
- package/src/core/DefaultDrawer.tsx +267 -0
- package/src/core/DrawerNavigationGroup.tsx +117 -0
- package/src/core/DrawerNavigationItem.tsx +65 -0
- package/src/core/EntityEditView.tsx +590 -0
- package/src/core/EntityEditViewFormActions.tsx +343 -0
- package/src/core/EntitySidePanel.tsx +173 -0
- package/src/core/Rebase.tsx +229 -0
- package/src/core/RebaseRouter.tsx +17 -0
- package/src/core/RebaseRoutes.tsx +47 -0
- package/src/core/SideDialogs.tsx +200 -0
- package/src/core/field_configs.tsx +443 -0
- package/src/core/index.tsx +14 -0
- package/src/form/EntityForm.tsx +820 -0
- package/src/form/EntityFormActions.tsx +201 -0
- package/src/form/PropertyFieldBinding.tsx +348 -0
- package/src/form/components/ErrorFocus.tsx +44 -0
- package/src/form/components/FieldHelperText.tsx +45 -0
- package/src/form/components/FormEntry.tsx +22 -0
- package/src/form/components/FormLayout.tsx +16 -0
- package/src/form/components/LabelWithIcon.tsx +43 -0
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/LocalChangesMenu.tsx +144 -0
- package/src/form/components/StorageItemPreview.tsx +79 -0
- package/src/form/components/StorageUploadProgress.tsx +105 -0
- package/src/form/components/index.tsx +5 -0
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +105 -0
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +163 -0
- package/src/form/field_bindings/BlockFieldBinding.tsx +268 -0
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +70 -0
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +567 -0
- package/src/form/field_bindings/MapFieldBinding.tsx +156 -0
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +146 -0
- package/src/form/field_bindings/MultiSelectFieldBinding.tsx +120 -0
- package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +151 -0
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +64 -0
- package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +134 -0
- package/src/form/field_bindings/RelationFieldBinding.tsx +176 -0
- package/src/form/field_bindings/RepeatFieldBinding.tsx +136 -0
- package/src/form/field_bindings/SelectFieldBinding.tsx +107 -0
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +490 -0
- package/src/form/field_bindings/SwitchFieldBinding.tsx +64 -0
- package/src/form/field_bindings/TextFieldBinding.tsx +153 -0
- package/src/form/field_bindings/UserSelectFieldBinding.tsx +96 -0
- package/src/form/index.tsx +27 -0
- package/src/form/useClearRestoreValue.tsx +35 -0
- package/src/form/validation.ts +532 -0
- package/src/hooks/ApiConfigContext.tsx +40 -0
- package/src/hooks/data/delete.ts +77 -0
- package/src/hooks/data/save.ts +75 -0
- package/src/hooks/data/useCollectionFetch.tsx +148 -0
- package/src/hooks/data/useDataOrder.ts +26 -0
- package/src/hooks/data/useDataSource.tsx +22 -0
- package/src/hooks/data/useEntityFetch.tsx +121 -0
- package/src/hooks/data/useRelationSelector.tsx +205 -0
- package/src/hooks/index.tsx +51 -0
- package/src/hooks/navigation/contexts/CMSUrlContext.tsx +24 -0
- package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +19 -0
- package/src/hooks/navigation/contexts/NavigationStateContext.tsx +15 -0
- package/src/hooks/navigation/contexts/index.ts +14 -0
- package/src/hooks/navigation/useBuildCMSUrlController.tsx +68 -0
- package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +150 -0
- package/src/hooks/navigation/useBuildNavigationStateController.tsx +135 -0
- package/src/hooks/navigation/useNavigationRegistry.ts +142 -0
- package/src/hooks/navigation/useNavigationResolution.ts +98 -0
- package/src/hooks/navigation/useNavigationURLs.ts +56 -0
- package/src/hooks/navigation/useResolvedCollections.ts +139 -0
- package/src/hooks/navigation/useResolvedViews.tsx +204 -0
- package/src/hooks/navigation/useTopLevelNavigation.ts +265 -0
- package/src/hooks/navigation/utils.ts +177 -0
- package/src/hooks/useAdminModeController.tsx +23 -0
- package/src/hooks/useAnalyticsController.tsx +8 -0
- package/src/hooks/useAuthController.tsx +14 -0
- package/src/hooks/useBackendStorageSource.ts +276 -0
- package/src/hooks/useBreadcrumbsController.tsx +49 -0
- package/src/hooks/useBrowserTitleAndIcon.tsx +25 -0
- package/src/hooks/useBuildAdminModeController.tsx +24 -0
- package/src/hooks/useBuildEffectiveRoleController.tsx +30 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +65 -0
- package/src/hooks/useBuildModeController.tsx +71 -0
- package/src/hooks/useBuildNavigationController.tsx +341 -0
- package/src/hooks/useClipboard.tsx +158 -0
- package/src/hooks/useCollapsedGroups.ts +72 -0
- package/src/hooks/useCustomizationController.tsx +14 -0
- package/src/hooks/useDialogsController.tsx +14 -0
- package/src/hooks/useEffectiveRoleController.tsx +10 -0
- package/src/hooks/useEntitySelectionDialog.tsx +56 -0
- package/src/hooks/useInternalUserManagementController.tsx +17 -0
- package/src/hooks/useLargeLayout.tsx +65 -0
- package/src/hooks/useModeController.tsx +23 -0
- package/src/hooks/usePermissions.ts +43 -0
- package/src/hooks/useRebaseContext.tsx +86 -0
- package/src/hooks/useResolvedNavigationFrom.tsx +158 -0
- package/src/hooks/useSideDialogsController.tsx +21 -0
- package/src/hooks/useSideEntityController.tsx +15 -0
- package/src/hooks/useSnackbarController.tsx +52 -0
- package/src/hooks/useStorageSource.tsx +14 -0
- package/src/hooks/useUnsavedChangesDialog.tsx +62 -0
- package/src/hooks/useUserConfigurationPersistence.tsx +11 -0
- package/src/hooks/useValidateAuthenticator.tsx +115 -0
- package/src/index.ts +17 -0
- package/src/internal/common.tsx +5 -0
- package/src/internal/useBuildDataSource.ts +380 -0
- package/src/internal/useBuildSideDialogsController.tsx +135 -0
- package/src/internal/useBuildSideEntityController.tsx +309 -0
- package/src/internal/useRestoreScroll.tsx +60 -0
- package/src/preview/PropertyPreview.tsx +308 -0
- package/src/preview/components/ArrayEnumPreview.tsx +38 -0
- package/src/preview/components/AsyncPreviewComponent.tsx +47 -0
- package/src/preview/components/BooleanPreview.tsx +25 -0
- package/src/preview/components/DatePreview.tsx +94 -0
- package/src/preview/components/EmptyValue.tsx +10 -0
- package/src/preview/components/EnumValuesChip.tsx +39 -0
- package/src/preview/components/ImagePreview.tsx +111 -0
- package/src/preview/components/ReferencePreview.tsx +162 -0
- package/src/preview/components/RelationPreview.tsx +153 -0
- package/src/preview/components/StorageThumbnail.tsx +91 -0
- package/src/preview/components/UrlComponentPreview.tsx +113 -0
- package/src/preview/components/UserPreview.tsx +27 -0
- package/src/preview/index.ts +26 -0
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +72 -0
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +43 -0
- package/src/preview/property_previews/ArrayOfRelationsPreview.tsx +52 -0
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +49 -0
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +44 -0
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +67 -0
- package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +34 -0
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +69 -0
- package/src/preview/property_previews/MapPropertyPreview.tsx +145 -0
- package/src/preview/property_previews/NumberPropertyPreview.tsx +28 -0
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +275 -0
- package/src/preview/property_previews/StringPropertyPreview.tsx +57 -0
- package/src/preview/util.ts +30 -0
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/RebaseRoute.tsx +255 -0
- package/src/routes/index.ts +2 -0
- package/src/util/createFormexStub.tsx +66 -0
- package/src/util/entity_cache.ts +267 -0
- package/src/util/enums.ts +32 -0
- package/src/util/icon_list.ts +23 -0
- package/src/util/icon_synonyms.ts +1853 -0
- package/src/util/icons.tsx +87 -0
- package/src/util/index.ts +11 -0
- package/src/util/previews.ts +50 -0
- package/src/util/property_utils.tsx +152 -0
- package/src/util/useDebouncedCallback.ts +25 -0
- package/src/util/useStorageUploadController.tsx +342 -0
- package/src/util/useTraceUpdate.tsx +24 -0
- package/src/vitePlugin.ts +47 -0
|
@@ -0,0 +1,710 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UIReferenceView — hidden debug route at /debug/ui
|
|
3
|
+
*
|
|
4
|
+
* This file is a STATIC reference of the real UI patterns used across the app.
|
|
5
|
+
* All markup / styles are copied verbatim from source files.
|
|
6
|
+
* DO NOT add invented styles. Only copy from actual source files.
|
|
7
|
+
*
|
|
8
|
+
* Sources:
|
|
9
|
+
* DefaultDrawer.tsx, DefaultAppBar.tsx, DrawerNavigationItem.tsx,
|
|
10
|
+
* DrawerNavigationGroup.tsx, UsersView.tsx, RolesView.tsx
|
|
11
|
+
*/
|
|
12
|
+
import React, { useState } from "react";
|
|
13
|
+
import {
|
|
14
|
+
AddIcon,
|
|
15
|
+
Alert,
|
|
16
|
+
Avatar,
|
|
17
|
+
BooleanSwitch,
|
|
18
|
+
BrightnessMediumIcon,
|
|
19
|
+
Button,
|
|
20
|
+
Checkbox,
|
|
21
|
+
Chip,
|
|
22
|
+
CircularProgress,
|
|
23
|
+
cls,
|
|
24
|
+
DarkModeIcon,
|
|
25
|
+
defaultBorderMixin,
|
|
26
|
+
DeleteIcon,
|
|
27
|
+
EditIcon,
|
|
28
|
+
ExpandMoreIcon,
|
|
29
|
+
FilterListIcon,
|
|
30
|
+
IconButton,
|
|
31
|
+
KeyboardDoubleArrowLeftIcon,
|
|
32
|
+
KeyboardDoubleArrowRightIcon,
|
|
33
|
+
LightModeIcon,
|
|
34
|
+
LoadingButton,
|
|
35
|
+
LogoutIcon,
|
|
36
|
+
Menu,
|
|
37
|
+
MenuItem,
|
|
38
|
+
MultiSelect,
|
|
39
|
+
MultiSelectItem,
|
|
40
|
+
SearchBar,
|
|
41
|
+
Select,
|
|
42
|
+
SelectItem,
|
|
43
|
+
Separator,
|
|
44
|
+
SettingsIcon,
|
|
45
|
+
Skeleton,
|
|
46
|
+
Tab,
|
|
47
|
+
Table,
|
|
48
|
+
TableBody,
|
|
49
|
+
TableCell,
|
|
50
|
+
TableHeader,
|
|
51
|
+
TableRow,
|
|
52
|
+
Tabs,
|
|
53
|
+
TextField,
|
|
54
|
+
Tooltip,
|
|
55
|
+
Typography,
|
|
56
|
+
ViewKanbanIcon,
|
|
57
|
+
AppsIcon,
|
|
58
|
+
ListIcon,
|
|
59
|
+
PersonIcon,
|
|
60
|
+
FolderIcon,
|
|
61
|
+
LabelIcon,
|
|
62
|
+
} from "@rebasepro/ui";
|
|
63
|
+
import { RebaseLogo } from "../RebaseLogo";
|
|
64
|
+
|
|
65
|
+
const SECTIONS = [
|
|
66
|
+
{ id: "drawer", label: "Drawer" },
|
|
67
|
+
{ id: "appbar", label: "App Bar" },
|
|
68
|
+
{ id: "typography", label: "Typography" },
|
|
69
|
+
{ id: "buttons", label: "Buttons" },
|
|
70
|
+
{ id: "inputs", label: "Form Inputs" },
|
|
71
|
+
{ id: "chips-alerts", label: "Chips & Alerts" },
|
|
72
|
+
{ id: "users", label: "Users View" },
|
|
73
|
+
{ id: "user-dialog", label: "User Dialog" },
|
|
74
|
+
{ id: "roles", label: "Roles View" },
|
|
75
|
+
{ id: "role-dialog", label: "Role Dialog" },
|
|
76
|
+
];
|
|
77
|
+
|
|
78
|
+
export function UIReferenceView() {
|
|
79
|
+
const [activeSection, setActiveSection] = useState("drawer");
|
|
80
|
+
|
|
81
|
+
const scrollTo = (id: string) => {
|
|
82
|
+
document.getElementById(id)?.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
83
|
+
setActiveSection(id);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
return (
|
|
87
|
+
<div className="flex h-full w-full overflow-hidden">
|
|
88
|
+
|
|
89
|
+
{/* ── Sidebar nav (same structure as DefaultDrawer) ─────────────── */}
|
|
90
|
+
<div className={cls("flex flex-col h-full relative grow-0 shrink-0 w-[200px] border-r", defaultBorderMixin)}>
|
|
91
|
+
{/* DrawerLogo */}
|
|
92
|
+
<div className="flex flex-row items-center shrink-0 pt-4 pb-2 px-2">
|
|
93
|
+
<div className="shrink-0 flex items-center justify-center w-[56px] h-[40px]">
|
|
94
|
+
<RebaseLogo width="28px" height="28px" />
|
|
95
|
+
</div>
|
|
96
|
+
<Typography variant="subtitle1" noWrap className="truncate">UI Ref</Typography>
|
|
97
|
+
</div>
|
|
98
|
+
|
|
99
|
+
{/* Nav entries */}
|
|
100
|
+
<div className="mt-3 flex-grow overflow-scroll no-scrollbar">
|
|
101
|
+
<div className="my-2 mx-2 flex flex-col">
|
|
102
|
+
{/* Group header — from DrawerNavigationGroup */}
|
|
103
|
+
<div className={cls("pl-4 pr-2 py-1 flex flex-row items-center transition-colors cursor-pointer hover:bg-surface-100 dark:hover:bg-surface-700/50 rounded-t-lg bg-surface-50 dark:bg-surface-800/30")}>
|
|
104
|
+
<ExpandMoreIcon size="smallest" className="text-surface-500 dark:text-surface-400 transition-transform duration-200 mr-1" />
|
|
105
|
+
<Typography variant="caption" color="secondary" className="font-medium flex-grow line-clamp-1">
|
|
106
|
+
SECTIONS
|
|
107
|
+
</Typography>
|
|
108
|
+
</div>
|
|
109
|
+
{/* Nav items — from DrawerNavigationItem */}
|
|
110
|
+
<div className="overflow-hidden bg-surface-50 dark:bg-surface-800/30 rounded-b-lg">
|
|
111
|
+
{SECTIONS.map(s => (
|
|
112
|
+
<div key={s.id}>
|
|
113
|
+
<div
|
|
114
|
+
onClick={() => scrollTo(s.id)}
|
|
115
|
+
className={cls(
|
|
116
|
+
"rounded-lg truncate",
|
|
117
|
+
"hover:bg-surface-accent-300/75 dark:hover:bg-surface-accent-800/75 text-text-primary dark:text-surface-200 hover:text-surface-900 dark:hover:text-white",
|
|
118
|
+
"flex flex-row items-center",
|
|
119
|
+
"pr-4 h-10",
|
|
120
|
+
"font-semibold text-xs cursor-pointer",
|
|
121
|
+
activeSection === s.id ? "bg-surface-accent-200/60 dark:bg-surface-800 dark:bg-opacity-50" : ""
|
|
122
|
+
)}
|
|
123
|
+
>
|
|
124
|
+
<div className="shrink-0 flex items-center justify-center w-[56px] h-[40px] text-text-secondary dark:text-text-secondary-dark">
|
|
125
|
+
<SettingsIcon size={18} />
|
|
126
|
+
</div>
|
|
127
|
+
<div className="text-text-primary dark:text-surface-200 opacity-100 font-inherit truncate space-x-2">
|
|
128
|
+
{s.label.toUpperCase()}
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
))}
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
|
+
{/* DrawerToggle — from DefaultDrawer */}
|
|
138
|
+
<div className={cls("shrink-0 mt-auto border-t px-2 py-2", defaultBorderMixin)}>
|
|
139
|
+
<div className={cls(
|
|
140
|
+
"flex flex-row items-center rounded-lg cursor-pointer",
|
|
141
|
+
"hover:bg-surface-accent-100 dark:hover:bg-surface-800",
|
|
142
|
+
"transition-colors duration-150",
|
|
143
|
+
"py-2"
|
|
144
|
+
)}>
|
|
145
|
+
<div className="shrink-0 flex items-center justify-center w-[56px] h-[24px] text-surface-500 dark:text-surface-400">
|
|
146
|
+
<KeyboardDoubleArrowLeftIcon size="small" />
|
|
147
|
+
</div>
|
|
148
|
+
<Typography variant="body2" className="text-surface-500 dark:text-surface-400 select-none whitespace-nowrap">
|
|
149
|
+
Collapse
|
|
150
|
+
</Typography>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
|
|
155
|
+
{/* ── Main scroll area ───────────────────────────────────────────── */}
|
|
156
|
+
<div className="flex-1 overflow-y-auto">
|
|
157
|
+
|
|
158
|
+
{/* ═══════════════════════════════════════════════
|
|
159
|
+
SECTION: Drawer
|
|
160
|
+
═══════════════════════════════════════════════ */}
|
|
161
|
+
<SectionBlock id="drawer" title="Drawer — DefaultDrawer.tsx">
|
|
162
|
+
<Typography variant="body2" color="secondary" className="mb-4">
|
|
163
|
+
The drawer wraps <code className="font-mono text-xs">DrawerLogo</code>, scrollable <code className="font-mono text-xs">DrawerNavigationGroup</code>s,
|
|
164
|
+
and <code className="font-mono text-xs">DrawerToggle</code>. Two visual states: collapsed (icon only, 72px) and expanded (280px).
|
|
165
|
+
</Typography>
|
|
166
|
+
<div className="flex gap-6 flex-wrap">
|
|
167
|
+
|
|
168
|
+
{/* Collapsed — exact markup from DefaultDrawer + DrawerNavigationItem */}
|
|
169
|
+
<div>
|
|
170
|
+
<Typography variant="caption" color="secondary" className="block mb-1">Collapsed (72px)</Typography>
|
|
171
|
+
<div className={cls("flex flex-col h-72 relative w-[72px] border rounded-lg overflow-hidden", defaultBorderMixin)}>
|
|
172
|
+
<div className="flex flex-row items-center shrink-0 pt-4 pb-2 px-2">
|
|
173
|
+
<div className="shrink-0 flex items-center justify-center w-[56px] h-[40px]">
|
|
174
|
+
<RebaseLogo width="28px" height="28px" />
|
|
175
|
+
</div>
|
|
176
|
+
</div>
|
|
177
|
+
<div className="mt-3 flex-grow overflow-hidden">
|
|
178
|
+
<div className="my-2 mx-2 flex flex-col">
|
|
179
|
+
<div className="overflow-hidden rounded-lg bg-surface-50 dark:bg-surface-800/30">
|
|
180
|
+
{[<FolderIcon size={18}/>, <PersonIcon size={18}/>, <LabelIcon size={18}/>].map((icon, i) => (
|
|
181
|
+
<div key={i} className="rounded-lg truncate hover:bg-surface-accent-300/75 dark:hover:bg-surface-accent-800/75 flex flex-row items-center h-10">
|
|
182
|
+
<div className="shrink-0 flex items-center justify-center w-[56px] h-[40px] text-text-secondary dark:text-text-secondary-dark">
|
|
183
|
+
{icon}
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
))}
|
|
187
|
+
</div>
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
<div className={cls("shrink-0 mt-auto border-t px-2 py-2", defaultBorderMixin)}>
|
|
191
|
+
<div className="flex flex-row items-center rounded-lg cursor-pointer hover:bg-surface-accent-100 dark:hover:bg-surface-800 transition-colors duration-150 py-2">
|
|
192
|
+
<div className="shrink-0 flex items-center justify-center w-[56px] h-[24px] text-surface-500 dark:text-surface-400">
|
|
193
|
+
<KeyboardDoubleArrowRightIcon size="small" />
|
|
194
|
+
</div>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
|
|
200
|
+
{/* Expanded — exact markup from DefaultDrawer + DrawerNavigationGroup + DrawerNavigationItem */}
|
|
201
|
+
<div>
|
|
202
|
+
<Typography variant="caption" color="secondary" className="block mb-1">Expanded (280px)</Typography>
|
|
203
|
+
<div className={cls("flex flex-col h-72 relative w-[280px] border rounded-lg overflow-hidden", defaultBorderMixin)}>
|
|
204
|
+
{/* DrawerLogo */}
|
|
205
|
+
<div className="flex flex-row items-center shrink-0 pt-4 pb-2 px-2">
|
|
206
|
+
<div className="shrink-0 flex items-center justify-center w-[56px] h-[40px]">
|
|
207
|
+
<RebaseLogo width="28px" height="28px" />
|
|
208
|
+
</div>
|
|
209
|
+
<div className="flex flex-row items-center overflow-hidden transition-all duration-200 ease-in-out opacity-100 w-full ml-1">
|
|
210
|
+
<Typography variant="subtitle1" noWrap className="truncate">Rebase</Typography>
|
|
211
|
+
</div>
|
|
212
|
+
</div>
|
|
213
|
+
{/* DrawerNavigationGroup */}
|
|
214
|
+
<div className="mt-3 flex-grow overflow-hidden">
|
|
215
|
+
<div className="my-2 mx-2 flex flex-col">
|
|
216
|
+
<div className="pl-4 pr-2 py-1 flex flex-row items-center transition-colors cursor-pointer hover:bg-surface-100 dark:hover:bg-surface-700/50 rounded-t-lg bg-surface-50 dark:bg-surface-800/30">
|
|
217
|
+
<ExpandMoreIcon size="smallest" className="text-surface-500 dark:text-surface-400 mr-1" />
|
|
218
|
+
<Typography variant="caption" color="secondary" className="font-medium flex-grow line-clamp-1">CONTENT</Typography>
|
|
219
|
+
</div>
|
|
220
|
+
<div className="overflow-hidden bg-surface-50 dark:bg-surface-800/30 rounded-b-lg">
|
|
221
|
+
{[
|
|
222
|
+
{ label: "Posts", icon: <FolderIcon size={18}/>, active: true },
|
|
223
|
+
{ label: "Authors", icon: <PersonIcon size={18}/>, active: false },
|
|
224
|
+
{ label: "Tags", icon: <LabelIcon size={18}/>, active: false }
|
|
225
|
+
].map(({ label, icon, active }) => (
|
|
226
|
+
<div key={label} className={cls(
|
|
227
|
+
"rounded-lg truncate hover:bg-surface-accent-300/75 dark:hover:bg-surface-accent-800/75 text-text-primary dark:text-surface-200 hover:text-surface-900 dark:hover:text-white flex flex-row items-center pr-4 h-10 font-semibold text-xs cursor-pointer",
|
|
228
|
+
active ? "bg-surface-accent-200/60 dark:bg-surface-800 dark:bg-opacity-50" : ""
|
|
229
|
+
)}>
|
|
230
|
+
<div className="shrink-0 flex items-center justify-center w-[56px] h-[40px] text-text-secondary dark:text-text-secondary-dark">
|
|
231
|
+
{icon}
|
|
232
|
+
</div>
|
|
233
|
+
<div className="text-text-primary dark:text-surface-200 font-inherit truncate">
|
|
234
|
+
{label.toUpperCase()}
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
))}
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
{/* DrawerToggle */}
|
|
242
|
+
<div className={cls("shrink-0 mt-auto border-t px-2 py-2", defaultBorderMixin)}>
|
|
243
|
+
<div className="flex flex-row items-center rounded-lg cursor-pointer hover:bg-surface-accent-100 dark:hover:bg-surface-800 transition-colors duration-150 py-2">
|
|
244
|
+
<div className="shrink-0 flex items-center justify-center w-[56px] h-[24px] text-surface-500 dark:text-surface-400">
|
|
245
|
+
<KeyboardDoubleArrowLeftIcon size="small" />
|
|
246
|
+
</div>
|
|
247
|
+
<div className="overflow-hidden transition-all duration-200 ease-in-out opacity-100 w-auto">
|
|
248
|
+
<Typography variant="body2" className="text-surface-500 dark:text-surface-400 select-none whitespace-nowrap">
|
|
249
|
+
Collapse
|
|
250
|
+
</Typography>
|
|
251
|
+
</div>
|
|
252
|
+
</div>
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
</div>
|
|
256
|
+
</div>
|
|
257
|
+
</SectionBlock>
|
|
258
|
+
|
|
259
|
+
{/* ═══════════════════════════════════════════════
|
|
260
|
+
SECTION: AppBar
|
|
261
|
+
═══════════════════════════════════════════════ */}
|
|
262
|
+
<SectionBlock id="appbar" title="App Bar — DefaultAppBar.tsx">
|
|
263
|
+
<Typography variant="body2" color="secondary" className="mb-4">
|
|
264
|
+
Fixed at top (<code className="font-mono text-xs">h-16 absolute top-0</code>). Contains breadcrumbs (caption + body2), Content/Studio pill toggle,
|
|
265
|
+
theme menu, and user avatar menu via <code className="font-mono text-xs">Menu</code>.
|
|
266
|
+
</Typography>
|
|
267
|
+
{/* Exact classes from DefaultAppBar line 121-130 */}
|
|
268
|
+
<div className={cls("w-full h-16 flex flex-row gap-2 px-4 items-center border rounded-lg relative", defaultBorderMixin)}>
|
|
269
|
+
{/* Breadcrumbs — from DefaultAppBar line 157-188 */}
|
|
270
|
+
<div className="mr-8 hidden lg:block">
|
|
271
|
+
<div className="flex flex-row gap-2 items-center">
|
|
272
|
+
<Typography variant="caption" color="secondary">/</Typography>
|
|
273
|
+
<div className="flex flex-row items-center gap-2 whitespace-nowrap">
|
|
274
|
+
<Typography variant="body2">Posts</Typography>
|
|
275
|
+
<span className="text-xs text-surface-accent-500 dark:text-surface-accent-400 bg-surface-100 dark:bg-surface-700 px-1 py-0 rounded">42</span>
|
|
276
|
+
</div>
|
|
277
|
+
<Typography variant="caption" color="secondary">/</Typography>
|
|
278
|
+
<div className="flex flex-row items-center gap-2 whitespace-nowrap">
|
|
279
|
+
<Typography variant="body2">My Post</Typography>
|
|
280
|
+
</div>
|
|
281
|
+
</div>
|
|
282
|
+
</div>
|
|
283
|
+
<div className="grow" />
|
|
284
|
+
{/* Content/Studio toggle — from DefaultAppBar line 204-225 */}
|
|
285
|
+
<div className={cls("mr-2 hidden sm:flex bg-surface-100 dark:bg-surface-800 rounded-lg p-0.5 border", defaultBorderMixin)}>
|
|
286
|
+
<button className={cls("px-3 py-1 text-xs font-semibold rounded-md transition-all", "bg-white dark:bg-surface-900 shadow-sm text-primary dark:text-primary-400")}>
|
|
287
|
+
Content
|
|
288
|
+
</button>
|
|
289
|
+
<button className={cls("px-3 py-1 text-xs font-semibold rounded-md transition-all", "text-surface-500 hover:text-surface-900 dark:hover:text-white")}>
|
|
290
|
+
Studio
|
|
291
|
+
</button>
|
|
292
|
+
</div>
|
|
293
|
+
{/* Theme menu — from DefaultAppBar line 227-241 */}
|
|
294
|
+
<Menu trigger={
|
|
295
|
+
<IconButton color="inherit">
|
|
296
|
+
<DarkModeIcon />
|
|
297
|
+
</IconButton>
|
|
298
|
+
}>
|
|
299
|
+
<MenuItem><DarkModeIcon size="smallest" /> Dark</MenuItem>
|
|
300
|
+
<MenuItem><LightModeIcon size="smallest" /> Light</MenuItem>
|
|
301
|
+
<MenuItem><BrightnessMediumIcon size="smallest" /> System</MenuItem>
|
|
302
|
+
</Menu>
|
|
303
|
+
{/* Avatar menu — from DefaultAppBar line 243-270 */}
|
|
304
|
+
<Menu trigger={<Avatar>A</Avatar>}>
|
|
305
|
+
<div className="px-4 py-2 mb-2">
|
|
306
|
+
<Typography variant="body1" color="secondary">Alice Johnson</Typography>
|
|
307
|
+
<Typography variant="body2" color="secondary">alice@example.com</Typography>
|
|
308
|
+
</div>
|
|
309
|
+
<MenuItem><SettingsIcon /> Account Settings</MenuItem>
|
|
310
|
+
<MenuItem><LogoutIcon /> Log Out</MenuItem>
|
|
311
|
+
</Menu>
|
|
312
|
+
</div>
|
|
313
|
+
</SectionBlock>
|
|
314
|
+
|
|
315
|
+
{/* ═══════════════════════════════════════════════
|
|
316
|
+
SECTION: Typography
|
|
317
|
+
═══════════════════════════════════════════════ */}
|
|
318
|
+
<SectionBlock id="typography" title="Typography">
|
|
319
|
+
<Typography variant="body2" color="secondary" className="mb-4">
|
|
320
|
+
All variants from <code className="font-mono text-xs">Typography</code>. Colors: primary (default), secondary, disabled, error.
|
|
321
|
+
</Typography>
|
|
322
|
+
<div className="flex flex-col gap-3">
|
|
323
|
+
{(["h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","caption","label","button"] as const).map(v => (
|
|
324
|
+
<div key={v} className={cls("flex items-baseline gap-4 border-b pb-3 last:border-0", defaultBorderMixin)}>
|
|
325
|
+
<span className="w-24 shrink-0 text-xs text-surface-400 font-mono">{v}</span>
|
|
326
|
+
<Typography variant={v}>The quick brown fox jumps over the lazy dog</Typography>
|
|
327
|
+
</div>
|
|
328
|
+
))}
|
|
329
|
+
</div>
|
|
330
|
+
<div className="flex gap-4 flex-wrap mt-4">
|
|
331
|
+
{(["primary","secondary","disabled","error"] as const).map(c => (
|
|
332
|
+
<Typography key={c} color={c}>color="{c}"</Typography>
|
|
333
|
+
))}
|
|
334
|
+
</div>
|
|
335
|
+
</SectionBlock>
|
|
336
|
+
|
|
337
|
+
{/* ═══════════════════════════════════════════════
|
|
338
|
+
SECTION: Buttons
|
|
339
|
+
═══════════════════════════════════════════════ */}
|
|
340
|
+
<SectionBlock id="buttons" title="Buttons">
|
|
341
|
+
<div className="flex flex-col gap-6">
|
|
342
|
+
{(["filled","text"] as const).map(variant => (
|
|
343
|
+
<div key={variant}>
|
|
344
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">variant="{variant}"</Typography>
|
|
345
|
+
<div className="flex flex-wrap gap-3 items-center">
|
|
346
|
+
{(["primary","secondary","text","error","neutral"] as const).map(color => (
|
|
347
|
+
<Button key={color} variant={variant} color={color}>{color}</Button>
|
|
348
|
+
))}
|
|
349
|
+
<Button variant={variant} disabled>disabled</Button>
|
|
350
|
+
</div>
|
|
351
|
+
</div>
|
|
352
|
+
))}
|
|
353
|
+
<div>
|
|
354
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">sizes</Typography>
|
|
355
|
+
<div className="flex flex-wrap items-end gap-3">
|
|
356
|
+
{(["small","medium","large","xl","2xl"] as const).map(s => (
|
|
357
|
+
<Button key={s} size={s}>{s}</Button>
|
|
358
|
+
))}
|
|
359
|
+
</div>
|
|
360
|
+
</div>
|
|
361
|
+
<div>
|
|
362
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">IconButton</Typography>
|
|
363
|
+
<div className="flex flex-wrap gap-3 items-center">
|
|
364
|
+
{(["primary","secondary","inherit"] as const).map(c => (
|
|
365
|
+
<IconButton key={c} color={c}><EditIcon /></IconButton>
|
|
366
|
+
))}
|
|
367
|
+
{(["small","medium","large"] as const).map(s => (
|
|
368
|
+
<IconButton key={s} size={s}><DeleteIcon /></IconButton>
|
|
369
|
+
))}
|
|
370
|
+
<IconButton disabled><AddIcon /></IconButton>
|
|
371
|
+
</div>
|
|
372
|
+
</div>
|
|
373
|
+
<div>
|
|
374
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">LoadingButton</Typography>
|
|
375
|
+
<div className="flex flex-wrap gap-3">
|
|
376
|
+
<LoadingButton loading={true}>Saving…</LoadingButton>
|
|
377
|
+
<LoadingButton loading={false}>Idle</LoadingButton>
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
</div>
|
|
381
|
+
</SectionBlock>
|
|
382
|
+
|
|
383
|
+
{/* ═══════════════════════════════════════════════
|
|
384
|
+
SECTION: Form Inputs
|
|
385
|
+
═══════════════════════════════════════════════ */}
|
|
386
|
+
<SectionBlock id="inputs" title="Form Inputs">
|
|
387
|
+
<div className="grid grid-cols-12 gap-4">
|
|
388
|
+
<div className="col-span-12 sm:col-span-6">
|
|
389
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">TextField</Typography>
|
|
390
|
+
<div className="flex flex-col gap-3">
|
|
391
|
+
<TextField label="Default" placeholder="Type something…" />
|
|
392
|
+
<TextField label="With value" value="Filled value" onChange={() => {}} />
|
|
393
|
+
<TextField label="Error state" error value="Bad value" onChange={() => {}} />
|
|
394
|
+
<TextField label="Disabled" disabled value="Read only" onChange={() => {}} />
|
|
395
|
+
</div>
|
|
396
|
+
</div>
|
|
397
|
+
<div className="col-span-12 sm:col-span-6 flex flex-col gap-4">
|
|
398
|
+
<div>
|
|
399
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">Select</Typography>
|
|
400
|
+
<Select label="Status" value="published" onValueChange={() => {}}>
|
|
401
|
+
<SelectItem value="draft">Draft</SelectItem>
|
|
402
|
+
<SelectItem value="published">Published</SelectItem>
|
|
403
|
+
<SelectItem value="archived">Archived</SelectItem>
|
|
404
|
+
</Select>
|
|
405
|
+
</div>
|
|
406
|
+
<div>
|
|
407
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">MultiSelect</Typography>
|
|
408
|
+
<MultiSelect label="Roles" value={["admin", "editor"]} onValueChange={() => {}}>
|
|
409
|
+
<MultiSelectItem value="admin">Admin</MultiSelectItem>
|
|
410
|
+
<MultiSelectItem value="editor">Editor</MultiSelectItem>
|
|
411
|
+
<MultiSelectItem value="viewer">Viewer</MultiSelectItem>
|
|
412
|
+
</MultiSelect>
|
|
413
|
+
</div>
|
|
414
|
+
</div>
|
|
415
|
+
<div className="col-span-12 sm:col-span-6 flex flex-col gap-3">
|
|
416
|
+
<Typography variant="caption" color="secondary" className="block font-mono">Checkbox</Typography>
|
|
417
|
+
<label className="flex items-center gap-2 cursor-pointer"><Checkbox checked={true} onCheckedChange={() => {}} /><span>Checked</span></label>
|
|
418
|
+
<label className="flex items-center gap-2 cursor-pointer"><Checkbox checked={false} onCheckedChange={() => {}} /><span>Unchecked</span></label>
|
|
419
|
+
<label className="flex items-center gap-2"><Checkbox checked={true} disabled /><span>Disabled</span></label>
|
|
420
|
+
</div>
|
|
421
|
+
<div className="col-span-12 sm:col-span-6 flex flex-col gap-3">
|
|
422
|
+
<Typography variant="caption" color="secondary" className="block font-mono">BooleanSwitch</Typography>
|
|
423
|
+
<div className="flex items-center gap-2"><BooleanSwitch value={true} onValueChange={() => {}} /><span>On</span></div>
|
|
424
|
+
<div className="flex items-center gap-2"><BooleanSwitch value={false} onValueChange={() => {}} /><span>Off</span></div>
|
|
425
|
+
</div>
|
|
426
|
+
<div className="col-span-12">
|
|
427
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">SearchBar</Typography>
|
|
428
|
+
<SearchBar placeholder="Search entities…" />
|
|
429
|
+
</div>
|
|
430
|
+
<div className="col-span-12">
|
|
431
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">Skeleton</Typography>
|
|
432
|
+
<div className="flex gap-4 items-center flex-wrap">
|
|
433
|
+
<Skeleton className="w-10 h-10 rounded-full" />
|
|
434
|
+
<Skeleton className="w-48 h-4 rounded" />
|
|
435
|
+
<Skeleton className="w-32 h-8 rounded-md" />
|
|
436
|
+
</div>
|
|
437
|
+
</div>
|
|
438
|
+
</div>
|
|
439
|
+
</SectionBlock>
|
|
440
|
+
|
|
441
|
+
{/* ═══════════════════════════════════════════════
|
|
442
|
+
SECTION: Chips & Alerts
|
|
443
|
+
═══════════════════════════════════════════════ */}
|
|
444
|
+
<SectionBlock id="chips-alerts" title="Chips & Alerts">
|
|
445
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">Chip — colorScheme × size</Typography>
|
|
446
|
+
<div className="flex flex-wrap gap-2 mb-4">
|
|
447
|
+
{(["grayLight","grayDark","redLight","redDark","blueDark","blueLight","greenDark","greenLight","yellowLight","yellowDark","orangeLight","purpleDark","pinkLight"] as const).map(s => (
|
|
448
|
+
<Chip key={s} colorScheme={s} size="small">{s}</Chip>
|
|
449
|
+
))}
|
|
450
|
+
</div>
|
|
451
|
+
<div className="flex flex-wrap gap-2 mb-6">
|
|
452
|
+
{(["smallest","small","medium"] as const).map(sz => (
|
|
453
|
+
<Chip key={sz} colorScheme="blueDark" size={sz}>{sz}</Chip>
|
|
454
|
+
))}
|
|
455
|
+
</div>
|
|
456
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">Alert — color variants</Typography>
|
|
457
|
+
<div className="flex flex-col gap-2">
|
|
458
|
+
<Alert color="info">Info — informational message</Alert>
|
|
459
|
+
<Alert color="success">Success — operation completed</Alert>
|
|
460
|
+
<Alert color="warning">Warning — attention required</Alert>
|
|
461
|
+
<Alert color="error">Error — something went wrong</Alert>
|
|
462
|
+
</div>
|
|
463
|
+
<div className="mt-4">
|
|
464
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">Separator</Typography>
|
|
465
|
+
<div>Above</div>
|
|
466
|
+
<Separator orientation="horizontal" />
|
|
467
|
+
<div>Below</div>
|
|
468
|
+
</div>
|
|
469
|
+
<div className="mt-4">
|
|
470
|
+
<Typography variant="caption" color="secondary" className="block mb-2 font-mono">CircularProgress</Typography>
|
|
471
|
+
<div className="flex gap-6 items-center">
|
|
472
|
+
{(["small","medium","large"] as const).map(s => (
|
|
473
|
+
<div key={s} className="flex flex-col items-center gap-1">
|
|
474
|
+
<CircularProgress size={s} />
|
|
475
|
+
<Typography variant="caption" color="secondary">{s}</Typography>
|
|
476
|
+
</div>
|
|
477
|
+
))}
|
|
478
|
+
</div>
|
|
479
|
+
</div>
|
|
480
|
+
</SectionBlock>
|
|
481
|
+
|
|
482
|
+
{/* ═══════════════════════════════════════════════
|
|
483
|
+
SECTION: Users View
|
|
484
|
+
═══════════════════════════════════════════════ */}
|
|
485
|
+
<SectionBlock id="users" title="Users View — UsersView.tsx">
|
|
486
|
+
<Typography variant="body2" color="secondary" className="mb-4">
|
|
487
|
+
Layout from <code className="font-mono text-xs">UsersView</code>: <code className="font-mono text-xs">Container maxWidth="6xl"</code>, header row, and table with <code className="font-mono text-xs">RoleChip</code>s.
|
|
488
|
+
</Typography>
|
|
489
|
+
{/* Bootstrap warning — from UsersView line 105-119 */}
|
|
490
|
+
<div className="bg-yellow-100 dark:bg-yellow-900 border border-yellow-400 dark:border-yellow-700 rounded p-4 flex items-center justify-between mb-4">
|
|
491
|
+
<div>
|
|
492
|
+
<Typography variant="label" className="text-yellow-800 dark:text-yellow-200">
|
|
493
|
+
No admin users exist. You can make yourself an admin.
|
|
494
|
+
</Typography>
|
|
495
|
+
</div>
|
|
496
|
+
<Button>Make me admin</Button>
|
|
497
|
+
</div>
|
|
498
|
+
{/* Header — from UsersView line 121-128 */}
|
|
499
|
+
<div className="flex items-center mt-12">
|
|
500
|
+
<Typography gutterBottom variant="h4" className="grow" component="h4">Users</Typography>
|
|
501
|
+
<Button startIcon={<AddIcon />}>Add user</Button>
|
|
502
|
+
</div>
|
|
503
|
+
{/* Table — from UsersView line 130-182 */}
|
|
504
|
+
<div className="overflow-auto">
|
|
505
|
+
<Table className="w-full">
|
|
506
|
+
<TableHeader>
|
|
507
|
+
<TableCell header className="truncate w-16"></TableCell>
|
|
508
|
+
<TableCell header>Email</TableCell>
|
|
509
|
+
<TableCell header>Name</TableCell>
|
|
510
|
+
<TableCell header>Roles</TableCell>
|
|
511
|
+
</TableHeader>
|
|
512
|
+
<TableBody>
|
|
513
|
+
{[
|
|
514
|
+
{ uid: "1", email: "alice@example.com", displayName: "Alice Johnson", roles: [{ id: "admin", name: "Admin", isAdmin: true }] },
|
|
515
|
+
{ uid: "2", email: "bob@example.com", displayName: "Bob Smith", roles: [{ id: "editor", name: "Editor", isAdmin: false }] },
|
|
516
|
+
{ uid: "3", email: "carol@example.com", displayName: "Carol White", roles: [] },
|
|
517
|
+
].map(user => (
|
|
518
|
+
<TableRow key={user.uid}>
|
|
519
|
+
<TableCell style={{ width: "64px" }}>
|
|
520
|
+
<Tooltip asChild title="Delete this user">
|
|
521
|
+
<IconButton size="small"><DeleteIcon /></IconButton>
|
|
522
|
+
</Tooltip>
|
|
523
|
+
</TableCell>
|
|
524
|
+
<TableCell>{user.email}</TableCell>
|
|
525
|
+
<TableCell className="font-medium">{user.displayName}</TableCell>
|
|
526
|
+
<TableCell>
|
|
527
|
+
<div className="flex flex-wrap gap-2">
|
|
528
|
+
{user.roles.map(role => (
|
|
529
|
+
<Chip key={role.id} colorScheme={role.isAdmin ? "purpleDark" : "blueDark"} size="small">
|
|
530
|
+
{role.name}
|
|
531
|
+
</Chip>
|
|
532
|
+
))}
|
|
533
|
+
</div>
|
|
534
|
+
</TableCell>
|
|
535
|
+
</TableRow>
|
|
536
|
+
))}
|
|
537
|
+
</TableBody>
|
|
538
|
+
</Table>
|
|
539
|
+
</div>
|
|
540
|
+
</SectionBlock>
|
|
541
|
+
|
|
542
|
+
{/* ═══════════════════════════════════════════════
|
|
543
|
+
SECTION: User Dialog
|
|
544
|
+
═══════════════════════════════════════════════ */}
|
|
545
|
+
<SectionBlock id="user-dialog" title="User Dialog — UserDetailsForm">
|
|
546
|
+
<Typography variant="body2" color="secondary" className="mb-4">
|
|
547
|
+
Exact structure of <code className="font-mono text-xs">UserDetailsForm</code>: <code className="font-mono text-xs">grid grid-cols-12 gap-4</code>, <code className="font-mono text-xs">MultiSelect</code> for roles, <code className="font-mono text-xs">LoadingButton</code> to submit.
|
|
548
|
+
</Typography>
|
|
549
|
+
<div className={`rounded-lg border w-full max-w-xl ${defaultBorderMixin}`}>
|
|
550
|
+
<div className="px-6 pt-6 pb-2">
|
|
551
|
+
<Typography variant="h4">User</Typography>
|
|
552
|
+
</div>
|
|
553
|
+
<div className="px-6 py-4">
|
|
554
|
+
<div className="grid grid-cols-12 gap-4">
|
|
555
|
+
<div className="col-span-12">
|
|
556
|
+
<TextField name="displayName" required value="Alice Johnson" onChange={() => {}} label="Name" />
|
|
557
|
+
</div>
|
|
558
|
+
<div className="col-span-12">
|
|
559
|
+
<TextField required name="email" value="alice@example.com" onChange={() => {}} label="Email" disabled />
|
|
560
|
+
</div>
|
|
561
|
+
<div className="col-span-12">
|
|
562
|
+
<MultiSelect className="w-full" label="Roles" value={["admin"]} onValueChange={() => {}}>
|
|
563
|
+
<MultiSelectItem value="admin">Admin</MultiSelectItem>
|
|
564
|
+
<MultiSelectItem value="editor">Editor</MultiSelectItem>
|
|
565
|
+
<MultiSelectItem value="viewer">Viewer</MultiSelectItem>
|
|
566
|
+
</MultiSelect>
|
|
567
|
+
</div>
|
|
568
|
+
</div>
|
|
569
|
+
</div>
|
|
570
|
+
<div className="flex items-center justify-end gap-2 px-6 pb-6">
|
|
571
|
+
<Button variant="text">Cancel</Button>
|
|
572
|
+
<LoadingButton variant="filled" loading={false}>Update</LoadingButton>
|
|
573
|
+
</div>
|
|
574
|
+
</div>
|
|
575
|
+
</SectionBlock>
|
|
576
|
+
|
|
577
|
+
{/* ═══════════════════════════════════════════════
|
|
578
|
+
SECTION: Roles View
|
|
579
|
+
═══════════════════════════════════════════════ */}
|
|
580
|
+
<SectionBlock id="roles" title="Roles View — RolesView.tsx">
|
|
581
|
+
<Typography variant="body2" color="secondary" className="mb-4">
|
|
582
|
+
Layout from <code className="font-mono text-xs">RolesView</code>: same header pattern, table, and <code className="font-mono text-xs">CollectionPermissionsMatrix</code> with <code className="font-mono text-xs">defaultBorderMixin</code>.
|
|
583
|
+
</Typography>
|
|
584
|
+
<div className="flex items-center mt-12">
|
|
585
|
+
<Typography gutterBottom variant="h4" className="grow" component="h4">Roles</Typography>
|
|
586
|
+
<Button startIcon={<AddIcon />}>Add role</Button>
|
|
587
|
+
</div>
|
|
588
|
+
<div className="w-full overflow-auto">
|
|
589
|
+
<Table className="w-full">
|
|
590
|
+
<TableHeader>
|
|
591
|
+
<TableCell header className="w-16"></TableCell>
|
|
592
|
+
<TableCell header>Role</TableCell>
|
|
593
|
+
<TableCell header className="items-center">Is Admin</TableCell>
|
|
594
|
+
</TableHeader>
|
|
595
|
+
<TableBody>
|
|
596
|
+
{[
|
|
597
|
+
{ id: "admin", name: "Admin", isAdmin: true },
|
|
598
|
+
{ id: "editor", name: "Editor", isAdmin: false },
|
|
599
|
+
{ id: "viewer", name: "Viewer", isAdmin: false },
|
|
600
|
+
].map(role => (
|
|
601
|
+
<TableRow key={role.id}>
|
|
602
|
+
<TableCell style={{ width: "64px" }}>
|
|
603
|
+
{!role.isAdmin && (
|
|
604
|
+
<Tooltip asChild title="Delete this role">
|
|
605
|
+
<IconButton size="small"><DeleteIcon /></IconButton>
|
|
606
|
+
</Tooltip>
|
|
607
|
+
)}
|
|
608
|
+
</TableCell>
|
|
609
|
+
<TableCell>
|
|
610
|
+
<Chip colorScheme={role.isAdmin ? "purpleDark" : "blueDark"} size="small">{role.name}</Chip>
|
|
611
|
+
</TableCell>
|
|
612
|
+
<TableCell className="items-center">
|
|
613
|
+
<Checkbox checked={role.isAdmin ?? false} disabled />
|
|
614
|
+
</TableCell>
|
|
615
|
+
</TableRow>
|
|
616
|
+
))}
|
|
617
|
+
</TableBody>
|
|
618
|
+
</Table>
|
|
619
|
+
</div>
|
|
620
|
+
{/* CollectionPermissionsMatrix — from RolesView line 365-406 */}
|
|
621
|
+
<div className="mt-4">
|
|
622
|
+
<Typography variant="label" className="mb-2 block text-surface-500 dark:text-surface-400 uppercase tracking-wide text-xs">
|
|
623
|
+
Collection permissions
|
|
624
|
+
</Typography>
|
|
625
|
+
<div className={`rounded-lg overflow-hidden border w-full ${defaultBorderMixin}`}>
|
|
626
|
+
<Table className="w-full">
|
|
627
|
+
<TableHeader>
|
|
628
|
+
<TableCell header>Collection</TableCell>
|
|
629
|
+
{["Read", "Create", "Edit", "Delete"].map(op => (
|
|
630
|
+
<TableCell key={op} header align="center" className="w-20">{op}</TableCell>
|
|
631
|
+
))}
|
|
632
|
+
</TableHeader>
|
|
633
|
+
<TableBody>
|
|
634
|
+
{[{ name: "Posts", slug: "posts" }, { name: "Authors", slug: "authors" }].map(col => (
|
|
635
|
+
<TableRow key={col.slug}>
|
|
636
|
+
<TableCell>
|
|
637
|
+
<div className="flex items-center gap-1.5">
|
|
638
|
+
<span className="font-medium">{col.name}</span>
|
|
639
|
+
<Tooltip title="No security rules defined — all operations unrestricted">
|
|
640
|
+
<Chip size="smallest" colorScheme="grayLight">no rules</Chip>
|
|
641
|
+
</Tooltip>
|
|
642
|
+
</div>
|
|
643
|
+
<span className="text-xs text-surface-400 font-mono">{col.slug}</span>
|
|
644
|
+
</TableCell>
|
|
645
|
+
{["select", "insert", "update", "delete"].map(op => (
|
|
646
|
+
<TableCell key={op} align="center" className="w-20">
|
|
647
|
+
<span className="text-green-500 dark:text-green-400 font-bold">✓</span>
|
|
648
|
+
</TableCell>
|
|
649
|
+
))}
|
|
650
|
+
</TableRow>
|
|
651
|
+
))}
|
|
652
|
+
</TableBody>
|
|
653
|
+
</Table>
|
|
654
|
+
</div>
|
|
655
|
+
</div>
|
|
656
|
+
</SectionBlock>
|
|
657
|
+
|
|
658
|
+
{/* ═══════════════════════════════════════════════
|
|
659
|
+
SECTION: Role Dialog
|
|
660
|
+
═══════════════════════════════════════════════ */}
|
|
661
|
+
<SectionBlock id="role-dialog" title="Role Dialog — RoleDetailsForm">
|
|
662
|
+
<Typography variant="body2" color="secondary" className="mb-4">
|
|
663
|
+
Exact structure of <code className="font-mono text-xs">RoleDetailsForm</code>: <code className="font-mono text-xs">col-span-4</code> grid, Role ID + Name + Is Admin checkbox.
|
|
664
|
+
</Typography>
|
|
665
|
+
<div className={`rounded-lg border w-full max-w-xl ${defaultBorderMixin}`}>
|
|
666
|
+
<div className="px-6 pt-6 pb-2">
|
|
667
|
+
<Typography variant="h4">Role</Typography>
|
|
668
|
+
</div>
|
|
669
|
+
<div className="px-6 py-4">
|
|
670
|
+
<div className="grid grid-cols-12 gap-4">
|
|
671
|
+
<div className="col-span-12 sm:col-span-4">
|
|
672
|
+
<TextField name="id" required value="editor" onChange={() => {}} label="Role ID" disabled />
|
|
673
|
+
</div>
|
|
674
|
+
<div className="col-span-12 sm:col-span-4">
|
|
675
|
+
<TextField name="name" required value="Editor" onChange={() => {}} label="Role Name" />
|
|
676
|
+
</div>
|
|
677
|
+
<div className="col-span-12 sm:col-span-4 flex items-start pt-2">
|
|
678
|
+
<label className="flex items-center gap-2 cursor-pointer mt-3">
|
|
679
|
+
<Checkbox checked={false} onCheckedChange={() => {}} />
|
|
680
|
+
<span className="font-medium">Is Admin</span>
|
|
681
|
+
</label>
|
|
682
|
+
</div>
|
|
683
|
+
</div>
|
|
684
|
+
</div>
|
|
685
|
+
<div className="flex items-center justify-end gap-2 px-6 pb-6">
|
|
686
|
+
<Button variant="text">Cancel</Button>
|
|
687
|
+
<LoadingButton variant="filled" loading={false}>Update</LoadingButton>
|
|
688
|
+
</div>
|
|
689
|
+
</div>
|
|
690
|
+
</SectionBlock>
|
|
691
|
+
|
|
692
|
+
{/* Footer */}
|
|
693
|
+
<div className="px-6 py-8">
|
|
694
|
+
<Typography variant="caption" color="secondary">
|
|
695
|
+
Hidden debug reference — <code className="font-mono text-xs">/debug/ui</code>. Not linked from sidebar.
|
|
696
|
+
</Typography>
|
|
697
|
+
</div>
|
|
698
|
+
</div>
|
|
699
|
+
</div>
|
|
700
|
+
);
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
function SectionBlock({ id, title, children }: { id: string; title: string; children: React.ReactNode }) {
|
|
704
|
+
return (
|
|
705
|
+
<section id={id} className={cls("px-6 py-8 border-b scroll-mt-0 max-w-5xl", defaultBorderMixin)}>
|
|
706
|
+
<Typography variant="h5" className="mb-1">{title}</Typography>
|
|
707
|
+
<div className="mt-4">{children}</div>
|
|
708
|
+
</section>
|
|
709
|
+
);
|
|
710
|
+
}
|