@micha.bigler/ui-core-micha 2.33.2 → 2.35.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/WORK_ORDERS.md +9 -2
- package/dist/auth/ReauthModal.js +3 -1
- package/dist/components/AccessCodeManager.js +16 -14
- package/dist/components/AccessCodeSingleUseToggle.js +2 -1
- package/dist/components/AllowedEmailDomainsManager.js +3 -1
- package/dist/components/AuthFactorRequirementCard.js +2 -1
- package/dist/components/BulkInviteCsvTab.js +7 -7
- package/dist/components/LoginForm.js +2 -1
- package/dist/components/MFAComponent.js +15 -8
- package/dist/components/MfaLoginComponent.js +4 -1
- package/dist/components/PasskeysComponent.js +4 -2
- package/dist/components/QrSignupManager.js +2 -1
- package/dist/components/QrSignupValidityManager.js +4 -1
- package/dist/components/RegistrationMethodsManager.js +3 -1
- package/dist/components/SecurityComponent.js +3 -1
- package/dist/components/SocialLoginButtons.js +2 -1
- package/dist/components/SupportRecoveryRequestsTab.js +4 -1
- package/dist/components/UserInviteComponent.js +8 -8
- package/dist/components/UserListComponent.js +8 -4
- package/dist/components/charts/ChartFrame.js +8 -3
- package/dist/components/charts/TimeSeriesChart.js +7 -4
- package/dist/components/charts/exportChart.js +2 -2
- package/dist/index.js +1 -1
- package/dist/layout/PageLayout.js +3 -2
- package/dist/messaging/AttachmentList.js +6 -1
- package/dist/messaging/Composer.js +2 -1
- package/dist/messaging/DirectMessageLauncher.js +2 -1
- package/dist/messaging/MessageBubble.js +29 -8
- package/dist/messaging/PollCard.js +6 -4
- package/dist/messaging/Thread.js +2 -1
- package/dist/notifications/NotificationSettings.js +17 -3
- package/dist/notifications/PopupSurface.js +2 -1
- package/dist/onboarding/steps/BrowserPushStep.js +2 -1
- package/dist/pages/AccountPage.js +2 -1
- package/dist/pages/LoginPage.js +2 -1
- package/dist/pages/SignUpPage.js +2 -1
- package/dist/pages/SignupConfirmPage.js +2 -1
- package/dist/theme/index.js +2 -1
- package/dist/theme/kitSxRegistry.js +187 -0
- package/dist/theme/themeCompleteness.js +422 -1
- package/package.json +1 -1
- package/src/auth/ReauthModal.jsx +5 -2
- package/src/components/AccessCodeManager.jsx +22 -20
- package/src/components/AccessCodeSingleUseToggle.jsx +4 -2
- package/src/components/AllowedEmailDomainsManager.jsx +6 -3
- package/src/components/AuthFactorRequirementCard.jsx +4 -2
- package/src/components/BulkInviteCsvTab.jsx +11 -10
- package/src/components/LoginForm.jsx +5 -3
- package/src/components/MFAComponent.jsx +20 -12
- package/src/components/MfaLoginComponent.jsx +9 -5
- package/src/components/PasskeysComponent.jsx +7 -4
- package/src/components/QrSignupManager.jsx +6 -4
- package/src/components/QrSignupValidityManager.jsx +8 -4
- package/src/components/RegistrationMethodsManager.jsx +7 -4
- package/src/components/SecurityComponent.jsx +10 -7
- package/src/components/SocialLoginButtons.jsx +2 -1
- package/src/components/SupportRecoveryRequestsTab.jsx +8 -4
- package/src/components/UserInviteComponent.jsx +10 -10
- package/src/components/UserListComponent.jsx +12 -7
- package/src/components/charts/ChartFrame.jsx +13 -3
- package/src/components/charts/TimeSeriesChart.jsx +8 -4
- package/src/components/charts/exportChart.js +2 -2
- package/src/index.js +4 -0
- package/src/layout/PageLayout.jsx +4 -2
- package/src/messaging/AttachmentList.jsx +9 -3
- package/src/messaging/Composer.jsx +3 -1
- package/src/messaging/DirectMessageLauncher.jsx +3 -1
- package/src/messaging/MessageBubble.jsx +31 -9
- package/src/messaging/PollCard.jsx +8 -6
- package/src/messaging/Thread.jsx +3 -1
- package/src/notifications/NotificationSettings.jsx +24 -9
- package/src/notifications/PopupSurface.jsx +3 -1
- package/src/onboarding/steps/BrowserPushStep.jsx +3 -1
- package/src/pages/AccountPage.jsx +11 -9
- package/src/pages/LoginPage.jsx +6 -4
- package/src/pages/SignUpPage.jsx +4 -2
- package/src/pages/SignupConfirmPage.jsx +4 -2
- package/src/theme/index.js +4 -0
- package/src/theme/kitSxRegistry.js +246 -0
- package/src/theme/themeCompleteness.js +451 -1
- package/tests/ChartFrame.test.jsx +5 -0
- package/tests/themeCompleteness.test.js +351 -0
- package/work-orders/THEME-4.md +86 -0
- package/work-orders/THEME-5.md +341 -0
|
@@ -6,6 +6,7 @@ import { Tabs, Tab, Box, Typography, Alert, CircularProgress, Paper, Stack, } fr
|
|
|
6
6
|
import { useTranslation } from 'react-i18next';
|
|
7
7
|
// Internal context
|
|
8
8
|
import { AuthContext } from '../auth/AuthContext';
|
|
9
|
+
export const ACCOUNT_PAGE_SECTION_PAPER_SX = { p: 2.5 };
|
|
9
10
|
// Falls die Komponenten noch lokal sind:
|
|
10
11
|
import { WidePage } from '../layout/PageLayout';
|
|
11
12
|
import { ProfileComponent } from '../components/ProfileComponent';
|
|
@@ -130,5 +131,5 @@ export function AccountPage({ userListExtraColumns = [], userListExtraRowActions
|
|
|
130
131
|
const activeExtraTab = builtInTabValues.has(safeTab)
|
|
131
132
|
? null
|
|
132
133
|
: extraTabs.find((tab) => tab.value === safeTab);
|
|
133
|
-
return (_jsxs(WidePage, { title: t('Account.TITLE', 'Account & Administration'), children: [_jsx(Helmet, { children: _jsxs("title", { children: [t('Account.PAGE_TITLE', 'Account'), " \u2013 ", user.email] }) }), _jsx(Tabs, { value: safeTab, onChange: handleTabChange, variant: "scrollable", scrollButtons: "auto", sx: { mb: 3, borderBottom: 1, borderColor: 'divider' }, children: tabs.map((tab) => (_jsx(Tab, { label: tab.label, value: tab.value }, tab.value))) }), safeTab === 'profile' && (_jsx(Box, { sx: { mt: 2 }, children: _jsx(ProfileComponent, { onSubmit: handleProfileSubmit, showName: true, showPrivacy: true, showCookies: true }) })), safeTab === 'security' && (_jsx(Box, { sx: { mt: 2 }, children: _jsx(SecurityComponent, { fromRecovery: fromRecovery, fromWeakLogin: fromWeakLogin }) })), safeTab === 'users' && (_jsx(Box, { sx: { mt: 2 }, children: _jsx(UserListComponent, { roles: activeRoles, currentUser: user, extraColumns: userListExtraColumns, extraRowActions: userListExtraRowActions, extraContext: userListExtraContext, refreshTrigger: userListRefreshTrigger, canEditUser: userListCanEditUser, showNewColumn: userListShowNewColumn, showSuccessfulLoginColumn: userListShowSuccessfulLoginColumn, showRoleColumn: userListShowRoleColumn, onChangeRole: userListOnChangeRole, showDeleteAction: userListShowDeleteAction, canDeleteUser: userListCanDeleteUser, onDeleteUser: userListOnDeleteUser }) })), safeTab === 'invite' && (_jsx(Box, { sx: { mt: 2 }, children: _jsxs(Stack, { spacing: 2.5, children: [canViewAuthPolicy && (_jsx(Paper, { variant: "outlined", sx:
|
|
134
|
+
return (_jsxs(WidePage, { title: t('Account.TITLE', 'Account & Administration'), children: [_jsx(Helmet, { children: _jsxs("title", { children: [t('Account.PAGE_TITLE', 'Account'), " \u2013 ", user.email] }) }), _jsx(Tabs, { value: safeTab, onChange: handleTabChange, variant: "scrollable", scrollButtons: "auto", sx: { mb: 3, borderBottom: 1, borderColor: 'divider' }, children: tabs.map((tab) => (_jsx(Tab, { label: tab.label, value: tab.value }, tab.value))) }), safeTab === 'profile' && (_jsx(Box, { sx: { mt: 2 }, children: _jsx(ProfileComponent, { onSubmit: handleProfileSubmit, showName: true, showPrivacy: true, showCookies: true }) })), safeTab === 'security' && (_jsx(Box, { sx: { mt: 2 }, children: _jsx(SecurityComponent, { fromRecovery: fromRecovery, fromWeakLogin: fromWeakLogin }) })), safeTab === 'users' && (_jsx(Box, { sx: { mt: 2 }, children: _jsx(UserListComponent, { roles: activeRoles, currentUser: user, extraColumns: userListExtraColumns, extraRowActions: userListExtraRowActions, extraContext: userListExtraContext, refreshTrigger: userListRefreshTrigger, canEditUser: userListCanEditUser, showNewColumn: userListShowNewColumn, showSuccessfulLoginColumn: userListShowSuccessfulLoginColumn, showRoleColumn: userListShowRoleColumn, onChangeRole: userListOnChangeRole, showDeleteAction: userListShowDeleteAction, canDeleteUser: userListCanDeleteUser, onDeleteUser: userListOnDeleteUser }) })), safeTab === 'invite' && (_jsx(Box, { sx: { mt: 2 }, children: _jsxs(Stack, { spacing: 2.5, children: [canViewAuthPolicy && (_jsx(Paper, { variant: "outlined", sx: ACCOUNT_PAGE_SECTION_PAPER_SX, children: _jsx(AuthFactorRequirementCard, { canEdit: canWriteAuthPolicy, policy: authPolicy }) })), canViewAuthPolicy && (_jsx(Paper, { variant: "outlined", sx: ACCOUNT_PAGE_SECTION_PAPER_SX, children: _jsx(RegistrationMethodsManager, { policy: authPolicy, error: authPolicyError, onPolicyChange: setAuthPolicy, canEdit: canWriteAuthPolicy }) })), canSendInvites && Boolean(authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.allow_admin_invite) && (_jsx(Paper, { variant: "outlined", sx: ACCOUNT_PAGE_SECTION_PAPER_SX, children: _jsx(UserInviteComponent, {}) })), canManageAccessCodes && Boolean(authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.allow_self_signup_access_code) && (_jsxs(Paper, { variant: "outlined", sx: ACCOUNT_PAGE_SECTION_PAPER_SX, children: [_jsx(Typography, { variant: "h6", gutterBottom: true, children: t('Auth.ACCESS_CODE_MANAGER_TITLE', 'Access Codes') }), _jsx(Typography, { variant: "body2", sx: { mb: 2, color: 'text.secondary' }, children: t('Account.ACCESS_CODES_HINT', 'Manage access codes for self-registration.') }), _jsx(AccessCodeManager, {})] })), canManageAccessCodes && Boolean(authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.allow_self_signup_access_code) && (_jsx(Paper, { variant: "outlined", sx: ACCOUNT_PAGE_SECTION_PAPER_SX, children: _jsx(AccessCodeSingleUseToggle, { canEdit: canWriteAuthPolicy, policy: authPolicy, onPolicyChange: setAuthPolicy }) })), canSendInvites && showBulkInviteCsvTab && Boolean(authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.allow_admin_invite) && (_jsx(Paper, { variant: "outlined", sx: ACCOUNT_PAGE_SECTION_PAPER_SX, children: _jsx(BulkInviteCsvTab, Object.assign({}, bulkInviteCsvProps)) })), canViewAuthPolicy && Boolean(authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.allow_self_signup_email_domain) && (_jsx(Paper, { variant: "outlined", sx: ACCOUNT_PAGE_SECTION_PAPER_SX, children: _jsx(AllowedEmailDomainsManager, { enabled: Boolean(authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.allow_self_signup_email_domain), domains: (authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.allowed_email_domains) || [], onPolicyChange: setAuthPolicy, canEdit: canWriteAuthPolicy }) })), canViewAuthPolicy && Boolean(authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.allow_self_signup_qr) && (_jsx(Paper, { variant: "outlined", sx: ACCOUNT_PAGE_SECTION_PAPER_SX, children: _jsx(QrSignupValidityManager, { enabled: Boolean(authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.allow_self_signup_qr), expiryDays: authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.signup_qr_expiry_days, onPolicyChange: setAuthPolicy, canEdit: canWriteAuthPolicy }) })), canManageSignupQr && Boolean(authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.allow_self_signup_qr) && (_jsx(Paper, { variant: "outlined", sx: ACCOUNT_PAGE_SECTION_PAPER_SX, children: _jsx(QrSignupManager, { enabled: Boolean(authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.allow_self_signup_qr), expiryDays: authPolicy === null || authPolicy === void 0 ? void 0 : authPolicy.signup_qr_expiry_days }) }))] }) })), safeTab === 'support' && (_jsx(Box, { sx: { mt: 2 }, children: _jsx(SupportRecoveryRequestsTab, {}) })), activeExtraTab && (_jsx(Box, { sx: { mt: 2 }, children: (_a = activeExtraTab.render) === null || _a === void 0 ? void 0 : _a.call(activeExtraTab, { user, perms, isSuperUser, t }) }))] }));
|
|
134
135
|
}
|
package/dist/pages/LoginPage.js
CHANGED
|
@@ -13,6 +13,7 @@ import { loginWithPasskey, startSocialLogin } from '../utils/authService';
|
|
|
13
13
|
// Components
|
|
14
14
|
import { LoginForm } from '../components/LoginForm';
|
|
15
15
|
import { MfaLoginComponent } from '../components/MfaLoginComponent';
|
|
16
|
+
export const LOGIN_PAGE_ALERT_SX = { mb: 2 };
|
|
16
17
|
export function LoginPage() {
|
|
17
18
|
const navigate = useNavigate();
|
|
18
19
|
const location = useLocation();
|
|
@@ -244,7 +245,7 @@ export function LoginPage() {
|
|
|
244
245
|
const twoFactorRequired = Boolean(authMethods === null || authMethods === void 0 ? void 0 : authMethods.two_factor_required)
|
|
245
246
|
|| Number((authMethods === null || authMethods === void 0 ? void 0 : authMethods.required_auth_factor_count) || 1) >= 2;
|
|
246
247
|
// --- Render ---
|
|
247
|
-
return (_jsxs(NarrowPage, { title: t('Auth.PAGE_LOGIN_TITLE'), subtitle: t('Auth.PAGE_LOGIN_SUBTITLE'), children: [_jsx(Helmet, { children: _jsxs("title", { children: [t('App.NAME'), " \u2013 ", t('Auth.PAGE_LOGIN_TITLE')] }) }), errorKey && (_jsx(Alert, { severity: "error", sx:
|
|
248
|
+
return (_jsxs(NarrowPage, { title: t('Auth.PAGE_LOGIN_TITLE'), subtitle: t('Auth.PAGE_LOGIN_SUBTITLE'), children: [_jsx(Helmet, { children: _jsxs("title", { children: [t('App.NAME'), " \u2013 ", t('Auth.PAGE_LOGIN_TITLE')] }) }), errorKey && (_jsx(Alert, { severity: "error", sx: LOGIN_PAGE_ALERT_SX, children: t(errorKey) })), recoveryFetching && !errorKey && (_jsx(Alert, { severity: "info", sx: LOGIN_PAGE_ALERT_SX, children: t('Auth.RECOVERY_LINK_VALIDATING', 'Validating recovery link…') })), recoveryToken && !errorKey && (_jsx(Alert, { severity: "info", sx: LOGIN_PAGE_ALERT_SX, children: t('Auth.RECOVERY_LOGIN_WARNING', 'Recovery link validated. Please enter your password.') })), twoFactorRequired && !recoveryToken && !recoveryFetching && (_jsx(Alert, { severity: "info", sx: LOGIN_PAGE_ALERT_SX, children: t('Auth.TWO_FACTOR_REQUIRED_HINT', 'This app requires two authentication factors for full access.') })), step === 'credentials' && (_jsx(LoginForm, { onSubmit: passwordLoginEnabled ? handleSubmitCredentials : null, onForgotPassword: passwordResetEnabled ? () => navigate('/reset-request-password') : null, onSocialLogin: socialLoginEnabled ? (provider) => startSocialLogin(provider) : null, socialProviders: socialProviders, onPasskeyLogin: passkeyLoginEnabled ? handlePasskeyLoginInitial : null, onSignUp: signupEnabled ? () => navigate('/signup') : null,
|
|
248
249
|
// Block submit while the handoff is in flight so the user does not
|
|
249
250
|
// race the recovery-token fetch with a normal password POST.
|
|
250
251
|
disabled: submitting || recoveryFetching, initialIdentifier: recoveryEmail })), step === 'mfa' && mfaState && (_jsx(Box, { children: _jsx(MfaLoginComponent, { availableTypes: mfaState.availableTypes, identifier: mfaState.identifier, onSuccess: handleMfaSuccess, onCancel: handleMfaCancel }) }))] }));
|
package/dist/pages/SignUpPage.js
CHANGED
|
@@ -8,6 +8,7 @@ import { NarrowPage } from '../layout/PageLayout';
|
|
|
8
8
|
import { AuthContext } from '../auth/AuthContext';
|
|
9
9
|
import { submitRegistrationRequest } from '../auth/authApi';
|
|
10
10
|
import { TurnstileWidget } from '../components/TurnstileWidget';
|
|
11
|
+
export const SIGN_UP_PAGE_ALERT_SX = { mb: 2 };
|
|
11
12
|
const TURNSTILE_SIGNUP_MODES = new Set([
|
|
12
13
|
'self_signup_open',
|
|
13
14
|
'self_signup_email_domain',
|
|
@@ -116,7 +117,7 @@ export function SignUpPage() {
|
|
|
116
117
|
const handleGoToLogin = () => {
|
|
117
118
|
navigate('/login');
|
|
118
119
|
};
|
|
119
|
-
return (_jsxs(NarrowPage, { title: t('Auth.LOGIN_SIGNUP_BUTTON'), subtitle: pageSubtitle, children: [_jsx(Helmet, { children: _jsxs("title", { children: [t('App.NAME'), " \u2013 ", t('Auth.LOGIN_SIGNUP_BUTTON')] }) }), successKey && (_jsx(Alert, { severity: "success", sx:
|
|
120
|
+
return (_jsxs(NarrowPage, { title: t('Auth.LOGIN_SIGNUP_BUTTON'), subtitle: pageSubtitle, children: [_jsx(Helmet, { children: _jsxs("title", { children: [t('App.NAME'), " \u2013 ", t('Auth.LOGIN_SIGNUP_BUTTON')] }) }), successKey && (_jsx(Alert, { severity: "success", sx: SIGN_UP_PAGE_ALERT_SX, children: t(successKey, { email }) })), errorKey && (_jsx(Alert, { severity: "error", sx: SIGN_UP_PAGE_ALERT_SX, children: t(errorKey, t('Auth.INVITE_FAILED', 'Could not complete signup.')) })), signupModes.length > 1 && (_jsx(Stack, { spacing: 1, sx: { mb: 2 }, children: _jsx(Stack, { spacing: 1, children: signupModes.map((entry) => (_jsx(Button, { variant: mode === entry ? 'contained' : 'outlined', onClick: () => setMode(entry), disabled: submitting, fullWidth: true, children: t(MODE_LABELS[entry] || entry, entry) }, entry))) }) })), _jsxs(Box, { component: "form", onSubmit: handleSubmit, sx: { display: 'flex', flexDirection: 'column', gap: 2 }, children: [_jsx(TextField, { label: t('Auth.EMAIL_LABEL'), type: "email", required: true, fullWidth: true, value: email, onChange: (e) => setEmail(e.target.value), disabled: submitting }), mode === 'self_signup_access_code' && (_jsx(TextField, { label: t('Auth.ACCESS_CODE_LABEL'), type: "text", required: true, fullWidth: true, value: accessCode, onChange: (e) => setAccessCode(e.target.value), disabled: submitting })), turnstileRequired && (_jsx(TurnstileWidget, { ref: turnstileWidgetRef, siteKey: authMethods.turnstile_site_key, onToken: setTurnstileToken })), _jsx(Button, { type: "submit", variant: "contained", disabled: submitting || signupModes.length === 0 || (turnstileRequired && !turnstileToken), children: submitting
|
|
120
121
|
? t('Auth.SIGNUP_SUBMITTING')
|
|
121
122
|
: t('Auth.SIGNUP_SUBMIT') })] }), _jsx(Box, { sx: { mt: 3 }, children: _jsxs(Typography, { variant: "body2", children: [t('Auth.SIGNUP_ALREADY_HAVE_ACCOUNT'), ' ', _jsx(Button, { onClick: handleGoToLogin, variant: "text", size: "small", children: t('Auth.SIGNUP_GO_TO_LOGIN') })] }) })] }));
|
|
122
123
|
}
|
|
@@ -13,6 +13,7 @@ import { Helmet } from 'react-helmet';
|
|
|
13
13
|
import { useTranslation } from 'react-i18next';
|
|
14
14
|
import { NarrowPage } from '../layout/PageLayout';
|
|
15
15
|
import { confirmRegistration } from '../auth/authApi';
|
|
16
|
+
export const SIGNUP_CONFIRM_PAGE_ALERT_SX = { mb: 2 };
|
|
16
17
|
export function SignupConfirmPage() {
|
|
17
18
|
const { t } = useTranslation();
|
|
18
19
|
const location = useLocation();
|
|
@@ -57,7 +58,7 @@ export function SignupConfirmPage() {
|
|
|
57
58
|
}
|
|
58
59
|
};
|
|
59
60
|
const tokenMissing = !tokenFromUrl;
|
|
60
|
-
return (_jsxs(NarrowPage, { title: t('Auth.SIGNUP_CONFIRM_TITLE', 'Confirm your registration'), subtitle: t('Auth.SIGNUP_CONFIRM_SUBTITLE', 'Choose a password to finish creating your account.'), children: [_jsx(Helmet, { children: _jsxs("title", { children: [t('App.NAME'), " \u2013 ", t('Auth.SIGNUP_CONFIRM_TITLE', 'Confirm your registration')] }) }), tokenMissing ? (_jsxs(_Fragment, { children: [_jsx(Alert, { severity: "error", sx:
|
|
61
|
+
return (_jsxs(NarrowPage, { title: t('Auth.SIGNUP_CONFIRM_TITLE', 'Confirm your registration'), subtitle: t('Auth.SIGNUP_CONFIRM_SUBTITLE', 'Choose a password to finish creating your account.'), children: [_jsx(Helmet, { children: _jsxs("title", { children: [t('App.NAME'), " \u2013 ", t('Auth.SIGNUP_CONFIRM_TITLE', 'Confirm your registration')] }) }), tokenMissing ? (_jsxs(_Fragment, { children: [_jsx(Alert, { severity: "error", sx: SIGNUP_CONFIRM_PAGE_ALERT_SX, children: t('Auth.PENDING_TOKEN_INVALID', 'This confirmation link is invalid or expired.') }), _jsxs(Stack, { direction: "row", spacing: 1, sx: { mt: 1 }, children: [_jsx(Button, { onClick: () => navigate('/signup'), variant: "contained", children: t('Auth.SIGNUP_REQUEST_NEW', 'Request a new invitation') }), _jsx(Button, { onClick: () => navigate('/login'), variant: "text", children: t('Auth.SIGNUP_GO_TO_LOGIN', 'Go to login') })] })] })) : (_jsxs(_Fragment, { children: [errorKey && (_jsx(Alert, { severity: "error", sx: SIGNUP_CONFIRM_PAGE_ALERT_SX, children: t(errorKey, t('Auth.PENDING_TOKEN_INVALID', 'Could not confirm registration.')) })), _jsxs(Box, { component: "form", onSubmit: handleSubmit, sx: { display: 'flex', flexDirection: 'column', gap: 2 }, children: [_jsx(TextField, { label: t('Auth.NEW_PASSWORD_LABEL', 'New password'), type: "password", required: true, fullWidth: true, value: password, onChange: (e) => setPassword(e.target.value), disabled: submitting, autoComplete: "new-password" }), _jsx(TextField, { label: t('Auth.PASSWORD_CONFIRM_LABEL', 'Confirm new password'), type: "password", required: true, fullWidth: true, value: confirmPassword, onChange: (e) => setConfirmPassword(e.target.value), disabled: submitting, autoComplete: "new-password" }), _jsx(Button, { type: "submit", variant: "contained", disabled: submitting, children: submitting
|
|
61
62
|
? t('Auth.SIGNUP_CONFIRM_SUBMITTING', 'Confirming…')
|
|
62
63
|
: t('Auth.SIGNUP_CONFIRM_SUBMIT', 'Confirm registration') })] }), _jsxs(Stack, { direction: "row", spacing: 1, sx: { mt: 3 }, children: [_jsx(Typography, { variant: "body2", children: t('Auth.SIGNUP_ALREADY_HAVE_ACCOUNT', 'Already have an account?') }), _jsx(Button, { onClick: () => navigate('/login'), variant: "text", size: "small", children: t('Auth.SIGNUP_GO_TO_LOGIN', 'Go to login') })] })] }))] }));
|
|
63
64
|
}
|
package/dist/theme/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { createAppTheme } from './createAppTheme';
|
|
2
|
-
export { assertThemeComplete, calculateContrastRatio, reportThemeAdoption, THEME_COMPLETENESS_SURFACES, } from './themeCompleteness';
|
|
2
|
+
export { assertThemeComplete, assertKitSxDisjoint, calculateContrastRatio, reportOffPaletteColours, reportKitSxBypasses, reportThemeAdoption, THEME_COMPLETENESS_SURFACES, } from './themeCompleteness';
|
|
3
|
+
export { KIT_COMPONENT_SX_REGISTRY } from './kitSxRegistry';
|
|
3
4
|
export { formatShortTime, formatShortDate, formatShortMonth, formatShortYear, } from '../components/charts/chartLabels';
|
|
4
5
|
export { yearTickInterval } from '../components/charts/yearTickInterval';
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { ACCESS_CODE_ACTION_SX, ACCESS_CODE_ALERT_SX, ACCESS_CODE_PRIMARY_ACTION_SX, ACCESS_CODE_VALUE_FIELD_SX, } from '../components/AccessCodeManager';
|
|
2
|
+
import { ACCESS_CODE_SINGLE_USE_ALERT_SX } from '../components/AccessCodeSingleUseToggle';
|
|
3
|
+
import { ALLOWED_EMAIL_DOMAINS_ALERT_SX, ALLOWED_EMAIL_DOMAINS_BUTTON_SX, } from '../components/AllowedEmailDomainsManager';
|
|
4
|
+
import { AUTH_FACTOR_REQUIREMENT_ALERT_SX } from '../components/AuthFactorRequirementCard';
|
|
5
|
+
import { BULK_INVITE_ACTION_SX, BULK_INVITE_ALERT_SX } from '../components/BulkInviteCsvTab';
|
|
6
|
+
import { LOGIN_FORM_DIVIDER_SX } from '../components/LoginForm';
|
|
7
|
+
import { MFA_ACTIVE_CARD_SX, MFA_ALERT_SX, MFA_CARD_SX, MFA_DIVIDER_SX, MFA_RECOVERY_BUTTON_SX, MFA_TEXT_FIELD_SX, } from '../components/MFAComponent';
|
|
8
|
+
import { MFA_LOGIN_ALERT_SX, MFA_LOGIN_DIVIDER_SX, MFA_LOGIN_TEXT_FIELD_SX, } from '../components/MfaLoginComponent';
|
|
9
|
+
import { MOBILE_BOTTOM_NAV_ACTION_SX, MOBILE_BOTTOM_NAV_ROOT_SX, } from '../components/MobileBottomNav';
|
|
10
|
+
import { PASSKEYS_ALERT_SX, PASSKEYS_DIVIDER_SX } from '../components/PasskeysComponent';
|
|
11
|
+
import { QR_SIGNUP_MANAGER_ALERT_SX } from '../components/QrSignupManager';
|
|
12
|
+
import { QR_SIGNUP_VALIDITY_ALERT_SX, QR_SIGNUP_VALIDITY_BUTTON_SX, QR_SIGNUP_VALIDITY_FIELD_SX, } from '../components/QrSignupValidityManager';
|
|
13
|
+
import { REGISTRATION_METHODS_ALERT_SX, REGISTRATION_METHODS_INFO_SX, } from '../components/RegistrationMethodsManager';
|
|
14
|
+
import { SECURITY_ALERT_SX, SECURITY_DIVIDER_SX } from '../components/SecurityComponent';
|
|
15
|
+
import { SUPPORT_RECOVERY_AGENT_BUTTON_SX, SUPPORT_RECOVERY_AGENT_PAPER_SX, SUPPORT_RECOVERY_ALERT_SX, } from '../components/SupportRecoveryRequestsTab';
|
|
16
|
+
import { USER_INVITE_ACTION_SX, USER_INVITE_ALERT_SX } from '../components/UserInviteComponent';
|
|
17
|
+
import { USER_LIST_ACTION_SX, USER_LIST_ALERT_SX, USER_LIST_BODY_CELL_SX, USER_LIST_EMPTY_CELL_SX, USER_LIST_HEADER_CELL_SX, } from '../components/UserListComponent';
|
|
18
|
+
import { CHART_FRAME_ALERT_SX, CHART_FRAME_ROOT_SX } from '../components/charts/ChartFrame';
|
|
19
|
+
import { PAGE_LAYOUT_CONTAINER_SX } from '../layout/PageLayout';
|
|
20
|
+
import { ATTACHMENT_LIST_ALERT_SX, ATTACHMENT_LIST_LIGHTBOX_ACTION_SX, } from '../messaging/AttachmentList';
|
|
21
|
+
import { COMPOSER_EMOJI_BUTTON_SX } from '../messaging/Composer';
|
|
22
|
+
import { DIRECT_MESSAGE_LAUNCHER_ALERT_SX } from '../messaging/DirectMessageLauncher';
|
|
23
|
+
import { MESSAGE_BUBBLE_ACTION_SX, MESSAGE_BUBBLE_ROOT_SX } from '../messaging/MessageBubble';
|
|
24
|
+
import { POLL_CARD_CHECKBOX_SX, POLL_CARD_FORM_CONTROL_SX, POLL_CARD_ROOT_SX, } from '../messaging/PollCard';
|
|
25
|
+
import { THREAD_DAY_SEPARATOR_SX } from '../messaging/Thread';
|
|
26
|
+
import { NOTIFICATION_SETTINGS_ALERT_SX, NOTIFICATION_SETTINGS_CATEGORY_CONTROL_SX, NOTIFICATION_SETTINGS_FORM_CONTROL_SX, NOTIFICATION_SETTINGS_HINT_ALERT_SX, NOTIFICATION_SETTINGS_PUSH_CONTROL_SX, NOTIFICATION_SETTINGS_REACH_ALERT_SX, } from '../notifications/NotificationSettings';
|
|
27
|
+
import { POPUP_SURFACE_DISMISS_BUTTON_SX } from '../notifications/PopupSurface';
|
|
28
|
+
import { BROWSER_PUSH_FORM_CONTROL_LABEL_SX } from '../onboarding/steps/BrowserPushStep';
|
|
29
|
+
import { ACCOUNT_PAGE_SECTION_PAPER_SX } from '../pages/AccountPage';
|
|
30
|
+
import { LOGIN_PAGE_ALERT_SX } from '../pages/LoginPage';
|
|
31
|
+
import { SIGN_UP_PAGE_ALERT_SX } from '../pages/SignUpPage';
|
|
32
|
+
import { SIGNUP_CONFIRM_PAGE_ALERT_SX } from '../pages/SignupConfirmPage';
|
|
33
|
+
import { REAUTH_MODAL_ALERT_SX, REAUTH_MODAL_TEXT_FIELD_SX } from '../auth/ReauthModal';
|
|
34
|
+
const SX_EXPORTS = {
|
|
35
|
+
ACCESS_CODE_ACTION_SX,
|
|
36
|
+
ACCESS_CODE_ALERT_SX,
|
|
37
|
+
ACCESS_CODE_PRIMARY_ACTION_SX,
|
|
38
|
+
ACCESS_CODE_SINGLE_USE_ALERT_SX,
|
|
39
|
+
ACCESS_CODE_VALUE_FIELD_SX,
|
|
40
|
+
ACCOUNT_PAGE_SECTION_PAPER_SX,
|
|
41
|
+
ALLOWED_EMAIL_DOMAINS_ALERT_SX,
|
|
42
|
+
ALLOWED_EMAIL_DOMAINS_BUTTON_SX,
|
|
43
|
+
ATTACHMENT_LIST_ALERT_SX,
|
|
44
|
+
ATTACHMENT_LIST_LIGHTBOX_ACTION_SX,
|
|
45
|
+
AUTH_FACTOR_REQUIREMENT_ALERT_SX,
|
|
46
|
+
BROWSER_PUSH_FORM_CONTROL_LABEL_SX,
|
|
47
|
+
BULK_INVITE_ACTION_SX,
|
|
48
|
+
BULK_INVITE_ALERT_SX,
|
|
49
|
+
CHART_FRAME_ALERT_SX,
|
|
50
|
+
CHART_FRAME_ROOT_SX,
|
|
51
|
+
COMPOSER_EMOJI_BUTTON_SX,
|
|
52
|
+
DIRECT_MESSAGE_LAUNCHER_ALERT_SX,
|
|
53
|
+
LOGIN_FORM_DIVIDER_SX,
|
|
54
|
+
LOGIN_PAGE_ALERT_SX,
|
|
55
|
+
MESSAGE_BUBBLE_ACTION_SX,
|
|
56
|
+
MESSAGE_BUBBLE_ROOT_SX,
|
|
57
|
+
MFA_ACTIVE_CARD_SX,
|
|
58
|
+
MFA_ALERT_SX,
|
|
59
|
+
MFA_CARD_SX,
|
|
60
|
+
MFA_DIVIDER_SX,
|
|
61
|
+
MFA_LOGIN_ALERT_SX,
|
|
62
|
+
MFA_LOGIN_DIVIDER_SX,
|
|
63
|
+
MFA_LOGIN_TEXT_FIELD_SX,
|
|
64
|
+
MFA_RECOVERY_BUTTON_SX,
|
|
65
|
+
MFA_TEXT_FIELD_SX,
|
|
66
|
+
MOBILE_BOTTOM_NAV_ACTION_SX,
|
|
67
|
+
MOBILE_BOTTOM_NAV_ROOT_SX,
|
|
68
|
+
NOTIFICATION_SETTINGS_ALERT_SX,
|
|
69
|
+
NOTIFICATION_SETTINGS_CATEGORY_CONTROL_SX,
|
|
70
|
+
NOTIFICATION_SETTINGS_FORM_CONTROL_SX,
|
|
71
|
+
NOTIFICATION_SETTINGS_HINT_ALERT_SX,
|
|
72
|
+
NOTIFICATION_SETTINGS_PUSH_CONTROL_SX,
|
|
73
|
+
NOTIFICATION_SETTINGS_REACH_ALERT_SX,
|
|
74
|
+
PAGE_LAYOUT_CONTAINER_SX,
|
|
75
|
+
PASSKEYS_ALERT_SX,
|
|
76
|
+
PASSKEYS_DIVIDER_SX,
|
|
77
|
+
POLL_CARD_CHECKBOX_SX,
|
|
78
|
+
POLL_CARD_FORM_CONTROL_SX,
|
|
79
|
+
POLL_CARD_ROOT_SX,
|
|
80
|
+
POPUP_SURFACE_DISMISS_BUTTON_SX,
|
|
81
|
+
QR_SIGNUP_MANAGER_ALERT_SX,
|
|
82
|
+
QR_SIGNUP_VALIDITY_ALERT_SX,
|
|
83
|
+
QR_SIGNUP_VALIDITY_BUTTON_SX,
|
|
84
|
+
QR_SIGNUP_VALIDITY_FIELD_SX,
|
|
85
|
+
REAUTH_MODAL_ALERT_SX,
|
|
86
|
+
REAUTH_MODAL_TEXT_FIELD_SX,
|
|
87
|
+
REGISTRATION_METHODS_ALERT_SX,
|
|
88
|
+
REGISTRATION_METHODS_INFO_SX,
|
|
89
|
+
SECURITY_ALERT_SX,
|
|
90
|
+
SECURITY_DIVIDER_SX,
|
|
91
|
+
SIGNUP_CONFIRM_PAGE_ALERT_SX,
|
|
92
|
+
SIGN_UP_PAGE_ALERT_SX,
|
|
93
|
+
SUPPORT_RECOVERY_AGENT_BUTTON_SX,
|
|
94
|
+
SUPPORT_RECOVERY_AGENT_PAPER_SX,
|
|
95
|
+
SUPPORT_RECOVERY_ALERT_SX,
|
|
96
|
+
THREAD_DAY_SEPARATOR_SX,
|
|
97
|
+
USER_INVITE_ACTION_SX,
|
|
98
|
+
USER_INVITE_ALERT_SX,
|
|
99
|
+
USER_LIST_ACTION_SX,
|
|
100
|
+
USER_LIST_ALERT_SX,
|
|
101
|
+
USER_LIST_BODY_CELL_SX,
|
|
102
|
+
USER_LIST_EMPTY_CELL_SX,
|
|
103
|
+
USER_LIST_HEADER_CELL_SX,
|
|
104
|
+
};
|
|
105
|
+
const SX_EXPORT_NAMES = new Map(Object.entries(SX_EXPORTS).map(([name, sx]) => [sx, name]));
|
|
106
|
+
const entry = (component, muiComponent, sx) => ({
|
|
107
|
+
component,
|
|
108
|
+
muiComponent,
|
|
109
|
+
sx,
|
|
110
|
+
exportName: SX_EXPORT_NAMES.get(sx),
|
|
111
|
+
});
|
|
112
|
+
/**
|
|
113
|
+
* Kit-owned, top-level sx objects paired with the baseline-styled MUI key they
|
|
114
|
+
* target. Conditional and nested sx remain a documented lower bound in the
|
|
115
|
+
* checks rather than being represented here as if they were fully inspected.
|
|
116
|
+
*/
|
|
117
|
+
export const KIT_COMPONENT_SX_REGISTRY = [
|
|
118
|
+
entry('AccessCodeManager.action', 'MuiButton', ACCESS_CODE_ACTION_SX),
|
|
119
|
+
entry('AccessCodeManager.primaryAction', 'MuiButton', ACCESS_CODE_PRIMARY_ACTION_SX),
|
|
120
|
+
entry('AccessCodeManager.alert', 'MuiAlert', ACCESS_CODE_ALERT_SX),
|
|
121
|
+
entry('AccessCodeManager.valueField', 'MuiTextField', ACCESS_CODE_VALUE_FIELD_SX),
|
|
122
|
+
entry('AccessCodeSingleUseToggle.alert', 'MuiAlert', ACCESS_CODE_SINGLE_USE_ALERT_SX),
|
|
123
|
+
entry('AllowedEmailDomainsManager.alert', 'MuiAlert', ALLOWED_EMAIL_DOMAINS_ALERT_SX),
|
|
124
|
+
entry('AllowedEmailDomainsManager.action', 'MuiButton', ALLOWED_EMAIL_DOMAINS_BUTTON_SX),
|
|
125
|
+
entry('AuthFactorRequirementCard.alert', 'MuiAlert', AUTH_FACTOR_REQUIREMENT_ALERT_SX),
|
|
126
|
+
entry('BulkInviteCsvTab.action', 'MuiButton', BULK_INVITE_ACTION_SX),
|
|
127
|
+
entry('BulkInviteCsvTab.alert', 'MuiAlert', BULK_INVITE_ALERT_SX),
|
|
128
|
+
entry('LoginForm.divider', 'MuiDivider', LOGIN_FORM_DIVIDER_SX),
|
|
129
|
+
entry('MFAComponent.alert', 'MuiAlert', MFA_ALERT_SX),
|
|
130
|
+
entry('MFAComponent.card', 'MuiCard', MFA_CARD_SX),
|
|
131
|
+
entry('MFAComponent.activeCard', 'MuiCard', MFA_ACTIVE_CARD_SX),
|
|
132
|
+
entry('MFAComponent.field', 'MuiTextField', MFA_TEXT_FIELD_SX),
|
|
133
|
+
entry('MFAComponent.divider', 'MuiDivider', MFA_DIVIDER_SX),
|
|
134
|
+
entry('MFAComponent.recoveryAction', 'MuiButton', MFA_RECOVERY_BUTTON_SX),
|
|
135
|
+
entry('MfaLoginComponent.alert', 'MuiAlert', MFA_LOGIN_ALERT_SX),
|
|
136
|
+
entry('MfaLoginComponent.divider', 'MuiDivider', MFA_LOGIN_DIVIDER_SX),
|
|
137
|
+
entry('MfaLoginComponent.field', 'MuiTextField', MFA_LOGIN_TEXT_FIELD_SX),
|
|
138
|
+
entry('MobileBottomNav.root', 'MuiBottomNavigation', MOBILE_BOTTOM_NAV_ROOT_SX),
|
|
139
|
+
entry('MobileBottomNav.action', 'MuiBottomNavigationAction', MOBILE_BOTTOM_NAV_ACTION_SX),
|
|
140
|
+
entry('PasskeysComponent.alert', 'MuiAlert', PASSKEYS_ALERT_SX),
|
|
141
|
+
entry('PasskeysComponent.divider', 'MuiDivider', PASSKEYS_DIVIDER_SX),
|
|
142
|
+
entry('QrSignupManager.alert', 'MuiAlert', QR_SIGNUP_MANAGER_ALERT_SX),
|
|
143
|
+
entry('QrSignupValidityManager.alert', 'MuiAlert', QR_SIGNUP_VALIDITY_ALERT_SX),
|
|
144
|
+
entry('QrSignupValidityManager.field', 'MuiTextField', QR_SIGNUP_VALIDITY_FIELD_SX),
|
|
145
|
+
entry('QrSignupValidityManager.action', 'MuiButton', QR_SIGNUP_VALIDITY_BUTTON_SX),
|
|
146
|
+
entry('RegistrationMethodsManager.alert', 'MuiAlert', REGISTRATION_METHODS_ALERT_SX),
|
|
147
|
+
entry('RegistrationMethodsManager.info', 'MuiAlert', REGISTRATION_METHODS_INFO_SX),
|
|
148
|
+
entry('SecurityComponent.alert', 'MuiAlert', SECURITY_ALERT_SX),
|
|
149
|
+
entry('SecurityComponent.divider', 'MuiDivider', SECURITY_DIVIDER_SX),
|
|
150
|
+
entry('SupportRecoveryRequestsTab.agentPaper', 'MuiPaper', SUPPORT_RECOVERY_AGENT_PAPER_SX),
|
|
151
|
+
entry('SupportRecoveryRequestsTab.alert', 'MuiAlert', SUPPORT_RECOVERY_ALERT_SX),
|
|
152
|
+
entry('SupportRecoveryRequestsTab.agentAction', 'MuiButton', SUPPORT_RECOVERY_AGENT_BUTTON_SX),
|
|
153
|
+
entry('UserInviteComponent.action', 'MuiButton', USER_INVITE_ACTION_SX),
|
|
154
|
+
entry('UserInviteComponent.alert', 'MuiAlert', USER_INVITE_ALERT_SX),
|
|
155
|
+
entry('UserListComponent.action', 'MuiButton', USER_LIST_ACTION_SX),
|
|
156
|
+
entry('UserListComponent.alert', 'MuiAlert', USER_LIST_ALERT_SX),
|
|
157
|
+
entry('UserListComponent.headerCell', 'MuiTableCell', USER_LIST_HEADER_CELL_SX),
|
|
158
|
+
entry('UserListComponent.emptyCell', 'MuiTableCell', USER_LIST_EMPTY_CELL_SX),
|
|
159
|
+
entry('UserListComponent.bodyCell', 'MuiTableCell', USER_LIST_BODY_CELL_SX),
|
|
160
|
+
entry('ChartFrame.root', 'MuiPaper', CHART_FRAME_ROOT_SX),
|
|
161
|
+
entry('ChartFrame.alert', 'MuiAlert', CHART_FRAME_ALERT_SX),
|
|
162
|
+
entry('PageLayout.container', 'MuiContainer', PAGE_LAYOUT_CONTAINER_SX),
|
|
163
|
+
entry('AttachmentList.lightboxAction', 'MuiIconButton', ATTACHMENT_LIST_LIGHTBOX_ACTION_SX),
|
|
164
|
+
entry('AttachmentList.alert', 'MuiAlert', ATTACHMENT_LIST_ALERT_SX),
|
|
165
|
+
entry('Composer.emojiAction', 'MuiIconButton', COMPOSER_EMOJI_BUTTON_SX),
|
|
166
|
+
entry('DirectMessageLauncher.alert', 'MuiAlert', DIRECT_MESSAGE_LAUNCHER_ALERT_SX),
|
|
167
|
+
entry('MessageBubble.root', 'MuiPaper', MESSAGE_BUBBLE_ROOT_SX),
|
|
168
|
+
entry('MessageBubble.action', 'MuiIconButton', MESSAGE_BUBBLE_ACTION_SX),
|
|
169
|
+
entry('PollCard.root', 'MuiPaper', POLL_CARD_ROOT_SX),
|
|
170
|
+
entry('PollCard.formControl', 'MuiFormControlLabel', POLL_CARD_FORM_CONTROL_SX),
|
|
171
|
+
entry('PollCard.checkbox', 'MuiCheckbox', POLL_CARD_CHECKBOX_SX),
|
|
172
|
+
entry('Thread.daySeparator', 'MuiDivider', THREAD_DAY_SEPARATOR_SX),
|
|
173
|
+
entry('NotificationSettings.alert', 'MuiAlert', NOTIFICATION_SETTINGS_ALERT_SX),
|
|
174
|
+
entry('NotificationSettings.hintAlert', 'MuiAlert', NOTIFICATION_SETTINGS_HINT_ALERT_SX),
|
|
175
|
+
entry('NotificationSettings.reachAlert', 'MuiAlert', NOTIFICATION_SETTINGS_REACH_ALERT_SX),
|
|
176
|
+
entry('NotificationSettings.formControl', 'MuiFormControlLabel', NOTIFICATION_SETTINGS_FORM_CONTROL_SX),
|
|
177
|
+
entry('NotificationSettings.pushControl', 'MuiFormControlLabel', NOTIFICATION_SETTINGS_PUSH_CONTROL_SX),
|
|
178
|
+
entry('NotificationSettings.categoryControl', 'MuiFormControlLabel', NOTIFICATION_SETTINGS_CATEGORY_CONTROL_SX),
|
|
179
|
+
entry('PopupSurface.dismissAction', 'MuiButton', POPUP_SURFACE_DISMISS_BUTTON_SX),
|
|
180
|
+
entry('BrowserPushStep.formControl', 'MuiFormControlLabel', BROWSER_PUSH_FORM_CONTROL_LABEL_SX),
|
|
181
|
+
entry('AccountPage.sectionPaper', 'MuiPaper', ACCOUNT_PAGE_SECTION_PAPER_SX),
|
|
182
|
+
entry('LoginPage.alert', 'MuiAlert', LOGIN_PAGE_ALERT_SX),
|
|
183
|
+
entry('SignUpPage.alert', 'MuiAlert', SIGN_UP_PAGE_ALERT_SX),
|
|
184
|
+
entry('SignupConfirmPage.alert', 'MuiAlert', SIGNUP_CONFIRM_PAGE_ALERT_SX),
|
|
185
|
+
entry('ReauthModal.alert', 'MuiAlert', REAUTH_MODAL_ALERT_SX),
|
|
186
|
+
entry('ReauthModal.field', 'MuiTextField', REAUTH_MODAL_TEXT_FIELD_SX),
|
|
187
|
+
];
|