@solidxai/core-ui 0.1.8-beta.9 → 0.1.9-alpha.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/README.md +2 -2
- package/dist/adapters/auth/getSession.d.ts.map +1 -1
- package/dist/adapters/auth/getSession.js +1 -1
- package/dist/adapters/auth/getSession.js.map +1 -1
- package/dist/adapters/auth/getSession.ts +1 -0
- package/dist/adapters/auth/helper.d.ts.map +1 -1
- package/dist/adapters/auth/helper.js +1 -0
- package/dist/adapters/auth/helper.js.map +1 -1
- package/dist/adapters/auth/helper.ts +3 -1
- package/dist/adapters/auth/signIn.d.ts.map +1 -1
- package/dist/adapters/auth/signIn.js +1 -0
- package/dist/adapters/auth/signIn.js.map +1 -1
- package/dist/adapters/auth/signIn.ts +3 -1
- package/dist/adapters/auth/signInWithOAuthAccessCode.d.ts +1 -0
- package/dist/adapters/auth/signInWithOAuthAccessCode.d.ts.map +1 -1
- package/dist/adapters/auth/signInWithOAuthAccessCode.js +10 -9
- package/dist/adapters/auth/signInWithOAuthAccessCode.js.map +1 -1
- package/dist/adapters/auth/signInWithOAuthAccessCode.ts +6 -3
- package/dist/adapters/auth/signOut.d.ts.map +1 -1
- package/dist/adapters/auth/signOut.js +7 -1
- package/dist/adapters/auth/signOut.js.map +1 -1
- package/dist/adapters/auth/signOut.ts +7 -1
- package/dist/adapters/auth/types.d.ts +1 -0
- package/dist/adapters/auth/types.d.ts.map +1 -1
- package/dist/adapters/auth/types.js.map +1 -1
- package/dist/adapters/auth/types.ts +1 -0
- package/dist/components/auth/AuthLayout.d.ts +1 -1
- package/dist/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +92 -22
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +38 -12
- package/dist/components/auth/AuthSettingsContext.d.ts +10 -0
- package/dist/components/auth/AuthSettingsContext.d.ts.map +1 -0
- package/dist/components/auth/AuthSettingsContext.js +49 -0
- package/dist/components/auth/AuthSettingsContext.js.map +1 -0
- package/dist/components/auth/AuthSettingsContext.tsx +19 -0
- package/dist/components/auth/FacebookAuthChecking.d.ts +2 -0
- package/dist/components/auth/FacebookAuthChecking.d.ts.map +1 -0
- package/dist/components/auth/FacebookAuthChecking.js +98 -0
- package/dist/components/auth/FacebookAuthChecking.js.map +1 -0
- package/dist/components/auth/FacebookAuthChecking.tsx +59 -0
- package/dist/components/auth/ForgotPasswordThankYou.d.ts.map +1 -1
- package/dist/components/auth/ForgotPasswordThankYou.js +3 -7
- package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
- package/dist/components/auth/ForgotPasswordThankYou.tsx +4 -9
- package/dist/components/auth/GoogleAuthChecking.d.ts.map +1 -1
- package/dist/components/auth/GoogleAuthChecking.js +10 -16
- package/dist/components/auth/GoogleAuthChecking.js.map +1 -1
- package/dist/components/auth/GoogleAuthChecking.tsx +2 -7
- package/dist/components/auth/MicrosoftAuthChecking.d.ts +2 -0
- package/dist/components/auth/MicrosoftAuthChecking.d.ts.map +1 -0
- package/dist/components/auth/MicrosoftAuthChecking.js +98 -0
- package/dist/components/auth/MicrosoftAuthChecking.js.map +1 -0
- package/dist/components/auth/MicrosoftAuthChecking.tsx +59 -0
- package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidForgotPassword.js +3 -7
- package/dist/components/auth/SolidForgotPassword.js.map +1 -1
- package/dist/components/auth/SolidForgotPassword.tsx +4 -9
- package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.js +21 -30
- package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.tsx +5 -13
- package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.js +35 -22
- package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.tsx +28 -16
- package/dist/components/auth/SolidLogin.d.ts.map +1 -1
- package/dist/components/auth/SolidLogin.js +25 -31
- package/dist/components/auth/SolidLogin.js.map +1 -1
- package/dist/components/auth/SolidLogin.tsx +19 -16
- package/dist/components/auth/SolidRegister.d.ts.map +1 -1
- package/dist/components/auth/SolidRegister.js +59 -31
- package/dist/components/auth/SolidRegister.js.map +1 -1
- package/dist/components/auth/SolidRegister.tsx +91 -38
- package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidResetPassword.js +2 -6
- package/dist/components/auth/SolidResetPassword.js.map +1 -1
- package/dist/components/auth/SolidResetPassword.tsx +2 -6
- package/dist/components/common/AuthBanner.js.map +1 -1
- package/dist/components/common/GeneralSettings.d.ts.map +1 -1
- package/dist/components/common/GeneralSettings.js +235 -151
- package/dist/components/common/GeneralSettings.js.map +1 -1
- package/dist/components/common/GeneralSettings.tsx +1109 -776
- package/dist/components/common/SettingsComponent.d.ts +2 -0
- package/dist/components/common/SettingsComponent.d.ts.map +1 -0
- package/dist/components/common/SettingsComponent.js +351 -0
- package/dist/components/common/SettingsComponent.js.map +1 -0
- package/dist/components/common/SettingsComponent.module.css +421 -0
- package/dist/components/common/SettingsComponent.tsx +582 -0
- package/dist/components/common/SocialMediaLogin.d.ts +8 -1
- package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
- package/dist/components/common/SocialMediaLogin.js +6 -13
- package/dist/components/common/SocialMediaLogin.js.map +1 -1
- package/dist/components/common/SocialMediaLogin.tsx +120 -58
- package/dist/components/common/SolidExport.d.ts.map +1 -1
- package/dist/components/common/SolidExport.js +1 -1
- package/dist/components/common/SolidExport.js.map +1 -1
- package/dist/components/common/SolidExport.tsx +2 -1
- package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
- package/dist/components/common/SolidFormStepper.js +2 -1
- package/dist/components/common/SolidFormStepper.js.map +1 -1
- package/dist/components/common/SolidFormStepper.tsx +2 -1
- package/dist/components/common/solid-export.css +26 -0
- package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardView.js +24 -25
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +22 -27
- package/dist/components/core/card/SolidCardViewConfigure.js +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.tsx +1 -1
- package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatter.js +39 -9
- package/dist/components/core/chatter/SolidChatter.js.map +1 -1
- package/dist/components/core/chatter/SolidChatter.tsx +42 -7
- package/dist/components/core/chatter/SolidChatterAuditMessage.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatterAuditMessage.js +19 -1
- package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +22 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +3 -0
- package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.js +68 -4
- package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.tsx +45 -3
- package/dist/components/core/chatter/chatter.module.css +0 -3
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js +3 -1
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +149 -0
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx +3 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +9 -8
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +4 -2
- package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.js +21 -4
- package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.tsx +128 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +1 -1
- package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.d.ts +7 -0
- package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.js +75 -0
- package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.ts +45 -0
- package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.d.ts +3 -0
- package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.js +81 -0
- package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.tsx +114 -0
- package/dist/components/core/form/SolidFormActionHeader.d.ts +1 -1
- package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.js +10 -5
- package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.tsx +33 -4
- package/dist/components/core/form/SolidFormLayouts.js +1 -1
- package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
- package/dist/components/core/form/SolidFormLayouts.tsx +1 -1
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +122 -28
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +111 -10
- package/dist/components/core/form/fields/SolidComputedField.d.ts +25 -0
- package/dist/components/core/form/fields/SolidComputedField.d.ts.map +1 -0
- package/dist/components/core/form/fields/SolidComputedField.js +128 -0
- package/dist/components/core/form/fields/SolidComputedField.js.map +1 -0
- package/dist/components/core/form/fields/SolidComputedField.tsx +134 -0
- package/dist/components/core/form/fields/SolidDateTimeField.js +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.tsx +1 -1
- package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidJsonField.js +4 -1
- package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
- package/dist/components/core/form/fields/SolidJsonField.tsx +4 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js +35 -24
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.tsx +30 -14
- package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.js +29 -28
- package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.tsx +17 -12
- package/dist/components/core/form/fields/SolidTimeField.js +1 -1
- package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
- package/dist/components/core/form/fields/SolidTimeField.tsx +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +2 -2
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +2 -2
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js +3 -3
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js.map +1 -1
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +0 -5
- package/dist/components/core/kanban/KanbanBoard.js +1 -1
- package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.tsx +1 -1
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +216 -102
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +204 -72
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +1 -1
- package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -1
- package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +1 -2
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +2 -2
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +21 -10
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +2 -2
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +18 -10
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +3 -6
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +30 -24
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +2 -2
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +6 -5
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +6 -5
- package/dist/components/core/list/SolidDataTablePagination.d.ts +15 -0
- package/dist/components/core/list/SolidDataTablePagination.d.ts.map +1 -0
- package/dist/components/core/list/SolidDataTablePagination.js +22 -0
- package/dist/components/core/list/SolidDataTablePagination.js.map +1 -0
- package/dist/components/core/list/SolidDataTablePagination.tsx +71 -0
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.d.ts.map +1 -1
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.js +3 -3
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.js.map +1 -1
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +1 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +60 -63
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +43 -48
- package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.js +32 -3
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +35 -3
- package/dist/components/core/list/SolidListViewRowActionsMenu.js +2 -2
- package/dist/components/core/list/SolidListViewRowActionsMenu.js.map +1 -1
- package/dist/components/core/list/SolidListViewRowActionsMenu.tsx +2 -2
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +1 -1
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +6 -7
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -1
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +9 -10
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +1 -1
- package/dist/components/core/tree/SolidTreeTable.d.ts +1 -1
- package/dist/components/core/tree/SolidTreeTable.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeTable.js +78 -78
- package/dist/components/core/tree/SolidTreeTable.js.map +1 -1
- package/dist/components/core/tree/SolidTreeTable.tsx +1 -10
- package/dist/components/core/users/CreateUser.css +27 -2
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +14 -12
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +18 -2
- package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
- package/dist/components/layout/user-profile-menu.js +17 -15
- package/dist/components/layout/user-profile-menu.js.map +1 -1
- package/dist/components/layout/user-profile-menu.tsx +30 -33
- package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.js +9 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +10 -1
- package/dist/components/shad-cn-ui/SolidButton.d.ts +14 -15
- package/dist/components/shad-cn-ui/SolidButton.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidButton.js +13 -3
- package/dist/components/shad-cn-ui/SolidButton.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidButton.tsx +24 -4
- package/dist/components/shad-cn-ui/SolidDatePicker.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidDatePicker.js +1 -1
- package/dist/components/shad-cn-ui/SolidDatePicker.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidDatePicker.tsx +2 -0
- package/dist/components/shad-cn-ui/SolidDialog.d.ts +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.tsx +1 -1
- package/dist/components/shad-cn-ui/SolidIcon.d.ts +2 -2
- package/dist/components/shad-cn-ui/SolidIcon.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidIcon.js +3 -4
- package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidIcon.tsx +12 -15
- package/dist/components/shad-cn-ui/SolidRichTextEditor.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidRichTextEditor.js +9 -1
- package/dist/components/shad-cn-ui/SolidRichTextEditor.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidRichTextEditor.tsx +8 -1
- package/dist/components/shad-cn-ui/SolidTabs.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidTabs.js +2 -2
- package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidTabs.tsx +12 -1
- package/dist/components/solid-ui/SolidButton.d.ts +14 -0
- package/dist/components/solid-ui/SolidButton.d.ts.map +1 -0
- package/dist/components/solid-ui/SolidButton.js +36 -0
- package/dist/components/solid-ui/SolidButton.js.map +1 -0
- package/dist/components/solid-ui/SolidButton.tsx +54 -0
- package/dist/components/solid-ui/SolidTabs.d.ts +18 -0
- package/dist/components/solid-ui/SolidTabs.d.ts.map +1 -0
- package/dist/components/solid-ui/SolidTabs.js +22 -0
- package/dist/components/solid-ui/SolidTabs.js.map +1 -0
- package/dist/components/solid-ui/SolidTabs.tsx +73 -0
- package/dist/components/solid-ui/index.d.ts +3 -0
- package/dist/components/solid-ui/index.d.ts.map +1 -0
- package/dist/components/solid-ui/index.js +3 -0
- package/dist/components/solid-ui/index.js.map +1 -0
- package/dist/components/solid-ui/index.ts +2 -0
- package/dist/helpers/hydrateRelationRules.js +1 -1
- package/dist/helpers/hydrateRelationRules.js.map +1 -1
- package/dist/helpers/hydrateRelationRules.ts +1 -1
- package/dist/helpers/permissions.js +2 -2
- package/dist/helpers/permissions.js.map +1 -1
- package/dist/helpers/permissions.ts +2 -2
- package/dist/helpers/registry.d.ts +2 -2
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +6 -0
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +9 -2
- package/dist/helpers/settingsPayload.d.ts +32 -0
- package/dist/helpers/settingsPayload.d.ts.map +1 -0
- package/dist/helpers/settingsPayload.js +72 -0
- package/dist/helpers/settingsPayload.js.map +1 -0
- package/dist/helpers/settingsPayload.ts +125 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/index.ts +7 -0
- package/dist/redux/api/solidChatterMessageApi.d.ts +2 -1
- package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
- package/dist/redux/api/solidChatterMessageApi.js +11 -1
- package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
- package/dist/redux/api/solidChatterMessageApi.ts +10 -1
- package/dist/redux/api/solidEntityApi.d.ts.map +1 -1
- package/dist/redux/api/solidEntityApi.js +14 -1
- package/dist/redux/api/solidEntityApi.js.map +1 -1
- package/dist/redux/api/solidEntityApi.tsx +17 -1
- package/dist/redux/store/createSolidStore.d.ts +1 -1
- package/dist/redux/store/createSolidStore.d.ts.map +1 -1
- package/dist/redux/store/createSolidStore.js +20 -11
- package/dist/redux/store/createSolidStore.js.map +1 -1
- package/dist/redux/store/createSolidStore.ts +20 -11
- package/dist/redux/store/defaultStoreConfig.d.ts +1 -0
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/redux/store/dynamicEntityApiMiddleware.d.ts +10 -0
- package/dist/redux/store/dynamicEntityApiMiddleware.d.ts.map +1 -0
- package/dist/redux/store/dynamicEntityApiMiddleware.js +44 -0
- package/dist/redux/store/dynamicEntityApiMiddleware.js.map +1 -0
- package/dist/redux/store/dynamicEntityApiMiddleware.ts +58 -0
- package/dist/redux/store/dynamicReducerManager.d.ts +10 -0
- package/dist/redux/store/dynamicReducerManager.d.ts.map +1 -0
- package/dist/redux/store/dynamicReducerManager.js +51 -0
- package/dist/redux/store/dynamicReducerManager.js.map +1 -0
- package/dist/redux/store/dynamicReducerManager.ts +51 -0
- package/dist/redux/store/solidEntityApiPool.d.ts +31 -0
- package/dist/redux/store/solidEntityApiPool.d.ts.map +1 -0
- package/dist/redux/store/solidEntityApiPool.js +123 -0
- package/dist/redux/store/solidEntityApiPool.js.map +1 -0
- package/dist/redux/store/solidEntityApiPool.ts +167 -0
- package/dist/resources/globals.css +26 -6
- package/dist/resources/shadcn-base.css +269 -92
- package/dist/resources/solid-responsive.css +22 -4
- package/dist/routes/AppEventListener.js +1 -1
- package/dist/routes/AppEventListener.js.map +1 -1
- package/dist/routes/AppEventListener.tsx +1 -1
- package/dist/routes/SolidRouteMetadataBoundary.d.ts +5 -0
- package/dist/routes/SolidRouteMetadataBoundary.d.ts.map +1 -0
- package/dist/routes/SolidRouteMetadataBoundary.js +72 -0
- package/dist/routes/SolidRouteMetadataBoundary.js.map +1 -0
- package/dist/routes/SolidRouteMetadataBoundary.tsx +77 -0
- package/dist/routes/pages/admin/core/CardPage.js +1 -1
- package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.tsx +1 -1
- package/dist/routes/pages/admin/core/DiagnosticsPage.d.ts +2 -0
- package/dist/routes/pages/admin/core/DiagnosticsPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/DiagnosticsPage.js +48 -0
- package/dist/routes/pages/admin/core/DiagnosticsPage.js.map +1 -0
- package/dist/routes/pages/admin/core/DiagnosticsPage.tsx +167 -0
- package/dist/routes/pages/admin/core/FormPage.js +1 -1
- package/dist/routes/pages/admin/core/FormPage.js.map +1 -1
- package/dist/routes/pages/admin/core/FormPage.tsx +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.js +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.tsx +1 -1
- package/dist/routes/pages/admin/core/ListPage.js +1 -1
- package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.tsx +1 -1
- package/dist/routes/pages/admin/core/SettingsPage.js +2 -2
- package/dist/routes/pages/admin/core/SettingsPage.js.map +1 -1
- package/dist/routes/pages/admin/core/SettingsPage.tsx +2 -2
- package/dist/routes/pages/admin/core/TreePage.js +1 -1
- package/dist/routes/pages/admin/core/TreePage.js.map +1 -1
- package/dist/routes/pages/admin/core/TreePage.tsx +1 -1
- package/dist/routes/pages/auth/InitiateFacebookOauthPage.d.ts +2 -0
- package/dist/routes/pages/auth/InitiateFacebookOauthPage.d.ts.map +1 -0
- package/dist/routes/pages/auth/InitiateFacebookOauthPage.js +6 -0
- package/dist/routes/pages/auth/InitiateFacebookOauthPage.js.map +1 -0
- package/dist/routes/pages/auth/InitiateFacebookOauthPage.tsx +5 -0
- package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.d.ts +2 -0
- package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.d.ts.map +1 -0
- package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.js +6 -0
- package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.js.map +1 -0
- package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.tsx +5 -0
- package/dist/routes/pages/studio/StudioLandingPage.d.ts.map +1 -1
- package/dist/routes/pages/studio/StudioLandingPage.js +35 -7
- package/dist/routes/pages/studio/StudioLandingPage.js.map +1 -1
- package/dist/routes/pages/studio/StudioLandingPage.tsx +42 -6
- package/dist/routes/solidRoutes.d.ts.map +1 -1
- package/dist/routes/solidRoutes.js +49 -24
- package/dist/routes/solidRoutes.js.map +1 -1
- package/dist/routes/solidRoutes.tsx +49 -24
- package/dist/routes/types.d.ts +8 -1
- package/dist/routes/types.d.ts.map +1 -1
- package/dist/routes/types.js.map +1 -1
- package/dist/routes/types.ts +10 -0
- package/dist/types/extension-registry.d.ts +1 -0
- package/dist/types/extension-registry.d.ts.map +1 -1
- package/dist/types/extension-registry.js +1 -0
- package/dist/types/extension-registry.js.map +1 -1
- package/dist/types/extension-registry.ts +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/solid-core.d.ts +11 -0
- package/package.json +1 -2
- package/dist/components/auth/SolidOTPVerify.d.ts +0 -3
- package/dist/components/auth/SolidOTPVerify.d.ts.map +0 -1
- package/dist/components/auth/SolidOTPVerify.js +0 -67
- package/dist/components/auth/SolidOTPVerify.js.map +0 -1
- package/dist/components/auth/SolidOTPVerify.tsx +0 -133
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +0 -2
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +0 -1
- package/dist/components/core/common/LoadDynamicJsxComponent.js +0 -50
- package/dist/components/core/common/LoadDynamicJsxComponent.js.map +0 -1
- package/dist/components/core/common/LoadDynamicJsxComponent.tsx +0 -70
- package/dist/nextAuth/authProviders.d.ts +0 -4
- package/dist/nextAuth/authProviders.d.ts.map +0 -1
- package/dist/nextAuth/authProviders.js +0 -198
- package/dist/nextAuth/authProviders.js.map +0 -1
- package/dist/nextAuth/authProviders.tsx +0 -232
- package/dist/nextAuth/handleLogout.d.ts +0 -2
- package/dist/nextAuth/handleLogout.d.ts.map +0 -1
- package/dist/nextAuth/handleLogout.js +0 -36
- package/dist/nextAuth/handleLogout.js.map +0 -1
- package/dist/nextAuth/handleLogout.tsx +0 -39
- package/dist/nextAuth/refreshAccessToken.d.ts +0 -2
- package/dist/nextAuth/refreshAccessToken.d.ts.map +0 -1
- package/dist/nextAuth/refreshAccessToken.js +0 -24
- package/dist/nextAuth/refreshAccessToken.js.map +0 -1
- package/dist/nextAuth/refreshAccessToken.tsx +0 -28
- package/dist/redux/features/settingsSlice.d.ts +0 -20
- package/dist/redux/features/settingsSlice.d.ts.map +0 -1
- package/dist/redux/features/settingsSlice.js +0 -39
- package/dist/redux/features/settingsSlice.js.map +0 -1
- package/dist/redux/features/settingsSlice.ts +0 -60
|
@@ -76,14 +76,14 @@
|
|
|
76
76
|
|
|
77
77
|
.chatter-section.open {
|
|
78
78
|
position: absolute;
|
|
79
|
-
right:
|
|
79
|
+
right: 0;
|
|
80
80
|
top: 0;
|
|
81
|
-
width:
|
|
81
|
+
width: 100% !important;
|
|
82
82
|
height: 100%;
|
|
83
83
|
z-index: 99;
|
|
84
84
|
background-color: transparent;
|
|
85
85
|
border-left: none;
|
|
86
|
-
max-width:
|
|
86
|
+
max-width: 100%;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
|
|
@@ -381,7 +381,8 @@
|
|
|
381
381
|
}
|
|
382
382
|
|
|
383
383
|
.chatter-section.collapsed {
|
|
384
|
-
width:
|
|
384
|
+
width: 0 !important;
|
|
385
|
+
display: none !important;
|
|
385
386
|
}
|
|
386
387
|
|
|
387
388
|
|
|
@@ -541,6 +542,23 @@
|
|
|
541
542
|
gap: 5px !important;
|
|
542
543
|
}
|
|
543
544
|
|
|
545
|
+
.overflow-button {
|
|
546
|
+
min-width: 2rem;
|
|
547
|
+
padding: 0.45rem 0.35rem;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
.overflow-button .solid-icon {
|
|
551
|
+
font-size: 0.82rem;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
.overflow-right-button {
|
|
555
|
+
min-width: 2rem;
|
|
556
|
+
width: 2rem;
|
|
557
|
+
padding-left: 0.3rem;
|
|
558
|
+
padding-right: 0.3rem;
|
|
559
|
+
flex-shrink: 0;
|
|
560
|
+
}
|
|
561
|
+
|
|
544
562
|
.solid-mobile-text-wrapper {
|
|
545
563
|
max-width: clamp(180px, 60vw, 600px);
|
|
546
564
|
white-space: nowrap;
|
|
@@ -12,7 +12,7 @@ export function AppEventListener() {
|
|
|
12
12
|
if (payload === null || payload === void 0 ? void 0 : payload.message) {
|
|
13
13
|
sessionStorage.setItem("solidx.globalError", payload.message);
|
|
14
14
|
}
|
|
15
|
-
if (pathname !== "/error") {
|
|
15
|
+
if (pathname !== "/error" && pathname.startsWith("/admin")) {
|
|
16
16
|
router.push("/error");
|
|
17
17
|
}
|
|
18
18
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppEventListener.js","sourceRoot":"","sources":["../../src/routes/AppEventListener.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAO3F,MAAM,UAAU,gBAAgB;IAC9B,IAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,SAAS,CAAC;QACR,IAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAqB,SAAS,CAAC,WAAW,EAAE,UAAC,OAAO;YACzE,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE;gBACpB,cAAc,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;aAC/D;YACD,IAAI,QAAQ,KAAK,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"AppEventListener.js","sourceRoot":"","sources":["../../src/routes/AppEventListener.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAO3F,MAAM,UAAU,gBAAgB;IAC9B,IAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,SAAS,CAAC;QACR,IAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAqB,SAAS,CAAC,WAAW,EAAE,UAAC,OAAO;YACzE,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE;gBACpB,cAAc,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;aAC/D;YACD,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC1D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;QACH,OAAO,cAAM,OAAA,GAAG,EAAE,EAAL,CAAK,CAAC;IACrB,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,OAAO,CACL,8BACE,KAAC,WAAW,KAAG,EACf,KAAC,kBAAkB,KAAG,IACrB,CACJ,CAAC;AACJ,CAAC","sourcesContent":["import { useEffect } from \"react\";\nimport { eventBus, AppEvents } from \"../helpers/eventBus\";\nimport { useRouter } from \"../hooks/useRouter\";\nimport { usePathname } from \"../hooks/usePathname\";\nimport { SolidStudio, PreviewModePersist } from \"../components/layout/SolidAiStudioLayout\";\n\ntype GlobalErrorPayload = {\n status?: number | string;\n message?: string;\n};\n\nexport function AppEventListener() {\n const router = useRouter();\n const pathname = usePathname();\n\n useEffect(() => {\n const off = eventBus.on<GlobalErrorPayload>(AppEvents.GlobalError, (payload) => {\n if (payload?.message) {\n sessionStorage.setItem(\"solidx.globalError\", payload.message);\n }\n if (pathname !== \"/error\" && pathname.startsWith(\"/admin\")) {\n router.push(\"/error\");\n }\n });\n return () => off();\n }, [router, pathname]);\n\n return (\n <>\n <SolidStudio />\n <PreviewModePersist />\n </>\n );\n}\n"]}
|
|
@@ -18,7 +18,7 @@ export function AppEventListener() {
|
|
|
18
18
|
if (payload?.message) {
|
|
19
19
|
sessionStorage.setItem("solidx.globalError", payload.message);
|
|
20
20
|
}
|
|
21
|
-
if (pathname !== "/error") {
|
|
21
|
+
if (pathname !== "/error" && pathname.startsWith("/admin")) {
|
|
22
22
|
router.push("/error");
|
|
23
23
|
}
|
|
24
24
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolidRouteMetadataBoundary.d.ts","sourceRoot":"","sources":["../../src/routes/SolidRouteMetadataBoundary.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuBtF,wBAAgB,0BAA0B,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,2CAoD/E"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
|
+
if (ar || !(i in from)) {
|
|
4
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5
|
+
ar[i] = from[i];
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
|
+
};
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
import { useEffect, useRef } from "react";
|
|
12
|
+
import { matchRoutes, Outlet, useLocation } from "react-router-dom";
|
|
13
|
+
import { getSettingsMap } from "../helpers/settingsPayload";
|
|
14
|
+
import { useGetAuthSettingsQuery } from "../redux/api/solidSettingsApi";
|
|
15
|
+
function normalizePart(value) {
|
|
16
|
+
var trimmed = value === null || value === void 0 ? void 0 : value.trim();
|
|
17
|
+
return trimmed ? trimmed : undefined;
|
|
18
|
+
}
|
|
19
|
+
function uniqueParts(parts) {
|
|
20
|
+
var seen = new Set();
|
|
21
|
+
var result = [];
|
|
22
|
+
for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {
|
|
23
|
+
var part = parts_1[_i];
|
|
24
|
+
if (!part || seen.has(part))
|
|
25
|
+
continue;
|
|
26
|
+
seen.add(part);
|
|
27
|
+
result.push(part);
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
export function SolidRouteMetadataBoundary(_a) {
|
|
32
|
+
var _b, _c;
|
|
33
|
+
var routes = _a.routes;
|
|
34
|
+
var location = useLocation();
|
|
35
|
+
var authSettings = useGetAuthSettingsQuery(undefined).data;
|
|
36
|
+
var initialDescriptionRef = useRef(typeof document !== "undefined"
|
|
37
|
+
? (_c = (_b = document.querySelector('meta[name="description"]')) === null || _b === void 0 ? void 0 : _b.getAttribute("content")) !== null && _c !== void 0 ? _c : ""
|
|
38
|
+
: "");
|
|
39
|
+
useEffect(function () {
|
|
40
|
+
var _a, _b, _c;
|
|
41
|
+
var matches = (_a = matchRoutes(routes, location)) !== null && _a !== void 0 ? _a : [];
|
|
42
|
+
var handles = matches
|
|
43
|
+
.map(function (match) { return match.route.handle; })
|
|
44
|
+
.filter(function (handle) { return Boolean(handle); });
|
|
45
|
+
var hasExplicitOptOut = handles.some(function (handle) { return handle.manageDocumentMeta === false; });
|
|
46
|
+
var hasAutoManagedMeta = handles.some(function (handle) {
|
|
47
|
+
return handle.manageDocumentMeta === true ||
|
|
48
|
+
Boolean(handle.title || handle.description || handle.titlePrefix || handle.titleSuffix);
|
|
49
|
+
});
|
|
50
|
+
if (hasExplicitOptOut || !hasAutoManagedMeta) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
var settingsMap = getSettingsMap(authSettings);
|
|
54
|
+
var resolvedAppTitle = (_b = normalizePart(settingsMap.appTitle)) !== null && _b !== void 0 ? _b : "SolidX";
|
|
55
|
+
var resolvedTitle = __spreadArray([], handles, true).reverse()
|
|
56
|
+
.map(function (handle) { return normalizePart(handle.title); })
|
|
57
|
+
.find(Boolean);
|
|
58
|
+
var resolvedDescription = __spreadArray([], handles, true).reverse()
|
|
59
|
+
.map(function (handle) { return normalizePart(handle.description); })
|
|
60
|
+
.find(Boolean);
|
|
61
|
+
var titlePrefixes = handles.map(function (handle) { return normalizePart(handle.titlePrefix); });
|
|
62
|
+
var titleSuffixes = handles.map(function (handle) { return normalizePart(handle.titleSuffix); });
|
|
63
|
+
var nextTitleParts = uniqueParts(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], titlePrefixes, true), [resolvedTitle], false), titleSuffixes, true), [resolvedAppTitle], false));
|
|
64
|
+
document.title = nextTitleParts.join(" | ");
|
|
65
|
+
var metaDescription = document.querySelector('meta[name="description"]');
|
|
66
|
+
if (metaDescription) {
|
|
67
|
+
metaDescription.setAttribute("content", (_c = resolvedDescription !== null && resolvedDescription !== void 0 ? resolvedDescription : normalizePart(initialDescriptionRef.current)) !== null && _c !== void 0 ? _c : resolvedAppTitle);
|
|
68
|
+
}
|
|
69
|
+
}, [authSettings, location, routes]);
|
|
70
|
+
return _jsx(Outlet, {});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=SolidRouteMetadataBoundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolidRouteMetadataBoundary.js","sourceRoot":"","sources":["../../src/routes/SolidRouteMetadataBoundary.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAoB,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,SAAS,aAAa,CAAC,KAAc;IACnC,IAAM,OAAO,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACvC,CAAC;AAED,SAAS,WAAW,CAAC,KAAgC;IACnD,IAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAmB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE;QAArB,IAAM,IAAI,cAAA;QACb,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,EAAqC;;QAAnC,MAAM,YAAA;IACjD,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IACvB,IAAM,YAAY,GAAK,uBAAuB,CAAC,SAAS,CAAC,KAAvC,CAAwC;IAClE,IAAM,qBAAqB,GAAG,MAAM,CAClC,OAAO,QAAQ,KAAK,WAAW;QAC7B,CAAC,CAAC,MAAA,MAAA,QAAQ,CAAC,aAAa,CAAC,0BAA0B,CAAC,0CAAE,YAAY,CAAC,SAAS,CAAC,mCAAI,EAAE;QACnF,CAAC,CAAC,EAAE,CACP,CAAC;IAEF,SAAS,CAAC;;QACR,IAAM,OAAO,GAAG,MAAA,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,mCAAI,EAAE,CAAC;QACpD,IAAM,OAAO,GAAG,OAAO;aACpB,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,KAAK,CAAC,MAAmC,EAA/C,CAA+C,CAAC;aAC/D,MAAM,CAAC,UAAC,MAAM,IAA8B,OAAA,OAAO,CAAC,MAAM,CAAC,EAAf,CAAe,CAAC,CAAC;QAEhE,IAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,kBAAkB,KAAK,KAAK,EAAnC,CAAmC,CAAC,CAAC;QACxF,IAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CACrC,UAAC,MAAM;YACL,OAAA,MAAM,CAAC,kBAAkB,KAAK,IAAI;gBAClC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;QADvF,CACuF,CAC1F,CAAC;QAEF,IAAI,iBAAiB,IAAI,CAAC,kBAAkB,EAAE;YAC5C,OAAO;SACR;QAED,IAAM,WAAW,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;QACjD,IAAM,gBAAgB,GAAG,MAAA,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,mCAAI,QAAQ,CAAC;QACzE,IAAM,aAAa,GAAG,kBAAI,OAAO,QAC9B,OAAO,EAAE;aACT,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAA3B,CAA2B,CAAC;aAC5C,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,IAAM,mBAAmB,GAAG,kBAAI,OAAO,QACpC,OAAO,EAAE;aACT,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,EAAjC,CAAiC,CAAC;aAClD,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,IAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,EAAjC,CAAiC,CAAC,CAAC;QACjF,IAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,EAAjC,CAAiC,CAAC,CAAC;QAEjF,IAAM,cAAc,GAAG,WAAW,6DAAK,aAAa,UAAE,aAAa,WAAK,aAAa,UAAE,gBAAgB,UAAE,CAAC;QAC1G,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;QAC3E,IAAI,eAAe,EAAE;YACnB,eAAe,CAAC,YAAY,CAC1B,SAAS,EACT,MAAA,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,aAAa,CAAC,qBAAqB,CAAC,OAAO,CAAC,mCAAI,gBAAgB,CACxF,CAAC;SACH;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAErC,OAAO,KAAC,MAAM,KAAG,CAAC;AACpB,CAAC","sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { matchRoutes, Outlet, useLocation, type RouteObject } from \"react-router-dom\";\nimport { getSettingsMap } from \"../helpers/settingsPayload\";\nimport { useGetAuthSettingsQuery } from \"../redux/api/solidSettingsApi\";\nimport type { SolidPageMeta } from \"./types\";\n\nfunction normalizePart(value?: string): string | undefined {\n const trimmed = value?.trim();\n return trimmed ? trimmed : undefined;\n}\n\nfunction uniqueParts(parts: Array<string | undefined>): string[] {\n const seen = new Set<string>();\n const result: string[] = [];\n\n for (const part of parts) {\n if (!part || seen.has(part)) continue;\n seen.add(part);\n result.push(part);\n }\n\n return result;\n}\n\nexport function SolidRouteMetadataBoundary({ routes }: { routes: RouteObject[] }) {\n const location = useLocation();\n const { data: authSettings } = useGetAuthSettingsQuery(undefined);\n const initialDescriptionRef = useRef(\n typeof document !== \"undefined\"\n ? document.querySelector('meta[name=\"description\"]')?.getAttribute(\"content\") ?? \"\"\n : \"\",\n );\n\n useEffect(() => {\n const matches = matchRoutes(routes, location) ?? [];\n const handles = matches\n .map((match) => match.route.handle as SolidPageMeta | undefined)\n .filter((handle): handle is SolidPageMeta => Boolean(handle));\n\n const hasExplicitOptOut = handles.some((handle) => handle.manageDocumentMeta === false);\n const hasAutoManagedMeta = handles.some(\n (handle) =>\n handle.manageDocumentMeta === true ||\n Boolean(handle.title || handle.description || handle.titlePrefix || handle.titleSuffix),\n );\n\n if (hasExplicitOptOut || !hasAutoManagedMeta) {\n return;\n }\n\n const settingsMap = getSettingsMap(authSettings);\n const resolvedAppTitle = normalizePart(settingsMap.appTitle) ?? \"SolidX\";\n const resolvedTitle = [...handles]\n .reverse()\n .map((handle) => normalizePart(handle.title))\n .find(Boolean);\n const resolvedDescription = [...handles]\n .reverse()\n .map((handle) => normalizePart(handle.description))\n .find(Boolean);\n const titlePrefixes = handles.map((handle) => normalizePart(handle.titlePrefix));\n const titleSuffixes = handles.map((handle) => normalizePart(handle.titleSuffix));\n\n const nextTitleParts = uniqueParts([...titlePrefixes, resolvedTitle, ...titleSuffixes, resolvedAppTitle]);\n document.title = nextTitleParts.join(\" | \");\n\n const metaDescription = document.querySelector('meta[name=\"description\"]');\n if (metaDescription) {\n metaDescription.setAttribute(\n \"content\",\n resolvedDescription ?? normalizePart(initialDescriptionRef.current) ?? resolvedAppTitle,\n );\n }\n }, [authSettings, location, routes]);\n\n return <Outlet />;\n}\n"]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react";
|
|
2
|
+
import { matchRoutes, Outlet, useLocation, type RouteObject } from "react-router-dom";
|
|
3
|
+
import { getSettingsMap } from "../helpers/settingsPayload";
|
|
4
|
+
import { useGetAuthSettingsQuery } from "../redux/api/solidSettingsApi";
|
|
5
|
+
import type { SolidPageMeta } from "./types";
|
|
6
|
+
|
|
7
|
+
function normalizePart(value?: string): string | undefined {
|
|
8
|
+
const trimmed = value?.trim();
|
|
9
|
+
return trimmed ? trimmed : undefined;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function uniqueParts(parts: Array<string | undefined>): string[] {
|
|
13
|
+
const seen = new Set<string>();
|
|
14
|
+
const result: string[] = [];
|
|
15
|
+
|
|
16
|
+
for (const part of parts) {
|
|
17
|
+
if (!part || seen.has(part)) continue;
|
|
18
|
+
seen.add(part);
|
|
19
|
+
result.push(part);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function SolidRouteMetadataBoundary({ routes }: { routes: RouteObject[] }) {
|
|
26
|
+
const location = useLocation();
|
|
27
|
+
const { data: authSettings } = useGetAuthSettingsQuery(undefined);
|
|
28
|
+
const initialDescriptionRef = useRef(
|
|
29
|
+
typeof document !== "undefined"
|
|
30
|
+
? document.querySelector('meta[name="description"]')?.getAttribute("content") ?? ""
|
|
31
|
+
: "",
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
const matches = matchRoutes(routes, location) ?? [];
|
|
36
|
+
const handles = matches
|
|
37
|
+
.map((match) => match.route.handle as SolidPageMeta | undefined)
|
|
38
|
+
.filter((handle): handle is SolidPageMeta => Boolean(handle));
|
|
39
|
+
|
|
40
|
+
const hasExplicitOptOut = handles.some((handle) => handle.manageDocumentMeta === false);
|
|
41
|
+
const hasAutoManagedMeta = handles.some(
|
|
42
|
+
(handle) =>
|
|
43
|
+
handle.manageDocumentMeta === true ||
|
|
44
|
+
Boolean(handle.title || handle.description || handle.titlePrefix || handle.titleSuffix),
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
if (hasExplicitOptOut || !hasAutoManagedMeta) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const settingsMap = getSettingsMap(authSettings);
|
|
52
|
+
const resolvedAppTitle = normalizePart(settingsMap.appTitle) ?? "SolidX";
|
|
53
|
+
const resolvedTitle = [...handles]
|
|
54
|
+
.reverse()
|
|
55
|
+
.map((handle) => normalizePart(handle.title))
|
|
56
|
+
.find(Boolean);
|
|
57
|
+
const resolvedDescription = [...handles]
|
|
58
|
+
.reverse()
|
|
59
|
+
.map((handle) => normalizePart(handle.description))
|
|
60
|
+
.find(Boolean);
|
|
61
|
+
const titlePrefixes = handles.map((handle) => normalizePart(handle.titlePrefix));
|
|
62
|
+
const titleSuffixes = handles.map((handle) => normalizePart(handle.titleSuffix));
|
|
63
|
+
|
|
64
|
+
const nextTitleParts = uniqueParts([...titlePrefixes, resolvedTitle, ...titleSuffixes, resolvedAppTitle]);
|
|
65
|
+
document.title = nextTitleParts.join(" | ");
|
|
66
|
+
|
|
67
|
+
const metaDescription = document.querySelector('meta[name="description"]');
|
|
68
|
+
if (metaDescription) {
|
|
69
|
+
metaDescription.setAttribute(
|
|
70
|
+
"content",
|
|
71
|
+
resolvedDescription ?? normalizePart(initialDescriptionRef.current) ?? resolvedAppTitle,
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
}, [authSettings, location, routes]);
|
|
75
|
+
|
|
76
|
+
return <Outlet />;
|
|
77
|
+
}
|
|
@@ -10,7 +10,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
-
import { camelCase } from "
|
|
13
|
+
import { camelCase } from "lodash";
|
|
14
14
|
import { useParams } from "react-router-dom";
|
|
15
15
|
import { SolidCardView } from "../../../../components/core/card/SolidCardView";
|
|
16
16
|
export function CardPage() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/CardPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"CardPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/CardPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAE/E,MAAM,UAAU,QAAQ;IACtB,IAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAC3C,IAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,KAAC,aAAa,eAAK,MAAM,IAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC;AACrG,CAAC","sourcesContent":["import { camelCase } from \"lodash\";\nimport { useParams } from \"react-router-dom\";\nimport { SolidCardView } from \"../../../../components/core/card/SolidCardView\";\n\nexport function CardPage() {\n const params = useParams();\n const moduleName = params.moduleName || \"\";\n const modelName = params.modelName ? camelCase(params.modelName) : \"\";\n return <SolidCardView {...params} embeded={false} moduleName={moduleName} modelName={modelName} />;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagnosticsPage.d.ts","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/DiagnosticsPage.tsx"],"names":[],"mappings":"AAsBA,wBAAgB,eAAe,4CAgJ9B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useState } from "react";
|
|
3
|
+
import { env } from "../../../../adapters/env";
|
|
4
|
+
import { loadSession } from "../../../../adapters/auth/storage";
|
|
5
|
+
import { hasAnyRole } from "../../../../helpers/rolesHelper";
|
|
6
|
+
import { useSession } from "../../../../hooks/useSession";
|
|
7
|
+
import { getSolidEntityApiPoolSnapshot, SOLID_ENTITY_API_POOL_LIMIT } from "../../../../redux/store/solidEntityApiPool";
|
|
8
|
+
import { SolidButton } from "../../../../components/shad-cn-ui/SolidButton";
|
|
9
|
+
var ALLOWED_ENVIRONMENTS = new Set([
|
|
10
|
+
"dev",
|
|
11
|
+
"development",
|
|
12
|
+
"staging",
|
|
13
|
+
"stage",
|
|
14
|
+
"uat",
|
|
15
|
+
"test",
|
|
16
|
+
"local",
|
|
17
|
+
]);
|
|
18
|
+
function toDisplayTime(counter) {
|
|
19
|
+
return "#".concat(counter);
|
|
20
|
+
}
|
|
21
|
+
export function DiagnosticsPage() {
|
|
22
|
+
var _a, _b, _c, _d;
|
|
23
|
+
var _e = useSession(), session = _e.data, status = _e.status;
|
|
24
|
+
var _f = useState(0), refreshTick = _f[0], setRefreshTick = _f[1];
|
|
25
|
+
var envName = (env("VITE_SOLIDX_ENV") || "unknown").toLowerCase();
|
|
26
|
+
var diagnosticsEnabled = ALLOWED_ENVIRONMENTS.has(envName);
|
|
27
|
+
var isAdmin = hasAnyRole((_a = session === null || session === void 0 ? void 0 : session.user) === null || _a === void 0 ? void 0 : _a.roles, ["Admin"]);
|
|
28
|
+
var poolSnapshot = useMemo(function () {
|
|
29
|
+
refreshTick;
|
|
30
|
+
return getSolidEntityApiPoolSnapshot();
|
|
31
|
+
}, [refreshTick]);
|
|
32
|
+
var activeCount = poolSnapshot.filter(function (entry) { return entry.active; }).length;
|
|
33
|
+
var cachedCount = poolSnapshot.length;
|
|
34
|
+
var loginRedirect = env("NEXT_PUBLIC_LOGIN_REDIRECT_URL") || "/admin";
|
|
35
|
+
var backendApi = env("NEXT_PUBLIC_BACKEND_API_URL") || env("API_URL", "");
|
|
36
|
+
var localSession = loadSession();
|
|
37
|
+
if (status === "loading") {
|
|
38
|
+
return (_jsx("div", { className: "solid-studio-home", children: _jsx("div", { className: "solid-studio-home-inner solid-studio-home-inner--wider", children: _jsx("div", { className: "solid-studio-card", children: _jsx("div", { className: "solid-studio-card-content", children: "Loading diagnostics..." }) }) }) }));
|
|
39
|
+
}
|
|
40
|
+
if (!isAdmin) {
|
|
41
|
+
return (_jsx("div", { className: "solid-studio-home", children: _jsx("div", { className: "solid-studio-home-inner solid-studio-home-inner--wider", children: _jsx("div", { className: "solid-studio-card", children: _jsxs("div", { className: "solid-studio-card-header", children: [_jsx("h3", { className: "solid-studio-card-title", children: "Diagnostics Access Restricted" }), _jsx("p", { className: "solid-studio-card-description", children: "You do not have permission to view this diagnostics page." })] }) }) }) }));
|
|
42
|
+
}
|
|
43
|
+
if (!diagnosticsEnabled) {
|
|
44
|
+
return (_jsx("div", { className: "solid-studio-home", children: _jsx("div", { className: "solid-studio-home-inner solid-studio-home-inner--wider", children: _jsx("div", { className: "solid-studio-card", children: _jsxs("div", { className: "solid-studio-card-header", children: [_jsx("h3", { className: "solid-studio-card-title", children: "Diagnostics Disabled" }), _jsxs("p", { className: "solid-studio-card-description", children: ["Diagnostics are enabled only in dev/staging-style environments. Current environment: ", _jsx("code", { children: envName }), "."] })] }) }) }) }));
|
|
45
|
+
}
|
|
46
|
+
return (_jsx("div", { className: "solid-studio-home solid-studio-home--top", children: _jsxs("div", { className: "solid-studio-home-inner solid-studio-home-inner--wider", children: [_jsxs("div", { className: "solid-studio-home-toolbar", style: { marginBottom: "14px" }, children: [_jsx("div", { className: "solid-studio-home-toolbar-left", children: _jsxs("div", { className: "solid-studio-home-heading", children: [_jsx("div", { className: "solid-studio-home-badge", children: "Diagnostics" }), _jsx("h1", { children: "SolidX Runtime Diagnostics" }), _jsx("p", { children: "Read-only runtime snapshot for support and debugging." })] }) }), _jsx("div", { className: "solid-studio-home-toolbar-right", children: _jsx(SolidButton, { size: "sm", variant: "outline", onClick: function () { return setRefreshTick(function (v) { return v + 1; }); }, children: "Refresh" }) })] }), _jsxs("div", { className: "solid-studio-card", style: { marginBottom: "14px" }, children: [_jsx("div", { className: "solid-studio-card-header", children: _jsx("h3", { className: "solid-studio-card-title", children: "Runtime" }) }), _jsx("div", { className: "solid-studio-card-content", children: _jsxs("div", { style: { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))", gap: "10px" }, children: [_jsxs("div", { children: [_jsx("strong", { children: "Environment:" }), " ", envName] }), _jsxs("div", { children: [_jsx("strong", { children: "Pool Limit:" }), " ", SOLID_ENTITY_API_POOL_LIMIT] }), _jsxs("div", { children: [_jsx("strong", { children: "Active Entity APIs:" }), " ", activeCount] }), _jsxs("div", { children: [_jsx("strong", { children: "Cached Entity APIs:" }), " ", cachedCount] }), _jsxs("div", { children: [_jsx("strong", { children: "Login Redirect:" }), " ", loginRedirect] }), _jsxs("div", { children: [_jsx("strong", { children: "Backend API:" }), " ", backendApi || "(not set)"] }), _jsxs("div", { children: [_jsx("strong", { children: "User:" }), " ", ((_b = localSession === null || localSession === void 0 ? void 0 : localSession.user) === null || _b === void 0 ? void 0 : _b.email) || ((_c = localSession === null || localSession === void 0 ? void 0 : localSession.user) === null || _c === void 0 ? void 0 : _c.name) || "(unknown)"] }), _jsxs("div", { children: [_jsx("strong", { children: "Roles:" }), " ", (((_d = localSession === null || localSession === void 0 ? void 0 : localSession.user) === null || _d === void 0 ? void 0 : _d.roles) || []).map(function (r) { return r.name || r; }).join(", ") || "(none)"] })] }) })] }), _jsxs("div", { className: "solid-studio-card", children: [_jsxs("div", { className: "solid-studio-card-header", children: [_jsx("h3", { className: "solid-studio-card-title", children: "Entity API Pool" }), _jsx("p", { className: "solid-studio-card-description", children: "Each entry represents a lazily created entity API. Active entries have reducer+middleware currently registered." })] }), _jsx("div", { className: "solid-studio-card-content", style: { overflowX: "auto" }, children: _jsxs("table", { style: { width: "100%", borderCollapse: "collapse", fontSize: "13px" }, children: [_jsx("thead", { children: _jsxs("tr", { style: { borderBottom: "1px solid rgba(148, 163, 184, 0.35)" }, children: [_jsx("th", { style: { textAlign: "left", padding: "8px" }, children: "Entity" }), _jsx("th", { style: { textAlign: "left", padding: "8px" }, children: "Reducer Path" }), _jsx("th", { style: { textAlign: "left", padding: "8px" }, children: "Registered" }), _jsx("th", { style: { textAlign: "left", padding: "8px" }, children: "Last Accessed" }), _jsx("th", { style: { textAlign: "left", padding: "8px" }, children: "Active" })] }) }), _jsx("tbody", { children: poolSnapshot.length === 0 ? (_jsx("tr", { children: _jsx("td", { colSpan: 5, style: { padding: "12px", opacity: 0.7 }, children: "No entity APIs have been created in this session yet." }) })) : (poolSnapshot.map(function (entry) { return (_jsxs("tr", { style: { borderBottom: "1px solid rgba(148, 163, 184, 0.2)" }, children: [_jsx("td", { style: { padding: "8px" }, children: entry.entityName }), _jsx("td", { style: { padding: "8px", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace" }, children: entry.reducerPath }), _jsx("td", { style: { padding: "8px" }, children: toDisplayTime(entry.registeredAt) }), _jsx("td", { style: { padding: "8px" }, children: toDisplayTime(entry.lastAccessedAt) }), _jsx("td", { style: { padding: "8px" }, children: entry.active ? "yes" : "no" })] }, entry.reducerPath)); })) })] }) })] })] }) }));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=DiagnosticsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagnosticsPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/DiagnosticsPage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo, useState } from \"react\";\nimport { env } from \"../../../../adapters/env\";\nimport { loadSession } from \"../../../../adapters/auth/storage\";\nimport { hasAnyRole } from \"../../../../helpers/rolesHelper\";\nimport { useSession } from \"../../../../hooks/useSession\";\nimport { getSolidEntityApiPoolSnapshot, SOLID_ENTITY_API_POOL_LIMIT } from \"../../../../redux/store/solidEntityApiPool\";\nimport { SolidButton } from \"../../../../components/shad-cn-ui/SolidButton\";\n\nconst ALLOWED_ENVIRONMENTS = new Set([\n \"dev\",\n \"development\",\n \"staging\",\n \"stage\",\n \"uat\",\n \"test\",\n \"local\",\n]);\n\nfunction toDisplayTime(counter: number) {\n return `#${counter}`;\n}\n\nexport function DiagnosticsPage() {\n const { data: session, status } = useSession();\n const [refreshTick, setRefreshTick] = useState(0);\n\n const envName = (env(\"VITE_SOLIDX_ENV\") || \"unknown\").toLowerCase();\n const diagnosticsEnabled = ALLOWED_ENVIRONMENTS.has(envName);\n const isAdmin = hasAnyRole(session?.user?.roles, [\"Admin\"]);\n\n const poolSnapshot = useMemo(() => {\n refreshTick;\n return getSolidEntityApiPoolSnapshot();\n }, [refreshTick]);\n\n const activeCount = poolSnapshot.filter((entry) => entry.active).length;\n const cachedCount = poolSnapshot.length;\n const loginRedirect = env(\"NEXT_PUBLIC_LOGIN_REDIRECT_URL\") || \"/admin\";\n const backendApi = env(\"NEXT_PUBLIC_BACKEND_API_URL\") || env(\"API_URL\", \"\");\n const localSession = loadSession();\n\n if (status === \"loading\") {\n return (\n <div className=\"solid-studio-home\">\n <div className=\"solid-studio-home-inner solid-studio-home-inner--wider\">\n <div className=\"solid-studio-card\">\n <div className=\"solid-studio-card-content\">Loading diagnostics...</div>\n </div>\n </div>\n </div>\n );\n }\n\n if (!isAdmin) {\n return (\n <div className=\"solid-studio-home\">\n <div className=\"solid-studio-home-inner solid-studio-home-inner--wider\">\n <div className=\"solid-studio-card\">\n <div className=\"solid-studio-card-header\">\n <h3 className=\"solid-studio-card-title\">Diagnostics Access Restricted</h3>\n <p className=\"solid-studio-card-description\">\n You do not have permission to view this diagnostics page.\n </p>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n if (!diagnosticsEnabled) {\n return (\n <div className=\"solid-studio-home\">\n <div className=\"solid-studio-home-inner solid-studio-home-inner--wider\">\n <div className=\"solid-studio-card\">\n <div className=\"solid-studio-card-header\">\n <h3 className=\"solid-studio-card-title\">Diagnostics Disabled</h3>\n <p className=\"solid-studio-card-description\">\n Diagnostics are enabled only in dev/staging-style environments. Current environment: <code>{envName}</code>.\n </p>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"solid-studio-home solid-studio-home--top\">\n <div className=\"solid-studio-home-inner solid-studio-home-inner--wider\">\n <div className=\"solid-studio-home-toolbar\" style={{ marginBottom: \"14px\" }}>\n <div className=\"solid-studio-home-toolbar-left\">\n <div className=\"solid-studio-home-heading\">\n <div className=\"solid-studio-home-badge\">Diagnostics</div>\n <h1>SolidX Runtime Diagnostics</h1>\n <p>Read-only runtime snapshot for support and debugging.</p>\n </div>\n </div>\n <div className=\"solid-studio-home-toolbar-right\">\n <SolidButton size=\"sm\" variant=\"outline\" onClick={() => setRefreshTick((v) => v + 1)}>\n Refresh\n </SolidButton>\n </div>\n </div>\n\n <div className=\"solid-studio-card\" style={{ marginBottom: \"14px\" }}>\n <div className=\"solid-studio-card-header\">\n <h3 className=\"solid-studio-card-title\">Runtime</h3>\n </div>\n <div className=\"solid-studio-card-content\">\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(220px, 1fr))\", gap: \"10px\" }}>\n <div><strong>Environment:</strong> {envName}</div>\n <div><strong>Pool Limit:</strong> {SOLID_ENTITY_API_POOL_LIMIT}</div>\n <div><strong>Active Entity APIs:</strong> {activeCount}</div>\n <div><strong>Cached Entity APIs:</strong> {cachedCount}</div>\n <div><strong>Login Redirect:</strong> {loginRedirect}</div>\n <div><strong>Backend API:</strong> {backendApi || \"(not set)\"}</div>\n <div><strong>User:</strong> {localSession?.user?.email || localSession?.user?.name || \"(unknown)\"}</div>\n <div><strong>Roles:</strong> {(localSession?.user?.roles || []).map((r: any) => r.name || r).join(\", \") || \"(none)\"}</div>\n </div>\n </div>\n </div>\n\n <div className=\"solid-studio-card\">\n <div className=\"solid-studio-card-header\">\n <h3 className=\"solid-studio-card-title\">Entity API Pool</h3>\n <p className=\"solid-studio-card-description\">\n Each entry represents a lazily created entity API. Active entries have reducer+middleware currently registered.\n </p>\n </div>\n <div className=\"solid-studio-card-content\" style={{ overflowX: \"auto\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", fontSize: \"13px\" }}>\n <thead>\n <tr style={{ borderBottom: \"1px solid rgba(148, 163, 184, 0.35)\" }}>\n <th style={{ textAlign: \"left\", padding: \"8px\" }}>Entity</th>\n <th style={{ textAlign: \"left\", padding: \"8px\" }}>Reducer Path</th>\n <th style={{ textAlign: \"left\", padding: \"8px\" }}>Registered</th>\n <th style={{ textAlign: \"left\", padding: \"8px\" }}>Last Accessed</th>\n <th style={{ textAlign: \"left\", padding: \"8px\" }}>Active</th>\n </tr>\n </thead>\n <tbody>\n {poolSnapshot.length === 0 ? (\n <tr>\n <td colSpan={5} style={{ padding: \"12px\", opacity: 0.7 }}>\n No entity APIs have been created in this session yet.\n </td>\n </tr>\n ) : (\n poolSnapshot.map((entry) => (\n <tr key={entry.reducerPath} style={{ borderBottom: \"1px solid rgba(148, 163, 184, 0.2)\" }}>\n <td style={{ padding: \"8px\" }}>{entry.entityName}</td>\n <td style={{ padding: \"8px\", fontFamily: \"ui-monospace, SFMono-Regular, Menlo, monospace\" }}>{entry.reducerPath}</td>\n <td style={{ padding: \"8px\" }}>{toDisplayTime(entry.registeredAt)}</td>\n <td style={{ padding: \"8px\" }}>{toDisplayTime(entry.lastAccessedAt)}</td>\n <td style={{ padding: \"8px\" }}>{entry.active ? \"yes\" : \"no\"}</td>\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { useMemo, useState } from "react";
|
|
2
|
+
import { env } from "../../../../adapters/env";
|
|
3
|
+
import { loadSession } from "../../../../adapters/auth/storage";
|
|
4
|
+
import { hasAnyRole } from "../../../../helpers/rolesHelper";
|
|
5
|
+
import { useSession } from "../../../../hooks/useSession";
|
|
6
|
+
import { getSolidEntityApiPoolSnapshot, SOLID_ENTITY_API_POOL_LIMIT } from "../../../../redux/store/solidEntityApiPool";
|
|
7
|
+
import { SolidButton } from "../../../../components/shad-cn-ui/SolidButton";
|
|
8
|
+
|
|
9
|
+
const ALLOWED_ENVIRONMENTS = new Set([
|
|
10
|
+
"dev",
|
|
11
|
+
"development",
|
|
12
|
+
"staging",
|
|
13
|
+
"stage",
|
|
14
|
+
"uat",
|
|
15
|
+
"test",
|
|
16
|
+
"local",
|
|
17
|
+
]);
|
|
18
|
+
|
|
19
|
+
function toDisplayTime(counter: number) {
|
|
20
|
+
return `#${counter}`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function DiagnosticsPage() {
|
|
24
|
+
const { data: session, status } = useSession();
|
|
25
|
+
const [refreshTick, setRefreshTick] = useState(0);
|
|
26
|
+
|
|
27
|
+
const envName = (env("VITE_SOLIDX_ENV") || "unknown").toLowerCase();
|
|
28
|
+
const diagnosticsEnabled = ALLOWED_ENVIRONMENTS.has(envName);
|
|
29
|
+
const isAdmin = hasAnyRole(session?.user?.roles, ["Admin"]);
|
|
30
|
+
|
|
31
|
+
const poolSnapshot = useMemo(() => {
|
|
32
|
+
refreshTick;
|
|
33
|
+
return getSolidEntityApiPoolSnapshot();
|
|
34
|
+
}, [refreshTick]);
|
|
35
|
+
|
|
36
|
+
const activeCount = poolSnapshot.filter((entry) => entry.active).length;
|
|
37
|
+
const cachedCount = poolSnapshot.length;
|
|
38
|
+
const loginRedirect = env("NEXT_PUBLIC_LOGIN_REDIRECT_URL") || "/admin";
|
|
39
|
+
const backendApi = env("NEXT_PUBLIC_BACKEND_API_URL") || env("API_URL", "");
|
|
40
|
+
const localSession = loadSession();
|
|
41
|
+
|
|
42
|
+
if (status === "loading") {
|
|
43
|
+
return (
|
|
44
|
+
<div className="solid-studio-home">
|
|
45
|
+
<div className="solid-studio-home-inner solid-studio-home-inner--wider">
|
|
46
|
+
<div className="solid-studio-card">
|
|
47
|
+
<div className="solid-studio-card-content">Loading diagnostics...</div>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (!isAdmin) {
|
|
55
|
+
return (
|
|
56
|
+
<div className="solid-studio-home">
|
|
57
|
+
<div className="solid-studio-home-inner solid-studio-home-inner--wider">
|
|
58
|
+
<div className="solid-studio-card">
|
|
59
|
+
<div className="solid-studio-card-header">
|
|
60
|
+
<h3 className="solid-studio-card-title">Diagnostics Access Restricted</h3>
|
|
61
|
+
<p className="solid-studio-card-description">
|
|
62
|
+
You do not have permission to view this diagnostics page.
|
|
63
|
+
</p>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (!diagnosticsEnabled) {
|
|
72
|
+
return (
|
|
73
|
+
<div className="solid-studio-home">
|
|
74
|
+
<div className="solid-studio-home-inner solid-studio-home-inner--wider">
|
|
75
|
+
<div className="solid-studio-card">
|
|
76
|
+
<div className="solid-studio-card-header">
|
|
77
|
+
<h3 className="solid-studio-card-title">Diagnostics Disabled</h3>
|
|
78
|
+
<p className="solid-studio-card-description">
|
|
79
|
+
Diagnostics are enabled only in dev/staging-style environments. Current environment: <code>{envName}</code>.
|
|
80
|
+
</p>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return (
|
|
89
|
+
<div className="solid-studio-home solid-studio-home--top">
|
|
90
|
+
<div className="solid-studio-home-inner solid-studio-home-inner--wider">
|
|
91
|
+
<div className="solid-studio-home-toolbar" style={{ marginBottom: "14px" }}>
|
|
92
|
+
<div className="solid-studio-home-toolbar-left">
|
|
93
|
+
<div className="solid-studio-home-heading">
|
|
94
|
+
<div className="solid-studio-home-badge">Diagnostics</div>
|
|
95
|
+
<h1>SolidX Runtime Diagnostics</h1>
|
|
96
|
+
<p>Read-only runtime snapshot for support and debugging.</p>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
<div className="solid-studio-home-toolbar-right">
|
|
100
|
+
<SolidButton size="sm" variant="outline" onClick={() => setRefreshTick((v) => v + 1)}>
|
|
101
|
+
Refresh
|
|
102
|
+
</SolidButton>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
|
|
106
|
+
<div className="solid-studio-card" style={{ marginBottom: "14px" }}>
|
|
107
|
+
<div className="solid-studio-card-header">
|
|
108
|
+
<h3 className="solid-studio-card-title">Runtime</h3>
|
|
109
|
+
</div>
|
|
110
|
+
<div className="solid-studio-card-content">
|
|
111
|
+
<div style={{ display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))", gap: "10px" }}>
|
|
112
|
+
<div><strong>Environment:</strong> {envName}</div>
|
|
113
|
+
<div><strong>Pool Limit:</strong> {SOLID_ENTITY_API_POOL_LIMIT}</div>
|
|
114
|
+
<div><strong>Active Entity APIs:</strong> {activeCount}</div>
|
|
115
|
+
<div><strong>Cached Entity APIs:</strong> {cachedCount}</div>
|
|
116
|
+
<div><strong>Login Redirect:</strong> {loginRedirect}</div>
|
|
117
|
+
<div><strong>Backend API:</strong> {backendApi || "(not set)"}</div>
|
|
118
|
+
<div><strong>User:</strong> {localSession?.user?.email || localSession?.user?.name || "(unknown)"}</div>
|
|
119
|
+
<div><strong>Roles:</strong> {(localSession?.user?.roles || []).map((r: any) => r.name || r).join(", ") || "(none)"}</div>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
<div className="solid-studio-card">
|
|
125
|
+
<div className="solid-studio-card-header">
|
|
126
|
+
<h3 className="solid-studio-card-title">Entity API Pool</h3>
|
|
127
|
+
<p className="solid-studio-card-description">
|
|
128
|
+
Each entry represents a lazily created entity API. Active entries have reducer+middleware currently registered.
|
|
129
|
+
</p>
|
|
130
|
+
</div>
|
|
131
|
+
<div className="solid-studio-card-content" style={{ overflowX: "auto" }}>
|
|
132
|
+
<table style={{ width: "100%", borderCollapse: "collapse", fontSize: "13px" }}>
|
|
133
|
+
<thead>
|
|
134
|
+
<tr style={{ borderBottom: "1px solid rgba(148, 163, 184, 0.35)" }}>
|
|
135
|
+
<th style={{ textAlign: "left", padding: "8px" }}>Entity</th>
|
|
136
|
+
<th style={{ textAlign: "left", padding: "8px" }}>Reducer Path</th>
|
|
137
|
+
<th style={{ textAlign: "left", padding: "8px" }}>Registered</th>
|
|
138
|
+
<th style={{ textAlign: "left", padding: "8px" }}>Last Accessed</th>
|
|
139
|
+
<th style={{ textAlign: "left", padding: "8px" }}>Active</th>
|
|
140
|
+
</tr>
|
|
141
|
+
</thead>
|
|
142
|
+
<tbody>
|
|
143
|
+
{poolSnapshot.length === 0 ? (
|
|
144
|
+
<tr>
|
|
145
|
+
<td colSpan={5} style={{ padding: "12px", opacity: 0.7 }}>
|
|
146
|
+
No entity APIs have been created in this session yet.
|
|
147
|
+
</td>
|
|
148
|
+
</tr>
|
|
149
|
+
) : (
|
|
150
|
+
poolSnapshot.map((entry) => (
|
|
151
|
+
<tr key={entry.reducerPath} style={{ borderBottom: "1px solid rgba(148, 163, 184, 0.2)" }}>
|
|
152
|
+
<td style={{ padding: "8px" }}>{entry.entityName}</td>
|
|
153
|
+
<td style={{ padding: "8px", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace" }}>{entry.reducerPath}</td>
|
|
154
|
+
<td style={{ padding: "8px" }}>{toDisplayTime(entry.registeredAt)}</td>
|
|
155
|
+
<td style={{ padding: "8px" }}>{toDisplayTime(entry.lastAccessedAt)}</td>
|
|
156
|
+
<td style={{ padding: "8px" }}>{entry.active ? "yes" : "no"}</td>
|
|
157
|
+
</tr>
|
|
158
|
+
))
|
|
159
|
+
)}
|
|
160
|
+
</tbody>
|
|
161
|
+
</table>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
);
|
|
167
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { camelCase } from "
|
|
2
|
+
import { camelCase } from "lodash";
|
|
3
3
|
import SolidFormLayouts from "../../../../components/core/form/SolidFormLayouts";
|
|
4
4
|
import { useParams } from "react-router-dom";
|
|
5
5
|
export function FormPage() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/FormPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"FormPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/FormPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,gBAAgB,MAAM,mDAAmD,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,UAAU,QAAQ;IACtB,IAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAC3C,IAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,IAAM,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3B,IAAM,MAAM,GAAG,eAAQ,UAAU,cAAI,SAAS,cAAI,EAAE,CAAE,CAAC;IAEvD,OAAO,KAAC,gBAAgB,IAAc,MAAM,EAAE,MAAM,IAAtB,MAAM,CAAoB,CAAC;AAC3D,CAAC","sourcesContent":["import { camelCase } from \"lodash\";\nimport SolidFormLayouts from \"../../../../components/core/form/SolidFormLayouts\";\nimport { useParams } from \"react-router-dom\";\n\nexport function FormPage() {\n const params = useParams();\n const moduleName = params.moduleName || \"\";\n const modelName = params.modelName ? camelCase(params.modelName) : \"\";\n const id = params.id || \"\";\n const formId = `page:${moduleName}:${modelName}:${id}`;\n\n return <SolidFormLayouts key={formId} params={params} />;\n}\n"]}
|
|
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
13
|
import { SolidKanbanView } from "../../../../components/core/kanban/SolidKanbanView";
|
|
14
|
-
import { camelCase } from "
|
|
14
|
+
import { camelCase } from "lodash";
|
|
15
15
|
import { useParams } from "react-router-dom";
|
|
16
16
|
export function KanbanPage() {
|
|
17
17
|
var params = useParams();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/KanbanPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"KanbanPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/KanbanPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,UAAU,UAAU;IACxB,IAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAC3C,IAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,KAAC,eAAe,eAAK,MAAM,IAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC;AACvG,CAAC","sourcesContent":["import { SolidKanbanView } from \"../../../../components/core/kanban/SolidKanbanView\";\nimport { camelCase } from \"lodash\";\nimport { useParams } from \"react-router-dom\";\n\nexport function KanbanPage() {\n const params = useParams();\n const moduleName = params.moduleName || \"\";\n const modelName = params.modelName ? camelCase(params.modelName) : \"\";\n return <SolidKanbanView {...params} embeded={false} moduleName={moduleName} modelName={modelName} />;\n}\n"]}
|
|
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
13
|
import { SolidListView } from "../../../../components/core/list/SolidListView";
|
|
14
|
-
import { camelCase } from "
|
|
14
|
+
import { camelCase } from "lodash";
|
|
15
15
|
import { useCallback } from "react";
|
|
16
16
|
import { useParams, useSearchParams } from "react-router-dom";
|
|
17
17
|
import { registerListView, unregisterListView } from "../../../../components/core/list/listViewRegistry";
|