@nocios/crudify-components 2.0.81 → 2.0.88
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 +21 -0
- package/dist/api-jcCTCqPD.d.mts +61 -0
- package/dist/api-jcCTCqPD.d.ts +61 -0
- package/dist/chunk-4I767MRM.mjs +142 -0
- package/dist/chunk-5V5ILPP3.js +1 -0
- package/dist/chunk-BJEDX2HU.js +142 -0
- package/dist/chunk-GZOB4JDB.js +1 -0
- package/dist/chunk-ODKXUEH5.js +1 -0
- package/dist/chunk-U335FNUD.mjs +1 -0
- package/dist/chunk-YRU7AXYV.mjs +1 -0
- package/dist/chunk-Z75DRSTN.mjs +1 -0
- package/dist/{errorTranslation-BEWwDbCH.d.ts → errorTranslation-BdqG-dXD.d.ts} +97 -26
- package/dist/{errorTranslation-DsGZon0M.d.mts → errorTranslation-BxJmBGx0.d.mts} +97 -26
- package/dist/hooks.d.mts +3 -4
- package/dist/hooks.d.ts +3 -4
- package/dist/hooks.js +1 -1
- package/dist/hooks.mjs +1 -1
- package/dist/{index-ZcF6nJt4.d.mts → index-Cx9P3ZCG.d.mts} +96 -27
- package/dist/{index-Dnmttf62.d.ts → index-rHtWMls-.d.ts} +96 -27
- package/dist/index.d.mts +366 -118
- package/dist/index.d.ts +366 -118
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/public-policies.d.mts +7 -0
- package/dist/public-policies.d.ts +7 -0
- package/dist/public-policies.js +1 -0
- package/dist/public-policies.mjs +1 -0
- package/dist/utils.d.mts +71 -3
- package/dist/utils.d.ts +71 -3
- package/dist/utils.js +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +44 -42
- package/.github/workflows/ci.yml +0 -70
- package/.husky/pre-commit +0 -26
- package/.husky/pre-push +0 -30
- package/.nvmrc +0 -1
- package/.prettierignore +0 -18
- package/.prettierrc +0 -9
- package/.scannerwork/.sonar_lock +0 -0
- package/.scannerwork/report-task.txt +0 -6
- package/README_DEPTH.md +0 -1237
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/components/CrudiaAutoGenerate.tsx.html +0 -616
- package/coverage/components/CrudiaFileField/CrudiaFileField.tsx.html +0 -1312
- package/coverage/components/CrudiaFileField/components/DeleteConfirmationDialog.tsx.html +0 -355
- package/coverage/components/CrudiaFileField/components/DropZone.tsx.html +0 -523
- package/coverage/components/CrudiaFileField/components/FileItemRow.tsx.html +0 -835
- package/coverage/components/CrudiaFileField/components/FileThumbnail.tsx.html +0 -1585
- package/coverage/components/CrudiaFileField/components/index.html +0 -176
- package/coverage/components/CrudiaFileField/components/index.ts.html +0 -115
- package/coverage/components/CrudiaFileField/hooks/index.html +0 -146
- package/coverage/components/CrudiaFileField/hooks/index.ts.html +0 -112
- package/coverage/components/CrudiaFileField/hooks/useDeleteConfirmation.ts.html +0 -433
- package/coverage/components/CrudiaFileField/hooks/useDragDrop.ts.html +0 -409
- package/coverage/components/CrudiaFileField/index.html +0 -131
- package/coverage/components/CrudiaFileField/index.ts.html +0 -112
- package/coverage/components/CrudiaFileField/utils/formatters.ts.html +0 -169
- package/coverage/components/CrudiaFileField/utils/icons.tsx.html +0 -253
- package/coverage/components/CrudiaFileField/utils/index.html +0 -146
- package/coverage/components/CrudiaFileField/utils/index.ts.html +0 -103
- package/coverage/components/CrudiaMarkdownField.tsx.html +0 -676
- package/coverage/components/CrudifyInitializer.tsx.html +0 -712
- package/coverage/components/CrudifyLogin/Forms/CheckCodeForm.tsx.html +0 -640
- package/coverage/components/CrudifyLogin/Forms/ForgotPasswordForm.tsx.html +0 -730
- package/coverage/components/CrudifyLogin/Forms/LoginForm.tsx.html +0 -892
- package/coverage/components/CrudifyLogin/Forms/ResetPasswordForm.tsx.html +0 -1219
- package/coverage/components/CrudifyLogin/Forms/components/CodeInput.tsx.html +0 -289
- package/coverage/components/CrudifyLogin/Forms/components/FormAlert.tsx.html +0 -202
- package/coverage/components/CrudifyLogin/Forms/components/PasswordInput.tsx.html +0 -346
- package/coverage/components/CrudifyLogin/Forms/components/index.html +0 -161
- package/coverage/components/CrudifyLogin/Forms/components/index.ts.html +0 -106
- package/coverage/components/CrudifyLogin/Forms/index.html +0 -176
- package/coverage/components/CrudifyLogin/Forms/index.ts.html +0 -145
- package/coverage/components/CrudifyLogin/Forms/utils/errorTranslation.ts.html +0 -268
- package/coverage/components/CrudifyLogin/Forms/utils/index.html +0 -161
- package/coverage/components/CrudifyLogin/Forms/utils/index.ts.html +0 -121
- package/coverage/components/CrudifyLogin/Forms/utils/paramUtils.ts.html +0 -496
- package/coverage/components/CrudifyLogin/Forms/utils/validation.ts.html +0 -307
- package/coverage/components/CrudifyLogin/components/CrudifyInitializer.tsx.html +0 -268
- package/coverage/components/CrudifyLogin/components/index.html +0 -116
- package/coverage/components/CrudifyLogin/context/CrudifyProvider.tsx.html +0 -409
- package/coverage/components/CrudifyLogin/context/I18nProvider.tsx.html +0 -430
- package/coverage/components/CrudifyLogin/context/LoginStateProvider.tsx.html +0 -1261
- package/coverage/components/CrudifyLogin/context/index.html +0 -161
- package/coverage/components/CrudifyLogin/context/index.ts.html +0 -91
- package/coverage/components/CrudifyLogin/hooks/index.html +0 -131
- package/coverage/components/CrudifyLogin/hooks/useCrudifyLogin.ts.html +0 -463
- package/coverage/components/CrudifyLogin/hooks/useTranslationsFromUrl.ts.html +0 -391
- package/coverage/components/CrudifyLogin/index.html +0 -116
- package/coverage/components/CrudifyLogin/index.tsx.html +0 -466
- package/coverage/components/CrudifyLogin/utils/index.html +0 -116
- package/coverage/components/CrudifyLogin/utils/secureStorage.ts.html +0 -859
- package/coverage/components/GlobalNotificationProvider.tsx.html +0 -844
- package/coverage/components/LoginComponent.tsx.html +0 -676
- package/coverage/components/PasswordRequirements/index.html +0 -116
- package/coverage/components/PasswordRequirements/index.tsx.html +0 -232
- package/coverage/components/PublicPolicies/FieldSelector/FieldSelector.tsx.html +0 -1078
- package/coverage/components/PublicPolicies/FieldSelector/index.html +0 -131
- package/coverage/components/PublicPolicies/FieldSelector/index.ts.html +0 -88
- package/coverage/components/PublicPolicies/Policies.tsx.html +0 -625
- package/coverage/components/PublicPolicies/PolicyItem/PolicyItem.tsx.html +0 -886
- package/coverage/components/PublicPolicies/PolicyItem/index.html +0 -131
- package/coverage/components/PublicPolicies/PolicyItem/index.ts.html +0 -88
- package/coverage/components/PublicPolicies/constants.ts.html +0 -106
- package/coverage/components/PublicPolicies/index.html +0 -146
- package/coverage/components/PublicPolicies/index.ts.html +0 -88
- package/coverage/components/Routing/AuthRoute.tsx.html +0 -382
- package/coverage/components/Routing/GuestRoute.tsx.html +0 -352
- package/coverage/components/Routing/ProtectedRoute.tsx.html +0 -316
- package/coverage/components/Routing/index.html +0 -161
- package/coverage/components/Routing/index.ts.html +0 -109
- package/coverage/components/SessionLoadingScreen/index.html +0 -116
- package/coverage/components/SessionLoadingScreen/index.tsx.html +0 -379
- package/coverage/components/SessionTimeIndicator/index.html +0 -116
- package/coverage/components/SessionTimeIndicator/index.tsx.html +0 -523
- package/coverage/components/UserProfile/UserProfileDisplay.tsx.html +0 -931
- package/coverage/components/UserProfile/index.html +0 -131
- package/coverage/components/UserProfile/index.ts.html +0 -88
- package/coverage/components/index.html +0 -191
- package/coverage/components/index.ts.html +0 -178
- package/coverage/core/CrossTabSyncManager.ts.html +0 -853
- package/coverage/core/CrudifyInitializationManager.ts.html +0 -1279
- package/coverage/core/SessionManager.ts.html +0 -3064
- package/coverage/core/index.html +0 -146
- package/coverage/coverage-final.json +0 -117
- package/coverage/favicon.png +0 -0
- package/coverage/hooks/index.html +0 -191
- package/coverage/hooks/index.ts.html +0 -136
- package/coverage/hooks/useAuth.ts.html +0 -529
- package/coverage/hooks/useAutoGenerate.ts.html +0 -571
- package/coverage/hooks/useCrudifyWithNotifications/constants.ts.html +0 -247
- package/coverage/hooks/useCrudifyWithNotifications/hooks/index.html +0 -116
- package/coverage/hooks/useCrudifyWithNotifications/hooks/useCrudOperations.ts.html +0 -820
- package/coverage/hooks/useCrudifyWithNotifications/index.html +0 -146
- package/coverage/hooks/useCrudifyWithNotifications/index.ts.html +0 -118
- package/coverage/hooks/useCrudifyWithNotifications/useCrudifyWithNotifications.ts.html +0 -565
- package/coverage/hooks/useCrudifyWithNotifications/utils/errorMessageResolver.ts.html +0 -847
- package/coverage/hooks/useCrudifyWithNotifications/utils/index.html +0 -146
- package/coverage/hooks/useCrudifyWithNotifications/utils/notificationFilters.ts.html +0 -313
- package/coverage/hooks/useCrudifyWithNotifications/utils/successMessageResolver.ts.html +0 -265
- package/coverage/hooks/useData.ts.html +0 -829
- package/coverage/hooks/useFileUpload/index.html +0 -131
- package/coverage/hooks/useFileUpload/index.ts.html +0 -112
- package/coverage/hooks/useFileUpload/services/index.html +0 -131
- package/coverage/hooks/useFileUpload/services/index.ts.html +0 -106
- package/coverage/hooks/useFileUpload/services/uploadService.ts.html +0 -610
- package/coverage/hooks/useFileUpload/useFileUpload.ts.html +0 -2092
- package/coverage/hooks/useFileUpload/utils/fileUtils.ts.html +0 -271
- package/coverage/hooks/useFileUpload/utils/index.html +0 -161
- package/coverage/hooks/useFileUpload/utils/index.ts.html +0 -109
- package/coverage/hooks/useFileUpload/utils/mimeTypes.ts.html +0 -235
- package/coverage/hooks/useFileUpload/utils/validation.ts.html +0 -403
- package/coverage/hooks/useSession/constants.ts.html +0 -217
- package/coverage/hooks/useSession/hooks/index.html +0 -176
- package/coverage/hooks/useSession/hooks/useAuthEventSubscriber.ts.html +0 -331
- package/coverage/hooks/useSession/hooks/useCrossTabSync.ts.html +0 -535
- package/coverage/hooks/useSession/hooks/useSessionActions.ts.html +0 -664
- package/coverage/hooks/useSession/hooks/useSessionState.ts.html +0 -295
- package/coverage/hooks/useSession/hooks/useTokenRefreshScheduler.ts.html +0 -535
- package/coverage/hooks/useSession/index.html +0 -161
- package/coverage/hooks/useSession/index.ts.html +0 -127
- package/coverage/hooks/useSession/types.ts.html +0 -427
- package/coverage/hooks/useSession/useSession.ts.html +0 -526
- package/coverage/hooks/useSession/utils/index.html +0 -131
- package/coverage/hooks/useSession/utils/initializeSession.ts.html +0 -424
- package/coverage/hooks/useSession/utils/tokenUtils.ts.html +0 -298
- package/coverage/hooks/useUserData.ts.html +0 -1210
- package/coverage/hooks/useUserProfile.ts.html +0 -820
- package/coverage/index.html +0 -656
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/components/CrudiaAutoGenerate.tsx.html +0 -616
- package/coverage/lcov-report/components/CrudiaFileField/CrudiaFileField.tsx.html +0 -1312
- package/coverage/lcov-report/components/CrudiaFileField/components/DeleteConfirmationDialog.tsx.html +0 -355
- package/coverage/lcov-report/components/CrudiaFileField/components/DropZone.tsx.html +0 -523
- package/coverage/lcov-report/components/CrudiaFileField/components/FileItemRow.tsx.html +0 -835
- package/coverage/lcov-report/components/CrudiaFileField/components/FileThumbnail.tsx.html +0 -1585
- package/coverage/lcov-report/components/CrudiaFileField/components/index.html +0 -176
- package/coverage/lcov-report/components/CrudiaFileField/components/index.ts.html +0 -115
- package/coverage/lcov-report/components/CrudiaFileField/hooks/index.html +0 -146
- package/coverage/lcov-report/components/CrudiaFileField/hooks/index.ts.html +0 -112
- package/coverage/lcov-report/components/CrudiaFileField/hooks/useDeleteConfirmation.ts.html +0 -433
- package/coverage/lcov-report/components/CrudiaFileField/hooks/useDragDrop.ts.html +0 -409
- package/coverage/lcov-report/components/CrudiaFileField/index.html +0 -131
- package/coverage/lcov-report/components/CrudiaFileField/index.ts.html +0 -112
- package/coverage/lcov-report/components/CrudiaFileField/utils/formatters.ts.html +0 -169
- package/coverage/lcov-report/components/CrudiaFileField/utils/icons.tsx.html +0 -253
- package/coverage/lcov-report/components/CrudiaFileField/utils/index.html +0 -146
- package/coverage/lcov-report/components/CrudiaFileField/utils/index.ts.html +0 -103
- package/coverage/lcov-report/components/CrudiaMarkdownField.tsx.html +0 -676
- package/coverage/lcov-report/components/CrudifyInitializer.tsx.html +0 -712
- package/coverage/lcov-report/components/CrudifyLogin/Forms/CheckCodeForm.tsx.html +0 -640
- package/coverage/lcov-report/components/CrudifyLogin/Forms/ForgotPasswordForm.tsx.html +0 -730
- package/coverage/lcov-report/components/CrudifyLogin/Forms/LoginForm.tsx.html +0 -892
- package/coverage/lcov-report/components/CrudifyLogin/Forms/ResetPasswordForm.tsx.html +0 -1219
- package/coverage/lcov-report/components/CrudifyLogin/Forms/components/CodeInput.tsx.html +0 -289
- package/coverage/lcov-report/components/CrudifyLogin/Forms/components/FormAlert.tsx.html +0 -202
- package/coverage/lcov-report/components/CrudifyLogin/Forms/components/PasswordInput.tsx.html +0 -346
- package/coverage/lcov-report/components/CrudifyLogin/Forms/components/index.html +0 -161
- package/coverage/lcov-report/components/CrudifyLogin/Forms/components/index.ts.html +0 -106
- package/coverage/lcov-report/components/CrudifyLogin/Forms/index.html +0 -176
- package/coverage/lcov-report/components/CrudifyLogin/Forms/index.ts.html +0 -145
- package/coverage/lcov-report/components/CrudifyLogin/Forms/utils/errorTranslation.ts.html +0 -268
- package/coverage/lcov-report/components/CrudifyLogin/Forms/utils/index.html +0 -161
- package/coverage/lcov-report/components/CrudifyLogin/Forms/utils/index.ts.html +0 -121
- package/coverage/lcov-report/components/CrudifyLogin/Forms/utils/paramUtils.ts.html +0 -496
- package/coverage/lcov-report/components/CrudifyLogin/Forms/utils/validation.ts.html +0 -307
- package/coverage/lcov-report/components/CrudifyLogin/components/CrudifyInitializer.tsx.html +0 -268
- package/coverage/lcov-report/components/CrudifyLogin/components/index.html +0 -116
- package/coverage/lcov-report/components/CrudifyLogin/context/CrudifyProvider.tsx.html +0 -409
- package/coverage/lcov-report/components/CrudifyLogin/context/I18nProvider.tsx.html +0 -430
- package/coverage/lcov-report/components/CrudifyLogin/context/LoginStateProvider.tsx.html +0 -1261
- package/coverage/lcov-report/components/CrudifyLogin/context/index.html +0 -161
- package/coverage/lcov-report/components/CrudifyLogin/context/index.ts.html +0 -91
- package/coverage/lcov-report/components/CrudifyLogin/hooks/index.html +0 -131
- package/coverage/lcov-report/components/CrudifyLogin/hooks/useCrudifyLogin.ts.html +0 -463
- package/coverage/lcov-report/components/CrudifyLogin/hooks/useTranslationsFromUrl.ts.html +0 -391
- package/coverage/lcov-report/components/CrudifyLogin/index.html +0 -116
- package/coverage/lcov-report/components/CrudifyLogin/index.tsx.html +0 -466
- package/coverage/lcov-report/components/CrudifyLogin/utils/index.html +0 -116
- package/coverage/lcov-report/components/CrudifyLogin/utils/secureStorage.ts.html +0 -859
- package/coverage/lcov-report/components/GlobalNotificationProvider.tsx.html +0 -844
- package/coverage/lcov-report/components/LoginComponent.tsx.html +0 -676
- package/coverage/lcov-report/components/PasswordRequirements/index.html +0 -116
- package/coverage/lcov-report/components/PasswordRequirements/index.tsx.html +0 -232
- package/coverage/lcov-report/components/PublicPolicies/FieldSelector/FieldSelector.tsx.html +0 -1078
- package/coverage/lcov-report/components/PublicPolicies/FieldSelector/index.html +0 -131
- package/coverage/lcov-report/components/PublicPolicies/FieldSelector/index.ts.html +0 -88
- package/coverage/lcov-report/components/PublicPolicies/Policies.tsx.html +0 -625
- package/coverage/lcov-report/components/PublicPolicies/PolicyItem/PolicyItem.tsx.html +0 -886
- package/coverage/lcov-report/components/PublicPolicies/PolicyItem/index.html +0 -131
- package/coverage/lcov-report/components/PublicPolicies/PolicyItem/index.ts.html +0 -88
- package/coverage/lcov-report/components/PublicPolicies/constants.ts.html +0 -106
- package/coverage/lcov-report/components/PublicPolicies/index.html +0 -146
- package/coverage/lcov-report/components/PublicPolicies/index.ts.html +0 -88
- package/coverage/lcov-report/components/Routing/AuthRoute.tsx.html +0 -382
- package/coverage/lcov-report/components/Routing/GuestRoute.tsx.html +0 -352
- package/coverage/lcov-report/components/Routing/ProtectedRoute.tsx.html +0 -316
- package/coverage/lcov-report/components/Routing/index.html +0 -161
- package/coverage/lcov-report/components/Routing/index.ts.html +0 -109
- package/coverage/lcov-report/components/SessionLoadingScreen/index.html +0 -116
- package/coverage/lcov-report/components/SessionLoadingScreen/index.tsx.html +0 -379
- package/coverage/lcov-report/components/SessionTimeIndicator/index.html +0 -116
- package/coverage/lcov-report/components/SessionTimeIndicator/index.tsx.html +0 -523
- package/coverage/lcov-report/components/UserProfile/UserProfileDisplay.tsx.html +0 -931
- package/coverage/lcov-report/components/UserProfile/index.html +0 -131
- package/coverage/lcov-report/components/UserProfile/index.ts.html +0 -88
- package/coverage/lcov-report/components/index.html +0 -191
- package/coverage/lcov-report/components/index.ts.html +0 -178
- package/coverage/lcov-report/core/CrossTabSyncManager.ts.html +0 -853
- package/coverage/lcov-report/core/CrudifyInitializationManager.ts.html +0 -1279
- package/coverage/lcov-report/core/SessionManager.ts.html +0 -3064
- package/coverage/lcov-report/core/index.html +0 -146
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/hooks/index.html +0 -191
- package/coverage/lcov-report/hooks/index.ts.html +0 -136
- package/coverage/lcov-report/hooks/useAuth.ts.html +0 -529
- package/coverage/lcov-report/hooks/useAutoGenerate.ts.html +0 -571
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/constants.ts.html +0 -247
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/hooks/index.html +0 -116
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/hooks/useCrudOperations.ts.html +0 -820
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/index.html +0 -146
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/index.ts.html +0 -118
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/useCrudifyWithNotifications.ts.html +0 -565
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/utils/errorMessageResolver.ts.html +0 -847
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/utils/index.html +0 -146
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/utils/notificationFilters.ts.html +0 -313
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/utils/successMessageResolver.ts.html +0 -265
- package/coverage/lcov-report/hooks/useData.ts.html +0 -829
- package/coverage/lcov-report/hooks/useFileUpload/index.html +0 -131
- package/coverage/lcov-report/hooks/useFileUpload/index.ts.html +0 -112
- package/coverage/lcov-report/hooks/useFileUpload/services/index.html +0 -131
- package/coverage/lcov-report/hooks/useFileUpload/services/index.ts.html +0 -106
- package/coverage/lcov-report/hooks/useFileUpload/services/uploadService.ts.html +0 -610
- package/coverage/lcov-report/hooks/useFileUpload/useFileUpload.ts.html +0 -2092
- package/coverage/lcov-report/hooks/useFileUpload/utils/fileUtils.ts.html +0 -271
- package/coverage/lcov-report/hooks/useFileUpload/utils/index.html +0 -161
- package/coverage/lcov-report/hooks/useFileUpload/utils/index.ts.html +0 -109
- package/coverage/lcov-report/hooks/useFileUpload/utils/mimeTypes.ts.html +0 -235
- package/coverage/lcov-report/hooks/useFileUpload/utils/validation.ts.html +0 -403
- package/coverage/lcov-report/hooks/useSession/constants.ts.html +0 -217
- package/coverage/lcov-report/hooks/useSession/hooks/index.html +0 -176
- package/coverage/lcov-report/hooks/useSession/hooks/useAuthEventSubscriber.ts.html +0 -331
- package/coverage/lcov-report/hooks/useSession/hooks/useCrossTabSync.ts.html +0 -535
- package/coverage/lcov-report/hooks/useSession/hooks/useSessionActions.ts.html +0 -664
- package/coverage/lcov-report/hooks/useSession/hooks/useSessionState.ts.html +0 -295
- package/coverage/lcov-report/hooks/useSession/hooks/useTokenRefreshScheduler.ts.html +0 -535
- package/coverage/lcov-report/hooks/useSession/index.html +0 -161
- package/coverage/lcov-report/hooks/useSession/index.ts.html +0 -127
- package/coverage/lcov-report/hooks/useSession/types.ts.html +0 -427
- package/coverage/lcov-report/hooks/useSession/useSession.ts.html +0 -526
- package/coverage/lcov-report/hooks/useSession/utils/index.html +0 -131
- package/coverage/lcov-report/hooks/useSession/utils/initializeSession.ts.html +0 -424
- package/coverage/lcov-report/hooks/useSession/utils/tokenUtils.ts.html +0 -298
- package/coverage/lcov-report/hooks/useUserData.ts.html +0 -1210
- package/coverage/lcov-report/hooks/useUserProfile.ts.html +0 -820
- package/coverage/lcov-report/index.html +0 -656
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/providers/CrudifyThemeProvider.tsx.html +0 -316
- package/coverage/lcov-report/providers/SessionProvider.tsx.html +0 -1120
- package/coverage/lcov-report/providers/TranslationsProvider.tsx.html +0 -1756
- package/coverage/lcov-report/providers/index.html +0 -146
- package/coverage/lcov-report/services/credentialsEventBus.ts.html +0 -319
- package/coverage/lcov-report/services/crudifyAdminWrapper.ts.html +0 -754
- package/coverage/lcov-report/services/index.html +0 -146
- package/coverage/lcov-report/services/translationService.ts.html +0 -1558
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov-report/translations/critical.ts.html +0 -1216
- package/coverage/lcov-report/translations/index.html +0 -116
- package/coverage/lcov-report/types/index.html +0 -116
- package/coverage/lcov-report/types/password.ts.html +0 -178
- package/coverage/lcov-report/utils/authErrorDetector.ts.html +0 -793
- package/coverage/lcov-report/utils/authEventBus.ts.html +0 -454
- package/coverage/lcov-report/utils/configResolver.ts.html +0 -460
- package/coverage/lcov-report/utils/cookieSync.ts.html +0 -595
- package/coverage/lcov-report/utils/errorHandler.ts.html +0 -1480
- package/coverage/lcov-report/utils/errorTranslation.ts.html +0 -868
- package/coverage/lcov-report/utils/index.html +0 -341
- package/coverage/lcov-report/utils/index.ts.html +0 -193
- package/coverage/lcov-report/utils/jwtUtils.ts.html +0 -325
- package/coverage/lcov-report/utils/logger.ts.html +0 -952
- package/coverage/lcov-report/utils/navigationTracker.ts.html +0 -562
- package/coverage/lcov-report/utils/passwordValidation.ts.html +0 -259
- package/coverage/lcov-report/utils/preAuthCheck.ts.html +0 -442
- package/coverage/lcov-report/utils/redirectSecurity.ts.html +0 -733
- package/coverage/lcov-report/utils/tenantConfig.ts.html +0 -712
- package/coverage/lcov-report/utils/tokenStorage.ts.html +0 -1825
- package/coverage/lcov-report/utils/webCrypto.ts.html +0 -490
- package/coverage/lcov.info +0 -23367
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/providers/CrudifyThemeProvider.tsx.html +0 -316
- package/coverage/providers/SessionProvider.tsx.html +0 -1120
- package/coverage/providers/TranslationsProvider.tsx.html +0 -1756
- package/coverage/providers/index.html +0 -146
- package/coverage/services/credentialsEventBus.ts.html +0 -319
- package/coverage/services/crudifyAdminWrapper.ts.html +0 -754
- package/coverage/services/index.html +0 -146
- package/coverage/services/translationService.ts.html +0 -1558
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/coverage/translations/critical.ts.html +0 -1216
- package/coverage/translations/index.html +0 -116
- package/coverage/types/index.html +0 -116
- package/coverage/types/password.ts.html +0 -178
- package/coverage/utils/authErrorDetector.ts.html +0 -793
- package/coverage/utils/authEventBus.ts.html +0 -454
- package/coverage/utils/configResolver.ts.html +0 -460
- package/coverage/utils/cookieSync.ts.html +0 -595
- package/coverage/utils/errorHandler.ts.html +0 -1480
- package/coverage/utils/errorTranslation.ts.html +0 -868
- package/coverage/utils/index.html +0 -341
- package/coverage/utils/index.ts.html +0 -193
- package/coverage/utils/jwtUtils.ts.html +0 -325
- package/coverage/utils/logger.ts.html +0 -952
- package/coverage/utils/navigationTracker.ts.html +0 -562
- package/coverage/utils/passwordValidation.ts.html +0 -259
- package/coverage/utils/preAuthCheck.ts.html +0 -442
- package/coverage/utils/redirectSecurity.ts.html +0 -733
- package/coverage/utils/tenantConfig.ts.html +0 -712
- package/coverage/utils/tokenStorage.ts.html +0 -1825
- package/coverage/utils/webCrypto.ts.html +0 -490
- package/dist/CrudiaMarkdownField-DM6NR8zw.d.mts +0 -343
- package/dist/CrudiaMarkdownField-UJaiSq9_.d.ts +0 -343
- package/dist/GlobalNotificationProvider-Cx540WKg.d.mts +0 -96
- package/dist/GlobalNotificationProvider-Cx540WKg.d.ts +0 -96
- package/dist/chunk-2DXLCBOT.mjs +0 -1
- package/dist/chunk-DYRZIARH.js +0 -1
- package/dist/chunk-GCSJXEGT.mjs +0 -1
- package/dist/chunk-GJUZD5ZN.js +0 -1
- package/dist/chunk-K47I475N.js +0 -1
- package/dist/chunk-OCYZGEM5.mjs +0 -1
- package/dist/chunk-PI7HPRDB.js +0 -1
- package/dist/chunk-QVEUGJBY.mjs +0 -1
- package/dist/chunk-UROR7G7N.mjs +0 -1
- package/dist/chunk-XFT47DEL.js +0 -1
- package/dist/components.d.mts +0 -24
- package/dist/components.d.ts +0 -24
- package/dist/components.js +0 -1
- package/dist/components.mjs +0 -1
- package/dist/tenantConfig-DxpfrAof.d.mts +0 -318
- package/dist/tenantConfig-DxpfrAof.d.ts +0 -318
- package/eslint.config.mjs +0 -140
- package/scripts/bump-version.cjs +0 -23
- package/sonar-project.properties +0 -23
- package/tests/helpers/mockFactories.ts +0 -218
- package/tests/helpers/testUtils.tsx +0 -154
- package/tests/hooks/useSession/testUtils.tsx +0 -212
- package/tests/setup.ts +0 -139
- package/tests/vitest.d.ts +0 -1
- package/vitest.config.ts +0 -40
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } async function _asyncOptionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = await fn(value); } else if (op === 'call' || op === 'optionalCall') { value = await fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkK47I475Njs = require('./chunk-K47I475N.js');var _chunkGJUZD5ZNjs = require('./chunk-GJUZD5ZN.js');var _chunkPI7HPRDBjs = require('./chunk-PI7HPRDB.js');var _chunkXFT47DELjs = require('./chunk-XFT47DEL.js');var _chunkDYRZIARHjs = require('./chunk-DYRZIARH.js');var _crudifysdk = require('@nocios/crudify-sdk'); _createStarExport(_crudifysdk);var _react = require('react');var _material = require('@mui/material');var _jsxruntime = require('react/jsx-runtime');var sr=(e={})=>{try{let r=_chunkDYRZIARHjs.b.call(void 0, );if(r.configSource!=="none"&&r.theme)return{...e,...r.theme}}catch(r){_chunkDYRZIARHjs.a.warn("Error reading theme from config",r instanceof Error?{errorMessage:r.message}:{message:String(r)})}return e};function ar({children:e,defaultTheme:r={},disableCssBaseline:t=!1}){let o=_react.useMemo.call(void 0, ()=>{let a=sr(r);return _material.createTheme.call(void 0, a)},[r]);return _jsxruntime.jsxs.call(void 0, _material.ThemeProvider,{theme:o,children:[!t&&_jsxruntime.jsx.call(void 0, _material.CssBaseline,{}),e]})}var _reactrouterdom = require('react-router-dom');var lr={border:"5px solid rgba(0, 0, 0, 0.1)",borderTopColor:"#3B82F6",borderRadius:"50%",width:"50px",height:"50px",animation:"spin 1s linear infinite"},cr=()=>_jsxruntime.jsx.call(void 0, "style",{children:`
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } async function _asyncOptionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = await fn(value); } else if (op === 'call' || op === 'optionalCall') { value = await fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;var _chunkBJEDX2HUjs = require('./chunk-BJEDX2HU.js');var _chunkODKXUEH5js = require('./chunk-ODKXUEH5.js');var _chunkGZOB4JDBjs = require('./chunk-GZOB4JDB.js');var _chunk5V5ILPP3js = require('./chunk-5V5ILPP3.js');var _material = require('@mui/material');var _react = require('react'); var _react2 = _interopRequireDefault(_react);var Yo=(e,r)=>{let o=_react.useMemo.call(void 0, ()=>r&&Object.keys(r).length>0,[r]),t=!o&&!!e,[i,n]=_react.useState.call(void 0, {}),[a,s]=_react.useState.call(void 0, {loading:!1,error:null}),l=_react.useRef.call(void 0, null);return _react.useEffect.call(void 0, ()=>{if(!t||!e||l.current===e)return;l.current=e;let m=!1;return s({loading:!0,error:null}),fetch(e).then(c=>{if(!c.ok)throw new Error(`Failed to load translations: ${c.status}`);return c.json()}).then(c=>{m||(n(c),s({loading:!1,error:null}))}).catch(c=>{m||(_chunkGZOB4JDBjs.j.error("[I18nProvider] Failed to load translations from URL",c instanceof Error?c:{message:String(c),url:e}),s({loading:!1,error:c instanceof Error?c.message:String(c)}),n({}))}),()=>{m=!0}},[t,e]),o?{translations:_nullishCoalesce(r, () => ({})),loading:!1,error:null}:{translations:i,loading:a.loading,error:a.error}};var ce={es:{"base.actions.create":"Crear","base.actions.delete":"Eliminar","base.actions.read":"Ver","base.actions.refresh":"Refrescar","base.actions.update":"Editar","base.actions.logout":"Cerrar sesi\xF3n","base.btn.back":"Volver","base.btn.cancel":"Cancelar","base.btn.hidePassword":"Ocultar contrase\xF1a","base.btn.showPassword":"Mostrar contrase\xF1a","base.errors.errorUnknown":"Ocurri\xF3 un error desconocido.","base.fields.actions":"Acciones","base.fields.confirmPassword":"Confirmar contrase\xF1a","base.fields.createdAt":"Creado el","base.fields._id":"ID","base.fields.email":"Correo electr\xF3nico","base.fields.lastName":"Apellido","base.fields.name":"Nombre","base.fields.password":"Contrase\xF1a","base.fields.profile":"Perfil","base.fields.updatedAt":"Actualizado el","base.file.allowedTypes":"Tipos permitidos: {{types}}","base.file.clickToDownload":"Clic para descargar","base.file.clickToPreview":"Clic para ver imagen","base.file.confirmDelete.cancel":"Cancelar","base.file.confirmDelete.confirm":"Eliminar","base.file.confirmDelete.message":"\xBFEst\xE1s seguro de que deseas eliminar este archivo? Esta acci\xF3n no se puede deshacer.","base.file.confirmDelete.title":"Eliminar archivo","base.file.delete":"Eliminar","base.file.deleting":"Eliminando...","base.file.dragOrClick":"Arrastra archivos aqu\xED o haz clic para seleccionar","base.file.dropHere":"Suelta el archivo aqu\xED","base.file.maxFiles":"M\xE1ximo {{count}} archivos","base.file.maxSize":"M\xE1ximo {{size}} por archivo","base.file.noPreview":"Sin vista previa","base.file.pendingDeletion":"Pendiente de eliminaci\xF3n","base.file.privateFile":"Archivo privado","base.file.restore":"Restaurar","base.file.uploading":"Subiendo archivos...","base.file.validation.filesWithErrors":"Algunos archivos tienen errores","base.file.validation.maxFilesExceeded":"M\xE1ximo {{count}} archivos permitidos","base.file.validation.minFilesRequired":"Se requiere al menos un archivo","base.file.validation.minFilesRequiredPlural":"Se requieren al menos {{count}} archivos","base.lastUpdated":"\xDAltima actualizaci\xF3n a las {{formattedLastUpdated}}","base.loading.configInitial":"Cargando configuraci\xF3n inicial...","base.loading.pleaseWait":"Cargando, por favor espera...","base.loading.starting":"Iniciando aplicaci\xF3n...","base.loading.themeSetup":"Generando tema...","base.loading.validatingSession":"Validando sesi\xF3n...","base.titles.create":"Crear {{moduleName}}","base.titles.read":"Ver {{moduleName}}","base.titles.update":"Editar {{moduleName}}","base.success.transaction":"La operaci\xF3n se ha completado con \xE9xito.","base.loading.executing":"Ejecutando operaci\xF3n...","checkCode.codeLabel":"C\xF3digo de Verificaci\xF3n","checkCode.codePlaceholder":"Ingresa el c\xF3digo de 6 d\xEDgitos","checkCode.codeRequired":"El c\xF3digo es obligatorio","checkCode.emailLabel":"Correo Electr\xF3nico","checkCode.emailPlaceholder":"Ingresa tu correo electr\xF3nico","checkCode.emailRequired":"El correo electr\xF3nico es obligatorio","checkCode.instructions":"Ingresa el c\xF3digo de 6 d\xEDgitos que enviamos a tu correo electr\xF3nico.","checkCode.invalidEmail":"Ingresa un correo electr\xF3nico v\xE1lido","checkCode.resendCodeLink":"Reenviar c\xF3digo","checkCode.title":"Verificar C\xF3digo","checkCode.verifyButton":"Verificar C\xF3digo","error.app.config":"Error de Configuraci\xF3n: {{message}}","error.app.initialization":"Error durante la inicializaci\xF3n final de la aplicaci\xF3n.","error.transaction":"Error en la operaci\xF3n","errors.DUPLICATE":"El campo <b>{{field}}</b> debe ser \xFAnico.","errors.FOREIGN_KEY_NOT_FOUND":"El campo <b>{{field}}</b> debe referenciar un \xEDtem existente.","errors.INVALID_EMAIL":"El campo <b>{{field}}</b> debe ser un correo electr\xF3nico v\xE1lido.","errors.INVALID_OBJECT_ID":"El campo <b>{{field}}</b> debe ser un valor v\xE1lido.","errors.IN_USE":"El \xEDtem est\xE1 en uso y no puede ser eliminado.","errors.MAX_LENGTH":"El campo <b>{{field}}</b> no debe exceder los <b>{{length}}</b> caracteres.","errors.MIN_LENGTH":"El campo <b>{{field}}</b> debe tener al menos <b>{{length}}</b> caracteres.","errors.MUST_NOT_BE_EMAIL":"El campo <b>{{field}}</b> no debe ser un correo electr\xF3nico.","errors.NO_PERMISSION":"No tienes permiso para realizar esta acci\xF3n.","errors.NO_SPACES":"El campo <b>{{field}}</b> no debe contener espacios.","errors.ONE_OR_MORE_OPERATIONS_FAILED":"Error en la operaci\xF3n","errors.REQUIRED":"El campo <b>{{field}}</b> es obligatorio.","errors.TOKEN_HAS_EXPIRED":"La sesi\xF3n ha expirado. Por favor, inicia sesi\xF3n nuevamente.","errors.TOO_MANY_REQUESTS":"L\xEDmite de solicitudes alcanzado. Por favor intenta m\xE1s tarde.","errors.UNAUTHORIZED":"No est\xE1s autorizado para realizar esta acci\xF3n.","errors.all_password_fields_required":"Todos los campos de contrase\xF1a son obligatorios","errors.auth.INVALID_API_KEY":"Clave de API inv\xE1lida","errors.auth.INVALID_CREDENTIALS":"Usuario y/o contrase\xF1a incorrectos","errors.auth.NO_PERMISSION":"No tienes permisos suficientes","errors.auth.SESSION_EXPIRED":"Tu sesi\xF3n ha expirado. Por favor, inicia sesi\xF3n nuevamente.","errors.auth.TOO_MANY_REQUESTS":"Demasiados intentos. Por favor espera 15 minutos e intenta nuevamente","errors.auth.UNAUTHORIZED":"No tienes permisos para realizar esta acci\xF3n","errors.auth.USER_NOT_ACTIVE":"Usuario no activo","errors.auth.USER_NOT_FOUND":"Usuario no encontrado","errors.data.BAD_REQUEST":"Solicitud inv\xE1lida","errors.data.FIELD_ERROR":"Error en los datos ingresados","errors.data.IN_USE":"El elemento est\xE1 en uso y no puede ser eliminado","errors.data.ITEM_NOT_FOUND":"El elemento solicitado no fue encontrado","errors.data.NOT_FOUND":"No se encontr\xF3 lo solicitado","errors.internal_error_changing_password":"Error interno al cambiar la contrase\xF1a. Intenta nuevamente","errors.password_min_length":"La contrase\xF1a debe tener al menos 8 caracteres","errors.password_mismatch":"Las contrase\xF1as no coinciden","errors.password_must_be_different":"La nueva contrase\xF1a debe ser diferente a la actual","errors.system.DATABASE_CONNECTION_ERROR":"Error de conexi\xF3n. Verifica tu conexi\xF3n a internet.","errors.system.INTERNAL_SERVER_ERROR":"Error interno del servidor. Intenta nuevamente.","errors.system.INVALID_CONFIGURATION":"Error de configuraci\xF3n del sistema","errors.system.TOO_MANY_REQUESTS":"Demasiadas solicitudes. Por favor espera un momento e intenta nuevamente","errors.system.UNKNOWN_OPERATION":"Operaci\xF3n no reconocida","errors.users_module_not_configured":"M\xF3dulo de usuarios no configurado","footer.copyright":"Nocios S.R.L. Todos los derechos reservados.","footer.version":"Versi\xF3n","forgotPassword.checkEmailInstructions":"Revisa tu bandeja de entrada para el c\xF3digo de verificaci\xF3n","forgotPassword.codeAlreadyExistsMessage":"Ya se envi\xF3 un c\xF3digo y a\xFAn es v\xE1lido","forgotPassword.emailLabel":"Correo Electr\xF3nico","forgotPassword.emailPlaceholder":"Ingresa tu correo electr\xF3nico","forgotPassword.emailRequired":"El correo electr\xF3nico es obligatorio","forgotPassword.emailSentMessage":"C\xF3digo enviado exitosamente","forgotPassword.enterCodeLink":"Ingresar C\xF3digo","forgotPassword.instructions":"Ingresa tu correo electr\xF3nico y te enviaremos un c\xF3digo para restablecer tu contrase\xF1a.","forgotPassword.invalidEmail":"Ingresa un correo electr\xF3nico v\xE1lido","forgotPassword.sendCodeButton":"Enviar C\xF3digo","forgotPassword.title":"Recuperar Contrase\xF1a","login.alreadyHaveCodeLink":"\xBFYa tienes un c\xF3digo?","login.forgotPasswordLink":"\xBFOlvidaste tu contrase\xF1a?","login.initializationError":"Error de inicializaci\xF3n","login.initializing":"Inicializando...","login.loginButton":"Iniciar sesi\xF3n","login.logoAlt":"Logotipo","login.noAccountPrompt":"\xBFNo tienes una cuenta?","login.notInitialized":"Sistema no inicializado","login.passwordLabel":"Contrase\xF1a","login.passwordPlaceholder":"Ingresa tu contrase\xF1a","login.passwordRequired":"Contrase\xF1a es obligatoria","login.signUpLink":"Reg\xEDstrate","login.usernameOrEmailLabel":"Usuario o correo electr\xF3nico","login.usernameOrEmailPlaceholder":"Ingresa tu correo electr\xF3nico","login.usernameRequired":"El usuario es requerido","passwordRequirements.lowercase":"Una letra min\xFAscula","passwordRequirements.minLength":"M\xEDnimo 8 caracteres","passwordRequirements.number":"Un n\xFAmero","passwordRequirements.special":"Un car\xE1cter especial (!@#$%...)","passwordRequirements.uppercase":"Una letra may\xFAscula","profiles.actions.assignProfiles":"Asignar perfiles","profiles.moduleName":"Perfiles","profiles.moduleSingular":"Perfil","publicPolicies.fields.conditions.customEdit":"Edici\xF3n personalizada","resetPassword.codeExpiredOrInvalid":"El c\xF3digo ha expirado o es inv\xE1lido","resetPassword.confirmPasswordLabel":"Confirmar Contrase\xF1a","resetPassword.confirmPasswordPlaceholder":"Confirma tu nueva contrase\xF1a","resetPassword.confirmPasswordRequired":"Confirma tu contrase\xF1a","resetPassword.goToLoginButton":"Ir al Login","resetPassword.instructions":"Ingresa tu nueva contrase\xF1a.","resetPassword.invalidCode":"El c\xF3digo de verificaci\xF3n es inv\xE1lido. Por favor, verifica el enlace o solicita uno nuevo.","resetPassword.missingParameters":"Faltan par\xE1metros obligatorios","resetPassword.newPasswordLabel":"Nueva Contrase\xF1a","resetPassword.newPasswordPlaceholder":"Ingresa tu nueva contrase\xF1a","resetPassword.newPasswordRequired":"La nueva contrase\xF1a es obligatoria","resetPassword.passwordRequirementsNotMet":"La contrase\xF1a no cumple con todos los requisitos","resetPassword.passwordTooShort":"La contrase\xF1a debe tener al menos 8 caracteres","resetPassword.passwordsDoNotMatch":"Las contrase\xF1as no coinciden","resetPassword.requestNewCodeButton":"Solicitar Nuevo C\xF3digo","resetPassword.resetPasswordButton":"Restablecer Contrase\xF1a","resetPassword.successInstructions":"Ahora puedes iniciar sesi\xF3n con tu nueva contrase\xF1a","resetPassword.successMessage":"Contrase\xF1a restablecida exitosamente","resetPassword.title":"Nueva Contrase\xF1a","resetPassword.validatingCode":"Validando c\xF3digo...","translations.fields.lang":"Idioma","translations.moduleName":"Traducciones","translations.moduleSingular":"Traducci\xF3n","users.fields.currentPassword":"Contrase\xF1a actual","users.fields.newPassword":"Nueva Contrase\xF1a","users.fields.repeatNewPassword":"Repetir Nueva Contrase\xF1a","users.moduleName":"Usuarios","users.moduleSingular":"Usuario"},en:{"base.actions.create":"New","base.actions.delete":"Delete","base.actions.read":"View","base.actions.refresh":"Refresh","base.actions.update":"Edit","base.actions.logout":"Logout","base.btn.back":"Back","base.btn.cancel":"Cancel","base.btn.hidePassword":"Hide password","base.btn.showPassword":"Show password","base.errors.errorUnknown":"An unknown error occurred.","base.fields.actions":"Actions","base.fields.confirmPassword":"Confirm password","base.fields.createdAt":"Created at","base.fields._id":"ID","base.fields.email":"Email","base.fields.lastName":"Last name","base.fields.name":"Name","base.fields.password":"Password","base.fields.profile":"Profile","base.fields.updatedAt":"Updated at","base.file.allowedTypes":"Allowed types: {{types}}","base.file.clickToDownload":"Click to download","base.file.clickToPreview":"Click to preview image","base.file.confirmDelete.cancel":"Cancel","base.file.confirmDelete.confirm":"Delete","base.file.confirmDelete.message":"Are you sure you want to delete this file? This action cannot be undone.","base.file.confirmDelete.title":"Delete file","base.file.delete":"Delete","base.file.deleting":"Deleting...","base.file.dragOrClick":"Drag files here or click to select","base.file.dropHere":"Drop file here","base.file.maxFiles":"Maximum {{count}} files","base.file.maxSize":"Maximum {{size}} per file","base.file.noPreview":"No preview","base.file.pendingDeletion":"Pending deletion","base.file.privateFile":"Private file","base.file.restore":"Restore","base.file.uploading":"Uploading files...","base.file.validation.filesWithErrors":"Some files have errors","base.file.validation.maxFilesExceeded":"Maximum {{count}} files allowed","base.file.validation.minFilesRequired":"At least one file is required","base.file.validation.minFilesRequiredPlural":"At least {{count}} files are required","base.lastUpdated":"Last updated at {{formattedLastUpdated}}","base.loading.configInitial":"Loading initial configuration...","base.loading.pleaseWait":"Loading, please wait...","base.loading.starting":"Starting application...","base.loading.themeSetup":"Generating theme...","base.loading.validatingSession":"Validating session...","base.titles.create":"New {{moduleName}}","base.titles.read":"View {{moduleName}}","base.titles.update":"Edit {{moduleName}}","base.success.transaction":"The operation has been completed successfully.","base.loading.executing":"Processing\u2026","checkCode.codeLabel":"Verification Code","checkCode.codePlaceholder":"Enter the 6-digit code","checkCode.codeRequired":"Code is required","checkCode.emailLabel":"Email","checkCode.emailPlaceholder":"Enter your email","checkCode.emailRequired":"Email is required","checkCode.instructions":"Enter the 6-digit code we sent to your email.","checkCode.invalidEmail":"Enter a valid email address","checkCode.resendCodeLink":"Resend code","checkCode.title":"Verify Code","checkCode.verifyButton":"Verify Code","error.app.config":"Configuration Error: {{message}}","error.app.initialization":"Error during final application initialization.","error.transaction":"Operation error","errors.DUPLICATE":"The <b>{{field}}</b> field must be unique.","errors.FOREIGN_KEY_NOT_FOUND":"The <b>{{field}}</b> field must reference an existing item.","errors.INVALID_EMAIL":"The <b>{{field}}</b> field must be a valid email address.","errors.INVALID_OBJECT_ID":"The <b>{{field}}</b> field must be a valid value.","errors.IN_USE":"The item is in use and cannot be deleted.","errors.MAX_LENGTH":"The <b>{{field}}</b> field must not exceed <b>{{length}}</b> characters.","errors.MIN_LENGTH":"The <b>{{field}}</b> field must be at least <b>{{length}}</b> characters.","errors.MUST_NOT_BE_EMAIL":"The <b>{{field}}</b> field must not be an email.","errors.NO_PERMISSION":"You don't have permission to perform this action.","errors.NO_SPACES":"The <b>{{field}}</b> field must not contain spaces.","errors.ONE_OR_MORE_OPERATIONS_FAILED":"Operation error","errors.REQUIRED":"The <b>{{field}}</b> field is required.","errors.TOKEN_HAS_EXPIRED":"Session has expired. Please log in again.","errors.TOO_MANY_REQUESTS":"Request limit reached. Please try again later.","errors.UNAUTHORIZED":"You are not authorized to perform this action.","errors.all_password_fields_required":"All password fields are required","errors.auth.INVALID_API_KEY":"Invalid API key","errors.auth.INVALID_CREDENTIALS":"Invalid username and/or password","errors.auth.NO_PERMISSION":"You don't have sufficient permissions","errors.auth.SESSION_EXPIRED":"Your session has expired. Please log in again.","errors.auth.TOO_MANY_REQUESTS":"Too many attempts. Please wait 15 minutes and try again","errors.auth.UNAUTHORIZED":"You don't have permission to perform this action","errors.auth.USER_NOT_ACTIVE":"User not active","errors.auth.USER_NOT_FOUND":"User not found","errors.data.BAD_REQUEST":"Invalid request","errors.data.FIELD_ERROR":"Error in submitted data","errors.data.IN_USE":"The item is in use and cannot be deleted","errors.data.ITEM_NOT_FOUND":"The requested item was not found","errors.data.NOT_FOUND":"Not found","errors.internal_error_changing_password":"Internal error changing password. Please try again","errors.password_min_length":"Password must be at least 8 characters","errors.password_mismatch":"Passwords do not match","errors.password_must_be_different":"New password must be different from current password","errors.system.DATABASE_CONNECTION_ERROR":"Connection error. Please check your internet connection.","errors.system.INTERNAL_SERVER_ERROR":"Internal server error. Please try again.","errors.system.INVALID_CONFIGURATION":"System configuration error","errors.system.TOO_MANY_REQUESTS":"Too many requests. Please wait a moment and try again","errors.system.UNKNOWN_OPERATION":"Unrecognized operation","errors.users_module_not_configured":"Users module not configured","footer.copyright":"Nocios S.R.L. All rights reserved.","footer.version":"Version","forgotPassword.checkEmailInstructions":"Check your inbox for the verification code","forgotPassword.codeAlreadyExistsMessage":"A code has already been sent and is still valid","forgotPassword.emailLabel":"Email","forgotPassword.emailPlaceholder":"Enter your email","forgotPassword.emailRequired":"Email is required","forgotPassword.emailSentMessage":"Code sent successfully","forgotPassword.enterCodeLink":"Enter Code","forgotPassword.instructions":"Enter your email and we'll send you a code to reset your password.","forgotPassword.invalidEmail":"Enter a valid email address","forgotPassword.sendCodeButton":"Send Code","forgotPassword.title":"Recover Password","login.alreadyHaveCodeLink":"Already have a code?","login.forgotPasswordLink":"Forgot your password?","login.initializationError":"Initialization error","login.initializing":"Initializing...","login.loginButton":"Log In","login.logoAlt":"Logo","login.noAccountPrompt":"Don't have an account?","login.notInitialized":"System not initialized","login.passwordLabel":"Password","login.passwordPlaceholder":"Enter your password","login.passwordRequired":"Password is required","login.signUpLink":"Sign up","login.usernameOrEmailLabel":"Username or email","login.usernameOrEmailPlaceholder":"Enter your email","login.usernameRequired":"Username is required","passwordRequirements.lowercase":"One lowercase letter","passwordRequirements.minLength":"Minimum 8 characters","passwordRequirements.number":"One number","passwordRequirements.special":"One special character (!@#$%...)","passwordRequirements.uppercase":"One uppercase letter","profiles.actions.assignProfiles":"Assign profiles","profiles.moduleName":"Profiles","profiles.moduleSingular":"Profile","publicPolicies.fields.conditions.customEdit":"Custom edit","resetPassword.codeExpiredOrInvalid":"The code has expired or is invalid","resetPassword.confirmPasswordLabel":"Confirm Password","resetPassword.confirmPasswordPlaceholder":"Confirm your new password","resetPassword.confirmPasswordRequired":"Confirm your password","resetPassword.goToLoginButton":"Go to Login","resetPassword.instructions":"Enter your new password.","resetPassword.invalidCode":"The verification code is invalid. Please check the link or request a new one.","resetPassword.missingParameters":"Missing required parameters","resetPassword.newPasswordLabel":"New Password","resetPassword.newPasswordPlaceholder":"Enter your new password","resetPassword.newPasswordRequired":"New password is required","resetPassword.passwordRequirementsNotMet":"Password does not meet all requirements","resetPassword.passwordTooShort":"Password must be at least 8 characters","resetPassword.passwordsDoNotMatch":"Passwords do not match","resetPassword.requestNewCodeButton":"Request New Code","resetPassword.resetPasswordButton":"Reset Password","resetPassword.successInstructions":"You can now log in with your new password","resetPassword.successMessage":"Password reset successfully","resetPassword.title":"New Password","resetPassword.validatingCode":"Validating code...","translations.fields.lang":"Language","translations.moduleName":"Translations","translations.moduleSingular":"Translation","users.fields.currentPassword":"Current password","users.fields.newPassword":"New Password","users.fields.repeatNewPassword":"Repeat New Password","users.moduleName":"Users","users.moduleSingular":"User"}},Kn= exports.getCriticalLanguages =()=>Object.keys(ce),jn= exports.getCriticalTranslations =e=>ce[e]||ce.es;var Jo="crudify_translations_",Yn=3600*1e3;function Xo(e){let r=0;for(let o=0;o<e.length;o++){let t=_nullishCoalesce(e.codePointAt(o), () => (0));r=(r<<5)-r+t,r=r&r}return Math.abs(r).toString(36)}var mr= (_class =class e{__init() {this.enableDebug=!1}__init2() {this.initializationPromise=null}__init3() {this.isInitialized=!1}constructor(){;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);}static getInstance(){return e.instance||(e.instance=new e),e.instance}setDebug(r){this.enableDebug=r}async ensureCrudifyInitialized(r,o){if(!this.isInitialized)return this.initializationPromise?(this.enableDebug&&_chunkGZOB4JDBjs.j.debug("[TranslationService] Waiting for crudify initialization..."),this.initializationPromise):(this.enableDebug&&_chunkGZOB4JDBjs.j.debug("[TranslationService] Initializing crudify SDK..."),this.initializationPromise=(async()=>{try{if(_optionalChain([_chunkBJEDX2HUjs.b, 'access', _2 => _2.getTokenData, 'call', _3 => _3(), 'optionalAccess', _4 => _4.endpoint])){this.enableDebug&&_chunkGZOB4JDBjs.j.debug("[TranslationService] Crudify already initialized"),this.isInitialized=!0;return}_chunkBJEDX2HUjs.b.config(o);let i=await _chunkBJEDX2HUjs.b.init(r,this.enableDebug?"debug":"none");if(i.success===!1)throw new Error(`Failed to initialize crudify: ${JSON.stringify(i.errors||"Unknown error")}`);this.isInitialized=!0,this.enableDebug&&_chunkGZOB4JDBjs.j.debug("[TranslationService] Crudify SDK initialized successfully")}catch(t){throw _chunkGZOB4JDBjs.j.error("[TranslationService] Failed to initialize crudify",t instanceof Error?t:{message:String(t)}),this.initializationPromise=null,t}})(),this.initializationPromise)}tryValidCache(r,o){let t=this.getFromCache(r);return!t||this.isCacheExpired(t)?null:(this.enableDebug&&_chunkGZOB4JDBjs.j.debug("[TranslationService] Using cached translations"),this.mergeWithUrlTranslations(t.data.translations,o))}getFallbackTranslations(r,o,t){let i=t?` (${t})`:"";return r?(_chunkGZOB4JDBjs.j.warn(`[TranslationService] Using expired cache${i}`),this.mergeWithUrlTranslations(r.data.translations,o)):(_chunkGZOB4JDBjs.j.warn(`[TranslationService] Using critical bundle${i}`),this.getCriticalTranslationsOnly())}processApiResponse(r,o,t,i){this.hasDataChanged(t,o)||!t?this.saveToCache(r,o):this.refreshCacheTimestamp(r);let a=this.mergeWithUrlTranslations(o.translations,i);if(this.enableDebug){let s=a[Object.keys(a)[0]];_chunkGZOB4JDBjs.j.debug("[TranslationService] Translations loaded:",{languages:Object.keys(a),keysCount:s?Object.keys(s).length:0})}return a}async fetchTranslations(r){let{apiKey:o,featureKeys:t,crudifyEnv:i="stg",urlTranslations:n}=r;this.enableDebug&&_chunkGZOB4JDBjs.j.debug("[TranslationService] fetchTranslations called with:",{apiKeyHash:Xo(o),crudifyEnv:i,featureKeys:t,hasUrlTranslations:!!n});let a=this.tryValidCache(o,n);if(a)return a;let s=this.getFromCache(o);try{await this.ensureCrudifyInitialized(o,i)}catch(l){return _chunkGZOB4JDBjs.j.error("[TranslationService] Failed to initialize crudify",l instanceof Error?l:{message:String(l)}),this.getFallbackTranslations(s,n,"init failed")}try{this.enableDebug&&_chunkGZOB4JDBjs.j.debug("[TranslationService] Fetching from API via crudify SDK");let l=await this.fetchFromAPI(t);return this.processApiResponse(o,l,s,n)}catch(l){return _chunkGZOB4JDBjs.j.error("[TranslationService] API fetch failed",l instanceof Error?l:{message:String(l)}),this.getFallbackTranslations(s,n,"API fetch failed")}}async fetchFromAPI(r){let o=await _chunkBJEDX2HUjs.b.getTranslation(r);if(!o.success)throw new Error(`Crudify API error: ${o.errors?JSON.stringify(o.errors):"Unknown error"}`);if(!o.data)throw new Error("No translation data in response");return o.data}mergeWithUrlTranslations(r,o){if(!o||Object.keys(o).length===0)return r;let t={};return Object.keys(r).forEach(i=>{t[i]={...r[i],...o}}),t}hasDataChanged(r,o){if(!r||r.data.timestamp!==o.timestamp)return!0;let t=this.hashData(o.translations);return r.dataHash!==t}hashData(r){let o=JSON.stringify(r),t=0;for(let i=0;i<o.length;i++){let n=_nullishCoalesce(o.codePointAt(i), () => (0));t=(t<<5)-t+n,t=t&t}return t.toString(36)}saveToCache(r,o){try{let t=this.getCacheKey(r),i={data:o,cachedAt:Date.now(),dataHash:this.hashData(o.translations)};localStorage.setItem(t,JSON.stringify(i)),this.enableDebug&&_chunkGZOB4JDBjs.j.debug("[TranslationService] Saved to cache:",{cacheKey:t})}catch(t){_chunkGZOB4JDBjs.j.error("[TranslationService] Failed to save cache",t instanceof Error?t:{message:String(t)})}}getFromCache(r){try{let o=this.getCacheKey(r),t=localStorage.getItem(o);return t?JSON.parse(t):null}catch(o){return _chunkGZOB4JDBjs.j.error("[TranslationService] Failed to read cache",o instanceof Error?o:{message:String(o)}),null}}refreshCacheTimestamp(r){try{let o=this.getFromCache(r);if(o){o.cachedAt=Date.now();let t=this.getCacheKey(r);localStorage.setItem(t,JSON.stringify(o))}}catch(o){_chunkGZOB4JDBjs.j.error("[TranslationService] Failed to refresh cache timestamp",o instanceof Error?o:{message:String(o)})}}isCacheExpired(r){return Date.now()-r.cachedAt>Yn}hasValidCache(r){let o=this.getFromCache(r);return o?!this.isCacheExpired(o):!1}getCacheKey(r){return`${Jo}${Xo(r)}`}getCriticalTranslationsOnly(){return ce}invalidateCache(r){let o=this.getCacheKey(r);localStorage.removeItem(o),this.enableDebug&&_chunkGZOB4JDBjs.j.debug("[TranslationService] Cache invalidated:",{cacheKey:o})}async prefetchTranslations(r){try{await this.fetchTranslations(r),this.enableDebug&&_chunkGZOB4JDBjs.j.debug("[TranslationService] Prefetch completed")}catch(o){_chunkGZOB4JDBjs.j.error("[TranslationService] Prefetch failed",o instanceof Error?o:{message:String(o)})}}clearAllCaches(){try{let o=Object.keys(localStorage).filter(t=>t.startsWith(Jo));o.forEach(t=>localStorage.removeItem(t)),this.enableDebug&&_chunkGZOB4JDBjs.j.debug(`[TranslationService] Cleared ${o.length} cache entries`)}catch(r){_chunkGZOB4JDBjs.j.error("[TranslationService] Failed to clear caches",r instanceof Error?r:{message:String(r)})}}}, _class),je= exports.translationService =mr.getInstance();var _jsxruntime = require('react/jsx-runtime');var gr=null,Jr=!1,Qo=_react.createContext.call(void 0, null);function et(e,r,o){return{...e,...r,...o}}function Qn(e,r,o,t,i){_react.useEffect.call(void 0, ()=>{if(!t||!e||!r)return;let n=o||_optionalChain([globalThis, 'access', _5 => _5.window, 'optionalAccess', _6 => _6.i18next])||_optionalChain([globalThis, 'access', _7 => _7.window, 'optionalAccess', _8 => _8.i18n]);if(!_optionalChain([n, 'optionalAccess', _9 => _9.addResourceBundle])){i&&_chunkGZOB4JDBjs.j.debug("[TranslationsProvider] i18next not found, skipping auto-sync");return}i&&_chunkGZOB4JDBjs.j.debug("[TranslationsProvider] Auto-syncing translations with i18next",{languages:Object.keys(e),currentLanguage:r}),Object.keys(e).forEach(a=>{e[a]&&Object.keys(e[a]).length>0&&(n.addResourceBundle(a,"translation",e[a],!0,!0),i&&_chunkGZOB4JDBjs.j.debug(`[TranslationsProvider] Synced ${Object.keys(e[a]).length} keys for language: ${a}`))}),n.language!==r&&n.changeLanguage&&(n.changeLanguage(r),i&&_chunkGZOB4JDBjs.j.debug(`[TranslationsProvider] Changed i18next language to: ${r}`))},[e,r,o,t,i])}async function ei(e,r){try{r&&_chunkGZOB4JDBjs.j.debug(`[TranslationsProvider] Fetching translations from URL: ${e}`);let o=await fetch(e);if(!o.ok)throw new Error(`Failed to fetch translations: ${o.statusText}`);let t=await o.json();return r&&_chunkGZOB4JDBjs.j.debug("[TranslationsProvider] URL translations loaded:",{keysCount:t?Object.keys(t).length:0}),t}catch(o){_chunkGZOB4JDBjs.j.error("[TranslationsProvider] Failed to load URL translations",o instanceof Error?o:{message:String(o)});return}}async function ri(e,r,o,t,i,n,a){je.setDebug(a);let s=await je.fetchTranslations({apiKey:e,crudifyEnv:r,featureKeys:o,urlTranslations:t}),l={};return Object.keys(s).forEach(m=>{let c=ce[m]||{},g=s[m]||{};l[m]=et(c,g,i)}),a&&_chunkGZOB4JDBjs.j.debug("[TranslationsProvider] Loaded translations:",{languages:Object.keys(l),keysCount:Object.keys(l[n]||{}).length}),l}function oi(e,r,o,t){let i={};return Object.keys(ce).forEach(n=>{let a=ce[n],s=e||r||{};i[n]=et(a,s,o)}),t&&_chunkGZOB4JDBjs.j.debug("[TranslationsProvider] Using fallback translations (critical + URL)"),i}async function ti(e){e&&_chunkGZOB4JDBjs.j.debug("[TranslationsProvider] Fetch already in progress, waiting for existing promise");let r=gr;if(!r)return null;try{return await r}catch (e2){return e&&_chunkGZOB4JDBjs.j.warn("[TranslationsProvider] Global fetch failed, retrying"),null}}async function ni(e,r,o){if(!e)return;let t=await ei(e,r);return o(t||void 0),t}async function ii(e,r,o){if(!Jr||!gr)return!1;let t=await ti(e);return t?(r(t),o(!1),!0):!1}var si=({children:e,apiKey:r,crudifyEnv:o="prod",featureKeys:t,language:i="es",devTranslations:n,translationUrl:a,enableDebug:s=!1,skipAutoInit:l=!0,autoSyncI18n:m=!0,i18nInstance:c,loadingFallback:g,waitForInitialLoad:P=!0})=>{let u=_react.useMemo.call(void 0, ()=>_chunkGZOB4JDBjs.m.call(void 0, {publicApiKey:r,env:o,featureKeys:t,enableDebug:s}),[r,o,t,s]),p=_nullishCoalesce(u.publicApiKey, () => ("")),f=_nullishCoalesce(_nullishCoalesce(u.env, () => (o)), () => ("prod")),d=_nullishCoalesce(u.featureKeys, () => (t)),[y,b]=_react.useState.call(void 0, {}),[w,E]=_react.useState.call(void 0, !0),[T,C]=_react.useState.call(void 0, !0),[v,k]=_react.useState.call(void 0, null),[j,Ge]=_react.useState.call(void 0, void 0),[me,ae]=_react.useState.call(void 0, !1),Y=_react.useCallback.call(void 0, async()=>{if(!p){s&&_chunkGZOB4JDBjs.j.debug("[TranslationsProvider] No apiKey - skipping translation fetch"),E(!1),C(!1);return}if(me){s&&_chunkGZOB4JDBjs.j.debug("[TranslationsProvider] Skipping reload - using fallback translations");return}if(je.hasValidCache(p)&&T&&(s&&_chunkGZOB4JDBjs.j.debug("[TranslationsProvider] Valid cache found - not blocking initial render"),C(!1)),await ii(s,b,E))return;Jr=!0,E(!0),k(null);let Q=await ni(a,s,Ge),M=(async()=>{try{return await ri(p,f,d,Q,n,i,s)}catch(_){return _chunkGZOB4JDBjs.j.error("[TranslationsProvider] Failed to load",_ instanceof Error?_:{message:String(_)}),k(_ instanceof Error?_.message:String(_)),ae(!0),oi(Q,j,n,s)}})();gr=M;try{let _=await M;b(_)}finally{E(!1),C(!1),Jr=!1,setTimeout(()=>{gr=null},1e3)}},[p,f,d,a,n,s,i,me]);_react.useEffect.call(void 0, ()=>{Y();let R=setInterval(Y,3600*1e3);return()=>clearInterval(R)},[Y]);let he=_react.useMemo.call(void 0, ()=>(R,O)=>{let M=(y[i]||{})[R];if(!M){let _=Object.keys(y);for(let le of _)if(y[le][R]){M=y[le][R];break}}return M||(s&&_chunkGZOB4JDBjs.j.warn(`[TranslationsProvider] Missing translation: "${R}"`),M=R),O&&typeof M=="string"&&Object.entries(O).forEach(([_,le])=>{let be=new RegExp(`{{${_}}}`,"g");M=M.replace(be,String(le))}),M},[y,i,s]);Qn(y,i,c,m,s);let De=_react.useMemo.call(void 0, ()=>({t:he,language:i,availableLanguages:Object.keys(y),translations:y,isLoading:w,error:v,refreshTranslations:Y}),[he,i,y,w,v,Y]);return p?P&&T&&w?g||_jsxruntime.jsx.call(void 0, "div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:_jsxruntime.jsx.call(void 0, "div",{children:"Loading translations..."})}):_jsxruntime.jsx.call(void 0, Qo.Provider,{value:De,children:e}):(s&&_chunkGZOB4JDBjs.j.warn("[TranslationsProvider] No API key available. Skipping translations. Provide apiKey via props or ensure cookies are set by Lambda."),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}))},we= exports.useTranslations =()=>{let e=_react.useContext.call(void 0, Qo);if(!e)throw new Error("useTranslations must be used within TranslationsProvider");return e};var ot=_react.createContext.call(void 0, null),di=()=>{try{return we()}catch (e3){return null}},ui=(e,r)=>{if(r.includes(".")){let o=r.split(".").reduce((t,i)=>t&&typeof t=="object"?t[i]:void 0,e);if(o!==void 0)return o}if(_optionalChain([e, 'optionalAccess', _10 => _10[r]]))return e[r]},tt=({children:e,translations:r,translationsUrl:o,language:t="en"})=>{let i=di(),n=_react.useMemo.call(void 0, ()=>_nullishCoalesce(_optionalChain([i, 'optionalAccess', _11 => _11.translations, 'optionalAccess', _12 => _12[t]]), () => ({})),[i,t]),{translations:a,loading:s}=Yo(o,r),l=_react.useMemo.call(void 0, ()=>({...n,...a,...r}),[n,a,r]),m=_react.useMemo.call(void 0, ()=>(g,P)=>{let u=ui(l,g);if(u??=g,P&&typeof u=="string"){let p=u;Object.entries(P).forEach(([f,d])=>{p=p.replaceAll(`{{${f}}}`,d)}),u=p}return typeof u=="string"?u:g},[l]),c=_react.useMemo.call(void 0, ()=>({t:m,language:t}),[m,t]);return s?_jsxruntime.jsx.call(void 0, "div",{children:"Loading translations..."}):_jsxruntime.jsx.call(void 0, ot.Provider,{value:c,children:e})},oe=()=>{let e=_react.useContext.call(void 0, ot);if(!e)throw new Error("useTranslation must be used within I18nProvider");return e};var nt={currentScreen:"login",searchParams:{},formData:{username:"",password:"",email:"",code:"",newPassword:"",confirmPassword:""},loading:!1,errors:{global:[]},emailSent:!1,codeAlreadyExists:!1,codeValidated:!1,fromCodeVerification:!1,config:{}};function yi(e,r){switch(r.type){case"SET_SCREEN":{let o={...e,currentScreen:r.payload.screen,searchParams:r.payload.params||e.searchParams,errors:{global:[]}},t=new URLSearchParams(o.searchParams),i=t.toString()?`?${t.toString()}`:globalThis.location.pathname;try{globalThis.history.replaceState({},"",i)}catch (e4){}return o}case"SET_SEARCH_PARAMS":return{...e,searchParams:r.payload};case"CLEAR_SEARCH_PARAMS":return{...e,searchParams:{}};case"UPDATE_FORM_DATA":return{...e,formData:{...e.formData,...r.payload},errors:{...e.errors,...Object.keys(r.payload).reduce((o,t)=>({...o,[t]:void 0}),{})}};case"SET_LOADING":return{...e,loading:r.payload};case"SET_ERRORS":return{...e,errors:{...e.errors,...r.payload}};case"CLEAR_ERRORS":return{...e,errors:{global:[]}};case"SET_EMAIL_SENT":return{...e,emailSent:r.payload};case"SET_CODE_ALREADY_EXISTS":return{...e,codeAlreadyExists:r.payload};case"SET_CODE_VALIDATED":return{...e,codeValidated:r.payload};case"SET_FROM_CODE_VERIFICATION":return{...e,fromCodeVerification:r.payload};case"RESET_FORM":return{...e,formData:nt.formData,errors:{global:[]},loading:!1,emailSent:!1,codeAlreadyExists:!1,codeValidated:!1,fromCodeVerification:!1};case"INIT_CONFIG":return{...e,config:r.payload};default:return e}}var it=_react.createContext.call(void 0, void 0),st=({children:e,initialScreen:r="login",config:o,autoReadFromCookies:t=!0})=>{let[i,n]=_react.useReducer.call(void 0, yi,{...nt,currentScreen:r});_react.useEffect.call(void 0, ()=>{n({type:"INIT_CONFIG",payload:(()=>{let p={};if(t)try{let f=_chunkGZOB4JDBjs.k.call(void 0, );f.configSource!=="none"&&f.logo&&(p.logo=f.logo)}catch(f){_chunkGZOB4JDBjs.j.error("Error reading configuration",f instanceof Error?f:{message:String(f)})}return{publicApiKey:_optionalChain([o, 'optionalAccess', _13 => _13.publicApiKey]),env:_optionalChain([o, 'optionalAccess', _14 => _14.env]),appName:_optionalChain([o, 'optionalAccess', _15 => _15.appName]),logo:_optionalChain([o, 'optionalAccess', _16 => _16.logo])||p.logo,loginActions:_optionalChain([o, 'optionalAccess', _17 => _17.loginActions])}})()})},[o,t]),_react.useEffect.call(void 0, ()=>{let u=new URLSearchParams(globalThis.location.search),p={};u.forEach((f,d)=>{p[d]=f}),Object.keys(p).length>0&&n({type:"SET_SEARCH_PARAMS",payload:p}),r==="checkCode"&&p.email&&n({type:"UPDATE_FORM_DATA",payload:{email:p.email,code:_nullishCoalesce(p.code, () => (""))}}),r==="resetPassword"&&p.link&&n({type:"SET_SEARCH_PARAMS",payload:p})},[r]),_react.useEffect.call(void 0, ()=>{let u=_chunkGZOB4JDBjs.o.subscribe(p=>{(p.type==="LOGOUT"||p.type==="SESSION_EXPIRED")&&(_chunkGZOB4JDBjs.j.debug("LoginStateProvider: Clearing state due to auth event",{type:p.type}),n({type:"CLEAR_SEARCH_PARAMS"}),n({type:"RESET_FORM"}))});return()=>u()},[]);let a=_react.useCallback.call(void 0, (u,p)=>{n({type:"SET_SCREEN",payload:{screen:u,params:p}})},[]),s=_react.useCallback.call(void 0, u=>{n({type:"UPDATE_FORM_DATA",payload:u})},[]),l=_react.useCallback.call(void 0, (u,p)=>{n({type:"SET_ERRORS",payload:{[u]:p}})},[]),m=_react.useCallback.call(void 0, ()=>{n({type:"CLEAR_ERRORS"})},[]),c=_react.useCallback.call(void 0, u=>{n({type:"SET_LOADING",payload:u})},[]),g=_react.useCallback.call(void 0, ()=>{n({type:"CLEAR_SEARCH_PARAMS"})},[]),P=_react.useMemo.call(void 0, ()=>({state:i,dispatch:n,setScreen:a,updateFormData:s,setFieldError:l,clearErrors:m,setLoading:c,clearSearchParams:g}),[i,n,a,s,l,m,c,g]);return _jsxruntime.jsx.call(void 0, it.Provider,{value:P,children:e})},hr=()=>{let e=_react.useContext.call(void 0, it);if(e===void 0)throw new Error("useLoginState must be used within a LoginStateProvider");return e};var bi=/^[a-zA-Z0-9\-_./?=&%#]+$/,Ci=[/^https?:\/\//i,/^ftp:\/\//i,/^\/\//,/javascript:/i,/data:/i,/vbscript:/i,/about:/i,/\.\.\//,/\.\.\\/,/%2e%2e%2f/i,/%2e%2e%5c/i,/%2f%2f/i,/%5c%5c/i,/\p{Cc}/u,/\\/],Ye= exports.validateInternalRedirect =(e,r="/")=>{if(!e||typeof e!="string")return r;let o=e.trim();if(!o)return r;if(!o.startsWith("/"))return _chunkGZOB4JDBjs.j.warn("Open redirect blocked (relative path)",{path:e}),r;if(!bi.test(o))return _chunkGZOB4JDBjs.j.warn("Open redirect blocked (invalid characters)",{path:e}),r;let t=o.toLowerCase();for(let n of Ci)if(n.test(t))return _chunkGZOB4JDBjs.j.warn("Open redirect blocked (dangerous pattern)",{path:e}),r;let i=o.split("?")[0].split("/").filter(Boolean);if(i.length===0)return o;for(let n of i)if(n===".."||n.includes(":")||n.length>100)return _chunkGZOB4JDBjs.j.warn("Open redirect blocked (suspicious path part)",{part:n}),r;return o},Pi=[/^files\.nocios\.link$/,/^files\.crudia\.com$/,/^[a-z0-9][a-z0-9-]*\.nocios\.link$/,/^[a-z0-9][a-z0-9-]*\.crudia\.com$/],Zr= exports.validateTrustedRedirect =(e,r="/")=>{if(!e||typeof e!="string")return r;let o=e.trim();if(!o)return r;if(o.startsWith("/"))return Ye(o,r);try{if(o.includes("..")||o.includes("//",8))return _chunkGZOB4JDBjs.j.warn("Redirect blocked (dangerous path pattern)",{url:o}),r;let t=new URL(o);if(t.protocol!=="https:")return _chunkGZOB4JDBjs.j.warn("Redirect blocked (non-HTTPS protocol)",{url:o}),r;let i=t.hostname.toLowerCase();return Pi.some(a=>a.test(i))?o:(_chunkGZOB4JDBjs.j.warn("Redirect blocked (untrusted domain)",{url:o,hostname:i}),r)}catch (e5){return _chunkGZOB4JDBjs.j.warn("Redirect blocked (invalid URL)",{url:o}),r}},Qr= exports.extractSafeRedirectFromUrl =(e,r="/")=>{try{let t=(typeof e=="string"?new URLSearchParams(e):e).get("redirect");if(!t)return r;let i=decodeURIComponent(t);return Ye(i,r)}catch(o){return _chunkGZOB4JDBjs.j.warn("Error parsing redirect parameter",o instanceof Error?{errorMessage:o.message}:{message:String(o)}),r}};function Ei(e){return!!e&&typeof e=="object"&&"i18n"in e}var ct=({onScreenChange:e,onExternalNavigate:r,onLoginSuccess:o,onError:t,redirectUrl:i="/"})=>{let{state:n,updateFormData:a,setFieldError:s,clearErrors:l,setLoading:m}=hr(),{login:c}=_chunkBJEDX2HUjs.n.call(void 0, ),g=oe(),{t:P}=g,u=Ei(g)?g.i18n:void 0,p=_react.useRef.call(void 0, null),f=_chunkGZOB4JDBjs.s.call(void 0, P,{currentLanguage:_optionalChain([u, 'optionalAccess', _18 => _18.language]),enableDebug:!1}),d=()=>{if(n.searchParams.redirect)try{let C=decodeURIComponent(n.searchParams.redirect);return Zr(C,i||"/")}catch (e6){}return i||"/"};_react.useEffect.call(void 0, ()=>{let C=setTimeout(()=>{p.current&&p.current.focus()},100);return()=>clearTimeout(C)},[]);let y=C=>f.translateError({code:C.code,message:C.message,field:C.field}),b=async()=>{if(!n.loading){if(!n.formData.username.trim()){s("username",P("login.usernameRequired"));return}if(!n.formData.password.trim()){s("password",P("login.passwordRequired"));return}l(),m(!0);try{let C=await c(n.formData.username,n.formData.password);if(m(!1),C.success){let v=d();o&&o(C.data,v)}else{let v=C.rawResponse||C;w(v)}}catch(C){m(!1);let k=_chunkGZOB4JDBjs.D.call(void 0, C).map(y);s("global",k),t&&t(k.join(", "))}}},w=C=>{let v=_chunkGZOB4JDBjs.D.call(void 0, C),k=[];v.forEach(j=>{j.field?s(j.field,y(j)):k.push(y(j))}),k.length>0&&s("global",k)};return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"form",noValidate:!0,onSubmit:C=>{C.preventDefault(),b()},onKeyDown:C=>{C.key==="Enter"&&!n.loading&&(C.preventDefault(),b())},sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"email",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:P("login.usernameOrEmailLabel")}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,id:"email",name:"email",type:"email",value:n.formData.username,disabled:n.loading,onChange:C=>a({username:C.target.value}),error:!!n.errors.username,helperText:n.errors.username,autoComplete:"email",placeholder:P("login.usernameOrEmailPlaceholder"),inputRef:p,required:!0})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"password",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:P("login.passwordLabel")}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,id:"password",name:"password",type:"password",value:n.formData.password,disabled:n.loading,onChange:C=>a({password:C.target.value}),error:!!n.errors.password,helperText:n.errors.password,autoComplete:"current-password",placeholder:P("login.passwordPlaceholder"),required:!0})]}),_optionalChain([n, 'access', _19 => _19.config, 'access', _20 => _20.loginActions, 'optionalAccess', _21 => _21.includes, 'call', _22 => _22("forgotPassword")])&&_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"flex-end",alignItems:"center"},children:_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:()=>{_optionalChain([e, 'optionalCall', _23 => _23("forgotPassword",n.searchParams)])},variant:"body2",color:"secondary",children:P("login.forgotPasswordLink")})}),_jsxruntime.jsx.call(void 0, _material.Button,{disabled:n.loading,type:"submit",fullWidth:!0,variant:"contained",color:"primary",sx:{mt:1,mb:2},children:n.loading?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:20}):P("login.loginButton")})]}),_jsxruntime.jsx.call(void 0, _material.Box,{children:n.errors.global&&n.errors.global.length>0&&n.errors.global.map(C=>_jsxruntime.jsx.call(void 0, _material.Alert,{variant:"filled",sx:{mt:2},severity:"error",children:_jsxruntime.jsx.call(void 0, "div",{children:C})},C))}),_optionalChain([n, 'access', _24 => _24.config, 'access', _25 => _25.loginActions, 'optionalAccess', _26 => _26.includes, 'call', _27 => _27("createUser")])&&_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",align:"center",sx:{color:"text.secondary",mt:3},children:[P("login.noAccountPrompt")," ",_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:()=>{let v=`/public/users/create${Object.keys(n.searchParams).length>0?`?${new URLSearchParams(n.searchParams).toString()}`:""}`;_optionalChain([r, 'optionalCall', _28 => _28(v)])},fontWeight:"medium",color:"secondary",children:P("login.signUpLink")})]})]})};var Ie=(e,r)=>o=>{let t=[`errors.auth.${o.code}`,`errors.data.${o.code}`,`errors.system.${o.code}`,`errors.${o.code}`,`${r}.${o.code.toLowerCase()}`];for(let i of t){let n=e(i);if(n!==i)return n}return o.message||e("base.errors.errorUnknown")};var xe=(e,r)=>e?e instanceof URLSearchParams?e.get(r):e[r]||null:null;var Ii=/^[^\s@.]+(?:\.[^\s@.]+)*@[^\s@.]+(?:\.[^\s@.]+)+$/,br=e=>!e||typeof e!="string"?!1:Ii.test(e.trim());var Cr=e=>!e||typeof e!="string"?"":e.replaceAll(/\D/g,"").slice(0,6);function Oi(e){return!e||typeof e!="object"?!1:Reflect.get(e,"existingCodeValid")===!0}var ut=({onScreenChange:e,onError:r})=>{let{crudify:o}=_chunkBJEDX2HUjs.l.call(void 0, ),[t,i]=_react.useState.call(void 0, ""),[n,a]=_react.useState.call(void 0, !1),[s,l]=_react.useState.call(void 0, []),[m,c]=_react.useState.call(void 0, null),[g,P]=_react.useState.call(void 0, !1),[u,p]=_react.useState.call(void 0, !1),f=_react.useRef.call(void 0, null),{t:d}=oe(),y=Ie(d,"forgotPassword");_react.useEffect.call(void 0, ()=>{f.current&&!g&&!u&&f.current.focus()},[g,u]);let b=async()=>{if(!(n||!o)){if(l([]),c(null),!t){c(d("forgotPassword.emailRequired"));return}if(!br(t)){c(d("forgotPassword.invalidEmail"));return}a(!0);try{let C=[{operation:"requestPasswordReset",data:{email:t}}],v=await o.transaction(C);if(v.success)Oi(v.data)?p(!0):P(!0);else{let j=_chunkGZOB4JDBjs.D.call(void 0, v).map(y);l(j)}}catch(C){let k=_chunkGZOB4JDBjs.D.call(void 0, C).map(y);l(k),r&&r(k.join(", "))}finally{a(!1)}}},w=()=>{_optionalChain([e, 'optionalCall', _29 => _29("login")])},E=()=>{if(g||u){_optionalChain([e, 'optionalCall', _30 => _30("checkCode",{email:t})]);return}if(!t){c(d("forgotPassword.emailRequired"));return}if(!br(t)){c(d("forgotPassword.invalidEmail"));return}_optionalChain([e, 'optionalCall', _31 => _31("checkCode",{email:t})])};return g||u?_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{width:"100%",display:"flex",flexDirection:"column",gap:2,textAlign:"center"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:2},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:d(u?"forgotPassword.codeAlreadyExistsMessage":"forgotPassword.emailSentMessage")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{color:u?"success.main":"grey.600"},children:d("forgotPassword.checkEmailInstructions")})]}),_jsxruntime.jsx.call(void 0, _material.Button,{type:"button",onClick:E,fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:d("forgotPassword.enterCodeLink")}),_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center"},children:_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:w,variant:"body2",color:"secondary",children:d("base.btn.back")})})]}):_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"form",noValidate:!0,onSubmit:C=>{C.preventDefault(),b()},sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:2},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:d("forgotPassword.title")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{color:"grey.600"},children:d("forgotPassword.instructions")})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"email",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:d("forgotPassword.emailLabel")}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,id:"email",name:"email",type:"email",value:t,disabled:n,onChange:C=>i(C.target.value),error:!!m,helperText:m,autoComplete:"email",placeholder:d("forgotPassword.emailPlaceholder"),required:!0,autoFocus:!0,inputRef:f})]}),_jsxruntime.jsx.call(void 0, _material.Button,{disabled:n,type:"submit",fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:n?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:20}):d("forgotPassword.sendCodeButton")}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center",gap:2},children:[_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:w,variant:"body2",color:"secondary",children:d("base.btn.back")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{color:"grey.400"},children:"\u2022"}),_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:E,variant:"body2",color:"secondary",children:d("login.alreadyHaveCodeLink")})]})]}),_jsxruntime.jsx.call(void 0, _material.Box,{children:s.length>0&&s.map(C=>_jsxruntime.jsx.call(void 0, _material.Alert,{variant:"filled",sx:{mt:2},severity:"error",children:C},C))})]})};var _CheckCircle = require('@mui/icons-material/CheckCircle'); var _CheckCircle2 = _interopRequireDefault(_CheckCircle);var _RadioButtonUnchecked = require('@mui/icons-material/RadioButtonUnchecked'); var _RadioButtonUnchecked2 = _interopRequireDefault(_RadioButtonUnchecked);var zi=({message:e,valid:r})=>_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",alignItems:"center",gap:.5,py:.25},children:[r?_jsxruntime.jsx.call(void 0, _CheckCircle2.default,{sx:{fontSize:16,color:"success.main"}}):_jsxruntime.jsx.call(void 0, _RadioButtonUnchecked2.default,{sx:{fontSize:16,color:"text.disabled"}}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",sx:{color:r?"success.main":"text.secondary",transition:"color 0.2s ease"},children:e})]}),oo= exports.PasswordRequirements =({requirements:e,show:r=!0})=>!r||e.length===0?null:_jsxruntime.jsx.call(void 0, _material.Box,{sx:{mt:.5,mb:1,px:.5},children:e.map(o=>_jsxruntime.jsx.call(void 0, zi,{message:o.message,valid:o.valid},o.message))});var Vi=/[A-Z]/,Hi=/[a-z]/,qi=/\d/,Wi=/[!@#$%^&*()_+\-=[\]{}|;:,.<>?]/,Gi=/^[A-Za-z0-9]+$/;function to(e,r){return r.map(o=>{let t=!0;switch(o.type){case"minLength":t=e.length>=Number(_nullishCoalesce(o.value, () => (0)));break;case"alphanumeric":t=e.length>0&&Gi.test(e);break;case"uppercase":t=Vi.test(e);break;case"lowercase":t=Hi.test(e);break;case"number":t=qi.test(e);break;case"special":t=Wi.test(e);break;default:break}return{message:o.message,valid:t,enforce:!!o.enforce}})}function no(e){return e.filter(r=>r.enforce).every(r=>r.valid)}var io=[{type:"minLength",value:8,message:"passwordRequirements.minLength",enforce:!0},{type:"uppercase",message:"passwordRequirements.uppercase",enforce:!0},{type:"lowercase",message:"passwordRequirements.lowercase",enforce:!0},{type:"number",message:"passwordRequirements.number",enforce:!0},{type:"special",message:"passwordRequirements.special",enforce:!0}];var _Visibility = require('@mui/icons-material/Visibility'); var _Visibility2 = _interopRequireDefault(_Visibility);var _VisibilityOff = require('@mui/icons-material/VisibilityOff'); var _VisibilityOff2 = _interopRequireDefault(_VisibilityOff);var Pr=({id:e,name:r,value:o,onChange:t,disabled:i=!1,error:n=!1,helperText:a,label:s,placeholder:l,autoComplete:m="current-password",showPasswordLabel:c="Show password",hidePasswordLabel:g="Hide password"})=>{let[P,u]=_react.useState.call(void 0, !1);return _jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,id:e,name:r,type:P?"text":"password",value:o,disabled:i,onChange:t,error:n,helperText:a,autoComplete:m,placeholder:l,label:s,required:!0,slotProps:{input:{endAdornment:_jsxruntime.jsx.call(void 0, _material.InputAdornment,{position:"end",children:_jsxruntime.jsx.call(void 0, _material.IconButton,{"aria-label":P?g:c,onClick:()=>{u(f=>!f)},edge:"end",size:"small",disabled:i,children:P?_jsxruntime.jsx.call(void 0, _VisibilityOff2.default,{}):_jsxruntime.jsx.call(void 0, _Visibility2.default,{})})})}}})};var wr=({errors:e,severity:r="error",variant:o="filled"})=>!e||e.length===0?null:_jsxruntime.jsx.call(void 0, _material.Box,{children:e.map(t=>_jsxruntime.jsx.call(void 0, _material.Alert,{variant:o,severity:r,sx:{mt:2},children:t},t))});function ns(e){return{errorName:e instanceof Error?e.name:"UnknownError",errorMessage:e instanceof Error?e.message:String(e)}}var gt=({onScreenChange:e,onError:r,searchParams:o,onResetSuccess:t,passwordRules:i})=>{let{crudify:n}=_chunkBJEDX2HUjs.l.call(void 0, ),[a,s]=_react.useState.call(void 0, ""),[l,m]=_react.useState.call(void 0, ""),[c,g]=_react.useState.call(void 0, !1),[P,u]=_react.useState.call(void 0, []),[p,f]=_react.useState.call(void 0, null),[d,y]=_react.useState.call(void 0, null),[b,w]=_react.useState.call(void 0, ""),[E,T]=_react.useState.call(void 0, ""),[C,v]=_react.useState.call(void 0, !1),[k,j]=_react.useState.call(void 0, !0),[Ge,me]=_react.useState.call(void 0, !1),[ae,Y]=_react.useState.call(void 0, null),[he,De]=_react.useState.call(void 0, !1),{t:R}=oe(),O=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>()=>{O.current&&clearTimeout(O.current)},[]);let Q=_react.useCallback.call(void 0, (N,L=3e3)=>{O.current&&clearTimeout(O.current),O.current=setTimeout(()=>_optionalChain([e, 'optionalCall', _32 => _32(N)]),L)},[e]),M=_react.useMemo.call(void 0, ()=>(i||io).map(L=>({...L,message:R(L.message)})),[i,R]),_=_react.useMemo.call(void 0, ()=>to(a,M),[a,M]),le=_react.useMemo.call(void 0, ()=>no(_),[_]),be=a===l,Se=Ie(R,"resetPassword");_react.useEffect.call(void 0, ()=>{if(!o)return;let N=xe(o,"fromCodeVerification"),L=xe(o,"email"),J=xe(o,"code");if(N==="true"&&L&&J){w(L),T(J),v(!0),me(!0),j(!1);return}let ee=xe(o,"link");if(ee)try{let q=decodeURIComponent(ee),[ne,Ce]=q.split("/");if(ne&&Ce&&ne.length===6){T(ne),w(Ce),v(!1),Y({email:Ce,code:ne});return}}catch(q){_chunkGZOB4JDBjs.j.warn("Failed to parse reset password link",ns(q))}if(L&&J){w(L),T(J),v(!1),Y({email:L,code:J});return}u([R("resetPassword.invalidCode")]),j(!1),Q("forgotPassword")},[o,R,Q]),_react.useEffect.call(void 0, ()=>{n&&ae&&!he&&(De(!0),(async(L,J)=>{try{let ee=[{operation:"validatePasswordResetCode",data:{email:L,codePassword:J}}],q=await n.transaction(ee);if(q.data&&Array.isArray(q.data)&&_optionalChain([q, 'access', _33 => _33.data, 'access', _34 => _34[0], 'optionalAccess', _35 => _35.response, 'optionalAccess', _36 => _36.status])==="OK"){me(!0);return}if(q.success)me(!0);else{let Ce=_chunkGZOB4JDBjs.D.call(void 0, q).map(Se);u(Ce),Q("forgotPassword")}}catch(ee){let ne=_chunkGZOB4JDBjs.D.call(void 0, ee).map(Se);u(ne),Q("forgotPassword")}finally{j(!1),Y(null),De(!1)}})(ae.email,ae.code))},[n,ae,he,R,Se,Q]);let cr=async()=>{if(c||!n)return;u([]),f(null),y(null);let N=!1;if(a?le||(f(R("resetPassword.passwordRequirementsNotMet")),N=!0):(f(R("resetPassword.newPasswordRequired")),N=!0),l?be||(y(R("resetPassword.passwordsDoNotMatch")),N=!0):(y(R("resetPassword.confirmPasswordRequired")),N=!0),!N){g(!0);try{let L=[{operation:"validateAndResetPassword",data:{email:b,codePassword:E,newPassword:a}}],J=await n.transaction(L);if(J.success)u([]),O.current&&clearTimeout(O.current),O.current=setTimeout(()=>{_optionalChain([t, 'optionalCall', _37 => _37()])},1e3);else{let q=_chunkGZOB4JDBjs.D.call(void 0, J).map(Se);u(q)}}catch(L){let ee=_chunkGZOB4JDBjs.D.call(void 0, L).map(Se);u(ee),r&&r(ee.join(", "))}g(!1)}},dr=()=>{C?_optionalChain([e, 'optionalCall', _38 => _38("checkCode",{email:b})]):_optionalChain([e, 'optionalCall', _39 => _39("forgotPassword")])};return k?_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:"300px"},children:_jsxruntime.jsx.call(void 0, _material.CircularProgress,{})}):Ge?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"form",noValidate:!0,sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:2},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:R("resetPassword.title")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{color:"grey.600"},children:R("resetPassword.instructions")})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"newPassword",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:R("resetPassword.newPasswordLabel")}),_jsxruntime.jsx.call(void 0, Pr,{id:"newPassword",name:"newPassword",value:a,disabled:c,onChange:N=>s(N.target.value),error:!!p,helperText:_nullishCoalesce(p, () => (void 0)),autoComplete:"new-password",placeholder:R("resetPassword.newPasswordPlaceholder"),showPasswordLabel:R("base.btn.showPassword"),hidePasswordLabel:R("base.btn.hidePassword")}),_jsxruntime.jsx.call(void 0, oo,{requirements:_,show:a.length>0})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"confirmPassword",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:R("resetPassword.confirmPasswordLabel")}),_jsxruntime.jsx.call(void 0, Pr,{id:"confirmPassword",name:"confirmPassword",value:l,disabled:c,onChange:N=>m(N.target.value),error:!!d,helperText:_nullishCoalesce(d, () => (void 0)),autoComplete:"new-password",placeholder:R("resetPassword.confirmPasswordPlaceholder"),showPasswordLabel:R("base.btn.showPassword"),hidePasswordLabel:R("base.btn.hidePassword")})]}),_jsxruntime.jsx.call(void 0, _material.Button,{disabled:c||!le||!be||!a||!l,type:"button",onClick:cr,fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:c?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:20}):R("resetPassword.resetPasswordButton")}),_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center"},children:_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:dr,variant:"body2",color:"secondary",children:R("base.btn.back")})})]}),_jsxruntime.jsx.call(void 0, wr,{errors:P})]}):_jsxruntime.jsx.call(void 0, _material.Box,{children:_jsxruntime.jsx.call(void 0, wr,{errors:P})})};var ht=({onScreenChange:e,onError:r,searchParams:o})=>{let{crudify:t}=_chunkBJEDX2HUjs.l.call(void 0, ),[i,n]=_react.useState.call(void 0, ""),[a,s]=_react.useState.call(void 0, !1),[l,m]=_react.useState.call(void 0, []),[c,g]=_react.useState.call(void 0, null),[P,u]=_react.useState.call(void 0, ""),p=_react.useRef.call(void 0, null),{t:f}=oe(),d=Ie(f,"checkCode");_react.useEffect.call(void 0, ()=>{let T=xe(o,"email");T?u(T):_optionalChain([e, 'optionalCall', _40 => _40("forgotPassword")])},[o,e]),_react.useEffect.call(void 0, ()=>{p.current&&p.current.focus()},[]);let y=async()=>{if(!(a||!t)){if(m([]),g(null),!i){g(f("checkCode.codeRequired"));return}if(i.length!==6){g(f("checkCode.codeRequired"));return}s(!0);try{let T=[{operation:"validatePasswordResetCode",data:{email:P,codePassword:i}}],C=await t.transaction(T);if(C.success)_optionalChain([e, 'optionalCall', _41 => _41("resetPassword",{email:P,code:i,fromCodeVerification:"true"})]);else{let k=_chunkGZOB4JDBjs.D.call(void 0, C).map(d);m(k),s(!1)}}catch(T){let v=_chunkGZOB4JDBjs.D.call(void 0, T).map(d);m(v),s(!1),r&&r(v.join(", "))}}},b=()=>{_optionalChain([e, 'optionalCall', _42 => _42("forgotPassword")])},w=T=>{n(Cr(T.target.value))};return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"form",noValidate:!0,onSubmit:T=>{T.preventDefault(),y()},sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:2},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:f("checkCode.title")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{color:"grey.600"},children:f("checkCode.instructions")})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"code",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:f("checkCode.codeLabel")}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,id:"code",name:"code",type:"text",value:i,disabled:a,onChange:w,error:!!c,helperText:c,placeholder:f("checkCode.codePlaceholder"),slotProps:{htmlInput:{maxLength:6,style:{textAlign:"center",fontSize:"1.5rem",letterSpacing:"0.4rem"}}},required:!0,autoFocus:!0,inputRef:p})]}),_jsxruntime.jsx.call(void 0, _material.Button,{disabled:a||i.length!==6,type:"submit",fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:a?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:20}):f("checkCode.verifyButton")}),_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center"},children:_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:b,variant:"body2",color:"secondary",children:f("base.btn.back")})})]}),_jsxruntime.jsx.call(void 0, _material.Box,{children:l.length>0&&l.map(T=>_jsxruntime.jsx.call(void 0, _material.Alert,{sx:{mt:2},severity:"error",children:T},T))})]})};var Pt=({children:e,fallback:r})=>{let{isLoading:o,error:t,isInitialized:i}=_chunkBJEDX2HUjs.l.call(void 0, ),{t:n}=oe();return o?r||_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"200px",gap:2},children:[_jsxruntime.jsx.call(void 0, _material.CircularProgress,{}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",children:n("login.initializing")==="login.initializing"?"Initializing...":n("login.initializing")})]}):t?_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"error",sx:{mt:2},children:_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",children:[n("login.initializationError")==="login.initializationError"?"Initialization error":n("login.initializationError"),": ",t]})}):i?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"warning",sx:{mt:2},children:_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",children:n("login.notInitialized")==="login.notInitialized"?"System not initialized":n("login.notInitialized")})})};var bs=({onScreenChange:e,onExternalNavigate:r,onLoginSuccess:o,onError:t,redirectUrl:i="/",passwordRules:n})=>{let{t:a}=oe(),{state:s,setScreen:l}=hr(),{config:m}=_chunkBJEDX2HUjs.n.call(void 0, ),{showNotification:c}=_chunkBJEDX2HUjs.i.call(void 0, ),g=(u,p)=>{let f=p;(u==="login"||u==="forgotPassword"&&!p)&&(f={}),l(u,f),_optionalChain([e, 'optionalCall', _43 => _43(u,f)])},P=()=>{let u={onScreenChange:g,onExternalNavigate:r,onError:t,redirectUrl:i};switch(s.currentScreen){case"forgotPassword":return _jsxruntime.jsx.call(void 0, ut,{...u});case"checkCode":return _jsxruntime.jsx.call(void 0, ht,{...u,searchParams:s.searchParams});case"resetPassword":return _jsxruntime.jsx.call(void 0, gt,{...u,searchParams:s.searchParams,passwordRules:n,onResetSuccess:()=>{let p=a("resetPassword.successMessage");c(p,"success"),g("login")}});default:return _jsxruntime.jsx.call(void 0, ct,{...u,onLoginSuccess:o})}};return _jsxruntime.jsxs.call(void 0, Pt,{children:[_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",mb:3},children:_jsxruntime.jsx.call(void 0, "img",{src:m.logo||"https://logos.crudia.com/nocios-default.png",alt:a("login.logoAlt"),style:{width:"100%",maxWidth:"150px",height:"auto"},onError:u=>{let p=u.target;p.src="https://logos.crudia.com/nocios-default.png"}})}),!m.logo&&m.appName&&_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h6",component:"h1",sx:{textAlign:"center",mb:2},children:m.appName}),P()]})},Cs= exports.CrudifyLogin =({translations:e,translationsUrl:r,language:o="en",initialScreen:t="login",autoReadFromCookies:i=!0,...n})=>{let{config:a}=_chunkBJEDX2HUjs.n.call(void 0, );return _jsxruntime.jsx.call(void 0, tt,{translations:e,translationsUrl:r,language:o,children:_jsxruntime.jsx.call(void 0, _chunkBJEDX2HUjs.k,{config:a,children:_jsxruntime.jsx.call(void 0, st,{config:a,initialScreen:t,autoReadFromCookies:i,children:_jsxruntime.jsx.call(void 0, bs,{...n})})})})};var _iconsmaterial = require('@mui/icons-material');var vt=({showExtendedData:e=!0,showProfileCard:r=!0,autoRefresh:o=!0})=>{let{userProfile:t,loading:i,error:n,extendedData:a,refreshProfile:s}=_chunkBJEDX2HUjs.p.call(void 0, {autoFetch:o,retryOnError:!0,maxRetries:3}),[l,m]=_react.useState.call(void 0, !1);if(i)return _jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",justifyContent:"center",alignItems:"center",p:3,children:[_jsxruntime.jsx.call(void 0, _material.CircularProgress,{}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{ml:2},children:"Cargando perfil de usuario..."})]});if(n)return _jsxruntime.jsxs.call(void 0, _material.Alert,{severity:"error",action:_jsxruntime.jsx.call(void 0, _material.IconButton,{color:"inherit",size:"small",onClick:s,children:_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",children:"Reintentar"})}),children:["Error al cargar el perfil: ",n]});if(!t)return _jsxruntime.jsx.call(void 0, _material.Alert,{severity:"warning",children:"No se encontr\xF3 informaci\xF3n del usuario"});let c=_nullishCoalesce(_optionalChain([a, 'optionalAccess', _44 => _44.displayData]), () => ({})),g=_nullishCoalesce(_optionalChain([a, 'optionalAccess', _45 => _45.totalFields]), () => (0)),P=b=>{if(!b)return"No disponible";try{return new Date(b).toLocaleString("es-ES",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch (e7){return b}},u=(b,w)=>w==null?"No disponible":typeof w=="boolean"?w?"S\xED":"No":typeof w=="string"?w:typeof w=="number"||typeof w=="bigint"?String(w):Array.isArray(w)?w.length>0?w.join(", "):"Ninguno":typeof w=="object"?JSON.stringify(w,null,2):JSON.stringify(w),p=[{key:"id",label:"ID",icon:_jsxruntime.jsx.call(void 0, _iconsmaterial.Badge,{})},{key:"email",label:"Email",icon:_jsxruntime.jsx.call(void 0, _iconsmaterial.Email,{})},{key:"username",label:"Usuario",icon:_jsxruntime.jsx.call(void 0, _iconsmaterial.Person,{})},{key:"fullName",label:"Nombre completo",icon:_jsxruntime.jsx.call(void 0, _iconsmaterial.AccountCircle,{})},{key:"role",label:"Rol",icon:_jsxruntime.jsx.call(void 0, _iconsmaterial.Security,{})}],f=[{key:"firstName",label:"Nombre"},{key:"lastName",label:"Apellido"},{key:"isActive",label:"Activo"},{key:"lastLogin",label:"\xDAltimo login"},{key:"createdAt",label:"Creado"},{key:"updatedAt",label:"Actualizado"}],d=new Set([...p.map(b=>b.key),...f.map(b=>b.key),"permissions"]),y=Object.keys(c).filter(b=>!d.has(b)).map(b=>({key:b,label:b}));return _jsxruntime.jsxs.call(void 0, _material.Box,{children:[r&&_jsxruntime.jsx.call(void 0, _material.Card,{sx:{mb:2},children:_jsxruntime.jsxs.call(void 0, _material.CardContent,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",alignItems:"center",mb:2,children:[_jsxruntime.jsx.call(void 0, _material.Avatar,{src:c.avatar,sx:{width:56,height:56,mr:2},children:_optionalChain([c, 'access', _46 => _46.fullName, 'optionalAccess', _47 => _47[0]])||_optionalChain([c, 'access', _48 => _48.username, 'optionalAccess', _49 => _49[0]])||_optionalChain([c, 'access', _50 => _50.email, 'optionalAccess', _51 => _51[0]])}),_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h6",children:c.fullName||c.username||c.email}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",children:c.role||"Usuario"}),c.isActive!==void 0&&_jsxruntime.jsx.call(void 0, _material.Chip,{label:c.isActive?"Activo":"Inactivo",color:c.isActive?"success":"error",size:"small",sx:{mt:.5}})]})]}),_jsxruntime.jsx.call(void 0, _material.Box,{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(250px, 1fr))",gap:2,children:p.map(({key:b,label:w,icon:E})=>c[b]?_jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",alignItems:"center",children:[_jsxruntime.jsx.call(void 0, _material.Box,{sx:{mr:1,color:"text.secondary"},children:E}),_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",color:"text.secondary",children:w}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",children:u(b,c[b])})]})]},b):null)}),c.permissions&&Array.isArray(c.permissions)&&c.permissions.length>0&&_jsxruntime.jsxs.call(void 0, _material.Box,{mt:2,children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",color:"text.secondary",display:"block",children:"Permisos"}),_jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",flexWrap:"wrap",gap:.5,mt:.5,children:[c.permissions.slice(0,5).map(b=>_jsxruntime.jsx.call(void 0, _material.Chip,{label:b,size:"small",variant:"outlined"},b)),c.permissions.length>5&&_jsxruntime.jsx.call(void 0, _material.Chip,{label:`+${c.permissions.length-5} m\xE1s`,size:"small"})]})]})]})}),e&&_jsxruntime.jsx.call(void 0, _material.Card,{children:_jsxruntime.jsxs.call(void 0, _material.CardContent,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"h6",display:"flex",alignItems:"center",children:[_jsxruntime.jsx.call(void 0, _iconsmaterial.Info,{sx:{mr:1}}),"Informaci\xF3n Detallada"]}),_jsxruntime.jsx.call(void 0, _material.Chip,{label:`${g} campos totales`,size:"small"})]}),_jsxruntime.jsxs.call(void 0, _material.List,{dense:!0,children:[f.map(({key:b,label:w})=>c[b]!==void 0&&_jsxruntime.jsxs.call(void 0, _material.ListItem,{divider:!0,children:[_jsxruntime.jsx.call(void 0, _material.ListItemIcon,{children:_jsxruntime.jsx.call(void 0, _iconsmaterial.Schedule,{fontSize:"small"})}),_jsxruntime.jsx.call(void 0, _material.ListItemText,{primary:w,secondary:(()=>{if(b.includes("At")||b.includes("Login")){let E=typeof c[b]=="string"?c[b]:void 0;return P(E)}return u(b,c[b])})()})]},b)),y.length>0&&_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, _material.Divider,{sx:{my:1}}),_jsxruntime.jsx.call(void 0, _material.ListItem,{children:_jsxruntime.jsx.call(void 0, _material.ListItemText,{primary:_jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",justifyContent:"space-between",alignItems:"center",children:[_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"subtitle2",children:["Campos Personalizados (",y.length,")"]}),_jsxruntime.jsx.call(void 0, _material.IconButton,{size:"small",onClick:()=>m(!l),children:l?_jsxruntime.jsx.call(void 0, _iconsmaterial.ExpandLess,{}):_jsxruntime.jsx.call(void 0, _iconsmaterial.ExpandMore,{})})]})})}),_jsxruntime.jsx.call(void 0, _material.Collapse,{in:l,children:y.map(({key:b,label:w})=>_jsxruntime.jsx.call(void 0, _material.ListItem,{sx:{pl:4},children:_jsxruntime.jsx.call(void 0, _material.ListItemText,{primary:w,secondary:u(b,c[b])})},b))})]})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{mt:2,display:"flex",justifyContent:"space-between",alignItems:"center",children:[_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"caption",color:"text.secondary",children:["\xDAltima actualizaci\xF3n: ",P(c.updatedAt)]}),_jsxruntime.jsx.call(void 0, _material.IconButton,{size:"small",onClick:s,disabled:i,children:_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",children:"Actualizar"})})]})]})})]})};var _reacti18next = require('react-i18next');var yo=({value:e,onChange:r,availableFields:o,error:t,disabled:i=!1})=>{let{t:n}=_reacti18next.useTranslation.call(void 0, ),[a,s]=_react.useState.call(void 0, "custom"),[l,m]=_react.useState.call(void 0, !1),c=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{l&&_optionalChain([c, 'access', _52 => _52.current, 'optionalAccess', _53 => _53.scrollIntoView, 'call', _54 => _54({behavior:"smooth",block:"start"})])},[l]);let g=_react.useRef.call(void 0, !1);_react.useEffect.call(void 0, ()=>{let d=e||{allow:[],owner_allow:[],deny:[]},y=new Set(o),b=(d.allow||[]).filter(C=>y.has(C)),w=(d.owner_allow||[]).filter(C=>y.has(C)),E=(d.deny||[]).filter(C=>y.has(C));o.forEach(C=>{!b.includes(C)&&!w.includes(C)&&!E.includes(C)&&E.push(C)});let T={allow:b,owner_allow:w,deny:E};JSON.stringify(T)!==JSON.stringify(d)&&r(T),b.length===o.length?s("all"):E.length===o.length?s("none"):s("custom")},[o,e]);let P=()=>{g.current=!0,r({allow:[...o],owner_allow:[],deny:[]}),s("all"),setTimeout(()=>{g.current=!1},0)},u=()=>{g.current=!0,r({allow:[],owner_allow:[],deny:[...o]}),s("none"),setTimeout(()=>{g.current=!1},0)},p=d=>_optionalChain([e, 'optionalAccess', _55 => _55.allow, 'optionalAccess', _56 => _56.includes, 'call', _57 => _57(d)])?"allow":_optionalChain([e, 'optionalAccess', _58 => _58.owner_allow, 'optionalAccess', _59 => _59.includes, 'call', _60 => _60(d)])?"owner_allow":"deny",f=(d,y)=>{g.current=!0;let b=new Set(_optionalChain([e, 'optionalAccess', _61 => _61.allow])||[]),w=new Set(_optionalChain([e, 'optionalAccess', _62 => _62.owner_allow])||[]),E=new Set(_optionalChain([e, 'optionalAccess', _63 => _63.deny])||[]);b.delete(d),w.delete(d),E.delete(d),y==="allow"&&b.add(d),y==="owner_allow"&&w.add(d),y==="deny"&&E.add(d),r({allow:Array.from(b),owner_allow:Array.from(w),deny:Array.from(E)}),s("custom"),setTimeout(()=>{g.current=!1},0)};return o.length===0?_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{mb:1},children:n("publicPolicies.fields.conditions.label")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{fontStyle:"italic"},children:n("publicPolicies.fields.conditions.noFieldsAvailable")}),t&&_jsxruntime.jsx.call(void 0, _material.FormHelperText,{error:!0,sx:{mt:1},children:t})]}):_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2},children:n("publicPolicies.fields.conditions.label")}),_jsxruntime.jsxs.call(void 0, _material.Stack,{direction:"row",spacing:1,alignItems:"center",sx:{mb:l?3:1},children:[_jsxruntime.jsx.call(void 0, _material.Button,{variant:a==="all"?"contained":"outlined",startIcon:_jsxruntime.jsx.call(void 0, _iconsmaterial.SelectAll,{}),onClick:P,disabled:i,size:"small",sx:{minWidth:120,...a==="all"&&{backgroundColor:"#16a34a","&:hover":{backgroundColor:"#15803d"}}},children:n("publicPolicies.fields.conditions.allFields")}),_jsxruntime.jsx.call(void 0, _material.Button,{variant:a==="none"?"contained":"outlined",startIcon:_jsxruntime.jsx.call(void 0, _iconsmaterial.ClearAll,{}),onClick:u,disabled:i,size:"small",sx:{minWidth:120,...a==="none"&&{backgroundColor:"#cf222e","&:hover":{backgroundColor:"#bc1f2c"}}},children:n("publicPolicies.fields.conditions.noFields")}),_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",alignItems:"center",px:1.5,py:.35,borderRadius:"999px",backgroundColor:"#f3f4f6",border:"1px solid #d1d9e0"},children:_jsxruntime.jsx.call(void 0, _material.FormControlLabel,{control:_jsxruntime.jsx.call(void 0, _material.Switch,{size:"small",checked:l,onChange:()=>m(d=>!d),disabled:i,color:"primary",sx:{transform:"scale(1.15)",transformOrigin:"center",m:0}}),label:n("publicPolicies.fields.conditions.customEdit"),labelPlacement:"end",sx:{ml:0,".MuiFormControlLabel-label":{fontSize:"0.75rem"}}})})]}),l&&_jsxruntime.jsxs.call(void 0, _material.Box,{ref:c,sx:{p:2,border:"1px solid #d1d9e0",borderRadius:1,backgroundColor:"#f6f8fa"},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2},children:n("publicPolicies.fields.conditions.help")}),_jsxruntime.jsx.call(void 0, _material.Stack,{spacing:1,children:o.map(d=>{let y=p(d);return _jsxruntime.jsxs.call(void 0, _material.Stack,{direction:"row",spacing:1,alignItems:"center",children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{minWidth:100,fontFamily:"monospace"},children:d}),_jsxruntime.jsxs.call(void 0, _material.ToggleButtonGroup,{value:y,exclusive:!0,size:"small",children:[_jsxruntime.jsxs.call(void 0, _material.ToggleButton,{value:"allow",onClick:()=>f(d,"allow"),disabled:i,sx:{px:2,color:y==="allow"?"#ffffff":"#6b7280",backgroundColor:y==="allow"?"#16a34a":"#f3f4f6",borderColor:y==="allow"?"#16a34a":"#d1d5db","&:hover":{backgroundColor:y==="allow"?"#15803d":"#e5e7eb",borderColor:y==="allow"?"#15803d":"#9ca3af"},"&.Mui-selected":{backgroundColor:"#16a34a",color:"#ffffff","&:hover":{backgroundColor:"#15803d"}}},children:[_jsxruntime.jsx.call(void 0, _iconsmaterial.CheckCircle,{sx:{fontSize:16,mr:.5}}),n("publicPolicies.fields.conditions.states.allow")]}),_jsxruntime.jsx.call(void 0, _material.ToggleButton,{value:"owner_allow",onClick:()=>f(d,"owner_allow"),disabled:i,sx:{px:2,color:y==="owner_allow"?"#ffffff":"#6b7280",backgroundColor:y==="owner_allow"?"#0ea5e9":"#f3f4f6",borderColor:y==="owner_allow"?"#0ea5e9":"#d1d5db","&:hover":{backgroundColor:y==="owner_allow"?"#0284c7":"#e5e7eb",borderColor:y==="owner_allow"?"#0284c7":"#9ca3af"},"&.Mui-selected":{backgroundColor:"#0ea5e9",color:"#ffffff","&:hover":{backgroundColor:"#0284c7"}}},children:n("publicPolicies.fields.conditions.states.ownerAllow")}),_jsxruntime.jsxs.call(void 0, _material.ToggleButton,{value:"deny",onClick:()=>f(d,"deny"),disabled:i,sx:{px:2,color:y==="deny"?"#ffffff":"#6b7280",backgroundColor:y==="deny"?"#dc2626":"#f3f4f6",borderColor:y==="deny"?"#dc2626":"#d1d5db","&:hover":{backgroundColor:y==="deny"?"#b91c1c":"#e5e7eb",borderColor:y==="deny"?"#b91c1c":"#9ca3af"},"&.Mui-selected":{backgroundColor:"#dc2626",color:"#ffffff","&:hover":{backgroundColor:"#b91c1c"}}},children:[_jsxruntime.jsx.call(void 0, _iconsmaterial.Cancel,{sx:{fontSize:16,mr:.5}}),n("publicPolicies.fields.conditions.states.deny")]})]})]},d)})})]}),t&&_jsxruntime.jsx.call(void 0, _material.FormHelperText,{error:!0,sx:{mt:1},children:t})]})};var Sr=_react.forwardRef.call(void 0, ({policy:e,onChange:r,onRemove:o,availableFields:t,isSubmitting:i=!1,usedActions:n,error:a},s)=>{let{t:l}=_reacti18next.useTranslation.call(void 0, ),m=new Set(Array.from(n||[]));m.delete(e.action);let c=_chunk5V5ILPP3js.a.map(g=>({value:g,label:l(`publicPolicies.fields.action.options.${g}`)}));return _jsxruntime.jsxs.call(void 0, _material.Paper,{ref:s,sx:{p:3,border:"1px solid #d1d9e0",borderRadius:2,position:"relative",backgroundColor:"#ffffff"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",mb:3},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"subtitle1",sx:{fontWeight:600,color:"#111418",fontSize:"1rem"},children:l("publicPolicies.policyTitle")}),_jsxruntime.jsx.call(void 0, _material.IconButton,{onClick:o,size:"small",disabled:i,"aria-label":l("publicPolicies.removePolicy"),sx:{color:"#656d76","&:hover":{color:"#cf222e",backgroundColor:"rgba(207, 34, 46, 0.1)"}},children:_jsxruntime.jsx.call(void 0, _iconsmaterial.Delete,{})})]}),_jsxruntime.jsxs.call(void 0, _material.Stack,{spacing:1,children:[_jsxruntime.jsx.call(void 0, _material.Stack,{direction:{xs:"column",md:"row"},spacing:2,children:_jsxruntime.jsx.call(void 0, _material.Box,{sx:{flex:1,minWidth:200},children:_jsxruntime.jsxs.call(void 0, _material.FormControl,{fullWidth:!0,children:[_jsxruntime.jsx.call(void 0, _material.InputLabel,{children:l("publicPolicies.fields.action.label")}),_jsxruntime.jsx.call(void 0, _material.Select,{value:e.action,label:l("publicPolicies.fields.action.label"),disabled:i,onChange:g=>{let P=g.target.value,u={...e,action:P};P==="delete"?(u.permission="deny",delete u.fields):(u.fields={allow:[],owner_allow:[],deny:t},delete u.permission),r(u)},sx:{backgroundColor:"#ffffff","&:hover .MuiOutlinedInput-notchedOutline":{borderColor:"#8c959f"},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"#0969da",borderWidth:2}},children:c.map(g=>{let P=m.has(g.value);return _jsxruntime.jsx.call(void 0, _material.MenuItem,{value:g.value,disabled:P,children:g.label},g.value)})}),a&&_jsxruntime.jsx.call(void 0, _material.FormHelperText,{error:!0,children:a})]})})}),e.action==="delete"?_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2},children:l("publicPolicies.fields.conditions.label")}),_jsxruntime.jsxs.call(void 0, _material.Stack,{direction:"row",spacing:1,sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Button,{variant:e.permission==="*"?"contained":"outlined",startIcon:_jsxruntime.jsx.call(void 0, _iconsmaterial.SelectAll,{}),onClick:()=>r({...e,permission:"*"}),disabled:i,size:"small",sx:{minWidth:140,whiteSpace:"nowrap",...e.permission==="*"&&{backgroundColor:"#16a34a","&:hover":{backgroundColor:"#15803d"}}},children:l("publicPolicies.fields.conditions.allFields")}),_jsxruntime.jsx.call(void 0, _material.Button,{variant:e.permission==="owner"?"contained":"outlined",onClick:()=>r({...e,permission:"owner"}),disabled:i,size:"small",sx:{minWidth:140,whiteSpace:"nowrap",...e.permission==="owner"&&{backgroundColor:"#0ea5e9","&:hover":{backgroundColor:"#0284c7"}}},children:l("publicPolicies.fields.conditions.states.ownerAllow")}),_jsxruntime.jsx.call(void 0, _material.Button,{variant:e.permission==="deny"?"contained":"outlined",startIcon:_jsxruntime.jsx.call(void 0, _iconsmaterial.ClearAll,{}),onClick:()=>r({...e,permission:"deny"}),disabled:i,size:"small",sx:{minWidth:140,whiteSpace:"nowrap",...e.permission==="deny"&&{backgroundColor:"#cf222e","&:hover":{backgroundColor:"#bc1f2c"}}},children:l("publicPolicies.fields.conditions.noFields")})]})]}):_jsxruntime.jsx.call(void 0, yo,{value:e.fields||{allow:[],owner_allow:[],deny:[]},onChange:g=>r({...e,fields:g}),availableFields:t,disabled:i}),_jsxruntime.jsx.call(void 0, _material.Paper,{variant:"outlined",sx:{p:2,backgroundColor:"#f9fafb"},children:e.action==="delete"?_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"span",sx:{color:e.permission==="*"?"#16a34a":e.permission==="owner"?"#0ea5e9":"#dc2626"},children:[l("publicPolicies.fields.conditions.states.allow"),":"]})," ",e.permission||"-"]}):_jsxruntime.jsxs.call(void 0, _material.Stack,{spacing:.5,divider:_jsxruntime.jsx.call(void 0, _material.Divider,{sx:{borderColor:"#e5e7eb"}}),children:[_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"span",sx:{color:"#16a34a"},children:[l("publicPolicies.fields.conditions.states.allow"),":"]})," ",(_optionalChain([e, 'optionalAccess', _64 => _64.fields, 'optionalAccess', _65 => _65.allow])||[]).join(", ")||"-"]}),_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"span",sx:{color:"#0ea5e9"},children:[l("publicPolicies.fields.conditions.states.ownerAllow"),":"]})," ",(_optionalChain([e, 'optionalAccess', _66 => _66.fields, 'optionalAccess', _67 => _67.owner_allow])||[]).join(", ")||"-"]}),_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"span",sx:{color:"#dc2626"},children:[l("publicPolicies.fields.conditions.states.deny"),":"]})," ",(_optionalChain([e, 'optionalAccess', _68 => _68.fields, 'optionalAccess', _69 => _69.deny])||[]).join(", ")||"-"]})]})})]})]})});Sr.displayName="PolicyItem";var da=()=>{if(typeof globalThis<"u"&&_optionalChain([globalThis, 'access', _70 => _70.crypto, 'optionalAccess', _71 => _71.randomUUID]))return globalThis.crypto.randomUUID();let e=new Uint32Array(2);return globalThis.crypto.getRandomValues(e),`${Date.now()}-${e[0].toString(16)}${e[1].toString(16)}`},ua= exports.Policies =({policies:e,onChange:r,availableFields:o,errors:t,isSubmitting:i=!1})=>{let{t:n}=_reacti18next.useTranslation.call(void 0, ),a=_react.useRef.call(void 0, {}),s=new Set((e||[]).map(p=>p.action).filter(Boolean)),l=_chunk5V5ILPP3js.b.filter(p=>!s.has(p)),m=l.length>0,c=()=>{let p=l[0]||"create",f={id:da(),action:p};p==="delete"?f.permission="deny":f.fields={allow:[],owner_allow:[],deny:o};let d=[...e||[],f];r(d),setTimeout(()=>{let y=d.length-1,b=a.current[y];b&&b.scrollIntoView({behavior:"smooth",block:"center"})},100)},g=p=>{let f=[...e];f.splice(p,1),r(f)},P=(()=>{if(!t)return null;if(typeof t=="string")return t;let p=t._error;return typeof p=="string"?p:null})(),u=new Set((e||[]).map(p=>p.action));return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, _material.Divider,{sx:{borderColor:"#e0e4e7"}}),_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Box,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:3,children:_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h6",sx:{fontWeight:600,color:"#111418",mb:1},children:n("publicPolicies.title")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{fontSize:"0.875rem"},children:n("publicPolicies.description")})]})}),P&&_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"error",sx:{mb:3},children:P}),_jsxruntime.jsxs.call(void 0, _material.Stack,{spacing:3,children:[(e||[]).length===0?_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"info",children:n("publicPolicies.noPolicies")}):e.map((p,f)=>_jsxruntime.jsx.call(void 0, Sr,{ref:d=>{a.current[f]=d},policy:p,onChange:d=>{let y=[...e];y[f]=d,r(y)},onRemove:()=>g(f),availableFields:o,isSubmitting:i,usedActions:u,error:typeof t=="object"&&t!==null&&!("_error"in t)&&p.id in t?t[p.id]:void 0},p.id)),m&&_jsxruntime.jsx.call(void 0, _material.Box,{children:_jsxruntime.jsx.call(void 0, _material.Button,{type:"button",variant:"outlined",startIcon:_jsxruntime.jsx.call(void 0, _iconsmaterial.Add,{}),onClick:c,disabled:i,sx:{borderColor:"#d0d7de",color:"#656d76","&:hover":{borderColor:"#8c959f",backgroundColor:"transparent"}},children:n("publicPolicies.addPolicy")})})]})]})]})};var ha=(e={})=>{try{let r=_chunkGZOB4JDBjs.k.call(void 0, );if(r.configSource!=="none"&&r.theme)return{...e,...r.theme}}catch(r){_chunkGZOB4JDBjs.j.warn("Error reading theme from config",r instanceof Error?{errorMessage:r.message}:{message:String(r)})}return e};function ba({children:e,defaultTheme:r={},disableCssBaseline:o=!1}){let t=_react.useMemo.call(void 0, ()=>{let i=ha(r);return _material.createTheme.call(void 0, i)},[r]);return _jsxruntime.jsxs.call(void 0, _material.ThemeProvider,{theme:t,children:[!o&&_jsxruntime.jsx.call(void 0, _material.CssBaseline,{}),e]})}function wa(){let[e,r]=_react.useState.call(void 0, ""),[o,t]=_react.useState.call(void 0, ""),[i,n]=_react.useState.call(void 0, !1),{isAuthenticated:a,isLoading:s,error:l,login:m,logout:c,refreshTokens:g,clearError:P,isExpiringSoon:u,expiresIn:p}=_chunkBJEDX2HUjs.n.call(void 0, ),f=async b=>{if(b.preventDefault(),!e||!o)return;(await m(e,o)).success&&(r(""),t(""),n(!1))},d=async()=>{await c()},y=async()=>{await g()};return a?_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{maxWidth:600,mx:"auto",p:3},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h4",gutterBottom:!0,children:"Welcome! \u{1F389}"}),_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"success",sx:{mb:3},children:"You are successfully logged in with Refresh Token Pattern enabled"}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:3,p:2,bgcolor:"background.paper",border:1,borderColor:"divider",borderRadius:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h6",gutterBottom:!0,children:"Token Status"}),_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",children:["Access Token expires in: ",Math.round(p/1e3/60)," minutes"]}),u&&_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"warning",sx:{mt:1},children:"Token expires soon - automatic refresh will happen"})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[_jsxruntime.jsx.call(void 0, _material.Button,{variant:"contained",onClick:y,disabled:s,startIcon:s?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:16}):null,children:"Refresh Tokens"}),_jsxruntime.jsx.call(void 0, _material.Button,{variant:"outlined",color:"error",onClick:d,disabled:s,children:"Logout"})]}),l&&_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"error",sx:{mt:2},onClose:P,children:l})]}):_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{maxWidth:400,mx:"auto",p:3},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h4",gutterBottom:!0,align:"center",children:"Login with Refresh Tokens"}),_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"info",sx:{mb:3},children:"This demo shows the new Refresh Token Pattern with automatic session management"}),i?_jsxruntime.jsxs.call(void 0, "form",{onSubmit:f,children:[_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,label:"Email",type:"email",value:e,onChange:b=>r(b.target.value),margin:"normal",required:!0,autoComplete:"email"}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,label:"Password",type:"password",value:o,onChange:b=>t(b.target.value),margin:"normal",required:!0,autoComplete:"current-password"}),_jsxruntime.jsx.call(void 0, _material.Button,{type:"submit",fullWidth:!0,variant:"contained",size:"large",disabled:s,startIcon:s?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:16}):null,sx:{mt:3,mb:2},children:s?"Logging in...":"Login"})]}):_jsxruntime.jsx.call(void 0, _material.Button,{fullWidth:!0,variant:"contained",size:"large",onClick:()=>n(!0),sx:{mt:2},children:"Show Login Form"}),l&&_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"error",sx:{mt:2},onClose:P,children:l})]})}function xa(){let{isAuthenticated:e,isLoading:r,isExpiringSoon:o,expiresIn:t}=_chunkBJEDX2HUjs.n.call(void 0, );return r?_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",alignItems:"center",gap:1},children:[_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:16}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",children:"Loading session..."})]}):e?_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",color:"success.main",children:"\u2713 Authenticated"}),o&&_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"caption",color:"warning.main",display:"block",children:["\u26A0 Token expires in ",Math.round(t/1e3/60)," min"]})]}):_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",color:"text.secondary",children:"Not logged in"})}var _TextField = require('@mui/material/TextField'); var _TextField2 = _interopRequireDefault(_TextField);var _CircularProgress = require('@mui/material/CircularProgress'); var _CircularProgress2 = _interopRequireDefault(_CircularProgress);var _InputAdornment = require('@mui/material/InputAdornment'); var _InputAdornment2 = _interopRequireDefault(_InputAdornment);var _IconButton = require('@mui/material/IconButton'); var _IconButton2 = _interopRequireDefault(_IconButton);var _Refresh = require('@mui/icons-material/Refresh'); var _Refresh2 = _interopRequireDefault(_Refresh);var Sa=e=>e.replaceAll(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replaceAll(/javascript:/gi,"").replaceAll(/on\w+\s*=/gi,"").replaceAll(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,""),Ia=({html:e})=>_jsxruntime.jsx.call(void 0, "span",{dangerouslySetInnerHTML:{__html:Sa(e)}}),Aa= exports.CrudiaAutoGenerate =({config:e,value:r,onChange:o,label:t,error:i=!1,helperText:n,readOnly:a=!1,disabled:s=!1,name:l,containerRef:m})=>{let{value:c,loading:g,error:P,regenerate:u}=_chunkBJEDX2HUjs.q.call(void 0, e,{autoFetch:!r,onSuccess:w=>{_optionalChain([o, 'optionalCall', _72 => _72(w)])}}),p=r||c,f=i||!!P,d=P||n,y=f&&d&&(d.toLowerCase().includes("duplicate")||d.toLowerCase().includes("duplicado")||d.toLowerCase().includes("duplicada")||d.toLowerCase().includes("unique")||d.toLowerCase().includes("\xFAnico")||d.toLowerCase().includes("unico")||d.toLowerCase().includes("\xFAnica")||d.toLowerCase().includes("unica")||d.toLowerCase().includes("already exists")||d.toLowerCase().includes("ya existe")||d.toLowerCase().includes("e11000"));return _jsxruntime.jsx.call(void 0, "div",{ref:m,children:_jsxruntime.jsx.call(void 0, _TextField2.default,{name:l,label:t,fullWidth:!0,value:p,error:f,helperText:d?_jsxruntime.jsx.call(void 0, Ia,{html:d}):" ",disabled:s,slotProps:{input:{readOnly:!0,startAdornment:g?_jsxruntime.jsx.call(void 0, _InputAdornment2.default,{position:"start",children:_jsxruntime.jsx.call(void 0, _CircularProgress2.default,{size:20})}):void 0,endAdornment:y&&!g?_jsxruntime.jsx.call(void 0, _InputAdornment2.default,{position:"end",children:_jsxruntime.jsx.call(void 0, _IconButton2.default,{edge:"end",onClick:async()=>{!s&&!g&&await u()},disabled:s,size:"small",color:"error","aria-label":"regenerar c\xF3digo",title:"Regenerar c\xF3digo",children:_jsxruntime.jsx.call(void 0, _Refresh2.default,{})})}):void 0}}})})};var _Box = require('@mui/material/Box'); var _Box2 = _interopRequireDefault(_Box);var _Typography = require('@mui/material/Typography'); var _Typography2 = _interopRequireDefault(_Typography);var _List = require('@mui/material/List'); var _List2 = _interopRequireDefault(_List);var _FormHelperText = require('@mui/material/FormHelperText'); var _FormHelperText2 = _interopRequireDefault(_FormHelperText);var _t=e=>e.replaceAll(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replaceAll(/javascript:/gi,"").replaceAll(/on\w+\s*=/gi,"").replaceAll(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,""),Po=(e,r)=>{let o=e.endsWith("/")?e.slice(0,-1):e,t=r.startsWith("/")?r.slice(1):r;return`${o}/${t}`},Nt=e=>{if(e===0)return"0 B";let r=1024,o=["B","KB","MB","GB"],t=Math.floor(Math.log(e)/Math.log(r));return`${Number.parseFloat((e/Math.pow(r,t)).toFixed(1))} ${o[t]}`};var xo=({disabled:e,onFilesDropped:r,onInteraction:o})=>{let[t,i]=_react.useState.call(void 0, !1),n=_react.useCallback.call(void 0, l=>{l.preventDefault(),l.stopPropagation(),e||i(!0)},[e]),a=_react.useCallback.call(void 0, l=>{l.preventDefault(),l.stopPropagation(),i(!1)},[]),s=_react.useCallback.call(void 0, l=>{if(l.preventDefault(),l.stopPropagation(),i(!1),e)return;_optionalChain([o, 'optionalCall', _73 => _73()]);let m=l.dataTransfer.files;m&&m.length>0&&r(m)},[e,r,o]);return{isDragging:t,handleDragOver:n,handleDragLeave:a,handleDrop:s}};var To=({deleteFileImmediately:e})=>{let[r,o]=_react.useState.call(void 0, !1),[t,i]=_react.useState.call(void 0, null),[n,a]=_react.useState.call(void 0, !1),s=_react.useCallback.call(void 0, c=>{i(c),o(!0)},[]),l=_react.useCallback.call(void 0, async()=>{if(t){a(!0);try{let c=await e(t);c.success||_chunkGZOB4JDBjs.j.error("Error deleting file",{error:c.error})}finally{a(!1),o(!1),i(null)}}},[t,e]),m=_react.useCallback.call(void 0, ()=>{o(!1),i(null)},[]);return{isOpen:r,isDeleting:n,fileToDelete:t,openConfirmation:s,handleConfirm:l,handleCancel:m}};var _LinearProgress = require('@mui/material/LinearProgress'); var _LinearProgress2 = _interopRequireDefault(_LinearProgress);var _ListItem = require('@mui/material/ListItem'); var _ListItem2 = _interopRequireDefault(_ListItem);var _ListItemText = require('@mui/material/ListItemText'); var _ListItemText2 = _interopRequireDefault(_ListItemText);var _Delete = require('@mui/icons-material/Delete'); var _Delete2 = _interopRequireDefault(_Delete);var _Restore = require('@mui/icons-material/Restore'); var _Restore2 = _interopRequireDefault(_Restore);var _Chip = require('@mui/material/Chip'); var _Chip2 = _interopRequireDefault(_Chip);var _InsertDriveFile = require('@mui/icons-material/InsertDriveFile'); var _InsertDriveFile2 = _interopRequireDefault(_InsertDriveFile);var _Image = require('@mui/icons-material/Image'); var _Image2 = _interopRequireDefault(_Image);var _PictureAsPdf = require('@mui/icons-material/PictureAsPdf'); var _PictureAsPdf2 = _interopRequireDefault(_PictureAsPdf);var _Error = require('@mui/icons-material/Error'); var _Error2 = _interopRequireDefault(_Error);var Eo=e=>e.startsWith("image/")?_jsxruntime.jsx.call(void 0, _Image2.default,{color:"primary"}):e==="application/pdf"?_jsxruntime.jsx.call(void 0, _PictureAsPdf2.default,{color:"error"}):_jsxruntime.jsx.call(void 0, _InsertDriveFile2.default,{color:"action"}),Bt=(e,r)=>{switch(e){case"completed":return _jsxruntime.jsx.call(void 0, _CheckCircle2.default,{color:"success",fontSize:"small"});case"error":return _jsxruntime.jsx.call(void 0, _Error2.default,{color:"error",fontSize:"small"});case"uploading":case"pending":return _jsxruntime.jsx.call(void 0, _CircularProgress2.default,{size:16});case"removing":return _jsxruntime.jsx.call(void 0, _CircularProgress2.default,{size:16,color:"error"});case"pendingDeletion":return _jsxruntime.jsx.call(void 0, _Chip2.default,{label:r("base.file.pendingDeletion"),size:"small",color:"warning",variant:"outlined",sx:{fontSize:"0.65rem",height:20}});default:return null}};var Io=({file:e,baseUrl:r,disabled:o,onRemove:t,onRestore:i,onRetry:n})=>{let{t:a}=we(),[s,l]=_react.useState.call(void 0, !1),m=e.status==="pendingDeletion",c=!o&&e.status!=="uploading"&&e.status!=="removing"&&!m,g=!o&&m,P=!o&&e.status==="error"&&e.file,u=e.contentType.startsWith("image/"),p=e.visibility==="public"||_optionalChain([e, 'access', _74 => _74.filePath, 'optionalAccess', _75 => _75.startsWith, 'call', _76 => _76("public/")])||_optionalChain([e, 'access', _77 => _77.filePath, 'optionalAccess', _78 => _78.startsWith, 'call', _79 => _79(r)]),d=!e.filePath||!p?null:e.filePath.startsWith("http://")||e.filePath.startsWith("https://")||e.filePath.startsWith(r)?e.filePath:Po(r,e.filePath),y=e.status==="completed"&&d,b=()=>u&&y&&!s?_jsxruntime.jsx.call(void 0, _Box2.default,{component:y?"a":"div",href:d||void 0,target:"_blank",rel:"noopener noreferrer",sx:{width:48,height:48,borderRadius:1,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"center",bgcolor:"grey.100",border:"1px solid",borderColor:"divider",cursor:y?"pointer":"default",transition:"all 0.2s ease",flexShrink:0,"&:hover":y?{borderColor:"primary.main",transform:"scale(1.05)"}:{}},children:_jsxruntime.jsx.call(void 0, "img",{src:d,alt:e.name,style:{width:"100%",height:"100%",objectFit:"cover"},onError:()=>l(!0)})}):_jsxruntime.jsx.call(void 0, _Box2.default,{component:y?"a":"div",href:d||void 0,target:"_blank",rel:"noopener noreferrer",sx:{width:48,height:48,borderRadius:1,display:"flex",alignItems:"center",justifyContent:"center",bgcolor:"grey.50",border:"1px solid",borderColor:"divider",cursor:y?"pointer":"default",transition:"all 0.2s ease",flexShrink:0,textDecoration:"none","&:hover":y?{borderColor:"primary.main",bgcolor:"action.hover"}:{}},children:Eo(e.contentType)});return _jsxruntime.jsxs.call(void 0, _ListItem2.default,{sx:{borderRadius:1,mb:.5,bgcolor:e.status==="error"?"error.lighter":"background.paper",border:"1px solid",borderColor:e.status==="error"?"error.light":"divider",gap:1.5},secondaryAction:_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[P&&_jsxruntime.jsx.call(void 0, _IconButton2.default,{edge:"end",size:"small",onClick:()=>n(e.id),color:"primary",title:a("base.file.restore"),children:_jsxruntime.jsx.call(void 0, _Refresh2.default,{fontSize:"small"})}),g&&_jsxruntime.jsx.call(void 0, _IconButton2.default,{edge:"end",size:"small",onClick:()=>i(e.id),color:"primary",title:a("base.file.restore"),children:_jsxruntime.jsx.call(void 0, _Restore2.default,{fontSize:"small"})}),c&&_jsxruntime.jsx.call(void 0, _IconButton2.default,{edge:"end",size:"small",onClick:()=>t(e.id),color:"error",title:a("base.file.delete"),children:_jsxruntime.jsx.call(void 0, _Delete2.default,{fontSize:"small"})})]}),children:[b(),_jsxruntime.jsx.call(void 0, _ListItemText2.default,{primary:_jsxruntime.jsxs.call(void 0, _Box2.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"body2",noWrap:!0,sx:{maxWidth:200,overflow:"hidden",textOverflow:"ellipsis",textDecoration:m?"line-through":"none",opacity:m?.6:1},children:e.name}),Bt(e.status,a)]}),secondary:_jsxruntime.jsxs.call(void 0, _Box2.default,{sx:{opacity:m?.6:1},children:[e.size>0&&_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"caption",color:"text.secondary",children:Nt(e.size)}),e.status==="uploading"&&_jsxruntime.jsx.call(void 0, _LinearProgress2.default,{variant:"determinate",value:e.progress,sx:{mt:.5,height:4,borderRadius:2}}),e.status==="error"&&e.errorMessage&&_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"caption",color:"error",display:"block",children:e.errorMessage}),y&&_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"caption",color:"primary",display:"block",component:"a",href:d||void 0,target:"_blank",rel:"noopener noreferrer",sx:{cursor:"pointer",textDecoration:"underline","&:hover":{textDecoration:"none"}},children:a(u?"base.file.clickToPreview":"base.file.clickToDownload")})]})})]})};var _BrokenImage = require('@mui/icons-material/BrokenImage'); var _BrokenImage2 = _interopRequireDefault(_BrokenImage);var _Paper = require('@mui/material/Paper'); var _Paper2 = _interopRequireDefault(_Paper);var _CloudUpload = require('@mui/icons-material/CloudUpload'); var _CloudUpload2 = _interopRequireDefault(_CloudUpload);var Ja=(e,r)=>e?"primary.main":r?"error.main":"divider",Xa=(e,r)=>e?"primary.lighter":r?"action.disabledBackground":"background.paper",Za=(e,r)=>e?"primary.main":r?"action.disabled":"action.active",Ao=({isDragging:e,disabled:r,hasError:o,placeholder:t,accept:i,onClick:n,onDragOver:a,onDragLeave:s,onDrop:l})=>_jsxruntime.jsxs.call(void 0, _Paper2.default,{variant:"outlined",onClick:n,onDragOver:a,onDragLeave:s,onDrop:l,sx:{p:3,textAlign:"center",cursor:r?"not-allowed":"pointer",borderStyle:"dashed",borderWidth:2,borderColor:Ja(e,o),bgcolor:Xa(e,r),transition:"all 0.2s ease","&:hover":r?{}:{borderColor:"primary.main",bgcolor:"action.hover"}},children:[_jsxruntime.jsx.call(void 0, _CloudUpload2.default,{sx:{fontSize:48,color:Za(e,r),mb:1}}),_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"body2",color:r?"text.disabled":"text.secondary",children:t}),i&&i.length>0&&!e&&_jsxruntime.jsx.call(void 0, _Box2.default,{sx:{mt:1,display:"flex",gap:.5,justifyContent:"center",flexWrap:"wrap"},children:i.map(m=>_jsxruntime.jsx.call(void 0, _Chip2.default,{label:_optionalChain([m, 'access', _80 => _80.split, 'call', _81 => _81("/"), 'access', _82 => _82[1], 'optionalAccess', _83 => _83.toUpperCase, 'call', _84 => _84()])||m,size:"small",variant:"outlined",sx:{fontSize:"0.7rem"}},m))})]});var _Dialog = require('@mui/material/Dialog'); var _Dialog2 = _interopRequireDefault(_Dialog);var _DialogTitle = require('@mui/material/DialogTitle'); var _DialogTitle2 = _interopRequireDefault(_DialogTitle);var _DialogContent = require('@mui/material/DialogContent'); var _DialogContent2 = _interopRequireDefault(_DialogContent);var _DialogActions = require('@mui/material/DialogActions'); var _DialogActions2 = _interopRequireDefault(_DialogActions);var _Button = require('@mui/material/Button'); var _Button2 = _interopRequireDefault(_Button);var ko=({open:e,isDeleting:r,onConfirm:o,onCancel:t,title:i,message:n,cancelText:a,confirmText:s,deletingText:l})=>_jsxruntime.jsxs.call(void 0, _Dialog2.default,{open:e,onClose:r?void 0:t,children:[_jsxruntime.jsx.call(void 0, _DialogTitle2.default,{children:i}),_jsxruntime.jsx.call(void 0, _DialogContent2.default,{children:_jsxruntime.jsx.call(void 0, _Typography2.default,{children:n})}),_jsxruntime.jsxs.call(void 0, _DialogActions2.default,{children:[_jsxruntime.jsx.call(void 0, _Button2.default,{onClick:t,disabled:r,children:a}),_jsxruntime.jsx.call(void 0, _Button2.default,{onClick:o,color:"error",variant:"contained",disabled:r,startIcon:r?_jsxruntime.jsx.call(void 0, _CircularProgress2.default,{size:16,color:"inherit"}):void 0,children:r?l:s})]})]});var cl=e=>e.status==="completed"&&typeof e.filePath=="string"&&e.filePath.length>0,qt= exports.CrudiaFileField =({label:e,accept:r,maxFileSize:o=10*1024*1024,multiple:t=!1,maxFiles:i,minFiles:n=0,required:a=!1,disabled:s=!1,error:l=!1,helperText:m,onChange:c,onValidation:g,initialFiles:P,placeholder:u,showFileList:p=!0,visibility:f="private",showPreview:d=!0,baseUrl:y,onDeletionHandlersReady:b,mode:w="create",name:E,containerRef:T})=>{let{t:C}=we(),v=_react.useRef.call(void 0, null),k=t?i:1,j=a?Math.max(n,1):n,Ge={acceptedTypes:r,maxFileSize:o,maxFiles:k,minFiles:j,visibility:f,mode:w,onFilesChange:re=>{let Pe=re.filter(cl).map(yn=>{let Mr=yn.filePath;return Mr.startsWith("/")?Mr:`/${Mr}`});_optionalChain([c, 'optionalCall', _85 => _85(Pe)])}},{files:me,isUploading:ae,addFiles:Y,removeFile:he,restoreFile:De,retryUpload:R,isValid:O,validationError:Q,validationErrorKey:M,validationErrorParams:_,initializeFiles:le,markAsTouched:be,isSubmitted:Se,markAsSubmitted:cr,commitDeletions:dr,restorePendingDeletions:N,hasPendingDeletions:L,deleteFileImmediately:J,activeFileCount:ee,waitForUploads:q,completedFilePaths:ne}=_chunkBJEDX2HUjs.t.call(void 0, Ge),Ce=_react.useCallback.call(void 0, ()=>ne,[ne]),Ho=_react.useRef.call(void 0, !1),Br=_react.useRef.call(void 0, !1);_react2.default.useEffect(()=>{if(P&&P.length>0&&!Ho.current&&!Br.current){Br.current=!0;try{le(P,y),Ho.current=!0}catch(Pe){_chunkGZOB4JDBjs.j.error("Failed to initialize files",{error:Pe})}finally{Br.current=!1}}},[P,le,y]),_react2.default.useEffect(()=>{_optionalChain([g, 'optionalCall', _86 => _86(O,Q)])},[O,Q,g]),_react2.default.useEffect(()=>{b&&b({commitDeletions:dr,restorePendingDeletions:N,hasPendingDeletions:L,markAsSubmitted:cr,isValid:O,isUploading:ae,waitForUploads:q,getCompletedFilePaths:Ce})},[b,dr,N,L,cr,O,ae,q,Ce]);let{isDragging:qo,handleDragOver:ln,handleDragLeave:cn,handleDrop:dn}=xo({disabled:s,onFilesDropped:re=>{Y(re)},onInteraction:be}),Oe=To({deleteFileImmediately:J}),un=_react.useCallback.call(void 0, re=>{be();let Pe=re.target.files;Pe&&Pe.length>0&&Y(Pe),v.current&&(v.current.value="")},[Y,be]),pn=_react.useCallback.call(void 0, ()=>{s||_optionalChain([v, 'access', _87 => _87.current, 'optionalAccess', _88 => _88.click, 'call', _89 => _89()])},[s]),mn=_react.useCallback.call(void 0, async re=>{(await he(re)).needsConfirmation&&Oe.openConfirmation(re)},[he,Oe]),fn=_nullishCoalesce(_optionalChain([r, 'optionalAccess', _90 => _90.join, 'call', _91 => _91(",")]), () => ("")),gn=!s&&(t||ee===0),Wo=Se&&!O,zr=l||Wo,Go=m||(Wo&&M?C(M,_):null);return _jsxruntime.jsx.call(void 0, "div",{ref:T,children:_jsxruntime.jsxs.call(void 0, _Box2.default,{sx:{width:"100%"},children:[e&&_jsxruntime.jsxs.call(void 0, _Typography2.default,{variant:"body2",sx:{mb:1,fontWeight:500,color:zr?"error.main":"text.primary"},children:[e,a&&_jsxruntime.jsx.call(void 0, "span",{style:{color:"red"},children:" *"})]}),_jsxruntime.jsx.call(void 0, "input",{ref:v,type:"file",name:E,accept:fn,multiple:t,onChange:un,disabled:s,style:{display:"none"}}),gn&&_jsxruntime.jsx.call(void 0, Ao,{isDragging:qo,disabled:s,hasError:zr,placeholder:u||C(qo?"base.file.dropHere":"base.file.dragOrClick"),accept:r,onClick:pn,onDragOver:ln,onDragLeave:cn,onDrop:dn}),p&&me.length>0&&_jsxruntime.jsx.call(void 0, _List2.default,{dense:!0,sx:{mt:1,p:0},children:me.map(re=>_jsxruntime.jsx.call(void 0, Io,{file:re,baseUrl:y,disabled:s,onRemove:mn,onRestore:De,onRetry:R},re.id))}),ae&&_jsxruntime.jsxs.call(void 0, _Box2.default,{sx:{display:"flex",alignItems:"center",gap:1,mt:1},children:[_jsxruntime.jsx.call(void 0, _CircularProgress2.default,{size:16}),_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"caption",color:"text.secondary",children:C("base.file.uploading")})]}),Go&&_jsxruntime.jsx.call(void 0, _FormHelperText2.default,{error:zr,sx:{mt:.5},dangerouslySetInnerHTML:{__html:_t(Go)}}),_jsxruntime.jsx.call(void 0, ko,{open:Oe.isOpen,isDeleting:Oe.isDeleting,onConfirm:Oe.handleConfirm,onCancel:Oe.handleCancel,title:C("base.file.confirmDelete.title"),message:C("base.file.confirmDelete.message"),cancelText:C("base.file.confirmDelete.cancel"),confirmText:C("base.file.confirmDelete.confirm"),deletingText:C("base.file.deleting")})]})})};var _editor = require('@mdxeditor/editor');require('@mdxeditor/editor/style.css');var Al=()=>_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, _editor.UndoRedo,{}),_jsxruntime.jsx.call(void 0, _editor.Separator,{}),_jsxruntime.jsx.call(void 0, _editor.BoldItalicUnderlineToggles,{}),_jsxruntime.jsx.call(void 0, _editor.Separator,{}),_jsxruntime.jsx.call(void 0, _editor.BlockTypeSelect,{}),_jsxruntime.jsx.call(void 0, _editor.Separator,{}),_jsxruntime.jsx.call(void 0, _editor.ListsToggle,{}),_jsxruntime.jsx.call(void 0, _editor.Separator,{}),_jsxruntime.jsx.call(void 0, _editor.CreateLink,{}),_jsxruntime.jsx.call(void 0, _editor.InsertTable,{})]}),kl=()=>_jsxruntime.jsx.call(void 0, Al,{}),Ll= exports.CrudiaMarkdownField =({label:e,value:r="",onChange:o,required:t=!1,disabled:i=!1,error:n=!1,helperText:a,placeholder:s="Write here...",minHeight:l=200,maxHeight:m=500,name:c,containerRef:g})=>{let P=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{P.current&&P.current.getMarkdown()!==r&&P.current.setMarkdown(_nullishCoalesce(r, () => ("")))},[r]);let u=_react.useCallback.call(void 0, p=>{_optionalChain([o, 'optionalCall', _92 => _92(p)])},[o]);return _jsxruntime.jsx.call(void 0, "div",{ref:g,children:_jsxruntime.jsxs.call(void 0, _Box2.default,{sx:{width:"100%"},children:[e&&_jsxruntime.jsxs.call(void 0, _Typography2.default,{component:"label",sx:{display:"block",mb:.5,fontSize:"0.875rem",fontWeight:500,color:n?"error.main":"text.primary"},children:[e,t&&_jsxruntime.jsx.call(void 0, _Typography2.default,{component:"span",color:"error.main",sx:{ml:.5},children:"*"})]}),c&&_jsxruntime.jsx.call(void 0, "input",{type:"hidden",name:c,value:r,readOnly:!0}),_jsxruntime.jsx.call(void 0, _Box2.default,{sx:{border:1,borderColor:n?"error.main":"divider",borderRadius:1,overflow:"hidden",opacity:i?.6:1,pointerEvents:i?"none":"auto","& .mdxeditor":{minHeight:l,maxHeight:m,overflow:"auto"},"& .mdxeditor-toolbar":{borderBottom:1,borderColor:"divider",backgroundColor:"background.default"},"& .mdxeditor-root-contenteditable":{padding:2,minHeight:l-50}},children:_jsxruntime.jsx.call(void 0, _editor.MDXEditor,{ref:P,markdown:_nullishCoalesce(r, () => ("")),onChange:u,placeholder:s,readOnly:i,plugins:[_editor.headingsPlugin.call(void 0, ),_editor.listsPlugin.call(void 0, ),_editor.quotePlugin.call(void 0, ),_editor.thematicBreakPlugin.call(void 0, ),_editor.markdownShortcutPlugin.call(void 0, ),_editor.linkPlugin.call(void 0, ),_editor.linkDialogPlugin.call(void 0, ),_editor.tablePlugin.call(void 0, ),_editor.toolbarPlugin.call(void 0, {toolbarContents:kl})]})}),a&&_jsxruntime.jsx.call(void 0, _FormHelperText2.default,{error:n,sx:{mx:0,mt:.5},children:a}),!a&&_jsxruntime.jsx.call(void 0, _FormHelperText2.default,{sx:{mx:0,mt:.5},children:"\xA0"})]})})};var _reactrouterdom = require('react-router-dom');var Dl={border:"5px solid rgba(0, 0, 0, 0.1)",borderTopColor:"#3B82F6",borderRadius:"50%",width:"50px",height:"50px",animation:"spin 1s linear infinite"},Ol=()=>_jsxruntime.jsx.call(void 0, "style",{children:`
|
|
2
2
|
@keyframes spin {
|
|
3
3
|
0% { transform: rotate(0deg); }
|
|
4
4
|
100% { transform: rotate(360deg); }
|
|
5
5
|
}
|
|
6
|
-
`});function g({stage:e="loading",message:r}){let o=r||{initializing:"Initializing application...","validating-session":"Validating session...",loading:"Loading..."}[e];return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, cr,{}),_jsxruntime.jsxs.call(void 0, "div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",width:"100vw",backgroundColor:"#f0f2f5",fontFamily:'"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',color:"#333",textAlign:"center",boxSizing:"border-box",padding:"20px",background:"#fff"},children:[_jsxruntime.jsx.call(void 0, "div",{style:lr}),_jsxruntime.jsx.call(void 0, "p",{style:{fontSize:"1.25em",fontWeight:"500",marginTop:"24px",color:"#1f2937"},children:o})]})]})}function _({children:e,loadingComponent:r,loginPath:t="/login"}){let{isAuthenticated:o,isLoading:a,isLoggingOut:s,isInitialized:y,tokens:p,error:f}=_chunkPI7HPRDBjs.l.call(void 0, ),u=_reactrouterdom.useLocation.call(void 0, );if(!y||a&&!s)return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:r||_jsxruntime.jsx.call(void 0, g,{stage:"validating-session"})});let c=o&&_optionalChain([p, 'optionalAccess', _2 => _2.accessToken])&&p.accessToken.length>0;if(f||!o||!c){if(s)return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:t,replace:!0});let R=u.pathname+u.search;if(u.pathname===t||u.pathname.startsWith(t))return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:t,replace:!0});let T=_chunkK47I475Njs.h.call(void 0, R),k=encodeURIComponent(T);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:`${t}?redirect=${k}`,replace:!0})}return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}var L="crudify_tokens",mr="crudify_enc_key";function B(){try{let e=localStorage.getItem(L);return e?e.startsWith("v2:")&&e.length>50:!1}catch (e2){return!1}}function W(){try{let e=localStorage.getItem(mr);return e!==null&&e.length>=32}catch (e3){return!1}}function U(){return B()&&W()}function H(){try{let e=localStorage.getItem(L);return e?!e.startsWith("v2:")||e.length<50:!1}catch (e4){return!1}}function gr(){try{H()&&localStorage.removeItem(L)}catch (e5){}}function Y({children:e,redirectTo:r="/",loadingComponent:t,initTimeout:o=3e3}){let{isAuthenticated:a,isInitialized:s}=_chunkPI7HPRDBjs.l.call(void 0, ),y=_reactrouterdom.useLocation.call(void 0, ),[p]=_react.useState.call(void 0, ()=>U()),[f,u]=_react.useState.call(void 0, !1);if(_react.useEffect.call(void 0, ()=>{if(!s&&p){let c=setTimeout(()=>{u(!0)},o);return()=>clearTimeout(c)}},[s,p,o]),s&&a){let c=new URLSearchParams(y.search),R=_chunkK47I475Njs.j.call(void 0, c,r);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:R,replace:!0})}return s&&!a?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):p&&!f?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:t||_jsxruntime.jsx.call(void 0, g,{stage:"validating-session"})}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}function J({children:e,behavior:r="redirect-if-authenticated",redirectTo:t="/",loadingComponent:o}){let{isAuthenticated:a,isInitialized:s}=_chunkPI7HPRDBjs.l.call(void 0, );return s?r==="allow-all"?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):a?_jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:t,replace:!0}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:o||_jsxruntime.jsx.call(void 0, g,{stage:"validating-session"})})}var X=_react.createContext.call(void 0, void 0),Tr= exports.CrudifyInitializer =({config:e,children:r,fallback:t=null,onInitialized:o,onError:a})=>{let[s,y]=_react.useState.call(void 0, !1),[p,f]=_react.useState.call(void 0, !1),[u,c]=_react.useState.call(void 0, null),R=_react.useRef.call(void 0, !1),T=_react.useRef.call(void 0, !1);_react.useEffect.call(void 0, ()=>{R.current||(_chunkPI7HPRDBjs.q.registerHighPriorityInitializer(),R.current=!0),T.current||(T.current=!0,(async()=>{f(!0),c(null);try{let d=_chunkDYRZIARHjs.d.call(void 0, {publicApiKey:_optionalChain([e, 'optionalAccess', _3 => _3.publicApiKey]),env:_optionalChain([e, 'optionalAccess', _4 => _4.env]),enableDebug:_optionalChain([e, 'optionalAccess', _5 => _5.enableLogging])});if(!d.publicApiKey)throw new Error("Crudify configuration missing. Please provide publicApiKey via props or ensure cookies are set by Lambda.");let v=d.env||"prod";_chunkDYRZIARHjs.a.setEnvironment(v),await _chunkPI7HPRDBjs.q.initialize({priority:"HIGH",publicApiKey:d.publicApiKey,env:d.env||"prod",enableLogging:_optionalChain([e, 'optionalAccess', _6 => _6.enableLogging]),requestedBy:"CrudifyInitializer"}),y(!0),f(!1),o&&o()}catch(d){let v=d instanceof Error?d:new Error(String(d));c(v),f(!1),a&&a(v)}})())},[_optionalChain([e, 'optionalAccess', _7 => _7.publicApiKey]),_optionalChain([e, 'optionalAccess', _8 => _8.env]),_optionalChain([e, 'optionalAccess', _9 => _9.enableLogging]),o,a]);let k=_react.useMemo.call(void 0, ()=>({isInitialized:s,isInitializing:p,error:u}),[s,p,u]);return p&&t?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:t}):(u&&_chunkDYRZIARHjs.a.error("[CrudifyInitializer] Initialization failed",u),_jsxruntime.jsx.call(void 0, X.Provider,{value:k,children:r}))},vr= exports.useCrudifyInitializer =()=>{let e=_react.useContext.call(void 0, X);if(!e)throw new Error("useCrudifyInitializer must be used within CrudifyInitializer");return e};var _crudifyadminsdk = require('@nocios/crudify-admin-sdk');var Z=!1,I=null,h=null;async function Er(){let r=await _chunkPI7HPRDBjs.d.getInstance().getTokenInfo(),t=_optionalChain([r, 'optionalAccess', _10 => _10.apiEndpointAdmin]),o=_optionalChain([r, 'optionalAccess', _11 => _11.apiKeyEndpointAdmin]);return t&&o?{apiUrl:t,apiKey:o}:_chunkPI7HPRDBjs.h.waitForCredentials()}async function kr(){if(!Z)return I||(I=(async()=>{try{let e=_chunkPI7HPRDBjs.d.getInstance(),{apiUrl:r,apiKey:t}=await Er();h=await _asyncOptionalChain([(await e.getTokenInfo()), 'optionalAccess', async _12 => _12.crudifyTokens, 'optionalAccess', async _13 => _13.accessToken])||null,_crudifyadminsdk.CrudifyAdminInstance.init({url:r,apiKey:t,getAdditionalHeaders:()=>h?{Authorization:`Bearer ${h}`}:{}}),Z=!0}catch(e){throw I=null,_chunkDYRZIARHjs.a.error("[crudifyAdminWrapper] Initialization failed",e instanceof Error?e:{message:String(e)}),e}})(),I)}async function n(e){try{await kr();let r=_chunkPI7HPRDBjs.d.getInstance();h=await _asyncOptionalChain([(await r.getTokenInfo()), 'optionalAccess', async _14 => _14.crudifyTokens, 'optionalAccess', async _15 => _15.accessToken])||null;let o=await e(),a=o.errors&&(typeof o.errors=="string"&&o.errors.includes("401")||Array.isArray(o.errors)&&o.errors.some(s=>typeof s=="string"&&s.includes("401")));return!o.success&&a?await r.refreshTokens()?(h=await _asyncOptionalChain([(await r.getTokenInfo()), 'optionalAccess', async _16 => _16.crudifyTokens, 'optionalAccess', async _17 => _17.accessToken])||null,await e()):(_chunkDYRZIARHjs.a.error("[crudifyAdmin] Token refresh failed"),globalThis.window!==void 0&&(globalThis.window.location.href="/login"),o):o}catch(r){return _chunkDYRZIARHjs.a.error("[crudifyAdmin] Operation error",r instanceof Error?r:{message:String(r)}),{success:!1,errors:r instanceof Error?r.message:"Unknown error"}}}var Mr={listModules:()=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.listModules()),getModule:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.getModule(e)),createModule:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.createModule(e)),editModule:(e,r)=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.editModule(e,r)),deleteModule:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.deleteModule(e)),activateModule:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.activateModule(e)),deactivateModule:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.deactivateModule(e)),getModuleVersions:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.getModuleVersions(e)),listActions:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.listActions(e)),getAction:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.getAction(e)),createAction:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.createAction(e)),editAction:(e,r)=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.editAction(e,r)),deleteAction:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.deleteAction(e)),activateAction:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.activateAction(e)),deactivateAction:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.deactivateAction(e)),getActionVersions:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.getActionVersions(e)),getActionsByProfile:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.getActionsByProfile(e)),updateActionsProfiles:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.updateActionsProfiles(e)),calculatePermissions:e=>n(()=>_crudifyadminsdk.CrudifyAdminInstance.calculatePermissions(e))};exports.AuthRoute = Y; exports.CRITICAL_TRANSLATIONS = _chunkK47I475Njs.a; exports.CrossTabSyncManager = _chunkPI7HPRDBjs.b; exports.CrudiaAutoGenerate = _chunkK47I475Njs.v; exports.CrudiaFileField = _chunkK47I475Njs.w; exports.CrudiaMarkdownField = _chunkK47I475Njs.x; exports.CrudifyInitializationManager = _chunkPI7HPRDBjs.p; exports.CrudifyInitializer = Tr; exports.CrudifyInstance = _crudifysdk.CrudifyInstance; exports.CrudifyLogin = _chunkK47I475Njs.o; exports.CrudifyProvider = _chunkPI7HPRDBjs.i; exports.CrudifyThemeProvider = ar; exports.DEFAULT_PASSWORD_RULES = _chunkK47I475Njs.n; exports.ERROR_CODES = _chunkDYRZIARHjs.u; exports.ERROR_SEVERITY_MAP = _chunkDYRZIARHjs.v; exports.GlobalNotificationProvider = _chunkPI7HPRDBjs.f; exports.GuestRoute = J; exports.LoginComponent = _chunkK47I475Njs.t; exports.POLICY_ACTIONS = _chunkK47I475Njs.q; exports.PREFERRED_POLICY_ORDER = _chunkK47I475Njs.r; exports.PasswordRequirements = _chunkK47I475Njs.k; exports.Policies = _chunkK47I475Njs.s; exports.ProtectedRoute = _; exports.SessionDebugInfo = _chunkPI7HPRDBjs.m; exports.SessionLoadingScreen = g; exports.SessionManager = _chunkPI7HPRDBjs.d; exports.SessionProvider = _chunkPI7HPRDBjs.k; exports.SessionStatus = _chunkK47I475Njs.u; exports.TokenStorage = _chunkPI7HPRDBjs.a; exports.TranslationService = _chunkK47I475Njs.d; exports.TranslationsProvider = _chunkK47I475Njs.f; exports.UserProfileDisplay = _chunkK47I475Njs.p; exports.allPasswordRulesPassed = _chunkK47I475Njs.m; exports.clearCorruptedTokens = gr; exports.createErrorTranslator = _chunkDYRZIARHjs.p; exports.crossTabSync = _chunkPI7HPRDBjs.c; exports.crudifyAdmin = Mr; exports.crudifyInitManager = _chunkPI7HPRDBjs.q; exports.decodeJwtSafely = _chunkDYRZIARHjs.r; exports.evaluatePasswordRules = _chunkK47I475Njs.l; exports.extractSafeRedirectFromUrl = _chunkK47I475Njs.j; exports.getCriticalLanguages = _chunkK47I475Njs.b; exports.getCriticalTranslations = _chunkK47I475Njs.c; exports.getCurrentUserEmail = _chunkDYRZIARHjs.s; exports.getErrorMessage = _chunkDYRZIARHjs.y; exports.handleCrudifyError = _chunkDYRZIARHjs.A; exports.hasCorruptedTokens = H; exports.hasEncryptionKeyHash = W; exports.hasStoredTokens = B; exports.isTokenExpired = _chunkDYRZIARHjs.t; exports.logger = _chunkDYRZIARHjs.a; exports.parseApiError = _chunkDYRZIARHjs.w; exports.parseJavaScriptError = _chunkDYRZIARHjs.z; exports.parseTransactionError = _chunkDYRZIARHjs.x; exports.resolveTenantConfig = _chunkDYRZIARHjs.b; exports.secureLocalStorage = _chunkXFT47DELjs.b; exports.secureSessionStorage = _chunkXFT47DELjs.a; exports.shouldWaitForInitialization = U; exports.translateError = _chunkDYRZIARHjs.o; exports.translateErrorCode = _chunkDYRZIARHjs.m; exports.translateErrorCodes = _chunkDYRZIARHjs.n; exports.translationService = _chunkK47I475Njs.e; exports.useAuth = _chunkGJUZD5ZNjs.b; exports.useAutoGenerate = _chunkPI7HPRDBjs.o; exports.useCrudify = _chunkPI7HPRDBjs.j; exports.useCrudifyInitializer = vr; exports.useCrudifyWithNotifications = _chunkGJUZD5ZNjs.d; exports.useData = _chunkGJUZD5ZNjs.c; exports.useFileUpload = _chunkPI7HPRDBjs.r; exports.useGlobalNotification = _chunkPI7HPRDBjs.g; exports.useSession = _chunkPI7HPRDBjs.e; exports.useSessionContext = _chunkPI7HPRDBjs.l; exports.useTenantConfig = _chunkDYRZIARHjs.c; exports.useTranslations = _chunkK47I475Njs.g; exports.useUserData = _chunkGJUZD5ZNjs.a; exports.useUserProfile = _chunkPI7HPRDBjs.n; exports.validateInternalRedirect = _chunkK47I475Njs.h; exports.validateTrustedRedirect = _chunkK47I475Njs.i;
|
|
6
|
+
`});function Fe({stage:e="loading",message:r}){let t=r||{initializing:"Initializing application...","validating-session":"Validating session...",loading:"Loading..."}[e];return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, Ol,{}),_jsxruntime.jsxs.call(void 0, "div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",width:"100vw",backgroundColor:"#f0f2f5",fontFamily:'"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',color:"#333",textAlign:"center",boxSizing:"border-box",padding:"20px",background:"#fff"},children:[_jsxruntime.jsx.call(void 0, "div",{style:Dl}),_jsxruntime.jsx.call(void 0, "p",{style:{fontSize:"1.25em",fontWeight:"500",marginTop:"24px",color:"#1f2937"},children:t})]})]})}function Yt({children:e,loadingComponent:r,loginPath:o="/login"}){let{isAuthenticated:t,isLoading:i,isLoggingOut:n,isInitialized:a,tokens:s,error:l}=_chunkBJEDX2HUjs.n.call(void 0, ),m=_reactrouterdom.useLocation.call(void 0, );if(!a||i&&!n)return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:r||_jsxruntime.jsx.call(void 0, Fe,{stage:"validating-session"})});let c=t&&_optionalChain([s, 'optionalAccess', _93 => _93.accessToken])&&s.accessToken.length>0;if(l||!t||!c){if(n)return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:o,replace:!0});let g=m.pathname+m.search;if(m.pathname===o||m.pathname.startsWith(o))return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:o,replace:!0});let P=Ye(g),u=encodeURIComponent(P);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:`${o}?redirect=${u}`,replace:!0})}return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}var No="crudify_tokens",Ul="crudify_enc_key";function Jt(){try{let e=localStorage.getItem(No);return e?e.startsWith("v2:")&&e.length>50:!1}catch (e8){return!1}}function Xt(){try{let e=localStorage.getItem(Ul);return e!==null&&e.length>=32}catch (e9){return!1}}function Uo(){return Jt()&&Xt()}function Zt(){try{let e=localStorage.getItem(No);return e?!e.startsWith("v2:")||e.length<50:!1}catch (e10){return!1}}function Bl(){try{Zt()&&localStorage.removeItem(No)}catch (e11){}}function en({children:e,redirectTo:r="/",loadingComponent:o,initTimeout:t=3e3}){let{isAuthenticated:i,isInitialized:n}=_chunkBJEDX2HUjs.n.call(void 0, ),a=_reactrouterdom.useLocation.call(void 0, ),[s]=_react.useState.call(void 0, ()=>Uo()),[l,m]=_react.useState.call(void 0, !1);if(_react.useEffect.call(void 0, ()=>{if(!n&&s){let c=setTimeout(()=>{m(!0)},t);return()=>clearTimeout(c)}},[n,s,t]),n&&i){let c=new URLSearchParams(a.search),g=Qr(c,r);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:g,replace:!0})}return n&&!i?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):s&&!l?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:o||_jsxruntime.jsx.call(void 0, Fe,{stage:"validating-session"})}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}function rn({children:e,behavior:r="redirect-if-authenticated",redirectTo:o="/",loadingComponent:t}){let{isAuthenticated:i,isInitialized:n}=_chunkBJEDX2HUjs.n.call(void 0, );return n?r==="allow-all"?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):i?_jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:o,replace:!0}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:t||_jsxruntime.jsx.call(void 0, Fe,{stage:"validating-session"})})}var nn=_react.createContext.call(void 0, void 0),Kl= exports.CrudifyInitializer =({config:e,children:r,fallback:o=null,onInitialized:t,onError:i})=>{let[n,a]=_react.useState.call(void 0, !1),[s,l]=_react.useState.call(void 0, !1),[m,c]=_react.useState.call(void 0, null),g=_react.useRef.call(void 0, !1),P=_react.useRef.call(void 0, !1);_react.useEffect.call(void 0, ()=>{g.current||(_chunkBJEDX2HUjs.s.registerHighPriorityInitializer(),g.current=!0),P.current||(P.current=!0,(async()=>{l(!0),c(null);try{let f=_chunkGZOB4JDBjs.m.call(void 0, {publicApiKey:_optionalChain([e, 'optionalAccess', _94 => _94.publicApiKey]),env:_optionalChain([e, 'optionalAccess', _95 => _95.env]),enableDebug:_optionalChain([e, 'optionalAccess', _96 => _96.enableLogging])});if(!f.publicApiKey)throw new Error("Crudify configuration missing. Please provide publicApiKey via props or ensure cookies are set by Lambda.");let d=f.env||"prod";_chunkGZOB4JDBjs.j.setEnvironment(d),await _chunkBJEDX2HUjs.s.initialize({priority:"HIGH",publicApiKey:f.publicApiKey,env:f.env||"prod",enableLogging:_optionalChain([e, 'optionalAccess', _97 => _97.enableLogging]),requestedBy:"CrudifyInitializer"}),a(!0),l(!1),t&&t()}catch(f){let d=f instanceof Error?f:new Error(String(f));c(d),l(!1),i&&i(d)}})())},[_optionalChain([e, 'optionalAccess', _98 => _98.publicApiKey]),_optionalChain([e, 'optionalAccess', _99 => _99.env]),_optionalChain([e, 'optionalAccess', _100 => _100.enableLogging]),t,i]);let u=_react.useMemo.call(void 0, ()=>({isInitialized:n,isInitializing:s,error:m}),[n,s,m]);return s&&o?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:o}):(m&&_chunkGZOB4JDBjs.j.error("[CrudifyInitializer] Initialization failed",m),_jsxruntime.jsx.call(void 0, nn.Provider,{value:u,children:r}))},jl= exports.useCrudifyInitializer =()=>{let e=_react.useContext.call(void 0, nn);if(!e)throw new Error("useCrudifyInitializer must be used within CrudifyInitializer");return e};var Vo=null,sn=()=>{if(!Vo)throw new Error("CrudifyAdminInstance not initialized. Call init() first.");return Vo},Jl=e=>{let r=e.length;for(;r>0&&e[r-1]==="/";)r--;return e.slice(0,r)},Xl=()=>{let e=sn(),r=e.getAdditionalHeaders?e.getAdditionalHeaders():{};return{"Content-Type":"application/json","x-api-key":e.apiKey,...r}},Zl=(e,r)=>{if(r&&typeof r=="object"&&"status"in r){let o=r;if(e){let t=o.data;if(t&&typeof t=="object"&&!Array.isArray(t)&&"items"in t){let i=t;return{success:!0,data:i.items,count:typeof i.count=="number"?i.count:void 0}}return{success:!0,data:t}}return{success:!1,errors:_nullishCoalesce(o.error, () => (o))}}return e?{success:!0,data:r}:{success:!1,errors:r}},Ql=async e=>{if((e.headers.get("content-type")||"").includes("application/json"))return e.json();let o=await e.text();if(!o)return{};try{return JSON.parse(o)}catch (e12){return{message:o}}},ec=e=>{if(!e)return"";let r=new URLSearchParams;for(let[t,i]of Object.entries(e))i==null||i===""||(typeof i=="string"?r.set(t,i):typeof i=="number"||typeof i=="boolean"?r.set(t,i.toString()):r.set(t,JSON.stringify(i)));let o=r.toString();return o?`?${o}`:""},F=async(e,r,o,t)=>{try{let i=sn(),n=`${Jl(i.url)}${r}${ec(t)}`,a=await fetch(n,{method:e,headers:Xl(),body:o===void 0?void 0:JSON.stringify(o)}),s=await Ql(a);return Zl(a.ok,s)}catch(i){return{success:!1,errors:i instanceof Error?i.message:"Unknown error"}}},S={init(e){Vo=e},listModules(){return F("GET","/modules")},getModule(e){return F("GET",`/modules/${encodeURIComponent(e)}`)},createModule(e){return F("POST","/modules",e)},editModule(e,r){return F("PUT",`/modules/${encodeURIComponent(e)}`,r)},deleteModule(e){return F("DELETE",`/modules/${encodeURIComponent(e)}`)},activateModule(e){return F("POST",`/modules/${encodeURIComponent(e)}/activate`)},deactivateModule(e){return F("POST",`/modules/${encodeURIComponent(e)}/deactivate`)},getModuleVersions(e){return F("GET",`/modules/${encodeURIComponent(e)}/versions`)},listActions(e){return F("GET","/actions",void 0,e)},getAction(e){return F("GET",`/actions/${encodeURIComponent(e)}`)},createAction(e){return F("POST","/actions",e)},editAction(e,r){return F("PUT",`/actions/${encodeURIComponent(e)}`,r)},deleteAction(e){return F("DELETE",`/actions/${encodeURIComponent(e)}`)},activateAction(e){return F("POST",`/actions/${encodeURIComponent(e)}/activate`)},deactivateAction(e){return F("POST",`/actions/${encodeURIComponent(e)}/deactivate`)},getActionVersions(e){return F("GET",`/actions/${encodeURIComponent(e)}/versions`)},getActionsByProfile(e){return F("GET",`/actions/profiles/${encodeURIComponent(e)}`)},updateActionsProfiles(e){return F("PUT","/actions/profiles",e)},calculatePermissions(e){return F("POST","/actions/calculate-permissions",e)}};var an=!1,ar=null,lr=null;async function rc(){let r=await _chunkBJEDX2HUjs.f.getInstance().getTokenInfo(),o=_optionalChain([r, 'optionalAccess', _101 => _101.apiEndpointAdmin]),t=_optionalChain([r, 'optionalAccess', _102 => _102.apiKeyEndpointAdmin]);return o&&t?{apiUrl:o,apiKey:t}:_chunkBJEDX2HUjs.j.waitForCredentials()}async function oc(){if(!an)return ar||(ar=(async()=>{try{let e=_chunkBJEDX2HUjs.f.getInstance(),{apiUrl:r,apiKey:o}=await rc();lr=await _asyncOptionalChain([(await e.getTokenInfo()), 'optionalAccess', async _103 => _103.crudifyTokens, 'optionalAccess', async _104 => _104.accessToken])||null,S.init({url:r,apiKey:o,getAdditionalHeaders:()=>lr?{Authorization:`Bearer ${lr}`}:{}}),an=!0}catch(e){throw ar=null,_chunkGZOB4JDBjs.j.error("[crudifyAdminWrapper] Initialization failed",e instanceof Error?e:{message:String(e)}),e}})(),ar)}var tc=e=>e&&typeof e=="object"&&!Array.isArray(e)?e.code==="AUTHENTICATION_ERROR":typeof e=="string"?e.includes("401"):Array.isArray(e)?e.some(r=>typeof r=="string"&&r.includes("401")):!1;async function D(e){try{await oc();let r=_chunkBJEDX2HUjs.f.getInstance();lr=await _asyncOptionalChain([(await r.getTokenInfo()), 'optionalAccess', async _105 => _105.crudifyTokens, 'optionalAccess', async _106 => _106.accessToken])||null;let t=await e();return!t.success&&tc(t.errors)?await r.refreshTokens()?(lr=await _asyncOptionalChain([(await r.getTokenInfo()), 'optionalAccess', async _107 => _107.crudifyTokens, 'optionalAccess', async _108 => _108.accessToken])||null,await e()):(_chunkGZOB4JDBjs.j.error("[crudifyAdmin] Token refresh failed"),globalThis.window!==void 0&&(globalThis.window.location.href="/login"),t):t}catch(r){return _chunkGZOB4JDBjs.j.error("[crudifyAdmin] Operation error",r instanceof Error?r:{message:String(r)}),{success:!1,errors:r instanceof Error?r.message:"Unknown error"}}}var nc={listModules:()=>D(()=>S.listModules()),getModule:e=>D(()=>S.getModule(e)),createModule:e=>D(()=>S.createModule(e)),editModule:(e,r)=>D(()=>S.editModule(e,r)),deleteModule:e=>D(()=>S.deleteModule(e)),activateModule:e=>D(()=>S.activateModule(e)),deactivateModule:e=>D(()=>S.deactivateModule(e)),getModuleVersions:e=>D(()=>S.getModuleVersions(e)),listActions:e=>D(()=>S.listActions(e)),getAction:e=>D(()=>S.getAction(e)),createAction:e=>D(()=>S.createAction(e)),editAction:(e,r)=>D(()=>S.editAction(e,r)),deleteAction:e=>D(()=>S.deleteAction(e)),activateAction:e=>D(()=>S.activateAction(e)),deactivateAction:e=>D(()=>S.deactivateAction(e)),getActionVersions:e=>D(()=>S.getActionVersions(e)),getActionsByProfile:e=>D(()=>S.getActionsByProfile(e)),updateActionsProfiles:e=>D(()=>S.updateActionsProfiles(e)),calculatePermissions:e=>D(()=>S.calculatePermissions(e))};exports.AuthRoute = en; exports.CRITICAL_TRANSLATIONS = ce; exports.CrossTabSyncManager = _chunkBJEDX2HUjs.d; exports.CrudiaAutoGenerate = Aa; exports.CrudiaFileField = qt; exports.CrudiaMarkdownField = Ll; exports.CrudifyInitializationManager = _chunkBJEDX2HUjs.r; exports.CrudifyInitializer = Kl; exports.CrudifyInstance = _chunkBJEDX2HUjs.b; exports.CrudifyLogin = Cs; exports.CrudifyProvider = _chunkBJEDX2HUjs.k; exports.CrudifyThemeProvider = ba; exports.DEFAULT_PASSWORD_RULES = io; exports.ERROR_CODES = _chunkGZOB4JDBjs.x; exports.ERROR_SEVERITY_MAP = _chunkGZOB4JDBjs.y; exports.GlobalNotificationProvider = _chunkBJEDX2HUjs.h; exports.GuestRoute = rn; exports.LoginComponent = wa; exports.NociosError = _chunkBJEDX2HUjs.a; exports.POLICY_ACTIONS = _chunk5V5ILPP3js.a; exports.PREFERRED_POLICY_ORDER = _chunk5V5ILPP3js.b; exports.PasswordRequirements = oo; exports.Policies = ua; exports.ProtectedRoute = Yt; exports.SessionDebugInfo = _chunkBJEDX2HUjs.o; exports.SessionLoadingScreen = Fe; exports.SessionManager = _chunkBJEDX2HUjs.f; exports.SessionProvider = _chunkBJEDX2HUjs.m; exports.SessionStatus = xa; exports.TokenStorage = _chunkBJEDX2HUjs.c; exports.TranslationService = mr; exports.TranslationsProvider = si; exports.UserProfileDisplay = vt; exports.allPasswordRulesPassed = no; exports.clearCorruptedTokens = Bl; exports.createErrorTranslator = _chunkGZOB4JDBjs.s; exports.crossTabSync = _chunkBJEDX2HUjs.e; exports.crudifyAdmin = nc; exports.crudifyInitManager = _chunkBJEDX2HUjs.s; exports.decodeJwtSafely = _chunkGZOB4JDBjs.u; exports.evaluatePasswordRules = to; exports.extractSafeRedirectFromUrl = Qr; exports.getCriticalLanguages = Kn; exports.getCriticalTranslations = jn; exports.getCurrentUserEmail = _chunkGZOB4JDBjs.v; exports.getErrorMessage = _chunkGZOB4JDBjs.B; exports.handleCrudifyError = _chunkGZOB4JDBjs.D; exports.hasCorruptedTokens = Zt; exports.hasEncryptionKeyHash = Xt; exports.hasStoredTokens = Jt; exports.isTokenExpired = _chunkGZOB4JDBjs.w; exports.logger = _chunkGZOB4JDBjs.j; exports.parseApiError = _chunkGZOB4JDBjs.z; exports.parseJavaScriptError = _chunkGZOB4JDBjs.C; exports.parseTransactionError = _chunkGZOB4JDBjs.A; exports.resolveTenantConfig = _chunkGZOB4JDBjs.k; exports.secureLocalStorage = _chunkODKXUEH5js.b; exports.secureSessionStorage = _chunkODKXUEH5js.a; exports.shouldWaitForInitialization = Uo; exports.translateError = _chunkGZOB4JDBjs.r; exports.translateErrorCode = _chunkGZOB4JDBjs.p; exports.translateErrorCodes = _chunkGZOB4JDBjs.q; exports.translationService = je; exports.useAuth = _chunkBJEDX2HUjs.v; exports.useAutoGenerate = _chunkBJEDX2HUjs.q; exports.useCrudify = _chunkBJEDX2HUjs.l; exports.useCrudifyInitializer = jl; exports.useCrudifyWithNotifications = _chunkBJEDX2HUjs.x; exports.useData = _chunkBJEDX2HUjs.w; exports.useFileUpload = _chunkBJEDX2HUjs.t; exports.useGlobalNotification = _chunkBJEDX2HUjs.i; exports.useSession = _chunkBJEDX2HUjs.g; exports.useSessionContext = _chunkBJEDX2HUjs.n; exports.useTenantConfig = _chunkGZOB4JDBjs.l; exports.useTranslations = we; exports.useUserData = _chunkBJEDX2HUjs.u; exports.useUserProfile = _chunkBJEDX2HUjs.p; exports.validateInternalRedirect = Ye; exports.validateTrustedRedirect = Zr;
|