@stackcraftmx/calcita 0.0.0-stage → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +110 -0
- package/README.md +700 -2
- package/cli/askQuestions.js +63 -0
- package/cli/calcita.js +150 -0
- package/cli/makeComponent.js +50 -0
- package/cli/makeForm.js +68 -0
- package/cli/makeModule.js +78 -0
- package/cli/makePage.js +62 -0
- package/cli/names.js +64 -0
- package/cli/newProject.js +103 -0
- package/cli/packageVersions.js +38 -0
- package/cli/projectAnswers.js +145 -0
- package/cli/projectConfig.js +38 -0
- package/cli/projectFiles.js +128 -0
- package/cli/screenLabels.js +41 -0
- package/cli/templateFiles.js +186 -0
- package/cli/templates/component/core/__ComponentName__.jsx.tpl +23 -0
- package/cli/templates/component/module/__ComponentName__.jsx.tpl +21 -0
- package/cli/templates/form/formik/__FormName__.jsx.tpl +50 -0
- package/cli/templates/form/hookForm/__FormName__.jsx.tpl +53 -0
- package/cli/templates/form/shared/__formName__Schema.js.tpl +20 -0
- package/cli/templates/form/shared/__formName__Texts.js.tpl +6 -0
- package/cli/templates/module/__Name__Page.jsx.tpl +75 -0
- package/cli/templates/module/__name__Api.js.tpl +39 -0
- package/cli/templates/module/__name__Texts.js.tpl +27 -0
- package/cli/templates/module/menu.js.tpl +21 -0
- package/cli/templates/module/routes.js.tpl +7 -0
- package/cli/templates/moduleServer/__name__Server.js.tpl +68 -0
- package/cli/templates/page/__PageName__Page.jsx.tpl +22 -0
- package/cli/templates/page/__pageName__PageTexts.js.tpl +23 -0
- package/cli/templates/project/README.md.tpl +83 -0
- package/cli/templates/project/dot-gitignore.tpl +11 -0
- package/cli/templates/project/index.html.tpl +20 -0
- package/cli/templates/project/jsconfig.json.tpl +16 -0
- package/cli/templates/project/pnpm-workspace.yaml.tpl +5 -0
- package/cli/templates/project/public/favicon.svg +1 -0
- package/cli/templates/project/public/icons/apple-touch-icon.png +0 -0
- package/cli/templates/project/public/icons/icon-192.png +0 -0
- package/cli/templates/project/public/icons/icon-512-maskable.png +0 -0
- package/cli/templates/project/public/icons/icon-512.png +0 -0
- package/cli/templates/project/public/manifest.webmanifest.tpl +17 -0
- package/cli/templates/project/src/app/AppProviders.jsx.tpl +107 -0
- package/cli/templates/project/src/app/AppShell.jsx.tpl +87 -0
- package/cli/templates/project/src/app/appRouter.jsx.tpl +51 -0
- package/cli/templates/project/src/app/appSettings.js.tpl +27 -0
- package/cli/templates/project/src/app/appTexts.js.tpl +15 -0
- package/cli/templates/project/src/app/combineTexts.js.tpl +31 -0
- package/cli/templates/project/src/app/i18n.js.tpl +19 -0
- package/cli/templates/project/src/app/shellTexts.js.tpl +16 -0
- package/cli/templates/project/src/core/AppLogo.jsx.tpl +14 -0
- package/cli/templates/project/src/core/accountConnector.js.tpl +36 -0
- package/cli/templates/project/src/core/apiClient.js.tpl +15 -0
- package/cli/templates/project/src/core/appPaths.js.tpl +11 -0
- package/cli/templates/project/src/core/index.js.tpl +9 -0
- package/cli/templates/project/src/core/publicPaths.js.tpl +24 -0
- package/cli/templates/project/src/fakeServer/networkDelay.js.tpl +40 -0
- package/cli/templates/project/src/fakeServer/serverText.js.tpl +20 -0
- package/cli/templates/project/src/main.jsx.tpl +24 -0
- package/cli/templates/project/src/modules/auth/ForgotPasswordPage.jsx.tpl +14 -0
- package/cli/templates/project/src/modules/auth/ResetPasswordPage.jsx.tpl +15 -0
- package/cli/templates/project/src/modules/auth/SignInPage.jsx.tpl +29 -0
- package/cli/templates/project/src/modules/auth/authTexts.js.tpl +6 -0
- package/cli/templates/project/src/modules/auth/routes.js.tpl +11 -0
- package/cli/templates/project/src/modules/home/HomePage.jsx.tpl +38 -0
- package/cli/templates/project/src/modules/home/homeTexts.js.tpl +29 -0
- package/cli/templates/project/src/modules/home/menu.js.tpl +17 -0
- package/cli/templates/project/src/modules/home/routes.js.tpl +4 -0
- package/cli/templates/project/src/modules/profile/ProfilePage.jsx.tpl +13 -0
- package/cli/templates/project/src/modules/profile/routes.js.tpl +6 -0
- package/cli/templates/project/vite.config.js.tpl +53 -0
- package/dist/DataTable/AuditTrailDialog.js +40 -0
- package/dist/DataTable/AuditTrailDialog.js.map +1 -0
- package/dist/DataTable/AuditTrailTable.js +89 -0
- package/dist/DataTable/AuditTrailTable.js.map +1 -0
- package/dist/DataTable/ColumnFilters/HeaderFilterPopover.js +71 -0
- package/dist/DataTable/ColumnFilters/HeaderFilterPopover.js.map +1 -0
- package/dist/DataTable/ColumnFilters/MultiSelectColumnFilter.js +51 -0
- package/dist/DataTable/ColumnFilters/MultiSelectColumnFilter.js.map +1 -0
- package/dist/DataTable/ColumnFilters/SortableFilterHeader.js +54 -0
- package/dist/DataTable/ColumnFilters/SortableFilterHeader.js.map +1 -0
- package/dist/DataTable/ColumnFilters/TextColumnFilter.js +24 -0
- package/dist/DataTable/ColumnFilters/TextColumnFilter.js.map +1 -0
- package/dist/DataTable/EmptyState.js +22 -0
- package/dist/DataTable/EmptyState.js.map +1 -0
- package/dist/DataTable/FilterChips.js +39 -0
- package/dist/DataTable/FilterChips.js.map +1 -0
- package/dist/DataTable/GoToPage.js +63 -0
- package/dist/DataTable/GoToPage.js.map +1 -0
- package/dist/DataTable/ServerTable.js +477 -0
- package/dist/DataTable/ServerTable.js.map +1 -0
- package/dist/DataTable/buildChipConfig.js +27 -0
- package/dist/DataTable/buildChipConfig.js.map +1 -0
- package/dist/DataTable/columns.js +122 -0
- package/dist/DataTable/columns.js.map +1 -0
- package/dist/DataTable/filterContext.js +15 -0
- package/dist/DataTable/filterContext.js.map +1 -0
- package/dist/DataTable/rowSelection.js +61 -0
- package/dist/DataTable/rowSelection.js.map +1 -0
- package/dist/DataTable/serverTableParams.js +19 -0
- package/dist/DataTable/serverTableParams.js.map +1 -0
- package/dist/DataTable/tableMachine.js +87 -0
- package/dist/DataTable/tableMachine.js.map +1 -0
- package/dist/DataTable/useDebouncedFilter.js +29 -0
- package/dist/DataTable/useDebouncedFilter.js.map +1 -0
- package/dist/DataTable/useTableState.js +132 -0
- package/dist/DataTable/useTableState.js.map +1 -0
- package/dist/access/Can.js +9 -0
- package/dist/access/Can.js.map +1 -0
- package/dist/access/PermissionMatrix.js +84 -0
- package/dist/access/PermissionMatrix.js.map +1 -0
- package/dist/access/RequireAccess.js +14 -0
- package/dist/access/RequireAccess.js.map +1 -0
- package/dist/access/accessRules.js +49 -0
- package/dist/access/accessRules.js.map +1 -0
- package/dist/access/permissionGroups.js +43 -0
- package/dist/access/permissionGroups.js.map +1 -0
- package/dist/access/useCan.js +12 -0
- package/dist/access/useCan.js.map +1 -0
- package/dist/account/AccountProvider.js +58 -0
- package/dist/account/AccountProvider.js.map +1 -0
- package/dist/account/AccountSecuritySection.js +81 -0
- package/dist/account/AccountSecuritySection.js.map +1 -0
- package/dist/account/DemoTotpCodeButton.js +26 -0
- package/dist/account/DemoTotpCodeButton.js.map +1 -0
- package/dist/account/ForgotPasswordScreen.js +27 -0
- package/dist/account/ForgotPasswordScreen.js.map +1 -0
- package/dist/account/ProfileScreen.js +134 -0
- package/dist/account/ProfileScreen.js.map +1 -0
- package/dist/account/ResetPasswordScreen.js +58 -0
- package/dist/account/ResetPasswordScreen.js.map +1 -0
- package/dist/account/SignInScreen.js +102 -0
- package/dist/account/SignInScreen.js.map +1 -0
- package/dist/account/accountConnector.js +31 -0
- package/dist/account/accountConnector.js.map +1 -0
- package/dist/account/demo/createDemoAccountConnector.js +368 -0
- package/dist/account/demo/createDemoAccountConnector.js.map +1 -0
- package/dist/account/demo/totp.js +61 -0
- package/dist/account/demo/totp.js.map +1 -0
- package/dist/account/restAccountConnector.js +118 -0
- package/dist/account/restAccountConnector.js.map +1 -0
- package/dist/account-demo.js +12 -0
- package/dist/account-demo.js.map +1 -0
- package/dist/account.js +25 -0
- package/dist/account.js.map +1 -0
- package/dist/adapters/i18next.js +7 -0
- package/dist/adapters/i18next.js.map +1 -0
- package/dist/adapters/nextNavigation.js +36 -0
- package/dist/adapters/nextNavigation.js.map +1 -0
- package/dist/adapters/reactRouter.js +7 -0
- package/dist/adapters/reactRouter.js.map +1 -0
- package/dist/adapters/reactRouterRoutes.js +49 -0
- package/dist/adapters/reactRouterRoutes.js.map +1 -0
- package/dist/api/ApiError.js +58 -0
- package/dist/api/ApiError.js.map +1 -0
- package/dist/api/createApiClient.js +256 -0
- package/dist/api/createApiClient.js.map +1 -0
- package/dist/api/staleChunks.js +47 -0
- package/dist/api/staleChunks.js.map +1 -0
- package/dist/appShell/AccountMenu.js +86 -0
- package/dist/appShell/AccountMenu.js.map +1 -0
- package/dist/appShell/AppLayout.js +513 -0
- package/dist/appShell/AppLayout.js.map +1 -0
- package/dist/appShell/AppearanceSettings.js +116 -0
- package/dist/appShell/AppearanceSettings.js.map +1 -0
- package/dist/appShell/AuthLayout.js +46 -0
- package/dist/appShell/AuthLayout.js.map +1 -0
- package/dist/appShell/BarActionButton.js +31 -0
- package/dist/appShell/BarActionButton.js.map +1 -0
- package/dist/appShell/BarActions.js +105 -0
- package/dist/appShell/BarActions.js.map +1 -0
- package/dist/appShell/BarCapsule.js +50 -0
- package/dist/appShell/BarCapsule.js.map +1 -0
- package/dist/appShell/BarSearch.js +92 -0
- package/dist/appShell/BarSearch.js.map +1 -0
- package/dist/appShell/HeaderTools.js +53 -0
- package/dist/appShell/HeaderTools.js.map +1 -0
- package/dist/appShell/MobileTabBar.js +348 -0
- package/dist/appShell/MobileTabBar.js.map +1 -0
- package/dist/appShell/SettingsMenu.js +41 -0
- package/dist/appShell/SettingsMenu.js.map +1 -0
- package/dist/appShell/SideMenu.js +217 -0
- package/dist/appShell/SideMenu.js.map +1 -0
- package/dist/appShell/SideMenuEntry.js +140 -0
- package/dist/appShell/SideMenuEntry.js.map +1 -0
- package/dist/appShell/SubmenuActionsMenu.js +71 -0
- package/dist/appShell/SubmenuActionsMenu.js.map +1 -0
- package/dist/appShell/TabBarEditor.js +55 -0
- package/dist/appShell/TabBarEditor.js.map +1 -0
- package/dist/appShell/TopMenu.js +80 -0
- package/dist/appShell/TopMenu.js.map +1 -0
- package/dist/appShell/appMenuContext.js +11 -0
- package/dist/appShell/appMenuContext.js.map +1 -0
- package/dist/appShell/barActionsSlot.js +26 -0
- package/dist/appShell/barActionsSlot.js.map +1 -0
- package/dist/appShell/barMenuPlacement.js +33 -0
- package/dist/appShell/barMenuPlacement.js.map +1 -0
- package/dist/appShell/menuItemText.js +33 -0
- package/dist/appShell/menuItemText.js.map +1 -0
- package/dist/appShell/pageTitle.js +45 -0
- package/dist/appShell/pageTitle.js.map +1 -0
- package/dist/appShell/shellSizes.js +40 -0
- package/dist/appShell/shellSizes.js.map +1 -0
- package/dist/appShell/tabBarRule.js +12 -0
- package/dist/appShell/tabBarRule.js.map +1 -0
- package/dist/appShell/tabBarScroll.js +23 -0
- package/dist/appShell/tabBarScroll.js.map +1 -0
- package/dist/appShell/useDrawerCollapsed.js +29 -0
- package/dist/appShell/useDrawerCollapsed.js.map +1 -0
- package/dist/appShell/useFittingActionCount.js +45 -0
- package/dist/appShell/useFittingActionCount.js.map +1 -0
- package/dist/appShell/usePinnedMobileTabs.js +32 -0
- package/dist/appShell/usePinnedMobileTabs.js.map +1 -0
- package/dist/appShell/useTabBarMinimized.js +33 -0
- package/dist/appShell/useTabBarMinimized.js.map +1 -0
- package/dist/auth/PasswordChecklist.js +44 -0
- package/dist/auth/PasswordChecklist.js.map +1 -0
- package/dist/auth/passwordRules.js +43 -0
- package/dist/auth/passwordRules.js.map +1 -0
- package/dist/calendar/EventCalendar.js +149 -0
- package/dist/calendar/EventCalendar.js.map +1 -0
- package/dist/calendar/EventDetails.js +74 -0
- package/dist/calendar/EventDetails.js.map +1 -0
- package/dist/calendar/calendarEvents.js +31 -0
- package/dist/calendar/calendarEvents.js.map +1 -0
- package/dist/calendar.js +13 -0
- package/dist/calendar.js.map +1 -0
- package/dist/charts.js +16 -0
- package/dist/charts.js.map +1 -0
- package/dist/date-pickers.js +8 -0
- package/dist/date-pickers.js.map +1 -0
- package/dist/datePickers/DateInput.js +76 -0
- package/dist/datePickers/DateInput.js.map +1 -0
- package/dist/datePickers/FormDateField.js +12 -0
- package/dist/datePickers/FormDateField.js.map +1 -0
- package/dist/dates.js +25 -0
- package/dist/dates.js.map +1 -0
- package/dist/dictionaries/dictionaries.js +48 -0
- package/dist/dictionaries/dictionaries.js.map +1 -0
- package/dist/downloads/DownloadManager.js +195 -0
- package/dist/downloads/DownloadManager.js.map +1 -0
- package/dist/downloads/downloadQueue.js +56 -0
- package/dist/downloads/downloadQueue.js.map +1 -0
- package/dist/downloads/downloadsMachine.js +80 -0
- package/dist/downloads/downloadsMachine.js.map +1 -0
- package/dist/downloads/fileTypes.js +22 -0
- package/dist/downloads/fileTypes.js.map +1 -0
- package/dist/excel/reportWorkbook.js +299 -0
- package/dist/excel/reportWorkbook.js.map +1 -0
- package/dist/excel.js +13 -0
- package/dist/excel.js.map +1 -0
- package/dist/feedback/ConfirmDialog.js +73 -0
- package/dist/feedback/ConfirmDialog.js.map +1 -0
- package/dist/feedback/ModalWaiting.js +23 -0
- package/dist/feedback/ModalWaiting.js.map +1 -0
- package/dist/feedback/NewBuildNotice.js +79 -0
- package/dist/feedback/NewBuildNotice.js.map +1 -0
- package/dist/feedback/StaleBuildBoundary.js +36 -0
- package/dist/feedback/StaleBuildBoundary.js.map +1 -0
- package/dist/feedback/Toaster.js +20 -0
- package/dist/feedback/Toaster.js.map +1 -0
- package/dist/feedback/confirmActionMachine.js +67 -0
- package/dist/feedback/confirmActionMachine.js.map +1 -0
- package/dist/feedback/toast.js +88 -0
- package/dist/feedback/toast.js.map +1 -0
- package/dist/feedback/useConfirmAction.js +40 -0
- package/dist/feedback/useConfirmAction.js.map +1 -0
- package/dist/filepond/FileDropzone.js +256 -0
- package/dist/filepond/FileDropzone.js.map +1 -0
- package/dist/filepond/pondServer.js +48 -0
- package/dist/filepond/pondServer.js.map +1 -0
- package/dist/filepond.js +10 -0
- package/dist/filepond.js.map +1 -0
- package/dist/files.js +43 -0
- package/dist/files.js.map +1 -0
- package/dist/formatting.js +205 -0
- package/dist/formatting.js.map +1 -0
- package/dist/forms/FormCatalogField.js +12 -0
- package/dist/forms/FormCatalogField.js.map +1 -0
- package/dist/forms/FormColorField.js +12 -0
- package/dist/forms/FormColorField.js.map +1 -0
- package/dist/forms/FormNumberField.js +12 -0
- package/dist/forms/FormNumberField.js.map +1 -0
- package/dist/forms/FormProblemAlert.js +15 -0
- package/dist/forms/FormProblemAlert.js.map +1 -0
- package/dist/forms/FormSelectField.js +12 -0
- package/dist/forms/FormSelectField.js.map +1 -0
- package/dist/forms/FormServerProblem.js +23 -0
- package/dist/forms/FormServerProblem.js.map +1 -0
- package/dist/forms/FormTextField.js +12 -0
- package/dist/forms/FormTextField.js.map +1 -0
- package/dist/forms/FormWizard.js +63 -0
- package/dist/forms/FormWizard.js.map +1 -0
- package/dist/forms/SubmitButton.js +14 -0
- package/dist/forms/SubmitButton.js.map +1 -0
- package/dist/forms/applyServerProblem.js +15 -0
- package/dist/forms/applyServerProblem.js.map +1 -0
- package/dist/forms/auth/ChangePasswordForm.js +47 -0
- package/dist/forms/auth/ChangePasswordForm.js.map +1 -0
- package/dist/forms/auth/ForgotPasswordForm.js +50 -0
- package/dist/forms/auth/ForgotPasswordForm.js.map +1 -0
- package/dist/forms/auth/SignInForm.js +48 -0
- package/dist/forms/auth/SignInForm.js.map +1 -0
- package/dist/forms/security/SecondStepForm.js +122 -0
- package/dist/forms/security/SecondStepForm.js.map +1 -0
- package/dist/forms/security/TwoStepVerificationCard.js +338 -0
- package/dist/forms/security/TwoStepVerificationCard.js.map +1 -0
- package/dist/forms/security/securityRules.js +28 -0
- package/dist/forms/security/securityRules.js.map +1 -0
- package/dist/forms/serverProblemFields.js +25 -0
- package/dist/forms/serverProblemFields.js.map +1 -0
- package/dist/forms/useFormikField.js +16 -0
- package/dist/forms/useFormikField.js.map +1 -0
- package/dist/forms/validation.js +55 -0
- package/dist/forms/validation.js.map +1 -0
- package/dist/forms/validationMessages.js +16 -0
- package/dist/forms/validationMessages.js.map +1 -0
- package/dist/forms.js +57 -0
- package/dist/forms.js.map +1 -0
- package/dist/hookForm/FormCatalogField.js +12 -0
- package/dist/hookForm/FormCatalogField.js.map +1 -0
- package/dist/hookForm/FormColorField.js +12 -0
- package/dist/hookForm/FormColorField.js.map +1 -0
- package/dist/hookForm/FormNumberField.js +12 -0
- package/dist/hookForm/FormNumberField.js.map +1 -0
- package/dist/hookForm/FormProblemAlert.js +17 -0
- package/dist/hookForm/FormProblemAlert.js.map +1 -0
- package/dist/hookForm/FormSelectField.js +12 -0
- package/dist/hookForm/FormSelectField.js.map +1 -0
- package/dist/hookForm/FormTextField.js +12 -0
- package/dist/hookForm/FormTextField.js.map +1 -0
- package/dist/hookForm/FormWizard.js +59 -0
- package/dist/hookForm/FormWizard.js.map +1 -0
- package/dist/hookForm/SubmitButton.js +15 -0
- package/dist/hookForm/SubmitButton.js.map +1 -0
- package/dist/hookForm/applyServerProblem.js +21 -0
- package/dist/hookForm/applyServerProblem.js.map +1 -0
- package/dist/hookForm/useHookFormField.js +19 -0
- package/dist/hookForm/useHookFormField.js.map +1 -0
- package/dist/i18next.js +5 -0
- package/dist/i18next.js.map +1 -0
- package/dist/identifiers.js +8 -0
- package/dist/identifiers.js.map +1 -0
- package/dist/inbox/InboxLayout.js +104 -0
- package/dist/inbox/InboxLayout.js.map +1 -0
- package/dist/inbox/MessageList.js +114 -0
- package/dist/inbox/MessageList.js.map +1 -0
- package/dist/inbox/MessageView.js +104 -0
- package/dist/inbox/MessageView.js.map +1 -0
- package/dist/inbox/inboxDates.js +9 -0
- package/dist/inbox/inboxDates.js.map +1 -0
- package/dist/index.js +407 -0
- package/dist/index.js.map +1 -0
- package/dist/inputs/CatalogInput.js +66 -0
- package/dist/inputs/CatalogInput.js.map +1 -0
- package/dist/inputs/ColorInput.js +109 -0
- package/dist/inputs/ColorInput.js.map +1 -0
- package/dist/inputs/FieldFrame.js +20 -0
- package/dist/inputs/FieldFrame.js.map +1 -0
- package/dist/inputs/FormSection.js +105 -0
- package/dist/inputs/FormSection.js.map +1 -0
- package/dist/inputs/NumberInput.js +70 -0
- package/dist/inputs/NumberInput.js.map +1 -0
- package/dist/inputs/SelectInput.js +84 -0
- package/dist/inputs/SelectInput.js.map +1 -0
- package/dist/inputs/TextInput.js +101 -0
- package/dist/inputs/TextInput.js.map +1 -0
- package/dist/inputs/WizardLayout.js +54 -0
- package/dist/inputs/WizardLayout.js.map +1 -0
- package/dist/inputs/colorContrast.js +46 -0
- package/dist/inputs/colorContrast.js.map +1 -0
- package/dist/inputs/formLayoutContext.js +9 -0
- package/dist/inputs/formLayoutContext.js.map +1 -0
- package/dist/inputs/numberText.js +48 -0
- package/dist/inputs/numberText.js.map +1 -0
- package/dist/kanban/KanbanBoard.js +338 -0
- package/dist/kanban/KanbanBoard.js.map +1 -0
- package/dist/kanban/kanbanCards.js +19 -0
- package/dist/kanban/kanbanCards.js.map +1 -0
- package/dist/kanban/kanbanMoves.js +29 -0
- package/dist/kanban/kanbanMoves.js.map +1 -0
- package/dist/kanban.js +15 -0
- package/dist/kanban.js.map +1 -0
- package/dist/laravel/csrfRetry.js +18 -0
- package/dist/laravel/csrfRetry.js.map +1 -0
- package/dist/laravel.js +6 -0
- package/dist/laravel.js.map +1 -0
- package/dist/lastListUrl.js +35 -0
- package/dist/lastListUrl.js.map +1 -0
- package/dist/locales/en.js +787 -0
- package/dist/locales/en.js.map +1 -0
- package/dist/locales/es.js +787 -0
- package/dist/locales/es.js.map +1 -0
- package/dist/maps/MapView.js +116 -0
- package/dist/maps/MapView.js.map +1 -0
- package/dist/maps/mapMarkers.js +19 -0
- package/dist/maps/mapMarkers.js.map +1 -0
- package/dist/maps.js +10 -0
- package/dist/maps.js.map +1 -0
- package/dist/money/money.js +380 -0
- package/dist/money/money.js.map +1 -0
- package/dist/money.js +6 -0
- package/dist/money.js.map +1 -0
- package/dist/navigation/appMenu.js +93 -0
- package/dist/navigation/appMenu.js.map +1 -0
- package/dist/navigation/useMenuBadges.js +45 -0
- package/dist/navigation/useMenuBadges.js.map +1 -0
- package/dist/navigation.js +30 -0
- package/dist/navigation.js.map +1 -0
- package/dist/navigationTrail.js +82 -0
- package/dist/navigationTrail.js.map +1 -0
- package/dist/next.js +5 -0
- package/dist/next.js.map +1 -0
- package/dist/observability/buildWatch.js +19 -0
- package/dist/observability/buildWatch.js.map +1 -0
- package/dist/observability/logger.js +43 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/publishedBuild.js +39 -0
- package/dist/observability/publishedBuild.js.map +1 -0
- package/dist/observability/usePublishedBuildWatch.js +77 -0
- package/dist/observability/usePublishedBuildWatch.js.map +1 -0
- package/dist/passkeys.js +7 -0
- package/dist/passkeys.js.map +1 -0
- package/dist/periodRanges.js +33 -0
- package/dist/periodRanges.js.map +1 -0
- package/dist/problems.js +51 -0
- package/dist/problems.js.map +1 -0
- package/dist/pwa/InstallAppSetting.js +34 -0
- package/dist/pwa/InstallAppSetting.js.map +1 -0
- package/dist/pwa/InstallInstructionsDialog.js +35 -0
- package/dist/pwa/InstallInstructionsDialog.js.map +1 -0
- package/dist/pwa/InstallPromptBanner.js +70 -0
- package/dist/pwa/InstallPromptBanner.js.map +1 -0
- package/dist/pwa/installInstructions.js +60 -0
- package/dist/pwa/installInstructions.js.map +1 -0
- package/dist/pwa/useInstallPrompt.js +71 -0
- package/dist/pwa/useInstallPrompt.js.map +1 -0
- package/dist/react-hook-form.js +32 -0
- package/dist/react-hook-form.js.map +1 -0
- package/dist/react-router.js +10 -0
- package/dist/react-router.js.map +1 -0
- package/dist/security/ActivityLog.js +80 -0
- package/dist/security/ActivityLog.js.map +1 -0
- package/dist/security/RecoveryCodesDialog.js +85 -0
- package/dist/security/RecoveryCodesDialog.js.map +1 -0
- package/dist/security/SessionsCard.js +83 -0
- package/dist/security/SessionsCard.js.map +1 -0
- package/dist/security/passkeys.js +39 -0
- package/dist/security/passkeys.js.map +1 -0
- package/dist/table.js +37 -0
- package/dist/table.js.map +1 -0
- package/dist/theme/androidDevice.js +16 -0
- package/dist/theme/androidDevice.js.map +1 -0
- package/dist/theme/appleTracking.js +34 -0
- package/dist/theme/appleTracking.js.map +1 -0
- package/dist/theme/components/MuiAppBar.js +27 -0
- package/dist/theme/components/MuiAppBar.js.map +1 -0
- package/dist/theme/components/MuiBackdrop.js +13 -0
- package/dist/theme/components/MuiBackdrop.js.map +1 -0
- package/dist/theme/components/MuiButton.js +25 -0
- package/dist/theme/components/MuiButton.js.map +1 -0
- package/dist/theme/components/MuiButtonBase.js +16 -0
- package/dist/theme/components/MuiButtonBase.js.map +1 -0
- package/dist/theme/components/MuiChip.js +30 -0
- package/dist/theme/components/MuiChip.js.map +1 -0
- package/dist/theme/components/MuiDataGrid.js +30 -0
- package/dist/theme/components/MuiDataGrid.js.map +1 -0
- package/dist/theme/components/MuiDialog.js +13 -0
- package/dist/theme/components/MuiDialog.js.map +1 -0
- package/dist/theme/components/MuiDrawer.js +18 -0
- package/dist/theme/components/MuiDrawer.js.map +1 -0
- package/dist/theme/components/MuiMenuItem.js +17 -0
- package/dist/theme/components/MuiMenuItem.js.map +1 -0
- package/dist/theme/components/MuiTypography.js +22 -0
- package/dist/theme/components/MuiTypography.js.map +1 -0
- package/dist/theme/components/glassComponents.js +885 -0
- package/dist/theme/components/glassComponents.js.map +1 -0
- package/dist/theme/components/minimalComponents.js +146 -0
- package/dist/theme/components/minimalComponents.js.map +1 -0
- package/dist/theme/components/paletteOf.js +7 -0
- package/dist/theme/components/paletteOf.js.map +1 -0
- package/dist/theme/createToolkitTheme.js +100 -0
- package/dist/theme/createToolkitTheme.js.map +1 -0
- package/dist/theme/glassSurface.js +328 -0
- package/dist/theme/glassSurface.js.map +1 -0
- package/dist/theme/glassToasterStyles.js +50 -0
- package/dist/theme/glassToasterStyles.js.map +1 -0
- package/dist/theme/mergeComponents.js +42 -0
- package/dist/theme/mergeComponents.js.map +1 -0
- package/dist/theme/stackcraftPalette.js +59 -0
- package/dist/theme/stackcraftPalette.js.map +1 -0
- package/dist/theme/toolkitComponents.js +28 -0
- package/dist/theme/toolkitComponents.js.map +1 -0
- package/dist/timeline.js +8 -0
- package/dist/timeline.js.map +1 -0
- package/dist/toolkit/ComponentTexts.js +13 -0
- package/dist/toolkit/ComponentTexts.js.map +1 -0
- package/dist/toolkit/ToolkitProvider.js +57 -0
- package/dist/toolkit/ToolkitProvider.js.map +1 -0
- package/dist/toolkit/browserNavigation.js +33 -0
- package/dist/toolkit/browserNavigation.js.map +1 -0
- package/dist/toolkit/componentTextsContext.js +15 -0
- package/dist/toolkit/componentTextsContext.js.map +1 -0
- package/dist/toolkit/hashNavigation.js +40 -0
- package/dist/toolkit/hashNavigation.js.map +1 -0
- package/dist/toolkit/navigationPaths.js +49 -0
- package/dist/toolkit/navigationPaths.js.map +1 -0
- package/dist/toolkit/toolkitContext.js +19 -0
- package/dist/toolkit/toolkitContext.js.map +1 -0
- package/dist/toolkit/toolkitSettings.js +107 -0
- package/dist/toolkit/toolkitSettings.js.map +1 -0
- package/dist/toolkit/useFormatters.js +12 -0
- package/dist/toolkit/useFormatters.js.map +1 -0
- package/dist/toolkit/useToolkitTranslation.js +22 -0
- package/dist/toolkit/useToolkitTranslation.js.map +1 -0
- package/dist/types/DataTable/AuditTrailDialog.d.ts +32 -0
- package/dist/types/DataTable/AuditTrailTable.d.ts +30 -0
- package/dist/types/DataTable/ColumnFilters/HeaderFilterPopover.d.ts +8 -0
- package/dist/types/DataTable/ColumnFilters/MultiSelectColumnFilter.d.ts +16 -0
- package/dist/types/DataTable/ColumnFilters/SortableFilterHeader.d.ts +26 -0
- package/dist/types/DataTable/ColumnFilters/TextColumnFilter.d.ts +8 -0
- package/dist/types/DataTable/ColumnFilters/index.d.ts +4 -0
- package/dist/types/DataTable/EmptyState.d.ts +13 -0
- package/dist/types/DataTable/FilterChips.d.ts +17 -0
- package/dist/types/DataTable/GoToPage.d.ts +13 -0
- package/dist/types/DataTable/SelectionBar.d.ts +32 -0
- package/dist/types/DataTable/ServerTable.d.ts +171 -0
- package/dist/types/DataTable/buildChipConfig.d.ts +22 -0
- package/dist/types/DataTable/columns.d.ts +93 -0
- package/dist/types/DataTable/filterContext.d.ts +13 -0
- package/dist/types/DataTable/index.d.ts +13 -0
- package/dist/types/DataTable/rowSelection.d.ts +113 -0
- package/dist/types/DataTable/serverTableParams.d.ts +16 -0
- package/dist/types/DataTable/tableMachine.d.ts +41 -0
- package/dist/types/DataTable/useDebouncedFilter.d.ts +8 -0
- package/dist/types/DataTable/useTableState.d.ts +93 -0
- package/dist/types/access/Can.d.ts +11 -0
- package/dist/types/access/PermissionMatrix.d.ts +23 -0
- package/dist/types/access/RequireAccess.d.ts +11 -0
- package/dist/types/access/accessRules.d.ts +24 -0
- package/dist/types/access/permissionGroups.d.ts +56 -0
- package/dist/types/access/useCan.d.ts +11 -0
- package/dist/types/account/AccountProvider.d.ts +27 -0
- package/dist/types/account/AccountSecuritySection.d.ts +9 -0
- package/dist/types/account/DemoTotpCodeButton.d.ts +6 -0
- package/dist/types/account/ForgotPasswordScreen.d.ts +17 -0
- package/dist/types/account/ProfileScreen.d.ts +43 -0
- package/dist/types/account/ResetPasswordScreen.d.ts +21 -0
- package/dist/types/account/SignInScreen.d.ts +27 -0
- package/dist/types/account/accountConnector.d.ts +268 -0
- package/dist/types/account/demo/createDemoAccountConnector.d.ts +30 -0
- package/dist/types/account/demo/totp.d.ts +45 -0
- package/dist/types/account/restAccountConnector.d.ts +49 -0
- package/dist/types/account-demo.d.ts +2 -0
- package/dist/types/account.d.ts +16 -0
- package/dist/types/adapters/i18next.d.ts +11 -0
- package/dist/types/adapters/nextNavigation.d.ts +33 -0
- package/dist/types/adapters/reactRouter.d.ts +6 -0
- package/dist/types/adapters/reactRouterRoutes.d.ts +42 -0
- package/dist/types/api/ApiError.d.ts +42 -0
- package/dist/types/api/createApiClient.d.ts +174 -0
- package/dist/types/api/staleChunks.d.ts +15 -0
- package/dist/types/appShell/AccountMenu.d.ts +28 -0
- package/dist/types/appShell/AppLayout.d.ts +76 -0
- package/dist/types/appShell/AppearanceSettings.d.ts +41 -0
- package/dist/types/appShell/AuthLayout.d.ts +21 -0
- package/dist/types/appShell/BarActionButton.d.ts +15 -0
- package/dist/types/appShell/BarActions.d.ts +23 -0
- package/dist/types/appShell/BarCapsule.d.ts +20 -0
- package/dist/types/appShell/BarSearch.d.ts +24 -0
- package/dist/types/appShell/HeaderTools.d.ts +27 -0
- package/dist/types/appShell/MobileTabBar.d.ts +20 -0
- package/dist/types/appShell/SettingsMenu.d.ts +13 -0
- package/dist/types/appShell/SideMenu.d.ts +31 -0
- package/dist/types/appShell/SideMenuEntry.d.ts +17 -0
- package/dist/types/appShell/SubmenuActionsMenu.d.ts +24 -0
- package/dist/types/appShell/TabBarEditor.d.ts +13 -0
- package/dist/types/appShell/TopMenu.d.ts +7 -0
- package/dist/types/appShell/appMenuContext.d.ts +9 -0
- package/dist/types/appShell/barActionsSlot.d.ts +35 -0
- package/dist/types/appShell/barMenuPlacement.d.ts +9 -0
- package/dist/types/appShell/menuItemText.d.ts +55 -0
- package/dist/types/appShell/pageTitle.d.ts +26 -0
- package/dist/types/appShell/shellSizes.d.ts +46 -0
- package/dist/types/appShell/tabBarRule.d.ts +5 -0
- package/dist/types/appShell/tabBarScroll.d.ts +26 -0
- package/dist/types/appShell/useDrawerCollapsed.d.ts +8 -0
- package/dist/types/appShell/useFittingActionCount.d.ts +7 -0
- package/dist/types/appShell/usePinnedMobileTabs.d.ts +7 -0
- package/dist/types/appShell/useTabBarMinimized.d.ts +8 -0
- package/dist/types/auth/PasswordChecklist.d.ts +13 -0
- package/dist/types/auth/passwordRules.d.ts +34 -0
- package/dist/types/calendar/EventCalendar.d.ts +63 -0
- package/dist/types/calendar/EventDetails.d.ts +36 -0
- package/dist/types/calendar/calendarEvents.d.ts +27 -0
- package/dist/types/calendar.d.ts +3 -0
- package/dist/types/charts.d.ts +6 -0
- package/dist/types/date-pickers.d.ts +2 -0
- package/dist/types/datePickers/DateInput.d.ts +41 -0
- package/dist/types/datePickers/FormDateField.d.ts +7 -0
- package/dist/types/dates.d.ts +18 -0
- package/dist/types/dictionaries/dictionaries.d.ts +54 -0
- package/dist/types/downloads/DownloadManager.d.ts +7 -0
- package/dist/types/downloads/downloadQueue.d.ts +50 -0
- package/dist/types/downloads/downloadsMachine.d.ts +10 -0
- package/dist/types/downloads/fileTypes.d.ts +39 -0
- package/dist/types/downloads/index.d.ts +4 -0
- package/dist/types/excel/reportWorkbook.d.ts +157 -0
- package/dist/types/excel.d.ts +1 -0
- package/dist/types/feedback/ConfirmDialog.d.ts +31 -0
- package/dist/types/feedback/ModalWaiting.d.ts +13 -0
- package/dist/types/feedback/NewBuildNotice.d.ts +20 -0
- package/dist/types/feedback/StaleBuildBoundary.d.ts +21 -0
- package/dist/types/feedback/Toaster.d.ts +1 -0
- package/dist/types/feedback/confirmActionMachine.d.ts +19 -0
- package/dist/types/feedback/index.d.ts +8 -0
- package/dist/types/feedback/toast.d.ts +100 -0
- package/dist/types/feedback/useConfirmAction.d.ts +33 -0
- package/dist/types/filepond/FileDropzone.d.ts +61 -0
- package/dist/types/filepond/pondServer.d.ts +17 -0
- package/dist/types/filepond.d.ts +3 -0
- package/dist/types/files.d.ts +29 -0
- package/dist/types/formatting.d.ts +61 -0
- package/dist/types/forms/FormCatalogField.d.ts +6 -0
- package/dist/types/forms/FormColorField.d.ts +6 -0
- package/dist/types/forms/FormNumberField.d.ts +6 -0
- package/dist/types/forms/FormProblemAlert.d.ts +6 -0
- package/dist/types/forms/FormSelectField.d.ts +6 -0
- package/dist/types/forms/FormServerProblem.d.ts +8 -0
- package/dist/types/forms/FormTextField.d.ts +6 -0
- package/dist/types/forms/FormWizard.d.ts +22 -0
- package/dist/types/forms/SubmitButton.d.ts +9 -0
- package/dist/types/forms/applyServerProblem.d.ts +9 -0
- package/dist/types/forms/auth/ChangePasswordForm.d.ts +17 -0
- package/dist/types/forms/auth/ForgotPasswordForm.d.ts +14 -0
- package/dist/types/forms/auth/SignInForm.d.ts +20 -0
- package/dist/types/forms/index.d.ts +19 -0
- package/dist/types/forms/security/SecondStepForm.d.ts +30 -0
- package/dist/types/forms/security/TwoStepVerificationCard.d.ts +83 -0
- package/dist/types/forms/security/securityRules.d.ts +24 -0
- package/dist/types/forms/serverProblemFields.d.ts +19 -0
- package/dist/types/forms/useFormikField.d.ts +11 -0
- package/dist/types/forms/validation.d.ts +251 -0
- package/dist/types/forms/validationMessages.d.ts +12 -0
- package/dist/types/forms.d.ts +2 -0
- package/dist/types/hookForm/FormCatalogField.d.ts +8 -0
- package/dist/types/hookForm/FormColorField.d.ts +8 -0
- package/dist/types/hookForm/FormNumberField.d.ts +8 -0
- package/dist/types/hookForm/FormProblemAlert.d.ts +7 -0
- package/dist/types/hookForm/FormSelectField.d.ts +8 -0
- package/dist/types/hookForm/FormTextField.d.ts +8 -0
- package/dist/types/hookForm/FormWizard.d.ts +22 -0
- package/dist/types/hookForm/SubmitButton.d.ts +21 -0
- package/dist/types/hookForm/applyServerProblem.d.ts +10 -0
- package/dist/types/hookForm/useHookFormField.d.ts +13 -0
- package/dist/types/i18next.d.ts +1 -0
- package/dist/types/identifiers.d.ts +2 -0
- package/dist/types/inbox/InboxLayout.d.ts +38 -0
- package/dist/types/inbox/MessageList.d.ts +52 -0
- package/dist/types/inbox/MessageView.d.ts +55 -0
- package/dist/types/inbox/inboxDates.d.ts +11 -0
- package/dist/types/index.d.ts +91 -0
- package/dist/types/inputs/CatalogInput.d.ts +45 -0
- package/dist/types/inputs/ColorInput.d.ts +30 -0
- package/dist/types/inputs/FieldFrame.d.ts +14 -0
- package/dist/types/inputs/FormSection.d.ts +29 -0
- package/dist/types/inputs/NumberInput.d.ts +38 -0
- package/dist/types/inputs/SelectInput.d.ts +38 -0
- package/dist/types/inputs/TextInput.d.ts +62 -0
- package/dist/types/inputs/WizardLayout.d.ts +34 -0
- package/dist/types/inputs/colorContrast.d.ts +18 -0
- package/dist/types/inputs/formLayoutContext.d.ts +3 -0
- package/dist/types/inputs/numberText.d.ts +25 -0
- package/dist/types/kanban/KanbanBoard.d.ts +88 -0
- package/dist/types/kanban/kanbanCards.d.ts +22 -0
- package/dist/types/kanban/kanbanMoves.d.ts +38 -0
- package/dist/types/kanban.d.ts +3 -0
- package/dist/types/laravel/csrfRetry.d.ts +21 -0
- package/dist/types/laravel.d.ts +1 -0
- package/dist/types/lastListUrl.d.ts +20 -0
- package/dist/types/locales/en.d.ts +788 -0
- package/dist/types/locales/es.d.ts +788 -0
- package/dist/types/maps/MapView.d.ts +41 -0
- package/dist/types/maps/mapMarkers.d.ts +23 -0
- package/dist/types/maps.d.ts +2 -0
- package/dist/types/money/money.d.ts +203 -0
- package/dist/types/money.d.ts +1 -0
- package/dist/types/navigation/appMenu.d.ts +92 -0
- package/dist/types/navigation/useMenuBadges.d.ts +16 -0
- package/dist/types/navigation.d.ts +22 -0
- package/dist/types/navigationTrail.d.ts +49 -0
- package/dist/types/next.d.ts +1 -0
- package/dist/types/observability/buildWatch.d.ts +28 -0
- package/dist/types/observability/logger.d.ts +19 -0
- package/dist/types/observability/publishedBuild.d.ts +35 -0
- package/dist/types/observability/usePublishedBuildWatch.d.ts +18 -0
- package/dist/types/passkeys.d.ts +1 -0
- package/dist/types/periodRanges.d.ts +32 -0
- package/dist/types/problems.d.ts +31 -0
- package/dist/types/pwa/InstallAppSetting.d.ts +7 -0
- package/dist/types/pwa/InstallInstructionsDialog.d.ts +20 -0
- package/dist/types/pwa/InstallPromptBanner.d.ts +16 -0
- package/dist/types/pwa/installInstructions.d.ts +52 -0
- package/dist/types/pwa/useInstallPrompt.d.ts +13 -0
- package/dist/types/react-hook-form.d.ts +12 -0
- package/dist/types/react-router.d.ts +2 -0
- package/dist/types/security/ActivityLog.d.ts +33 -0
- package/dist/types/security/RecoveryCodesDialog.d.ts +16 -0
- package/dist/types/security/SessionsCard.d.ts +24 -0
- package/dist/types/security/passkeys.d.ts +18 -0
- package/dist/types/table.d.ts +3 -0
- package/dist/types/theme/androidDevice.d.ts +11 -0
- package/dist/types/theme/appleTracking.d.ts +17 -0
- package/dist/types/theme/components/MuiAppBar.d.ts +13 -0
- package/dist/types/theme/components/MuiBackdrop.d.ts +11 -0
- package/dist/types/theme/components/MuiButton.d.ts +27 -0
- package/dist/types/theme/components/MuiButtonBase.d.ts +14 -0
- package/dist/types/theme/components/MuiChip.d.ts +29 -0
- package/dist/types/theme/components/MuiDataGrid.d.ts +45 -0
- package/dist/types/theme/components/MuiDialog.d.ts +9 -0
- package/dist/types/theme/components/MuiDrawer.d.ts +13 -0
- package/dist/types/theme/components/MuiMenuItem.d.ts +17 -0
- package/dist/types/theme/components/MuiTypography.d.ts +20 -0
- package/dist/types/theme/components/glassComponents.d.ts +8 -0
- package/dist/types/theme/components/minimalComponents.d.ts +22 -0
- package/dist/types/theme/components/paletteOf.d.ts +5 -0
- package/dist/types/theme/createToolkitTheme.d.ts +48 -0
- package/dist/types/theme/glassSurface.d.ts +247 -0
- package/dist/types/theme/glassToasterStyles.d.ts +7 -0
- package/dist/types/theme/mergeComponents.d.ts +15 -0
- package/dist/types/theme/stackcraftPalette.d.ts +142 -0
- package/dist/types/theme/toolkitComponents.d.ts +4 -0
- package/dist/types/timeline.d.ts +2 -0
- package/dist/types/toolkit/ComponentTexts.d.ts +11 -0
- package/dist/types/toolkit/ToolkitProvider.d.ts +47 -0
- package/dist/types/toolkit/browserNavigation.d.ts +27 -0
- package/dist/types/toolkit/componentTextsContext.d.ts +20 -0
- package/dist/types/toolkit/hashNavigation.d.ts +12 -0
- package/dist/types/toolkit/navigationPaths.d.ts +43 -0
- package/dist/types/toolkit/toolkitContext.d.ts +28 -0
- package/dist/types/toolkit/toolkitSettings.d.ts +113 -0
- package/dist/types/toolkit/useFormatters.d.ts +6 -0
- package/dist/types/toolkit/useToolkitTranslation.d.ts +11 -0
- package/dist/types/ui/actions/ActionsMenu.d.ts +20 -0
- package/dist/types/ui/actions/CopyButton.d.ts +15 -0
- package/dist/types/ui/actions/DownloadMenu.d.ts +55 -0
- package/dist/types/ui/actions/SecretField.d.ts +17 -0
- package/dist/types/ui/actions/SelectionActions.d.ts +39 -0
- package/dist/types/ui/filters/DateRangeFilter.d.ts +18 -0
- package/dist/types/ui/filters/PeriodRangeSelector.d.ts +28 -0
- package/dist/types/ui/filters/QuickFilters.d.ts +23 -0
- package/dist/types/ui/filters/SegmentedControl.d.ts +44 -0
- package/dist/types/ui/index.d.ts +33 -0
- package/dist/types/ui/labels/DictionaryText.d.ts +7 -0
- package/dist/types/ui/labels/StatusChip.d.ts +21 -0
- package/dist/types/ui/labels/Tag.d.ts +19 -0
- package/dist/types/ui/labels/tagOf.d.ts +13 -0
- package/dist/types/ui/layout/CollapsibleSection.d.ts +18 -0
- package/dist/types/ui/layout/ContentDialog.d.ts +15 -0
- package/dist/types/ui/layout/DefinitionList.d.ts +15 -0
- package/dist/types/ui/layout/DetailHeader.d.ts +15 -0
- package/dist/types/ui/layout/ErrorPage.d.ts +35 -0
- package/dist/types/ui/layout/FullPageLoader.d.ts +7 -0
- package/dist/types/ui/layout/GlassLensFilter.d.ts +1 -0
- package/dist/types/ui/layout/GlassPanel.d.ts +11 -0
- package/dist/types/ui/layout/PageHeader.d.ts +15 -0
- package/dist/types/ui/layout/PageHeading.d.ts +20 -0
- package/dist/types/ui/layout/ProfileHeader.d.ts +17 -0
- package/dist/types/ui/layout/ScrollableRow.d.ts +33 -0
- package/dist/types/ui/layout/SectionCard.d.ts +11 -0
- package/dist/types/ui/layout/appBarHeight.d.ts +13 -0
- package/dist/types/ui/metrics/BarList.d.ts +25 -0
- package/dist/types/ui/metrics/CalendarHeatmap.d.ts +34 -0
- package/dist/types/ui/metrics/ChartTooltip.d.ts +11 -0
- package/dist/types/ui/metrics/ColumnChart.d.ts +47 -0
- package/dist/types/ui/metrics/LineChart.d.ts +41 -0
- package/dist/types/ui/metrics/MetricCard.d.ts +39 -0
- package/dist/types/ui/metrics/TableToggle.d.ts +14 -0
- package/dist/types/ui/metrics/barListLabels.d.ts +17 -0
- package/dist/types/ui/metrics/chartParts.d.ts +112 -0
- package/dist/types/ui/metrics/heatmapScale.d.ts +45 -0
- package/dist/types/ui/navigation/BackButton.d.ts +13 -0
- package/dist/types/ui/navigation/ColorSchemeToggle.d.ts +13 -0
- package/dist/types/ui/navigation/DocumentTitle.d.ts +6 -0
- package/dist/types/ui/navigation/FontSizeToggle.d.ts +11 -0
- package/dist/types/ui/navigation/LanguageToggle.d.ts +13 -0
- package/dist/types/ui/navigation/PageBreadcrumbs.d.ts +12 -0
- package/dist/types/ui/navigation/colorMode.d.ts +18 -0
- package/dist/types/ui/navigation/fontSizeLevels.d.ts +25 -0
- package/dist/types/ui/navigation/useFontSize.d.ts +10 -0
- package/dist/types/ui/timeline/GroupedTimeline.d.ts +41 -0
- package/dist/types/ui/timeline/timelineDot.d.ts +19 -0
- package/dist/types/upload/FileDropzone.d.ts +36 -0
- package/dist/types/upload/fileRules.d.ts +51 -0
- package/dist/types/upload/uploadMachine.d.ts +23 -0
- package/dist/types/upload/uploadWithProgress.d.ts +16 -0
- package/dist/ui/actions/ActionsMenu.js +51 -0
- package/dist/ui/actions/ActionsMenu.js.map +1 -0
- package/dist/ui/actions/CopyButton.js +28 -0
- package/dist/ui/actions/CopyButton.js.map +1 -0
- package/dist/ui/actions/DownloadMenu.js +162 -0
- package/dist/ui/actions/DownloadMenu.js.map +1 -0
- package/dist/ui/actions/SecretField.js +61 -0
- package/dist/ui/actions/SecretField.js.map +1 -0
- package/dist/ui/actions/SelectionActions.js +142 -0
- package/dist/ui/actions/SelectionActions.js.map +1 -0
- package/dist/ui/filters/DateRangeFilter.js +87 -0
- package/dist/ui/filters/DateRangeFilter.js.map +1 -0
- package/dist/ui/filters/PeriodRangeSelector.js +56 -0
- package/dist/ui/filters/PeriodRangeSelector.js.map +1 -0
- package/dist/ui/filters/QuickFilters.js +91 -0
- package/dist/ui/filters/QuickFilters.js.map +1 -0
- package/dist/ui/filters/SegmentedControl.js +80 -0
- package/dist/ui/filters/SegmentedControl.js.map +1 -0
- package/dist/ui/labels/DictionaryText.js +11 -0
- package/dist/ui/labels/DictionaryText.js.map +1 -0
- package/dist/ui/labels/StatusChip.js +52 -0
- package/dist/ui/labels/StatusChip.js.map +1 -0
- package/dist/ui/labels/Tag.js +26 -0
- package/dist/ui/labels/Tag.js.map +1 -0
- package/dist/ui/labels/tagOf.js +7 -0
- package/dist/ui/labels/tagOf.js.map +1 -0
- package/dist/ui/layout/CollapsibleSection.js +52 -0
- package/dist/ui/layout/CollapsibleSection.js.map +1 -0
- package/dist/ui/layout/ContentDialog.js +97 -0
- package/dist/ui/layout/ContentDialog.js.map +1 -0
- package/dist/ui/layout/DefinitionList.js +30 -0
- package/dist/ui/layout/DefinitionList.js.map +1 -0
- package/dist/ui/layout/DetailHeader.js +27 -0
- package/dist/ui/layout/DetailHeader.js.map +1 -0
- package/dist/ui/layout/ErrorPage.js +54 -0
- package/dist/ui/layout/ErrorPage.js.map +1 -0
- package/dist/ui/layout/FullPageLoader.js +13 -0
- package/dist/ui/layout/FullPageLoader.js.map +1 -0
- package/dist/ui/layout/GlassLensFilter.js +53 -0
- package/dist/ui/layout/GlassLensFilter.js.map +1 -0
- package/dist/ui/layout/GlassPanel.js +18 -0
- package/dist/ui/layout/GlassPanel.js.map +1 -0
- package/dist/ui/layout/PageHeader.js +23 -0
- package/dist/ui/layout/PageHeader.js.map +1 -0
- package/dist/ui/layout/PageHeading.js +51 -0
- package/dist/ui/layout/PageHeading.js.map +1 -0
- package/dist/ui/layout/ProfileHeader.js +64 -0
- package/dist/ui/layout/ProfileHeader.js.map +1 -0
- package/dist/ui/layout/ScrollableRow.js +156 -0
- package/dist/ui/layout/ScrollableRow.js.map +1 -0
- package/dist/ui/layout/SectionCard.js +18 -0
- package/dist/ui/layout/SectionCard.js.map +1 -0
- package/dist/ui/layout/appBarHeight.js +42 -0
- package/dist/ui/layout/appBarHeight.js.map +1 -0
- package/dist/ui/metrics/BarList.js +94 -0
- package/dist/ui/metrics/BarList.js.map +1 -0
- package/dist/ui/metrics/CalendarHeatmap.js +136 -0
- package/dist/ui/metrics/CalendarHeatmap.js.map +1 -0
- package/dist/ui/metrics/ChartTooltip.js +16 -0
- package/dist/ui/metrics/ChartTooltip.js.map +1 -0
- package/dist/ui/metrics/ColumnChart.js +106 -0
- package/dist/ui/metrics/ColumnChart.js.map +1 -0
- package/dist/ui/metrics/LineChart.js +117 -0
- package/dist/ui/metrics/LineChart.js.map +1 -0
- package/dist/ui/metrics/MetricCard.js +97 -0
- package/dist/ui/metrics/MetricCard.js.map +1 -0
- package/dist/ui/metrics/TableToggle.js +15 -0
- package/dist/ui/metrics/TableToggle.js.map +1 -0
- package/dist/ui/metrics/barListLabels.js +9 -0
- package/dist/ui/metrics/barListLabels.js.map +1 -0
- package/dist/ui/metrics/chartParts.js +93 -0
- package/dist/ui/metrics/chartParts.js.map +1 -0
- package/dist/ui/metrics/heatmapScale.js +67 -0
- package/dist/ui/metrics/heatmapScale.js.map +1 -0
- package/dist/ui/navigation/BackButton.js +28 -0
- package/dist/ui/navigation/BackButton.js.map +1 -0
- package/dist/ui/navigation/ColorSchemeToggle.js +40 -0
- package/dist/ui/navigation/ColorSchemeToggle.js.map +1 -0
- package/dist/ui/navigation/DocumentTitle.js +11 -0
- package/dist/ui/navigation/DocumentTitle.js.map +1 -0
- package/dist/ui/navigation/FontSizeToggle.js +41 -0
- package/dist/ui/navigation/FontSizeToggle.js.map +1 -0
- package/dist/ui/navigation/LanguageToggle.js +48 -0
- package/dist/ui/navigation/LanguageToggle.js.map +1 -0
- package/dist/ui/navigation/PageBreadcrumbs.js +51 -0
- package/dist/ui/navigation/PageBreadcrumbs.js.map +1 -0
- package/dist/ui/navigation/colorMode.js +13 -0
- package/dist/ui/navigation/colorMode.js.map +1 -0
- package/dist/ui/navigation/fontSizeLevels.js +24 -0
- package/dist/ui/navigation/fontSizeLevels.js.map +1 -0
- package/dist/ui/navigation/useFontSize.js +44 -0
- package/dist/ui/navigation/useFontSize.js.map +1 -0
- package/dist/ui/timeline/GroupedTimeline.js +106 -0
- package/dist/ui/timeline/GroupedTimeline.js.map +1 -0
- package/dist/ui/timeline/timelineDot.js +20 -0
- package/dist/ui/timeline/timelineDot.js.map +1 -0
- package/dist/upload/FileDropzone.js +145 -0
- package/dist/upload/FileDropzone.js.map +1 -0
- package/dist/upload/fileRules.js +62 -0
- package/dist/upload/fileRules.js.map +1 -0
- package/dist/upload/uploadMachine.js +73 -0
- package/dist/upload/uploadMachine.js.map +1 -0
- package/dist/upload/uploadWithProgress.js +45 -0
- package/dist/upload/uploadWithProgress.js.map +1 -0
- package/package.json +311 -5
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// La raíz de la app: el ÚNICO lugar donde se conecta el framework. ToolkitProvider recibe el idioma, los textos, la zona, la
|
|
2
|
+
// moneda y el router; los avisos (Toaster) se montan aquí una vez, para todas las pantallas. Aquí también se vigila si ya se
|
|
3
|
+
// publicó otra versión (usePublishedBuildWatch): una pestaña abierta desde ayer, o la app anclada al inicio del iPhone, se
|
|
4
|
+
// actualiza sola si estuvo fuera 15 minutos o más; si no, sale el aviso «Versión nueva» con su botón.
|
|
5
|
+
//#if auth
|
|
6
|
+
//
|
|
7
|
+
// AccountProvider carga la sesión con el conector de la cuenta (core/accountConnector.js) y le pasa a ToolkitProvider la regla
|
|
8
|
+
// de permisos de quien está dentro.
|
|
9
|
+
//#endif
|
|
10
|
+
//
|
|
11
|
+
// Va como elemento de la ruta raíz y no afuera del router porque usa sus hooks (useNavigate, useLocation).
|
|
12
|
+
//
|
|
13
|
+
// Lo renderiza la app: arrow (regla de la casa).
|
|
14
|
+
import {useEffect, useState} from 'react';
|
|
15
|
+
import {Outlet} from 'react-router';
|
|
16
|
+
import {
|
|
17
|
+
//#if pwa
|
|
18
|
+
InstallPromptBanner,
|
|
19
|
+
//#endif
|
|
20
|
+
Toaster,
|
|
21
|
+
ToolkitProvider,
|
|
22
|
+
usePublishedBuildWatch,
|
|
23
|
+
} from '@stackcraftmx/calcita';
|
|
24
|
+
//#if auth
|
|
25
|
+
import {AccountProvider} from '@stackcraftmx/calcita/account';
|
|
26
|
+
//#endif
|
|
27
|
+
//#if i18next
|
|
28
|
+
import {translateWithI18next} from '@stackcraftmx/calcita/i18next';
|
|
29
|
+
//#endif
|
|
30
|
+
import {reactRouterNavigation} from '@stackcraftmx/calcita/react-router';
|
|
31
|
+
|
|
32
|
+
import {APP_BUILD_ID, APP_LANGUAGES, APP_NAME, BUILD_VERSION_URL, PRODUCT_CURRENCY, PRODUCT_TIME_ZONE} from '@/app/appSettings.js';
|
|
33
|
+
//#if !i18next
|
|
34
|
+
import {APP_TEXTS} from '@/app/appTexts.js';
|
|
35
|
+
//#endif
|
|
36
|
+
//#if i18next
|
|
37
|
+
import {i18n} from '@/app/i18n.js';
|
|
38
|
+
//#endif
|
|
39
|
+
//#if auth
|
|
40
|
+
import {accountConnector} from '@/core';
|
|
41
|
+
//#endif
|
|
42
|
+
//#if i18next
|
|
43
|
+
|
|
44
|
+
// se arma una sola vez: lee de la instancia de i18next, no de una copia
|
|
45
|
+
const translate = translateWithI18next(i18n);
|
|
46
|
+
//#endif
|
|
47
|
+
|
|
48
|
+
export const AppProviders = () => {
|
|
49
|
+
const [language, setLanguage] = useState(APP_LANGUAGES.spanish);
|
|
50
|
+
usePublishedBuildWatch({url: BUILD_VERSION_URL, buildId: APP_BUILD_ID});
|
|
51
|
+
|
|
52
|
+
// el idioma de la página, para el lector de pantalla y el corrector del navegador
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
document.documentElement.lang = language;
|
|
55
|
+
}, [language]);
|
|
56
|
+
//#if i18next
|
|
57
|
+
|
|
58
|
+
// primero i18next y luego la app: así la pantalla se vuelve a pintar ya con los textos del idioma nuevo
|
|
59
|
+
const changeLanguage = async (nextLanguage) => {
|
|
60
|
+
await i18n.changeLanguage(nextLanguage);
|
|
61
|
+
setLanguage(nextLanguage);
|
|
62
|
+
};
|
|
63
|
+
//#endif
|
|
64
|
+
|
|
65
|
+
//#if auth
|
|
66
|
+
return (
|
|
67
|
+
<AccountProvider connector={accountConnector}>
|
|
68
|
+
{(canAccess) => (
|
|
69
|
+
<ToolkitProvider language={language}
|
|
70
|
+
//#if !i18next
|
|
71
|
+
onLanguageChange={setLanguage} texts={APP_TEXTS}
|
|
72
|
+
//#endif
|
|
73
|
+
//#if i18next
|
|
74
|
+
onLanguageChange={changeLanguage} translate={translate}
|
|
75
|
+
//#endif
|
|
76
|
+
timeZone={PRODUCT_TIME_ZONE} currency={PRODUCT_CURRENCY} appName={APP_NAME} navigation={reactRouterNavigation}
|
|
77
|
+
buildId={APP_BUILD_ID} canAccess={canAccess}>
|
|
78
|
+
<Outlet />
|
|
79
|
+
<Toaster />
|
|
80
|
+
//#if pwa
|
|
81
|
+
<InstallPromptBanner />
|
|
82
|
+
//#endif
|
|
83
|
+
</ToolkitProvider>
|
|
84
|
+
)}
|
|
85
|
+
</AccountProvider>
|
|
86
|
+
);
|
|
87
|
+
//#endif
|
|
88
|
+
//#if !auth
|
|
89
|
+
return (
|
|
90
|
+
<ToolkitProvider language={language}
|
|
91
|
+
//#if !i18next
|
|
92
|
+
onLanguageChange={setLanguage} texts={APP_TEXTS}
|
|
93
|
+
//#endif
|
|
94
|
+
//#if i18next
|
|
95
|
+
onLanguageChange={changeLanguage} translate={translate}
|
|
96
|
+
//#endif
|
|
97
|
+
timeZone={PRODUCT_TIME_ZONE} currency={PRODUCT_CURRENCY} appName={APP_NAME} navigation={reactRouterNavigation}
|
|
98
|
+
buildId={APP_BUILD_ID}>
|
|
99
|
+
<Outlet />
|
|
100
|
+
<Toaster />
|
|
101
|
+
//#if pwa
|
|
102
|
+
<InstallPromptBanner />
|
|
103
|
+
//#endif
|
|
104
|
+
</ToolkitProvider>
|
|
105
|
+
);
|
|
106
|
+
//#endif
|
|
107
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// El marco de las pantallas: AppLayout del framework (la barra con el logo, el menú por secciones y la cuenta) con el menú
|
|
2
|
+
// compuesto con el menu.js de cada módulo.
|
|
3
|
+
//
|
|
4
|
+
// El menú no se escribe aquí: composeMenu descubre los menu.js de los módulos y deja solo los que se pueden ver.
|
|
5
|
+
//#if auth
|
|
6
|
+
//
|
|
7
|
+
// Sin sesión no se entra: lleva a iniciar sesión, y de regreso a la pantalla que se quería abrir.
|
|
8
|
+
//#endif
|
|
9
|
+
//
|
|
10
|
+
// Lo renderiza la app: arrow (regla de la casa).
|
|
11
|
+
//#if auth
|
|
12
|
+
import {useMemo, useState} from 'react';
|
|
13
|
+
import {Navigate, Outlet, useLocation, useNavigate} from 'react-router';
|
|
14
|
+
//#endif
|
|
15
|
+
//#if !auth
|
|
16
|
+
import {useMemo} from 'react';
|
|
17
|
+
import {Outlet} from 'react-router';
|
|
18
|
+
//#endif
|
|
19
|
+
import {
|
|
20
|
+
AppLayout,
|
|
21
|
+
//#if pwa
|
|
22
|
+
InstallAppSetting,
|
|
23
|
+
//#endif
|
|
24
|
+
MENU_POSITION,
|
|
25
|
+
composeMenu,
|
|
26
|
+
useAccessChecker,
|
|
27
|
+
useToolkitTranslation,
|
|
28
|
+
//#if auth
|
|
29
|
+
withRedirect,
|
|
30
|
+
//#endif
|
|
31
|
+
} from '@stackcraftmx/calcita';
|
|
32
|
+
//#if auth
|
|
33
|
+
import {useAccount} from '@stackcraftmx/calcita/account';
|
|
34
|
+
//#endif
|
|
35
|
+
import {useIsNavigating} from '@stackcraftmx/calcita/react-router';
|
|
36
|
+
|
|
37
|
+
//#if auth
|
|
38
|
+
import {APP_PATHS, AppLogo} from '@/core';
|
|
39
|
+
//#endif
|
|
40
|
+
//#if !auth
|
|
41
|
+
import {AppLogo} from '@/core';
|
|
42
|
+
//#endif
|
|
43
|
+
|
|
44
|
+
// cada módulo declara su entrada en su menu.js (orden, permiso, sección, texto e ícono)
|
|
45
|
+
const MENU_MODULES = import.meta.glob('@/modules/*/menu.js', {eager: true});
|
|
46
|
+
|
|
47
|
+
export const AppShell = () => {
|
|
48
|
+
const {t} = useToolkitTranslation('shell');
|
|
49
|
+
const canAccess = useAccessChecker();
|
|
50
|
+
const isNavigating = useIsNavigating();
|
|
51
|
+
const menuItems = useMemo(() => composeMenu(MENU_MODULES, {canAccess}), [canAccess]);
|
|
52
|
+
//#if auth
|
|
53
|
+
const {session, signOut} = useAccount();
|
|
54
|
+
const {pathname, search} = useLocation();
|
|
55
|
+
const navigate = useNavigate();
|
|
56
|
+
const [isSigningOut, setIsSigningOut] = useState(false);
|
|
57
|
+
|
|
58
|
+
// salir a propósito: a iniciar sesión sin «regresar a», y luego se cierra la sesión
|
|
59
|
+
const leave = async () => {
|
|
60
|
+
setIsSigningOut(true);
|
|
61
|
+
navigate(APP_PATHS.signIn);
|
|
62
|
+
await signOut();
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
// guard clause: sin sesión, a iniciar sesión con la pantalla que se quería abrir
|
|
66
|
+
if (!session) {
|
|
67
|
+
return <Navigate to={withRedirect(APP_PATHS.signIn, `${pathname}${search}`)} replace />;
|
|
68
|
+
}
|
|
69
|
+
//#endif
|
|
70
|
+
|
|
71
|
+
return (
|
|
72
|
+
<AppLayout logo={<AppLogo />} brandCaption={t('caption')} menuItems={menuItems} menuPosition={MENU_POSITION.__MENU_POSITION__}
|
|
73
|
+
isNavigating={isNavigating}
|
|
74
|
+
//#if auth
|
|
75
|
+
user={session.user} profilePath={APP_PATHS.profile} onSignOut={leave} isSigningOut={isSigningOut}
|
|
76
|
+
//#endif
|
|
77
|
+
//#if !darkMode
|
|
78
|
+
showColorSchemeToggle={false}
|
|
79
|
+
//#endif
|
|
80
|
+
//#if pwa
|
|
81
|
+
accountSettings={<InstallAppSetting />}
|
|
82
|
+
//#endif
|
|
83
|
+
>
|
|
84
|
+
<Outlet />
|
|
85
|
+
</AppLayout>
|
|
86
|
+
);
|
|
87
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// Las rutas de la app: AppProviders por fuera (conecta el framework), las pantallas sin marco (publicRoutes: entrar, «¿olvidó
|
|
2
|
+
// su contraseña?») y las de cada módulo dentro del marco (AppShell).
|
|
3
|
+
//
|
|
4
|
+
// Las rutas no se escriben aquí: cada módulo las declara en su routes.js y se descubren solas, cada grupo con el permiso del
|
|
5
|
+
// menu.js de su módulo (withAccess: quien no puede ve la página de «sin permiso»). Módulo nuevo = cero ediciones aquí.
|
|
6
|
+
//
|
|
7
|
+
// Cada pantalla viaja en su propio archivo (lazy): si se publicó otra versión con la pestaña abierta, withChunkRecovery
|
|
8
|
+
// recarga una vez, y si una pantalla truena RouteErrorScreen dice qué pasó, con su botón para recargar.
|
|
9
|
+
import {createBrowserRouter} from 'react-router';
|
|
10
|
+
import {ERROR_PAGE_KIND, ErrorPage, FullPageLoader} from '@stackcraftmx/calcita';
|
|
11
|
+
import {RouteErrorScreen, withAccess, withChunkRecovery} from '@stackcraftmx/calcita/react-router';
|
|
12
|
+
|
|
13
|
+
import {AppProviders} from '@/app/AppProviders.jsx';
|
|
14
|
+
import {AppShell} from '@/app/AppShell.jsx';
|
|
15
|
+
import {APP_PATHS, ROUTER_BASENAME} from '@/core';
|
|
16
|
+
|
|
17
|
+
const ROUTE_MODULES = import.meta.glob('@/modules/*/routes.js', {eager: true});
|
|
18
|
+
const MENU_MODULES = import.meta.glob('@/modules/*/menu.js', {eager: true});
|
|
19
|
+
|
|
20
|
+
// el grupo de rutas de cada módulo, con la regla de su menu.js (el que está junto a su routes.js)
|
|
21
|
+
const moduleRouteGroups = Object.entries(ROUTE_MODULES)
|
|
22
|
+
.filter(([, routeModule]) => routeModule.routes?.length)
|
|
23
|
+
.map(([routesPath, routeModule]) => {
|
|
24
|
+
const menuModule = MENU_MODULES[routesPath.replace(/routes\.js$/, 'menu.js')];
|
|
25
|
+
return withAccess(menuModule?.access, routeModule.routes);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// las pantallas sin el marco (entrar…)
|
|
29
|
+
const publicRoutes = Object.values(ROUTE_MODULES).flatMap((routeModule) => routeModule.publicRoutes ?? []);
|
|
30
|
+
|
|
31
|
+
export const appRouter = createBrowserRouter([
|
|
32
|
+
{
|
|
33
|
+
path: APP_PATHS.home,
|
|
34
|
+
element: <AppProviders />,
|
|
35
|
+
// lo que se ve al abrir la app directo en una pantalla, mientras se descarga (las rutas son lazy)
|
|
36
|
+
HydrateFallback: FullPageLoader,
|
|
37
|
+
ErrorBoundary: RouteErrorScreen,
|
|
38
|
+
children: withChunkRecovery([
|
|
39
|
+
...publicRoutes,
|
|
40
|
+
{
|
|
41
|
+
element: <AppShell />,
|
|
42
|
+
children: [
|
|
43
|
+
...moduleRouteGroups,
|
|
44
|
+
{path: '*', element: <ErrorPage kind={ERROR_PAGE_KIND.notFound} />},
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
]),
|
|
48
|
+
},
|
|
49
|
+
// detrás de un proxy con prefijo (ASSET_URL), el router lo quita al leer la dirección y lo pone en cada liga: las pantallas
|
|
50
|
+
// siguen escribiendo sus rutas desde la raíz ('/contacts')
|
|
51
|
+
], {basename: ROUTER_BASENAME});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Lo que la app le pasa a ToolkitProvider y que no cambia mientras corre.
|
|
2
|
+
import {publicUrlOf} from '@/core';
|
|
3
|
+
|
|
4
|
+
/** El nombre de la app: en la barra y en la pestaña, después del título de cada pantalla («Contactos | __APP_TITLE__»). */
|
|
5
|
+
export const APP_NAME = '__APP_TITLE__';
|
|
6
|
+
|
|
7
|
+
/** La zona del producto: las fechas y horas se pintan en la hora de la Ciudad de México, se vean desde donde se vean. */
|
|
8
|
+
export const PRODUCT_TIME_ZONE = 'America/Mexico_City';
|
|
9
|
+
|
|
10
|
+
/** La moneda de los montos (ISO 4217). */
|
|
11
|
+
export const PRODUCT_CURRENCY = 'MXN';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* La versión del front que corre en esta pestaña: la pone el build (VITE_BUILD_ID, de vite.config.js, la misma que escribe
|
|
15
|
+
* en version.json). En desarrollo no hay build: queda vacía y no se compara nada.
|
|
16
|
+
*/
|
|
17
|
+
export const APP_BUILD_ID = import.meta.env.VITE_BUILD_ID ?? '';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Dónde está el archivo con la versión publicada: la app lo vuelve a leer al abrirla y cada tanto (usePublishedBuildWatch).
|
|
21
|
+
* Solo en lo construido, con el prefijo si la app vive detrás de un proxy. OJO: el servidor no debe guardarlo (Cache-Control:
|
|
22
|
+
* no-cache, como el index.html).
|
|
23
|
+
*/
|
|
24
|
+
export const BUILD_VERSION_URL = import.meta.env.PROD ? publicUrlOf('version.json') : null;
|
|
25
|
+
|
|
26
|
+
/** Los idiomas que ofrece la app; el primero es el de arranque. */
|
|
27
|
+
export const APP_LANGUAGES = Object.freeze({spanish: 'es', english: 'en'});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Todos los textos de la app: los de la barra y los de cada módulo, juntos por idioma.
|
|
2
|
+
//
|
|
3
|
+
// Los de los módulos se descubren solos (modules/<módulo>/*Texts.js): módulo nuevo = cero ediciones aquí.
|
|
4
|
+
//
|
|
5
|
+
// OJO: constante de módulo. ToolkitProvider vuelve a configurar todo cuando cambian sus textos; un objeto nuevo en cada
|
|
6
|
+
// pintada lo haría en cada pintada.
|
|
7
|
+
import {combineTexts} from '@/app/combineTexts.js';
|
|
8
|
+
import {shellTexts} from '@/app/shellTexts.js';
|
|
9
|
+
|
|
10
|
+
const MODULE_TEXT_FILES = import.meta.glob('@/modules/*/*Texts.js', {eager: true});
|
|
11
|
+
|
|
12
|
+
// cada archivo de textos exporta un solo objeto {es, en}
|
|
13
|
+
const moduleTexts = Object.values(MODULE_TEXT_FILES).flatMap((textFile) => Object.values(textFile));
|
|
14
|
+
|
|
15
|
+
export const APP_TEXTS = combineTexts([shellTexts, ...moduleTexts]);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Junta los textos de cada módulo en el objeto `texts` que recibe ToolkitProvider: {es: {namespace: {...}}, en: {...}}.
|
|
2
|
+
//
|
|
3
|
+
// Cada módulo trae sus archivos de textos (*Texts.js) con su namespace. Aquí se juntan por idioma y por namespace; dos
|
|
4
|
+
// archivos con el mismo namespace suman sus llaves, y si repiten una llave truena: un texto pisado en silencio saldría en
|
|
5
|
+
// la pantalla equivocada.
|
|
6
|
+
//
|
|
7
|
+
// Funciones puras, sin React: function (regla de la casa).
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @param {Array<Record<string, Record<string, object>>>} textFiles los textos de cada archivo, por idioma
|
|
11
|
+
* @returns {Record<string, Record<string, object>>} todos los textos, por idioma y namespace
|
|
12
|
+
*/
|
|
13
|
+
export function combineTexts(textFiles) {
|
|
14
|
+
const combined = {};
|
|
15
|
+
|
|
16
|
+
for (const fileTexts of textFiles) {
|
|
17
|
+
for (const [language, namespaces] of Object.entries(fileTexts)) {
|
|
18
|
+
combined[language] ??= {};
|
|
19
|
+
for (const [namespace, keys] of Object.entries(namespaces)) {
|
|
20
|
+
const currentKeys = combined[language][namespace] ?? {};
|
|
21
|
+
const repeatedKey = Object.keys(keys).find((key) => Object.hasOwn(currentKeys, key));
|
|
22
|
+
if (repeatedKey) {
|
|
23
|
+
throw new Error(`Dos archivos definen el texto «${namespace}:${repeatedKey}» en «${language}»`);
|
|
24
|
+
}
|
|
25
|
+
combined[language][namespace] = {...currentKeys, ...keys};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return combined;
|
|
31
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// i18next con los textos de la app (los de cada módulo, juntos en APP_TEXTS) como sus recursos: los textos se escriben en
|
|
2
|
+
// los *Texts.js de cada módulo, como siempre, y Calcita los lee de esta instancia (translateWithI18next en AppProviders).
|
|
3
|
+
// Lo que la app no tenga (los textos de las tablas, de los diálogos, de las validaciones) sale de los textos de Calcita.
|
|
4
|
+
import i18next from 'i18next';
|
|
5
|
+
|
|
6
|
+
import {APP_LANGUAGES} from '@/app/appSettings.js';
|
|
7
|
+
import {APP_TEXTS} from '@/app/appTexts.js';
|
|
8
|
+
|
|
9
|
+
export const i18n = i18next.createInstance();
|
|
10
|
+
|
|
11
|
+
// sin esperar: con los recursos ya en memoria (initAsync: false) queda lista al terminar init
|
|
12
|
+
i18n.init({
|
|
13
|
+
resources: APP_TEXTS,
|
|
14
|
+
lng: APP_LANGUAGES.spanish,
|
|
15
|
+
fallbackLng: APP_LANGUAGES.spanish,
|
|
16
|
+
// React ya escapa lo que pinta: si i18next también, un «<» saldría como «<»
|
|
17
|
+
interpolation: {escapeValue: false},
|
|
18
|
+
initAsync: false,
|
|
19
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Los textos del marco de la app (namespace shell): el renglón bajo el nombre y los títulos de las secciones del menú.
|
|
2
|
+
// Un módulo elige su sección en su menu.js (sectionKey: 'shell:sections.operation').
|
|
3
|
+
export const shellTexts = {
|
|
4
|
+
es: {
|
|
5
|
+
shell: {
|
|
6
|
+
caption: 'Panel de administración',
|
|
7
|
+
sections: {operation: 'Operación'},
|
|
8
|
+
},
|
|
9
|
+
},
|
|
10
|
+
en: {
|
|
11
|
+
shell: {
|
|
12
|
+
caption: 'Admin panel',
|
|
13
|
+
sections: {operation: 'Operation'},
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// El logo de la app (public/favicon.svg) en la barra y en las pantallas de entrar: cámbielo por el suyo aquí, en un solo
|
|
2
|
+
// lugar.
|
|
3
|
+
//
|
|
4
|
+
// Genérico, sin estado: function (regla de la casa).
|
|
5
|
+
import Box from '@mui/material/Box';
|
|
6
|
+
|
|
7
|
+
import {publicUrlOf} from '@/core/publicPaths.js';
|
|
8
|
+
|
|
9
|
+
// el tamaño que piden la barra y la tarjeta de entrar
|
|
10
|
+
const LOGO_SIZE_PIXELS = 28;
|
|
11
|
+
|
|
12
|
+
export function AppLogo() {
|
|
13
|
+
return <Box component="img" src={publicUrlOf('favicon.svg')} alt="" sx={{width: LOGO_SIZE_PIXELS, height: LOGO_SIZE_PIXELS}} />;
|
|
14
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// La cuenta de la app: entrar (con su segundo paso), «¿Olvidó su contraseña?», elegir una contraseña nueva, Mi perfil y su
|
|
2
|
+
// seguridad ya vienen hechos en Calcita (@stackcraftmx/calcita/account). Lo ÚNICO de la app es este conector: las llamadas
|
|
3
|
+
// a su backend.
|
|
4
|
+
//
|
|
5
|
+
// - Sin VITE_API_URL (en .env.local): la DEMOSTRACIÓN, todo en este navegador, para trabajar sin backend.
|
|
6
|
+
// - Con VITE_API_URL: el backend de verdad. Si sigue el contrato REST de Calcita (las rutas y las respuestas están en el
|
|
7
|
+
// README de Calcita, «La cuenta completa: conectar su backend»), no hay nada más que hacer. Si alguna ruta o respuesta es
|
|
8
|
+
// distinta, se cambia solo esa función:
|
|
9
|
+
//
|
|
10
|
+
// const restConnector = createRestAccountConnector(apiClient, {paths: {session: '/me'}});
|
|
11
|
+
// export const accountConnector = {...restConnector, signIn: async (credentials) => …};
|
|
12
|
+
import {createRestAccountConnector} from '@stackcraftmx/calcita/account';
|
|
13
|
+
import {createDemoAccountConnector} from '@stackcraftmx/calcita/account-demo';
|
|
14
|
+
import QRCode from 'qrcode';
|
|
15
|
+
|
|
16
|
+
import {apiClient} from '@/core/apiClient.js';
|
|
17
|
+
|
|
18
|
+
/** La persona de la demostración (datos inventados): con su correo y cualquier contraseña se entra. */
|
|
19
|
+
export const DEMO_USER = Object.freeze({
|
|
20
|
+
id: 'user-demo', name: 'Ana Martínez Ruiz', email: 'ana.martinez@ejemplo.com', subtitle: 'Administración', phone: '',
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
/** Sin dirección del API, la app trabaja con la demostración. */
|
|
24
|
+
export const USES_DEMO_ACCOUNT = !import.meta.env.VITE_API_URL;
|
|
25
|
+
|
|
26
|
+
export const accountConnector = USES_DEMO_ACCOUNT
|
|
27
|
+
? createDemoAccountConnector({
|
|
28
|
+
user: DEMO_USER,
|
|
29
|
+
labels: ['Administración'],
|
|
30
|
+
// la sesión de la demostración se recuerda en este navegador, con el nombre de la app para no chocar con otra
|
|
31
|
+
storageKey: '__APP_SLUG__:session',
|
|
32
|
+
issuer: '__APP_TITLE__',
|
|
33
|
+
// el QR que escanea la app autenticadora
|
|
34
|
+
toQrImageUrl: (otpauthUrl) => QRCode.toDataURL(otpauthUrl, {margin: 1}),
|
|
35
|
+
})
|
|
36
|
+
: createRestAccountConnector(apiClient);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// La petición de la casa para hablar con el backend de verdad (createApiClient de Calcita): manda el idioma, convierte los
|
|
2
|
+
// errores en ApiError (RFC 9457) con su mensaje en el idioma de la persona y reconoce la sesión vencida, en un solo lugar.
|
|
3
|
+
//
|
|
4
|
+
// Hoy los *Api.js de los módulos llaman al servidor de mentira (src/fakeServer). Para conectar el de verdad, cada uno
|
|
5
|
+
// cambia su llamada por una de estas, sin tocar la pantalla:
|
|
6
|
+
//
|
|
7
|
+
// export const loadContacts = (signal) => apiClient.get('/contacts', {signal});
|
|
8
|
+
// export const addContact = (values) => apiClient.post('/contacts', values);
|
|
9
|
+
//
|
|
10
|
+
// La dirección del API sale de VITE_API_URL (en .env.local, que no se sube al repo); sin ella, /api del mismo servidor.
|
|
11
|
+
import {createApiClient} from '@stackcraftmx/calcita';
|
|
12
|
+
|
|
13
|
+
const DEFAULT_API_URL = '/api';
|
|
14
|
+
|
|
15
|
+
export const apiClient = createApiClient({baseUrl: import.meta.env.VITE_API_URL ?? DEFAULT_API_URL});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Las rutas que conocen varios módulos (la barra, la guardia de la sesión, «Mi perfil»). Las de un solo módulo viven en su
|
|
2
|
+
// routes.js.
|
|
3
|
+
export const APP_PATHS = Object.freeze({
|
|
4
|
+
home: '/',
|
|
5
|
+
//#if auth
|
|
6
|
+
signIn: '/sign-in',
|
|
7
|
+
forgotPassword: '/forgot-password',
|
|
8
|
+
resetPassword: '/reset-password',
|
|
9
|
+
profile: '/profile',
|
|
10
|
+
//#endif
|
|
11
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// La puerta de core: lo que comparten dos o más módulos. Desde afuera se importa de aquí (@/core); adentro de core, por
|
|
2
|
+
// ruta. Core no importa módulos ni app/: si algo lo usan dos módulos, sube aquí.
|
|
3
|
+
export {APP_PATHS} from '@/core/appPaths.js';
|
|
4
|
+
export {AppLogo} from '@/core/AppLogo.jsx';
|
|
5
|
+
export {ROUTER_BASENAME, publicUrlOf} from '@/core/publicPaths.js';
|
|
6
|
+
export {apiClient} from '@/core/apiClient.js';
|
|
7
|
+
//#if auth
|
|
8
|
+
export {DEMO_USER, USES_DEMO_ACCOUNT, accountConnector} from '@/core/accountConnector.js';
|
|
9
|
+
//#endif
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Dónde vive la app: en la raíz o detrás de un proxy con prefijo (miempresa.com/ventas/, sin subdominio). El prefijo se da UNA
|
|
2
|
+
// vez, al construir, con ASSET_URL=/ventas (vite.config.js), la misma línea que lleva el .env del servidor. Vite lo deja en
|
|
3
|
+
// import.meta.env.BASE_URL ('/' o '/ventas/') y de aquí lo toman el router (basename), las imágenes de public/ y version.json.
|
|
4
|
+
//
|
|
5
|
+
// OJO: una dirección escrita a mano desde la raíz ('/favicon.svg', '/version.json') funciona en la raíz y se rompe detrás del
|
|
6
|
+
// proxy: se arma con publicUrlOf.
|
|
7
|
+
//
|
|
8
|
+
// Funciones puras, no renderizan: function (regla de la casa).
|
|
9
|
+
|
|
10
|
+
// en las pruebas de node no hay import.meta.env (es de Vite): ahí, la raíz
|
|
11
|
+
const APP_BASE_URL = import.meta.env?.BASE_URL ?? '/';
|
|
12
|
+
|
|
13
|
+
/** El prefijo como lo pide el router: '/ventas' (sin la diagonal del final) o '/'. */
|
|
14
|
+
export const ROUTER_BASENAME = APP_BASE_URL.replace(/\/$/, '') || '/';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* La dirección de un archivo de public/ con el prefijo: 'favicon.svg' → '/ventas/favicon.svg'.
|
|
18
|
+
*
|
|
19
|
+
* @param {string} path la ruta dentro de public/, sin la diagonal del inicio
|
|
20
|
+
* @returns {string}
|
|
21
|
+
*/
|
|
22
|
+
export function publicUrlOf(path) {
|
|
23
|
+
return `${APP_BASE_URL}${path}`;
|
|
24
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// La espera de una petición de verdad: sin ella, todo llega al instante y no se ven los estados de carga (el esqueleto de
|
|
2
|
+
// la lista, el botón ocupado).
|
|
3
|
+
//
|
|
4
|
+
// Respeta la cancelación (AbortSignal) igual que fetch: si la pantalla se cierra a media carga y cancela su consulta, la
|
|
5
|
+
// espera se corta con un AbortError.
|
|
6
|
+
//
|
|
7
|
+
// Funciones puras, sin React: function (regla de la casa).
|
|
8
|
+
|
|
9
|
+
/** Lo que tarda una consulta normal del servidor de mentira. */
|
|
10
|
+
export const NETWORK_DELAY_MILLISECONDS = 400;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Espera como si la respuesta viniera de la red.
|
|
14
|
+
*
|
|
15
|
+
* @param {number} milliseconds
|
|
16
|
+
* @param {AbortSignal} [signal]
|
|
17
|
+
* @returns {Promise<void>} se cumple al terminar la espera; falla con AbortError si la cancelan
|
|
18
|
+
*/
|
|
19
|
+
export function waitLikeNetwork(milliseconds, signal) {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
const abortError = () => new DOMException('La pantalla canceló la petición', 'AbortError');
|
|
22
|
+
// guard clause: ya venía cancelada
|
|
23
|
+
if (signal?.aborted) {
|
|
24
|
+
reject(abortError());
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const timer = setTimeout(() => {
|
|
29
|
+
signal?.removeEventListener('abort', cancel);
|
|
30
|
+
resolve();
|
|
31
|
+
}, milliseconds);
|
|
32
|
+
|
|
33
|
+
function cancel() {
|
|
34
|
+
clearTimeout(timer);
|
|
35
|
+
reject(abortError());
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
signal?.addEventListener('abort', cancel, {once: true});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Los mensajes del servidor de mentira en el idioma de la app, como los mandaría un backend que lee el idioma de la
|
|
2
|
+
// petición (Accept-Language). Cada servidor de mentira trae sus mensajes junto a su código ({es, en}): no hay una lista
|
|
3
|
+
// central que todos editen.
|
|
4
|
+
//
|
|
5
|
+
// Funciones puras, sin React: function (regla de la casa).
|
|
6
|
+
import {toolkitSettings} from '@stackcraftmx/calcita';
|
|
7
|
+
|
|
8
|
+
const DEFAULT_LANGUAGE = 'es';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Un mensaje en el idioma activo, con sus {{variables}} puestas.
|
|
12
|
+
*
|
|
13
|
+
* @param {Record<string, string>} texts el mismo mensaje en cada idioma: {es: 'Se agregó «{{name}}».', en: '…'}
|
|
14
|
+
* @param {Record<string, string|number>} [values]
|
|
15
|
+
* @returns {string}
|
|
16
|
+
*/
|
|
17
|
+
export function serverTextOf(texts, values = {}) {
|
|
18
|
+
const text = texts[toolkitSettings().language] ?? texts[DEFAULT_LANGUAGE];
|
|
19
|
+
return text.replace(/\{\{(\w+)\}\}/g, (placeholder, name) => String(values[name] ?? placeholder));
|
|
20
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// La entrada de la app: el tema por fuera de todo y el router adentro. Lo demás del framework se conecta en AppProviders
|
|
2
|
+
// (la ruta raíz), porque necesita estar dentro del router.
|
|
3
|
+
import {StrictMode} from 'react';
|
|
4
|
+
import {createRoot} from 'react-dom/client';
|
|
5
|
+
import {RouterProvider} from 'react-router/dom';
|
|
6
|
+
import CssBaseline from '@mui/material/CssBaseline';
|
|
7
|
+
import {ThemeProvider} from '@mui/material/styles';
|
|
8
|
+
import {buildYupLocale} from '@stackcraftmx/calcita/forms';
|
|
9
|
+
|
|
10
|
+
import {appRouter} from '@/app/appRouter.jsx';
|
|
11
|
+
import {appTheme} from '@/app/appTheme.js';
|
|
12
|
+
|
|
13
|
+
// los mensajes de yup como llaves de texto, para que salgan en el idioma activo. Una sola vez y antes de armar el primer
|
|
14
|
+
// esquema (por eso los esquemas de los formularios se arman dentro de una función y no al importar su archivo)
|
|
15
|
+
buildYupLocale();
|
|
16
|
+
|
|
17
|
+
createRoot(document.getElementById('root')).render(
|
|
18
|
+
<StrictMode>
|
|
19
|
+
<ThemeProvider theme={appTheme}>
|
|
20
|
+
<CssBaseline />
|
|
21
|
+
<RouterProvider router={appRouter} />
|
|
22
|
+
</ThemeProvider>
|
|
23
|
+
</StrictMode>,
|
|
24
|
+
);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// «¿Olvidó su contraseña?»: ForgotPasswordScreen de Calcita; lo del servidor sale del conector de la cuenta.
|
|
2
|
+
//
|
|
3
|
+
// Lo renderiza la app: arrow (regla de la casa).
|
|
4
|
+
import {ForgotPasswordScreen} from '@stackcraftmx/calcita/account';
|
|
5
|
+
|
|
6
|
+
import {APP_PATHS, AppLogo} from '@/core';
|
|
7
|
+
|
|
8
|
+
export const ForgotPasswordPage = () => (
|
|
9
|
+
<ForgotPasswordScreen logo={<AppLogo />} signInPath={APP_PATHS.signIn}
|
|
10
|
+
//#if !darkMode
|
|
11
|
+
showColorSchemeToggle={false}
|
|
12
|
+
//#endif
|
|
13
|
+
/>
|
|
14
|
+
);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Elegir una contraseña nueva desde el enlace del correo (/reset-password?token=…): ResetPasswordScreen de Calcita; lo del
|
|
2
|
+
// servidor sale del conector de la cuenta. El backend manda en el correo la liga a esta pantalla con su clave.
|
|
3
|
+
//
|
|
4
|
+
// Lo renderiza la app: arrow (regla de la casa).
|
|
5
|
+
import {ResetPasswordScreen} from '@stackcraftmx/calcita/account';
|
|
6
|
+
|
|
7
|
+
import {APP_PATHS, AppLogo} from '@/core';
|
|
8
|
+
|
|
9
|
+
export const ResetPasswordPage = () => (
|
|
10
|
+
<ResetPasswordScreen logo={<AppLogo />} signInPath={APP_PATHS.signIn} forgotPasswordPath={APP_PATHS.forgotPassword}
|
|
11
|
+
//#if !darkMode
|
|
12
|
+
showColorSchemeToggle={false}
|
|
13
|
+
//#endif
|
|
14
|
+
/>
|
|
15
|
+
);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Iniciar sesión: SignInScreen de Calcita (la contraseña y, si la cuenta tiene verificación en dos pasos, el segundo paso).
|
|
2
|
+
// Lo del servidor sale del conector de la cuenta (core/accountConnector.js).
|
|
3
|
+
//
|
|
4
|
+
// Mientras la app use la demostración, abajo sale «Entrar con la cuenta de ejemplo»: entra sin escribir nada. Con el
|
|
5
|
+
// backend de verdad (VITE_API_URL) ya no sale.
|
|
6
|
+
//
|
|
7
|
+
// Lo renderiza la app: arrow (regla de la casa).
|
|
8
|
+
import Button from '@mui/material/Button';
|
|
9
|
+
import {useToolkitTranslation} from '@stackcraftmx/calcita';
|
|
10
|
+
import {SignInScreen} from '@stackcraftmx/calcita/account';
|
|
11
|
+
|
|
12
|
+
import {APP_PATHS, AppLogo, DEMO_USER, USES_DEMO_ACCOUNT} from '@/core';
|
|
13
|
+
|
|
14
|
+
// la demostración no revisa contraseñas: cualquiera sirve para la persona de ejemplo
|
|
15
|
+
const DEMO_PASSWORD = 'demo';
|
|
16
|
+
|
|
17
|
+
/** El botón de la demostración: entra por el mismo camino del formulario (y el mismo segundo paso). */
|
|
18
|
+
const DemoSignInButton = ({signIn}) => {
|
|
19
|
+
const {t} = useToolkitTranslation('authScreens');
|
|
20
|
+
return <Button variant="outlined" fullWidth onClick={() => signIn({email: DEMO_USER.email, password: DEMO_PASSWORD})}>{t('demo')}</Button>;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const SignInPage = () => (
|
|
24
|
+
<SignInScreen logo={<AppLogo />} forgotPasswordPath={APP_PATHS.forgotPassword}
|
|
25
|
+
//#if !darkMode
|
|
26
|
+
showColorSchemeToggle={false}
|
|
27
|
+
//#endif
|
|
28
|
+
footer={USES_DEMO_ACCOUNT ? ({signIn}) => <DemoSignInButton signIn={signIn} /> : undefined} />
|
|
29
|
+
);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Los textos propios de las pantallas de entrar (namespace authScreens). Los de las pantallas (títulos, campos, segundo
|
|
2
|
+
// paso) ya vienen en Calcita; para cambiar uno, se escribe aquí con su misma llave en su namespace (auth, account…).
|
|
3
|
+
export const authTexts = {
|
|
4
|
+
es: {authScreens: {demo: 'Entrar con la cuenta de ejemplo'}},
|
|
5
|
+
en: {authScreens: {demo: 'Sign in with the sample account'}},
|
|
6
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Las pantallas de entrar: van FUERA del marco (publicRoutes), porque quien llega aquí todavía no tiene sesión.
|
|
2
|
+
import {APP_PATHS} from '@/core';
|
|
3
|
+
|
|
4
|
+
export const routes = [];
|
|
5
|
+
|
|
6
|
+
// lazy: cada pantalla se descarga hasta que alguien la abre
|
|
7
|
+
export const publicRoutes = [
|
|
8
|
+
{path: APP_PATHS.signIn, lazy: async () => ({Component: (await import('@/modules/auth/SignInPage.jsx')).SignInPage})},
|
|
9
|
+
{path: APP_PATHS.forgotPassword, lazy: async () => ({Component: (await import('@/modules/auth/ForgotPasswordPage.jsx')).ForgotPasswordPage})},
|
|
10
|
+
{path: APP_PATHS.resetPassword, lazy: async () => ({Component: (await import('@/modules/auth/ResetPasswordPage.jsx')).ResetPasswordPage})},
|
|
11
|
+
];
|