Compare commits
4
Commits
Generated
+2102
-10
File diff suppressed because it is too large
Load Diff
+29
-2
@@ -8,6 +8,7 @@
|
||||
},
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"postinstall": "keycloakify sync-extensions",
|
||||
"dev": "vite",
|
||||
"build": "tsc && vite build",
|
||||
"build-keycloak-theme": "npm run build && keycloakify build",
|
||||
@@ -19,7 +20,31 @@
|
||||
"dependencies": {
|
||||
"keycloakify": "^11.15.13",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0"
|
||||
"react-dom": "^18.2.0",
|
||||
"@keycloakify/keycloak-admin-ui": "~260700.0.2",
|
||||
"@dagrejs/dagre": "^1.1.8",
|
||||
"@keycloak/keycloak-admin-client": "26.7.0",
|
||||
"@keycloakify/keycloak-ui-shared": "~260700.0.2",
|
||||
"@patternfly/patternfly": "^5.4.2",
|
||||
"@patternfly/react-core": "^5.4.14",
|
||||
"@patternfly/react-icons": "^5.4.2",
|
||||
"@patternfly/react-styles": "^5.4.1",
|
||||
"@patternfly/react-table": "^5.4.16",
|
||||
"@uiw/react-textarea-code-editor": "^3.1.1",
|
||||
"file-saver": "^2.0.5",
|
||||
"flat": "^6.0.1",
|
||||
"i18next": "^25.7.3",
|
||||
"i18next-fetch-backend": "^7.0.0",
|
||||
"jszip": "^3.10.1",
|
||||
"lodash-es": "^4.18.1",
|
||||
"p-debounce": "^5.1.0",
|
||||
"react-hook-form": "^7.70.0",
|
||||
"react-i18next": "^16.5.1",
|
||||
"react-router-dom": "^6.30.4",
|
||||
"reactflow": "^11.11.4",
|
||||
"yaml": "^2.8.3",
|
||||
"oidc-spa": "~10.2.10",
|
||||
"@keycloakify/email-native": "~260007.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.15.0",
|
||||
@@ -41,7 +66,9 @@
|
||||
"prettier": "3.3.1",
|
||||
"typescript": "^5.2.2",
|
||||
"typescript-eslint": "^8.15.0",
|
||||
"vite": "^5.0.8"
|
||||
"vite": "^5.0.8",
|
||||
"@types/file-saver": "^2.0.7",
|
||||
"@types/lodash-es": "^4.17.12"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.0.0 || >=20.0.0"
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# This file is managed by Keycloakify, do not edit it manually.
|
||||
|
||||
# === Owned files start ===
|
||||
# === Owned files end =====
|
||||
|
||||
# === @keycloakify/keycloak-admin-ui v260700.0.2 ===
|
||||
/admin/early-color-scheme.js
|
||||
+833
@@ -0,0 +1,833 @@
|
||||
# This file is managed by Keycloakify, do not edit it manually.
|
||||
|
||||
# === Owned files start ===
|
||||
# admin/index.css
|
||||
# admin/assets/logo.svg
|
||||
# email/html/template.ftl
|
||||
# === Owned files end =====
|
||||
|
||||
# === @keycloakify/email-native v260007.0.0 ===
|
||||
/email/theme.properties
|
||||
/email/html/email-test.ftl
|
||||
/email/html/email-update-confirmation.ftl
|
||||
/email/html/email-verification-with-code.ftl
|
||||
/email/html/email-verification.ftl
|
||||
/email/html/event-login_error.ftl
|
||||
/email/html/event-remove_credential.ftl
|
||||
/email/html/event-remove_totp.ftl
|
||||
/email/html/event-update_credential.ftl
|
||||
/email/html/event-update_password.ftl
|
||||
/email/html/event-update_totp.ftl
|
||||
/email/html/event-user_disabled_by_permanent_lockout.ftl
|
||||
/email/html/event-user_disabled_by_temporary_lockout.ftl
|
||||
/email/html/executeActions.ftl
|
||||
/email/html/identity-provider-link.ftl
|
||||
/email/html/org-invite.ftl
|
||||
/email/html/password-reset.ftl
|
||||
/email/messages/messages_ar.properties
|
||||
/email/messages/messages_ca.properties
|
||||
/email/messages/messages_cs.properties
|
||||
/email/messages/messages_da.properties
|
||||
/email/messages/messages_de.properties
|
||||
/email/messages/messages_el.properties
|
||||
/email/messages/messages_en.properties
|
||||
/email/messages/messages_es.properties
|
||||
/email/messages/messages_fa.properties
|
||||
/email/messages/messages_fi.properties
|
||||
/email/messages/messages_fr.properties
|
||||
/email/messages/messages_hu.properties
|
||||
/email/messages/messages_it.properties
|
||||
/email/messages/messages_ja.properties
|
||||
/email/messages/messages_ka.properties
|
||||
/email/messages/messages_lt.properties
|
||||
/email/messages/messages_nl.properties
|
||||
/email/messages/messages_no.properties
|
||||
/email/messages/messages_pl.properties
|
||||
/email/messages/messages_pt_BR.properties
|
||||
/email/messages/messages_pt.properties
|
||||
/email/messages/messages_ru.properties
|
||||
/email/messages/messages_sk.properties
|
||||
/email/messages/messages_sv.properties
|
||||
/email/messages/messages_th.properties
|
||||
/email/messages/messages_tr.properties
|
||||
/email/messages/messages_uk.properties
|
||||
/email/messages/messages_zh_CN.properties
|
||||
/email/messages/messages_zh_TW.properties
|
||||
/email/text/email-test.ftl
|
||||
/email/text/email-update-confirmation.ftl
|
||||
/email/text/email-verification-with-code.ftl
|
||||
/email/text/email-verification.ftl
|
||||
/email/text/event-login_error.ftl
|
||||
/email/text/event-remove_credential.ftl
|
||||
/email/text/event-remove_totp.ftl
|
||||
/email/text/event-update_credential.ftl
|
||||
/email/text/event-update_password.ftl
|
||||
/email/text/event-update_totp.ftl
|
||||
/email/text/event-user_disabled_by_permanent_lockout.ftl
|
||||
/email/text/event-user_disabled_by_temporary_lockout.ftl
|
||||
/email/text/executeActions.ftl
|
||||
/email/text/identity-provider-link.ftl
|
||||
/email/text/org-invite.ftl
|
||||
/email/text/password-reset.ftl
|
||||
|
||||
# === @keycloakify/keycloak-admin-ui v260700.0.2 ===
|
||||
/admin/admin-client.tsx
|
||||
/admin/App.tsx
|
||||
/admin/banners.module.css
|
||||
/admin/Banners.tsx
|
||||
/admin/colorScheme.ts
|
||||
/admin/environment-types.ts
|
||||
/admin/environment.ts
|
||||
/admin/ForbiddenSection.tsx
|
||||
/admin/help-urls.ts
|
||||
/admin/i18next.d.ts
|
||||
/admin/KcAdminUi.tsx
|
||||
/admin/KcContext.ts
|
||||
/admin/KcPage.tsx
|
||||
/admin/page-nav.css
|
||||
/admin/PageHeader.tsx
|
||||
/admin/PageHeaderClearCachesModal.tsx
|
||||
/admin/PageNav.tsx
|
||||
/admin/PageNotFoundSection.tsx
|
||||
/admin/Root.tsx
|
||||
/admin/routes.tsx
|
||||
/admin/util.ts
|
||||
/admin/assets/favicon.svg
|
||||
/admin/assets/icon.svg
|
||||
/admin/assets/img_avatar.svg
|
||||
/admin/authentication/AuthenticationSection.tsx
|
||||
/admin/authentication/BindFlowDialog.tsx
|
||||
/admin/authentication/build-in-label.module.css
|
||||
/admin/authentication/BuildInLabel.tsx
|
||||
/admin/authentication/constants.ts
|
||||
/admin/authentication/DuplicateFlowModal.tsx
|
||||
/admin/authentication/EditFlowModal.tsx
|
||||
/admin/authentication/empty-execution-state.css
|
||||
/admin/authentication/EmptyExecutionState.tsx
|
||||
/admin/authentication/execution-model.ts
|
||||
/admin/authentication/FlowDetails.tsx
|
||||
/admin/authentication/RequiredActions.tsx
|
||||
/admin/authentication/routes.ts
|
||||
/admin/client-scopes/ChangeTypeDropdown.tsx
|
||||
/admin/client-scopes/ClientScopesSection.tsx
|
||||
/admin/client-scopes/CreateClientScope.tsx
|
||||
/admin/client-scopes/EditClientScope.tsx
|
||||
/admin/client-scopes/routes.ts
|
||||
/admin/clients/AdvancedTab.tsx
|
||||
/admin/clients/ClientDescription.tsx
|
||||
/admin/clients/ClientDetails.tsx
|
||||
/admin/clients/ClientSessions.tsx
|
||||
/admin/clients/ClientSettings.tsx
|
||||
/admin/clients/ClientsSection.tsx
|
||||
/admin/clients/constants.ts
|
||||
/admin/clients/routes.ts
|
||||
/admin/clients/utils.ts
|
||||
/admin/components/SwitchControl.tsx
|
||||
/admin/context/RecentRealms.tsx
|
||||
/admin/dashboard/dashboard.css
|
||||
/admin/dashboard/Dashboard.tsx
|
||||
/admin/dashboard/ProviderInfo.tsx
|
||||
/admin/dashboard/routes.ts
|
||||
/admin/events/AdminEvents.tsx
|
||||
/admin/events/events.css
|
||||
/admin/events/EventsSection.tsx
|
||||
/admin/events/ResourceLinks.tsx
|
||||
/admin/events/routes.ts
|
||||
/admin/events/UserEvents.tsx
|
||||
/admin/groups/GroupAttributes.tsx
|
||||
/admin/groups/groupIdUtils.ts
|
||||
/admin/groups/GroupRoleMapping.tsx
|
||||
/admin/groups/GroupsModal.tsx
|
||||
/admin/groups/GroupsSection.css
|
||||
/admin/groups/GroupsSection.tsx
|
||||
/admin/groups/GroupTable.tsx
|
||||
/admin/groups/Members.tsx
|
||||
/admin/groups/MembershipsModal.tsx
|
||||
/admin/groups/MembersModal.tsx
|
||||
/admin/groups/routes.ts
|
||||
/admin/groups/SubGroupsContext.tsx
|
||||
/admin/i18n/constants.ts
|
||||
/admin/i18n/i18n.ts
|
||||
/admin/i18n/messages_ca.properties
|
||||
/admin/i18n/messages_cs.properties
|
||||
/admin/i18n/messages_de.properties
|
||||
/admin/i18n/messages_el.properties
|
||||
/admin/i18n/messages_en.properties
|
||||
/admin/i18n/messages_es.properties
|
||||
/admin/i18n/messages_eu.properties
|
||||
/admin/i18n/messages_fr.properties
|
||||
/admin/i18n/messages_hy.properties
|
||||
/admin/i18n/messages_id.properties
|
||||
/admin/i18n/messages_it.properties
|
||||
/admin/i18n/messages_ja.properties
|
||||
/admin/i18n/messages_ka.properties
|
||||
/admin/i18n/messages_kk.properties
|
||||
/admin/i18n/messages_ky.properties
|
||||
/admin/i18n/messages_lt.properties
|
||||
/admin/i18n/messages_nl.properties
|
||||
/admin/i18n/messages_no.properties
|
||||
/admin/i18n/messages_pl.properties
|
||||
/admin/i18n/messages_pt_BR.properties
|
||||
/admin/i18n/messages_ro.properties
|
||||
/admin/i18n/messages_ru.properties
|
||||
/admin/i18n/messages_sl.properties
|
||||
/admin/i18n/messages_sv.properties
|
||||
/admin/i18n/messages_tr.properties
|
||||
/admin/i18n/messages_uk.properties
|
||||
/admin/i18n/messages_vi.properties
|
||||
/admin/i18n/messages_zh_Hans.properties
|
||||
/admin/i18n/messages_zh_Hant.properties
|
||||
/admin/identity-providers/IdentityProvidersSection.tsx
|
||||
/admin/identity-providers/ManageOrderDialog.tsx
|
||||
/admin/identity-providers/OIDCConfigurationRepresentation.ts
|
||||
/admin/identity-providers/routes.ts
|
||||
/admin/organizations/DetailOraganzationHeader.tsx
|
||||
/admin/organizations/DetailOrganization.tsx
|
||||
/admin/organizations/IdentityProviders.tsx
|
||||
/admin/organizations/IdentityProviderSelect.tsx
|
||||
/admin/organizations/Invitations.tsx
|
||||
/admin/organizations/InviteMemberModal.tsx
|
||||
/admin/organizations/LinkIdentityProviderModal.tsx
|
||||
/admin/organizations/Members.tsx
|
||||
/admin/organizations/MembersSection.tsx
|
||||
/admin/organizations/NewOrganization.tsx
|
||||
/admin/organizations/OrganizationForm.tsx
|
||||
/admin/organizations/OrganizationModal.tsx
|
||||
/admin/organizations/OrganizationsSection.tsx
|
||||
/admin/organizations/routes.ts
|
||||
/admin/page/constants.ts
|
||||
/admin/page/Page.tsx
|
||||
/admin/page/PageHandler.tsx
|
||||
/admin/page/PageList.tsx
|
||||
/admin/page/routes.tsx
|
||||
/admin/permissions-configuration/PermissionsConfigurationSection.tsx
|
||||
/admin/permissions-configuration/routes.ts
|
||||
/admin/realm/RealmRoutes.tsx
|
||||
/admin/realm/RealmSection.tsx
|
||||
/admin/realm/routes.ts
|
||||
/admin/realm-roles/CreateRealmRole.tsx
|
||||
/admin/realm-roles/RealmRolesSection.tsx
|
||||
/admin/realm-roles/RealmRoleTabs.tsx
|
||||
/admin/realm-roles/routes.ts
|
||||
/admin/realm-roles/UsersInRoleTab.tsx
|
||||
/admin/realm-settings/AddClientProfileModal.tsx
|
||||
/admin/realm-settings/AddTranslationModal.tsx
|
||||
/admin/realm-settings/ClientProfileForm.tsx
|
||||
/admin/realm-settings/DefaultGroupsTab.tsx
|
||||
/admin/realm-settings/EmailTab.tsx
|
||||
/admin/realm-settings/ExecutorForm.tsx
|
||||
/admin/realm-settings/GeneralTab.tsx
|
||||
/admin/realm-settings/LoginTab.tsx
|
||||
/admin/realm-settings/NewAttributeSettings.tsx
|
||||
/admin/realm-settings/NewClientPolicy.tsx
|
||||
/admin/realm-settings/NewClientPolicyCondition.tsx
|
||||
/admin/realm-settings/partial-export.css
|
||||
/admin/realm-settings/PartialExport.tsx
|
||||
/admin/realm-settings/PartialImport.tsx
|
||||
/admin/realm-settings/PoliciesTab.tsx
|
||||
/admin/realm-settings/ProfilesTab.tsx
|
||||
/admin/realm-settings/realm-settings-section.css
|
||||
/admin/realm-settings/RealmSettingsSection.tsx
|
||||
/admin/realm-settings/RealmSettingsTabs.tsx
|
||||
/admin/realm-settings/routes.ts
|
||||
/admin/realm-settings/SessionsTab.tsx
|
||||
/admin/realm-settings/TokensTab.tsx
|
||||
/admin/realm-settings/UserRegistration.tsx
|
||||
/admin/root/AuthWall.tsx
|
||||
/admin/sessions/RevocationModal.tsx
|
||||
/admin/sessions/routes.ts
|
||||
/admin/sessions/SessionsSection.css
|
||||
/admin/sessions/SessionsSection.tsx
|
||||
/admin/sessions/SessionsTable.tsx
|
||||
/admin/user/CreateUser.tsx
|
||||
/admin/user/EditUser.tsx
|
||||
/admin/user/FederatedUserLink.tsx
|
||||
/admin/user/form-state.ts
|
||||
/admin/user/Organizations.tsx
|
||||
/admin/user/routes.ts
|
||||
/admin/user/user-credentials.css
|
||||
/admin/user/user-section.css
|
||||
/admin/user/UserAttributes.tsx
|
||||
/admin/user/UserConsents.tsx
|
||||
/admin/user/UserCredentials.tsx
|
||||
/admin/user/UserForm.tsx
|
||||
/admin/user/UserGroups.tsx
|
||||
/admin/user/UserIdentityProviderLinks.tsx
|
||||
/admin/user/UserIdPModal.tsx
|
||||
/admin/user/UserRoleMapping.tsx
|
||||
/admin/user/UserSessions.tsx
|
||||
/admin/user/UsersSection.tsx
|
||||
/admin/user/UserVerifiableCredentials.tsx
|
||||
/admin/user/UserWorkflows.tsx
|
||||
/admin/user/utils.ts
|
||||
/admin/user-federation/CreateUserFederationLdapSettings.tsx
|
||||
/admin/user-federation/ManagePriorityDialog.tsx
|
||||
/admin/user-federation/routes.ts
|
||||
/admin/user-federation/user-federation.css
|
||||
/admin/user-federation/UserFederationKerberosSettings.tsx
|
||||
/admin/user-federation/UserFederationKerberosWizard.tsx
|
||||
/admin/user-federation/UserFederationLdapForm.tsx
|
||||
/admin/user-federation/UserFederationLdapSettings.tsx
|
||||
/admin/user-federation/UserFederationLdapWizard.tsx
|
||||
/admin/user-federation/UserFederationSection.tsx
|
||||
/admin/utils/client-url.ts
|
||||
/admin/utils/generateEncodedPath.ts
|
||||
/admin/utils/getAuthorizationHeaders.ts
|
||||
/admin/utils/joinPath.ts
|
||||
/admin/utils/translationFormatter.ts
|
||||
/admin/utils/types.ts
|
||||
/admin/utils/useCurrentUser.ts
|
||||
/admin/utils/useFormatDate.ts
|
||||
/admin/utils/useIsAdminPermissionsClient.ts
|
||||
/admin/utils/useIsFeatureEnabled.ts
|
||||
/admin/utils/useLocale.ts
|
||||
/admin/utils/useLocaleSort.ts
|
||||
/admin/utils/useParams.ts
|
||||
/admin/utils/useQueryPermission.ts
|
||||
/admin/utils/useSortedResourceTypes.ts
|
||||
/admin/utils/useToggle.ts
|
||||
/admin/utils/useUpdateEffect.ts
|
||||
/admin/workflows/routes.ts
|
||||
/admin/workflows/WorkflowDetailForm.tsx
|
||||
/admin/workflows/WorkflowsSection.tsx
|
||||
/admin/assets/theme/login.css
|
||||
/admin/authentication/components/AddFlowDropdown.tsx
|
||||
/admin/authentication/components/AuthenticationProviderContext.tsx
|
||||
/admin/authentication/components/DraggableTable.tsx
|
||||
/admin/authentication/components/EditFlow.tsx
|
||||
/admin/authentication/components/ExecutionConfigModal.tsx
|
||||
/admin/authentication/components/flow-diagram.css
|
||||
/admin/authentication/components/flow-header.css
|
||||
/admin/authentication/components/flow-row.css
|
||||
/admin/authentication/components/FlowDiagram.tsx
|
||||
/admin/authentication/components/FlowHeader.tsx
|
||||
/admin/authentication/components/FlowRequirementDropdown.tsx
|
||||
/admin/authentication/components/FlowRow.tsx
|
||||
/admin/authentication/components/FlowTitle.tsx
|
||||
/admin/authentication/components/RequiredActionConfigModal.tsx
|
||||
/admin/authentication/components/used-by.module.css
|
||||
/admin/authentication/components/UsedBy.tsx
|
||||
/admin/authentication/form/CreateFlow.tsx
|
||||
/admin/authentication/form/NameDescription.tsx
|
||||
/admin/authentication/policies/CibaPolicy.tsx
|
||||
/admin/authentication/policies/otp-policy.css
|
||||
/admin/authentication/policies/OtpPolicy.tsx
|
||||
/admin/authentication/policies/PasswordPolicy.tsx
|
||||
/admin/authentication/policies/Policies.tsx
|
||||
/admin/authentication/policies/policy-row.css
|
||||
/admin/authentication/policies/PolicyRow.tsx
|
||||
/admin/authentication/policies/util.ts
|
||||
/admin/authentication/policies/webauthn-policy.css
|
||||
/admin/authentication/policies/WebauthnPolicy.tsx
|
||||
/admin/authentication/routes/Authentication.tsx
|
||||
/admin/authentication/routes/CreateFlow.tsx
|
||||
/admin/authentication/routes/Flow.tsx
|
||||
/admin/client-scopes/add/MapperDialog.tsx
|
||||
/admin/client-scopes/details/MapperList.tsx
|
||||
/admin/client-scopes/details/MappingDetails.tsx
|
||||
/admin/client-scopes/details/oid4vciAttributes.ts
|
||||
/admin/client-scopes/details/ScopeForm.tsx
|
||||
/admin/client-scopes/details/SearchFilter.tsx
|
||||
/admin/client-scopes/routes/ClientScope.tsx
|
||||
/admin/client-scopes/routes/ClientScopes.tsx
|
||||
/admin/client-scopes/routes/Mapper.tsx
|
||||
/admin/client-scopes/routes/NewClientScope.tsx
|
||||
/admin/clients/__tests__/mock-clients.json
|
||||
/admin/clients/add/AccessSettings.tsx
|
||||
/admin/clients/add/CapabilityConfig.tsx
|
||||
/admin/clients/add/GeneralSettings.tsx
|
||||
/admin/clients/add/LoginSettings.tsx
|
||||
/admin/clients/add/LoginSettingsPanel.tsx
|
||||
/admin/clients/add/LogoutPanel.tsx
|
||||
/admin/clients/add/NewClientForm.tsx
|
||||
/admin/clients/add/SamlConfig.tsx
|
||||
/admin/clients/add/SamlEncryption.tsx
|
||||
/admin/clients/add/SamlSignature.tsx
|
||||
/admin/clients/advanced/AddHostDialog.tsx
|
||||
/admin/clients/advanced/AdvancedSettings.tsx
|
||||
/admin/clients/advanced/ApplicationUrls.tsx
|
||||
/admin/clients/advanced/AuthenticationOverrides.tsx
|
||||
/admin/clients/advanced/ClusteringPanel.tsx
|
||||
/admin/clients/advanced/FineGrainOpenIdConnect.tsx
|
||||
/admin/clients/advanced/FineGrainSamlEndpointConfig.tsx
|
||||
/admin/clients/advanced/OpenIdConnectCompatibilityModes.tsx
|
||||
/admin/clients/advanced/OpenIdVerifiableCredentials.tsx
|
||||
/admin/clients/advanced/TokenLifespan.tsx
|
||||
/admin/clients/authorization/AuthorizationDataModal.tsx
|
||||
/admin/clients/authorization/AuthorizationEvaluate.tsx
|
||||
/admin/clients/authorization/AuthorizationEvaluateResource.tsx
|
||||
/admin/clients/authorization/AuthorizationEvaluateResourcePolicies.tsx
|
||||
/admin/clients/authorization/AuthorizationExport.tsx
|
||||
/admin/clients/authorization/DecisionStrategySelect.tsx
|
||||
/admin/clients/authorization/DeleteScopeDialog.tsx
|
||||
/admin/clients/authorization/detail-cell.css
|
||||
/admin/clients/authorization/DetailCell.tsx
|
||||
/admin/clients/authorization/DetailDescription.tsx
|
||||
/admin/clients/authorization/EmptyPermissionsState.tsx
|
||||
/admin/clients/authorization/ImportDialog.tsx
|
||||
/admin/clients/authorization/key-based-attribute-input.css
|
||||
/admin/clients/authorization/KeyBasedAttributeInput.tsx
|
||||
/admin/clients/authorization/MoreLabel.tsx
|
||||
/admin/clients/authorization/NewPolicyDialog.tsx
|
||||
/admin/clients/authorization/PermissionDetails.tsx
|
||||
/admin/clients/authorization/permissions.css
|
||||
/admin/clients/authorization/Permissions.tsx
|
||||
/admin/clients/authorization/Policies.tsx
|
||||
/admin/clients/authorization/resource-details.css
|
||||
/admin/clients/authorization/ResourceDetails.tsx
|
||||
/admin/clients/authorization/Resources.tsx
|
||||
/admin/clients/authorization/ResourcesPolicySelect.tsx
|
||||
/admin/clients/authorization/ScopeDetails.tsx
|
||||
/admin/clients/authorization/ScopePicker.tsx
|
||||
/admin/clients/authorization/Scopes.tsx
|
||||
/admin/clients/authorization/ScopeSelect.tsx
|
||||
/admin/clients/authorization/search-dropdown.css
|
||||
/admin/clients/authorization/SearchDropdown.tsx
|
||||
/admin/clients/authorization/Settings.tsx
|
||||
/admin/clients/credentials/ClientSecret.tsx
|
||||
/admin/clients/credentials/Credentials.tsx
|
||||
/admin/clients/credentials/SignedJWT.tsx
|
||||
/admin/clients/credentials/X509.tsx
|
||||
/admin/clients/import/ImportForm.tsx
|
||||
/admin/clients/initial-access/AccessTokenDialog.tsx
|
||||
/admin/clients/initial-access/CreateInitialAccessToken.tsx
|
||||
/admin/clients/initial-access/InitialAccessTokenList.tsx
|
||||
/admin/clients/keys/Certificate.tsx
|
||||
/admin/clients/keys/ExportSamlKeyDialog.tsx
|
||||
/admin/clients/keys/GenerateKeyDialog.tsx
|
||||
/admin/clients/keys/ImportKeyDialog.tsx
|
||||
/admin/clients/keys/Keys.tsx
|
||||
/admin/clients/keys/SamlImportKeyDialog.tsx
|
||||
/admin/clients/keys/SamlKeys.tsx
|
||||
/admin/clients/keys/SamlKeysDialog.tsx
|
||||
/admin/clients/keys/StoreSettings.tsx
|
||||
/admin/clients/registration/AddProviderDialog.tsx
|
||||
/admin/clients/registration/ClientRegistration.tsx
|
||||
/admin/clients/registration/ClientRegistrationList.tsx
|
||||
/admin/clients/registration/DetailProvider.tsx
|
||||
/admin/clients/roles/CreateClientRole.tsx
|
||||
/admin/clients/routes/AddClient.tsx
|
||||
/admin/clients/routes/AddRegistrationProvider.tsx
|
||||
/admin/clients/routes/AuthenticationTab.tsx
|
||||
/admin/clients/routes/Client.tsx
|
||||
/admin/clients/routes/ClientRegistration.tsx
|
||||
/admin/clients/routes/ClientRole.tsx
|
||||
/admin/clients/routes/Clients.tsx
|
||||
/admin/clients/routes/ClientScopeTab.tsx
|
||||
/admin/clients/routes/ClientSsfTab.tsx
|
||||
/admin/clients/routes/CreateInitialAccessToken.tsx
|
||||
/admin/clients/routes/DedicatedScopeDetails.tsx
|
||||
/admin/clients/routes/ImportClient.tsx
|
||||
/admin/clients/routes/Mapper.tsx
|
||||
/admin/clients/routes/NewPermission.tsx
|
||||
/admin/clients/routes/NewPolicy.tsx
|
||||
/admin/clients/routes/NewResource.tsx
|
||||
/admin/clients/routes/NewRole.tsx
|
||||
/admin/clients/routes/NewScope.tsx
|
||||
/admin/clients/routes/PermissionConfigurationDetails.tsx
|
||||
/admin/clients/routes/PermissionDetails.tsx
|
||||
/admin/clients/routes/PolicyDetails.tsx
|
||||
/admin/clients/routes/Resource.tsx
|
||||
/admin/clients/routes/Scope.tsx
|
||||
/admin/clients/scopes/AddScopeDialog.tsx
|
||||
/admin/clients/scopes/client-scopes.css
|
||||
/admin/clients/scopes/ClientScopes.tsx
|
||||
/admin/clients/scopes/DedicatedScope.tsx
|
||||
/admin/clients/scopes/DedicatedScopes.tsx
|
||||
/admin/clients/scopes/evaluate.css
|
||||
/admin/clients/scopes/EvaluateScopes.tsx
|
||||
/admin/clients/scopes/GeneratedCodeTab.tsx
|
||||
/admin/clients/service-account/service-account.css
|
||||
/admin/clients/service-account/ServiceAccount.tsx
|
||||
/admin/clients/ssf/SsfTab.tsx
|
||||
/admin/components/bread-crumb/GroupBreadCrumbs.tsx
|
||||
/admin/components/bread-crumb/PageBreadCrumbs.tsx
|
||||
/admin/components/client/ClientSelect.tsx
|
||||
/admin/components/client-scope/ClientScopeTypes.tsx
|
||||
/admin/components/confirm-dialog/ConfirmDialog.tsx
|
||||
/admin/components/copy-to-clipboard-button/CopyToClipboardButton.tsx
|
||||
/admin/components/download-dialog/DownloadDialog.tsx
|
||||
/admin/components/dropdown-panel/dropdown-panel.css
|
||||
/admin/components/dropdown-panel/DropdownPanel.tsx
|
||||
/admin/components/dynamic/BooleanComponent.tsx
|
||||
/admin/components/dynamic/CheckboxFilterComponent.tsx
|
||||
/admin/components/dynamic/ClaimDisplayComponent.tsx
|
||||
/admin/components/dynamic/ClientSelectComponent.tsx
|
||||
/admin/components/dynamic/components.ts
|
||||
/admin/components/dynamic/DynamicComponents.tsx
|
||||
/admin/components/dynamic/FileComponent.tsx
|
||||
/admin/components/dynamic/GroupComponent.tsx
|
||||
/admin/components/dynamic/IdentityProviderMultiSelectComponent.tsx
|
||||
/admin/components/dynamic/IntComponent.tsx
|
||||
/admin/components/dynamic/ListComponent.tsx
|
||||
/admin/components/dynamic/MapComponent.tsx
|
||||
/admin/components/dynamic/MultivaluedListComponent.tsx
|
||||
/admin/components/dynamic/MultivaluedStringComponent.tsx
|
||||
/admin/components/dynamic/NumberComponent.tsx
|
||||
/admin/components/dynamic/PasswordComponent.tsx
|
||||
/admin/components/dynamic/RoleComponent.tsx
|
||||
/admin/components/dynamic/ScriptComponent.tsx
|
||||
/admin/components/dynamic/SearchInputComponent.tsx
|
||||
/admin/components/dynamic/StringComponent.tsx
|
||||
/admin/components/dynamic/TextComponent.tsx
|
||||
/admin/components/dynamic/url-component.css
|
||||
/admin/components/dynamic/UrlComponent.tsx
|
||||
/admin/components/dynamic/UserProfileAttributeListComponent.tsx
|
||||
/admin/components/error/ErrorRenderer.tsx
|
||||
/admin/components/external-link/FormattedLink.tsx
|
||||
/admin/components/form/CodeEditor.tsx
|
||||
/admin/components/form/fixed-buttons.module.css
|
||||
/admin/components/form/FixedButtonGroup.tsx
|
||||
/admin/components/form/FormAccess.tsx
|
||||
/admin/components/group/group-picker-dialog.css
|
||||
/admin/components/group/GroupPath.tsx
|
||||
/admin/components/group/GroupPickerDialog.tsx
|
||||
/admin/components/help-enabler/help-header.css
|
||||
/admin/components/help-enabler/HelpHeader.tsx
|
||||
/admin/components/identity-provider/IdentityProviderSelect.tsx
|
||||
/admin/components/json-file-upload/FileUploadForm.tsx
|
||||
/admin/components/json-file-upload/JsonFileUpload.tsx
|
||||
/admin/components/key-value-form/AttributeForm.css
|
||||
/admin/components/key-value-form/AttributeForm.tsx
|
||||
/admin/components/key-value-form/key-value-convert.ts
|
||||
/admin/components/key-value-form/KeyValueInput.tsx
|
||||
/admin/components/keycloak-card/ClickableCard.tsx
|
||||
/admin/components/keycloak-card/keycloak-card.css
|
||||
/admin/components/keycloak-card/KeycloakCard.tsx
|
||||
/admin/components/multi-line-input/MultiLineInput.tsx
|
||||
/admin/components/permission-tab/permissions-tab.css
|
||||
/admin/components/permission-tab/PermissionTab.tsx
|
||||
/admin/components/realm-loa-mapping/RealmLoAMapping.tsx
|
||||
/admin/components/role-form/RoleForm.tsx
|
||||
/admin/components/role-mapping/AddRoleMappingModal.tsx
|
||||
/admin/components/role-mapping/queries.ts
|
||||
/admin/components/role-mapping/resource.ts
|
||||
/admin/components/role-mapping/role-mapping.css
|
||||
/admin/components/role-mapping/RoleMapping.tsx
|
||||
/admin/components/roles-list/RolesList.css
|
||||
/admin/components/roles-list/RolesList.tsx
|
||||
/admin/components/routable-tabs/RoutableTabs.tsx
|
||||
/admin/components/settings-shortcut/SettingsShortcut.tsx
|
||||
/admin/components/time-selector/TimeSelector.tsx
|
||||
/admin/components/time-selector/TimeSelectorControl.tsx
|
||||
/admin/components/time-selector/TimeSelectorForm.tsx
|
||||
/admin/components/users/UserDataTable.tsx
|
||||
/admin/components/users/UserDataTableAttributeSearchForm.tsx
|
||||
/admin/components/users/UserDataTableToolbarItems.tsx
|
||||
/admin/components/users/UserSelect.tsx
|
||||
/admin/components/view-header/ViewHeader.tsx
|
||||
/admin/components/wizard-section-header/wizard-section-header.css
|
||||
/admin/components/wizard-section-header/WizardSectionHeader.tsx
|
||||
/admin/context/access/Access.tsx
|
||||
/admin/context/auth/admin-ui-endpoint.ts
|
||||
/admin/context/auth/uiRealmInfo.ts
|
||||
/admin/context/group-resource/GroupResourceContext.tsx
|
||||
/admin/context/realm-context/RealmContext.tsx
|
||||
/admin/context/realm-context/useHash.tsx
|
||||
/admin/context/server-info/ServerInfoProvider.tsx
|
||||
/admin/context/whoami/WhoAmI.tsx
|
||||
/admin/dashboard/routes/Dashboard.tsx
|
||||
/admin/events/routes/Events.tsx
|
||||
/admin/groups/__tests__/mock-groups.json
|
||||
/admin/groups/components/CheckableTreeView.tsx
|
||||
/admin/groups/components/DeleteGroup.tsx
|
||||
/admin/groups/components/group-tree.css
|
||||
/admin/groups/components/GroupToolbar.tsx
|
||||
/admin/groups/components/GroupTree.tsx
|
||||
/admin/groups/components/MoveDialog.tsx
|
||||
/admin/groups/routes/Groups.tsx
|
||||
/admin/identity-providers/add/AddDefaultTrust.tsx
|
||||
/admin/identity-providers/add/AddIdentityProvider.tsx
|
||||
/admin/identity-providers/add/AddJWTAuthorizationGrant.tsx
|
||||
/admin/identity-providers/add/AddKubernetesConnect.tsx
|
||||
/admin/identity-providers/add/AddMapper.tsx
|
||||
/admin/identity-providers/add/AddMapperForm.tsx
|
||||
/admin/identity-providers/add/AddOAuth2.tsx
|
||||
/admin/identity-providers/add/AddOpenIdConnect.tsx
|
||||
/admin/identity-providers/add/AddSamlConnect.tsx
|
||||
/admin/identity-providers/add/AddSpiffeConnect.tsx
|
||||
/admin/identity-providers/add/AdvancedSettings.tsx
|
||||
/admin/identity-providers/add/DefaultTrustSettings.tsx
|
||||
/admin/identity-providers/add/DescriptorSettings.tsx
|
||||
/admin/identity-providers/add/DetailSettings.tsx
|
||||
/admin/identity-providers/add/discovery-settings.css
|
||||
/admin/identity-providers/add/DiscoverySettings.tsx
|
||||
/admin/identity-providers/add/ExtendedNonDiscoverySettings.tsx
|
||||
/admin/identity-providers/add/ExtendedOAuth2Settings.tsx
|
||||
/admin/identity-providers/add/GeneralSettings.tsx
|
||||
/admin/identity-providers/add/JwksSettings.tsx
|
||||
/admin/identity-providers/add/JWTAuthorizationGrantAssertionSettings.tsx
|
||||
/admin/identity-providers/add/JWTAuthorizationGrantSettings.tsx
|
||||
/admin/identity-providers/add/KubernetesSettings.tsx
|
||||
/admin/identity-providers/add/OAuth2UserProfileClaimsSettings.tsx
|
||||
/admin/identity-providers/add/OIDCAuthentication.tsx
|
||||
/admin/identity-providers/add/OIDCGeneralSettings.tsx
|
||||
/admin/identity-providers/add/OpenIdConnectSettings.tsx
|
||||
/admin/identity-providers/add/ReqAuthnConstraintsSettings.tsx
|
||||
/admin/identity-providers/add/saml-general-settings.css
|
||||
/admin/identity-providers/add/SamlConnectSettings.tsx
|
||||
/admin/identity-providers/add/SamlGeneralSettings.tsx
|
||||
/admin/identity-providers/add/SpiffeSettings.tsx
|
||||
/admin/identity-providers/component/ClientIdSecret.tsx
|
||||
/admin/identity-providers/component/DiscoveryEndpointField.tsx
|
||||
/admin/identity-providers/component/DisplayOrder.tsx
|
||||
/admin/identity-providers/component/FormGroupField.tsx
|
||||
/admin/identity-providers/component/RedirectUrl.tsx
|
||||
/admin/identity-providers/component/SwitchField.tsx
|
||||
/admin/identity-providers/component/TextField.tsx
|
||||
/admin/identity-providers/routes/AddMapper.tsx
|
||||
/admin/identity-providers/routes/EditMapper.tsx
|
||||
/admin/identity-providers/routes/IdentityProvider.tsx
|
||||
/admin/identity-providers/routes/IdentityProviderCreate.tsx
|
||||
/admin/identity-providers/routes/IdentityProviderDefaultTrust.tsx
|
||||
/admin/identity-providers/routes/IdentityProviderJWTAuthorizationGrant.tsx
|
||||
/admin/identity-providers/routes/IdentityProviderKeycloakOidc.tsx
|
||||
/admin/identity-providers/routes/IdentityProviderKubernetes.tsx
|
||||
/admin/identity-providers/routes/IdentityProviderOAuth2.tsx
|
||||
/admin/identity-providers/routes/IdentityProviderOidc.tsx
|
||||
/admin/identity-providers/routes/IdentityProviders.tsx
|
||||
/admin/identity-providers/routes/IdentityProviderSaml.tsx
|
||||
/admin/identity-providers/routes/IdentityProviderSpiffe.tsx
|
||||
/admin/organizations/routes/AddOrganization.tsx
|
||||
/admin/organizations/routes/EditOrganization.tsx
|
||||
/admin/organizations/routes/Organizations.tsx
|
||||
/admin/permissions-configuration/permission-configuration/AssignedPolicies.tsx
|
||||
/admin/permissions-configuration/permission-configuration/AuthorizationScopesDetails.tsx
|
||||
/admin/permissions-configuration/permission-configuration/ExistingPoliciesDialog.tsx
|
||||
/admin/permissions-configuration/permission-configuration/NewPermissionConfigurationDialog.tsx
|
||||
/admin/permissions-configuration/permission-configuration/NewPermissionPolicyDialog.tsx
|
||||
/admin/permissions-configuration/permission-configuration/PermissionConfigurationDetails.tsx
|
||||
/admin/permissions-configuration/permission-configuration/PermissionsConfigurationTab.tsx
|
||||
/admin/permissions-configuration/permission-evaluation/PermissionEvaluationResult.tsx
|
||||
/admin/permissions-configuration/permission-evaluation/PermissionsEvaluationTab.tsx
|
||||
/admin/permissions-configuration/resource-types/ClientSelectComponent.tsx
|
||||
/admin/permissions-configuration/resource-types/GroupSelect.tsx
|
||||
/admin/permissions-configuration/resource-types/ResourceType.tsx
|
||||
/admin/permissions-configuration/resource-types/RoleSelect.tsx
|
||||
/admin/permissions-configuration/resource-types/SearchDropdown.tsx
|
||||
/admin/permissions-configuration/routes/NewPermissionConfiguration.tsx
|
||||
/admin/permissions-configuration/routes/NewPermissionPolicy.tsx
|
||||
/admin/permissions-configuration/routes/PermissionConfigurationDetails.tsx
|
||||
/admin/permissions-configuration/routes/PermissionPolicyDetails.tsx
|
||||
/admin/permissions-configuration/routes/PermissionsConfiguration.tsx
|
||||
/admin/permissions-configuration/routes/PermissionsConfigurationTabs.tsx
|
||||
/admin/permissions-configuration/routes/PermissionsPolicies.tsx
|
||||
/admin/realm/add/NewRealmForm.tsx
|
||||
/admin/realm-roles/__tests__/mock-roles.json
|
||||
/admin/realm-roles/routes/AddRole.tsx
|
||||
/admin/realm-roles/routes/RealmRole.tsx
|
||||
/admin/realm-roles/routes/RealmRoles.tsx
|
||||
/admin/realm-settings/event-config/AddEventTypesDialog.tsx
|
||||
/admin/realm-settings/event-config/EventConfigForm.tsx
|
||||
/admin/realm-settings/event-config/EventListenersForm.tsx
|
||||
/admin/realm-settings/event-config/EventsTab.tsx
|
||||
/admin/realm-settings/event-config/EventsTypeTable.tsx
|
||||
/admin/realm-settings/keys/KeysListTab.tsx
|
||||
/admin/realm-settings/keys/KeysProvidersTab.tsx
|
||||
/admin/realm-settings/keys/KeysTab.tsx
|
||||
/admin/realm-settings/localization/EffectiveMessageBundles.tsx
|
||||
/admin/realm-settings/localization/LocalizationTab.tsx
|
||||
/admin/realm-settings/localization/RealmOverrides.tsx
|
||||
/admin/realm-settings/routes/AddAttribute.tsx
|
||||
/admin/realm-settings/routes/AddClientPolicy.tsx
|
||||
/admin/realm-settings/routes/AddClientProfile.tsx
|
||||
/admin/realm-settings/routes/AddCondition.tsx
|
||||
/admin/realm-settings/routes/AddExecutor.tsx
|
||||
/admin/realm-settings/routes/Attribute.tsx
|
||||
/admin/realm-settings/routes/ClientPolicies.tsx
|
||||
/admin/realm-settings/routes/ClientProfile.tsx
|
||||
/admin/realm-settings/routes/EditAttributesGroup.tsx
|
||||
/admin/realm-settings/routes/EditClientPolicy.tsx
|
||||
/admin/realm-settings/routes/EditCondition.tsx
|
||||
/admin/realm-settings/routes/Executor.tsx
|
||||
/admin/realm-settings/routes/KeyProvider.tsx
|
||||
/admin/realm-settings/routes/KeysTab.tsx
|
||||
/admin/realm-settings/routes/NewAttributesGroup.tsx
|
||||
/admin/realm-settings/routes/RealmSettings.tsx
|
||||
/admin/realm-settings/routes/ThemesTab.tsx
|
||||
/admin/realm-settings/routes/UserProfile.tsx
|
||||
/admin/realm-settings/security-defences/BruteForceDetection.tsx
|
||||
/admin/realm-settings/security-defences/HeadersForm.tsx
|
||||
/admin/realm-settings/security-defences/HelpLinkTextInput.tsx
|
||||
/admin/realm-settings/security-defences/security-defences.css
|
||||
/admin/realm-settings/security-defences/SecurityDefenses.tsx
|
||||
/admin/realm-settings/security-defences/Time.tsx
|
||||
/admin/realm-settings/ssf/SsfTransmitterDisableConfirmDialog.tsx
|
||||
/admin/realm-settings/themes/BackgroundContext.tsx
|
||||
/admin/realm-settings/themes/ColorControl.tsx
|
||||
/admin/realm-settings/themes/DefaultColorAccordion.tsx
|
||||
/admin/realm-settings/themes/FileNameDialog.tsx
|
||||
/admin/realm-settings/themes/fileUtils.ts
|
||||
/admin/realm-settings/themes/ImageUpload.tsx
|
||||
/admin/realm-settings/themes/LoginPreviewWindow.tsx
|
||||
/admin/realm-settings/themes/LogoContext.tsx
|
||||
/admin/realm-settings/themes/PatternflyVars.ts
|
||||
/admin/realm-settings/themes/PreviewWindow.tsx
|
||||
/admin/realm-settings/themes/QuickTheme.tsx
|
||||
/admin/realm-settings/themes/ThemeColors.tsx
|
||||
/admin/realm-settings/themes/ThemeSettings.tsx
|
||||
/admin/realm-settings/themes/ThemesTab.tsx
|
||||
/admin/realm-settings/themes/UploadJar.tsx
|
||||
/admin/realm-settings/user-profile/AttributesGroupDetails.tsx
|
||||
/admin/realm-settings/user-profile/AttributesGroupForm.tsx
|
||||
/admin/realm-settings/user-profile/AttributesGroupTab.tsx
|
||||
/admin/realm-settings/user-profile/AttributesTab.tsx
|
||||
/admin/realm-settings/user-profile/JsonEditorTab.tsx
|
||||
/admin/realm-settings/user-profile/UserProfileContext.tsx
|
||||
/admin/realm-settings/user-profile/UserProfileTab.tsx
|
||||
/admin/sessions/routes/Sessions.tsx
|
||||
/admin/user/details/SearchFilter.tsx
|
||||
/admin/user/routes/AddUser.tsx
|
||||
/admin/user/routes/User.tsx
|
||||
/admin/user/routes/Users.tsx
|
||||
/admin/user/user-credentials/CredentialDataDialog.tsx
|
||||
/admin/user/user-credentials/CredentialRow.tsx
|
||||
/admin/user/user-credentials/InlineLabelEdit.tsx
|
||||
/admin/user/user-credentials/LifespanField.tsx
|
||||
/admin/user/user-credentials/RequiredActionMultiSelect.tsx
|
||||
/admin/user/user-credentials/ResetCredentialDialog.tsx
|
||||
/admin/user/user-credentials/ResetPasswordDialog.tsx
|
||||
/admin/user/utils/user-profile.ts
|
||||
/admin/user/verifiable-credentials/CreateVerifiableCredentialModal.tsx
|
||||
/admin/user/verifiable-credentials/IssuedCredentialsDetailCell.tsx
|
||||
/admin/user/verifiable-credentials/UserAttributesDialog.tsx
|
||||
/admin/user/verifiable-credentials/UserVerifiableCredentialOfferDialog.tsx
|
||||
/admin/user-federation/custom/custom-provider-settings.css
|
||||
/admin/user-federation/custom/CustomProviderSettings.tsx
|
||||
/admin/user-federation/custom/SyncSettings.tsx
|
||||
/admin/user-federation/kerberos/KerberosSettingsRequired.tsx
|
||||
/admin/user-federation/ldap/LdapSettingsAdvanced.tsx
|
||||
/admin/user-federation/ldap/LdapSettingsConnection.tsx
|
||||
/admin/user-federation/ldap/LdapSettingsGeneral.tsx
|
||||
/admin/user-federation/ldap/LdapSettingsKerberosIntegration.tsx
|
||||
/admin/user-federation/ldap/LdapSettingsSearching.tsx
|
||||
/admin/user-federation/ldap/LdapSettingsSynchronization.tsx
|
||||
/admin/user-federation/routes/CustomUserFederation.tsx
|
||||
/admin/user-federation/routes/NewCustomUserFederation.tsx
|
||||
/admin/user-federation/routes/NewKerberosUserFederation.tsx
|
||||
/admin/user-federation/routes/NewLdapUserFederation.tsx
|
||||
/admin/user-federation/routes/UserFederation.tsx
|
||||
/admin/user-federation/routes/UserFederationKerberos.tsx
|
||||
/admin/user-federation/routes/UserFederationLdap.tsx
|
||||
/admin/user-federation/routes/UserFederationLdapMapper.tsx
|
||||
/admin/user-federation/routes/UserFederationsKerberos.tsx
|
||||
/admin/user-federation/routes/UserFederationsLdap.tsx
|
||||
/admin/user-federation/shared/ExtendedHeader.tsx
|
||||
/admin/user-federation/shared/Header.tsx
|
||||
/admin/user-federation/shared/SettingsCache.tsx
|
||||
/admin/workflows/routes/WorkflowDetail.tsx
|
||||
/admin/workflows/routes/Workflows.tsx
|
||||
/admin/authentication/components/diagram/auto-layout.ts
|
||||
/admin/authentication/components/diagram/ButtonEdge.tsx
|
||||
/admin/authentication/components/diagram/ConditionalNode.tsx
|
||||
/admin/authentication/components/diagram/SubFlowNode.tsx
|
||||
/admin/authentication/components/modals/AddStepModal.tsx
|
||||
/admin/authentication/components/modals/AddSubFlowModal.tsx
|
||||
/admin/clients/add/__tests__/mock-serverinfo.json
|
||||
/admin/clients/authorization/evaluate/Results.tsx
|
||||
/admin/clients/authorization/policy/Aggregate.tsx
|
||||
/admin/clients/authorization/policy/Client.tsx
|
||||
/admin/clients/authorization/policy/ClientScope.tsx
|
||||
/admin/clients/authorization/policy/Group.tsx
|
||||
/admin/clients/authorization/policy/JavaScript.tsx
|
||||
/admin/clients/authorization/policy/LogicSelector.tsx
|
||||
/admin/clients/authorization/policy/NameDescription.tsx
|
||||
/admin/clients/authorization/policy/policy-details.css
|
||||
/admin/clients/authorization/policy/PolicyDetails.tsx
|
||||
/admin/clients/authorization/policy/Regex.tsx
|
||||
/admin/clients/authorization/policy/Role.tsx
|
||||
/admin/clients/authorization/policy/Time.tsx
|
||||
/admin/clients/authorization/policy/User.tsx
|
||||
/admin/clients/ssf/tabs/EmitEventsTab.tsx
|
||||
/admin/clients/ssf/tabs/EventSearchTab.tsx
|
||||
/admin/clients/ssf/tabs/ReceiverTab.tsx
|
||||
/admin/clients/ssf/tabs/StreamTab.tsx
|
||||
/admin/clients/ssf/tabs/SubjectsTab.tsx
|
||||
/admin/context/server-info/__tests__/mock.json
|
||||
/admin/realm-settings/keys/key-providers/key-provider-modal.module.css
|
||||
/admin/realm-settings/keys/key-providers/KeyProviderForm.tsx
|
||||
/admin/realm-settings/keys/key-providers/KeyProviderModal.tsx
|
||||
/admin/realm-settings/keys/key-providers/KeyProvidersPicker.tsx
|
||||
/admin/realm-settings/user-profile/attribute/AddTranslationsDialog.tsx
|
||||
/admin/realm-settings/user-profile/attribute/AddValidatorDialog.tsx
|
||||
/admin/realm-settings/user-profile/attribute/AttributeAnnotations.tsx
|
||||
/admin/realm-settings/user-profile/attribute/AttributeGeneralSettings.tsx
|
||||
/admin/realm-settings/user-profile/attribute/AttributePermission.tsx
|
||||
/admin/realm-settings/user-profile/attribute/AttributeScimSettings.tsx
|
||||
/admin/realm-settings/user-profile/attribute/AttributeValidations.tsx
|
||||
/admin/realm-settings/user-profile/attribute/KeySelect.tsx
|
||||
/admin/realm-settings/user-profile/attribute/TranslatableField.tsx
|
||||
/admin/realm-settings/user-profile/attribute/ValidatorSelect.tsx
|
||||
/admin/realm-settings/user-profile/attribute/ValueSelect.tsx
|
||||
/admin/user-federation/ldap/mappers/LdapMapperDetails.tsx
|
||||
/admin/user-federation/ldap/mappers/LdapMapperList.tsx
|
||||
|
||||
# === @keycloakify/keycloak-ui-shared v260700.0.2 ===
|
||||
/shared/SessionExpirationWarningOverlay.tsx
|
||||
/shared/keycloak-ui-shared/index.ts
|
||||
/shared/keycloak-ui-shared/main.ts
|
||||
/shared/@patternfly/react-core/index.tsx
|
||||
/shared/@patternfly/react-icons/index.tsx
|
||||
/shared/@patternfly/react-styles/index.tsx
|
||||
/shared/@patternfly/react-table/index.tsx
|
||||
/shared/keycloak-ui-shared/alerts/AlertPanel.tsx
|
||||
/shared/keycloak-ui-shared/alerts/Alerts.tsx
|
||||
/shared/keycloak-ui-shared/buttons/FormSubmitButton.tsx
|
||||
/shared/keycloak-ui-shared/context/environment.ts
|
||||
/shared/keycloak-ui-shared/context/ErrorPage.tsx
|
||||
/shared/keycloak-ui-shared/context/HelpContext.tsx
|
||||
/shared/keycloak-ui-shared/context/KeycloakContext.tsx
|
||||
/shared/keycloak-ui-shared/continue-cancel/ContinueCancelModal.tsx
|
||||
/shared/keycloak-ui-shared/controls/FileUploadControl.tsx
|
||||
/shared/keycloak-ui-shared/controls/FormErrorText.tsx
|
||||
/shared/keycloak-ui-shared/controls/FormLabel.tsx
|
||||
/shared/keycloak-ui-shared/controls/HelpItem.tsx
|
||||
/shared/keycloak-ui-shared/controls/KeycloakSpinner.tsx
|
||||
/shared/keycloak-ui-shared/controls/NumberControl.tsx
|
||||
/shared/keycloak-ui-shared/controls/OrganizationTable.tsx
|
||||
/shared/keycloak-ui-shared/controls/PasswordControl.tsx
|
||||
/shared/keycloak-ui-shared/controls/PasswordInput.tsx
|
||||
/shared/keycloak-ui-shared/controls/SwitchControl.tsx
|
||||
/shared/keycloak-ui-shared/controls/TextAreaControl.tsx
|
||||
/shared/keycloak-ui-shared/controls/TextControl.tsx
|
||||
/shared/keycloak-ui-shared/icons/IconMapper.tsx
|
||||
/shared/keycloak-ui-shared/masthead/DefaultAvatar.tsx
|
||||
/shared/keycloak-ui-shared/masthead/KeycloakDropdown.tsx
|
||||
/shared/keycloak-ui-shared/masthead/Masthead.tsx
|
||||
/shared/keycloak-ui-shared/scroll-form/form-title.module.css
|
||||
/shared/keycloak-ui-shared/scroll-form/FormPanel.tsx
|
||||
/shared/keycloak-ui-shared/scroll-form/FormTitle.tsx
|
||||
/shared/keycloak-ui-shared/scroll-form/scroll-form.module.css
|
||||
/shared/keycloak-ui-shared/scroll-form/ScrollForm.tsx
|
||||
/shared/keycloak-ui-shared/scroll-form/ScrollPanel.tsx
|
||||
/shared/keycloak-ui-shared/select/KeycloakSelect.tsx
|
||||
/shared/keycloak-ui-shared/select/SingleSelect.tsx
|
||||
/shared/keycloak-ui-shared/select/TypeaheadSelect.tsx
|
||||
/shared/keycloak-ui-shared/user-profile/LocaleSelector.tsx
|
||||
/shared/keycloak-ui-shared/user-profile/MultiInputComponent.tsx
|
||||
/shared/keycloak-ui-shared/user-profile/OptionsComponent.tsx
|
||||
/shared/keycloak-ui-shared/user-profile/SelectComponent.tsx
|
||||
/shared/keycloak-ui-shared/user-profile/TextAreaComponent.tsx
|
||||
/shared/keycloak-ui-shared/user-profile/TextComponent.tsx
|
||||
/shared/keycloak-ui-shared/user-profile/UserProfileFields.tsx
|
||||
/shared/keycloak-ui-shared/user-profile/UserProfileGroup.tsx
|
||||
/shared/keycloak-ui-shared/user-profile/utils.ts
|
||||
/shared/keycloak-ui-shared/utils/createNamedContext.ts
|
||||
/shared/keycloak-ui-shared/utils/ErrorBoundary.tsx
|
||||
/shared/keycloak-ui-shared/utils/errors.ts
|
||||
/shared/keycloak-ui-shared/utils/generateId.ts
|
||||
/shared/keycloak-ui-shared/utils/getRuleValue.ts
|
||||
/shared/keycloak-ui-shared/utils/isDefined.ts
|
||||
/shared/keycloak-ui-shared/utils/useFetch.ts
|
||||
/shared/keycloak-ui-shared/utils/useRequiredContext.ts
|
||||
/shared/keycloak-ui-shared/utils/useSetTimeout.ts
|
||||
/shared/keycloak-ui-shared/utils/useStorageItem.ts
|
||||
/shared/keycloak-ui-shared/utils/useStoredState.ts
|
||||
/shared/keycloak-ui-shared/controls/keycloak-text-area/KeycloakTextArea.tsx
|
||||
/shared/keycloak-ui-shared/controls/select-control/SelectControl.tsx
|
||||
/shared/keycloak-ui-shared/controls/select-control/SingleSelectControl.tsx
|
||||
/shared/keycloak-ui-shared/controls/select-control/TypeaheadSelectControl.tsx
|
||||
/shared/keycloak-ui-shared/controls/table/KeycloakDataTable.tsx
|
||||
/shared/keycloak-ui-shared/controls/table/ListEmptyState.tsx
|
||||
/shared/keycloak-ui-shared/controls/table/PaginatingTableToolbar.tsx
|
||||
/shared/keycloak-ui-shared/controls/table/TableToolbar.tsx
|
||||
@@ -0,0 +1,12 @@
|
||||
/* eslint-disable @typescript-eslint/ban-types */
|
||||
import type { ExtendKcContext } from "keycloakify/account";
|
||||
import type { KcEnvName, ThemeName } from "../kc.gen";
|
||||
|
||||
export type KcContextExtension = {
|
||||
themeName: ThemeName;
|
||||
properties: Record<KcEnvName, string> & {};
|
||||
};
|
||||
|
||||
export type KcContextExtensionPerPage = {};
|
||||
|
||||
export type KcContext = ExtendKcContext<KcContextExtension, KcContextExtensionPerPage>;
|
||||
@@ -0,0 +1,47 @@
|
||||
import { Suspense } from "react";
|
||||
import type { ClassKey } from "keycloakify/account";
|
||||
import type { KcContext } from "./KcContext";
|
||||
import { useI18n } from "./i18n";
|
||||
import DefaultPage from "keycloakify/account/DefaultPage";
|
||||
import Template from "./Template";
|
||||
import "./theme.css";
|
||||
|
||||
export default function KcPage(props: { kcContext: KcContext }) {
|
||||
const { kcContext } = props;
|
||||
|
||||
const { i18n } = useI18n({ kcContext });
|
||||
|
||||
return (
|
||||
<Suspense>
|
||||
{(() => {
|
||||
switch (kcContext.pageId) {
|
||||
default:
|
||||
return (
|
||||
<DefaultPage
|
||||
kcContext={kcContext}
|
||||
i18n={i18n}
|
||||
classes={classes}
|
||||
Template={Template}
|
||||
doUseDefaultCss={false}
|
||||
/>
|
||||
);
|
||||
}
|
||||
})()}
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
|
||||
const classes = {
|
||||
kcHtmlClass: "nexus-account-html",
|
||||
kcBodyClass: "nexus-account-body",
|
||||
kcButtonClass: "nexus-account-button",
|
||||
kcButtonPrimaryClass: "nexus-account-button--primary",
|
||||
kcButtonDefaultClass: "nexus-account-button--default",
|
||||
kcButtonLargeClass: "nexus-account-button--large",
|
||||
kcFormClass: "nexus-account-form",
|
||||
kcFormGroupClass: "nexus-account-field",
|
||||
kcLabelClass: "nexus-account-label",
|
||||
kcInputClass: "nexus-account-input",
|
||||
kcInputWrapperClass: "nexus-account-input-wrapper",
|
||||
kcInputErrorMessageClass: "nexus-account-field-error"
|
||||
} satisfies { [key in ClassKey]?: string };
|
||||
@@ -0,0 +1,38 @@
|
||||
import type { DeepPartial } from "keycloakify/tools/DeepPartial";
|
||||
import type { KcContext } from "./KcContext";
|
||||
import { createGetKcContextMock } from "keycloakify/account/KcContext";
|
||||
import type { KcContextExtension, KcContextExtensionPerPage } from "./KcContext";
|
||||
import KcPage from "./KcPage";
|
||||
import { themeNames, kcEnvDefaults } from "../kc.gen";
|
||||
|
||||
const kcContextExtension: KcContextExtension = {
|
||||
themeName: themeNames[0],
|
||||
properties: {
|
||||
...kcEnvDefaults
|
||||
}
|
||||
};
|
||||
const kcContextExtensionPerPage: KcContextExtensionPerPage = {};
|
||||
|
||||
export const { getKcContextMock } = createGetKcContextMock({
|
||||
kcContextExtension,
|
||||
kcContextExtensionPerPage,
|
||||
overrides: {},
|
||||
overridesPerPage: {}
|
||||
});
|
||||
|
||||
export function createKcPageStory<PageId extends KcContext["pageId"]>(params: { pageId: PageId }) {
|
||||
const { pageId } = params;
|
||||
|
||||
function KcPageStory(props: { kcContext?: DeepPartial<Extract<KcContext, { pageId: PageId }>> }) {
|
||||
const { kcContext: overrides } = props;
|
||||
|
||||
const kcContextMock = getKcContextMock({
|
||||
pageId,
|
||||
overrides
|
||||
});
|
||||
|
||||
return <KcPage kcContext={kcContextMock} />;
|
||||
}
|
||||
|
||||
return { KcPageStory };
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
import { useEffect } from "react";
|
||||
import { clsx } from "keycloakify/tools/clsx";
|
||||
import { kcSanitize } from "keycloakify/lib/kcSanitize";
|
||||
import { getKcClsx } from "keycloakify/account/lib/kcClsx";
|
||||
import { useSetClassName } from "keycloakify/tools/useSetClassName";
|
||||
import { useInitialize } from "keycloakify/account/Template.useInitialize";
|
||||
import type { TemplateProps } from "keycloakify/account/TemplateProps";
|
||||
import type { I18n } from "./i18n";
|
||||
import type { KcContext } from "./KcContext";
|
||||
|
||||
export default function Template(props: TemplateProps<KcContext, I18n>) {
|
||||
const { kcContext, i18n, doUseDefaultCss, active, classes, children } = props;
|
||||
const { kcClsx } = getKcClsx({ doUseDefaultCss, classes });
|
||||
const { msg, msgStr, currentLanguage, enabledLanguages } = i18n;
|
||||
const { url, features, realm, message, referrer } = kcContext;
|
||||
|
||||
useEffect(() => {
|
||||
document.title = msgStr("accountManagementTitle");
|
||||
}, [msgStr]);
|
||||
|
||||
useSetClassName({ qualifiedName: "html", className: kcClsx("kcHtmlClass") });
|
||||
useSetClassName({ qualifiedName: "body", className: kcClsx("kcBodyClass") });
|
||||
|
||||
const { isReadyToRender } = useInitialize({ kcContext, doUseDefaultCss });
|
||||
|
||||
if (!isReadyToRender) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const navigationItems = [
|
||||
{ id: "account", href: url.accountUrl, label: msg("account"), visible: true },
|
||||
{ id: "password", href: url.passwordUrl, label: msg("password"), visible: features.passwordUpdateSupported },
|
||||
{ id: "totp", href: url.totpUrl, label: msg("authenticator"), visible: true },
|
||||
{ id: "social", href: url.socialUrl, label: msg("federatedIdentity"), visible: features.identityFederation },
|
||||
{ id: "sessions", href: url.sessionsUrl, label: msg("sessions"), visible: true },
|
||||
{ id: "applications", href: url.applicationsUrl, label: msg("applications"), visible: true },
|
||||
{ id: "log", href: url.logUrl, label: msg("log"), visible: features.log },
|
||||
{
|
||||
id: "authorization",
|
||||
href: url.resourceUrl,
|
||||
label: msg("myResources"),
|
||||
visible: realm.userManagedAccessAllowed && features.authorization
|
||||
}
|
||||
].filter(item => item.visible);
|
||||
|
||||
return (
|
||||
<div className="nexus-account-shell">
|
||||
<header className="nexus-account-header">
|
||||
<a className="nexus-account-brand" href={url.accountUrl} aria-label={msgStr("accountManagementTitle")}>
|
||||
<span className="nexus-account-brand__mark">N</span>
|
||||
<span>
|
||||
NEXUS <b>/ ID</b>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<div className="nexus-account-header__realm">
|
||||
<span>IDENTITY CONTROL</span>
|
||||
<strong>{msg("accountManagementTitle")}</strong>
|
||||
</div>
|
||||
|
||||
<nav className="nexus-account-utility" aria-label="Account utilities">
|
||||
{enabledLanguages.length > 1 && (
|
||||
<details className="nexus-account-language">
|
||||
<summary>{currentLanguage.label}</summary>
|
||||
<ul>
|
||||
{enabledLanguages.map(({ languageTag, label, href }) => (
|
||||
<li key={languageTag}>
|
||||
<a href={href}>{label}</a>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</details>
|
||||
)}
|
||||
{referrer?.url && (
|
||||
<a href={referrer.url} id="referrer">
|
||||
{msg("backTo", referrer.name)}
|
||||
</a>
|
||||
)}
|
||||
<a className="nexus-account-signout" href={url.getLogoutUrl()}>
|
||||
{msg("doSignOut")}
|
||||
</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<div className="nexus-account-layout">
|
||||
<aside className="nexus-account-sidebar">
|
||||
<div className="nexus-account-orbit" aria-hidden="true">
|
||||
<span />
|
||||
</div>
|
||||
<p className="nexus-account-sidebar__label">ACCOUNT MATRIX</p>
|
||||
<nav aria-label={msgStr("accountManagementTitle")}>
|
||||
<ul>
|
||||
{navigationItems.map(item => (
|
||||
<li key={item.id} className={clsx(active === item.id && "active")}>
|
||||
<a href={item.href}>
|
||||
<span className="nexus-account-nav__signal" />
|
||||
{item.label}
|
||||
</a>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</nav>
|
||||
<div className="nexus-account-sidebar__status">
|
||||
<span /> SECURE SESSION
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<main className="nexus-account-content" id="nexus-account-main">
|
||||
{message !== undefined && (
|
||||
<div className={clsx("nexus-account-alert", `nexus-account-alert--${message.type}`)} role="status">
|
||||
<span className="nexus-account-alert__signal" />
|
||||
<span
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: kcSanitize(message.summary)
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
<section className="nexus-account-panel">{children}</section>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
import { i18nBuilder } from "keycloakify/account";
|
||||
import type { ThemeName } from "../kc.gen";
|
||||
|
||||
/** @see: https://docs.keycloakify.dev/features/i18n */
|
||||
const { useI18n, ofTypeI18n } = i18nBuilder.withThemeName<ThemeName>().build();
|
||||
|
||||
type I18n = typeof ofTypeI18n;
|
||||
|
||||
export { useI18n, type I18n };
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Meta, StoryObj } from "@storybook/react";
|
||||
import { createKcPageStory } from "../KcPageStory";
|
||||
|
||||
const { KcPageStory } = createKcPageStory({ pageId: "account.ftl" });
|
||||
|
||||
const meta = {
|
||||
title: "account/account.ftl",
|
||||
component: KcPageStory
|
||||
} satisfies Meta<typeof KcPageStory>;
|
||||
|
||||
export default meta;
|
||||
|
||||
type Story = StoryObj<typeof meta>;
|
||||
|
||||
export const Default: Story = {
|
||||
render: () => <KcPageStory />
|
||||
};
|
||||
|
||||
export const WithSuccessMessage: Story = {
|
||||
render: () => (
|
||||
<KcPageStory
|
||||
kcContext={{
|
||||
message: {
|
||||
type: "success",
|
||||
summary: "Your account information has been updated."
|
||||
}
|
||||
}}
|
||||
/>
|
||||
)
|
||||
};
|
||||
@@ -0,0 +1,17 @@
|
||||
import type { Meta, StoryObj } from "@storybook/react";
|
||||
import { createKcPageStory } from "../KcPageStory";
|
||||
|
||||
const { KcPageStory } = createKcPageStory({ pageId: "password.ftl" });
|
||||
|
||||
const meta = {
|
||||
title: "account/password.ftl",
|
||||
component: KcPageStory
|
||||
} satisfies Meta<typeof KcPageStory>;
|
||||
|
||||
export default meta;
|
||||
|
||||
type Story = StoryObj<typeof meta>;
|
||||
|
||||
export const Default: Story = {
|
||||
render: () => <KcPageStory />
|
||||
};
|
||||
@@ -0,0 +1,634 @@
|
||||
:root {
|
||||
--nexus-account-void: #050713;
|
||||
--nexus-account-chrome: #091020;
|
||||
--nexus-account-panel: #0f172a;
|
||||
--nexus-account-panel-raised: #141e34;
|
||||
--nexus-account-ice: #63e6ff;
|
||||
--nexus-account-violet: #8b7cff;
|
||||
--nexus-account-text: #f4f7ff;
|
||||
--nexus-account-muted: #95a2be;
|
||||
--nexus-account-line: rgba(151, 172, 219, 0.18);
|
||||
--nexus-account-success: #54e6a4;
|
||||
--nexus-account-danger: #ff668f;
|
||||
--nexus-account-display: "Bahnschrift SemiCondensed", "Arial Narrow", sans-serif;
|
||||
--nexus-account-body-font: "Segoe UI Variable", "Segoe UI", sans-serif;
|
||||
--nexus-account-mono: "Cascadia Code", Consolas, monospace;
|
||||
}
|
||||
|
||||
.nexus-account-html,
|
||||
.nexus-account-body,
|
||||
#root {
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
.nexus-account-body {
|
||||
min-height: 100vh;
|
||||
margin: 0;
|
||||
color: var(--nexus-account-text);
|
||||
background: var(--nexus-account-void);
|
||||
font-family: var(--nexus-account-body-font);
|
||||
font-size: 15px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.nexus-account-body *,
|
||||
.nexus-account-body *::before,
|
||||
.nexus-account-body *::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.nexus-account-body button,
|
||||
.nexus-account-body input,
|
||||
.nexus-account-body select,
|
||||
.nexus-account-body textarea {
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
.nexus-account-body a {
|
||||
color: #a9eefe;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.nexus-account-body a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.nexus-account-shell {
|
||||
min-height: 100vh;
|
||||
background: radial-gradient(
|
||||
circle at 10% 60%,
|
||||
rgba(99, 230, 255, 0.07),
|
||||
transparent 29rem
|
||||
),
|
||||
radial-gradient(circle at 88% 15%, rgba(139, 124, 255, 0.07), transparent 27rem),
|
||||
linear-gradient(rgba(127, 155, 207, 0.028) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(127, 155, 207, 0.028) 1px, transparent 1px),
|
||||
var(--nexus-account-void);
|
||||
background-size:
|
||||
auto,
|
||||
auto,
|
||||
52px 52px,
|
||||
52px 52px,
|
||||
auto;
|
||||
}
|
||||
|
||||
.nexus-account-header {
|
||||
position: sticky;
|
||||
z-index: 20;
|
||||
top: 0;
|
||||
display: grid;
|
||||
min-height: 76px;
|
||||
align-items: center;
|
||||
grid-template-columns: 260px 1fr auto;
|
||||
gap: 28px;
|
||||
padding: 0 clamp(22px, 4vw, 58px);
|
||||
border-bottom: 1px solid var(--nexus-account-line);
|
||||
background: rgba(6, 10, 23, 0.88);
|
||||
backdrop-filter: blur(18px);
|
||||
}
|
||||
|
||||
.nexus-account-brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
color: var(--nexus-account-text) !important;
|
||||
font-family: var(--nexus-account-display);
|
||||
font-size: 0.92rem;
|
||||
font-weight: 650;
|
||||
letter-spacing: 0.18em;
|
||||
}
|
||||
|
||||
.nexus-account-brand b {
|
||||
color: var(--nexus-account-muted);
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.nexus-account-brand__mark {
|
||||
position: relative;
|
||||
display: grid;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
place-items: center;
|
||||
color: var(--nexus-account-ice);
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
.nexus-account-brand__mark::before {
|
||||
position: absolute;
|
||||
inset: 3px;
|
||||
border: 1px solid rgba(99, 230, 255, 0.52);
|
||||
box-shadow:
|
||||
inset 0 0 14px rgba(99, 230, 255, 0.1),
|
||||
0 0 16px rgba(99, 230, 255, 0.08);
|
||||
content: "";
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.nexus-account-header__realm {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 10px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.nexus-account-header__realm span,
|
||||
.nexus-account-sidebar__label,
|
||||
.nexus-account-sidebar__status {
|
||||
color: var(--nexus-account-muted);
|
||||
font-family: var(--nexus-account-mono);
|
||||
font-size: 0.63rem;
|
||||
letter-spacing: 0.15em;
|
||||
}
|
||||
|
||||
.nexus-account-header__realm strong {
|
||||
overflow: hidden;
|
||||
color: #dce6fb;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 550;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.nexus-account-utility {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 18px;
|
||||
font-size: 0.78rem;
|
||||
}
|
||||
|
||||
.nexus-account-language {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nexus-account-language summary {
|
||||
color: var(--nexus-account-muted);
|
||||
cursor: pointer;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.nexus-account-language ul {
|
||||
position: absolute;
|
||||
top: calc(100% + 12px);
|
||||
right: 0;
|
||||
min-width: 150px;
|
||||
max-height: 320px;
|
||||
overflow: auto;
|
||||
margin: 0;
|
||||
padding: 7px;
|
||||
border: 1px solid var(--nexus-account-line);
|
||||
background: var(--nexus-account-panel-raised);
|
||||
box-shadow: 0 18px 45px rgba(0, 0, 0, 0.38);
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.nexus-account-language li a {
|
||||
display: block;
|
||||
padding: 7px 9px;
|
||||
}
|
||||
|
||||
.nexus-account-signout {
|
||||
padding: 8px 12px;
|
||||
border: 1px solid var(--nexus-account-line);
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.nexus-account-layout {
|
||||
display: grid;
|
||||
min-height: calc(100vh - 76px);
|
||||
grid-template-columns: 280px minmax(0, 1fr);
|
||||
}
|
||||
|
||||
.nexus-account-sidebar {
|
||||
position: relative;
|
||||
display: flex;
|
||||
min-height: calc(100vh - 76px);
|
||||
overflow: hidden;
|
||||
flex-direction: column;
|
||||
padding: 40px 28px 28px clamp(24px, 4vw, 58px);
|
||||
border-right: 1px solid var(--nexus-account-line);
|
||||
background: rgba(8, 13, 28, 0.78);
|
||||
}
|
||||
|
||||
.nexus-account-orbit {
|
||||
position: absolute;
|
||||
right: -130px;
|
||||
bottom: -100px;
|
||||
width: 330px;
|
||||
height: 330px;
|
||||
border: 1px solid rgba(99, 230, 255, 0.1);
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.nexus-account-orbit::before,
|
||||
.nexus-account-orbit::after {
|
||||
position: absolute;
|
||||
border: 1px dashed rgba(139, 124, 255, 0.13);
|
||||
border-radius: 50%;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.nexus-account-orbit::before {
|
||||
inset: 18%;
|
||||
}
|
||||
|
||||
.nexus-account-orbit::after {
|
||||
inset: 36%;
|
||||
}
|
||||
|
||||
.nexus-account-orbit span {
|
||||
position: absolute;
|
||||
top: 37%;
|
||||
left: -4px;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background: var(--nexus-account-ice);
|
||||
box-shadow: 0 0 15px var(--nexus-account-ice);
|
||||
}
|
||||
|
||||
.nexus-account-sidebar__label {
|
||||
margin: 0 0 22px;
|
||||
color: var(--nexus-account-ice);
|
||||
}
|
||||
|
||||
.nexus-account-sidebar nav,
|
||||
.nexus-account-sidebar nav ul {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.nexus-account-sidebar li {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.nexus-account-sidebar li a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
padding: 11px 12px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 2px;
|
||||
color: var(--nexus-account-muted);
|
||||
font-size: 0.84rem;
|
||||
transition: 150ms ease;
|
||||
}
|
||||
|
||||
.nexus-account-sidebar li a:hover {
|
||||
border-color: var(--nexus-account-line);
|
||||
color: var(--nexus-account-text);
|
||||
background: rgba(99, 230, 255, 0.04);
|
||||
}
|
||||
|
||||
.nexus-account-sidebar li.active a {
|
||||
border-color: rgba(99, 230, 255, 0.24);
|
||||
color: var(--nexus-account-text);
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
rgba(99, 230, 255, 0.11),
|
||||
rgba(139, 124, 255, 0.04)
|
||||
);
|
||||
}
|
||||
|
||||
.nexus-account-nav__signal {
|
||||
width: 5px;
|
||||
height: 5px;
|
||||
border-radius: 50%;
|
||||
background: #52617e;
|
||||
}
|
||||
|
||||
.nexus-account-sidebar li.active .nexus-account-nav__signal {
|
||||
background: var(--nexus-account-ice);
|
||||
box-shadow: 0 0 9px var(--nexus-account-ice);
|
||||
}
|
||||
|
||||
.nexus-account-sidebar__status {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
margin-top: auto;
|
||||
padding-top: 18px;
|
||||
border-top: 1px solid var(--nexus-account-line);
|
||||
}
|
||||
|
||||
.nexus-account-sidebar__status span {
|
||||
display: inline-block;
|
||||
width: 5px;
|
||||
height: 5px;
|
||||
margin-right: 8px;
|
||||
border-radius: 50%;
|
||||
background: var(--nexus-account-success);
|
||||
box-shadow: 0 0 8px var(--nexus-account-success);
|
||||
}
|
||||
|
||||
.nexus-account-content {
|
||||
min-width: 0;
|
||||
padding: clamp(28px, 5vw, 70px);
|
||||
}
|
||||
|
||||
.nexus-account-panel {
|
||||
width: min(100%, 1080px);
|
||||
min-height: 420px;
|
||||
padding: clamp(28px, 4vw, 52px);
|
||||
border: 1px solid var(--nexus-account-line);
|
||||
border-radius: 3px;
|
||||
background: linear-gradient(145deg, rgba(18, 27, 49, 0.94), rgba(10, 16, 32, 0.92));
|
||||
box-shadow:
|
||||
0 28px 80px rgba(0, 0, 0, 0.28),
|
||||
inset 0 1px rgba(255, 255, 255, 0.03);
|
||||
}
|
||||
|
||||
.nexus-account-panel > .row:first-child {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
gap: 20px;
|
||||
margin-bottom: 34px;
|
||||
}
|
||||
|
||||
.nexus-account-panel h2 {
|
||||
margin: 0;
|
||||
color: var(--nexus-account-text);
|
||||
font-family: var(--nexus-account-display);
|
||||
font-size: clamp(2rem, 3vw, 2.7rem);
|
||||
font-weight: 520;
|
||||
letter-spacing: -0.035em;
|
||||
line-height: 1.05;
|
||||
}
|
||||
|
||||
.nexus-account-panel h2::after {
|
||||
display: block;
|
||||
width: 46px;
|
||||
height: 2px;
|
||||
margin-top: 17px;
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
var(--nexus-account-ice),
|
||||
var(--nexus-account-violet)
|
||||
);
|
||||
content: "";
|
||||
}
|
||||
|
||||
.nexus-account-panel .subtitle {
|
||||
color: var(--nexus-account-muted);
|
||||
font-family: var(--nexus-account-mono);
|
||||
font-size: 0.66rem;
|
||||
letter-spacing: 0.08em;
|
||||
}
|
||||
|
||||
.nexus-account-panel .required {
|
||||
color: var(--nexus-account-danger);
|
||||
}
|
||||
|
||||
.nexus-account-form,
|
||||
.nexus-account-panel .form-horizontal {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.nexus-account-field,
|
||||
.nexus-account-panel .form-group {
|
||||
display: grid;
|
||||
align-items: center;
|
||||
grid-template-columns: minmax(120px, 180px) minmax(0, 1fr);
|
||||
gap: 18px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.nexus-account-label,
|
||||
.nexus-account-panel .control-label {
|
||||
color: #bdc8df;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.nexus-account-input,
|
||||
.nexus-account-panel .form-control {
|
||||
width: 100%;
|
||||
min-height: 46px;
|
||||
padding: 10px 14px;
|
||||
border: 1px solid rgba(151, 172, 219, 0.24);
|
||||
border-radius: 2px;
|
||||
color: var(--nexus-account-text);
|
||||
outline: 0;
|
||||
background: rgba(4, 8, 21, 0.68);
|
||||
transition: 150ms ease;
|
||||
}
|
||||
|
||||
.nexus-account-input:focus,
|
||||
.nexus-account-panel .form-control:focus {
|
||||
border-color: var(--nexus-account-ice);
|
||||
box-shadow: 0 0 0 3px rgba(99, 230, 255, 0.08);
|
||||
}
|
||||
|
||||
.nexus-account-input:disabled,
|
||||
.nexus-account-panel .form-control:disabled {
|
||||
color: #6f7b96;
|
||||
background: rgba(5, 8, 18, 0.5);
|
||||
}
|
||||
|
||||
.nexus-account-button,
|
||||
.nexus-account-panel .btn {
|
||||
display: inline-flex;
|
||||
min-height: 42px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin: 0 8px 8px 0;
|
||||
padding: 9px 18px;
|
||||
border: 1px solid var(--nexus-account-line);
|
||||
border-radius: 2px;
|
||||
color: var(--nexus-account-text);
|
||||
background: rgba(18, 27, 49, 0.9);
|
||||
cursor: pointer;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 650;
|
||||
}
|
||||
|
||||
.nexus-account-button--primary {
|
||||
border-color: transparent;
|
||||
color: #06111c;
|
||||
background: linear-gradient(105deg, var(--nexus-account-ice), #8cf0ec 52%, #a8a1ff);
|
||||
}
|
||||
|
||||
.nexus-account-panel .submit {
|
||||
grid-column: 2;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.nexus-account-panel table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
color: #dce4f5;
|
||||
font-size: 0.82rem;
|
||||
}
|
||||
|
||||
.nexus-account-panel th,
|
||||
.nexus-account-panel td {
|
||||
padding: 13px 14px;
|
||||
border: 1px solid var(--nexus-account-line);
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.nexus-account-panel th {
|
||||
color: var(--nexus-account-muted);
|
||||
background: rgba(5, 9, 21, 0.7);
|
||||
font-family: var(--nexus-account-mono);
|
||||
font-size: 0.65rem;
|
||||
letter-spacing: 0.06em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.nexus-account-panel tr:nth-child(even) td {
|
||||
background: rgba(255, 255, 255, 0.018);
|
||||
}
|
||||
|
||||
.nexus-account-alert {
|
||||
display: flex;
|
||||
width: min(100%, 1080px);
|
||||
align-items: flex-start;
|
||||
gap: 11px;
|
||||
margin-bottom: 18px;
|
||||
padding: 14px 16px;
|
||||
border: 1px solid rgba(99, 230, 255, 0.25);
|
||||
color: #dce6f8;
|
||||
background: rgba(99, 230, 255, 0.06);
|
||||
font-size: 0.82rem;
|
||||
}
|
||||
|
||||
.nexus-account-alert--error {
|
||||
border-color: rgba(255, 102, 143, 0.32);
|
||||
background: rgba(255, 102, 143, 0.07);
|
||||
}
|
||||
|
||||
.nexus-account-alert__signal {
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
flex: 0 0 auto;
|
||||
margin-top: 6px;
|
||||
border-radius: 50%;
|
||||
background: var(--nexus-account-ice);
|
||||
box-shadow: 0 0 8px currentColor;
|
||||
}
|
||||
|
||||
.nexus-account-alert--error .nexus-account-alert__signal {
|
||||
color: var(--nexus-account-danger);
|
||||
background: currentColor;
|
||||
}
|
||||
|
||||
.nexus-account-field-error,
|
||||
.nexus-account-panel .has-error {
|
||||
color: #ff93ae;
|
||||
}
|
||||
|
||||
.nexus-account-body :focus-visible {
|
||||
outline: 2px solid var(--nexus-account-ice);
|
||||
outline-offset: 3px;
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.nexus-account-header {
|
||||
grid-template-columns: 1fr auto;
|
||||
}
|
||||
|
||||
.nexus-account-header__realm {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.nexus-account-layout {
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-rows: auto 1fr;
|
||||
}
|
||||
|
||||
.nexus-account-sidebar {
|
||||
min-height: auto;
|
||||
padding: 18px 20px;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid var(--nexus-account-line);
|
||||
}
|
||||
|
||||
.nexus-account-sidebar__label,
|
||||
.nexus-account-sidebar__status,
|
||||
.nexus-account-orbit {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.nexus-account-sidebar ul {
|
||||
display: flex;
|
||||
overflow-x: auto;
|
||||
gap: 6px;
|
||||
padding-bottom: 4px !important;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
.nexus-account-sidebar ul::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.nexus-account-sidebar li {
|
||||
flex: 0 0 auto;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.nexus-account-content {
|
||||
padding: 24px 20px 40px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.nexus-account-header {
|
||||
min-height: 66px;
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
.nexus-account-brand {
|
||||
font-size: 0.78rem;
|
||||
}
|
||||
|
||||
.nexus-account-utility > a:not(.nexus-account-signout),
|
||||
.nexus-account-language {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.nexus-account-layout {
|
||||
min-height: calc(100vh - 66px);
|
||||
}
|
||||
|
||||
.nexus-account-content {
|
||||
padding: 18px 12px 32px;
|
||||
}
|
||||
|
||||
.nexus-account-panel {
|
||||
padding: 26px 20px;
|
||||
}
|
||||
|
||||
.nexus-account-panel > .row:first-child {
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
gap: 14px;
|
||||
}
|
||||
|
||||
.nexus-account-field,
|
||||
.nexus-account-panel .form-group {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nexus-account-panel .submit {
|
||||
grid-column: 1;
|
||||
}
|
||||
|
||||
.nexus-account-panel {
|
||||
overflow-x: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.nexus-account-body *,
|
||||
.nexus-account-body *::before,
|
||||
.nexus-account-body *::after {
|
||||
animation-duration: 0.01ms !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 52" role="img" aria-labelledby="title">
|
||||
<title id="title">NEXUS ID</title>
|
||||
<defs>
|
||||
<linearGradient id="signal" x1="0" x2="1" y1="0" y2="1">
|
||||
<stop offset="0" stop-color="#63e6ff"/>
|
||||
<stop offset="1" stop-color="#8b7cff"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="translate(8 9)">
|
||||
<rect x="5" y="5" width="24" height="24" rx="1" fill="none" stroke="url(#signal)" stroke-width="1.5" transform="rotate(45 17 17)"/>
|
||||
<circle cx="17" cy="17" r="3.5" fill="#63e6ff"/>
|
||||
<circle cx="17" cy="17" r="8.5" fill="none" stroke="#63e6ff" stroke-opacity=".18"/>
|
||||
</g>
|
||||
<text x="52" y="32" fill="#f4f7ff" font-family="Bahnschrift,Segoe UI,sans-serif" font-size="20" font-weight="600" letter-spacing="3">NEXUS</text>
|
||||
<text x="151" y="32" fill="#95a2be" font-family="Bahnschrift,Segoe UI,sans-serif" font-size="18" font-weight="400" letter-spacing="2">/ ID</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 948 B |
@@ -0,0 +1,232 @@
|
||||
:root,
|
||||
.pf-v5-theme-dark {
|
||||
--nexus-admin-void: #070b16;
|
||||
--nexus-admin-chrome: #0b1120;
|
||||
--nexus-admin-panel: #ffffff;
|
||||
--nexus-admin-canvas: #f3f6fb;
|
||||
--nexus-admin-ice: #2dc7e5;
|
||||
--nexus-admin-violet: #7569f2;
|
||||
--nexus-admin-text: #172033;
|
||||
--nexus-admin-muted: #63708a;
|
||||
--nexus-admin-line: #dce3ef;
|
||||
--pf-v5-global--primary-color--100: #007f9b;
|
||||
--pf-v5-global--primary-color--200: #00677e;
|
||||
--pf-v5-global--link--Color: #00758d;
|
||||
--pf-v5-global--link--Color--hover: #004f62;
|
||||
--pf-v5-global--BackgroundColor--100: var(--nexus-admin-panel);
|
||||
--pf-v5-global--BackgroundColor--150: #f7f9fc;
|
||||
--pf-v5-global--BackgroundColor--200: var(--nexus-admin-canvas);
|
||||
--pf-v5-global--Color--100: var(--nexus-admin-text);
|
||||
--pf-v5-global--Color--200: var(--nexus-admin-muted);
|
||||
--pf-v5-global--BorderColor--100: var(--nexus-admin-line);
|
||||
--pf-v5-global--BorderColor--200: #c9d3e2;
|
||||
--pf-v5-c-page__main-section--m-light--BackgroundColor: var(--nexus-admin-canvas);
|
||||
color-scheme: light;
|
||||
}
|
||||
|
||||
html,
|
||||
body,
|
||||
#root {
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
color: var(--nexus-admin-text);
|
||||
background: var(--nexus-admin-canvas);
|
||||
font-family: "Segoe UI Variable", "Segoe UI", sans-serif;
|
||||
}
|
||||
|
||||
.pf-v5-c-page,
|
||||
.pf-v5-c-page__main,
|
||||
.pf-v5-c-page__main-section {
|
||||
background-color: var(--nexus-admin-canvas);
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main {
|
||||
background-image: linear-gradient(rgba(32, 62, 104, 0.025) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(32, 62, 104, 0.025) 1px, transparent 1px);
|
||||
background-size: 44px 44px;
|
||||
}
|
||||
|
||||
.pf-v5-c-masthead {
|
||||
border-bottom: 1px solid rgba(99, 230, 255, 0.18);
|
||||
background: linear-gradient(90deg, rgba(99, 230, 255, 0.035), transparent 36%),
|
||||
var(--nexus-admin-void);
|
||||
box-shadow: 0 8px 28px rgba(5, 9, 21, 0.18);
|
||||
}
|
||||
|
||||
img.keycloak__pageheader_brand {
|
||||
width: 190px;
|
||||
height: 38px;
|
||||
object-fit: contain;
|
||||
object-position: left center;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__sidebar,
|
||||
.pf-v5-c-page__sidebar-body {
|
||||
border-right: 1px solid rgba(117, 105, 242, 0.16);
|
||||
color: #d8e2f5;
|
||||
background: radial-gradient(
|
||||
circle at 20% 88%,
|
||||
rgba(99, 230, 255, 0.07),
|
||||
transparent 14rem
|
||||
),
|
||||
var(--nexus-admin-chrome);
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__link {
|
||||
border-radius: 2px;
|
||||
color: #9daac3;
|
||||
font-size: 0.86rem;
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__link:hover,
|
||||
.pf-v5-c-nav__link:focus {
|
||||
color: #ffffff;
|
||||
background: rgba(99, 230, 255, 0.06);
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__link.pf-m-current,
|
||||
.pf-v5-c-nav__item.pf-m-current > .pf-v5-c-nav__link {
|
||||
color: #ffffff;
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
rgba(99, 230, 255, 0.15),
|
||||
rgba(117, 105, 242, 0.08)
|
||||
);
|
||||
box-shadow: inset 2px 0 var(--nexus-admin-ice);
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__link.pf-m-current::after {
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.pf-v5-c-card,
|
||||
.pf-v5-c-modal-box,
|
||||
.pf-v5-c-drawer__panel,
|
||||
.pf-v5-c-popover__content,
|
||||
.pf-v5-c-menu {
|
||||
border: 1px solid var(--nexus-admin-line);
|
||||
border-radius: 3px;
|
||||
background: var(--nexus-admin-panel);
|
||||
box-shadow: 0 15px 42px rgba(27, 43, 72, 0.08);
|
||||
}
|
||||
|
||||
.pf-v5-c-title,
|
||||
.pf-v5-c-content h1,
|
||||
.pf-v5-c-content h2,
|
||||
.pf-v5-c-page__main-title {
|
||||
color: var(--nexus-admin-text);
|
||||
font-family: "Bahnschrift SemiCondensed", "Arial Narrow", sans-serif;
|
||||
letter-spacing: -0.018em;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main-breadcrumb {
|
||||
border-bottom: 1px solid rgba(220, 227, 239, 0.74);
|
||||
background: rgba(255, 255, 255, 0.72);
|
||||
backdrop-filter: blur(12px);
|
||||
}
|
||||
|
||||
.pf-v5-c-button {
|
||||
border-radius: 2px;
|
||||
font-weight: 620;
|
||||
}
|
||||
|
||||
.pf-v5-c-button.pf-m-primary {
|
||||
color: #ffffff;
|
||||
background: linear-gradient(105deg, #007f9b, #087f91 58%, #655bd7);
|
||||
box-shadow: 0 6px 18px rgba(0, 127, 155, 0.16);
|
||||
}
|
||||
|
||||
.pf-v5-c-button.pf-m-primary:hover {
|
||||
filter: brightness(1.08);
|
||||
}
|
||||
|
||||
.pf-v5-c-form-control,
|
||||
.pf-v5-c-select__toggle,
|
||||
.pf-v5-c-menu-toggle {
|
||||
border-radius: 2px;
|
||||
border-color: #c9d3e2;
|
||||
background: #ffffff;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.pf-v5-c-form-control:focus-within,
|
||||
.pf-v5-c-menu-toggle:focus {
|
||||
border-color: #008eaa;
|
||||
box-shadow: 0 0 0 3px rgba(45, 199, 229, 0.12);
|
||||
}
|
||||
|
||||
.pf-v5-c-table {
|
||||
border: 1px solid var(--nexus-admin-line);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.pf-v5-c-table thead {
|
||||
color: #526079;
|
||||
background: #edf2f8;
|
||||
font-family: "Cascadia Code", Consolas, monospace;
|
||||
font-size: 0.72rem;
|
||||
letter-spacing: 0.025em;
|
||||
}
|
||||
|
||||
.pf-v5-c-table tr:hover > * {
|
||||
background-color: #f5fbfd;
|
||||
}
|
||||
|
||||
.pf-v5-c-tabs__link::after {
|
||||
border-color: var(--nexus-admin-ice);
|
||||
}
|
||||
|
||||
.pf-v5-c-label {
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.keycloak__form {
|
||||
max-width: 1100px;
|
||||
padding-bottom: var(--pf-v5-global--spacer--4xl);
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
vertical-align: baseline;
|
||||
accent-color: #0087a1;
|
||||
}
|
||||
|
||||
.keycloak__form_actions {
|
||||
position: fixed;
|
||||
z-index: 15;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
margin-left: calc(-1 * var(--pf-v5-global--spacer--lg));
|
||||
padding: var(--pf-v5-global--spacer--md);
|
||||
border-top: 1px solid var(--nexus-admin-line);
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
box-shadow: 0 -10px 30px rgba(27, 43, 72, 0.06);
|
||||
backdrop-filter: blur(14px);
|
||||
}
|
||||
|
||||
.keycloak__section_intro__help {
|
||||
width: fit-content;
|
||||
padding: var(--pf-v5-global--spacer--md) 0 var(--pf-v5-global--spacer--lg);
|
||||
color: var(--pf-v5-global--primary-color--100);
|
||||
}
|
||||
|
||||
div.w-tc-editor {
|
||||
font-family: "Cascadia Code", "SFMono-Regular", Consolas, monospace;
|
||||
}
|
||||
|
||||
:focus-visible {
|
||||
outline: 2px solid var(--nexus-admin-ice) !important;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
animation-duration: 0.01ms !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
<#macro emailLayout>
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<style>
|
||||
body { margin: 0; padding: 0; background: #050713; color: #f4f7ff; font-family: "Segoe UI", Arial, sans-serif; }
|
||||
table { border-collapse: collapse; }
|
||||
a { color: #047f9a; font-weight: 600; }
|
||||
.nexus-email-shell { width: 100%; background: #050713; }
|
||||
.nexus-email-wrap { width: 100%; max-width: 620px; margin: 0 auto; padding: 44px 18px; }
|
||||
.nexus-email-brand { padding: 0 0 18px; color: #f4f7ff; font-family: Arial, sans-serif; font-size: 14px; font-weight: 700; letter-spacing: 3px; }
|
||||
.nexus-email-signal { display: inline-block; width: 8px; height: 8px; margin: 0 12px 1px 2px; background: #63e6ff; transform: rotate(45deg); }
|
||||
.nexus-email-brand-muted { color: #8e9ab7; font-weight: 400; }
|
||||
.nexus-email-card { border: 1px solid #25314d; background: #0f172a; }
|
||||
.nexus-email-accent { height: 3px; background: #63e6ff; background: linear-gradient(90deg, #63e6ff, #8cf0ec 50%, #8b7cff); }
|
||||
.nexus-email-content { padding: 38px 42px 42px; color: #dce4f5; font-size: 15px; line-height: 1.7; }
|
||||
.nexus-email-content h1, .nexus-email-content h2 { margin-top: 0; color: #ffffff; font-family: Arial, sans-serif; line-height: 1.15; }
|
||||
.nexus-email-content p { margin: 0 0 18px; }
|
||||
.nexus-email-content a { display: inline-block; margin: 8px 0; padding: 12px 20px; border-radius: 2px; color: #06111c !important; background: #63e6ff; background: linear-gradient(105deg, #63e6ff, #8cf0ec 55%, #a8a1ff); text-decoration: none; }
|
||||
.nexus-email-meta { padding: 18px 2px 0; color: #7f8ca8; font-family: Consolas, monospace; font-size: 10px; letter-spacing: 1.4px; line-height: 1.7; }
|
||||
.nexus-email-online { color: #54e6a4; }
|
||||
@media only screen and (max-width: 540px) {
|
||||
.nexus-email-wrap { padding: 22px 10px !important; }
|
||||
.nexus-email-content { padding: 28px 22px 32px !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<table role="presentation" class="nexus-email-shell" width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table role="presentation" class="nexus-email-wrap" width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="nexus-email-brand">
|
||||
<span class="nexus-email-signal"></span>NEXUS <span class="nexus-email-brand-muted">/ ID</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="nexus-email-card">
|
||||
<div class="nexus-email-accent"></div>
|
||||
<div class="nexus-email-content">
|
||||
<#nested>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="nexus-email-meta">
|
||||
IDENTITY ACCESS LAYER / <span class="nexus-email-online">SECURE MESSAGE</span><br>
|
||||
This message was generated automatically. Please do not reply.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</#macro>
|
||||
+11
-2
@@ -1,5 +1,5 @@
|
||||
// This file is auto-generated by the `update-kc-gen` command. Do not edit it manually.
|
||||
// Hash: b0aa286dba4ed04c111c1265bdb6a76ba45c22a3d9b9e8dcf36302267d40c51a
|
||||
// Hash: 822f146dfd89023346d41d4f77fba9745b7f55365c95ca37f85806c01ab23dc4
|
||||
|
||||
/* eslint-disable */
|
||||
|
||||
@@ -24,7 +24,10 @@ export const kcEnvDefaults: Record<KcEnvName, string> = {};
|
||||
* If you need to import the KcContext import it either from src/login/KcContext.ts or src/account/KcContext.ts.
|
||||
* Depending on the theme type you are working on.
|
||||
*/
|
||||
export type KcContext = import("./login/KcContext").KcContext;
|
||||
export type KcContext =
|
||||
| import("./login/KcContext").KcContext
|
||||
| import("./account/KcContext").KcContext
|
||||
| import("./admin/KcContext").KcContext;
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
@@ -33,6 +36,8 @@ declare global {
|
||||
}
|
||||
|
||||
export const KcLoginPage = lazy(() => import("./login/KcPage"));
|
||||
export const KcAccountPage = lazy(() => import("./account/KcPage"));
|
||||
export const KcAdminPage = lazy(() => import("./admin/KcPage"));
|
||||
|
||||
export function KcPage(props: { kcContext: KcContext; fallback?: ReactNode }) {
|
||||
const { kcContext, fallback } = props;
|
||||
@@ -42,6 +47,10 @@ export function KcPage(props: { kcContext: KcContext; fallback?: ReactNode }) {
|
||||
switch (kcContext.themeType) {
|
||||
case "login":
|
||||
return <KcLoginPage kcContext={kcContext} />;
|
||||
case "account":
|
||||
return <KcAccountPage kcContext={kcContext} />;
|
||||
case "admin":
|
||||
return <KcAdminPage kcContext={kcContext} />;
|
||||
}
|
||||
})()}
|
||||
</Suspense>
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ export default defineConfig({
|
||||
plugins: [
|
||||
react(),
|
||||
keycloakify({
|
||||
accountThemeImplementation: "none"
|
||||
accountThemeImplementation: "Multi-Page"
|
||||
})
|
||||
]
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user