@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,885 @@
|
|
|
1
|
+
import { GLASS_MENU_RADIUS_PIXELS, GLASS_PANEL_RADIUS_PIXELS, GLASS_INSET_PIXELS, solidFallbackOf, glassDropOf, accentTextStylesOf, glassStylesOf, insideContentSelectorOf, canvasFieldStylesOf, GLASS_LENS_FLAG_SELECTOR, glassSurfaceOf, materialStylesOf, whiteLabelFillOf, fieldWellStylesOf, glassOpacityOf } from "../glassSurface.js";
|
|
2
|
+
import { mergeStyles } from "../mergeComponents.js";
|
|
3
|
+
import { textSizeOf } from "../appleTracking.js";
|
|
4
|
+
import { paletteOf } from "./paletteOf.js";
|
|
5
|
+
const MENU_ROW_INSET_PIXELS = 4;
|
|
6
|
+
const PRESSED_SCALE = 0.97;
|
|
7
|
+
const PRESSED_THUMB_SCALE = 1.25;
|
|
8
|
+
const SLIDER_THUMB = Object.freeze({ long: 30, short: 20, shadow: "0 1px 2px rgba(0, 0, 0, 0.25), 0 3px 8px rgba(0, 0, 0, 0.18)" });
|
|
9
|
+
const SLIDER_TRACK_PIXELS = 6;
|
|
10
|
+
const SLIDER_RAIL = Object.freeze({ light: "rgba(120, 120, 128, 0.24)", dark: "rgba(120, 120, 128, 0.40)" });
|
|
11
|
+
const PILL_RADIUS = 999;
|
|
12
|
+
const BUTTON_HEIGHT_PIXELS = Object.freeze({ small: 31, medium: 38, large: 42 });
|
|
13
|
+
const BUTTON_LINE_HEIGHT = 1.3;
|
|
14
|
+
const PROMINENT_SHEEN_IMAGE = "linear-gradient(180deg, rgba(255, 255, 255, 0.22), rgba(255, 255, 255, 0) 55%)";
|
|
15
|
+
const PROMINENT_SHEEN_SHADOW = "inset 0 1px 0 rgba(255, 255, 255, 0.35), inset 0 -1px 0 rgba(0, 0, 0, 0.12)";
|
|
16
|
+
const ALERT_TINT_PERCENT = Object.freeze({ light: 14, dark: 20 });
|
|
17
|
+
const DARK_FLOATING_OPACITY = 0.88;
|
|
18
|
+
const MENU_CHECKMARK_CONTENT = '"✓" / ""';
|
|
19
|
+
const SENTENCE_CASE_TITLE_PIXELS = 13;
|
|
20
|
+
const REDUCED_MOTION_QUERY = "@media (prefers-reduced-motion: reduce)";
|
|
21
|
+
const ACTIVITY_SPOKE_COUNT = 8;
|
|
22
|
+
const ACTIVITY_SPIN_DURATION = "0.8s";
|
|
23
|
+
const ACTIVITY_TAIL_MIN_OPACITY = 0.15;
|
|
24
|
+
const ACTIVITY_TAIL_MAX_OPACITY = 0.85;
|
|
25
|
+
const PROGRESS_BAR_HEIGHT_PIXELS = 6;
|
|
26
|
+
const SHEET_MAX_WIDTH_PIXELS = 640;
|
|
27
|
+
const TINTED_FILL_PERCENT = Object.freeze({ light: { rest: 12, hover: 18 }, dark: { rest: 22, hover: 30 } });
|
|
28
|
+
const WHITE_LABEL = "#FFFFFF";
|
|
29
|
+
const PROMINENT_HOVER_SHADE_PERCENT = 12;
|
|
30
|
+
const STEP_PENDING_GRAY = Object.freeze({ light: "#6E6E73", dark: "#48484A" });
|
|
31
|
+
const SWITCH_LABEL_GAP_PIXELS = 12;
|
|
32
|
+
const MONOGRAM_GRAY = Object.freeze({ light: "#6E6E73", dark: "#636366" });
|
|
33
|
+
const PROMINENT_GLASS_OPACITY = 1;
|
|
34
|
+
const FIELD_RADIUS_PIXELS = 12;
|
|
35
|
+
const FIELD_RING_PERCENT = 40;
|
|
36
|
+
const FIELD_RING_PIXELS = Object.freeze({ focused: 3, error: 2 });
|
|
37
|
+
const COMBO_BUTTON_PIXELS = 28;
|
|
38
|
+
const COMBO_BUTTON_RADIUS_PIXELS = 6;
|
|
39
|
+
const COMBO_INSET_PIXELS = 6;
|
|
40
|
+
const COMBO_GAP_PIXELS = 6;
|
|
41
|
+
const COMBO_CLEAR_PIXELS = 26;
|
|
42
|
+
const CHEVRON_PATHS = Object.freeze({ upDown: "M8 9.5l4-4 4 4M8 14.5l4 4 4-4", down: "M6 9.5l6 6 6-6" });
|
|
43
|
+
const chevronSvgOf = (path) => `url("data:image/svg+xml,${encodeURIComponent(
|
|
44
|
+
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="${path}"/></svg>`
|
|
45
|
+
)}")`;
|
|
46
|
+
const UP_DOWN_CHEVRON_MASK = chevronSvgOf(CHEVRON_PATHS.upDown);
|
|
47
|
+
const CHEVRON_DOWN_MASK = chevronSvgOf(CHEVRON_PATHS.down);
|
|
48
|
+
function chevronMaskOf(mask) {
|
|
49
|
+
return {
|
|
50
|
+
backgroundColor: "currentColor",
|
|
51
|
+
maskImage: mask,
|
|
52
|
+
WebkitMaskImage: mask,
|
|
53
|
+
maskSize: "100% 100%",
|
|
54
|
+
WebkitMaskSize: "100% 100%",
|
|
55
|
+
maskRepeat: "no-repeat",
|
|
56
|
+
WebkitMaskRepeat: "no-repeat"
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const SWITCH_SIZES = Object.freeze({
|
|
60
|
+
medium: { width: 46, height: 28, thumb: 24 },
|
|
61
|
+
small: { width: 36, height: 22, thumb: 18 }
|
|
62
|
+
});
|
|
63
|
+
const SWITCH_THUMB_MARGIN_PIXELS = 2;
|
|
64
|
+
const SWITCH_OFF_TRACK = Object.freeze({ light: "rgba(120, 120, 128, 0.20)", dark: "rgba(120, 120, 128, 0.36)" });
|
|
65
|
+
function activitySpokesMaskOf() {
|
|
66
|
+
const degreesPerSpoke = 360 / ACTIVITY_SPOKE_COUNT;
|
|
67
|
+
const tailStep = (ACTIVITY_TAIL_MAX_OPACITY - ACTIVITY_TAIL_MIN_OPACITY) / (ACTIVITY_SPOKE_COUNT - 2);
|
|
68
|
+
const spokes = Array.from({ length: ACTIVITY_SPOKE_COUNT }, (unused, index) => {
|
|
69
|
+
const opacity = index === 0 ? 1 : ACTIVITY_TAIL_MIN_OPACITY + (index - 1) * tailStep;
|
|
70
|
+
return `<rect x="11" y="2" width="2" height="6" rx="1" opacity="${opacity.toFixed(2)}" transform="rotate(${index * degreesPerSpoke} 12 12)"/>`;
|
|
71
|
+
}).join("");
|
|
72
|
+
return `url("data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">${spokes}</svg>`)}")`;
|
|
73
|
+
}
|
|
74
|
+
const ACTIVITY_SPOKES_MASK = activitySpokesMaskOf();
|
|
75
|
+
function pressedMotionOf(pressedTransform) {
|
|
76
|
+
return {
|
|
77
|
+
"&:active": { transform: pressedTransform },
|
|
78
|
+
[REDUCED_MOTION_QUERY]: { "&:active": { transform: "none" } }
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function tintedGlassOf(theme, colorName) {
|
|
82
|
+
const tint = colorName && colorName !== "default" && colorName !== "inherit" ? paletteOf(theme)[colorName]?.main : null;
|
|
83
|
+
return tint ? glassSurfaceOf(tint, { opacity: glassOpacityOf(theme) }) : glassStylesOf(theme);
|
|
84
|
+
}
|
|
85
|
+
function darkGlassOf(darkColor) {
|
|
86
|
+
return glassSurfaceOf(darkColor, { opacity: DARK_FLOATING_OPACITY, isDark: true });
|
|
87
|
+
}
|
|
88
|
+
function contentMaterialOf(theme) {
|
|
89
|
+
return { ...materialStylesOf(theme), borderColor: "transparent" };
|
|
90
|
+
}
|
|
91
|
+
function whiteLabelOf(theme, colorName) {
|
|
92
|
+
const schemeStylesOf = (scheme) => {
|
|
93
|
+
const fill = whiteLabelFillOf(theme.colorSchemes?.[scheme]?.palette?.[colorName]?.main);
|
|
94
|
+
if (!fill) {
|
|
95
|
+
return {};
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
backgroundColor: fill,
|
|
99
|
+
color: WHITE_LABEL,
|
|
100
|
+
"&:hover": { backgroundColor: `color-mix(in srgb, ${fill} ${100 - PROMINENT_HOVER_SHADE_PERCENT}%, black)` }
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
return { ...schemeStylesOf("light"), ...theme.applyStyles("dark", schemeStylesOf("dark")) };
|
|
104
|
+
}
|
|
105
|
+
function monogramOf(theme) {
|
|
106
|
+
return {
|
|
107
|
+
color: WHITE_LABEL,
|
|
108
|
+
backgroundColor: MONOGRAM_GRAY.light,
|
|
109
|
+
...theme.applyStyles("dark", { color: WHITE_LABEL, backgroundColor: MONOGRAM_GRAY.dark })
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function tintedControlOf(theme, toneColor) {
|
|
113
|
+
const fillOf = (percent) => `color-mix(in srgb, ${toneColor} ${percent}%, transparent)`;
|
|
114
|
+
const plain = { backgroundImage: "none", backdropFilter: "none", WebkitBackdropFilter: "none", boxShadow: "none", borderColor: "transparent" };
|
|
115
|
+
return {
|
|
116
|
+
...plain,
|
|
117
|
+
color: paletteOf(theme).text.primary,
|
|
118
|
+
backgroundColor: fillOf(TINTED_FILL_PERCENT.light.rest),
|
|
119
|
+
"&:hover": { ...plain, backgroundColor: fillOf(TINTED_FILL_PERCENT.light.hover) },
|
|
120
|
+
...theme.applyStyles("dark", {
|
|
121
|
+
backgroundColor: fillOf(TINTED_FILL_PERCENT.dark.rest),
|
|
122
|
+
"&:hover": { backgroundColor: fillOf(TINTED_FILL_PERCENT.dark.hover) }
|
|
123
|
+
})
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function fieldFillOf(theme) {
|
|
127
|
+
return fieldWellStylesOf(theme);
|
|
128
|
+
}
|
|
129
|
+
function fieldRingsOf(theme) {
|
|
130
|
+
const palette = paletteOf(theme);
|
|
131
|
+
const ringOf = (color, width) => ({ outline: `${width}px solid color-mix(in srgb, ${color} ${FIELD_RING_PERCENT}%, transparent)`, outlineOffset: 0 });
|
|
132
|
+
return {
|
|
133
|
+
"&.Mui-focused": ringOf(palette.primary.main, FIELD_RING_PIXELS.focused),
|
|
134
|
+
"&.Mui-error": ringOf(palette.error.main, FIELD_RING_PIXELS.error),
|
|
135
|
+
"&.Mui-error.Mui-focused": ringOf(palette.error.main, FIELD_RING_PIXELS.focused)
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function floatingDrawerOf(anchor) {
|
|
139
|
+
const inset = `${GLASS_INSET_PIXELS}px`;
|
|
140
|
+
const fullLength = `calc(100% - ${GLASS_INSET_PIXELS * 2}px)`;
|
|
141
|
+
const centeredSheet = { maxWidth: SHEET_MAX_WIDTH_PIXELS, marginInline: "auto" };
|
|
142
|
+
const placementByAnchor = {
|
|
143
|
+
left: { top: inset, left: inset, height: fullLength },
|
|
144
|
+
right: { top: inset, right: inset, height: fullLength },
|
|
145
|
+
top: { top: inset, left: inset, right: inset, maxHeight: fullLength, ...centeredSheet },
|
|
146
|
+
bottom: { bottom: inset, left: inset, right: inset, maxHeight: fullLength, ...centeredSheet }
|
|
147
|
+
};
|
|
148
|
+
return { ...placementByAnchor[anchor], borderRadius: GLASS_PANEL_RADIUS_PIXELS };
|
|
149
|
+
}
|
|
150
|
+
function glassComponents({ surfaces = false } = {}) {
|
|
151
|
+
return {
|
|
152
|
+
...surfaces && {
|
|
153
|
+
MuiPaper: {
|
|
154
|
+
styleOverrides: {
|
|
155
|
+
root: ({ ownerState, theme }) => ownerState.variant === "outlined" ? contentMaterialOf(theme) : {}
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
MuiCard: {
|
|
159
|
+
styleOverrides: {
|
|
160
|
+
root: ({ theme }) => contentMaterialOf(theme)
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
// el acordeón (HIG «Disclosure controls»): cada sección es su propia tarjeta de material, separada de la
|
|
164
|
+
// siguiente, en vez de la línea gris de MUI entre ellas; todas con la misma esquina (MUI redondeaba solo la
|
|
165
|
+
// primera y la última)
|
|
166
|
+
MuiAccordion: {
|
|
167
|
+
styleOverrides: {
|
|
168
|
+
root: ({ theme }) => ({
|
|
169
|
+
...contentMaterialOf(theme),
|
|
170
|
+
"&, &:first-of-type, &:last-of-type": { borderRadius: GLASS_MENU_RADIUS_PIXELS },
|
|
171
|
+
"&::before": { display: "none" },
|
|
172
|
+
"&, &.Mui-expanded": { margin: `0 0 ${GLASS_INSET_PIXELS}px` },
|
|
173
|
+
"&:last-of-type, &.Mui-expanded:last-of-type": { marginBottom: 0 }
|
|
174
|
+
})
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
// los avisos dentro del contenido (Alert): el de omisión, material teñido del color de su tipo (verde, rojo,
|
|
178
|
+
// ámbar, azul): HIG «Color» permite color en el vidrio para «status indicators»; el de borde, material sin tinte
|
|
179
|
+
// con su borde de color; el relleno, de su color con el brillo del botón principal
|
|
180
|
+
MuiAlert: {
|
|
181
|
+
styleOverrides: {
|
|
182
|
+
root: ({ ownerState, theme }) => {
|
|
183
|
+
if (ownerState.variant === "filled") {
|
|
184
|
+
return { backgroundImage: PROMINENT_SHEEN_IMAGE, boxShadow: PROMINENT_SHEEN_SHADOW };
|
|
185
|
+
}
|
|
186
|
+
if (ownerState.variant === "outlined") {
|
|
187
|
+
return materialStylesOf(theme);
|
|
188
|
+
}
|
|
189
|
+
const palette = paletteOf(theme);
|
|
190
|
+
const severityColor = (palette[ownerState.colorSeverity] ?? palette.info).main;
|
|
191
|
+
const tintOf = (percent) => `color-mix(in srgb, ${severityColor} ${percent}%, ${palette.background.paper})`;
|
|
192
|
+
return materialStylesOf(theme, { color: tintOf(ALERT_TINT_PERCENT.light), darkColor: tintOf(ALERT_TINT_PERCENT.dark) });
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
// los títulos chicos en mayúsculas (variant="overline": el de SectionCard, MetricCard, los campos, los ajustes): Apple
|
|
198
|
+
// dejó de poner los encabezados en mayúsculas («section headers no longer render entirely in capital letters»,
|
|
199
|
+
// Adopting Liquid Glass) y los títulos de sus cajas van «sentence-style» (HIG «Boxes»)
|
|
200
|
+
MuiTypography: {
|
|
201
|
+
styleOverrides: {
|
|
202
|
+
overline: { textTransform: "none", fontWeight: 600, ...textSizeOf(SENTENCE_CASE_TITLE_PIXELS) }
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
// la barra de arriba (la del color principal, fija o no): vidrio NEUTRO en claro y en oscuro. HIG «Toolbars»: «Reduce
|
|
206
|
+
// the use of toolbar backgrounds and tinted controls»; un vidrio naranja al 80 % se veía sólido. El brillo del borde
|
|
207
|
+
// ya la separa del contenido: la línea de abajo sobra
|
|
208
|
+
MuiAppBar: {
|
|
209
|
+
styleOverrides: {
|
|
210
|
+
root: ({ ownerState, theme }) => {
|
|
211
|
+
const isPrimary = (ownerState.color ?? "primary") === "primary";
|
|
212
|
+
if (!isPrimary) {
|
|
213
|
+
return {};
|
|
214
|
+
}
|
|
215
|
+
return { ...glassStylesOf(theme), color: paletteOf(theme).text.primary, borderBottom: "none" };
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
MuiPopover: {
|
|
220
|
+
styleOverrides: {
|
|
221
|
+
paper: ({ theme }) => ({ ...glassStylesOf(theme), borderRadius: GLASS_MENU_RADIUS_PIXELS })
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
// los renglones de un menú: concéntricos con el menú, y el elegido (la opción actual de una lista) con su palomita
|
|
225
|
+
// y no con un fondo de color (HIG «Menus»: «Consider using a checkmark to show that an attribute is currently in
|
|
226
|
+
// effect»)
|
|
227
|
+
MuiMenuItem: {
|
|
228
|
+
styleOverrides: {
|
|
229
|
+
root: ({ theme }) => ({
|
|
230
|
+
marginInline: MENU_ROW_INSET_PIXELS,
|
|
231
|
+
borderRadius: GLASS_MENU_RADIUS_PIXELS - MENU_ROW_INSET_PIXELS,
|
|
232
|
+
"&.Mui-selected": { backgroundColor: "transparent" },
|
|
233
|
+
"&.Mui-selected:hover": { backgroundColor: paletteOf(theme).action.hover },
|
|
234
|
+
// con el teclado encima, el renglón elegido sí se marca: si no, no se ve dónde está el foco
|
|
235
|
+
"&.Mui-selected.Mui-focusVisible, &.Mui-selected:focus-visible": { backgroundColor: paletteOf(theme).action.selected },
|
|
236
|
+
"&.Mui-selected::after": {
|
|
237
|
+
content: MENU_CHECKMARK_CONTENT,
|
|
238
|
+
marginInlineStart: "auto",
|
|
239
|
+
paddingInlineStart: theme.spacing(2),
|
|
240
|
+
...accentTextStylesOf(theme),
|
|
241
|
+
fontWeight: 600
|
|
242
|
+
}
|
|
243
|
+
})
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
// el «combo box» de Apple (HIG «Combo boxes»): el campo con un botoncito cuadrado del color principal y su ⌄ blanco
|
|
247
|
+
// al final; abierto, el ⌄ no gira (en Apple se queda igual)
|
|
248
|
+
MuiAutocomplete: {
|
|
249
|
+
styleOverrides: {
|
|
250
|
+
paper: ({ theme }) => ({ ...glassStylesOf(theme), borderRadius: GLASS_MENU_RADIUS_PIXELS }),
|
|
251
|
+
option: { marginInline: MENU_ROW_INSET_PIXELS, borderRadius: GLASS_MENU_RADIUS_PIXELS - MENU_ROW_INSET_PIXELS },
|
|
252
|
+
popupIndicator: ({ theme }) => ({
|
|
253
|
+
width: COMBO_BUTTON_PIXELS,
|
|
254
|
+
height: COMBO_BUTTON_PIXELS,
|
|
255
|
+
padding: 0,
|
|
256
|
+
borderRadius: COMBO_BUTTON_RADIUS_PIXELS,
|
|
257
|
+
backgroundImage: PROMINENT_SHEEN_IMAGE,
|
|
258
|
+
...whiteLabelOf(theme, "primary"),
|
|
259
|
+
"& svg": { display: "none" },
|
|
260
|
+
"&::after": { content: '""', width: 14, height: 14, ...chevronMaskOf(CHEVRON_DOWN_MASK) }
|
|
261
|
+
}),
|
|
262
|
+
popupIndicatorOpen: { transform: "none" },
|
|
263
|
+
// el botón y la ⓧ con aire: el botón a 6 px de la orilla, con esquina concéntrica con la del campo (12 - 6), y la
|
|
264
|
+
// ⓧ separada de él (iban pegados entre sí y a la orilla: «pegadísimo», lo reportaron)
|
|
265
|
+
// OJO: MUI ya lo centra (top 50% + translate); restarle la mitad del botón lo subía 14 px fuera del campo
|
|
266
|
+
endAdornment: { right: COMBO_INSET_PIXELS, display: "flex", alignItems: "center", gap: COMBO_GAP_PIXELS },
|
|
267
|
+
clearIndicator: ({ theme }) => ({ padding: 4, marginRight: 0, color: paletteOf(theme).text.secondary, "& .MuiSvgIcon-root": { fontSize: "1.125rem" } }),
|
|
268
|
+
inputRoot: {
|
|
269
|
+
".MuiAutocomplete-hasPopupIcon &": { paddingRight: COMBO_INSET_PIXELS + COMBO_BUTTON_PIXELS + COMBO_GAP_PIXELS * 2 },
|
|
270
|
+
".MuiAutocomplete-hasPopupIcon.MuiAutocomplete-hasClearIcon &": { paddingRight: COMBO_INSET_PIXELS + COMBO_BUTTON_PIXELS + COMBO_GAP_PIXELS * 3 + COMBO_CLEAR_PIXELS }
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
// las listas para elegir (Select): el ⌃⌄ de los botones de Apple que abren una lista («pop-up buttons») en lugar del
|
|
275
|
+
// triángulo de MUI; tampoco gira al abrir
|
|
276
|
+
MuiSelect: {
|
|
277
|
+
styleOverrides: {
|
|
278
|
+
icon: {
|
|
279
|
+
width: 16,
|
|
280
|
+
height: 16,
|
|
281
|
+
top: "calc(50% - 8px)",
|
|
282
|
+
"& path": { display: "none" },
|
|
283
|
+
...chevronMaskOf(UP_DOWN_CHEVRON_MASK)
|
|
284
|
+
},
|
|
285
|
+
iconOpen: { transform: "none" }
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
// el calendario de MUI X (/date-pickers) en escritorio; en el teléfono sale en un diálogo (MuiDialog)
|
|
289
|
+
MuiPickerPopper: {
|
|
290
|
+
styleOverrides: {
|
|
291
|
+
paper: ({ theme }) => ({ ...glassStylesOf(theme), borderRadius: GLASS_MENU_RADIUS_PIXELS })
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
// la tabla (MUI X Data Grid): el menú de cada columna y los paneles de filtros y columnas
|
|
295
|
+
MuiDataGrid: {
|
|
296
|
+
styleOverrides: {
|
|
297
|
+
// con el contenido de material: la tabla va dentro de su tarjeta (ServerTable la pone en un Paper outlined)
|
|
298
|
+
// y su fondo propio, sólido, tapaba el material. La columna pegada a la izquierda sigue sólida (ServerTable le
|
|
299
|
+
// pone el papel) para que no se vea lo que pasa por debajo al deslizar de lado.
|
|
300
|
+
// OJO: la tabla pone sus colores con una etiqueta <style> propia (clase MuiDataGridVariables-…) que va después
|
|
301
|
+
// en la página; con la misma fuerza ganaba ella y la tabla seguía blanca. Con dos clases (&.MuiDataGrid-root)
|
|
302
|
+
// gana esta.
|
|
303
|
+
...surfaces && {
|
|
304
|
+
root: { "&.MuiDataGrid-root": { "--DataGrid-t-color-background-base": "transparent", "--DataGrid-t-header-background-base": "transparent" } }
|
|
305
|
+
},
|
|
306
|
+
panelContent: ({ theme }) => ({ ...glassStylesOf(theme), borderRadius: GLASS_MENU_RADIUS_PIXELS }),
|
|
307
|
+
menu: ({ theme }) => ({ "& .MuiPaper-root": { ...glassStylesOf(theme), borderRadius: GLASS_MENU_RADIUS_PIXELS } })
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
// los cajones: de vidrio; los que salen encima del contenido flotan separados de la orilla (Adopting Liquid Glass:
|
|
311
|
+
// «half sheets are inset from the edge of the display to allow content to peek through from beneath them»)
|
|
312
|
+
MuiDrawer: {
|
|
313
|
+
styleOverrides: {
|
|
314
|
+
paper: ({ ownerState, theme }) => ({
|
|
315
|
+
...glassStylesOf(theme),
|
|
316
|
+
...ownerState.variant === "temporary" && floatingDrawerOf(ownerState.anchor ?? "left")
|
|
317
|
+
})
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
MuiDialog: {
|
|
321
|
+
styleOverrides: {
|
|
322
|
+
paper: ({ ownerState, theme }) => ownerState.fullScreen ? {} : { ...glassStylesOf(theme), borderRadius: GLASS_PANEL_RADIUS_PIXELS },
|
|
323
|
+
// la hoja de lectura (ContentDialog) deja la barra de arriba a la vista para no perder dónde se está: sin
|
|
324
|
+
// desenfoque detrás, o la barra se volvía ilegible
|
|
325
|
+
backdrop: ({ ownerState }) => ownerState.fullScreen ? { "&:not(.MuiBackdrop-invisible)": { backdropFilter: "none", WebkitBackdropFilter: "none" } } : {}
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
// detrás de un diálogo: menos oscuro y desenfocado (el vidrio del diálogo se lee mejor sobre algo ya borroso)
|
|
329
|
+
MuiBackdrop: {
|
|
330
|
+
styleOverrides: {
|
|
331
|
+
root: {
|
|
332
|
+
"&:not(.MuiBackdrop-invisible)": {
|
|
333
|
+
backgroundColor: "rgba(0, 0, 0, 0.4)",
|
|
334
|
+
backdropFilter: "blur(6px)",
|
|
335
|
+
WebkitBackdropFilter: "blur(6px)",
|
|
336
|
+
...solidFallbackOf({ backgroundColor: "rgba(0, 0, 0, 0.6)", backdropFilter: "none", WebkitBackdropFilter: "none" })
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
MuiTooltip: {
|
|
342
|
+
styleOverrides: {
|
|
343
|
+
tooltip: ({ theme }) => ({ ...darkGlassOf(paletteOf(theme).Tooltip?.bg ?? paletteOf(theme).grey[700]), borderRadius: 8 }),
|
|
344
|
+
arrow: ({ theme }) => ({ color: darkGlassOf(paletteOf(theme).Tooltip?.bg ?? paletteOf(theme).grey[700]).backgroundColor })
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
MuiSnackbarContent: {
|
|
348
|
+
styleOverrides: {
|
|
349
|
+
root: ({ theme }) => ({ ...darkGlassOf(paletteOf(theme).SnackbarContent?.bg ?? paletteOf(theme).grey[900]), borderRadius: GLASS_MENU_RADIUS_PIXELS })
|
|
350
|
+
}
|
|
351
|
+
},
|
|
352
|
+
MuiFab: {
|
|
353
|
+
styleOverrides: {
|
|
354
|
+
root: ({ ownerState, theme }) => {
|
|
355
|
+
const surface = tintedGlassOf(theme, ownerState.color);
|
|
356
|
+
const fillOf = (scheme) => whiteLabelFillOf(theme.colorSchemes?.[scheme]?.palette?.[ownerState.color]?.main);
|
|
357
|
+
const lightFill = fillOf("light");
|
|
358
|
+
const darkFill = fillOf("dark");
|
|
359
|
+
return {
|
|
360
|
+
...surface,
|
|
361
|
+
// de color: su vidrio lleva el color oscurecido lo justo para la letra blanca (whiteLabelFillOf)
|
|
362
|
+
...lightFill && { ...glassSurfaceOf(lightFill, { opacity: PROMINENT_GLASS_OPACITY }), color: WHITE_LABEL },
|
|
363
|
+
...darkFill && theme.applyStyles("dark", {
|
|
364
|
+
...glassSurfaceOf(darkFill, { opacity: PROMINENT_GLASS_OPACITY, isDark: true }),
|
|
365
|
+
color: WHITE_LABEL
|
|
366
|
+
}),
|
|
367
|
+
transition: theme.transitions.create(["background-color", "box-shadow", "transform"], { duration: theme.transitions.duration.short }),
|
|
368
|
+
// MUI cambia el fondo y la sombra al pasar y al apretar: el vidrio se queda, y al apretar se hunde
|
|
369
|
+
"&:hover": { backgroundColor: surface.backgroundColor },
|
|
370
|
+
"&:active": { boxShadow: surface.boxShadow, transform: `scale(${PRESSED_SCALE})` },
|
|
371
|
+
[REDUCED_MOTION_QUERY]: { "&:active": { transform: "none" } }
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
MuiBottomNavigation: {
|
|
377
|
+
styleOverrides: {
|
|
378
|
+
root: ({ theme }) => ({ ...glassStylesOf(theme), borderRadius: PILL_RADIUS, padding: MENU_ROW_INSET_PIXELS, gap: MENU_ROW_INSET_PIXELS, height: 64 })
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
MuiBottomNavigationAction: {
|
|
382
|
+
styleOverrides: {
|
|
383
|
+
root: ({ theme }) => ({
|
|
384
|
+
borderRadius: PILL_RADIUS,
|
|
385
|
+
minWidth: 0,
|
|
386
|
+
// con mergeStyles: las dos partes traen su modo oscuro y la suma simple borraba la de la gota
|
|
387
|
+
"&.Mui-selected": mergeStyles(glassDropOf(theme), accentTextStylesOf(theme))
|
|
388
|
+
})
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
// los botones (HIG «Buttons»): cápsulas («prefer circular or capsule-shape buttons»), que se hunden al apretarlas
|
|
392
|
+
// («Always include a press state»)
|
|
393
|
+
MuiButton: {
|
|
394
|
+
styleOverrides: {
|
|
395
|
+
// con texto largo la etiqueta se parte en dos renglones: con el interlineado de MUI (1.75) y la esquina de cápsula
|
|
396
|
+
// salía un óvalo grande con los renglones separados (lo reportaron). Interlineado 1.3, el MISMO alto de un renglón
|
|
397
|
+
// que antes (minHeight) y la esquina de la mitad de ese alto: con un renglón es cápsula; con dos, rectángulo
|
|
398
|
+
// redondeado, como los botones de Apple que no caben
|
|
399
|
+
root: ({ ownerState, theme }) => ({
|
|
400
|
+
lineHeight: BUTTON_LINE_HEIGHT,
|
|
401
|
+
minHeight: BUTTON_HEIGHT_PIXELS[ownerState.size ?? "medium"] ?? BUTTON_HEIGHT_PIXELS.medium,
|
|
402
|
+
borderRadius: `${(BUTTON_HEIGHT_PIXELS[ownerState.size ?? "medium"] ?? BUTTON_HEIGHT_PIXELS.medium) / 2}px`,
|
|
403
|
+
transition: theme.transitions.create(["background-color", "box-shadow", "border-color", "color", "transform"], {
|
|
404
|
+
duration: theme.transitions.duration.short
|
|
405
|
+
}),
|
|
406
|
+
...pressedMotionOf(`scale(${PRESSED_SCALE})`)
|
|
407
|
+
}),
|
|
408
|
+
// el principal (contained) es el «prominente» de Apple: el color va en el fondo («To emphasize primary
|
|
409
|
+
// actions, apply color to the background rather than to symbols or text», HIG «Color»), con el brillo del
|
|
410
|
+
// vidrio para que se lea sobre cualquier cosa
|
|
411
|
+
contained: ({ ownerState, theme }) => ({
|
|
412
|
+
backgroundImage: PROMINENT_SHEEN_IMAGE,
|
|
413
|
+
boxShadow: PROMINENT_SHEEN_SHADOW,
|
|
414
|
+
"&:hover, &:active, &.Mui-focusVisible": { boxShadow: PROMINENT_SHEEN_SHADOW },
|
|
415
|
+
...whiteLabelOf(theme, ownerState.color ?? "primary"),
|
|
416
|
+
"&.Mui-disabled": { backgroundImage: "none", boxShadow: "none" }
|
|
417
|
+
}),
|
|
418
|
+
// el de solo texto («borderless» de Apple): la letra del color del tema, pero legible (accentTextStylesOf); el
|
|
419
|
+
// naranja tal cual sobre una tarjeta clara daba 2.78 : 1
|
|
420
|
+
text: ({ ownerState, theme }) => paletteOf(theme)[ownerState.color] ? accentTextStylesOf(theme, ownerState.color) : {},
|
|
421
|
+
// el de borde es el «botón de vidrio» de Apple: una cápsula de vidrio sin borde de color (el filo del vidrio
|
|
422
|
+
// ya la dibuja; con los dos se veía un doble aro). Con el color de omisión (primary) la letra va de un solo
|
|
423
|
+
// color: «Prefer the default monochromatic appearance of button labels» y no repetir en la letra el color
|
|
424
|
+
// del fondo (HIG «Buttons»); con otro color a propósito (error, success…) la letra lo conserva. Al pasar el
|
|
425
|
+
// cursor, un toque de color encima del vidrio, sin perder el vidrio
|
|
426
|
+
// DENTRO de una tarjeta, un diálogo o un menú (cualquier Paper) ya no es vidrio: ahí no hay nada detrás que el
|
|
427
|
+
// vidrio deje ver y se leía como «cápsula blanca con sombra» (lo dijo el autor). Apple: «Don't use Liquid Glass
|
|
428
|
+
// in the content layer»; en el contenido usa el botón «bordered», un relleno tenue de su color. Los que van
|
|
429
|
+
// dentro de un grupo los pinta el grupo (por eso el :not)
|
|
430
|
+
outlined: ({ ownerState, theme }) => {
|
|
431
|
+
const palette = paletteOf(theme);
|
|
432
|
+
const isDefaultColor = (ownerState.color ?? "primary") === "primary";
|
|
433
|
+
const toneColor = palette[ownerState.color]?.main ?? palette.text.primary;
|
|
434
|
+
const label = isDefaultColor || !palette[ownerState.color] ? { color: palette.text.primary } : accentTextStylesOf(theme, ownerState.color);
|
|
435
|
+
const glass = glassStylesOf(theme, { isControl: true });
|
|
436
|
+
const hoverTint = `color-mix(in srgb, ${isDefaultColor ? palette.text.primary : toneColor} 10%, transparent)`;
|
|
437
|
+
return {
|
|
438
|
+
// con mergeStyles: el vidrio y la letra traen su modo oscuro; la suma simple borraba el del vidrio
|
|
439
|
+
...mergeStyles(glass, label),
|
|
440
|
+
borderColor: "transparent",
|
|
441
|
+
"&:hover": { ...glass, borderColor: "transparent", backgroundImage: `linear-gradient(${hoverTint}, ${hoverTint})` },
|
|
442
|
+
"&.Mui-disabled": { borderColor: "transparent" },
|
|
443
|
+
[insideContentSelectorOf(":not(.MuiButtonGroup-grouped)")]: tintedControlOf(theme, toneColor)
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
// el grupo de botones con borde: UNA cápsula de vidrio con los botones adentro, separados por una línea fina, como
|
|
449
|
+
// los grupos de una barra de Apple que comparten fondo (HIG «Toolbars»: agrupar por función); adentro los botones
|
|
450
|
+
// no llevan vidrio propio, porque vidrio sobre vidrio no se lee
|
|
451
|
+
MuiButtonGroup: {
|
|
452
|
+
styleOverrides: {
|
|
453
|
+
root: ({ ownerState, theme }) => {
|
|
454
|
+
const borderRadius = ownerState.orientation === "vertical" ? GLASS_MENU_RADIUS_PIXELS : PILL_RADIUS;
|
|
455
|
+
if (ownerState.variant !== "outlined") {
|
|
456
|
+
return { borderRadius };
|
|
457
|
+
}
|
|
458
|
+
const plain = { backgroundImage: "none", backdropFilter: "none", WebkitBackdropFilter: "none", boxShadow: "none" };
|
|
459
|
+
const groupFillOf = (percent) => `color-mix(in srgb, ${paletteOf(theme).text.primary} ${percent}%, transparent)`;
|
|
460
|
+
return {
|
|
461
|
+
...glassStylesOf(theme, { isControl: true }),
|
|
462
|
+
borderRadius,
|
|
463
|
+
overflow: "hidden",
|
|
464
|
+
[insideContentSelectorOf()]: {
|
|
465
|
+
...plain,
|
|
466
|
+
backgroundColor: groupFillOf(TINTED_FILL_PERCENT.light.rest),
|
|
467
|
+
...theme.applyStyles("dark", { backgroundColor: groupFillOf(TINTED_FILL_PERCENT.dark.rest) })
|
|
468
|
+
}
|
|
469
|
+
};
|
|
470
|
+
},
|
|
471
|
+
grouped: ({ ownerState, theme }) => {
|
|
472
|
+
if (ownerState.variant !== "outlined") {
|
|
473
|
+
return {};
|
|
474
|
+
}
|
|
475
|
+
const plain = { backgroundColor: "transparent", backgroundImage: "none", backdropFilter: "none", WebkitBackdropFilter: "none", boxShadow: "none" };
|
|
476
|
+
const separator = `1px solid ${paletteOf(theme).divider}`;
|
|
477
|
+
return {
|
|
478
|
+
...plain,
|
|
479
|
+
border: 0,
|
|
480
|
+
"&:hover": { ...plain, backgroundColor: paletteOf(theme).action.hover },
|
|
481
|
+
// OJO: el lente del botón (con la marca de <body>) le ganaba a esta regla y el botón volvía a ser
|
|
482
|
+
// vidrio dentro de su grupo; con la marca también aquí, gana el grupo (medido en Chrome)
|
|
483
|
+
[`${GLASS_LENS_FLAG_SELECTOR} &`]: plain,
|
|
484
|
+
...ownerState.orientation === "vertical" ? { "&:not(:last-of-type)": { borderBottom: separator } } : { "&:not(:last-of-type)": { borderRight: separator } }
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
// las ligas: el color del tema, legible (accentTextStylesOf); la de color="inherit" se respeta
|
|
490
|
+
MuiLink: {
|
|
491
|
+
styleOverrides: {
|
|
492
|
+
root: ({ ownerState, theme }) => paletteOf(theme)[ownerState.color] ? accentTextStylesOf(theme, ownerState.color) : {}
|
|
493
|
+
}
|
|
494
|
+
},
|
|
495
|
+
// las etiquetas que se pican (filtros rápidos, rango de fechas) son controles, y Apple los pinta como sus botones de
|
|
496
|
+
// vidrio: la no elegida es una cápsula de vidrio sin borde de color (como el botón con borde) y la elegida va de su
|
|
497
|
+
// color con el brillo del botón principal (el «prominente»). Las que solo informan (el estado en un renglón de la
|
|
498
|
+
// tabla) son contenido y se quedan como están: «Don't use Liquid Glass in the content layer» (HIG «Materials»).
|
|
499
|
+
// OJO: MUI marca el cursor encima y el foco con dos clases (&.MuiChip-clickable:hover); con una sola, ganaba su gris.
|
|
500
|
+
// el avatar con iniciales es el «monograma» de Apple (el de Contactos): iniciales BLANCAS sobre un gris que las deja leer.
|
|
501
|
+
// El de MUI ponía letras oscuras sobre gris en claro y claras sobre gris en oscuro, y casi no se leían (lo reportaron).
|
|
502
|
+
// Un avatar con foto no cambia (la foto tapa el fondo)
|
|
503
|
+
MuiAvatar: {
|
|
504
|
+
styleOverrides: {
|
|
505
|
+
colorDefault: ({ theme }) => monogramOf(theme)
|
|
506
|
+
}
|
|
507
|
+
},
|
|
508
|
+
MuiChip: {
|
|
509
|
+
styleOverrides: {
|
|
510
|
+
// el avatar dentro de una etiqueta («Con avatar»): el mismo monograma; MUI le ponía su gris de letra
|
|
511
|
+
avatar: ({ theme }) => monogramOf(theme),
|
|
512
|
+
root: ({ ownerState, theme }) => {
|
|
513
|
+
const isFilledWithColor = ownerState.variant !== "outlined" && ownerState.color && ownerState.color !== "default";
|
|
514
|
+
const darkLabel = isFilledWithColor ? whiteLabelOf(theme, ownerState.color) : {};
|
|
515
|
+
const hasColor = ownerState.color && ownerState.color !== "default" && paletteOf(theme)[ownerState.color];
|
|
516
|
+
const outlinedText = ownerState.variant === "outlined" && hasColor ? accentTextStylesOf(theme, ownerState.color) : {};
|
|
517
|
+
if (!ownerState.clickable) {
|
|
518
|
+
return { ...darkLabel, ...outlinedText };
|
|
519
|
+
}
|
|
520
|
+
if (ownerState.variant === "outlined") {
|
|
521
|
+
const glass = glassStylesOf(theme, { isControl: true });
|
|
522
|
+
const hoverTint = `color-mix(in srgb, ${paletteOf(theme).text.primary} 8%, transparent)`;
|
|
523
|
+
const hoverGlass = { ...glass, borderColor: "transparent", backgroundImage: `linear-gradient(${hoverTint}, ${hoverTint})` };
|
|
524
|
+
return {
|
|
525
|
+
...glass,
|
|
526
|
+
borderColor: "transparent",
|
|
527
|
+
"&.MuiChip-clickable:hover, &.Mui-focusVisible": hoverGlass,
|
|
528
|
+
// dentro de una tarjeta, un relleno tenue y no vidrio (como el botón con borde)
|
|
529
|
+
[insideContentSelectorOf()]: tintedControlOf(theme, paletteOf(theme).text.primary)
|
|
530
|
+
};
|
|
531
|
+
}
|
|
532
|
+
return { backgroundImage: PROMINENT_SHEEN_IMAGE, boxShadow: PROMINENT_SHEEN_SHADOW, ...darkLabel };
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
},
|
|
536
|
+
// el numerito (Badge) de color: en oscuro, letra blanca sobre su color oscurecido
|
|
537
|
+
MuiBadge: {
|
|
538
|
+
styleOverrides: {
|
|
539
|
+
badge: ({ ownerState, theme }) => ownerState.color && ownerState.color !== "default" ? whiteLabelOf(theme, ownerState.color) : {}
|
|
540
|
+
}
|
|
541
|
+
},
|
|
542
|
+
// los campos (HIG «Text fields» y las imágenes de la propia guía): la etiqueta va ARRIBA y fuera del campo, siempre a
|
|
543
|
+
// la vista («include a separate label describing the field», porque la pista desaparece al escribir), en vez de la
|
|
544
|
+
// que flota sobre el borde en MUI. Los de línea (variant="standard") se quedan como MUI los pinta
|
|
545
|
+
MuiInputLabel: {
|
|
546
|
+
defaultProps: { shrink: true },
|
|
547
|
+
styleOverrides: {
|
|
548
|
+
root: ({ ownerState, theme }) => ownerState.variant === "standard" ? {} : {
|
|
549
|
+
position: "relative",
|
|
550
|
+
transform: "none",
|
|
551
|
+
maxWidth: "100%",
|
|
552
|
+
marginBottom: theme.spacing(0.75),
|
|
553
|
+
...textSizeOf(SENTENCE_CASE_TITLE_PIXELS),
|
|
554
|
+
fontWeight: 600,
|
|
555
|
+
lineHeight: 1.4,
|
|
556
|
+
whiteSpace: "normal",
|
|
557
|
+
pointerEvents: "auto",
|
|
558
|
+
color: paletteOf(theme).text.secondary
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
},
|
|
562
|
+
// el campo con borde de MUI (el de omisión, el de los Select, los Autocomplete y los campos del framework): sobre el
|
|
563
|
+
// lienzo es una lámina de vidrio con esquinas de 12 px (la imagen de «Text fields» de Apple) y el buscador, una cápsula
|
|
564
|
+
// (el de la barra de iPad); dentro de una tarjeta, el relleno gris de los campos de Apple (fieldFillOf). Sin el borde de
|
|
565
|
+
// MUI en ningún caso: lo marca el aro (fieldRingsOf). Dentro de una FormSection el campo es un renglón (FormSection.jsx)
|
|
566
|
+
MuiOutlinedInput: {
|
|
567
|
+
defaultProps: { notched: false },
|
|
568
|
+
styleOverrides: {
|
|
569
|
+
root: ({ ownerState, theme }) => ({
|
|
570
|
+
...canvasFieldStylesOf(theme),
|
|
571
|
+
borderRadius: ownerState.type === "search" ? PILL_RADIUS : FIELD_RADIUS_PIXELS,
|
|
572
|
+
"& .MuiOutlinedInput-notchedOutline": { borderColor: "transparent" },
|
|
573
|
+
"&:hover .MuiOutlinedInput-notchedOutline, &.Mui-focused .MuiOutlinedInput-notchedOutline, &.Mui-error .MuiOutlinedInput-notchedOutline": {
|
|
574
|
+
borderColor: "transparent"
|
|
575
|
+
},
|
|
576
|
+
...fieldRingsOf(theme),
|
|
577
|
+
[insideContentSelectorOf()]: fieldFillOf(theme)
|
|
578
|
+
})
|
|
579
|
+
}
|
|
580
|
+
},
|
|
581
|
+
// el campo relleno de MUI: el mismo relleno de Apple, sin la raya de abajo, con el texto centrado (MUI le dejaba
|
|
582
|
+
// arriba el lugar de la etiqueta, que ahora va afuera)
|
|
583
|
+
MuiFilledInput: {
|
|
584
|
+
styleOverrides: {
|
|
585
|
+
root: ({ ownerState, theme }) => ({
|
|
586
|
+
...fieldFillOf(theme),
|
|
587
|
+
"&::before, &::after": { display: "none" },
|
|
588
|
+
...ownerState.multiline && { padding: "16.5px 14px" },
|
|
589
|
+
...fieldRingsOf(theme)
|
|
590
|
+
}),
|
|
591
|
+
input: ({ ownerState }) => ownerState.multiline ? {} : {
|
|
592
|
+
paddingTop: ownerState.size === "small" ? 8.5 : 16.5,
|
|
593
|
+
paddingBottom: ownerState.size === "small" ? 8.5 : 16.5,
|
|
594
|
+
paddingInline: 14
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
},
|
|
598
|
+
// el campo de fecha de MUI X (/date-pickers) tiene su propia pieza: lo mismo que el campo con borde
|
|
599
|
+
MuiPickersOutlinedInput: {
|
|
600
|
+
styleOverrides: {
|
|
601
|
+
root: ({ theme }) => ({
|
|
602
|
+
...canvasFieldStylesOf(theme),
|
|
603
|
+
borderRadius: FIELD_RADIUS_PIXELS,
|
|
604
|
+
"& .MuiPickersOutlinedInput-notchedOutline": { borderColor: "transparent" },
|
|
605
|
+
"&:hover .MuiPickersOutlinedInput-notchedOutline, &.Mui-focused .MuiPickersOutlinedInput-notchedOutline, &.Mui-error .MuiPickersOutlinedInput-notchedOutline": {
|
|
606
|
+
borderColor: "transparent"
|
|
607
|
+
},
|
|
608
|
+
...fieldRingsOf(theme),
|
|
609
|
+
[insideContentSelectorOf()]: fieldFillOf(theme)
|
|
610
|
+
})
|
|
611
|
+
}
|
|
612
|
+
},
|
|
613
|
+
// los botones de opción: una tira apenas marcada y la opción elegida en su gota. Acostados y sin fullWidth, todas las
|
|
614
|
+
// opciones miden lo mismo (la más ancha manda): «all segments are usually equal in width» (HIG «Segmented controls»)
|
|
615
|
+
MuiToggleButtonGroup: {
|
|
616
|
+
styleOverrides: {
|
|
617
|
+
root: ({ ownerState, theme }) => ({
|
|
618
|
+
backgroundColor: paletteOf(theme).action.hover,
|
|
619
|
+
borderRadius: PILL_RADIUS,
|
|
620
|
+
padding: 3,
|
|
621
|
+
gap: 2,
|
|
622
|
+
// la tira mide lo que sus opciones (dentro de una columna se estiraba a todo lo ancho), salvo fullWidth
|
|
623
|
+
...!ownerState.fullWidth && { width: "fit-content", maxWidth: "100%" },
|
|
624
|
+
...!ownerState.fullWidth && ownerState.orientation !== "vertical" && {
|
|
625
|
+
display: "inline-grid",
|
|
626
|
+
gridAutoFlow: "column",
|
|
627
|
+
gridAutoColumns: "1fr"
|
|
628
|
+
},
|
|
629
|
+
"& .MuiToggleButtonGroup-grouped": { border: 0, margin: 0, borderRadius: PILL_RADIUS },
|
|
630
|
+
"& .MuiToggleButtonGroup-grouped.Mui-selected, & .MuiToggleButtonGroup-grouped.Mui-selected:hover": glassDropOf(theme)
|
|
631
|
+
})
|
|
632
|
+
}
|
|
633
|
+
},
|
|
634
|
+
// la casilla: la palomita BLANCA sobre el color oscurecido lo justo (whiteLabelFillOf), como las de Apple. La de MUI es
|
|
635
|
+
// un hueco en el cuadro y en oscuro se veía la palomita negra (lo reportaron: «espantoso»); un cuadrito blanco detrás
|
|
636
|
+
// del dibujo la vuelve blanca. Vale igual para la casilla «mixta»
|
|
637
|
+
MuiCheckbox: {
|
|
638
|
+
styleOverrides: {
|
|
639
|
+
root: ({ ownerState, theme }) => {
|
|
640
|
+
const colorName = ownerState.color ?? "primary";
|
|
641
|
+
const fillOf = (scheme) => whiteLabelFillOf(theme.colorSchemes?.[scheme]?.palette?.[colorName]?.main);
|
|
642
|
+
const lightFill = fillOf("light");
|
|
643
|
+
const darkFill = fillOf("dark");
|
|
644
|
+
const whiteMark = { background: "linear-gradient(#fff, #fff) center / 58% 58% no-repeat", borderRadius: 4 };
|
|
645
|
+
return {
|
|
646
|
+
"&.Mui-checked .MuiSvgIcon-root, &.MuiCheckbox-indeterminate .MuiSvgIcon-root": whiteMark,
|
|
647
|
+
...lightFill && { "&.Mui-checked, &.MuiCheckbox-indeterminate": { color: lightFill } },
|
|
648
|
+
...darkFill && theme.applyStyles("dark", { "&.Mui-checked, &.MuiCheckbox-indeterminate": { color: darkFill } })
|
|
649
|
+
};
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
},
|
|
653
|
+
// el interruptor con su texto: el de iPhone no trae el margen que MUI usa para separar el texto, y salía pegado (lo
|
|
654
|
+
// reportaron). 12 px entre los dos; con el texto antes (labelPlacement="start"), el texto a la izquierda y el
|
|
655
|
+
// interruptor a la derecha del renglón, como en Ajustes
|
|
656
|
+
MuiFormControlLabel: {
|
|
657
|
+
styleOverrides: {
|
|
658
|
+
root: {
|
|
659
|
+
"&:has(.MuiSwitch-root)": { gap: SWITCH_LABEL_GAP_PIXELS, marginLeft: 0 },
|
|
660
|
+
"&:has(.MuiSwitch-root).MuiFormControlLabel-labelPlacementStart": { marginRight: 0, justifyContent: "space-between" }
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
},
|
|
664
|
+
// el número de los pasos (Stepper): blanco sobre el círculo. El activo y los hechos, del color del tema oscurecido lo justo
|
|
665
|
+
// para el blanco (whiteLabelFillOf); los que faltan, gris de Apple. En oscuro la paleta ponía el número negro sobre el
|
|
666
|
+
// naranja y no se notaba el «1» (lo reportaron)
|
|
667
|
+
MuiStepIcon: {
|
|
668
|
+
styleOverrides: {
|
|
669
|
+
root: ({ theme }) => {
|
|
670
|
+
const fillOf = (scheme) => whiteLabelFillOf(theme.colorSchemes?.[scheme]?.palette?.primary?.main);
|
|
671
|
+
const lightFill = fillOf("light");
|
|
672
|
+
const darkFill = fillOf("dark");
|
|
673
|
+
return {
|
|
674
|
+
color: STEP_PENDING_GRAY.light,
|
|
675
|
+
"& .MuiStepIcon-text": { fill: WHITE_LABEL },
|
|
676
|
+
...lightFill && { "&.Mui-active, &.Mui-completed": { color: lightFill } },
|
|
677
|
+
...theme.applyStyles("dark", {
|
|
678
|
+
color: STEP_PENDING_GRAY.dark,
|
|
679
|
+
...darkFill && { "&.Mui-active, &.Mui-completed": { color: darkFill } }
|
|
680
|
+
})
|
|
681
|
+
};
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
},
|
|
685
|
+
// el día del calendario de MUI X (como el de Apple): el elegido en un círculo tenue de su color con el número legible,
|
|
686
|
+
// y hoy, con el número del color del tema (legible); nada de letra negra sobre el naranja
|
|
687
|
+
MuiPickersDay: {
|
|
688
|
+
styleOverrides: {
|
|
689
|
+
root: ({ theme }) => {
|
|
690
|
+
const palette = paletteOf(theme);
|
|
691
|
+
const selected = {
|
|
692
|
+
backgroundColor: `color-mix(in srgb, ${palette.primary.main} 22%, transparent)`,
|
|
693
|
+
...accentTextStylesOf(theme),
|
|
694
|
+
fontWeight: 600
|
|
695
|
+
};
|
|
696
|
+
return {
|
|
697
|
+
"&.Mui-selected, &.Mui-selected:hover, &.Mui-selected:focus": selected,
|
|
698
|
+
"&.MuiPickersDay-today:not(.Mui-selected)": { border: 0, ...accentTextStylesOf(theme), fontWeight: 600 }
|
|
699
|
+
};
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
},
|
|
703
|
+
// las pestañas: la misma tira, y la marca de abajo se vuelve la gota detrás de la pestaña elegida (se desliza sola)
|
|
704
|
+
MuiTabs: {
|
|
705
|
+
styleOverrides: {
|
|
706
|
+
root: ({ ownerState, theme }) => ownerState.vertical ? {} : {
|
|
707
|
+
minHeight: 0,
|
|
708
|
+
padding: MENU_ROW_INSET_PIXELS,
|
|
709
|
+
borderRadius: PILL_RADIUS,
|
|
710
|
+
backgroundColor: paletteOf(theme).action.hover,
|
|
711
|
+
width: "fit-content",
|
|
712
|
+
maxWidth: "100%",
|
|
713
|
+
"& .MuiTab-root": { minHeight: 36, paddingBlock: 6, paddingInline: 16, borderRadius: PILL_RADIUS, zIndex: 1 },
|
|
714
|
+
"& .MuiTab-root.Mui-selected": { color: paletteOf(theme).text.primary }
|
|
715
|
+
},
|
|
716
|
+
indicator: ({ ownerState, theme }) => ownerState.vertical ? { display: "none" } : { ...glassDropOf(theme), height: "100%", borderRadius: PILL_RADIUS, zIndex: 0 },
|
|
717
|
+
// de pie son una lista para navegar, como el menú lateral: la elegida en su gota y no con la rayita de MUI
|
|
718
|
+
// OJO: la gota iba pegada a la línea de la derecha y sin aire entre pestañas («todo pegado»): se separan
|
|
719
|
+
vertical: ({ theme }) => ({
|
|
720
|
+
paddingRight: theme.spacing(1),
|
|
721
|
+
"& .MuiTab-root": {
|
|
722
|
+
minHeight: 40,
|
|
723
|
+
borderRadius: GLASS_MENU_RADIUS_PIXELS,
|
|
724
|
+
alignItems: "flex-start",
|
|
725
|
+
marginBlock: 3,
|
|
726
|
+
paddingInline: theme.spacing(2)
|
|
727
|
+
},
|
|
728
|
+
"& .MuiTab-root.Mui-focusVisible": { outlineOffset: 2 },
|
|
729
|
+
"& .MuiTab-root.Mui-selected": { ...glassDropOf(theme), color: paletteOf(theme).text.primary }
|
|
730
|
+
})
|
|
731
|
+
}
|
|
732
|
+
},
|
|
733
|
+
// los pasos con puntos del teléfono: en su lugar, sin fondo propio (sobre una tarjeta se veía un rectángulo); pegados
|
|
734
|
+
// abajo o arriba de la pantalla, flotan de vidrio
|
|
735
|
+
MuiMobileStepper: {
|
|
736
|
+
styleOverrides: {
|
|
737
|
+
root: ({ ownerState, theme }) => ownerState.position === "static" ? { background: "transparent" } : glassStylesOf(theme)
|
|
738
|
+
}
|
|
739
|
+
},
|
|
740
|
+
// un renglón elegido de una lista (la carpeta abierta): en su gota, como el menú lateral (HIG «Sidebars»)
|
|
741
|
+
MuiListItemButton: {
|
|
742
|
+
styleOverrides: {
|
|
743
|
+
root: ({ theme }) => ({
|
|
744
|
+
"&.Mui-selected, &.Mui-selected:hover, &.Mui-selected.Mui-focusVisible": mergeStyles(glassDropOf(theme), accentTextStylesOf(theme))
|
|
745
|
+
})
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
// la paginación: la página actual en su gota, como lo elegido en los demás controles
|
|
749
|
+
MuiPaginationItem: {
|
|
750
|
+
styleOverrides: {
|
|
751
|
+
root: ({ theme }) => ({
|
|
752
|
+
"&.Mui-selected, &.Mui-selected:hover, &.Mui-selected.Mui-focusVisible": {
|
|
753
|
+
...glassDropOf(theme),
|
|
754
|
+
borderColor: "transparent",
|
|
755
|
+
color: paletteOf(theme).text.primary
|
|
756
|
+
}
|
|
757
|
+
})
|
|
758
|
+
}
|
|
759
|
+
},
|
|
760
|
+
// el interruptor: la perilla con brillo, que crece al apretarla (HIG «Materials»: los controles como el interruptor
|
|
761
|
+
// «take on a Liquid Glass appearance… when a person activates it»)
|
|
762
|
+
// Y tiene la forma del de iPhone: una cápsula con la perilla blanca ADENTRO (el de MUI pone la perilla encima de una
|
|
763
|
+
// pista delgada); prendido, la pista es del color del interruptor; apagado, el gris de relleno de Apple
|
|
764
|
+
MuiSwitch: {
|
|
765
|
+
styleOverrides: {
|
|
766
|
+
// OJO: las medidas van aquí, colgadas de la raíz: MUI pone las del interruptor chico con un selector así de
|
|
767
|
+
// fuerte (.raíz .MuiSwitch-switchBase.Mui-checked) y, puestas en cada pieza, ganaba la suya (la perilla se
|
|
768
|
+
// salía de la pista)
|
|
769
|
+
root: ({ ownerState }) => {
|
|
770
|
+
const size = SWITCH_SIZES[ownerState.size] ?? SWITCH_SIZES.medium;
|
|
771
|
+
return {
|
|
772
|
+
width: size.width,
|
|
773
|
+
height: size.height,
|
|
774
|
+
padding: 0,
|
|
775
|
+
overflow: "visible",
|
|
776
|
+
"& .MuiSwitch-switchBase": { padding: 0, margin: SWITCH_THUMB_MARGIN_PIXELS },
|
|
777
|
+
"& .MuiSwitch-switchBase.Mui-checked": { transform: `translateX(${size.width - size.thumb - SWITCH_THUMB_MARGIN_PIXELS * 2}px)` },
|
|
778
|
+
"& .MuiSwitch-thumb": { width: size.thumb, height: size.thumb },
|
|
779
|
+
"& .MuiSwitch-track": { borderRadius: size.height / 2 }
|
|
780
|
+
};
|
|
781
|
+
},
|
|
782
|
+
switchBase: ({ ownerState, theme }) => {
|
|
783
|
+
const palette = paletteOf(theme);
|
|
784
|
+
const onColor = (palette[ownerState.color] ?? palette.primary).main;
|
|
785
|
+
return {
|
|
786
|
+
color: palette.common.white,
|
|
787
|
+
"&.Mui-checked": {
|
|
788
|
+
color: palette.common.white,
|
|
789
|
+
"& + .MuiSwitch-track": { backgroundColor: onColor, opacity: 1 }
|
|
790
|
+
},
|
|
791
|
+
"&.Mui-disabled + .MuiSwitch-track, &.Mui-checked.Mui-disabled + .MuiSwitch-track": { opacity: 0.4 },
|
|
792
|
+
"&.Mui-disabled .MuiSwitch-thumb": { opacity: 0.8 },
|
|
793
|
+
// con el teclado, un aro alrededor de la perilla
|
|
794
|
+
"&.Mui-focusVisible .MuiSwitch-thumb": { outline: `2px solid ${onColor}`, outlineOffset: 2 },
|
|
795
|
+
"&:hover": { backgroundColor: "transparent" },
|
|
796
|
+
"&:active .MuiSwitch-thumb": { transform: `scale(${PRESSED_THUMB_SCALE})` },
|
|
797
|
+
[REDUCED_MOTION_QUERY]: { "&:active .MuiSwitch-thumb": { transform: "none" } }
|
|
798
|
+
};
|
|
799
|
+
},
|
|
800
|
+
thumb: ({ theme }) => ({
|
|
801
|
+
boxShadow: "inset 0 1px 0 rgba(255, 255, 255, 0.6), 0 1px 3px rgba(0, 0, 0, 0.3), 0 2px 6px rgba(0, 0, 0, 0.12)",
|
|
802
|
+
transition: theme.transitions.create(["transform"], { duration: theme.transitions.duration.shortest })
|
|
803
|
+
}),
|
|
804
|
+
track: ({ theme }) => ({
|
|
805
|
+
opacity: 1,
|
|
806
|
+
backgroundColor: SWITCH_OFF_TRACK.light,
|
|
807
|
+
transition: theme.transitions.create(["background-color"], { duration: theme.transitions.duration.short }),
|
|
808
|
+
...theme.applyStyles("dark", { backgroundColor: SWITCH_OFF_TRACK.dark })
|
|
809
|
+
})
|
|
810
|
+
}
|
|
811
|
+
},
|
|
812
|
+
// el deslizador: la perilla clara (como la de Apple) que, al arrastrarla, crece y se vuelve una lupa de vidrio
|
|
813
|
+
MuiSlider: {
|
|
814
|
+
styleOverrides: {
|
|
815
|
+
thumb: ({ ownerState, theme }) => {
|
|
816
|
+
const palette = paletteOf(theme);
|
|
817
|
+
const centered = ownerState.orientation === "vertical" ? "translate(-50%, 50%)" : "translate(-50%, -50%)";
|
|
818
|
+
const pressedGlass = {
|
|
819
|
+
backgroundColor: `color-mix(in srgb, ${palette.background.paper} 45%, transparent)`,
|
|
820
|
+
backdropFilter: "blur(2px) saturate(180%)",
|
|
821
|
+
WebkitBackdropFilter: "blur(2px) saturate(180%)",
|
|
822
|
+
...solidFallbackOf({ backgroundColor: palette.background.paper, backdropFilter: "none", WebkitBackdropFilter: "none" })
|
|
823
|
+
};
|
|
824
|
+
const isVertical = ownerState.orientation === "vertical";
|
|
825
|
+
return {
|
|
826
|
+
width: isVertical ? SLIDER_THUMB.short : SLIDER_THUMB.long,
|
|
827
|
+
height: isVertical ? SLIDER_THUMB.long : SLIDER_THUMB.short,
|
|
828
|
+
borderRadius: PILL_RADIUS,
|
|
829
|
+
backgroundColor: palette.common.white,
|
|
830
|
+
border: 0,
|
|
831
|
+
boxShadow: SLIDER_THUMB.shadow,
|
|
832
|
+
// MUI pone un halo del color al pasar el cursor; en Apple la perilla solo se ve, sin halo
|
|
833
|
+
"&:hover, &.Mui-focusVisible": { boxShadow: SLIDER_THUMB.shadow },
|
|
834
|
+
"&.Mui-focusVisible": { outline: `2px solid ${palette.primary.main}`, outlineOffset: 2 },
|
|
835
|
+
transition: theme.transitions.create(["box-shadow", "left", "bottom", "transform", "background-color"], {
|
|
836
|
+
duration: theme.transitions.duration.shortest
|
|
837
|
+
}),
|
|
838
|
+
"&.Mui-active": { transform: `${centered} scale(${PRESSED_THUMB_SCALE})`, ...pressedGlass },
|
|
839
|
+
[REDUCED_MOTION_QUERY]: { "&.Mui-active": { transform: centered } }
|
|
840
|
+
};
|
|
841
|
+
},
|
|
842
|
+
rail: ({ theme }) => ({
|
|
843
|
+
opacity: 1,
|
|
844
|
+
backgroundColor: SLIDER_RAIL.light,
|
|
845
|
+
...theme.applyStyles("dark", { backgroundColor: SLIDER_RAIL.dark })
|
|
846
|
+
}),
|
|
847
|
+
root: ({ ownerState }) => ownerState.orientation === "vertical" ? { width: SLIDER_TRACK_PIXELS } : { height: SLIDER_TRACK_PIXELS }
|
|
848
|
+
}
|
|
849
|
+
},
|
|
850
|
+
// lo que espera (HIG «Progress indicators»): el «cargando» sin cuánto falta es la ruedita de iPhone, rayitas que giran
|
|
851
|
+
// a saltos con la cola desvanecida (no el anillo de MUI): se dibuja con una máscara y gira con la misma animación de
|
|
852
|
+
// MUI, solo que en 8 saltos. El que sí dice cuánto falta conserva el anillo, con su pista de fondo y la punta redonda.
|
|
853
|
+
// Cambian solos todos los «cargando» del framework: el de los botones, la pantalla de espera y las tablas.
|
|
854
|
+
// La ruedita sigue girando aunque la persona pida menos movimiento: Apple pide «Keep progress indicators moving».
|
|
855
|
+
MuiCircularProgress: {
|
|
856
|
+
defaultProps: { enableTrackSlot: true },
|
|
857
|
+
styleOverrides: {
|
|
858
|
+
root: ({ ownerState }) => ownerState.variant === "determinate" ? {} : {
|
|
859
|
+
backgroundColor: "currentColor",
|
|
860
|
+
maskImage: ACTIVITY_SPOKES_MASK,
|
|
861
|
+
WebkitMaskImage: ACTIVITY_SPOKES_MASK,
|
|
862
|
+
maskSize: "100% 100%",
|
|
863
|
+
WebkitMaskSize: "100% 100%",
|
|
864
|
+
maskRepeat: "no-repeat",
|
|
865
|
+
WebkitMaskRepeat: "no-repeat",
|
|
866
|
+
animationDuration: ACTIVITY_SPIN_DURATION,
|
|
867
|
+
animationTimingFunction: `steps(${ACTIVITY_SPOKE_COUNT})`,
|
|
868
|
+
"& .MuiCircularProgress-svg": { visibility: "hidden" }
|
|
869
|
+
},
|
|
870
|
+
circle: ({ ownerState }) => ownerState.variant === "determinate" ? { strokeLinecap: "round" } : {}
|
|
871
|
+
}
|
|
872
|
+
},
|
|
873
|
+
// la barra de progreso: la cápsula delgada de Apple, con la pista gris neutra y la parte llena de punta redonda
|
|
874
|
+
MuiLinearProgress: {
|
|
875
|
+
styleOverrides: {
|
|
876
|
+
root: ({ theme }) => ({ height: PROGRESS_BAR_HEIGHT_PIXELS, borderRadius: PILL_RADIUS, backgroundColor: paletteOf(theme).action.hover }),
|
|
877
|
+
bar: { borderRadius: PILL_RADIUS }
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
};
|
|
881
|
+
}
|
|
882
|
+
export {
|
|
883
|
+
glassComponents
|
|
884
|
+
};
|
|
885
|
+
//# sourceMappingURL=glassComponents.js.map
|